diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 46e7420f..eb78060d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -96,4 +96,4 @@ jobs: run: | set -euxo pipefail ./setup.sh - ./encode_ceno.sh + ./test_poseidon.sh 1000 diff --git a/.gitignore b/.gitignore index 3afab6ac..47f361b3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ .DS_Store *.rtk *.ctk +zok_tests/benchmarks/poseidon_test/poseidon_const.zok # Generated by Cargo # will have compiled files and executables diff --git a/circ_blocks/Cargo.toml b/circ_blocks/Cargo.toml index 7a97c52a..05aaf05a 100644 --- a/circ_blocks/Cargo.toml +++ b/circ_blocks/Cargo.toml @@ -51,10 +51,7 @@ from-pest = { version = "0.3", optional = true } itertools = "0.10" petgraph = { version = "0.6", optional = true } spartan = { version = "0.8", default-features = false, optional = true } -spartan_parallel = { path = "../spartan_parallel", default-features = false, features = [ - "multicore", - "profile", -] } +spartan_parallel = { path = "../spartan_parallel", default-features = false, features = ["profile"] } merlin = { version = "3.0.0" } curve25519-dalek = { version = "4", features = ["serde"], optional = true } # TODO: kill diff --git a/circ_blocks/aaa b/circ_blocks/aaa new file mode 100644 index 00000000..3a0bf0d7 --- /dev/null +++ b/circ_blocks/aaa @@ -0,0 +1,5126 @@ +Options { path: "poseidon_test/poseidon_struct", skip_linred: false, circ: CircOpt { r1cs: R1csOpt { verified: false, profile: false, div_by_zero: Incomplete, lc_elim_thresh: 50 }, field: FieldOpt { builtin: Goldilocks, custom_modulus: "" }, ir: IrOpt { field_to_bv: Wrap, frequent_gc: false }, ram: RamOpt { enabled: false, range: Sort, index: Uniqueness, permutation: Msh, rom: Haboeck }, fmt: FmtOpt { use_default_field: true, hide_field: false }, zsharp: ZsharpOpt { isolate_asserts: true }, datalog: DatalogOpt { rec_limit: 5, lint_prim_rec: false }, c: COpt { sv_functions: false, assert_no_ub: false } }, action: Count, quiet: false, no_opt: false } +Generating Compiler Time Data... +Entry block: 0 + +Block 0: +Func: main, Scope: 0 +Exec Bound: 1, While Loop: false +RO Ops: 0, VM Ops: 0 +Num Cons: - +Inputs: +Outputs: +Instructions: + field %BP = 0 + field %TS = 0 +Transition: -> 1 + +Block 1: +Func: main, Scope: 0 +Exec Bound: 1, While Loop: false +RO Ops: 0, VM Ops: 0 +Num Cons: - +Inputs: +Outputs: +Instructions: +Transition: -> 2 + +Block 2: +Func: main, Scope: 0 +Exec Bound: 1, While Loop: false +RO Ops: 0, VM Ops: 0 +Num Cons: - +Inputs: +Outputs: +Instructions: + field struct^0^state0.main.0.0 = 1 + field struct^0^state1.main.0.0 = 2 + field struct^0^state2.main.0.0 = 3 + field struct^0^state3.main.0.0 = 4 + field struct^0^state4.main.0.0 = 5 + field struct^0^state5.main.0.0 = 6 + field struct^0^state6.main.0.0 = 7 + field struct^0^state7.main.0.0 = 8 + field struct^0^state8.main.0.0 = 0 + field struct^0^state9.main.0.0 = 0 + field struct^0^state10.main.0.0 = 0 + field struct^0^state11.main.0.0 = 0 + field inputs^state0.main.0.0 = struct^0^state0.main.0.0 + field inputs^state1.main.0.0 = struct^0^state1.main.0.0 + field inputs^state10.main.0.0 = struct^0^state10.main.0.0 + field inputs^state11.main.0.0 = struct^0^state11.main.0.0 + field inputs^state2.main.0.0 = struct^0^state2.main.0.0 + field inputs^state3.main.0.0 = struct^0^state3.main.0.0 + field inputs^state4.main.0.0 = struct^0^state4.main.0.0 + field inputs^state5.main.0.0 = struct^0^state5.main.0.0 + field inputs^state6.main.0.0 = struct^0^state6.main.0.0 + field inputs^state7.main.0.0 = struct^0^state7.main.0.0 + field inputs^state8.main.0.0 = struct^0^state8.main.0.0 + field inputs^state9.main.0.0 = struct^0^state9.main.0.0 + field cumulated_hash.main.0.0 = 0 +Transition: -> 3 + +Block 3: +Func: main, Scope: 1 +Exec Bound: 1, While Loop: false +RO Ops: 0, VM Ops: 0 +Num Cons: - +Inputs: +Outputs: +Instructions: + u32 i.main.0.0 = 0 +Transition: + i.main.0.0 != 1000000 ? -> 4 : -> 8 + +Block 4: +Func: main, Scope: 2 +Exec Bound: 1000000, While Loop: false +RO Ops: 0, VM Ops: 0 +Num Cons: - +Inputs: +Outputs: +Instructions: +Transition: -> 5 + +Block 5: +Func: main, Scope: 3 +Exec Bound: 1000000, While Loop: false +RO Ops: 0, VM Ops: 0 +Num Cons: - +Inputs: +Outputs: +Instructions: + field input^state0.poseidon.0.0 = inputs^state0.main.0.0 + field input^state1.poseidon.0.0 = inputs^state1.main.0.0 + field input^state10.poseidon.0.0 = inputs^state10.main.0.0 + field input^state11.poseidon.0.0 = inputs^state11.main.0.0 + field input^state2.poseidon.0.0 = inputs^state2.main.0.0 + field input^state3.poseidon.0.0 = inputs^state3.main.0.0 + field input^state4.poseidon.0.0 = inputs^state4.main.0.0 + field input^state5.poseidon.0.0 = inputs^state5.main.0.0 + field input^state6.poseidon.0.0 = inputs^state6.main.0.0 + field input^state7.poseidon.0.0 = inputs^state7.main.0.0 + field input^state8.poseidon.0.0 = inputs^state8.main.0.0 + field input^state9.poseidon.0.0 = inputs^state9.main.0.0 + field rp@.poseidon = 6 +Transition: -> 11 + +Block 6: +Func: main, Scope: 3 +Exec Bound: 1000000, While Loop: false +RO Ops: 0, VM Ops: 0 +Num Cons: - +Inputs: +Outputs: +Instructions: + field ret^0^state0.main.0.0 = %RET^state0.poseidon + field ret^0^state1.main.0.0 = %RET^state1.poseidon + field ret^0^state10.main.0.0 = %RET^state10.poseidon + field ret^0^state11.main.0.0 = %RET^state11.poseidon + field ret^0^state2.main.0.0 = %RET^state2.poseidon + field ret^0^state3.main.0.0 = %RET^state3.poseidon + field ret^0^state4.main.0.0 = %RET^state4.poseidon + field ret^0^state5.main.0.0 = %RET^state5.poseidon + field ret^0^state6.main.0.0 = %RET^state6.poseidon + field ret^0^state7.main.0.0 = %RET^state7.poseidon + field ret^0^state8.main.0.0 = %RET^state8.poseidon + field ret^0^state9.main.0.0 = %RET^state9.poseidon + field hashes^state0.main.0.0 = ret^0^state0.main.0.0 + field hashes^state1.main.0.0 = ret^0^state1.main.0.0 + field hashes^state10.main.0.0 = ret^0^state10.main.0.0 + field hashes^state11.main.0.0 = ret^0^state11.main.0.0 + field hashes^state2.main.0.0 = ret^0^state2.main.0.0 + field hashes^state3.main.0.0 = ret^0^state3.main.0.0 + field hashes^state4.main.0.0 = ret^0^state4.main.0.0 + field hashes^state5.main.0.0 = ret^0^state5.main.0.0 + field hashes^state6.main.0.0 = ret^0^state6.main.0.0 + field hashes^state7.main.0.0 = ret^0^state7.main.0.0 + field hashes^state8.main.0.0 = ret^0^state8.main.0.0 + field hashes^state9.main.0.0 = ret^0^state9.main.0.0 + field cumulated_hash.main.0.0 = cumulated_hash.main.0.0 + hashes^state0.main.0.0 + hashes^state1.main.0.0 + hashes^state2.main.0.0 + hashes^state3.main.0.0 + hashes^state4.main.0.0 + hashes^state5.main.0.0 + hashes^state6.main.0.0 + hashes^state7.main.0.0 + hashes^state8.main.0.0 + hashes^state9.main.0.0 + hashes^state10.main.0.0 + hashes^state11.main.0.0 +Transition: -> 7 + +Block 7: +Func: main, Scope: 2 +Exec Bound: 1000000, While Loop: false +RO Ops: 0, VM Ops: 0 +Num Cons: - +Inputs: +Outputs: +Instructions: + i.main.0.0 = i.main.0.0 + 1 +Transition: + i.main.0.0 != 1000000 ? -> 4 : -> 8 + +Block 8: +Func: main, Scope: 1 +Exec Bound: 1000000, While Loop: false +RO Ops: 0, VM Ops: 0 +Num Cons: - +Inputs: +Outputs: +Instructions: +Transition: -> 9 + +Block 9: +Func: main, Scope: 0 +Exec Bound: 1, While Loop: false +RO Ops: 0, VM Ops: 0 +Num Cons: - +Inputs: +Outputs: +Instructions: + field %RET.main = cumulated_hash.main.0.0 +Program terminates. + +Block 10: +Func: main, Scope: 0 +Exec Bound: 1, While Loop: false +RO Ops: 0, VM Ops: 0 +Num Cons: - +Inputs: +Outputs: +Instructions: +Program terminates. + +Block 11: +Func: poseidon, Scope: 0 +Exec Bound: 1, While Loop: false +RO Ops: 0, VM Ops: 0 +Num Cons: - +Inputs: +Outputs: +Instructions: + field state0.poseidon.0.0 = input^state0.poseidon.0.0 + field state1.poseidon.0.0 = input^state1.poseidon.0.0 + field state2.poseidon.0.0 = input^state2.poseidon.0.0 + field state3.poseidon.0.0 = input^state3.poseidon.0.0 + field state4.poseidon.0.0 = input^state4.poseidon.0.0 + field state5.poseidon.0.0 = input^state5.poseidon.0.0 + field state6.poseidon.0.0 = input^state6.poseidon.0.0 + field state7.poseidon.0.0 = input^state7.poseidon.0.0 + field state8.poseidon.0.0 = input^state8.poseidon.0.0 + field state9.poseidon.0.0 = input^state9.poseidon.0.0 + field state10.poseidon.0.0 = input^state10.poseidon.0.0 + field state11.poseidon.0.0 = input^state11.poseidon.0.0 + field c0.poseidon.0.0 = 13080132714287612933 + field c1.poseidon.0.0 = 8594738767457295063 + field c2.poseidon.0.0 = 12896916465481390516 + field c3.poseidon.0.0 = 1109962092811921367 + field c4.poseidon.0.0 = 16216730422861946898 + field c5.poseidon.0.0 = 10137062673499593713 + field c6.poseidon.0.0 = 15292064466732465823 + field c7.poseidon.0.0 = 17255573294985989181 + field c8.poseidon.0.0 = 14827154241873003558 + field c9.poseidon.0.0 = 2846171647972703231 + field c1.poseidon.0.0 = 16246264663680317601 + field c11.poseidon.0.0 = 14214208087951879286 + field c12.poseidon.0.0 = 9667108687426275457 + field c13.poseidon.0.0 = 6470857420712283733 + field c14.poseidon.0.0 = 14103331940138337652 + field c15.poseidon.0.0 = 11854816473550292865 + field c16.poseidon.0.0 = 3498097497301325516 + field c17.poseidon.0.0 = 7947235692523864220 + field c18.poseidon.0.0 = 11110078701231901946 + field c19.poseidon.0.0 = 16384314112672821048 + field c2.poseidon.0.0 = 15404405912655775739 + field c21.poseidon.0.0 = 14077880830714445579 + field c22.poseidon.0.0 = 9555554662709218279 + field c23.poseidon.0.0 = 13859595358210603949 + field c24.poseidon.0.0 = 16859897325061800066 + field c25.poseidon.0.0 = 17685474420222222349 + field c26.poseidon.0.0 = 17858764734618734949 + field c27.poseidon.0.0 = 9410011022665866671 + field c28.poseidon.0.0 = 12495243629579414666 + field c29.poseidon.0.0 = 12416945298171515742 + field c3.poseidon.0.0 = 5776666812364270983 + field c31.poseidon.0.0 = 6314421662864060481 + field c32.poseidon.0.0 = 7402742471423223171 + field c33.poseidon.0.0 = 982536713192432718 + field c34.poseidon.0.0 = 17321168865775127905 + field c35.poseidon.0.0 = 2934354895005980211 + field c36.poseidon.0.0 = 10567510598607410195 + field c37.poseidon.0.0 = 8135543733717919110 + field c38.poseidon.0.0 = 116353493081713692 + field c39.poseidon.0.0 = 8029688163494945618 + field c4.poseidon.0.0 = 9003846637224807585 + field c41.poseidon.0.0 = 7052445132467233849 + field c42.poseidon.0.0 = 9645665432288852853 + field c43.poseidon.0.0 = 5446430061030868787 + field c44.poseidon.0.0 = 16770910634346036823 + field c45.poseidon.0.0 = 17708360571433944729 + field c46.poseidon.0.0 = 4661556288322237631 + field c47.poseidon.0.0 = 11977051899316327985 + field c48.poseidon.0.0 = 4378616569090929672 + field c49.poseidon.0.0 = 3334807502817538491 + field c5.poseidon.0.0 = 8019184735943344966 + field c51.poseidon.0.0 = 2395043908812246395 + field c52.poseidon.0.0 = 6558421058331732611 + field c53.poseidon.0.0 = 11735894060727326369 + field c54.poseidon.0.0 = 8143540538889204488 + field c55.poseidon.0.0 = 5991753489563751169 + field c56.poseidon.0.0 = 12235918791502088007 + field c57.poseidon.0.0 = 2880312033702687139 + field c58.poseidon.0.0 = 18224748115308382355 + field c59.poseidon.0.0 = 18070411013125314165 + field c6.poseidon.0.0 = 8156487614120951180 + field c61.poseidon.0.0 = 10615269510047010719 + field c62.poseidon.0.0 = 12489426404754222075 + field c63.poseidon.0.0 = 5055279340069995710 + field c64.poseidon.0.0 = 7231927319780248664 + field c65.poseidon.0.0 = 2602078848106763799 + field c66.poseidon.0.0 = 12445944369334781425 + field c67.poseidon.0.0 = 3978905923892496205 + field c68.poseidon.0.0 = 16711272944329818038 + field c69.poseidon.0.0 = 10439032361227108922 + field c7.poseidon.0.0 = 15110119871725214866 + field c71.poseidon.0.0 = 821141790655890946 + field c72.poseidon.0.0 = 11073536380651186235 + field c73.poseidon.0.0 = 4866839313097607757 + field c74.poseidon.0.0 = 13118391689513956636 + field c75.poseidon.0.0 = 14527674973762312380 + field c76.poseidon.0.0 = 7612751959265567999 + field c77.poseidon.0.0 = 6808090907814178161 + field c78.poseidon.0.0 = 6899703779492644997 + field c79.poseidon.0.0 = 3664666286336986826 + field c8.poseidon.0.0 = 783179505424462608 + field c81.poseidon.0.0 = 8990689241814097697 + field c82.poseidon.0.0 = 9646603555412825679 + field c83.poseidon.0.0 = 7351246026167205041 + field c84.poseidon.0.0 = 16970959813722173256 + field c85.poseidon.0.0 = 15735726858241466429 + field c86.poseidon.0.0 = 10347018221892268419 + field c87.poseidon.0.0 = 12195545878449322889 + field c88.poseidon.0.0 = 7423314197114049891 + field c89.poseidon.0.0 = 14908016116973904153 + field c9.poseidon.0.0 = 5840340122527363265 + field c91.poseidon.0.0 = 17740311462440614128 + field c92.poseidon.0.0 = 815306421953744623 + field c93.poseidon.0.0 = 17456357368219253949 + field c94.poseidon.0.0 = 6982651076559329072 + field c95.poseidon.0.0 = 11970987324614963868 + field c96.poseidon.0.0 = 8167785008538063246 + field c97.poseidon.0.0 = 9483259819397403968 + field c98.poseidon.0.0 = 954550221664291548 + field c99.poseidon.0.0 = 10339565171024313256 + field c1.poseidon.0.0 = 8651171084286500102 + field c11.poseidon.0.0 = 16974445528003515956 + field c12.poseidon.0.0 = 15104530047940621190 + field c13.poseidon.0.0 = 103271880867179718 + field c14.poseidon.0.0 = 14654666245504492663 + field c15.poseidon.0.0 = 12445769555936887967 + field c16.poseidon.0.0 = 11250582358051997490 + field c17.poseidon.0.0 = 6730977207490590241 + field c18.poseidon.0.0 = 15919951556166196935 + field c19.poseidon.0.0 = 4423540216573360915 + field c110.poseidon.0.0 = 16317664700341473511 + field c111.poseidon.0.0 = 4723997214951767765 + field c112.poseidon.0.0 = 10098756619006575500 + field c113.poseidon.0.0 = 3223149401237667964 + field c114.poseidon.0.0 = 6870494874300767682 + field c115.poseidon.0.0 = 2902095711130291898 + field c116.poseidon.0.0 = 7159372652788439733 + field c117.poseidon.0.0 = 11500508372997952671 + field c118.poseidon.0.0 = 13348148181479462670 + field c119.poseidon.0.0 = 12729401155983882093 + field c120.poseidon.0.0 = 15021242795466053388 + field c121.poseidon.0.0 = 3802990509227527157 + field c122.poseidon.0.0 = 4665459515680145682 + field c123.poseidon.0.0 = 13165553315407675603 + field c124.poseidon.0.0 = 6496364397926233172 + field c125.poseidon.0.0 = 12800832566287577810 + field c126.poseidon.0.0 = 9737592377590267426 + field c127.poseidon.0.0 = 8687131091302514939 + field c128.poseidon.0.0 = 1488200421755445892 + field c129.poseidon.0.0 = 11004377668730991641 + field c130.poseidon.0.0 = 13516338734600228410 + field c131.poseidon.0.0 = 2953581820660217936 + field c132.poseidon.0.0 = 3505040783153922951 + field c133.poseidon.0.0 = 3710332827435113697 + field c134.poseidon.0.0 = 15414874040873320221 + field c135.poseidon.0.0 = 8602547649919482301 + field c136.poseidon.0.0 = 13971349938398812007 + field c137.poseidon.0.0 = 187239246702636066 + field c138.poseidon.0.0 = 12886019973971254144 + field c139.poseidon.0.0 = 4512274763990493707 + field c140.poseidon.0.0 = 2986635507805503192 + field c141.poseidon.0.0 = 2315252455709119454 + field c142.poseidon.0.0 = 12537995864054210246 + field c143.poseidon.0.0 = 2039491936479859267 + field c144.poseidon.0.0 = 1558644089185031256 + field c145.poseidon.0.0 = 4074089203264759305 + field c146.poseidon.0.0 = 2522268501749395707 + field c147.poseidon.0.0 = 3414760436185256196 + field c148.poseidon.0.0 = 17420887529146466921 + field c149.poseidon.0.0 = 2817020417938125001 + field c150.poseidon.0.0 = 16538346563888261485 + field c151.poseidon.0.0 = 5592270336833998770 + field c152.poseidon.0.0 = 16876602064684906232 + field c153.poseidon.0.0 = 1793025614521516343 + field c154.poseidon.0.0 = 2178510518148748532 + field c155.poseidon.0.0 = 2726440714374752509 + field c156.poseidon.0.0 = 6502946837278398021 + field c157.poseidon.0.0 = 15816362857667988792 + field c158.poseidon.0.0 = 12997958454165692924 + field c159.poseidon.0.0 = 5314892854495903792 + field c160.poseidon.0.0 = 15533907063555687782 + field c161.poseidon.0.0 = 12312015675698548715 + field c162.poseidon.0.0 = 14140016464013350248 + field c163.poseidon.0.0 = 16325589062962838690 + field c164.poseidon.0.0 = 6796145646370327654 + field c165.poseidon.0.0 = 1168753512742361735 + field c166.poseidon.0.0 = 4100789820704709368 + field c167.poseidon.0.0 = 15947554381540469177 + field c168.poseidon.0.0 = 8597377839806076919 + field c169.poseidon.0.0 = 9704018824195918000 + field c170.poseidon.0.0 = 12763288618765762688 + field c171.poseidon.0.0 = 17249257732622847695 + field c172.poseidon.0.0 = 1998710993415069759 + field c173.poseidon.0.0 = 923759906393011543 + field c174.poseidon.0.0 = 1271051229666811593 + field c175.poseidon.0.0 = 17822362132088738077 + field c176.poseidon.0.0 = 11797234543722669271 + field c177.poseidon.0.0 = 5864538787265942447 + field c178.poseidon.0.0 = 15975583211110506970 + field c179.poseidon.0.0 = 7258516085733671960 + field c180.poseidon.0.0 = 17999926471875633100 + field c181.poseidon.0.0 = 635992114476018166 + field c182.poseidon.0.0 = 17205047318256576347 + field c183.poseidon.0.0 = 17384900867876315312 + field c184.poseidon.0.0 = 16484825562915784226 + field c185.poseidon.0.0 = 16694130609036138894 + field c186.poseidon.0.0 = 10575069350371260875 + field c187.poseidon.0.0 = 8330575162062887277 + field c188.poseidon.0.0 = 6212375704691932880 + field c189.poseidon.0.0 = 15965138197626618226 + field c190.poseidon.0.0 = 14285453069600046939 + field c191.poseidon.0.0 = 10005163510208402517 + field c192.poseidon.0.0 = 885298637936952595 + field c193.poseidon.0.0 = 541790758138118921 + field c194.poseidon.0.0 = 5985203084790372993 + field c195.poseidon.0.0 = 4685030219775483721 + field c196.poseidon.0.0 = 1411106851304815020 + field c197.poseidon.0.0 = 11290732479954096478 + field c198.poseidon.0.0 = 208280581124868513 + field c199.poseidon.0.0 = 10979018648467968495 + field c2.poseidon.0.0 = 8600643745023338215 + field c21.poseidon.0.0 = 3477453626867126061 + field c22.poseidon.0.0 = 6428436309340258604 + field c23.poseidon.0.0 = 5695415667275657934 + field c24.poseidon.0.0 = 15952065508715623490 + field c25.poseidon.0.0 = 15571300830419767248 + field c26.poseidon.0.0 = 17259785660502616862 + field c27.poseidon.0.0 = 4298425495274316083 + field c28.poseidon.0.0 = 9023601070579319352 + field c29.poseidon.0.0 = 7353589709321807492 + field c210.poseidon.0.0 = 2988848909076209475 + field c211.poseidon.0.0 = 10439527789422046135 + field c212.poseidon.0.0 = 6097734044161429459 + field c213.poseidon.0.0 = 1113429873817861476 + field c214.poseidon.0.0 = 1639063372386966591 + field c215.poseidon.0.0 = 7863102812716788759 + field c216.poseidon.0.0 = 216040220732135364 + field c217.poseidon.0.0 = 14252611488623712688 + field c218.poseidon.0.0 = 9543395466794536974 + field c219.poseidon.0.0 = 2714461051639810934 + field c220.poseidon.0.0 = 2588317208781407279 + field c221.poseidon.0.0 = 15458529123534594916 + field c222.poseidon.0.0 = 15748417817551040856 + field c223.poseidon.0.0 = 16414455697114422951 + field c224.poseidon.0.0 = 13378164466674639511 + field c225.poseidon.0.0 = 13894319928411294675 + field c226.poseidon.0.0 = 5032680892090751540 + field c227.poseidon.0.0 = 17201338494743078916 + field c228.poseidon.0.0 = 4397422800601932505 + field c229.poseidon.0.0 = 11285062031581972327 + field c230.poseidon.0.0 = 7309354640676468207 + field c231.poseidon.0.0 = 10457152817239331848 + field c232.poseidon.0.0 = 8855911538863247046 + field c233.poseidon.0.0 = 4301853449821814398 + field c234.poseidon.0.0 = 13001502396339103326 + field c235.poseidon.0.0 = 10218424535115580246 + field c236.poseidon.0.0 = 8628244713920681895 + field c237.poseidon.0.0 = 17410423622514037261 + field c238.poseidon.0.0 = 14080683768439215375 + field c239.poseidon.0.0 = 11453161143447188100 + field c240.poseidon.0.0 = 16761509772042181939 + field c241.poseidon.0.0 = 6688821660695954082 + field c242.poseidon.0.0 = 12083434295263160416 + field c243.poseidon.0.0 = 8540021431714616589 + field c244.poseidon.0.0 = 6891616215679974226 + field c245.poseidon.0.0 = 10229217098454812721 + field c246.poseidon.0.0 = 3292165387203778711 + field c247.poseidon.0.0 = 6090113424998243490 + field c248.poseidon.0.0 = 13431780521962358660 + field c249.poseidon.0.0 = 6061081364215809883 + field c250.poseidon.0.0 = 16792066504222214142 + field c251.poseidon.0.0 = 16134314044798124799 + field c252.poseidon.0.0 = 17070233710126619765 + field c253.poseidon.0.0 = 6915716851370550800 + field c254.poseidon.0.0 = 9505009849073026581 + field c255.poseidon.0.0 = 6422700465081897153 + field c256.poseidon.0.0 = 17977653991560529185 + field c257.poseidon.0.0 = 5800870252836247255 + field c258.poseidon.0.0 = 12096124733159345520 + field c259.poseidon.0.0 = 7679273623392321940 + field c260.poseidon.0.0 = 17835783910585744964 + field c261.poseidon.0.0 = 2478664878205754377 + field c262.poseidon.0.0 = 1720314468413114967 + field c263.poseidon.0.0 = 10376757819003248056 + field c264.poseidon.0.0 = 10376377187857634245 + field c265.poseidon.0.0 = 13344930747504284997 + field c266.poseidon.0.0 = 11579281865160153596 + field c267.poseidon.0.0 = 10300256980048736962 + field c268.poseidon.0.0 = 378765236515040565 + field c269.poseidon.0.0 = 11412420941557253424 + field c270.poseidon.0.0 = 12931662470734252786 + field c271.poseidon.0.0 = 43018908376346374 + field c272.poseidon.0.0 = 3589810689190160071 + field c273.poseidon.0.0 = 4688229274750659741 + field c274.poseidon.0.0 = 13688957436484306091 + field c275.poseidon.0.0 = 11424740943016984272 + field c276.poseidon.0.0 = 16001900718237913960 + field c277.poseidon.0.0 = 5548469743008097574 + field c278.poseidon.0.0 = 14584404916672178680 + field c279.poseidon.0.0 = 3396622135873576824 + field c280.poseidon.0.0 = 7861729246871155992 + field c281.poseidon.0.0 = 16112271126908045545 + field c282.poseidon.0.0 = 16988163966860016012 + field c283.poseidon.0.0 = 273641680619529493 + field c284.poseidon.0.0 = 15222677154027327363 + field c285.poseidon.0.0 = 4070328078309830604 + field c286.poseidon.0.0 = 13520458500363296391 + field c287.poseidon.0.0 = 8235111705801363015 + field c288.poseidon.0.0 = 5575990058472514138 + field c289.poseidon.0.0 = 2751301609188252989 + field c290.poseidon.0.0 = 6478598528223547074 + field c291.poseidon.0.0 = 386565553848556638 + field c292.poseidon.0.0 = 9417729078939938713 + field c293.poseidon.0.0 = 15204315939835727483 + field c294.poseidon.0.0 = 14942015033780606261 + field c295.poseidon.0.0 = 18369423901636582012 + field c296.poseidon.0.0 = 4715338437538604447 + field c297.poseidon.0.0 = 6840590980607806319 + field c298.poseidon.0.0 = 5535471161490539014 + field c299.poseidon.0.0 = 5341328005359029952 + field c3.poseidon.0.0 = 1475161295215894444 + field c31.poseidon.0.0 = 7999197814297036636 + field c32.poseidon.0.0 = 2984233088665867938 + field c33.poseidon.0.0 = 3097746028144832229 + field c34.poseidon.0.0 = 8849530863480031517 + field c35.poseidon.0.0 = 7464920943249009773 + field c36.poseidon.0.0 = 3802996844641460514 + field c37.poseidon.0.0 = 6284458522545927646 + field c38.poseidon.0.0 = 2307388003445002779 + field c39.poseidon.0.0 = 4461479354745457623 + field c310.poseidon.0.0 = 1649739722664588460 + field c311.poseidon.0.0 = 3008391274160432867 + field c312.poseidon.0.0 = 5142217010456550622 + field c313.poseidon.0.0 = 1775580461722730120 + field c314.poseidon.0.0 = 161694268822794344 + field c315.poseidon.0.0 = 1518963253808031703 + field c316.poseidon.0.0 = 16475258091652710137 + field c317.poseidon.0.0 = 119575899007375159 + field c318.poseidon.0.0 = 1275863735937973999 + field c319.poseidon.0.0 = 16539412514520642374 + field c320.poseidon.0.0 = 2303365191438051950 + field c321.poseidon.0.0 = 6435126839960916075 + field c322.poseidon.0.0 = 17794599201026020053 + field c323.poseidon.0.0 = 13847097589277840330 + field c324.poseidon.0.0 = 16645869274577729720 + field c325.poseidon.0.0 = 8039205965509554440 + field c326.poseidon.0.0 = 4788586935019371140 + field c327.poseidon.0.0 = 15129007200040077746 + field c328.poseidon.0.0 = 2055561615223771341 + field c329.poseidon.0.0 = 4149731103701412892 + field c330.poseidon.0.0 = 10268130195734144189 + field c331.poseidon.0.0 = 13406631635880074708 + field c332.poseidon.0.0 = 11429218277824986203 + field c333.poseidon.0.0 = 15773968030812198565 + field c334.poseidon.0.0 = 16050275277550506872 + field c335.poseidon.0.0 = 11858586752031736643 + field c336.poseidon.0.0 = 8927746344866569756 + field c337.poseidon.0.0 = 11802068403177695792 + field c338.poseidon.0.0 = 157833420806751556 + field c339.poseidon.0.0 = 4698875910749767878 + field c340.poseidon.0.0 = 1616722774788291698 + field c341.poseidon.0.0 = 3990951895163748090 + field c342.poseidon.0.0 = 16758609224720795472 + field c343.poseidon.0.0 = 3045571693290741477 + field c344.poseidon.0.0 = 9281634245289836419 + field c345.poseidon.0.0 = 13517688176723875370 + field c346.poseidon.0.0 = 7961395585333219380 + field c347.poseidon.0.0 = 1606574359105691080 + field c348.poseidon.0.0 = 17564372683613562171 + field c349.poseidon.0.0 = 4664015225343144418 + field c350.poseidon.0.0 = 6133721340680280128 + field c351.poseidon.0.0 = 2667022304383014929 + field c352.poseidon.0.0 = 12316557761857340230 + field c353.poseidon.0.0 = 10375614850625292317 + field c354.poseidon.0.0 = 8141542666379135068 + field c355.poseidon.0.0 = 9185476451083834432 + field c356.poseidon.0.0 = 4991072365274649547 + field c357.poseidon.0.0 = 17398204971778820365 + field c358.poseidon.0.0 = 16127888338958422584 + field c359.poseidon.0.0 = 13586792051317758204 + field mc.poseidon.0.0 = 17 + field mc1.poseidon.0.0 = 15 + field mc2.poseidon.0.0 = 41 + field mc3.poseidon.0.0 = 16 + field mc4.poseidon.0.0 = 2 + field mc5.poseidon.0.0 = 28 + field mc6.poseidon.0.0 = 13 + field mc7.poseidon.0.0 = 13 + field mc8.poseidon.0.0 = 39 + field mc9.poseidon.0.0 = 18 + field mc10.poseidon.0.0 = 34 + field mc11.poseidon.0.0 = 20 + field md.poseidon.0.0 = 8 + field md1.poseidon.0.0 = 0 + field md2.poseidon.0.0 = 0 + field md3.poseidon.0.0 = 0 + field md4.poseidon.0.0 = 0 + field md5.poseidon.0.0 = 0 + field md6.poseidon.0.0 = 0 + field md7.poseidon.0.0 = 0 + field md8.poseidon.0.0 = 0 + field md9.poseidon.0.0 = 0 + field md10.poseidon.0.0 = 0 + field md11.poseidon.0.0 = 0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c0.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c1.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c2.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c3.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c4.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c5.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c6.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c7.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c8.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c9.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c1.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c11.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 ** 7 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 ** 7 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 ** 7 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 ** 7 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 ** 7 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 ** 7 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 ** 7 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 ** 7 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 ** 7 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 ** 7 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 ** 7 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c12.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c13.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c14.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c15.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c16.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c17.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c18.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c19.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c2.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c21.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c22.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c23.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 ** 7 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 ** 7 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 ** 7 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 ** 7 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 ** 7 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 ** 7 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 ** 7 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 ** 7 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 ** 7 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 ** 7 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 ** 7 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c24.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c25.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c26.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c27.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c28.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c29.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c3.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c31.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c32.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c33.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c34.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c35.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 ** 7 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 ** 7 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 ** 7 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 ** 7 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 ** 7 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 ** 7 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 ** 7 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 ** 7 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 ** 7 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 ** 7 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 ** 7 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c36.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c37.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c38.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c39.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c4.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c41.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c42.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c43.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c44.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c45.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c46.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c47.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 ** 7 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 ** 7 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 ** 7 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 ** 7 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 ** 7 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 ** 7 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 ** 7 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 ** 7 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 ** 7 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 ** 7 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 ** 7 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c48.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c49.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c5.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c51.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c52.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c53.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c54.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c55.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c56.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c57.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c58.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c59.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c6.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c61.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c62.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c63.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c64.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c65.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c66.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c67.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c68.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c69.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c7.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c71.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c72.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c73.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c74.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c75.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c76.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c77.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c78.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c79.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c8.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c81.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c82.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c83.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c84.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c85.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c86.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c87.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c88.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c89.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c9.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c91.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c92.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c93.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c94.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c95.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c96.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c97.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c98.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c99.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c1.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c11.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c12.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c13.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c14.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c15.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c16.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c17.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c18.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c19.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c110.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c111.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c112.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c113.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c114.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c115.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c116.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c117.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c118.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c119.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c120.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c121.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c122.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c123.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c124.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c125.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c126.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c127.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c128.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c129.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c130.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c131.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c132.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c133.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c134.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c135.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c136.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c137.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c138.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c139.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c140.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c141.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c142.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c143.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c144.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c145.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c146.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c147.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c148.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c149.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c150.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c151.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c152.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c153.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c154.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c155.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c156.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c157.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c158.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c159.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c160.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c161.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c162.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c163.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c164.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c165.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c166.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c167.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c168.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c169.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c170.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c171.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c172.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c173.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c174.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c175.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c176.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c177.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c178.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c179.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c180.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c181.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c182.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c183.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c184.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c185.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c186.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c187.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c188.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c189.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c190.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c191.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c192.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c193.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c194.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c195.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c196.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c197.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c198.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c199.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c2.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c21.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c22.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c23.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c24.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c25.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c26.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c27.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c28.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c29.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c210.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c211.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c212.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c213.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c214.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c215.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c216.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c217.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c218.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c219.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c220.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c221.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c222.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c223.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c224.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c225.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c226.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c227.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c228.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c229.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c230.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c231.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c232.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c233.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c234.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c235.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c236.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c237.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c238.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c239.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c240.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c241.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c242.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c243.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c244.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c245.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c246.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c247.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c248.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c249.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c250.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c251.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c252.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c253.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c254.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c255.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c256.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c257.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c258.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c259.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c260.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c261.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c262.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c263.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c264.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c265.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c266.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c267.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c268.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c269.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c270.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c271.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c272.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c273.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c274.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c275.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c276.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c277.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c278.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c279.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c280.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c281.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c282.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c283.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c284.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c285.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c286.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c287.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c288.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c289.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c290.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c291.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c292.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c293.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c294.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c295.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c296.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c297.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c298.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c299.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c3.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c31.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c32.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c33.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c34.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c35.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c36.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c37.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c38.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c39.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c310.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c311.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c312.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c313.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c314.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c315.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c316.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c317.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c318.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c319.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c320.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c321.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c322.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c323.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 ** 7 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 ** 7 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 ** 7 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 ** 7 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 ** 7 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 ** 7 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 ** 7 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 ** 7 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 ** 7 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 ** 7 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 ** 7 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c324.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c325.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c326.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c327.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c328.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c329.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c330.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c331.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c332.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c333.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c334.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c335.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 ** 7 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 ** 7 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 ** 7 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 ** 7 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 ** 7 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 ** 7 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 ** 7 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 ** 7 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 ** 7 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 ** 7 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 ** 7 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c336.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c337.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c338.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c339.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c340.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c341.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c342.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c343.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c344.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c345.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c346.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c347.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 ** 7 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 ** 7 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 ** 7 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 ** 7 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 ** 7 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 ** 7 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 ** 7 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 ** 7 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 ** 7 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 ** 7 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 ** 7 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c348.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c349.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c350.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c351.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c352.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c353.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c354.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c355.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c356.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c357.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c358.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c359.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 ** 7 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 ** 7 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 ** 7 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 ** 7 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 ** 7 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 ** 7 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 ** 7 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 ** 7 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 ** 7 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 ** 7 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 ** 7 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field struct^0^state0.poseidon.0.0 = state0.poseidon.0.0 + field struct^0^state1.poseidon.0.0 = state1.poseidon.0.0 + field struct^0^state2.poseidon.0.0 = state2.poseidon.0.0 + field struct^0^state3.poseidon.0.0 = state3.poseidon.0.0 + field struct^0^state4.poseidon.0.0 = state4.poseidon.0.0 + field struct^0^state5.poseidon.0.0 = state5.poseidon.0.0 + field struct^0^state6.poseidon.0.0 = state6.poseidon.0.0 + field struct^0^state7.poseidon.0.0 = state7.poseidon.0.0 + field struct^0^state8.poseidon.0.0 = state8.poseidon.0.0 + field struct^0^state9.poseidon.0.0 = state9.poseidon.0.0 + field struct^0^state10.poseidon.0.0 = state10.poseidon.0.0 + field struct^0^state11.poseidon.0.0 = state11.poseidon.0.0 + field %RET^state0.poseidon = struct^0^state0.poseidon.0.0 + field %RET^state1.poseidon = struct^0^state1.poseidon.0.0 + field %RET^state10.poseidon = struct^0^state10.poseidon.0.0 + field %RET^state11.poseidon = struct^0^state11.poseidon.0.0 + field %RET^state2.poseidon = struct^0^state2.poseidon.0.0 + field %RET^state3.poseidon = struct^0^state3.poseidon.0.0 + field %RET^state4.poseidon = struct^0^state4.poseidon.0.0 + field %RET^state5.poseidon = struct^0^state5.poseidon.0.0 + field %RET^state6.poseidon = struct^0^state6.poseidon.0.0 + field %RET^state7.poseidon = struct^0^state7.poseidon.0.0 + field %RET^state8.poseidon = struct^0^state8.poseidon.0.0 + field %RET^state9.poseidon = struct^0^state9.poseidon.0.0 +Transition: -> rp@.poseidon + +Block 12: +Func: poseidon, Scope: 0 +Exec Bound: 1, While Loop: false +RO Ops: 0, VM Ops: 0 +Num Cons: - +Inputs: +Outputs: +Instructions: +Transition: -> rp@.poseidon + + +-- +Optimization: + + +-- +Post-Processing: +Entry block: 0 + +Block 0: +Func: main, Scope: 0 +Exec Bound: 1, While Loop: false +RO Ops: 0, VM Ops: 0 +Num Cons: 33 +Inputs: + %i1(BN): field +Outputs: + %o1(BN): field + %o7: field + %o8: u32 + %o9: field + %o10: field + %o11: field + %o12: field + %o13: field + %o14: field + %o15: field + %o16: field + %o17: field + %o18: field + %o19: field + %o20: field +Instructions: + assert %i1(BN) == 0 + field %w5 = 1 + field %w6 = 2 + field %w7 = 3 + field %w8 = 4 + field %w9 = 5 + field %w10 = 6 + field %w11 = 7 + field %w12 = 8 + field %w13 = 0 + field %w14 = 0 + field %w15 = 0 + field %w16 = 0 + field %w17 = %w5 + field %w18 = %w6 + field %w19 = %w15 + field %w20 = %w16 + field %w21 = %w7 + field %w22 = %w8 + field %w23 = %w9 + field %w24 = %w10 + field %w25 = %w11 + field %w26 = %w12 + field %w27 = %w13 + field %w28 = %w14 + field %w29 = 0 + u32 %w30 = 0 + assert %o7 == %w29 + assert %o8 == %w30 + assert %o9 == %w17 + assert %o10 == %w18 + assert %o11 == %w19 + assert %o12 == %w20 + assert %o13 == %w21 + assert %o14 == %w22 + assert %o15 == %w23 + assert %o16 == %w24 + assert %o17 == %w25 + assert %o18 == %w26 + assert %o19 == %w27 + assert %o20 == %w28 + assert %o1(BN) == %w30 != 1000000 ? 1 : 2 +Transition: + %w30 != 1000000 ? -> 1 : -> 2 + +Block 1: +Func: main, Scope: 2 +Exec Bound: 1000000, While Loop: false +RO Ops: 0, VM Ops: 0 +Num Cons: 607 +Inputs: + %i1(BN): field + %i7: field + %i8: u32 + %i9: field + %i10: field + %i11: field + %i12: field + %i13: field + %i14: field + %i15: field + %i16: field + %i17: field + %i18: field + %i19: field + %i20: field +Outputs: + %o1(BN): field + %o7: field + %o8: u32 + %o9: field + %o10: field + %o11: field + %o12: field + %o13: field + %o14: field + %o15: field + %o16: field + %o17: field + %o18: field + %o19: field + %o20: field +Instructions: + assert %i1(BN) == 1 + field %w29 = %i7 + u32 %w30 = %i8 + field %w17 = %i9 + field %w18 = %i10 + field %w19 = %i11 + field %w20 = %i12 + field %w21 = %i13 + field %w22 = %i14 + field %w23 = %i15 + field %w24 = %i16 + field %w25 = %i17 + field %w26 = %i18 + field %w27 = %i19 + field %w28 = %i20 + field %w31 = %w17 + field %w32 = %w18 + field %w33 = %w19 + field %w34 = %w20 + field %w35 = %w21 + field %w36 = %w22 + field %w37 = %w23 + field %w38 = %w24 + field %w39 = %w25 + field %w40 = %w26 + field %w41 = %w27 + field %w42 = %w28 + field %w43 = %w31 + field %w44 = %w32 + field %w45 = %w35 + field %w46 = %w36 + field %w47 = %w37 + field %w48 = %w38 + field %w49 = %w39 + field %w50 = %w40 + field %w51 = %w41 + field %w52 = %w42 + field %w53 = %w33 + field %w54 = %w34 + field %w55 = 13080132714287612933 + field %w56 = 8594738767457295063 + field %w57 = 12896916465481390516 + field %w58 = 1109962092811921367 + field %w59 = 16216730422861946898 + field %w60 = 10137062673499593713 + field %w61 = 15292064466732465823 + field %w62 = 17255573294985989181 + field %w63 = 14827154241873003558 + field %w64 = 2846171647972703231 + field %w65 = 16246264663680317601 + field %w66 = 14214208087951879286 + field %w67 = 9667108687426275457 + field %w68 = 6470857420712283733 + field %w69 = 14103331940138337652 + field %w70 = 11854816473550292865 + field %w71 = 3498097497301325516 + field %w72 = 7947235692523864220 + field %w73 = 11110078701231901946 + field %w74 = 16384314112672821048 + field %w75 = 15404405912655775739 + field %w76 = 14077880830714445579 + field %w77 = 9555554662709218279 + field %w78 = 13859595358210603949 + field %w79 = 16859897325061800066 + field %w80 = 17685474420222222349 + field %w81 = 17858764734618734949 + field %w82 = 9410011022665866671 + field %w83 = 12495243629579414666 + field %w84 = 12416945298171515742 + field %w85 = 5776666812364270983 + field %w86 = 6314421662864060481 + field %w87 = 7402742471423223171 + field %w88 = 982536713192432718 + field %w89 = 17321168865775127905 + field %w90 = 2934354895005980211 + field %w91 = 10567510598607410195 + field %w92 = 8135543733717919110 + field %w93 = 116353493081713692 + field %w94 = 8029688163494945618 + field %w95 = 9003846637224807585 + field %w96 = 7052445132467233849 + field %w97 = 9645665432288852853 + field %w98 = 5446430061030868787 + field %w99 = 16770910634346036823 + field %w100 = 17708360571433944729 + field %w101 = 4661556288322237631 + field %w102 = 11977051899316327985 + field %w103 = 4378616569090929672 + field %w104 = 3334807502817538491 + field %w105 = 8019184735943344966 + field %w106 = 2395043908812246395 + field %w107 = 6558421058331732611 + field %w108 = 11735894060727326369 + field %w109 = 8143540538889204488 + field %w110 = 5991753489563751169 + field %w111 = 12235918791502088007 + field %w112 = 2880312033702687139 + field %w113 = 18224748115308382355 + field %w114 = 18070411013125314165 + field %w115 = 8156487614120951180 + field %w116 = 10615269510047010719 + field %w117 = 12489426404754222075 + field %w118 = 5055279340069995710 + field %w119 = 7231927319780248664 + field %w120 = 2602078848106763799 + field %w121 = 12445944369334781425 + field %w122 = 3978905923892496205 + field %w123 = 16711272944329818038 + field %w124 = 10439032361227108922 + field %w125 = 15110119871725214866 + field %w126 = 821141790655890946 + field %w127 = 11073536380651186235 + field %w128 = 4866839313097607757 + field %w129 = 13118391689513956636 + field %w130 = 14527674973762312380 + field %w131 = 7612751959265567999 + field %w132 = 6808090907814178161 + field %w133 = 6899703779492644997 + field %w134 = 3664666286336986826 + field %w135 = 783179505424462608 + field %w136 = 8990689241814097697 + field %w137 = 9646603555412825679 + field %w138 = 7351246026167205041 + field %w139 = 16970959813722173256 + field %w140 = 15735726858241466429 + field %w141 = 10347018221892268419 + field %w142 = 12195545878449322889 + field %w143 = 7423314197114049891 + field %w144 = 14908016116973904153 + field %w145 = 5840340122527363265 + field %w146 = 17740311462440614128 + field %w147 = 815306421953744623 + field %w148 = 17456357368219253949 + field %w149 = 6982651076559329072 + field %w150 = 11970987324614963868 + field %w151 = 8167785008538063246 + field %w152 = 9483259819397403968 + field %w153 = 954550221664291548 + field %w154 = 10339565171024313256 + field %w155 = 8651171084286500102 + field %w156 = 16974445528003515956 + field %w157 = 15104530047940621190 + field %w158 = 103271880867179718 + field %w159 = 14654666245504492663 + field %w160 = 12445769555936887967 + field %w161 = 11250582358051997490 + field %w162 = 6730977207490590241 + field %w163 = 15919951556166196935 + field %w164 = 4423540216573360915 + field %w165 = 16317664700341473511 + field %w166 = 4723997214951767765 + field %w167 = 10098756619006575500 + field %w168 = 3223149401237667964 + field %w169 = 6870494874300767682 + field %w170 = 2902095711130291898 + field %w171 = 7159372652788439733 + field %w172 = 11500508372997952671 + field %w173 = 13348148181479462670 + field %w174 = 12729401155983882093 + field %w175 = 15021242795466053388 + field %w176 = 3802990509227527157 + field %w177 = 4665459515680145682 + field %w178 = 13165553315407675603 + field %w179 = 6496364397926233172 + field %w180 = 12800832566287577810 + field %w181 = 9737592377590267426 + field %w182 = 8687131091302514939 + field %w183 = 1488200421755445892 + field %w184 = 11004377668730991641 + field %w185 = 13516338734600228410 + field %w186 = 2953581820660217936 + field %w187 = 3505040783153922951 + field %w188 = 3710332827435113697 + field %w189 = 15414874040873320221 + field %w190 = 8602547649919482301 + field %w191 = 13971349938398812007 + field %w192 = 187239246702636066 + field %w193 = 12886019973971254144 + field %w194 = 4512274763990493707 + field %w195 = 2986635507805503192 + field %w196 = 2315252455709119454 + field %w197 = 12537995864054210246 + field %w198 = 2039491936479859267 + field %w199 = 1558644089185031256 + field %w200 = 4074089203264759305 + field %w201 = 2522268501749395707 + field %w202 = 3414760436185256196 + field %w203 = 17420887529146466921 + field %w204 = 2817020417938125001 + field %w205 = 16538346563888261485 + field %w206 = 5592270336833998770 + field %w207 = 16876602064684906232 + field %w208 = 1793025614521516343 + field %w209 = 2178510518148748532 + field %w210 = 2726440714374752509 + field %w211 = 6502946837278398021 + field %w212 = 15816362857667988792 + field %w213 = 12997958454165692924 + field %w214 = 5314892854495903792 + field %w215 = 15533907063555687782 + field %w216 = 12312015675698548715 + field %w217 = 14140016464013350248 + field %w218 = 16325589062962838690 + field %w219 = 6796145646370327654 + field %w220 = 1168753512742361735 + field %w221 = 4100789820704709368 + field %w222 = 15947554381540469177 + field %w223 = 8597377839806076919 + field %w224 = 9704018824195918000 + field %w225 = 12763288618765762688 + field %w226 = 17249257732622847695 + field %w227 = 1998710993415069759 + field %w228 = 923759906393011543 + field %w229 = 1271051229666811593 + field %w230 = 17822362132088738077 + field %w231 = 11797234543722669271 + field %w232 = 5864538787265942447 + field %w233 = 15975583211110506970 + field %w234 = 7258516085733671960 + field %w235 = 17999926471875633100 + field %w236 = 635992114476018166 + field %w237 = 17205047318256576347 + field %w238 = 17384900867876315312 + field %w239 = 16484825562915784226 + field %w240 = 16694130609036138894 + field %w241 = 10575069350371260875 + field %w242 = 8330575162062887277 + field %w243 = 6212375704691932880 + field %w244 = 15965138197626618226 + field %w245 = 14285453069600046939 + field %w246 = 10005163510208402517 + field %w247 = 885298637936952595 + field %w248 = 541790758138118921 + field %w249 = 5985203084790372993 + field %w250 = 4685030219775483721 + field %w251 = 1411106851304815020 + field %w252 = 11290732479954096478 + field %w253 = 208280581124868513 + field %w254 = 10979018648467968495 + field %w255 = 8600643745023338215 + field %w256 = 3477453626867126061 + field %w257 = 6428436309340258604 + field %w258 = 5695415667275657934 + field %w259 = 15952065508715623490 + field %w260 = 15571300830419767248 + field %w261 = 17259785660502616862 + field %w262 = 4298425495274316083 + field %w263 = 9023601070579319352 + field %w264 = 7353589709321807492 + field %w265 = 2988848909076209475 + field %w266 = 10439527789422046135 + field %w267 = 6097734044161429459 + field %w268 = 1113429873817861476 + field %w269 = 1639063372386966591 + field %w270 = 7863102812716788759 + field %w271 = 216040220732135364 + field %w272 = 14252611488623712688 + field %w273 = 9543395466794536974 + field %w274 = 2714461051639810934 + field %w275 = 2588317208781407279 + field %w276 = 15458529123534594916 + field %w277 = 15748417817551040856 + field %w278 = 16414455697114422951 + field %w279 = 13378164466674639511 + field %w280 = 13894319928411294675 + field %w281 = 5032680892090751540 + field %w282 = 17201338494743078916 + field %w283 = 4397422800601932505 + field %w284 = 11285062031581972327 + field %w285 = 7309354640676468207 + field %w286 = 10457152817239331848 + field %w287 = 8855911538863247046 + field %w288 = 4301853449821814398 + field %w289 = 13001502396339103326 + field %w290 = 10218424535115580246 + field %w291 = 8628244713920681895 + field %w292 = 17410423622514037261 + field %w293 = 14080683768439215375 + field %w294 = 11453161143447188100 + field %w295 = 16761509772042181939 + field %w296 = 6688821660695954082 + field %w297 = 12083434295263160416 + field %w298 = 8540021431714616589 + field %w299 = 6891616215679974226 + field %w300 = 10229217098454812721 + field %w301 = 3292165387203778711 + field %w302 = 6090113424998243490 + field %w303 = 13431780521962358660 + field %w304 = 6061081364215809883 + field %w305 = 16792066504222214142 + field %w306 = 16134314044798124799 + field %w307 = 17070233710126619765 + field %w308 = 6915716851370550800 + field %w309 = 9505009849073026581 + field %w310 = 6422700465081897153 + field %w311 = 17977653991560529185 + field %w312 = 5800870252836247255 + field %w313 = 12096124733159345520 + field %w314 = 7679273623392321940 + field %w315 = 17835783910585744964 + field %w316 = 2478664878205754377 + field %w317 = 1720314468413114967 + field %w318 = 10376757819003248056 + field %w319 = 10376377187857634245 + field %w320 = 13344930747504284997 + field %w321 = 11579281865160153596 + field %w322 = 10300256980048736962 + field %w323 = 378765236515040565 + field %w324 = 11412420941557253424 + field %w325 = 12931662470734252786 + field %w326 = 43018908376346374 + field %w327 = 3589810689190160071 + field %w328 = 4688229274750659741 + field %w329 = 13688957436484306091 + field %w330 = 11424740943016984272 + field %w331 = 16001900718237913960 + field %w332 = 5548469743008097574 + field %w333 = 14584404916672178680 + field %w334 = 3396622135873576824 + field %w335 = 7861729246871155992 + field %w336 = 16112271126908045545 + field %w337 = 16988163966860016012 + field %w338 = 273641680619529493 + field %w339 = 15222677154027327363 + field %w340 = 4070328078309830604 + field %w341 = 13520458500363296391 + field %w342 = 8235111705801363015 + field %w343 = 5575990058472514138 + field %w344 = 2751301609188252989 + field %w345 = 6478598528223547074 + field %w346 = 386565553848556638 + field %w347 = 9417729078939938713 + field %w348 = 15204315939835727483 + field %w349 = 14942015033780606261 + field %w350 = 18369423901636582012 + field %w351 = 4715338437538604447 + field %w352 = 6840590980607806319 + field %w353 = 5535471161490539014 + field %w354 = 5341328005359029952 + field %w355 = 1475161295215894444 + field %w356 = 7999197814297036636 + field %w357 = 2984233088665867938 + field %w358 = 3097746028144832229 + field %w359 = 8849530863480031517 + field %w360 = 7464920943249009773 + field %w361 = 3802996844641460514 + field %w362 = 6284458522545927646 + field %w363 = 2307388003445002779 + field %w364 = 4461479354745457623 + field %w365 = 1649739722664588460 + field %w366 = 3008391274160432867 + field %w367 = 5142217010456550622 + field %w368 = 1775580461722730120 + field %w369 = 161694268822794344 + field %w370 = 1518963253808031703 + field %w371 = 16475258091652710137 + field %w372 = 119575899007375159 + field %w373 = 1275863735937973999 + field %w374 = 16539412514520642374 + field %w375 = 2303365191438051950 + field %w376 = 6435126839960916075 + field %w377 = 17794599201026020053 + field %w378 = 13847097589277840330 + field %w379 = 16645869274577729720 + field %w380 = 8039205965509554440 + field %w381 = 4788586935019371140 + field %w382 = 15129007200040077746 + field %w383 = 2055561615223771341 + field %w384 = 4149731103701412892 + field %w385 = 10268130195734144189 + field %w386 = 13406631635880074708 + field %w387 = 11429218277824986203 + field %w388 = 15773968030812198565 + field %w389 = 16050275277550506872 + field %w390 = 11858586752031736643 + field %w391 = 8927746344866569756 + field %w392 = 11802068403177695792 + field %w393 = 157833420806751556 + field %w394 = 4698875910749767878 + field %w395 = 1616722774788291698 + field %w396 = 3990951895163748090 + field %w397 = 16758609224720795472 + field %w398 = 3045571693290741477 + field %w399 = 9281634245289836419 + field %w400 = 13517688176723875370 + field %w401 = 7961395585333219380 + field %w402 = 1606574359105691080 + field %w403 = 17564372683613562171 + field %w404 = 4664015225343144418 + field %w405 = 6133721340680280128 + field %w406 = 2667022304383014929 + field %w407 = 12316557761857340230 + field %w408 = 10375614850625292317 + field %w409 = 8141542666379135068 + field %w410 = 9185476451083834432 + field %w411 = 4991072365274649547 + field %w412 = 17398204971778820365 + field %w413 = 16127888338958422584 + field %w414 = 13586792051317758204 + field %w415 = 17 + field %w416 = 15 + field %w417 = 41 + field %w418 = 16 + field %w419 = 2 + field %w420 = 28 + field %w421 = 13 + field %w422 = 13 + field %w423 = 39 + field %w424 = 18 + field %w425 = 34 + field %w426 = 20 + field %w427 = 8 + field %w428 = 0 + field %w429 = 0 + field %w430 = 0 + field %w431 = 0 + field %w432 = 0 + field %w433 = 0 + field %w434 = 0 + field %w435 = 0 + field %w436 = 0 + field %w437 = 0 + field %w438 = 0 + %w43 = %w43 + %w55 + %w44 = %w44 + %w56 + %w45 = %w45 + %w57 + %w46 = %w46 + %w58 + %w47 = %w47 + %w59 + %w48 = %w48 + %w60 + %w49 = %w49 + %w61 + %w50 = %w50 + %w62 + %w51 = %w51 + %w63 + %w52 = %w52 + %w64 + %w53 = %w53 + %w65 + %w54 = %w54 + %w66 + field %w439 = %w43 ** 7 + field %w440 = %w44 ** 7 + field %w441 = %w45 ** 7 + field %w442 = %w46 ** 7 + field %w443 = %w47 ** 7 + field %w444 = %w48 ** 7 + field %w445 = %w49 ** 7 + field %w446 = %w50 ** 7 + field %w447 = %w51 ** 7 + field %w448 = %w52 ** 7 + field %w449 = %w53 ** 7 + field %w450 = %w54 ** 7 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w67 + %w44 = %w44 + %w68 + %w45 = %w45 + %w69 + %w46 = %w46 + %w70 + %w47 = %w47 + %w71 + %w48 = %w48 + %w72 + %w49 = %w49 + %w73 + %w50 = %w50 + %w74 + %w51 = %w51 + %w75 + %w52 = %w52 + %w76 + %w53 = %w53 + %w77 + %w54 = %w54 + %w78 + %w439 = %w43 ** 7 + %w440 = %w44 ** 7 + %w441 = %w45 ** 7 + %w442 = %w46 ** 7 + %w443 = %w47 ** 7 + %w444 = %w48 ** 7 + %w445 = %w49 ** 7 + %w446 = %w50 ** 7 + %w447 = %w51 ** 7 + %w448 = %w52 ** 7 + %w449 = %w53 ** 7 + %w450 = %w54 ** 7 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w79 + %w44 = %w44 + %w80 + %w45 = %w45 + %w81 + %w46 = %w46 + %w82 + %w47 = %w47 + %w83 + %w48 = %w48 + %w84 + %w49 = %w49 + %w85 + %w50 = %w50 + %w86 + %w51 = %w51 + %w87 + %w52 = %w52 + %w88 + %w53 = %w53 + %w89 + %w54 = %w54 + %w90 + %w439 = %w43 ** 7 + %w440 = %w44 ** 7 + %w441 = %w45 ** 7 + %w442 = %w46 ** 7 + %w443 = %w47 ** 7 + %w444 = %w48 ** 7 + %w445 = %w49 ** 7 + %w446 = %w50 ** 7 + %w447 = %w51 ** 7 + %w448 = %w52 ** 7 + %w449 = %w53 ** 7 + %w450 = %w54 ** 7 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w91 + %w44 = %w44 + %w92 + %w45 = %w45 + %w93 + %w46 = %w46 + %w94 + %w47 = %w47 + %w95 + %w48 = %w48 + %w96 + %w49 = %w49 + %w97 + %w50 = %w50 + %w98 + %w51 = %w51 + %w99 + %w52 = %w52 + %w100 + %w53 = %w53 + %w101 + %w54 = %w54 + %w102 + %w439 = %w43 ** 7 + %w440 = %w44 ** 7 + %w441 = %w45 ** 7 + %w442 = %w46 ** 7 + %w443 = %w47 ** 7 + %w444 = %w48 ** 7 + %w445 = %w49 ** 7 + %w446 = %w50 ** 7 + %w447 = %w51 ** 7 + %w448 = %w52 ** 7 + %w449 = %w53 ** 7 + %w450 = %w54 ** 7 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w103 + %w44 = %w44 + %w104 + %w45 = %w45 + %w105 + %w46 = %w46 + %w106 + %w47 = %w47 + %w107 + %w48 = %w48 + %w108 + %w49 = %w49 + %w109 + %w50 = %w50 + %w110 + %w51 = %w51 + %w111 + %w52 = %w52 + %w112 + %w53 = %w53 + %w113 + %w54 = %w54 + %w114 + %w439 = %w43 ** 7 + %w440 = %w44 + %w441 = %w45 + %w442 = %w46 + %w443 = %w47 + %w444 = %w48 + %w445 = %w49 + %w446 = %w50 + %w447 = %w51 + %w448 = %w52 + %w449 = %w53 + %w450 = %w54 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w115 + %w44 = %w44 + %w116 + %w45 = %w45 + %w117 + %w46 = %w46 + %w118 + %w47 = %w47 + %w119 + %w48 = %w48 + %w120 + %w49 = %w49 + %w121 + %w50 = %w50 + %w122 + %w51 = %w51 + %w123 + %w52 = %w52 + %w124 + %w53 = %w53 + %w125 + %w54 = %w54 + %w126 + %w439 = %w43 ** 7 + %w440 = %w44 + %w441 = %w45 + %w442 = %w46 + %w443 = %w47 + %w444 = %w48 + %w445 = %w49 + %w446 = %w50 + %w447 = %w51 + %w448 = %w52 + %w449 = %w53 + %w450 = %w54 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w127 + %w44 = %w44 + %w128 + %w45 = %w45 + %w129 + %w46 = %w46 + %w130 + %w47 = %w47 + %w131 + %w48 = %w48 + %w132 + %w49 = %w49 + %w133 + %w50 = %w50 + %w134 + %w51 = %w51 + %w135 + %w52 = %w52 + %w136 + %w53 = %w53 + %w137 + %w54 = %w54 + %w138 + %w439 = %w43 ** 7 + %w440 = %w44 + %w441 = %w45 + %w442 = %w46 + %w443 = %w47 + %w444 = %w48 + %w445 = %w49 + %w446 = %w50 + %w447 = %w51 + %w448 = %w52 + %w449 = %w53 + %w450 = %w54 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w139 + %w44 = %w44 + %w140 + %w45 = %w45 + %w141 + %w46 = %w46 + %w142 + %w47 = %w47 + %w143 + %w48 = %w48 + %w144 + %w49 = %w49 + %w145 + %w50 = %w50 + %w146 + %w51 = %w51 + %w147 + %w52 = %w52 + %w148 + %w53 = %w53 + %w149 + %w54 = %w54 + %w150 + %w439 = %w43 ** 7 + %w440 = %w44 + %w441 = %w45 + %w442 = %w46 + %w443 = %w47 + %w444 = %w48 + %w445 = %w49 + %w446 = %w50 + %w447 = %w51 + %w448 = %w52 + %w449 = %w53 + %w450 = %w54 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w151 + %w44 = %w44 + %w152 + %w45 = %w45 + %w153 + %w46 = %w46 + %w154 + %w47 = %w47 + %w155 + %w48 = %w48 + %w156 + %w49 = %w49 + %w157 + %w50 = %w50 + %w158 + %w51 = %w51 + %w159 + %w52 = %w52 + %w160 + %w53 = %w53 + %w161 + %w54 = %w54 + %w162 + %w439 = %w43 ** 7 + %w440 = %w44 + %w441 = %w45 + %w442 = %w46 + %w443 = %w47 + %w444 = %w48 + %w445 = %w49 + %w446 = %w50 + %w447 = %w51 + %w448 = %w52 + %w449 = %w53 + %w450 = %w54 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w163 + %w44 = %w44 + %w164 + %w45 = %w45 + %w165 + %w46 = %w46 + %w166 + %w47 = %w47 + %w167 + %w48 = %w48 + %w168 + %w49 = %w49 + %w169 + %w50 = %w50 + %w170 + %w51 = %w51 + %w171 + %w52 = %w52 + %w172 + %w53 = %w53 + %w173 + %w54 = %w54 + %w174 + %w439 = %w43 ** 7 + %w440 = %w44 + %w441 = %w45 + %w442 = %w46 + %w443 = %w47 + %w444 = %w48 + %w445 = %w49 + %w446 = %w50 + %w447 = %w51 + %w448 = %w52 + %w449 = %w53 + %w450 = %w54 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w175 + %w44 = %w44 + %w176 + %w45 = %w45 + %w177 + %w46 = %w46 + %w178 + %w47 = %w47 + %w179 + %w48 = %w48 + %w180 + %w49 = %w49 + %w181 + %w50 = %w50 + %w182 + %w51 = %w51 + %w183 + %w52 = %w52 + %w184 + %w53 = %w53 + %w185 + %w54 = %w54 + %w186 + %w439 = %w43 ** 7 + %w440 = %w44 + %w441 = %w45 + %w442 = %w46 + %w443 = %w47 + %w444 = %w48 + %w445 = %w49 + %w446 = %w50 + %w447 = %w51 + %w448 = %w52 + %w449 = %w53 + %w450 = %w54 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w187 + %w44 = %w44 + %w188 + %w45 = %w45 + %w189 + %w46 = %w46 + %w190 + %w47 = %w47 + %w191 + %w48 = %w48 + %w192 + %w49 = %w49 + %w193 + %w50 = %w50 + %w194 + %w51 = %w51 + %w195 + %w52 = %w52 + %w196 + %w53 = %w53 + %w197 + %w54 = %w54 + %w198 + %w439 = %w43 ** 7 + %w440 = %w44 + %w441 = %w45 + %w442 = %w46 + %w443 = %w47 + %w444 = %w48 + %w445 = %w49 + %w446 = %w50 + %w447 = %w51 + %w448 = %w52 + %w449 = %w53 + %w450 = %w54 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w199 + %w44 = %w44 + %w200 + %w45 = %w45 + %w201 + %w46 = %w46 + %w202 + %w47 = %w47 + %w203 + %w48 = %w48 + %w204 + %w49 = %w49 + %w205 + %w50 = %w50 + %w206 + %w51 = %w51 + %w207 + %w52 = %w52 + %w208 + %w53 = %w53 + %w209 + %w54 = %w54 + %w210 + %w439 = %w43 ** 7 + %w440 = %w44 + %w441 = %w45 + %w442 = %w46 + %w443 = %w47 + %w444 = %w48 + %w445 = %w49 + %w446 = %w50 + %w447 = %w51 + %w448 = %w52 + %w449 = %w53 + %w450 = %w54 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w211 + %w44 = %w44 + %w212 + %w45 = %w45 + %w213 + %w46 = %w46 + %w214 + %w47 = %w47 + %w215 + %w48 = %w48 + %w216 + %w49 = %w49 + %w217 + %w50 = %w50 + %w218 + %w51 = %w51 + %w219 + %w52 = %w52 + %w220 + %w53 = %w53 + %w221 + %w54 = %w54 + %w222 + %w439 = %w43 ** 7 + %w440 = %w44 + %w441 = %w45 + %w442 = %w46 + %w443 = %w47 + %w444 = %w48 + %w445 = %w49 + %w446 = %w50 + %w447 = %w51 + %w448 = %w52 + %w449 = %w53 + %w450 = %w54 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w223 + %w44 = %w44 + %w224 + %w45 = %w45 + %w225 + %w46 = %w46 + %w226 + %w47 = %w47 + %w227 + %w48 = %w48 + %w228 + %w49 = %w49 + %w229 + %w50 = %w50 + %w230 + %w51 = %w51 + %w231 + %w52 = %w52 + %w232 + %w53 = %w53 + %w233 + %w54 = %w54 + %w234 + %w439 = %w43 ** 7 + %w440 = %w44 + %w441 = %w45 + %w442 = %w46 + %w443 = %w47 + %w444 = %w48 + %w445 = %w49 + %w446 = %w50 + %w447 = %w51 + %w448 = %w52 + %w449 = %w53 + %w450 = %w54 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w235 + %w44 = %w44 + %w236 + %w45 = %w45 + %w237 + %w46 = %w46 + %w238 + %w47 = %w47 + %w239 + %w48 = %w48 + %w240 + %w49 = %w49 + %w241 + %w50 = %w50 + %w242 + %w51 = %w51 + %w243 + %w52 = %w52 + %w244 + %w53 = %w53 + %w245 + %w54 = %w54 + %w246 + %w439 = %w43 ** 7 + %w440 = %w44 + %w441 = %w45 + %w442 = %w46 + %w443 = %w47 + %w444 = %w48 + %w445 = %w49 + %w446 = %w50 + %w447 = %w51 + %w448 = %w52 + %w449 = %w53 + %w450 = %w54 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w247 + %w44 = %w44 + %w248 + %w45 = %w45 + %w249 + %w46 = %w46 + %w250 + %w47 = %w47 + %w251 + %w48 = %w48 + %w252 + %w49 = %w49 + %w253 + %w50 = %w50 + %w254 + %w51 = %w51 + %w255 + %w52 = %w52 + %w256 + %w53 = %w53 + %w257 + %w54 = %w54 + %w258 + %w439 = %w43 ** 7 + %w440 = %w44 + %w441 = %w45 + %w442 = %w46 + %w443 = %w47 + %w444 = %w48 + %w445 = %w49 + %w446 = %w50 + %w447 = %w51 + %w448 = %w52 + %w449 = %w53 + %w450 = %w54 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w259 + %w44 = %w44 + %w260 + %w45 = %w45 + %w261 + %w46 = %w46 + %w262 + %w47 = %w47 + %w263 + %w48 = %w48 + %w264 + %w49 = %w49 + %w265 + %w50 = %w50 + %w266 + %w51 = %w51 + %w267 + %w52 = %w52 + %w268 + %w53 = %w53 + %w269 + %w54 = %w54 + %w270 + %w439 = %w43 ** 7 + %w440 = %w44 + %w441 = %w45 + %w442 = %w46 + %w443 = %w47 + %w444 = %w48 + %w445 = %w49 + %w446 = %w50 + %w447 = %w51 + %w448 = %w52 + %w449 = %w53 + %w450 = %w54 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w271 + %w44 = %w44 + %w272 + %w45 = %w45 + %w273 + %w46 = %w46 + %w274 + %w47 = %w47 + %w275 + %w48 = %w48 + %w276 + %w49 = %w49 + %w277 + %w50 = %w50 + %w278 + %w51 = %w51 + %w279 + %w52 = %w52 + %w280 + %w53 = %w53 + %w281 + %w54 = %w54 + %w282 + %w439 = %w43 ** 7 + %w440 = %w44 + %w441 = %w45 + %w442 = %w46 + %w443 = %w47 + %w444 = %w48 + %w445 = %w49 + %w446 = %w50 + %w447 = %w51 + %w448 = %w52 + %w449 = %w53 + %w450 = %w54 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w283 + %w44 = %w44 + %w284 + %w45 = %w45 + %w285 + %w46 = %w46 + %w286 + %w47 = %w47 + %w287 + %w48 = %w48 + %w288 + %w49 = %w49 + %w289 + %w50 = %w50 + %w290 + %w51 = %w51 + %w291 + %w52 = %w52 + %w292 + %w53 = %w53 + %w293 + %w54 = %w54 + %w294 + %w439 = %w43 ** 7 + %w440 = %w44 + %w441 = %w45 + %w442 = %w46 + %w443 = %w47 + %w444 = %w48 + %w445 = %w49 + %w446 = %w50 + %w447 = %w51 + %w448 = %w52 + %w449 = %w53 + %w450 = %w54 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w295 + %w44 = %w44 + %w296 + %w45 = %w45 + %w297 + %w46 = %w46 + %w298 + %w47 = %w47 + %w299 + %w48 = %w48 + %w300 + %w49 = %w49 + %w301 + %w50 = %w50 + %w302 + %w51 = %w51 + %w303 + %w52 = %w52 + %w304 + %w53 = %w53 + %w305 + %w54 = %w54 + %w306 + %w439 = %w43 ** 7 + %w440 = %w44 + %w441 = %w45 + %w442 = %w46 + %w443 = %w47 + %w444 = %w48 + %w445 = %w49 + %w446 = %w50 + %w447 = %w51 + %w448 = %w52 + %w449 = %w53 + %w450 = %w54 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w307 + %w44 = %w44 + %w308 + %w45 = %w45 + %w309 + %w46 = %w46 + %w310 + %w47 = %w47 + %w311 + %w48 = %w48 + %w312 + %w49 = %w49 + %w313 + %w50 = %w50 + %w314 + %w51 = %w51 + %w315 + %w52 = %w52 + %w316 + %w53 = %w53 + %w317 + %w54 = %w54 + %w318 + %w439 = %w43 ** 7 + %w440 = %w44 + %w441 = %w45 + %w442 = %w46 + %w443 = %w47 + %w444 = %w48 + %w445 = %w49 + %w446 = %w50 + %w447 = %w51 + %w448 = %w52 + %w449 = %w53 + %w450 = %w54 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w319 + %w44 = %w44 + %w320 + %w45 = %w45 + %w321 + %w46 = %w46 + %w322 + %w47 = %w47 + %w323 + %w48 = %w48 + %w324 + %w49 = %w49 + %w325 + %w50 = %w50 + %w326 + %w51 = %w51 + %w327 + %w52 = %w52 + %w328 + %w53 = %w53 + %w329 + %w54 = %w54 + %w330 + %w439 = %w43 ** 7 + %w440 = %w44 + %w441 = %w45 + %w442 = %w46 + %w443 = %w47 + %w444 = %w48 + %w445 = %w49 + %w446 = %w50 + %w447 = %w51 + %w448 = %w52 + %w449 = %w53 + %w450 = %w54 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w331 + %w44 = %w44 + %w332 + %w45 = %w45 + %w333 + %w46 = %w46 + %w334 + %w47 = %w47 + %w335 + %w48 = %w48 + %w336 + %w49 = %w49 + %w337 + %w50 = %w50 + %w338 + %w51 = %w51 + %w339 + %w52 = %w52 + %w340 + %w53 = %w53 + %w341 + %w54 = %w54 + %w342 + %w439 = %w43 ** 7 + %w440 = %w44 + %w441 = %w45 + %w442 = %w46 + %w443 = %w47 + %w444 = %w48 + %w445 = %w49 + %w446 = %w50 + %w447 = %w51 + %w448 = %w52 + %w449 = %w53 + %w450 = %w54 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w343 + %w44 = %w44 + %w344 + %w45 = %w45 + %w345 + %w46 = %w46 + %w346 + %w47 = %w47 + %w347 + %w48 = %w48 + %w348 + %w49 = %w49 + %w349 + %w50 = %w50 + %w350 + %w51 = %w51 + %w351 + %w52 = %w52 + %w352 + %w53 = %w53 + %w353 + %w54 = %w54 + %w354 + %w439 = %w43 ** 7 + %w440 = %w44 + %w441 = %w45 + %w442 = %w46 + %w443 = %w47 + %w444 = %w48 + %w445 = %w49 + %w446 = %w50 + %w447 = %w51 + %w448 = %w52 + %w449 = %w53 + %w450 = %w54 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w355 + %w44 = %w44 + %w356 + %w45 = %w45 + %w357 + %w46 = %w46 + %w358 + %w47 = %w47 + %w359 + %w48 = %w48 + %w360 + %w49 = %w49 + %w361 + %w50 = %w50 + %w362 + %w51 = %w51 + %w363 + %w52 = %w52 + %w364 + %w53 = %w53 + %w365 + %w54 = %w54 + %w366 + %w439 = %w43 ** 7 + %w440 = %w44 + %w441 = %w45 + %w442 = %w46 + %w443 = %w47 + %w444 = %w48 + %w445 = %w49 + %w446 = %w50 + %w447 = %w51 + %w448 = %w52 + %w449 = %w53 + %w450 = %w54 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w367 + %w44 = %w44 + %w368 + %w45 = %w45 + %w369 + %w46 = %w46 + %w370 + %w47 = %w47 + %w371 + %w48 = %w48 + %w372 + %w49 = %w49 + %w373 + %w50 = %w50 + %w374 + %w51 = %w51 + %w375 + %w52 = %w52 + %w376 + %w53 = %w53 + %w377 + %w54 = %w54 + %w378 + %w439 = %w43 ** 7 + %w440 = %w44 ** 7 + %w441 = %w45 ** 7 + %w442 = %w46 ** 7 + %w443 = %w47 ** 7 + %w444 = %w48 ** 7 + %w445 = %w49 ** 7 + %w446 = %w50 ** 7 + %w447 = %w51 ** 7 + %w448 = %w52 ** 7 + %w449 = %w53 ** 7 + %w450 = %w54 ** 7 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w379 + %w44 = %w44 + %w380 + %w45 = %w45 + %w381 + %w46 = %w46 + %w382 + %w47 = %w47 + %w383 + %w48 = %w48 + %w384 + %w49 = %w49 + %w385 + %w50 = %w50 + %w386 + %w51 = %w51 + %w387 + %w52 = %w52 + %w388 + %w53 = %w53 + %w389 + %w54 = %w54 + %w390 + %w439 = %w43 ** 7 + %w440 = %w44 ** 7 + %w441 = %w45 ** 7 + %w442 = %w46 ** 7 + %w443 = %w47 ** 7 + %w444 = %w48 ** 7 + %w445 = %w49 ** 7 + %w446 = %w50 ** 7 + %w447 = %w51 ** 7 + %w448 = %w52 ** 7 + %w449 = %w53 ** 7 + %w450 = %w54 ** 7 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w391 + %w44 = %w44 + %w392 + %w45 = %w45 + %w393 + %w46 = %w46 + %w394 + %w47 = %w47 + %w395 + %w48 = %w48 + %w396 + %w49 = %w49 + %w397 + %w50 = %w50 + %w398 + %w51 = %w51 + %w399 + %w52 = %w52 + %w400 + %w53 = %w53 + %w401 + %w54 = %w54 + %w402 + %w439 = %w43 ** 7 + %w440 = %w44 ** 7 + %w441 = %w45 ** 7 + %w442 = %w46 ** 7 + %w443 = %w47 ** 7 + %w444 = %w48 ** 7 + %w445 = %w49 ** 7 + %w446 = %w50 ** 7 + %w447 = %w51 ** 7 + %w448 = %w52 ** 7 + %w449 = %w53 ** 7 + %w450 = %w54 ** 7 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w403 + %w44 = %w44 + %w404 + %w45 = %w45 + %w405 + %w46 = %w46 + %w406 + %w47 = %w47 + %w407 + %w48 = %w48 + %w408 + %w49 = %w49 + %w409 + %w50 = %w50 + %w410 + %w51 = %w51 + %w411 + %w52 = %w52 + %w412 + %w53 = %w53 + %w413 + %w54 = %w54 + %w414 + %w439 = %w43 ** 7 + %w440 = %w44 ** 7 + %w441 = %w45 ** 7 + %w442 = %w46 ** 7 + %w443 = %w47 ** 7 + %w444 = %w48 ** 7 + %w445 = %w49 ** 7 + %w446 = %w50 ** 7 + %w447 = %w51 ** 7 + %w448 = %w52 ** 7 + %w449 = %w53 ** 7 + %w450 = %w54 ** 7 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + field %w451 = %w43 + field %w452 = %w44 + field %w453 = %w45 + field %w454 = %w46 + field %w455 = %w47 + field %w456 = %w48 + field %w457 = %w49 + field %w458 = %w50 + field %w459 = %w51 + field %w460 = %w52 + field %w461 = %w53 + field %w462 = %w54 + field %w463 = %w451 + field %w464 = %w452 + field %w465 = %w461 + field %w466 = %w462 + field %w467 = %w453 + field %w468 = %w454 + field %w469 = %w455 + field %w470 = %w456 + field %w471 = %w457 + field %w472 = %w458 + field %w473 = %w459 + field %w474 = %w460 + field %w475 = %w463 + field %w476 = %w464 + field %w477 = %w465 + field %w478 = %w466 + field %w479 = %w467 + field %w480 = %w468 + field %w481 = %w469 + field %w482 = %w470 + field %w483 = %w471 + field %w484 = %w472 + field %w485 = %w473 + field %w486 = %w474 + field %w487 = %w475 + field %w488 = %w476 + field %w489 = %w477 + field %w490 = %w478 + field %w491 = %w479 + field %w492 = %w480 + field %w493 = %w481 + field %w494 = %w482 + field %w495 = %w483 + field %w496 = %w484 + field %w497 = %w485 + field %w498 = %w486 + %w29 = %w29 + %w487 + %w488 + %w491 + %w492 + %w493 + %w494 + %w495 + %w496 + %w497 + %w498 + %w489 + %w490 + %w30 = %w30 + 1 + assert %o7 == %w29 + assert %o8 == %w30 + assert %o9 == %w17 + assert %o10 == %w18 + assert %o11 == %w19 + assert %o12 == %w20 + assert %o13 == %w21 + assert %o14 == %w22 + assert %o15 == %w23 + assert %o16 == %w24 + assert %o17 == %w25 + assert %o18 == %w26 + assert %o19 == %w27 + assert %o20 == %w28 + assert %o1(BN) == %w30 != 1000000 ? 1 : 2 +Transition: + %w30 != 1000000 ? -> 1 : -> 2 + +Block 2: +Func: main, Scope: 1 +Exec Bound: 1000000, While Loop: false +RO Ops: 0, VM Ops: 0 +Num Cons: 4 +Inputs: + %i1(BN): field + %i7: field +Outputs: + %o1(BN): field + %o2(RET): field +Instructions: + assert %i1(BN) == 2 + field %w29 = %i7 + field %w499 = %w29 + assert %o2(RET) == %w499 + assert %o1(BN) == 3 +Program terminates. + + +-- +Circ IR: +Optimizing IR... +done. +INPUT: [0, 0] + + +-- +Optimization: + + +-- +Post-Processing: +Entry block: 0 + +Block 0: +Func: main, Scope: 0 +Exec Bound: 1, While Loop: false +RO Ops: 0, VM Ops: 0 +Num Cons: 33 +Inputs: + %i1(BN): field +Outputs: + %o1(BN): field + %o7: field + %o8: u32 + %o9: field + %o10: field + %o11: field + %o12: field + %o13: field + %o14: field + %o15: field + %o16: field + %o17: field + %o18: field + %o19: field + %o20: field +Instructions: + assert %i1(BN) == 0 + field %w5 = 1 + field %w6 = 2 + field %w7 = 3 + field %w8 = 4 + field %w9 = 5 + field %w10 = 6 + field %w11 = 7 + field %w12 = 8 + field %w13 = 0 + field %w14 = 0 + field %w15 = 0 + field %w16 = 0 + field %w17 = %w5 + field %w18 = %w6 + field %w19 = %w15 + field %w20 = %w16 + field %w21 = %w7 + field %w22 = %w8 + field %w23 = %w9 + field %w24 = %w10 + field %w25 = %w11 + field %w26 = %w12 + field %w27 = %w13 + field %w28 = %w14 + field %w29 = 0 + u32 %w30 = 0 + field %o7 = %w29 + u32 %o8 = %w30 + field %o9 = %w17 + field %o10 = %w18 + field %o11 = %w19 + field %o12 = %w20 + field %o13 = %w21 + field %o14 = %w22 + field %o15 = %w23 + field %o16 = %w24 + field %o17 = %w25 + field %o18 = %w26 + field %o19 = %w27 + field %o20 = %w28 + field %o1(BN) = %w30 != 1000000 ? 1 : 2 +Transition: + %w30 != 1000000 ? -> 1 : -> 2 + +Block 1: +Func: main, Scope: 2 +Exec Bound: 1000000, While Loop: false +RO Ops: 0, VM Ops: 0 +Num Cons: 607 +Inputs: + %i1(BN): field + %i7: field + %i8: u32 + %i9: field + %i10: field + %i11: field + %i12: field + %i13: field + %i14: field + %i15: field + %i16: field + %i17: field + %i18: field + %i19: field + %i20: field +Outputs: + %o1(BN): field + %o7: field + %o8: u32 + %o9: field + %o10: field + %o11: field + %o12: field + %o13: field + %o14: field + %o15: field + %o16: field + %o17: field + %o18: field + %o19: field + %o20: field +Instructions: + assert %i1(BN) == 1 + field %w29 = %i7 + u32 %w30 = %i8 + field %w17 = %i9 + field %w18 = %i10 + field %w19 = %i11 + field %w20 = %i12 + field %w21 = %i13 + field %w22 = %i14 + field %w23 = %i15 + field %w24 = %i16 + field %w25 = %i17 + field %w26 = %i18 + field %w27 = %i19 + field %w28 = %i20 + field %w31 = %w17 + field %w32 = %w18 + field %w33 = %w19 + field %w34 = %w20 + field %w35 = %w21 + field %w36 = %w22 + field %w37 = %w23 + field %w38 = %w24 + field %w39 = %w25 + field %w40 = %w26 + field %w41 = %w27 + field %w42 = %w28 + field %w43 = %w31 + field %w44 = %w32 + field %w45 = %w35 + field %w46 = %w36 + field %w47 = %w37 + field %w48 = %w38 + field %w49 = %w39 + field %w50 = %w40 + field %w51 = %w41 + field %w52 = %w42 + field %w53 = %w33 + field %w54 = %w34 + field %w55 = 13080132714287612933 + field %w56 = 8594738767457295063 + field %w57 = 12896916465481390516 + field %w58 = 1109962092811921367 + field %w59 = 16216730422861946898 + field %w60 = 10137062673499593713 + field %w61 = 15292064466732465823 + field %w62 = 17255573294985989181 + field %w63 = 14827154241873003558 + field %w64 = 2846171647972703231 + field %w65 = 16246264663680317601 + field %w66 = 14214208087951879286 + field %w67 = 9667108687426275457 + field %w68 = 6470857420712283733 + field %w69 = 14103331940138337652 + field %w70 = 11854816473550292865 + field %w71 = 3498097497301325516 + field %w72 = 7947235692523864220 + field %w73 = 11110078701231901946 + field %w74 = 16384314112672821048 + field %w75 = 15404405912655775739 + field %w76 = 14077880830714445579 + field %w77 = 9555554662709218279 + field %w78 = 13859595358210603949 + field %w79 = 16859897325061800066 + field %w80 = 17685474420222222349 + field %w81 = 17858764734618734949 + field %w82 = 9410011022665866671 + field %w83 = 12495243629579414666 + field %w84 = 12416945298171515742 + field %w85 = 5776666812364270983 + field %w86 = 6314421662864060481 + field %w87 = 7402742471423223171 + field %w88 = 982536713192432718 + field %w89 = 17321168865775127905 + field %w90 = 2934354895005980211 + field %w91 = 10567510598607410195 + field %w92 = 8135543733717919110 + field %w93 = 116353493081713692 + field %w94 = 8029688163494945618 + field %w95 = 9003846637224807585 + field %w96 = 7052445132467233849 + field %w97 = 9645665432288852853 + field %w98 = 5446430061030868787 + field %w99 = 16770910634346036823 + field %w100 = 17708360571433944729 + field %w101 = 4661556288322237631 + field %w102 = 11977051899316327985 + field %w103 = 4378616569090929672 + field %w104 = 3334807502817538491 + field %w105 = 8019184735943344966 + field %w106 = 2395043908812246395 + field %w107 = 6558421058331732611 + field %w108 = 11735894060727326369 + field %w109 = 8143540538889204488 + field %w110 = 5991753489563751169 + field %w111 = 12235918791502088007 + field %w112 = 2880312033702687139 + field %w113 = 18224748115308382355 + field %w114 = 18070411013125314165 + field %w115 = 8156487614120951180 + field %w116 = 10615269510047010719 + field %w117 = 12489426404754222075 + field %w118 = 5055279340069995710 + field %w119 = 7231927319780248664 + field %w120 = 2602078848106763799 + field %w121 = 12445944369334781425 + field %w122 = 3978905923892496205 + field %w123 = 16711272944329818038 + field %w124 = 10439032361227108922 + field %w125 = 15110119871725214866 + field %w126 = 821141790655890946 + field %w127 = 11073536380651186235 + field %w128 = 4866839313097607757 + field %w129 = 13118391689513956636 + field %w130 = 14527674973762312380 + field %w131 = 7612751959265567999 + field %w132 = 6808090907814178161 + field %w133 = 6899703779492644997 + field %w134 = 3664666286336986826 + field %w135 = 783179505424462608 + field %w136 = 8990689241814097697 + field %w137 = 9646603555412825679 + field %w138 = 7351246026167205041 + field %w139 = 16970959813722173256 + field %w140 = 15735726858241466429 + field %w141 = 10347018221892268419 + field %w142 = 12195545878449322889 + field %w143 = 7423314197114049891 + field %w144 = 14908016116973904153 + field %w145 = 5840340122527363265 + field %w146 = 17740311462440614128 + field %w147 = 815306421953744623 + field %w148 = 17456357368219253949 + field %w149 = 6982651076559329072 + field %w150 = 11970987324614963868 + field %w151 = 8167785008538063246 + field %w152 = 9483259819397403968 + field %w153 = 954550221664291548 + field %w154 = 10339565171024313256 + field %w155 = 8651171084286500102 + field %w156 = 16974445528003515956 + field %w157 = 15104530047940621190 + field %w158 = 103271880867179718 + field %w159 = 14654666245504492663 + field %w160 = 12445769555936887967 + field %w161 = 11250582358051997490 + field %w162 = 6730977207490590241 + field %w163 = 15919951556166196935 + field %w164 = 4423540216573360915 + field %w165 = 16317664700341473511 + field %w166 = 4723997214951767765 + field %w167 = 10098756619006575500 + field %w168 = 3223149401237667964 + field %w169 = 6870494874300767682 + field %w170 = 2902095711130291898 + field %w171 = 7159372652788439733 + field %w172 = 11500508372997952671 + field %w173 = 13348148181479462670 + field %w174 = 12729401155983882093 + field %w175 = 15021242795466053388 + field %w176 = 3802990509227527157 + field %w177 = 4665459515680145682 + field %w178 = 13165553315407675603 + field %w179 = 6496364397926233172 + field %w180 = 12800832566287577810 + field %w181 = 9737592377590267426 + field %w182 = 8687131091302514939 + field %w183 = 1488200421755445892 + field %w184 = 11004377668730991641 + field %w185 = 13516338734600228410 + field %w186 = 2953581820660217936 + field %w187 = 3505040783153922951 + field %w188 = 3710332827435113697 + field %w189 = 15414874040873320221 + field %w190 = 8602547649919482301 + field %w191 = 13971349938398812007 + field %w192 = 187239246702636066 + field %w193 = 12886019973971254144 + field %w194 = 4512274763990493707 + field %w195 = 2986635507805503192 + field %w196 = 2315252455709119454 + field %w197 = 12537995864054210246 + field %w198 = 2039491936479859267 + field %w199 = 1558644089185031256 + field %w200 = 4074089203264759305 + field %w201 = 2522268501749395707 + field %w202 = 3414760436185256196 + field %w203 = 17420887529146466921 + field %w204 = 2817020417938125001 + field %w205 = 16538346563888261485 + field %w206 = 5592270336833998770 + field %w207 = 16876602064684906232 + field %w208 = 1793025614521516343 + field %w209 = 2178510518148748532 + field %w210 = 2726440714374752509 + field %w211 = 6502946837278398021 + field %w212 = 15816362857667988792 + field %w213 = 12997958454165692924 + field %w214 = 5314892854495903792 + field %w215 = 15533907063555687782 + field %w216 = 12312015675698548715 + field %w217 = 14140016464013350248 + field %w218 = 16325589062962838690 + field %w219 = 6796145646370327654 + field %w220 = 1168753512742361735 + field %w221 = 4100789820704709368 + field %w222 = 15947554381540469177 + field %w223 = 8597377839806076919 + field %w224 = 9704018824195918000 + field %w225 = 12763288618765762688 + field %w226 = 17249257732622847695 + field %w227 = 1998710993415069759 + field %w228 = 923759906393011543 + field %w229 = 1271051229666811593 + field %w230 = 17822362132088738077 + field %w231 = 11797234543722669271 + field %w232 = 5864538787265942447 + field %w233 = 15975583211110506970 + field %w234 = 7258516085733671960 + field %w235 = 17999926471875633100 + field %w236 = 635992114476018166 + field %w237 = 17205047318256576347 + field %w238 = 17384900867876315312 + field %w239 = 16484825562915784226 + field %w240 = 16694130609036138894 + field %w241 = 10575069350371260875 + field %w242 = 8330575162062887277 + field %w243 = 6212375704691932880 + field %w244 = 15965138197626618226 + field %w245 = 14285453069600046939 + field %w246 = 10005163510208402517 + field %w247 = 885298637936952595 + field %w248 = 541790758138118921 + field %w249 = 5985203084790372993 + field %w250 = 4685030219775483721 + field %w251 = 1411106851304815020 + field %w252 = 11290732479954096478 + field %w253 = 208280581124868513 + field %w254 = 10979018648467968495 + field %w255 = 8600643745023338215 + field %w256 = 3477453626867126061 + field %w257 = 6428436309340258604 + field %w258 = 5695415667275657934 + field %w259 = 15952065508715623490 + field %w260 = 15571300830419767248 + field %w261 = 17259785660502616862 + field %w262 = 4298425495274316083 + field %w263 = 9023601070579319352 + field %w264 = 7353589709321807492 + field %w265 = 2988848909076209475 + field %w266 = 10439527789422046135 + field %w267 = 6097734044161429459 + field %w268 = 1113429873817861476 + field %w269 = 1639063372386966591 + field %w270 = 7863102812716788759 + field %w271 = 216040220732135364 + field %w272 = 14252611488623712688 + field %w273 = 9543395466794536974 + field %w274 = 2714461051639810934 + field %w275 = 2588317208781407279 + field %w276 = 15458529123534594916 + field %w277 = 15748417817551040856 + field %w278 = 16414455697114422951 + field %w279 = 13378164466674639511 + field %w280 = 13894319928411294675 + field %w281 = 5032680892090751540 + field %w282 = 17201338494743078916 + field %w283 = 4397422800601932505 + field %w284 = 11285062031581972327 + field %w285 = 7309354640676468207 + field %w286 = 10457152817239331848 + field %w287 = 8855911538863247046 + field %w288 = 4301853449821814398 + field %w289 = 13001502396339103326 + field %w290 = 10218424535115580246 + field %w291 = 8628244713920681895 + field %w292 = 17410423622514037261 + field %w293 = 14080683768439215375 + field %w294 = 11453161143447188100 + field %w295 = 16761509772042181939 + field %w296 = 6688821660695954082 + field %w297 = 12083434295263160416 + field %w298 = 8540021431714616589 + field %w299 = 6891616215679974226 + field %w300 = 10229217098454812721 + field %w301 = 3292165387203778711 + field %w302 = 6090113424998243490 + field %w303 = 13431780521962358660 + field %w304 = 6061081364215809883 + field %w305 = 16792066504222214142 + field %w306 = 16134314044798124799 + field %w307 = 17070233710126619765 + field %w308 = 6915716851370550800 + field %w309 = 9505009849073026581 + field %w310 = 6422700465081897153 + field %w311 = 17977653991560529185 + field %w312 = 5800870252836247255 + field %w313 = 12096124733159345520 + field %w314 = 7679273623392321940 + field %w315 = 17835783910585744964 + field %w316 = 2478664878205754377 + field %w317 = 1720314468413114967 + field %w318 = 10376757819003248056 + field %w319 = 10376377187857634245 + field %w320 = 13344930747504284997 + field %w321 = 11579281865160153596 + field %w322 = 10300256980048736962 + field %w323 = 378765236515040565 + field %w324 = 11412420941557253424 + field %w325 = 12931662470734252786 + field %w326 = 43018908376346374 + field %w327 = 3589810689190160071 + field %w328 = 4688229274750659741 + field %w329 = 13688957436484306091 + field %w330 = 11424740943016984272 + field %w331 = 16001900718237913960 + field %w332 = 5548469743008097574 + field %w333 = 14584404916672178680 + field %w334 = 3396622135873576824 + field %w335 = 7861729246871155992 + field %w336 = 16112271126908045545 + field %w337 = 16988163966860016012 + field %w338 = 273641680619529493 + field %w339 = 15222677154027327363 + field %w340 = 4070328078309830604 + field %w341 = 13520458500363296391 + field %w342 = 8235111705801363015 + field %w343 = 5575990058472514138 + field %w344 = 2751301609188252989 + field %w345 = 6478598528223547074 + field %w346 = 386565553848556638 + field %w347 = 9417729078939938713 + field %w348 = 15204315939835727483 + field %w349 = 14942015033780606261 + field %w350 = 18369423901636582012 + field %w351 = 4715338437538604447 + field %w352 = 6840590980607806319 + field %w353 = 5535471161490539014 + field %w354 = 5341328005359029952 + field %w355 = 1475161295215894444 + field %w356 = 7999197814297036636 + field %w357 = 2984233088665867938 + field %w358 = 3097746028144832229 + field %w359 = 8849530863480031517 + field %w360 = 7464920943249009773 + field %w361 = 3802996844641460514 + field %w362 = 6284458522545927646 + field %w363 = 2307388003445002779 + field %w364 = 4461479354745457623 + field %w365 = 1649739722664588460 + field %w366 = 3008391274160432867 + field %w367 = 5142217010456550622 + field %w368 = 1775580461722730120 + field %w369 = 161694268822794344 + field %w370 = 1518963253808031703 + field %w371 = 16475258091652710137 + field %w372 = 119575899007375159 + field %w373 = 1275863735937973999 + field %w374 = 16539412514520642374 + field %w375 = 2303365191438051950 + field %w376 = 6435126839960916075 + field %w377 = 17794599201026020053 + field %w378 = 13847097589277840330 + field %w379 = 16645869274577729720 + field %w380 = 8039205965509554440 + field %w381 = 4788586935019371140 + field %w382 = 15129007200040077746 + field %w383 = 2055561615223771341 + field %w384 = 4149731103701412892 + field %w385 = 10268130195734144189 + field %w386 = 13406631635880074708 + field %w387 = 11429218277824986203 + field %w388 = 15773968030812198565 + field %w389 = 16050275277550506872 + field %w390 = 11858586752031736643 + field %w391 = 8927746344866569756 + field %w392 = 11802068403177695792 + field %w393 = 157833420806751556 + field %w394 = 4698875910749767878 + field %w395 = 1616722774788291698 + field %w396 = 3990951895163748090 + field %w397 = 16758609224720795472 + field %w398 = 3045571693290741477 + field %w399 = 9281634245289836419 + field %w400 = 13517688176723875370 + field %w401 = 7961395585333219380 + field %w402 = 1606574359105691080 + field %w403 = 17564372683613562171 + field %w404 = 4664015225343144418 + field %w405 = 6133721340680280128 + field %w406 = 2667022304383014929 + field %w407 = 12316557761857340230 + field %w408 = 10375614850625292317 + field %w409 = 8141542666379135068 + field %w410 = 9185476451083834432 + field %w411 = 4991072365274649547 + field %w412 = 17398204971778820365 + field %w413 = 16127888338958422584 + field %w414 = 13586792051317758204 + field %w415 = 17 + field %w416 = 15 + field %w417 = 41 + field %w418 = 16 + field %w419 = 2 + field %w420 = 28 + field %w421 = 13 + field %w422 = 13 + field %w423 = 39 + field %w424 = 18 + field %w425 = 34 + field %w426 = 20 + field %w427 = 8 + field %w428 = 0 + field %w429 = 0 + field %w430 = 0 + field %w431 = 0 + field %w432 = 0 + field %w433 = 0 + field %w434 = 0 + field %w435 = 0 + field %w436 = 0 + field %w437 = 0 + field %w438 = 0 + %w43 = %w43 + %w55 + %w44 = %w44 + %w56 + %w45 = %w45 + %w57 + %w46 = %w46 + %w58 + %w47 = %w47 + %w59 + %w48 = %w48 + %w60 + %w49 = %w49 + %w61 + %w50 = %w50 + %w62 + %w51 = %w51 + %w63 + %w52 = %w52 + %w64 + %w53 = %w53 + %w65 + %w54 = %w54 + %w66 + field %w439 = %w43 ** 7 + field %w440 = %w44 ** 7 + field %w441 = %w45 ** 7 + field %w442 = %w46 ** 7 + field %w443 = %w47 ** 7 + field %w444 = %w48 ** 7 + field %w445 = %w49 ** 7 + field %w446 = %w50 ** 7 + field %w447 = %w51 ** 7 + field %w448 = %w52 ** 7 + field %w449 = %w53 ** 7 + field %w450 = %w54 ** 7 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w67 + %w44 = %w44 + %w68 + %w45 = %w45 + %w69 + %w46 = %w46 + %w70 + %w47 = %w47 + %w71 + %w48 = %w48 + %w72 + %w49 = %w49 + %w73 + %w50 = %w50 + %w74 + %w51 = %w51 + %w75 + %w52 = %w52 + %w76 + %w53 = %w53 + %w77 + %w54 = %w54 + %w78 + %w439 = %w43 ** 7 + %w440 = %w44 ** 7 + %w441 = %w45 ** 7 + %w442 = %w46 ** 7 + %w443 = %w47 ** 7 + %w444 = %w48 ** 7 + %w445 = %w49 ** 7 + %w446 = %w50 ** 7 + %w447 = %w51 ** 7 + %w448 = %w52 ** 7 + %w449 = %w53 ** 7 + %w450 = %w54 ** 7 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w79 + %w44 = %w44 + %w80 + %w45 = %w45 + %w81 + %w46 = %w46 + %w82 + %w47 = %w47 + %w83 + %w48 = %w48 + %w84 + %w49 = %w49 + %w85 + %w50 = %w50 + %w86 + %w51 = %w51 + %w87 + %w52 = %w52 + %w88 + %w53 = %w53 + %w89 + %w54 = %w54 + %w90 + %w439 = %w43 ** 7 + %w440 = %w44 ** 7 + %w441 = %w45 ** 7 + %w442 = %w46 ** 7 + %w443 = %w47 ** 7 + %w444 = %w48 ** 7 + %w445 = %w49 ** 7 + %w446 = %w50 ** 7 + %w447 = %w51 ** 7 + %w448 = %w52 ** 7 + %w449 = %w53 ** 7 + %w450 = %w54 ** 7 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w91 + %w44 = %w44 + %w92 + %w45 = %w45 + %w93 + %w46 = %w46 + %w94 + %w47 = %w47 + %w95 + %w48 = %w48 + %w96 + %w49 = %w49 + %w97 + %w50 = %w50 + %w98 + %w51 = %w51 + %w99 + %w52 = %w52 + %w100 + %w53 = %w53 + %w101 + %w54 = %w54 + %w102 + %w439 = %w43 ** 7 + %w440 = %w44 ** 7 + %w441 = %w45 ** 7 + %w442 = %w46 ** 7 + %w443 = %w47 ** 7 + %w444 = %w48 ** 7 + %w445 = %w49 ** 7 + %w446 = %w50 ** 7 + %w447 = %w51 ** 7 + %w448 = %w52 ** 7 + %w449 = %w53 ** 7 + %w450 = %w54 ** 7 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w103 + %w44 = %w44 + %w104 + %w45 = %w45 + %w105 + %w46 = %w46 + %w106 + %w47 = %w47 + %w107 + %w48 = %w48 + %w108 + %w49 = %w49 + %w109 + %w50 = %w50 + %w110 + %w51 = %w51 + %w111 + %w52 = %w52 + %w112 + %w53 = %w53 + %w113 + %w54 = %w54 + %w114 + %w439 = %w43 ** 7 + %w440 = %w44 + %w441 = %w45 + %w442 = %w46 + %w443 = %w47 + %w444 = %w48 + %w445 = %w49 + %w446 = %w50 + %w447 = %w51 + %w448 = %w52 + %w449 = %w53 + %w450 = %w54 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w115 + %w44 = %w44 + %w116 + %w45 = %w45 + %w117 + %w46 = %w46 + %w118 + %w47 = %w47 + %w119 + %w48 = %w48 + %w120 + %w49 = %w49 + %w121 + %w50 = %w50 + %w122 + %w51 = %w51 + %w123 + %w52 = %w52 + %w124 + %w53 = %w53 + %w125 + %w54 = %w54 + %w126 + %w439 = %w43 ** 7 + %w440 = %w44 + %w441 = %w45 + %w442 = %w46 + %w443 = %w47 + %w444 = %w48 + %w445 = %w49 + %w446 = %w50 + %w447 = %w51 + %w448 = %w52 + %w449 = %w53 + %w450 = %w54 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w127 + %w44 = %w44 + %w128 + %w45 = %w45 + %w129 + %w46 = %w46 + %w130 + %w47 = %w47 + %w131 + %w48 = %w48 + %w132 + %w49 = %w49 + %w133 + %w50 = %w50 + %w134 + %w51 = %w51 + %w135 + %w52 = %w52 + %w136 + %w53 = %w53 + %w137 + %w54 = %w54 + %w138 + %w439 = %w43 ** 7 + %w440 = %w44 + %w441 = %w45 + %w442 = %w46 + %w443 = %w47 + %w444 = %w48 + %w445 = %w49 + %w446 = %w50 + %w447 = %w51 + %w448 = %w52 + %w449 = %w53 + %w450 = %w54 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w139 + %w44 = %w44 + %w140 + %w45 = %w45 + %w141 + %w46 = %w46 + %w142 + %w47 = %w47 + %w143 + %w48 = %w48 + %w144 + %w49 = %w49 + %w145 + %w50 = %w50 + %w146 + %w51 = %w51 + %w147 + %w52 = %w52 + %w148 + %w53 = %w53 + %w149 + %w54 = %w54 + %w150 + %w439 = %w43 ** 7 + %w440 = %w44 + %w441 = %w45 + %w442 = %w46 + %w443 = %w47 + %w444 = %w48 + %w445 = %w49 + %w446 = %w50 + %w447 = %w51 + %w448 = %w52 + %w449 = %w53 + %w450 = %w54 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w151 + %w44 = %w44 + %w152 + %w45 = %w45 + %w153 + %w46 = %w46 + %w154 + %w47 = %w47 + %w155 + %w48 = %w48 + %w156 + %w49 = %w49 + %w157 + %w50 = %w50 + %w158 + %w51 = %w51 + %w159 + %w52 = %w52 + %w160 + %w53 = %w53 + %w161 + %w54 = %w54 + %w162 + %w439 = %w43 ** 7 + %w440 = %w44 + %w441 = %w45 + %w442 = %w46 + %w443 = %w47 + %w444 = %w48 + %w445 = %w49 + %w446 = %w50 + %w447 = %w51 + %w448 = %w52 + %w449 = %w53 + %w450 = %w54 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w163 + %w44 = %w44 + %w164 + %w45 = %w45 + %w165 + %w46 = %w46 + %w166 + %w47 = %w47 + %w167 + %w48 = %w48 + %w168 + %w49 = %w49 + %w169 + %w50 = %w50 + %w170 + %w51 = %w51 + %w171 + %w52 = %w52 + %w172 + %w53 = %w53 + %w173 + %w54 = %w54 + %w174 + %w439 = %w43 ** 7 + %w440 = %w44 + %w441 = %w45 + %w442 = %w46 + %w443 = %w47 + %w444 = %w48 + %w445 = %w49 + %w446 = %w50 + %w447 = %w51 + %w448 = %w52 + %w449 = %w53 + %w450 = %w54 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w175 + %w44 = %w44 + %w176 + %w45 = %w45 + %w177 + %w46 = %w46 + %w178 + %w47 = %w47 + %w179 + %w48 = %w48 + %w180 + %w49 = %w49 + %w181 + %w50 = %w50 + %w182 + %w51 = %w51 + %w183 + %w52 = %w52 + %w184 + %w53 = %w53 + %w185 + %w54 = %w54 + %w186 + %w439 = %w43 ** 7 + %w440 = %w44 + %w441 = %w45 + %w442 = %w46 + %w443 = %w47 + %w444 = %w48 + %w445 = %w49 + %w446 = %w50 + %w447 = %w51 + %w448 = %w52 + %w449 = %w53 + %w450 = %w54 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w187 + %w44 = %w44 + %w188 + %w45 = %w45 + %w189 + %w46 = %w46 + %w190 + %w47 = %w47 + %w191 + %w48 = %w48 + %w192 + %w49 = %w49 + %w193 + %w50 = %w50 + %w194 + %w51 = %w51 + %w195 + %w52 = %w52 + %w196 + %w53 = %w53 + %w197 + %w54 = %w54 + %w198 + %w439 = %w43 ** 7 + %w440 = %w44 + %w441 = %w45 + %w442 = %w46 + %w443 = %w47 + %w444 = %w48 + %w445 = %w49 + %w446 = %w50 + %w447 = %w51 + %w448 = %w52 + %w449 = %w53 + %w450 = %w54 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w199 + %w44 = %w44 + %w200 + %w45 = %w45 + %w201 + %w46 = %w46 + %w202 + %w47 = %w47 + %w203 + %w48 = %w48 + %w204 + %w49 = %w49 + %w205 + %w50 = %w50 + %w206 + %w51 = %w51 + %w207 + %w52 = %w52 + %w208 + %w53 = %w53 + %w209 + %w54 = %w54 + %w210 + %w439 = %w43 ** 7 + %w440 = %w44 + %w441 = %w45 + %w442 = %w46 + %w443 = %w47 + %w444 = %w48 + %w445 = %w49 + %w446 = %w50 + %w447 = %w51 + %w448 = %w52 + %w449 = %w53 + %w450 = %w54 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w211 + %w44 = %w44 + %w212 + %w45 = %w45 + %w213 + %w46 = %w46 + %w214 + %w47 = %w47 + %w215 + %w48 = %w48 + %w216 + %w49 = %w49 + %w217 + %w50 = %w50 + %w218 + %w51 = %w51 + %w219 + %w52 = %w52 + %w220 + %w53 = %w53 + %w221 + %w54 = %w54 + %w222 + %w439 = %w43 ** 7 + %w440 = %w44 + %w441 = %w45 + %w442 = %w46 + %w443 = %w47 + %w444 = %w48 + %w445 = %w49 + %w446 = %w50 + %w447 = %w51 + %w448 = %w52 + %w449 = %w53 + %w450 = %w54 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w223 + %w44 = %w44 + %w224 + %w45 = %w45 + %w225 + %w46 = %w46 + %w226 + %w47 = %w47 + %w227 + %w48 = %w48 + %w228 + %w49 = %w49 + %w229 + %w50 = %w50 + %w230 + %w51 = %w51 + %w231 + %w52 = %w52 + %w232 + %w53 = %w53 + %w233 + %w54 = %w54 + %w234 + %w439 = %w43 ** 7 + %w440 = %w44 + %w441 = %w45 + %w442 = %w46 + %w443 = %w47 + %w444 = %w48 + %w445 = %w49 + %w446 = %w50 + %w447 = %w51 + %w448 = %w52 + %w449 = %w53 + %w450 = %w54 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w235 + %w44 = %w44 + %w236 + %w45 = %w45 + %w237 + %w46 = %w46 + %w238 + %w47 = %w47 + %w239 + %w48 = %w48 + %w240 + %w49 = %w49 + %w241 + %w50 = %w50 + %w242 + %w51 = %w51 + %w243 + %w52 = %w52 + %w244 + %w53 = %w53 + %w245 + %w54 = %w54 + %w246 + %w439 = %w43 ** 7 + %w440 = %w44 + %w441 = %w45 + %w442 = %w46 + %w443 = %w47 + %w444 = %w48 + %w445 = %w49 + %w446 = %w50 + %w447 = %w51 + %w448 = %w52 + %w449 = %w53 + %w450 = %w54 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w247 + %w44 = %w44 + %w248 + %w45 = %w45 + %w249 + %w46 = %w46 + %w250 + %w47 = %w47 + %w251 + %w48 = %w48 + %w252 + %w49 = %w49 + %w253 + %w50 = %w50 + %w254 + %w51 = %w51 + %w255 + %w52 = %w52 + %w256 + %w53 = %w53 + %w257 + %w54 = %w54 + %w258 + %w439 = %w43 ** 7 + %w440 = %w44 + %w441 = %w45 + %w442 = %w46 + %w443 = %w47 + %w444 = %w48 + %w445 = %w49 + %w446 = %w50 + %w447 = %w51 + %w448 = %w52 + %w449 = %w53 + %w450 = %w54 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w259 + %w44 = %w44 + %w260 + %w45 = %w45 + %w261 + %w46 = %w46 + %w262 + %w47 = %w47 + %w263 + %w48 = %w48 + %w264 + %w49 = %w49 + %w265 + %w50 = %w50 + %w266 + %w51 = %w51 + %w267 + %w52 = %w52 + %w268 + %w53 = %w53 + %w269 + %w54 = %w54 + %w270 + %w439 = %w43 ** 7 + %w440 = %w44 + %w441 = %w45 + %w442 = %w46 + %w443 = %w47 + %w444 = %w48 + %w445 = %w49 + %w446 = %w50 + %w447 = %w51 + %w448 = %w52 + %w449 = %w53 + %w450 = %w54 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w271 + %w44 = %w44 + %w272 + %w45 = %w45 + %w273 + %w46 = %w46 + %w274 + %w47 = %w47 + %w275 + %w48 = %w48 + %w276 + %w49 = %w49 + %w277 + %w50 = %w50 + %w278 + %w51 = %w51 + %w279 + %w52 = %w52 + %w280 + %w53 = %w53 + %w281 + %w54 = %w54 + %w282 + %w439 = %w43 ** 7 + %w440 = %w44 + %w441 = %w45 + %w442 = %w46 + %w443 = %w47 + %w444 = %w48 + %w445 = %w49 + %w446 = %w50 + %w447 = %w51 + %w448 = %w52 + %w449 = %w53 + %w450 = %w54 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w283 + %w44 = %w44 + %w284 + %w45 = %w45 + %w285 + %w46 = %w46 + %w286 + %w47 = %w47 + %w287 + %w48 = %w48 + %w288 + %w49 = %w49 + %w289 + %w50 = %w50 + %w290 + %w51 = %w51 + %w291 + %w52 = %w52 + %w292 + %w53 = %w53 + %w293 + %w54 = %w54 + %w294 + %w439 = %w43 ** 7 + %w440 = %w44 + %w441 = %w45 + %w442 = %w46 + %w443 = %w47 + %w444 = %w48 + %w445 = %w49 + %w446 = %w50 + %w447 = %w51 + %w448 = %w52 + %w449 = %w53 + %w450 = %w54 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w295 + %w44 = %w44 + %w296 + %w45 = %w45 + %w297 + %w46 = %w46 + %w298 + %w47 = %w47 + %w299 + %w48 = %w48 + %w300 + %w49 = %w49 + %w301 + %w50 = %w50 + %w302 + %w51 = %w51 + %w303 + %w52 = %w52 + %w304 + %w53 = %w53 + %w305 + %w54 = %w54 + %w306 + %w439 = %w43 ** 7 + %w440 = %w44 + %w441 = %w45 + %w442 = %w46 + %w443 = %w47 + %w444 = %w48 + %w445 = %w49 + %w446 = %w50 + %w447 = %w51 + %w448 = %w52 + %w449 = %w53 + %w450 = %w54 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w307 + %w44 = %w44 + %w308 + %w45 = %w45 + %w309 + %w46 = %w46 + %w310 + %w47 = %w47 + %w311 + %w48 = %w48 + %w312 + %w49 = %w49 + %w313 + %w50 = %w50 + %w314 + %w51 = %w51 + %w315 + %w52 = %w52 + %w316 + %w53 = %w53 + %w317 + %w54 = %w54 + %w318 + %w439 = %w43 ** 7 + %w440 = %w44 + %w441 = %w45 + %w442 = %w46 + %w443 = %w47 + %w444 = %w48 + %w445 = %w49 + %w446 = %w50 + %w447 = %w51 + %w448 = %w52 + %w449 = %w53 + %w450 = %w54 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w319 + %w44 = %w44 + %w320 + %w45 = %w45 + %w321 + %w46 = %w46 + %w322 + %w47 = %w47 + %w323 + %w48 = %w48 + %w324 + %w49 = %w49 + %w325 + %w50 = %w50 + %w326 + %w51 = %w51 + %w327 + %w52 = %w52 + %w328 + %w53 = %w53 + %w329 + %w54 = %w54 + %w330 + %w439 = %w43 ** 7 + %w440 = %w44 + %w441 = %w45 + %w442 = %w46 + %w443 = %w47 + %w444 = %w48 + %w445 = %w49 + %w446 = %w50 + %w447 = %w51 + %w448 = %w52 + %w449 = %w53 + %w450 = %w54 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w331 + %w44 = %w44 + %w332 + %w45 = %w45 + %w333 + %w46 = %w46 + %w334 + %w47 = %w47 + %w335 + %w48 = %w48 + %w336 + %w49 = %w49 + %w337 + %w50 = %w50 + %w338 + %w51 = %w51 + %w339 + %w52 = %w52 + %w340 + %w53 = %w53 + %w341 + %w54 = %w54 + %w342 + %w439 = %w43 ** 7 + %w440 = %w44 + %w441 = %w45 + %w442 = %w46 + %w443 = %w47 + %w444 = %w48 + %w445 = %w49 + %w446 = %w50 + %w447 = %w51 + %w448 = %w52 + %w449 = %w53 + %w450 = %w54 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w343 + %w44 = %w44 + %w344 + %w45 = %w45 + %w345 + %w46 = %w46 + %w346 + %w47 = %w47 + %w347 + %w48 = %w48 + %w348 + %w49 = %w49 + %w349 + %w50 = %w50 + %w350 + %w51 = %w51 + %w351 + %w52 = %w52 + %w352 + %w53 = %w53 + %w353 + %w54 = %w54 + %w354 + %w439 = %w43 ** 7 + %w440 = %w44 + %w441 = %w45 + %w442 = %w46 + %w443 = %w47 + %w444 = %w48 + %w445 = %w49 + %w446 = %w50 + %w447 = %w51 + %w448 = %w52 + %w449 = %w53 + %w450 = %w54 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w355 + %w44 = %w44 + %w356 + %w45 = %w45 + %w357 + %w46 = %w46 + %w358 + %w47 = %w47 + %w359 + %w48 = %w48 + %w360 + %w49 = %w49 + %w361 + %w50 = %w50 + %w362 + %w51 = %w51 + %w363 + %w52 = %w52 + %w364 + %w53 = %w53 + %w365 + %w54 = %w54 + %w366 + %w439 = %w43 ** 7 + %w440 = %w44 + %w441 = %w45 + %w442 = %w46 + %w443 = %w47 + %w444 = %w48 + %w445 = %w49 + %w446 = %w50 + %w447 = %w51 + %w448 = %w52 + %w449 = %w53 + %w450 = %w54 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w367 + %w44 = %w44 + %w368 + %w45 = %w45 + %w369 + %w46 = %w46 + %w370 + %w47 = %w47 + %w371 + %w48 = %w48 + %w372 + %w49 = %w49 + %w373 + %w50 = %w50 + %w374 + %w51 = %w51 + %w375 + %w52 = %w52 + %w376 + %w53 = %w53 + %w377 + %w54 = %w54 + %w378 + %w439 = %w43 ** 7 + %w440 = %w44 ** 7 + %w441 = %w45 ** 7 + %w442 = %w46 ** 7 + %w443 = %w47 ** 7 + %w444 = %w48 ** 7 + %w445 = %w49 ** 7 + %w446 = %w50 ** 7 + %w447 = %w51 ** 7 + %w448 = %w52 ** 7 + %w449 = %w53 ** 7 + %w450 = %w54 ** 7 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w379 + %w44 = %w44 + %w380 + %w45 = %w45 + %w381 + %w46 = %w46 + %w382 + %w47 = %w47 + %w383 + %w48 = %w48 + %w384 + %w49 = %w49 + %w385 + %w50 = %w50 + %w386 + %w51 = %w51 + %w387 + %w52 = %w52 + %w388 + %w53 = %w53 + %w389 + %w54 = %w54 + %w390 + %w439 = %w43 ** 7 + %w440 = %w44 ** 7 + %w441 = %w45 ** 7 + %w442 = %w46 ** 7 + %w443 = %w47 ** 7 + %w444 = %w48 ** 7 + %w445 = %w49 ** 7 + %w446 = %w50 ** 7 + %w447 = %w51 ** 7 + %w448 = %w52 ** 7 + %w449 = %w53 ** 7 + %w450 = %w54 ** 7 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w391 + %w44 = %w44 + %w392 + %w45 = %w45 + %w393 + %w46 = %w46 + %w394 + %w47 = %w47 + %w395 + %w48 = %w48 + %w396 + %w49 = %w49 + %w397 + %w50 = %w50 + %w398 + %w51 = %w51 + %w399 + %w52 = %w52 + %w400 + %w53 = %w53 + %w401 + %w54 = %w54 + %w402 + %w439 = %w43 ** 7 + %w440 = %w44 ** 7 + %w441 = %w45 ** 7 + %w442 = %w46 ** 7 + %w443 = %w47 ** 7 + %w444 = %w48 ** 7 + %w445 = %w49 ** 7 + %w446 = %w50 ** 7 + %w447 = %w51 ** 7 + %w448 = %w52 ** 7 + %w449 = %w53 ** 7 + %w450 = %w54 ** 7 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + %w43 = %w43 + %w403 + %w44 = %w44 + %w404 + %w45 = %w45 + %w405 + %w46 = %w46 + %w406 + %w47 = %w47 + %w407 + %w48 = %w48 + %w408 + %w49 = %w49 + %w409 + %w50 = %w50 + %w410 + %w51 = %w51 + %w411 + %w52 = %w52 + %w412 + %w53 = %w53 + %w413 + %w54 = %w54 + %w414 + %w439 = %w43 ** 7 + %w440 = %w44 ** 7 + %w441 = %w45 ** 7 + %w442 = %w46 ** 7 + %w443 = %w47 ** 7 + %w444 = %w48 ** 7 + %w445 = %w49 ** 7 + %w446 = %w50 ** 7 + %w447 = %w51 ** 7 + %w448 = %w52 ** 7 + %w449 = %w53 ** 7 + %w450 = %w54 ** 7 + %w43 = %w439 * %w427 + %w439 * %w415 + %w440 * %w416 + %w441 * %w417 + %w442 * %w418 + %w443 * %w419 + %w444 * %w420 + %w445 * %w421 + %w446 * %w422 + %w447 * %w423 + %w448 * %w424 + %w449 * %w425 + %w450 * %w426 + %w44 = %w440 * %w428 + %w440 * %w415 + %w441 * %w416 + %w442 * %w417 + %w443 * %w418 + %w444 * %w419 + %w445 * %w420 + %w446 * %w421 + %w447 * %w422 + %w448 * %w423 + %w449 * %w424 + %w450 * %w425 + %w439 * %w426 + %w45 = %w441 * %w429 + %w441 * %w415 + %w442 * %w416 + %w443 * %w417 + %w444 * %w418 + %w445 * %w419 + %w446 * %w420 + %w447 * %w421 + %w448 * %w422 + %w449 * %w423 + %w450 * %w424 + %w439 * %w425 + %w440 * %w426 + %w46 = %w442 * %w430 + %w442 * %w415 + %w443 * %w416 + %w444 * %w417 + %w445 * %w418 + %w446 * %w419 + %w447 * %w420 + %w448 * %w421 + %w449 * %w422 + %w450 * %w423 + %w439 * %w424 + %w440 * %w425 + %w441 * %w426 + %w47 = %w443 * %w431 + %w443 * %w415 + %w444 * %w416 + %w445 * %w417 + %w446 * %w418 + %w447 * %w419 + %w448 * %w420 + %w449 * %w421 + %w450 * %w422 + %w439 * %w423 + %w440 * %w424 + %w441 * %w425 + %w442 * %w426 + %w48 = %w444 * %w432 + %w444 * %w415 + %w445 * %w416 + %w446 * %w417 + %w447 * %w418 + %w448 * %w419 + %w449 * %w420 + %w450 * %w421 + %w439 * %w422 + %w440 * %w423 + %w441 * %w424 + %w442 * %w425 + %w443 * %w426 + %w49 = %w445 * %w433 + %w445 * %w415 + %w446 * %w416 + %w447 * %w417 + %w448 * %w418 + %w449 * %w419 + %w450 * %w420 + %w439 * %w421 + %w440 * %w422 + %w441 * %w423 + %w442 * %w424 + %w443 * %w425 + %w444 * %w426 + %w50 = %w446 * %w434 + %w446 * %w415 + %w447 * %w416 + %w448 * %w417 + %w449 * %w418 + %w450 * %w419 + %w439 * %w420 + %w440 * %w421 + %w441 * %w422 + %w442 * %w423 + %w443 * %w424 + %w444 * %w425 + %w445 * %w426 + %w51 = %w447 * %w435 + %w447 * %w415 + %w448 * %w416 + %w449 * %w417 + %w450 * %w418 + %w439 * %w419 + %w440 * %w420 + %w441 * %w421 + %w442 * %w422 + %w443 * %w423 + %w444 * %w424 + %w445 * %w425 + %w446 * %w426 + %w52 = %w448 * %w436 + %w448 * %w415 + %w449 * %w416 + %w450 * %w417 + %w439 * %w418 + %w440 * %w419 + %w441 * %w420 + %w442 * %w421 + %w443 * %w422 + %w444 * %w423 + %w445 * %w424 + %w446 * %w425 + %w447 * %w426 + %w53 = %w449 * %w437 + %w449 * %w415 + %w450 * %w416 + %w439 * %w417 + %w440 * %w418 + %w441 * %w419 + %w442 * %w420 + %w443 * %w421 + %w444 * %w422 + %w445 * %w423 + %w446 * %w424 + %w447 * %w425 + %w448 * %w426 + %w54 = %w450 * %w438 + %w450 * %w415 + %w439 * %w416 + %w440 * %w417 + %w441 * %w418 + %w442 * %w419 + %w443 * %w420 + %w444 * %w421 + %w445 * %w422 + %w446 * %w423 + %w447 * %w424 + %w448 * %w425 + %w449 * %w426 + field %w451 = %w43 + field %w452 = %w44 + field %w453 = %w45 + field %w454 = %w46 + field %w455 = %w47 + field %w456 = %w48 + field %w457 = %w49 + field %w458 = %w50 + field %w459 = %w51 + field %w460 = %w52 + field %w461 = %w53 + field %w462 = %w54 + field %w463 = %w451 + field %w464 = %w452 + field %w465 = %w461 + field %w466 = %w462 + field %w467 = %w453 + field %w468 = %w454 + field %w469 = %w455 + field %w470 = %w456 + field %w471 = %w457 + field %w472 = %w458 + field %w473 = %w459 + field %w474 = %w460 + field %w475 = %w463 + field %w476 = %w464 + field %w477 = %w465 + field %w478 = %w466 + field %w479 = %w467 + field %w480 = %w468 + field %w481 = %w469 + field %w482 = %w470 + field %w483 = %w471 + field %w484 = %w472 + field %w485 = %w473 + field %w486 = %w474 + field %w487 = %w475 + field %w488 = %w476 + field %w489 = %w477 + field %w490 = %w478 + field %w491 = %w479 + field %w492 = %w480 + field %w493 = %w481 + field %w494 = %w482 + field %w495 = %w483 + field %w496 = %w484 + field %w497 = %w485 + field %w498 = %w486 + %w29 = %w29 + %w487 + %w488 + %w491 + %w492 + %w493 + %w494 + %w495 + %w496 + %w497 + %w498 + %w489 + %w490 + %w30 = %w30 + 1 + field %o7 = %w29 + u32 %o8 = %w30 + field %o9 = %w17 + field %o10 = %w18 + field %o11 = %w19 + field %o12 = %w20 + field %o13 = %w21 + field %o14 = %w22 + field %o15 = %w23 + field %o16 = %w24 + field %o17 = %w25 + field %o18 = %w26 + field %o19 = %w27 + field %o20 = %w28 + field %o1(BN) = %w30 != 1000000 ? 1 : 2 +Transition: + %w30 != 1000000 ? -> 1 : -> 2 + +Block 2: +Func: main, Scope: 1 +Exec Bound: 1000000, While Loop: false +RO Ops: 0, VM Ops: 0 +Num Cons: 4 +Inputs: + %i1(BN): field + %i7: field +Outputs: + %o1(BN): field + %o2(RET): field +Instructions: + assert %i1(BN) == 2 + field %w29 = %i7 + field %w499 = %w29 + field %o2(RET) = %w499 + field %o1(BN) = 3 +Program terminates. + + +-- +Interpretation: diff --git a/circ_blocks/bbb b/circ_blocks/bbb new file mode 100644 index 00000000..b4e497b8 --- /dev/null +++ b/circ_blocks/bbb @@ -0,0 +1,5180 @@ +Options { path: "poseidon_test/poseidon_array", skip_linred: false, circ: CircOpt { r1cs: R1csOpt { verified: false, profile: false, div_by_zero: Incomplete, lc_elim_thresh: 50 }, field: FieldOpt { builtin: Goldilocks, custom_modulus: "" }, ir: IrOpt { field_to_bv: Wrap, frequent_gc: false }, ram: RamOpt { enabled: false, range: Sort, index: Uniqueness, permutation: Msh, rom: Haboeck }, fmt: FmtOpt { use_default_field: true, hide_field: false }, zsharp: ZsharpOpt { isolate_asserts: true }, datalog: DatalogOpt { rec_limit: 5, lint_prim_rec: false }, c: COpt { sv_functions: false, assert_no_ub: false } }, action: Count, quiet: false, no_opt: false } +Generating Compiler Time Data... +Entry block: 0 + +Block 0: +Func: main, Scope: 0 +Exec Bound: 1, While Loop: false +RO Ops: 0, VM Ops: 0 +Num Cons: - +Inputs: +Outputs: +Instructions: + field %BP = 0 + field %TS = 0 +Transition: -> 1 + +Block 1: +Func: main, Scope: 0 +Exec Bound: 1, While Loop: false +RO Ops: 0, VM Ops: 0 +Num Cons: - +Inputs: +Outputs: +Instructions: +Transition: -> 2 + +Block 2: +Func: main, Scope: 0 +Exec Bound: 1, While Loop: false +RO Ops: 0, VM Ops: 12 +Num Cons: - +Inputs: +Outputs: +Instructions: + field[12 ] array^0.main.0.0 + field init^0^0.main.0.0 = 1 + field init^0^1.main.0.0 = 2 + field init^0^2.main.0.0 = 3 + field init^0^3.main.0.0 = 4 + field init^0^4.main.0.0 = 5 + field init^0^5.main.0.0 = 6 + field init^0^6.main.0.0 = 7 + field init^0^7.main.0.0 = 8 + field init^0^8.main.0.0 = 0 + field init^0^9.main.0.0 = 0 + field init^0^10.main.0.0 = 0 + field init^0^11.main.0.0 = 0 + array^0.main.0.0[0 ] = init^0^0.main.0.0 , init + array^0.main.0.0[1 ] = init^0^1.main.0.0 , init + array^0.main.0.0[2 ] = init^0^2.main.0.0 , init + array^0.main.0.0[3 ] = init^0^3.main.0.0 , init + array^0.main.0.0[4 ] = init^0^4.main.0.0 , init + array^0.main.0.0[5 ] = init^0^5.main.0.0 , init + array^0.main.0.0[6 ] = init^0^6.main.0.0 , init + array^0.main.0.0[7 ] = init^0^7.main.0.0 , init + array^0.main.0.0[8 ] = init^0^8.main.0.0 , init + array^0.main.0.0[9 ] = init^0^9.main.0.0 , init + array^0.main.0.0[10 ] = init^0^10.main.0.0 , init + array^0.main.0.0[11 ] = init^0^11.main.0.0 , init + field inputs.main.0.0 = array^0.main.0.0 + field cumulated_hash.main.0.0 = 0 +Transition: -> 3 + +Block 3: +Func: main, Scope: 1 +Exec Bound: 1, While Loop: false +RO Ops: 0, VM Ops: 0 +Num Cons: - +Inputs: +Outputs: +Instructions: + u32 i.main.0.0 = 0 +Transition: + i.main.0.0 != 1000000 ? -> 4 : -> 14 + +Block 4: +Func: main, Scope: 2 +Exec Bound: 1000000, While Loop: false +RO Ops: 0, VM Ops: 0 +Num Cons: - +Inputs: +Outputs: +Instructions: +Transition: -> 5 + +Block 5: +Func: main, Scope: 3 +Exec Bound: 1000000, While Loop: false +RO Ops: 0, VM Ops: 0 +Num Cons: - +Inputs: +Outputs: +Instructions: + field input.poseidon.0.0 = inputs.main.0.0 + field rp@.poseidon = 6 +Transition: -> 17 + +Block 6: +Func: main, Scope: 3 +Exec Bound: 1000000, While Loop: false +RO Ops: 0, VM Ops: 0 +Num Cons: - +Inputs: +Outputs: +Instructions: + field ret^0.main.0.0 = %RET.poseidon + field hashes.main.0.0 = ret^0.main.0.0 +Transition: -> 7 + +Block 7: +Func: main, Scope: 4 +Exec Bound: 1000000, While Loop: false +RO Ops: 0, VM Ops: 0 +Num Cons: - +Inputs: +Outputs: +Instructions: + u32 j.main.0.0 = 0 +Transition: + j.main.0.0 != 12 ? -> 8 : -> 11 + +Block 8: +Func: main, Scope: 5 +Exec Bound: 12000000, While Loop: false +RO Ops: 0, VM Ops: 0 +Num Cons: - +Inputs: +Outputs: +Instructions: +Transition: -> 9 + +Block 9: +Func: main, Scope: 6 +Exec Bound: 12000000, While Loop: false +RO Ops: 0, VM Ops: 1 +Num Cons: - +Inputs: +Outputs: +Instructions: + field load^0.main.0.0 = hashes.main.0.0[j.main.0.0] + field cumulated_hash.main.0.0 = cumulated_hash.main.0.0 + load^0.main.0.0 +Transition: -> 10 + +Block 10: +Func: main, Scope: 5 +Exec Bound: 12000000, While Loop: false +RO Ops: 0, VM Ops: 0 +Num Cons: - +Inputs: +Outputs: +Instructions: + j.main.0.0 = j.main.0.0 + 1 +Transition: + j.main.0.0 != 12 ? -> 8 : -> 11 + +Block 11: +Func: main, Scope: 4 +Exec Bound: 12000000, While Loop: false +RO Ops: 0, VM Ops: 0 +Num Cons: - +Inputs: +Outputs: +Instructions: +Transition: -> 12 + +Block 12: +Func: main, Scope: 3 +Exec Bound: 1000000, While Loop: false +RO Ops: 0, VM Ops: 0 +Num Cons: - +Inputs: +Outputs: +Instructions: +Transition: -> 13 + +Block 13: +Func: main, Scope: 2 +Exec Bound: 1000000, While Loop: false +RO Ops: 0, VM Ops: 0 +Num Cons: - +Inputs: +Outputs: +Instructions: + i.main.0.0 = i.main.0.0 + 1 +Transition: + i.main.0.0 != 1000000 ? -> 4 : -> 14 + +Block 14: +Func: main, Scope: 1 +Exec Bound: 1000000, While Loop: false +RO Ops: 0, VM Ops: 0 +Num Cons: - +Inputs: +Outputs: +Instructions: +Transition: -> 15 + +Block 15: +Func: main, Scope: 0 +Exec Bound: 1, While Loop: false +RO Ops: 0, VM Ops: 0 +Num Cons: - +Inputs: +Outputs: +Instructions: + field %RET.main = cumulated_hash.main.0.0 +Program terminates. + +Block 16: +Func: main, Scope: 0 +Exec Bound: 1, While Loop: false +RO Ops: 0, VM Ops: 0 +Num Cons: - +Inputs: +Outputs: +Instructions: +Program terminates. + +Block 17: +Func: poseidon, Scope: 0 +Exec Bound: 1, While Loop: false +RO Ops: 0, VM Ops: 24 +Num Cons: - +Inputs: +Outputs: +Instructions: + field load^0.poseidon.0.0 = input.poseidon.0.0[0 ] + field state0.poseidon.0.0 = load^0.poseidon.0.0 + field load^0.poseidon.0.0 = input.poseidon.0.0[1 ] + field state1.poseidon.0.0 = load^0.poseidon.0.0 + field load^0.poseidon.0.0 = input.poseidon.0.0[2 ] + field state2.poseidon.0.0 = load^0.poseidon.0.0 + field load^0.poseidon.0.0 = input.poseidon.0.0[3 ] + field state3.poseidon.0.0 = load^0.poseidon.0.0 + field load^0.poseidon.0.0 = input.poseidon.0.0[4 ] + field state4.poseidon.0.0 = load^0.poseidon.0.0 + field load^0.poseidon.0.0 = input.poseidon.0.0[5 ] + field state5.poseidon.0.0 = load^0.poseidon.0.0 + field load^0.poseidon.0.0 = input.poseidon.0.0[6 ] + field state6.poseidon.0.0 = load^0.poseidon.0.0 + field load^0.poseidon.0.0 = input.poseidon.0.0[7 ] + field state7.poseidon.0.0 = load^0.poseidon.0.0 + field load^0.poseidon.0.0 = input.poseidon.0.0[8 ] + field state8.poseidon.0.0 = load^0.poseidon.0.0 + field load^0.poseidon.0.0 = input.poseidon.0.0[9 ] + field state9.poseidon.0.0 = load^0.poseidon.0.0 + field load^0.poseidon.0.0 = input.poseidon.0.0[10 ] + field state10.poseidon.0.0 = load^0.poseidon.0.0 + field load^0.poseidon.0.0 = input.poseidon.0.0[11 ] + field state11.poseidon.0.0 = load^0.poseidon.0.0 + field c0.poseidon.0.0 = 13080132714287612933 + field c1.poseidon.0.0 = 8594738767457295063 + field c2.poseidon.0.0 = 12896916465481390516 + field c3.poseidon.0.0 = 1109962092811921367 + field c4.poseidon.0.0 = 16216730422861946898 + field c5.poseidon.0.0 = 10137062673499593713 + field c6.poseidon.0.0 = 15292064466732465823 + field c7.poseidon.0.0 = 17255573294985989181 + field c8.poseidon.0.0 = 14827154241873003558 + field c9.poseidon.0.0 = 2846171647972703231 + field c1.poseidon.0.0 = 16246264663680317601 + field c11.poseidon.0.0 = 14214208087951879286 + field c12.poseidon.0.0 = 9667108687426275457 + field c13.poseidon.0.0 = 6470857420712283733 + field c14.poseidon.0.0 = 14103331940138337652 + field c15.poseidon.0.0 = 11854816473550292865 + field c16.poseidon.0.0 = 3498097497301325516 + field c17.poseidon.0.0 = 7947235692523864220 + field c18.poseidon.0.0 = 11110078701231901946 + field c19.poseidon.0.0 = 16384314112672821048 + field c2.poseidon.0.0 = 15404405912655775739 + field c21.poseidon.0.0 = 14077880830714445579 + field c22.poseidon.0.0 = 9555554662709218279 + field c23.poseidon.0.0 = 13859595358210603949 + field c24.poseidon.0.0 = 16859897325061800066 + field c25.poseidon.0.0 = 17685474420222222349 + field c26.poseidon.0.0 = 17858764734618734949 + field c27.poseidon.0.0 = 9410011022665866671 + field c28.poseidon.0.0 = 12495243629579414666 + field c29.poseidon.0.0 = 12416945298171515742 + field c3.poseidon.0.0 = 5776666812364270983 + field c31.poseidon.0.0 = 6314421662864060481 + field c32.poseidon.0.0 = 7402742471423223171 + field c33.poseidon.0.0 = 982536713192432718 + field c34.poseidon.0.0 = 17321168865775127905 + field c35.poseidon.0.0 = 2934354895005980211 + field c36.poseidon.0.0 = 10567510598607410195 + field c37.poseidon.0.0 = 8135543733717919110 + field c38.poseidon.0.0 = 116353493081713692 + field c39.poseidon.0.0 = 8029688163494945618 + field c4.poseidon.0.0 = 9003846637224807585 + field c41.poseidon.0.0 = 7052445132467233849 + field c42.poseidon.0.0 = 9645665432288852853 + field c43.poseidon.0.0 = 5446430061030868787 + field c44.poseidon.0.0 = 16770910634346036823 + field c45.poseidon.0.0 = 17708360571433944729 + field c46.poseidon.0.0 = 4661556288322237631 + field c47.poseidon.0.0 = 11977051899316327985 + field c48.poseidon.0.0 = 4378616569090929672 + field c49.poseidon.0.0 = 3334807502817538491 + field c5.poseidon.0.0 = 8019184735943344966 + field c51.poseidon.0.0 = 2395043908812246395 + field c52.poseidon.0.0 = 6558421058331732611 + field c53.poseidon.0.0 = 11735894060727326369 + field c54.poseidon.0.0 = 8143540538889204488 + field c55.poseidon.0.0 = 5991753489563751169 + field c56.poseidon.0.0 = 12235918791502088007 + field c57.poseidon.0.0 = 2880312033702687139 + field c58.poseidon.0.0 = 18224748115308382355 + field c59.poseidon.0.0 = 18070411013125314165 + field c6.poseidon.0.0 = 8156487614120951180 + field c61.poseidon.0.0 = 10615269510047010719 + field c62.poseidon.0.0 = 12489426404754222075 + field c63.poseidon.0.0 = 5055279340069995710 + field c64.poseidon.0.0 = 7231927319780248664 + field c65.poseidon.0.0 = 2602078848106763799 + field c66.poseidon.0.0 = 12445944369334781425 + field c67.poseidon.0.0 = 3978905923892496205 + field c68.poseidon.0.0 = 16711272944329818038 + field c69.poseidon.0.0 = 10439032361227108922 + field c7.poseidon.0.0 = 15110119871725214866 + field c71.poseidon.0.0 = 821141790655890946 + field c72.poseidon.0.0 = 11073536380651186235 + field c73.poseidon.0.0 = 4866839313097607757 + field c74.poseidon.0.0 = 13118391689513956636 + field c75.poseidon.0.0 = 14527674973762312380 + field c76.poseidon.0.0 = 7612751959265567999 + field c77.poseidon.0.0 = 6808090907814178161 + field c78.poseidon.0.0 = 6899703779492644997 + field c79.poseidon.0.0 = 3664666286336986826 + field c8.poseidon.0.0 = 783179505424462608 + field c81.poseidon.0.0 = 8990689241814097697 + field c82.poseidon.0.0 = 9646603555412825679 + field c83.poseidon.0.0 = 7351246026167205041 + field c84.poseidon.0.0 = 16970959813722173256 + field c85.poseidon.0.0 = 15735726858241466429 + field c86.poseidon.0.0 = 10347018221892268419 + field c87.poseidon.0.0 = 12195545878449322889 + field c88.poseidon.0.0 = 7423314197114049891 + field c89.poseidon.0.0 = 14908016116973904153 + field c9.poseidon.0.0 = 5840340122527363265 + field c91.poseidon.0.0 = 17740311462440614128 + field c92.poseidon.0.0 = 815306421953744623 + field c93.poseidon.0.0 = 17456357368219253949 + field c94.poseidon.0.0 = 6982651076559329072 + field c95.poseidon.0.0 = 11970987324614963868 + field c96.poseidon.0.0 = 8167785008538063246 + field c97.poseidon.0.0 = 9483259819397403968 + field c98.poseidon.0.0 = 954550221664291548 + field c99.poseidon.0.0 = 10339565171024313256 + field c1.poseidon.0.0 = 8651171084286500102 + field c11.poseidon.0.0 = 16974445528003515956 + field c12.poseidon.0.0 = 15104530047940621190 + field c13.poseidon.0.0 = 103271880867179718 + field c14.poseidon.0.0 = 14654666245504492663 + field c15.poseidon.0.0 = 12445769555936887967 + field c16.poseidon.0.0 = 11250582358051997490 + field c17.poseidon.0.0 = 6730977207490590241 + field c18.poseidon.0.0 = 15919951556166196935 + field c19.poseidon.0.0 = 4423540216573360915 + field c110.poseidon.0.0 = 16317664700341473511 + field c111.poseidon.0.0 = 4723997214951767765 + field c112.poseidon.0.0 = 10098756619006575500 + field c113.poseidon.0.0 = 3223149401237667964 + field c114.poseidon.0.0 = 6870494874300767682 + field c115.poseidon.0.0 = 2902095711130291898 + field c116.poseidon.0.0 = 7159372652788439733 + field c117.poseidon.0.0 = 11500508372997952671 + field c118.poseidon.0.0 = 13348148181479462670 + field c119.poseidon.0.0 = 12729401155983882093 + field c120.poseidon.0.0 = 15021242795466053388 + field c121.poseidon.0.0 = 3802990509227527157 + field c122.poseidon.0.0 = 4665459515680145682 + field c123.poseidon.0.0 = 13165553315407675603 + field c124.poseidon.0.0 = 6496364397926233172 + field c125.poseidon.0.0 = 12800832566287577810 + field c126.poseidon.0.0 = 9737592377590267426 + field c127.poseidon.0.0 = 8687131091302514939 + field c128.poseidon.0.0 = 1488200421755445892 + field c129.poseidon.0.0 = 11004377668730991641 + field c130.poseidon.0.0 = 13516338734600228410 + field c131.poseidon.0.0 = 2953581820660217936 + field c132.poseidon.0.0 = 3505040783153922951 + field c133.poseidon.0.0 = 3710332827435113697 + field c134.poseidon.0.0 = 15414874040873320221 + field c135.poseidon.0.0 = 8602547649919482301 + field c136.poseidon.0.0 = 13971349938398812007 + field c137.poseidon.0.0 = 187239246702636066 + field c138.poseidon.0.0 = 12886019973971254144 + field c139.poseidon.0.0 = 4512274763990493707 + field c140.poseidon.0.0 = 2986635507805503192 + field c141.poseidon.0.0 = 2315252455709119454 + field c142.poseidon.0.0 = 12537995864054210246 + field c143.poseidon.0.0 = 2039491936479859267 + field c144.poseidon.0.0 = 1558644089185031256 + field c145.poseidon.0.0 = 4074089203264759305 + field c146.poseidon.0.0 = 2522268501749395707 + field c147.poseidon.0.0 = 3414760436185256196 + field c148.poseidon.0.0 = 17420887529146466921 + field c149.poseidon.0.0 = 2817020417938125001 + field c150.poseidon.0.0 = 16538346563888261485 + field c151.poseidon.0.0 = 5592270336833998770 + field c152.poseidon.0.0 = 16876602064684906232 + field c153.poseidon.0.0 = 1793025614521516343 + field c154.poseidon.0.0 = 2178510518148748532 + field c155.poseidon.0.0 = 2726440714374752509 + field c156.poseidon.0.0 = 6502946837278398021 + field c157.poseidon.0.0 = 15816362857667988792 + field c158.poseidon.0.0 = 12997958454165692924 + field c159.poseidon.0.0 = 5314892854495903792 + field c160.poseidon.0.0 = 15533907063555687782 + field c161.poseidon.0.0 = 12312015675698548715 + field c162.poseidon.0.0 = 14140016464013350248 + field c163.poseidon.0.0 = 16325589062962838690 + field c164.poseidon.0.0 = 6796145646370327654 + field c165.poseidon.0.0 = 1168753512742361735 + field c166.poseidon.0.0 = 4100789820704709368 + field c167.poseidon.0.0 = 15947554381540469177 + field c168.poseidon.0.0 = 8597377839806076919 + field c169.poseidon.0.0 = 9704018824195918000 + field c170.poseidon.0.0 = 12763288618765762688 + field c171.poseidon.0.0 = 17249257732622847695 + field c172.poseidon.0.0 = 1998710993415069759 + field c173.poseidon.0.0 = 923759906393011543 + field c174.poseidon.0.0 = 1271051229666811593 + field c175.poseidon.0.0 = 17822362132088738077 + field c176.poseidon.0.0 = 11797234543722669271 + field c177.poseidon.0.0 = 5864538787265942447 + field c178.poseidon.0.0 = 15975583211110506970 + field c179.poseidon.0.0 = 7258516085733671960 + field c180.poseidon.0.0 = 17999926471875633100 + field c181.poseidon.0.0 = 635992114476018166 + field c182.poseidon.0.0 = 17205047318256576347 + field c183.poseidon.0.0 = 17384900867876315312 + field c184.poseidon.0.0 = 16484825562915784226 + field c185.poseidon.0.0 = 16694130609036138894 + field c186.poseidon.0.0 = 10575069350371260875 + field c187.poseidon.0.0 = 8330575162062887277 + field c188.poseidon.0.0 = 6212375704691932880 + field c189.poseidon.0.0 = 15965138197626618226 + field c190.poseidon.0.0 = 14285453069600046939 + field c191.poseidon.0.0 = 10005163510208402517 + field c192.poseidon.0.0 = 885298637936952595 + field c193.poseidon.0.0 = 541790758138118921 + field c194.poseidon.0.0 = 5985203084790372993 + field c195.poseidon.0.0 = 4685030219775483721 + field c196.poseidon.0.0 = 1411106851304815020 + field c197.poseidon.0.0 = 11290732479954096478 + field c198.poseidon.0.0 = 208280581124868513 + field c199.poseidon.0.0 = 10979018648467968495 + field c2.poseidon.0.0 = 8600643745023338215 + field c21.poseidon.0.0 = 3477453626867126061 + field c22.poseidon.0.0 = 6428436309340258604 + field c23.poseidon.0.0 = 5695415667275657934 + field c24.poseidon.0.0 = 15952065508715623490 + field c25.poseidon.0.0 = 15571300830419767248 + field c26.poseidon.0.0 = 17259785660502616862 + field c27.poseidon.0.0 = 4298425495274316083 + field c28.poseidon.0.0 = 9023601070579319352 + field c29.poseidon.0.0 = 7353589709321807492 + field c210.poseidon.0.0 = 2988848909076209475 + field c211.poseidon.0.0 = 10439527789422046135 + field c212.poseidon.0.0 = 6097734044161429459 + field c213.poseidon.0.0 = 1113429873817861476 + field c214.poseidon.0.0 = 1639063372386966591 + field c215.poseidon.0.0 = 7863102812716788759 + field c216.poseidon.0.0 = 216040220732135364 + field c217.poseidon.0.0 = 14252611488623712688 + field c218.poseidon.0.0 = 9543395466794536974 + field c219.poseidon.0.0 = 2714461051639810934 + field c220.poseidon.0.0 = 2588317208781407279 + field c221.poseidon.0.0 = 15458529123534594916 + field c222.poseidon.0.0 = 15748417817551040856 + field c223.poseidon.0.0 = 16414455697114422951 + field c224.poseidon.0.0 = 13378164466674639511 + field c225.poseidon.0.0 = 13894319928411294675 + field c226.poseidon.0.0 = 5032680892090751540 + field c227.poseidon.0.0 = 17201338494743078916 + field c228.poseidon.0.0 = 4397422800601932505 + field c229.poseidon.0.0 = 11285062031581972327 + field c230.poseidon.0.0 = 7309354640676468207 + field c231.poseidon.0.0 = 10457152817239331848 + field c232.poseidon.0.0 = 8855911538863247046 + field c233.poseidon.0.0 = 4301853449821814398 + field c234.poseidon.0.0 = 13001502396339103326 + field c235.poseidon.0.0 = 10218424535115580246 + field c236.poseidon.0.0 = 8628244713920681895 + field c237.poseidon.0.0 = 17410423622514037261 + field c238.poseidon.0.0 = 14080683768439215375 + field c239.poseidon.0.0 = 11453161143447188100 + field c240.poseidon.0.0 = 16761509772042181939 + field c241.poseidon.0.0 = 6688821660695954082 + field c242.poseidon.0.0 = 12083434295263160416 + field c243.poseidon.0.0 = 8540021431714616589 + field c244.poseidon.0.0 = 6891616215679974226 + field c245.poseidon.0.0 = 10229217098454812721 + field c246.poseidon.0.0 = 3292165387203778711 + field c247.poseidon.0.0 = 6090113424998243490 + field c248.poseidon.0.0 = 13431780521962358660 + field c249.poseidon.0.0 = 6061081364215809883 + field c250.poseidon.0.0 = 16792066504222214142 + field c251.poseidon.0.0 = 16134314044798124799 + field c252.poseidon.0.0 = 17070233710126619765 + field c253.poseidon.0.0 = 6915716851370550800 + field c254.poseidon.0.0 = 9505009849073026581 + field c255.poseidon.0.0 = 6422700465081897153 + field c256.poseidon.0.0 = 17977653991560529185 + field c257.poseidon.0.0 = 5800870252836247255 + field c258.poseidon.0.0 = 12096124733159345520 + field c259.poseidon.0.0 = 7679273623392321940 + field c260.poseidon.0.0 = 17835783910585744964 + field c261.poseidon.0.0 = 2478664878205754377 + field c262.poseidon.0.0 = 1720314468413114967 + field c263.poseidon.0.0 = 10376757819003248056 + field c264.poseidon.0.0 = 10376377187857634245 + field c265.poseidon.0.0 = 13344930747504284997 + field c266.poseidon.0.0 = 11579281865160153596 + field c267.poseidon.0.0 = 10300256980048736962 + field c268.poseidon.0.0 = 378765236515040565 + field c269.poseidon.0.0 = 11412420941557253424 + field c270.poseidon.0.0 = 12931662470734252786 + field c271.poseidon.0.0 = 43018908376346374 + field c272.poseidon.0.0 = 3589810689190160071 + field c273.poseidon.0.0 = 4688229274750659741 + field c274.poseidon.0.0 = 13688957436484306091 + field c275.poseidon.0.0 = 11424740943016984272 + field c276.poseidon.0.0 = 16001900718237913960 + field c277.poseidon.0.0 = 5548469743008097574 + field c278.poseidon.0.0 = 14584404916672178680 + field c279.poseidon.0.0 = 3396622135873576824 + field c280.poseidon.0.0 = 7861729246871155992 + field c281.poseidon.0.0 = 16112271126908045545 + field c282.poseidon.0.0 = 16988163966860016012 + field c283.poseidon.0.0 = 273641680619529493 + field c284.poseidon.0.0 = 15222677154027327363 + field c285.poseidon.0.0 = 4070328078309830604 + field c286.poseidon.0.0 = 13520458500363296391 + field c287.poseidon.0.0 = 8235111705801363015 + field c288.poseidon.0.0 = 5575990058472514138 + field c289.poseidon.0.0 = 2751301609188252989 + field c290.poseidon.0.0 = 6478598528223547074 + field c291.poseidon.0.0 = 386565553848556638 + field c292.poseidon.0.0 = 9417729078939938713 + field c293.poseidon.0.0 = 15204315939835727483 + field c294.poseidon.0.0 = 14942015033780606261 + field c295.poseidon.0.0 = 18369423901636582012 + field c296.poseidon.0.0 = 4715338437538604447 + field c297.poseidon.0.0 = 6840590980607806319 + field c298.poseidon.0.0 = 5535471161490539014 + field c299.poseidon.0.0 = 5341328005359029952 + field c3.poseidon.0.0 = 1475161295215894444 + field c31.poseidon.0.0 = 7999197814297036636 + field c32.poseidon.0.0 = 2984233088665867938 + field c33.poseidon.0.0 = 3097746028144832229 + field c34.poseidon.0.0 = 8849530863480031517 + field c35.poseidon.0.0 = 7464920943249009773 + field c36.poseidon.0.0 = 3802996844641460514 + field c37.poseidon.0.0 = 6284458522545927646 + field c38.poseidon.0.0 = 2307388003445002779 + field c39.poseidon.0.0 = 4461479354745457623 + field c310.poseidon.0.0 = 1649739722664588460 + field c311.poseidon.0.0 = 3008391274160432867 + field c312.poseidon.0.0 = 5142217010456550622 + field c313.poseidon.0.0 = 1775580461722730120 + field c314.poseidon.0.0 = 161694268822794344 + field c315.poseidon.0.0 = 1518963253808031703 + field c316.poseidon.0.0 = 16475258091652710137 + field c317.poseidon.0.0 = 119575899007375159 + field c318.poseidon.0.0 = 1275863735937973999 + field c319.poseidon.0.0 = 16539412514520642374 + field c320.poseidon.0.0 = 2303365191438051950 + field c321.poseidon.0.0 = 6435126839960916075 + field c322.poseidon.0.0 = 17794599201026020053 + field c323.poseidon.0.0 = 13847097589277840330 + field c324.poseidon.0.0 = 16645869274577729720 + field c325.poseidon.0.0 = 8039205965509554440 + field c326.poseidon.0.0 = 4788586935019371140 + field c327.poseidon.0.0 = 15129007200040077746 + field c328.poseidon.0.0 = 2055561615223771341 + field c329.poseidon.0.0 = 4149731103701412892 + field c330.poseidon.0.0 = 10268130195734144189 + field c331.poseidon.0.0 = 13406631635880074708 + field c332.poseidon.0.0 = 11429218277824986203 + field c333.poseidon.0.0 = 15773968030812198565 + field c334.poseidon.0.0 = 16050275277550506872 + field c335.poseidon.0.0 = 11858586752031736643 + field c336.poseidon.0.0 = 8927746344866569756 + field c337.poseidon.0.0 = 11802068403177695792 + field c338.poseidon.0.0 = 157833420806751556 + field c339.poseidon.0.0 = 4698875910749767878 + field c340.poseidon.0.0 = 1616722774788291698 + field c341.poseidon.0.0 = 3990951895163748090 + field c342.poseidon.0.0 = 16758609224720795472 + field c343.poseidon.0.0 = 3045571693290741477 + field c344.poseidon.0.0 = 9281634245289836419 + field c345.poseidon.0.0 = 13517688176723875370 + field c346.poseidon.0.0 = 7961395585333219380 + field c347.poseidon.0.0 = 1606574359105691080 + field c348.poseidon.0.0 = 17564372683613562171 + field c349.poseidon.0.0 = 4664015225343144418 + field c350.poseidon.0.0 = 6133721340680280128 + field c351.poseidon.0.0 = 2667022304383014929 + field c352.poseidon.0.0 = 12316557761857340230 + field c353.poseidon.0.0 = 10375614850625292317 + field c354.poseidon.0.0 = 8141542666379135068 + field c355.poseidon.0.0 = 9185476451083834432 + field c356.poseidon.0.0 = 4991072365274649547 + field c357.poseidon.0.0 = 17398204971778820365 + field c358.poseidon.0.0 = 16127888338958422584 + field c359.poseidon.0.0 = 13586792051317758204 + field mc.poseidon.0.0 = 17 + field mc1.poseidon.0.0 = 15 + field mc2.poseidon.0.0 = 41 + field mc3.poseidon.0.0 = 16 + field mc4.poseidon.0.0 = 2 + field mc5.poseidon.0.0 = 28 + field mc6.poseidon.0.0 = 13 + field mc7.poseidon.0.0 = 13 + field mc8.poseidon.0.0 = 39 + field mc9.poseidon.0.0 = 18 + field mc10.poseidon.0.0 = 34 + field mc11.poseidon.0.0 = 20 + field md.poseidon.0.0 = 8 + field md1.poseidon.0.0 = 0 + field md2.poseidon.0.0 = 0 + field md3.poseidon.0.0 = 0 + field md4.poseidon.0.0 = 0 + field md5.poseidon.0.0 = 0 + field md6.poseidon.0.0 = 0 + field md7.poseidon.0.0 = 0 + field md8.poseidon.0.0 = 0 + field md9.poseidon.0.0 = 0 + field md10.poseidon.0.0 = 0 + field md11.poseidon.0.0 = 0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c0.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c1.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c2.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c3.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c4.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c5.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c6.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c7.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c8.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c9.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c1.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c11.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 ** 7 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 ** 7 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 ** 7 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 ** 7 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 ** 7 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 ** 7 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 ** 7 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 ** 7 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 ** 7 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 ** 7 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 ** 7 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c12.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c13.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c14.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c15.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c16.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c17.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c18.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c19.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c2.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c21.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c22.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c23.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 ** 7 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 ** 7 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 ** 7 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 ** 7 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 ** 7 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 ** 7 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 ** 7 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 ** 7 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 ** 7 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 ** 7 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 ** 7 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c24.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c25.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c26.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c27.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c28.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c29.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c3.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c31.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c32.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c33.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c34.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c35.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 ** 7 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 ** 7 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 ** 7 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 ** 7 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 ** 7 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 ** 7 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 ** 7 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 ** 7 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 ** 7 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 ** 7 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 ** 7 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c36.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c37.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c38.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c39.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c4.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c41.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c42.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c43.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c44.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c45.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c46.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c47.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 ** 7 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 ** 7 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 ** 7 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 ** 7 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 ** 7 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 ** 7 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 ** 7 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 ** 7 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 ** 7 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 ** 7 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 ** 7 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c48.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c49.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c5.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c51.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c52.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c53.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c54.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c55.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c56.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c57.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c58.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c59.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c6.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c61.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c62.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c63.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c64.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c65.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c66.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c67.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c68.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c69.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c7.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c71.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c72.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c73.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c74.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c75.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c76.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c77.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c78.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c79.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c8.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c81.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c82.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c83.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c84.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c85.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c86.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c87.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c88.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c89.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c9.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c91.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c92.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c93.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c94.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c95.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c96.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c97.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c98.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c99.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c1.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c11.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c12.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c13.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c14.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c15.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c16.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c17.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c18.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c19.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c110.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c111.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c112.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c113.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c114.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c115.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c116.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c117.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c118.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c119.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c120.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c121.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c122.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c123.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c124.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c125.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c126.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c127.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c128.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c129.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c130.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c131.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c132.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c133.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c134.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c135.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c136.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c137.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c138.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c139.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c140.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c141.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c142.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c143.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c144.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c145.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c146.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c147.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c148.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c149.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c150.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c151.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c152.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c153.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c154.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c155.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c156.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c157.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c158.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c159.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c160.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c161.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c162.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c163.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c164.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c165.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c166.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c167.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c168.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c169.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c170.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c171.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c172.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c173.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c174.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c175.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c176.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c177.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c178.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c179.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c180.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c181.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c182.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c183.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c184.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c185.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c186.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c187.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c188.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c189.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c190.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c191.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c192.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c193.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c194.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c195.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c196.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c197.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c198.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c199.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c2.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c21.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c22.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c23.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c24.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c25.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c26.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c27.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c28.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c29.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c210.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c211.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c212.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c213.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c214.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c215.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c216.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c217.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c218.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c219.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c220.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c221.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c222.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c223.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c224.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c225.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c226.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c227.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c228.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c229.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c230.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c231.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c232.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c233.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c234.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c235.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c236.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c237.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c238.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c239.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c240.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c241.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c242.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c243.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c244.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c245.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c246.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c247.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c248.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c249.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c250.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c251.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c252.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c253.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c254.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c255.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c256.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c257.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c258.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c259.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c260.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c261.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c262.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c263.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c264.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c265.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c266.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c267.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c268.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c269.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c270.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c271.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c272.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c273.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c274.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c275.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c276.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c277.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c278.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c279.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c280.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c281.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c282.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c283.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c284.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c285.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c286.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c287.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c288.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c289.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c290.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c291.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c292.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c293.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c294.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c295.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c296.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c297.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c298.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c299.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c3.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c31.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c32.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c33.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c34.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c35.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c36.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c37.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c38.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c39.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c310.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c311.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c312.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c313.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c314.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c315.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c316.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c317.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c318.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c319.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c320.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c321.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c322.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c323.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 ** 7 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 ** 7 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 ** 7 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 ** 7 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 ** 7 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 ** 7 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 ** 7 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 ** 7 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 ** 7 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 ** 7 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 ** 7 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c324.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c325.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c326.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c327.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c328.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c329.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c330.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c331.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c332.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c333.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c334.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c335.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 ** 7 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 ** 7 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 ** 7 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 ** 7 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 ** 7 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 ** 7 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 ** 7 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 ** 7 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 ** 7 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 ** 7 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 ** 7 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c336.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c337.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c338.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c339.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c340.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c341.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c342.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c343.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c344.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c345.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c346.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c347.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 ** 7 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 ** 7 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 ** 7 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 ** 7 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 ** 7 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 ** 7 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 ** 7 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 ** 7 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 ** 7 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 ** 7 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 ** 7 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field state0.poseidon.0.0 = state0.poseidon.0.0 + c348.poseidon.0.0 + field state1.poseidon.0.0 = state1.poseidon.0.0 + c349.poseidon.0.0 + field state2.poseidon.0.0 = state2.poseidon.0.0 + c350.poseidon.0.0 + field state3.poseidon.0.0 = state3.poseidon.0.0 + c351.poseidon.0.0 + field state4.poseidon.0.0 = state4.poseidon.0.0 + c352.poseidon.0.0 + field state5.poseidon.0.0 = state5.poseidon.0.0 + c353.poseidon.0.0 + field state6.poseidon.0.0 = state6.poseidon.0.0 + c354.poseidon.0.0 + field state7.poseidon.0.0 = state7.poseidon.0.0 + c355.poseidon.0.0 + field state8.poseidon.0.0 = state8.poseidon.0.0 + c356.poseidon.0.0 + field state9.poseidon.0.0 = state9.poseidon.0.0 + c357.poseidon.0.0 + field state10.poseidon.0.0 = state10.poseidon.0.0 + c358.poseidon.0.0 + field state11.poseidon.0.0 = state11.poseidon.0.0 + c359.poseidon.0.0 + field new_state0.poseidon.0.0 = state0.poseidon.0.0 ** 7 + field new_state1.poseidon.0.0 = state1.poseidon.0.0 ** 7 + field new_state2.poseidon.0.0 = state2.poseidon.0.0 ** 7 + field new_state3.poseidon.0.0 = state3.poseidon.0.0 ** 7 + field new_state4.poseidon.0.0 = state4.poseidon.0.0 ** 7 + field new_state5.poseidon.0.0 = state5.poseidon.0.0 ** 7 + field new_state6.poseidon.0.0 = state6.poseidon.0.0 ** 7 + field new_state7.poseidon.0.0 = state7.poseidon.0.0 ** 7 + field new_state8.poseidon.0.0 = state8.poseidon.0.0 ** 7 + field new_state9.poseidon.0.0 = state9.poseidon.0.0 ** 7 + field new_state10.poseidon.0.0 = state10.poseidon.0.0 ** 7 + field new_state11.poseidon.0.0 = state11.poseidon.0.0 ** 7 + field state0.poseidon.0.0 = new_state0.poseidon.0.0 * md.poseidon.0.0 + new_state0.poseidon.0.0 * mc.poseidon.0.0 + new_state1.poseidon.0.0 * mc1.poseidon.0.0 + new_state2.poseidon.0.0 * mc2.poseidon.0.0 + new_state3.poseidon.0.0 * mc3.poseidon.0.0 + new_state4.poseidon.0.0 * mc4.poseidon.0.0 + new_state5.poseidon.0.0 * mc5.poseidon.0.0 + new_state6.poseidon.0.0 * mc6.poseidon.0.0 + new_state7.poseidon.0.0 * mc7.poseidon.0.0 + new_state8.poseidon.0.0 * mc8.poseidon.0.0 + new_state9.poseidon.0.0 * mc9.poseidon.0.0 + new_state10.poseidon.0.0 * mc10.poseidon.0.0 + new_state11.poseidon.0.0 * mc11.poseidon.0.0 + field state1.poseidon.0.0 = new_state1.poseidon.0.0 * md1.poseidon.0.0 + new_state1.poseidon.0.0 * mc.poseidon.0.0 + new_state2.poseidon.0.0 * mc1.poseidon.0.0 + new_state3.poseidon.0.0 * mc2.poseidon.0.0 + new_state4.poseidon.0.0 * mc3.poseidon.0.0 + new_state5.poseidon.0.0 * mc4.poseidon.0.0 + new_state6.poseidon.0.0 * mc5.poseidon.0.0 + new_state7.poseidon.0.0 * mc6.poseidon.0.0 + new_state8.poseidon.0.0 * mc7.poseidon.0.0 + new_state9.poseidon.0.0 * mc8.poseidon.0.0 + new_state10.poseidon.0.0 * mc9.poseidon.0.0 + new_state11.poseidon.0.0 * mc10.poseidon.0.0 + new_state0.poseidon.0.0 * mc11.poseidon.0.0 + field state2.poseidon.0.0 = new_state2.poseidon.0.0 * md2.poseidon.0.0 + new_state2.poseidon.0.0 * mc.poseidon.0.0 + new_state3.poseidon.0.0 * mc1.poseidon.0.0 + new_state4.poseidon.0.0 * mc2.poseidon.0.0 + new_state5.poseidon.0.0 * mc3.poseidon.0.0 + new_state6.poseidon.0.0 * mc4.poseidon.0.0 + new_state7.poseidon.0.0 * mc5.poseidon.0.0 + new_state8.poseidon.0.0 * mc6.poseidon.0.0 + new_state9.poseidon.0.0 * mc7.poseidon.0.0 + new_state10.poseidon.0.0 * mc8.poseidon.0.0 + new_state11.poseidon.0.0 * mc9.poseidon.0.0 + new_state0.poseidon.0.0 * mc10.poseidon.0.0 + new_state1.poseidon.0.0 * mc11.poseidon.0.0 + field state3.poseidon.0.0 = new_state3.poseidon.0.0 * md3.poseidon.0.0 + new_state3.poseidon.0.0 * mc.poseidon.0.0 + new_state4.poseidon.0.0 * mc1.poseidon.0.0 + new_state5.poseidon.0.0 * mc2.poseidon.0.0 + new_state6.poseidon.0.0 * mc3.poseidon.0.0 + new_state7.poseidon.0.0 * mc4.poseidon.0.0 + new_state8.poseidon.0.0 * mc5.poseidon.0.0 + new_state9.poseidon.0.0 * mc6.poseidon.0.0 + new_state10.poseidon.0.0 * mc7.poseidon.0.0 + new_state11.poseidon.0.0 * mc8.poseidon.0.0 + new_state0.poseidon.0.0 * mc9.poseidon.0.0 + new_state1.poseidon.0.0 * mc10.poseidon.0.0 + new_state2.poseidon.0.0 * mc11.poseidon.0.0 + field state4.poseidon.0.0 = new_state4.poseidon.0.0 * md4.poseidon.0.0 + new_state4.poseidon.0.0 * mc.poseidon.0.0 + new_state5.poseidon.0.0 * mc1.poseidon.0.0 + new_state6.poseidon.0.0 * mc2.poseidon.0.0 + new_state7.poseidon.0.0 * mc3.poseidon.0.0 + new_state8.poseidon.0.0 * mc4.poseidon.0.0 + new_state9.poseidon.0.0 * mc5.poseidon.0.0 + new_state10.poseidon.0.0 * mc6.poseidon.0.0 + new_state11.poseidon.0.0 * mc7.poseidon.0.0 + new_state0.poseidon.0.0 * mc8.poseidon.0.0 + new_state1.poseidon.0.0 * mc9.poseidon.0.0 + new_state2.poseidon.0.0 * mc10.poseidon.0.0 + new_state3.poseidon.0.0 * mc11.poseidon.0.0 + field state5.poseidon.0.0 = new_state5.poseidon.0.0 * md5.poseidon.0.0 + new_state5.poseidon.0.0 * mc.poseidon.0.0 + new_state6.poseidon.0.0 * mc1.poseidon.0.0 + new_state7.poseidon.0.0 * mc2.poseidon.0.0 + new_state8.poseidon.0.0 * mc3.poseidon.0.0 + new_state9.poseidon.0.0 * mc4.poseidon.0.0 + new_state10.poseidon.0.0 * mc5.poseidon.0.0 + new_state11.poseidon.0.0 * mc6.poseidon.0.0 + new_state0.poseidon.0.0 * mc7.poseidon.0.0 + new_state1.poseidon.0.0 * mc8.poseidon.0.0 + new_state2.poseidon.0.0 * mc9.poseidon.0.0 + new_state3.poseidon.0.0 * mc10.poseidon.0.0 + new_state4.poseidon.0.0 * mc11.poseidon.0.0 + field state6.poseidon.0.0 = new_state6.poseidon.0.0 * md6.poseidon.0.0 + new_state6.poseidon.0.0 * mc.poseidon.0.0 + new_state7.poseidon.0.0 * mc1.poseidon.0.0 + new_state8.poseidon.0.0 * mc2.poseidon.0.0 + new_state9.poseidon.0.0 * mc3.poseidon.0.0 + new_state10.poseidon.0.0 * mc4.poseidon.0.0 + new_state11.poseidon.0.0 * mc5.poseidon.0.0 + new_state0.poseidon.0.0 * mc6.poseidon.0.0 + new_state1.poseidon.0.0 * mc7.poseidon.0.0 + new_state2.poseidon.0.0 * mc8.poseidon.0.0 + new_state3.poseidon.0.0 * mc9.poseidon.0.0 + new_state4.poseidon.0.0 * mc10.poseidon.0.0 + new_state5.poseidon.0.0 * mc11.poseidon.0.0 + field state7.poseidon.0.0 = new_state7.poseidon.0.0 * md7.poseidon.0.0 + new_state7.poseidon.0.0 * mc.poseidon.0.0 + new_state8.poseidon.0.0 * mc1.poseidon.0.0 + new_state9.poseidon.0.0 * mc2.poseidon.0.0 + new_state10.poseidon.0.0 * mc3.poseidon.0.0 + new_state11.poseidon.0.0 * mc4.poseidon.0.0 + new_state0.poseidon.0.0 * mc5.poseidon.0.0 + new_state1.poseidon.0.0 * mc6.poseidon.0.0 + new_state2.poseidon.0.0 * mc7.poseidon.0.0 + new_state3.poseidon.0.0 * mc8.poseidon.0.0 + new_state4.poseidon.0.0 * mc9.poseidon.0.0 + new_state5.poseidon.0.0 * mc10.poseidon.0.0 + new_state6.poseidon.0.0 * mc11.poseidon.0.0 + field state8.poseidon.0.0 = new_state8.poseidon.0.0 * md8.poseidon.0.0 + new_state8.poseidon.0.0 * mc.poseidon.0.0 + new_state9.poseidon.0.0 * mc1.poseidon.0.0 + new_state10.poseidon.0.0 * mc2.poseidon.0.0 + new_state11.poseidon.0.0 * mc3.poseidon.0.0 + new_state0.poseidon.0.0 * mc4.poseidon.0.0 + new_state1.poseidon.0.0 * mc5.poseidon.0.0 + new_state2.poseidon.0.0 * mc6.poseidon.0.0 + new_state3.poseidon.0.0 * mc7.poseidon.0.0 + new_state4.poseidon.0.0 * mc8.poseidon.0.0 + new_state5.poseidon.0.0 * mc9.poseidon.0.0 + new_state6.poseidon.0.0 * mc10.poseidon.0.0 + new_state7.poseidon.0.0 * mc11.poseidon.0.0 + field state9.poseidon.0.0 = new_state9.poseidon.0.0 * md9.poseidon.0.0 + new_state9.poseidon.0.0 * mc.poseidon.0.0 + new_state10.poseidon.0.0 * mc1.poseidon.0.0 + new_state11.poseidon.0.0 * mc2.poseidon.0.0 + new_state0.poseidon.0.0 * mc3.poseidon.0.0 + new_state1.poseidon.0.0 * mc4.poseidon.0.0 + new_state2.poseidon.0.0 * mc5.poseidon.0.0 + new_state3.poseidon.0.0 * mc6.poseidon.0.0 + new_state4.poseidon.0.0 * mc7.poseidon.0.0 + new_state5.poseidon.0.0 * mc8.poseidon.0.0 + new_state6.poseidon.0.0 * mc9.poseidon.0.0 + new_state7.poseidon.0.0 * mc10.poseidon.0.0 + new_state8.poseidon.0.0 * mc11.poseidon.0.0 + field state10.poseidon.0.0 = new_state10.poseidon.0.0 * md10.poseidon.0.0 + new_state10.poseidon.0.0 * mc.poseidon.0.0 + new_state11.poseidon.0.0 * mc1.poseidon.0.0 + new_state0.poseidon.0.0 * mc2.poseidon.0.0 + new_state1.poseidon.0.0 * mc3.poseidon.0.0 + new_state2.poseidon.0.0 * mc4.poseidon.0.0 + new_state3.poseidon.0.0 * mc5.poseidon.0.0 + new_state4.poseidon.0.0 * mc6.poseidon.0.0 + new_state5.poseidon.0.0 * mc7.poseidon.0.0 + new_state6.poseidon.0.0 * mc8.poseidon.0.0 + new_state7.poseidon.0.0 * mc9.poseidon.0.0 + new_state8.poseidon.0.0 * mc10.poseidon.0.0 + new_state9.poseidon.0.0 * mc11.poseidon.0.0 + field state11.poseidon.0.0 = new_state11.poseidon.0.0 * md11.poseidon.0.0 + new_state11.poseidon.0.0 * mc.poseidon.0.0 + new_state0.poseidon.0.0 * mc1.poseidon.0.0 + new_state1.poseidon.0.0 * mc2.poseidon.0.0 + new_state2.poseidon.0.0 * mc3.poseidon.0.0 + new_state3.poseidon.0.0 * mc4.poseidon.0.0 + new_state4.poseidon.0.0 * mc5.poseidon.0.0 + new_state5.poseidon.0.0 * mc6.poseidon.0.0 + new_state6.poseidon.0.0 * mc7.poseidon.0.0 + new_state7.poseidon.0.0 * mc8.poseidon.0.0 + new_state8.poseidon.0.0 * mc9.poseidon.0.0 + new_state9.poseidon.0.0 * mc10.poseidon.0.0 + new_state10.poseidon.0.0 * mc11.poseidon.0.0 + field[12 ] array^0.poseidon.0.0 + field init^0^0.poseidon.0.0 = state0.poseidon.0.0 + field init^0^1.poseidon.0.0 = state1.poseidon.0.0 + field init^0^2.poseidon.0.0 = state2.poseidon.0.0 + field init^0^3.poseidon.0.0 = state3.poseidon.0.0 + field init^0^4.poseidon.0.0 = state4.poseidon.0.0 + field init^0^5.poseidon.0.0 = state5.poseidon.0.0 + field init^0^6.poseidon.0.0 = state6.poseidon.0.0 + field init^0^7.poseidon.0.0 = state7.poseidon.0.0 + field init^0^8.poseidon.0.0 = state8.poseidon.0.0 + field init^0^9.poseidon.0.0 = state9.poseidon.0.0 + field init^0^10.poseidon.0.0 = state10.poseidon.0.0 + field init^0^11.poseidon.0.0 = state11.poseidon.0.0 + array^0.poseidon.0.0[0 ] = init^0^0.poseidon.0.0 , init + array^0.poseidon.0.0[1 ] = init^0^1.poseidon.0.0 , init + array^0.poseidon.0.0[2 ] = init^0^2.poseidon.0.0 , init + array^0.poseidon.0.0[3 ] = init^0^3.poseidon.0.0 , init + array^0.poseidon.0.0[4 ] = init^0^4.poseidon.0.0 , init + array^0.poseidon.0.0[5 ] = init^0^5.poseidon.0.0 , init + array^0.poseidon.0.0[6 ] = init^0^6.poseidon.0.0 , init + array^0.poseidon.0.0[7 ] = init^0^7.poseidon.0.0 , init + array^0.poseidon.0.0[8 ] = init^0^8.poseidon.0.0 , init + array^0.poseidon.0.0[9 ] = init^0^9.poseidon.0.0 , init + array^0.poseidon.0.0[10 ] = init^0^10.poseidon.0.0 , init + array^0.poseidon.0.0[11 ] = init^0^11.poseidon.0.0 , init + field %RET.poseidon = array^0.poseidon.0.0 +Transition: -> rp@.poseidon + +Block 18: +Func: poseidon, Scope: 0 +Exec Bound: 1, While Loop: false +RO Ops: 0, VM Ops: 0 +Num Cons: - +Inputs: +Outputs: +Instructions: +Transition: -> rp@.poseidon + + +-- +Optimization: + + +-- +Post-Processing: +Entry block: 0 + +Block 0: +Func: main, Scope: 0 +Exec Bound: 1, While Loop: false +RO Ops: 0, VM Ops: 12 +Num Cons: 19 +Inputs: + %i1(BN): field + %i4(AS): field +Outputs: + %o1(BN): field + %o4(AS): field + %o3(TS): field + %o7: field + %o8: u32 + %o9: field +Instructions: + assert %i1(BN) == 0 + field %w2(AS) = %i4(AS) + field %w1(TS) = 0 + field[12 ] %w5 + field %w6 = 1 + field %w7 = 2 + field %w8 = 3 + field %w9 = 4 + field %w10 = 5 + field %w11 = 6 + field %w12 = 7 + field %w13 = 8 + field %w14 = 0 + field %w15 = 0 + field %w16 = 0 + field %w17 = 0 + %w5[0 ] = %w6 , init + %w5[1 ] = %w7 , init + %w5[2 ] = %w8 , init + %w5[3 ] = %w9 , init + %w5[4 ] = %w10 , init + %w5[5 ] = %w11 , init + %w5[6 ] = %w12 , init + %w5[7 ] = %w13 , init + %w5[8 ] = %w14 , init + %w5[9 ] = %w15 , init + %w5[10 ] = %w16 , init + %w5[11 ] = %w17 , init + field %w18 = %w5 + field %w19 = 0 + u32 %w20 = 0 + assert %o4(AS) == %w2(AS) + assert %o3(TS) == %w1(TS) + assert %o7 == %w19 + assert %o8 == %w20 + assert %o9 == %w18 + assert %o1(BN) == %w20 != 1000000 ? 1 : 2 +Transition: + %w20 != 1000000 ? -> 1 : -> 2 + +Block 1: +Func: main, Scope: 2 +Exec Bound: 1000000, While Loop: false +RO Ops: 0, VM Ops: 36 +Num Cons: 811 +Inputs: + %i1(BN): field + %i4(AS): field + %i3(TS): field + %i7: field + %i8: u32 + %i9: field +Outputs: + %o1(BN): field + %o4(AS): field + %o3(TS): field + %o7: field + %o8: u32 + %o9: field +Instructions: + assert %i1(BN) == 1 + field %w2(AS) = %i4(AS) + field %w1(TS) = %i3(TS) + field %w19 = %i7 + u32 %w20 = %i8 + field %w18 = %i9 + field %w21 = %w18 + field %w22 = %w21[0 ] + field %w23 = %w22 + field %w22 = %w21[1 ] + field %w24 = %w22 + field %w22 = %w21[2 ] + field %w25 = %w22 + field %w22 = %w21[3 ] + field %w26 = %w22 + field %w22 = %w21[4 ] + field %w27 = %w22 + field %w22 = %w21[5 ] + field %w28 = %w22 + field %w22 = %w21[6 ] + field %w29 = %w22 + field %w22 = %w21[7 ] + field %w30 = %w22 + field %w22 = %w21[8 ] + field %w31 = %w22 + field %w22 = %w21[9 ] + field %w32 = %w22 + field %w22 = %w21[10 ] + field %w33 = %w22 + field %w22 = %w21[11 ] + field %w34 = %w22 + field %w35 = 13080132714287612933 + field %w36 = 8594738767457295063 + field %w37 = 12896916465481390516 + field %w38 = 1109962092811921367 + field %w39 = 16216730422861946898 + field %w40 = 10137062673499593713 + field %w41 = 15292064466732465823 + field %w42 = 17255573294985989181 + field %w43 = 14827154241873003558 + field %w44 = 2846171647972703231 + field %w45 = 16246264663680317601 + field %w46 = 14214208087951879286 + field %w47 = 9667108687426275457 + field %w48 = 6470857420712283733 + field %w49 = 14103331940138337652 + field %w50 = 11854816473550292865 + field %w51 = 3498097497301325516 + field %w52 = 7947235692523864220 + field %w53 = 11110078701231901946 + field %w54 = 16384314112672821048 + field %w55 = 15404405912655775739 + field %w56 = 14077880830714445579 + field %w57 = 9555554662709218279 + field %w58 = 13859595358210603949 + field %w59 = 16859897325061800066 + field %w60 = 17685474420222222349 + field %w61 = 17858764734618734949 + field %w62 = 9410011022665866671 + field %w63 = 12495243629579414666 + field %w64 = 12416945298171515742 + field %w65 = 5776666812364270983 + field %w66 = 6314421662864060481 + field %w67 = 7402742471423223171 + field %w68 = 982536713192432718 + field %w69 = 17321168865775127905 + field %w70 = 2934354895005980211 + field %w71 = 10567510598607410195 + field %w72 = 8135543733717919110 + field %w73 = 116353493081713692 + field %w74 = 8029688163494945618 + field %w75 = 9003846637224807585 + field %w76 = 7052445132467233849 + field %w77 = 9645665432288852853 + field %w78 = 5446430061030868787 + field %w79 = 16770910634346036823 + field %w80 = 17708360571433944729 + field %w81 = 4661556288322237631 + field %w82 = 11977051899316327985 + field %w83 = 4378616569090929672 + field %w84 = 3334807502817538491 + field %w85 = 8019184735943344966 + field %w86 = 2395043908812246395 + field %w87 = 6558421058331732611 + field %w88 = 11735894060727326369 + field %w89 = 8143540538889204488 + field %w90 = 5991753489563751169 + field %w91 = 12235918791502088007 + field %w92 = 2880312033702687139 + field %w93 = 18224748115308382355 + field %w94 = 18070411013125314165 + field %w95 = 8156487614120951180 + field %w96 = 10615269510047010719 + field %w97 = 12489426404754222075 + field %w98 = 5055279340069995710 + field %w99 = 7231927319780248664 + field %w100 = 2602078848106763799 + field %w101 = 12445944369334781425 + field %w102 = 3978905923892496205 + field %w103 = 16711272944329818038 + field %w104 = 10439032361227108922 + field %w105 = 15110119871725214866 + field %w106 = 821141790655890946 + field %w107 = 11073536380651186235 + field %w108 = 4866839313097607757 + field %w109 = 13118391689513956636 + field %w110 = 14527674973762312380 + field %w111 = 7612751959265567999 + field %w112 = 6808090907814178161 + field %w113 = 6899703779492644997 + field %w114 = 3664666286336986826 + field %w115 = 783179505424462608 + field %w116 = 8990689241814097697 + field %w117 = 9646603555412825679 + field %w118 = 7351246026167205041 + field %w119 = 16970959813722173256 + field %w120 = 15735726858241466429 + field %w121 = 10347018221892268419 + field %w122 = 12195545878449322889 + field %w123 = 7423314197114049891 + field %w124 = 14908016116973904153 + field %w125 = 5840340122527363265 + field %w126 = 17740311462440614128 + field %w127 = 815306421953744623 + field %w128 = 17456357368219253949 + field %w129 = 6982651076559329072 + field %w130 = 11970987324614963868 + field %w131 = 8167785008538063246 + field %w132 = 9483259819397403968 + field %w133 = 954550221664291548 + field %w134 = 10339565171024313256 + field %w135 = 8651171084286500102 + field %w136 = 16974445528003515956 + field %w137 = 15104530047940621190 + field %w138 = 103271880867179718 + field %w139 = 14654666245504492663 + field %w140 = 12445769555936887967 + field %w141 = 11250582358051997490 + field %w142 = 6730977207490590241 + field %w143 = 15919951556166196935 + field %w144 = 4423540216573360915 + field %w145 = 16317664700341473511 + field %w146 = 4723997214951767765 + field %w147 = 10098756619006575500 + field %w148 = 3223149401237667964 + field %w149 = 6870494874300767682 + field %w150 = 2902095711130291898 + field %w151 = 7159372652788439733 + field %w152 = 11500508372997952671 + field %w153 = 13348148181479462670 + field %w154 = 12729401155983882093 + field %w155 = 15021242795466053388 + field %w156 = 3802990509227527157 + field %w157 = 4665459515680145682 + field %w158 = 13165553315407675603 + field %w159 = 6496364397926233172 + field %w160 = 12800832566287577810 + field %w161 = 9737592377590267426 + field %w162 = 8687131091302514939 + field %w163 = 1488200421755445892 + field %w164 = 11004377668730991641 + field %w165 = 13516338734600228410 + field %w166 = 2953581820660217936 + field %w167 = 3505040783153922951 + field %w168 = 3710332827435113697 + field %w169 = 15414874040873320221 + field %w170 = 8602547649919482301 + field %w171 = 13971349938398812007 + field %w172 = 187239246702636066 + field %w173 = 12886019973971254144 + field %w174 = 4512274763990493707 + field %w175 = 2986635507805503192 + field %w176 = 2315252455709119454 + field %w177 = 12537995864054210246 + field %w178 = 2039491936479859267 + field %w179 = 1558644089185031256 + field %w180 = 4074089203264759305 + field %w181 = 2522268501749395707 + field %w182 = 3414760436185256196 + field %w183 = 17420887529146466921 + field %w184 = 2817020417938125001 + field %w185 = 16538346563888261485 + field %w186 = 5592270336833998770 + field %w187 = 16876602064684906232 + field %w188 = 1793025614521516343 + field %w189 = 2178510518148748532 + field %w190 = 2726440714374752509 + field %w191 = 6502946837278398021 + field %w192 = 15816362857667988792 + field %w193 = 12997958454165692924 + field %w194 = 5314892854495903792 + field %w195 = 15533907063555687782 + field %w196 = 12312015675698548715 + field %w197 = 14140016464013350248 + field %w198 = 16325589062962838690 + field %w199 = 6796145646370327654 + field %w200 = 1168753512742361735 + field %w201 = 4100789820704709368 + field %w202 = 15947554381540469177 + field %w203 = 8597377839806076919 + field %w204 = 9704018824195918000 + field %w205 = 12763288618765762688 + field %w206 = 17249257732622847695 + field %w207 = 1998710993415069759 + field %w208 = 923759906393011543 + field %w209 = 1271051229666811593 + field %w210 = 17822362132088738077 + field %w211 = 11797234543722669271 + field %w212 = 5864538787265942447 + field %w213 = 15975583211110506970 + field %w214 = 7258516085733671960 + field %w215 = 17999926471875633100 + field %w216 = 635992114476018166 + field %w217 = 17205047318256576347 + field %w218 = 17384900867876315312 + field %w219 = 16484825562915784226 + field %w220 = 16694130609036138894 + field %w221 = 10575069350371260875 + field %w222 = 8330575162062887277 + field %w223 = 6212375704691932880 + field %w224 = 15965138197626618226 + field %w225 = 14285453069600046939 + field %w226 = 10005163510208402517 + field %w227 = 885298637936952595 + field %w228 = 541790758138118921 + field %w229 = 5985203084790372993 + field %w230 = 4685030219775483721 + field %w231 = 1411106851304815020 + field %w232 = 11290732479954096478 + field %w233 = 208280581124868513 + field %w234 = 10979018648467968495 + field %w235 = 8600643745023338215 + field %w236 = 3477453626867126061 + field %w237 = 6428436309340258604 + field %w238 = 5695415667275657934 + field %w239 = 15952065508715623490 + field %w240 = 15571300830419767248 + field %w241 = 17259785660502616862 + field %w242 = 4298425495274316083 + field %w243 = 9023601070579319352 + field %w244 = 7353589709321807492 + field %w245 = 2988848909076209475 + field %w246 = 10439527789422046135 + field %w247 = 6097734044161429459 + field %w248 = 1113429873817861476 + field %w249 = 1639063372386966591 + field %w250 = 7863102812716788759 + field %w251 = 216040220732135364 + field %w252 = 14252611488623712688 + field %w253 = 9543395466794536974 + field %w254 = 2714461051639810934 + field %w255 = 2588317208781407279 + field %w256 = 15458529123534594916 + field %w257 = 15748417817551040856 + field %w258 = 16414455697114422951 + field %w259 = 13378164466674639511 + field %w260 = 13894319928411294675 + field %w261 = 5032680892090751540 + field %w262 = 17201338494743078916 + field %w263 = 4397422800601932505 + field %w264 = 11285062031581972327 + field %w265 = 7309354640676468207 + field %w266 = 10457152817239331848 + field %w267 = 8855911538863247046 + field %w268 = 4301853449821814398 + field %w269 = 13001502396339103326 + field %w270 = 10218424535115580246 + field %w271 = 8628244713920681895 + field %w272 = 17410423622514037261 + field %w273 = 14080683768439215375 + field %w274 = 11453161143447188100 + field %w275 = 16761509772042181939 + field %w276 = 6688821660695954082 + field %w277 = 12083434295263160416 + field %w278 = 8540021431714616589 + field %w279 = 6891616215679974226 + field %w280 = 10229217098454812721 + field %w281 = 3292165387203778711 + field %w282 = 6090113424998243490 + field %w283 = 13431780521962358660 + field %w284 = 6061081364215809883 + field %w285 = 16792066504222214142 + field %w286 = 16134314044798124799 + field %w287 = 17070233710126619765 + field %w288 = 6915716851370550800 + field %w289 = 9505009849073026581 + field %w290 = 6422700465081897153 + field %w291 = 17977653991560529185 + field %w292 = 5800870252836247255 + field %w293 = 12096124733159345520 + field %w294 = 7679273623392321940 + field %w295 = 17835783910585744964 + field %w296 = 2478664878205754377 + field %w297 = 1720314468413114967 + field %w298 = 10376757819003248056 + field %w299 = 10376377187857634245 + field %w300 = 13344930747504284997 + field %w301 = 11579281865160153596 + field %w302 = 10300256980048736962 + field %w303 = 378765236515040565 + field %w304 = 11412420941557253424 + field %w305 = 12931662470734252786 + field %w306 = 43018908376346374 + field %w307 = 3589810689190160071 + field %w308 = 4688229274750659741 + field %w309 = 13688957436484306091 + field %w310 = 11424740943016984272 + field %w311 = 16001900718237913960 + field %w312 = 5548469743008097574 + field %w313 = 14584404916672178680 + field %w314 = 3396622135873576824 + field %w315 = 7861729246871155992 + field %w316 = 16112271126908045545 + field %w317 = 16988163966860016012 + field %w318 = 273641680619529493 + field %w319 = 15222677154027327363 + field %w320 = 4070328078309830604 + field %w321 = 13520458500363296391 + field %w322 = 8235111705801363015 + field %w323 = 5575990058472514138 + field %w324 = 2751301609188252989 + field %w325 = 6478598528223547074 + field %w326 = 386565553848556638 + field %w327 = 9417729078939938713 + field %w328 = 15204315939835727483 + field %w329 = 14942015033780606261 + field %w330 = 18369423901636582012 + field %w331 = 4715338437538604447 + field %w332 = 6840590980607806319 + field %w333 = 5535471161490539014 + field %w334 = 5341328005359029952 + field %w335 = 1475161295215894444 + field %w336 = 7999197814297036636 + field %w337 = 2984233088665867938 + field %w338 = 3097746028144832229 + field %w339 = 8849530863480031517 + field %w340 = 7464920943249009773 + field %w341 = 3802996844641460514 + field %w342 = 6284458522545927646 + field %w343 = 2307388003445002779 + field %w344 = 4461479354745457623 + field %w345 = 1649739722664588460 + field %w346 = 3008391274160432867 + field %w347 = 5142217010456550622 + field %w348 = 1775580461722730120 + field %w349 = 161694268822794344 + field %w350 = 1518963253808031703 + field %w351 = 16475258091652710137 + field %w352 = 119575899007375159 + field %w353 = 1275863735937973999 + field %w354 = 16539412514520642374 + field %w355 = 2303365191438051950 + field %w356 = 6435126839960916075 + field %w357 = 17794599201026020053 + field %w358 = 13847097589277840330 + field %w359 = 16645869274577729720 + field %w360 = 8039205965509554440 + field %w361 = 4788586935019371140 + field %w362 = 15129007200040077746 + field %w363 = 2055561615223771341 + field %w364 = 4149731103701412892 + field %w365 = 10268130195734144189 + field %w366 = 13406631635880074708 + field %w367 = 11429218277824986203 + field %w368 = 15773968030812198565 + field %w369 = 16050275277550506872 + field %w370 = 11858586752031736643 + field %w371 = 8927746344866569756 + field %w372 = 11802068403177695792 + field %w373 = 157833420806751556 + field %w374 = 4698875910749767878 + field %w375 = 1616722774788291698 + field %w376 = 3990951895163748090 + field %w377 = 16758609224720795472 + field %w378 = 3045571693290741477 + field %w379 = 9281634245289836419 + field %w380 = 13517688176723875370 + field %w381 = 7961395585333219380 + field %w382 = 1606574359105691080 + field %w383 = 17564372683613562171 + field %w384 = 4664015225343144418 + field %w385 = 6133721340680280128 + field %w386 = 2667022304383014929 + field %w387 = 12316557761857340230 + field %w388 = 10375614850625292317 + field %w389 = 8141542666379135068 + field %w390 = 9185476451083834432 + field %w391 = 4991072365274649547 + field %w392 = 17398204971778820365 + field %w393 = 16127888338958422584 + field %w394 = 13586792051317758204 + field %w395 = 17 + field %w396 = 15 + field %w397 = 41 + field %w398 = 16 + field %w399 = 2 + field %w400 = 28 + field %w401 = 13 + field %w402 = 13 + field %w403 = 39 + field %w404 = 18 + field %w405 = 34 + field %w406 = 20 + field %w407 = 8 + field %w408 = 0 + field %w409 = 0 + field %w410 = 0 + field %w411 = 0 + field %w412 = 0 + field %w413 = 0 + field %w414 = 0 + field %w415 = 0 + field %w416 = 0 + field %w417 = 0 + field %w418 = 0 + %w23 = %w23 + %w35 + %w24 = %w24 + %w36 + %w25 = %w25 + %w37 + %w26 = %w26 + %w38 + %w27 = %w27 + %w39 + %w28 = %w28 + %w40 + %w29 = %w29 + %w41 + %w30 = %w30 + %w42 + %w31 = %w31 + %w43 + %w32 = %w32 + %w44 + %w33 = %w33 + %w45 + %w34 = %w34 + %w46 + field %w419 = %w23 ** 7 + field %w420 = %w24 ** 7 + field %w421 = %w25 ** 7 + field %w422 = %w26 ** 7 + field %w423 = %w27 ** 7 + field %w424 = %w28 ** 7 + field %w425 = %w29 ** 7 + field %w426 = %w30 ** 7 + field %w427 = %w31 ** 7 + field %w428 = %w32 ** 7 + field %w429 = %w33 ** 7 + field %w430 = %w34 ** 7 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w47 + %w24 = %w24 + %w48 + %w25 = %w25 + %w49 + %w26 = %w26 + %w50 + %w27 = %w27 + %w51 + %w28 = %w28 + %w52 + %w29 = %w29 + %w53 + %w30 = %w30 + %w54 + %w31 = %w31 + %w55 + %w32 = %w32 + %w56 + %w33 = %w33 + %w57 + %w34 = %w34 + %w58 + %w419 = %w23 ** 7 + %w420 = %w24 ** 7 + %w421 = %w25 ** 7 + %w422 = %w26 ** 7 + %w423 = %w27 ** 7 + %w424 = %w28 ** 7 + %w425 = %w29 ** 7 + %w426 = %w30 ** 7 + %w427 = %w31 ** 7 + %w428 = %w32 ** 7 + %w429 = %w33 ** 7 + %w430 = %w34 ** 7 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w59 + %w24 = %w24 + %w60 + %w25 = %w25 + %w61 + %w26 = %w26 + %w62 + %w27 = %w27 + %w63 + %w28 = %w28 + %w64 + %w29 = %w29 + %w65 + %w30 = %w30 + %w66 + %w31 = %w31 + %w67 + %w32 = %w32 + %w68 + %w33 = %w33 + %w69 + %w34 = %w34 + %w70 + %w419 = %w23 ** 7 + %w420 = %w24 ** 7 + %w421 = %w25 ** 7 + %w422 = %w26 ** 7 + %w423 = %w27 ** 7 + %w424 = %w28 ** 7 + %w425 = %w29 ** 7 + %w426 = %w30 ** 7 + %w427 = %w31 ** 7 + %w428 = %w32 ** 7 + %w429 = %w33 ** 7 + %w430 = %w34 ** 7 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w71 + %w24 = %w24 + %w72 + %w25 = %w25 + %w73 + %w26 = %w26 + %w74 + %w27 = %w27 + %w75 + %w28 = %w28 + %w76 + %w29 = %w29 + %w77 + %w30 = %w30 + %w78 + %w31 = %w31 + %w79 + %w32 = %w32 + %w80 + %w33 = %w33 + %w81 + %w34 = %w34 + %w82 + %w419 = %w23 ** 7 + %w420 = %w24 ** 7 + %w421 = %w25 ** 7 + %w422 = %w26 ** 7 + %w423 = %w27 ** 7 + %w424 = %w28 ** 7 + %w425 = %w29 ** 7 + %w426 = %w30 ** 7 + %w427 = %w31 ** 7 + %w428 = %w32 ** 7 + %w429 = %w33 ** 7 + %w430 = %w34 ** 7 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w83 + %w24 = %w24 + %w84 + %w25 = %w25 + %w85 + %w26 = %w26 + %w86 + %w27 = %w27 + %w87 + %w28 = %w28 + %w88 + %w29 = %w29 + %w89 + %w30 = %w30 + %w90 + %w31 = %w31 + %w91 + %w32 = %w32 + %w92 + %w33 = %w33 + %w93 + %w34 = %w34 + %w94 + %w419 = %w23 ** 7 + %w420 = %w24 + %w421 = %w25 + %w422 = %w26 + %w423 = %w27 + %w424 = %w28 + %w425 = %w29 + %w426 = %w30 + %w427 = %w31 + %w428 = %w32 + %w429 = %w33 + %w430 = %w34 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w95 + %w24 = %w24 + %w96 + %w25 = %w25 + %w97 + %w26 = %w26 + %w98 + %w27 = %w27 + %w99 + %w28 = %w28 + %w100 + %w29 = %w29 + %w101 + %w30 = %w30 + %w102 + %w31 = %w31 + %w103 + %w32 = %w32 + %w104 + %w33 = %w33 + %w105 + %w34 = %w34 + %w106 + %w419 = %w23 ** 7 + %w420 = %w24 + %w421 = %w25 + %w422 = %w26 + %w423 = %w27 + %w424 = %w28 + %w425 = %w29 + %w426 = %w30 + %w427 = %w31 + %w428 = %w32 + %w429 = %w33 + %w430 = %w34 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w107 + %w24 = %w24 + %w108 + %w25 = %w25 + %w109 + %w26 = %w26 + %w110 + %w27 = %w27 + %w111 + %w28 = %w28 + %w112 + %w29 = %w29 + %w113 + %w30 = %w30 + %w114 + %w31 = %w31 + %w115 + %w32 = %w32 + %w116 + %w33 = %w33 + %w117 + %w34 = %w34 + %w118 + %w419 = %w23 ** 7 + %w420 = %w24 + %w421 = %w25 + %w422 = %w26 + %w423 = %w27 + %w424 = %w28 + %w425 = %w29 + %w426 = %w30 + %w427 = %w31 + %w428 = %w32 + %w429 = %w33 + %w430 = %w34 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w119 + %w24 = %w24 + %w120 + %w25 = %w25 + %w121 + %w26 = %w26 + %w122 + %w27 = %w27 + %w123 + %w28 = %w28 + %w124 + %w29 = %w29 + %w125 + %w30 = %w30 + %w126 + %w31 = %w31 + %w127 + %w32 = %w32 + %w128 + %w33 = %w33 + %w129 + %w34 = %w34 + %w130 + %w419 = %w23 ** 7 + %w420 = %w24 + %w421 = %w25 + %w422 = %w26 + %w423 = %w27 + %w424 = %w28 + %w425 = %w29 + %w426 = %w30 + %w427 = %w31 + %w428 = %w32 + %w429 = %w33 + %w430 = %w34 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w131 + %w24 = %w24 + %w132 + %w25 = %w25 + %w133 + %w26 = %w26 + %w134 + %w27 = %w27 + %w135 + %w28 = %w28 + %w136 + %w29 = %w29 + %w137 + %w30 = %w30 + %w138 + %w31 = %w31 + %w139 + %w32 = %w32 + %w140 + %w33 = %w33 + %w141 + %w34 = %w34 + %w142 + %w419 = %w23 ** 7 + %w420 = %w24 + %w421 = %w25 + %w422 = %w26 + %w423 = %w27 + %w424 = %w28 + %w425 = %w29 + %w426 = %w30 + %w427 = %w31 + %w428 = %w32 + %w429 = %w33 + %w430 = %w34 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w143 + %w24 = %w24 + %w144 + %w25 = %w25 + %w145 + %w26 = %w26 + %w146 + %w27 = %w27 + %w147 + %w28 = %w28 + %w148 + %w29 = %w29 + %w149 + %w30 = %w30 + %w150 + %w31 = %w31 + %w151 + %w32 = %w32 + %w152 + %w33 = %w33 + %w153 + %w34 = %w34 + %w154 + %w419 = %w23 ** 7 + %w420 = %w24 + %w421 = %w25 + %w422 = %w26 + %w423 = %w27 + %w424 = %w28 + %w425 = %w29 + %w426 = %w30 + %w427 = %w31 + %w428 = %w32 + %w429 = %w33 + %w430 = %w34 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w155 + %w24 = %w24 + %w156 + %w25 = %w25 + %w157 + %w26 = %w26 + %w158 + %w27 = %w27 + %w159 + %w28 = %w28 + %w160 + %w29 = %w29 + %w161 + %w30 = %w30 + %w162 + %w31 = %w31 + %w163 + %w32 = %w32 + %w164 + %w33 = %w33 + %w165 + %w34 = %w34 + %w166 + %w419 = %w23 ** 7 + %w420 = %w24 + %w421 = %w25 + %w422 = %w26 + %w423 = %w27 + %w424 = %w28 + %w425 = %w29 + %w426 = %w30 + %w427 = %w31 + %w428 = %w32 + %w429 = %w33 + %w430 = %w34 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w167 + %w24 = %w24 + %w168 + %w25 = %w25 + %w169 + %w26 = %w26 + %w170 + %w27 = %w27 + %w171 + %w28 = %w28 + %w172 + %w29 = %w29 + %w173 + %w30 = %w30 + %w174 + %w31 = %w31 + %w175 + %w32 = %w32 + %w176 + %w33 = %w33 + %w177 + %w34 = %w34 + %w178 + %w419 = %w23 ** 7 + %w420 = %w24 + %w421 = %w25 + %w422 = %w26 + %w423 = %w27 + %w424 = %w28 + %w425 = %w29 + %w426 = %w30 + %w427 = %w31 + %w428 = %w32 + %w429 = %w33 + %w430 = %w34 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w179 + %w24 = %w24 + %w180 + %w25 = %w25 + %w181 + %w26 = %w26 + %w182 + %w27 = %w27 + %w183 + %w28 = %w28 + %w184 + %w29 = %w29 + %w185 + %w30 = %w30 + %w186 + %w31 = %w31 + %w187 + %w32 = %w32 + %w188 + %w33 = %w33 + %w189 + %w34 = %w34 + %w190 + %w419 = %w23 ** 7 + %w420 = %w24 + %w421 = %w25 + %w422 = %w26 + %w423 = %w27 + %w424 = %w28 + %w425 = %w29 + %w426 = %w30 + %w427 = %w31 + %w428 = %w32 + %w429 = %w33 + %w430 = %w34 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w191 + %w24 = %w24 + %w192 + %w25 = %w25 + %w193 + %w26 = %w26 + %w194 + %w27 = %w27 + %w195 + %w28 = %w28 + %w196 + %w29 = %w29 + %w197 + %w30 = %w30 + %w198 + %w31 = %w31 + %w199 + %w32 = %w32 + %w200 + %w33 = %w33 + %w201 + %w34 = %w34 + %w202 + %w419 = %w23 ** 7 + %w420 = %w24 + %w421 = %w25 + %w422 = %w26 + %w423 = %w27 + %w424 = %w28 + %w425 = %w29 + %w426 = %w30 + %w427 = %w31 + %w428 = %w32 + %w429 = %w33 + %w430 = %w34 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w203 + %w24 = %w24 + %w204 + %w25 = %w25 + %w205 + %w26 = %w26 + %w206 + %w27 = %w27 + %w207 + %w28 = %w28 + %w208 + %w29 = %w29 + %w209 + %w30 = %w30 + %w210 + %w31 = %w31 + %w211 + %w32 = %w32 + %w212 + %w33 = %w33 + %w213 + %w34 = %w34 + %w214 + %w419 = %w23 ** 7 + %w420 = %w24 + %w421 = %w25 + %w422 = %w26 + %w423 = %w27 + %w424 = %w28 + %w425 = %w29 + %w426 = %w30 + %w427 = %w31 + %w428 = %w32 + %w429 = %w33 + %w430 = %w34 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w215 + %w24 = %w24 + %w216 + %w25 = %w25 + %w217 + %w26 = %w26 + %w218 + %w27 = %w27 + %w219 + %w28 = %w28 + %w220 + %w29 = %w29 + %w221 + %w30 = %w30 + %w222 + %w31 = %w31 + %w223 + %w32 = %w32 + %w224 + %w33 = %w33 + %w225 + %w34 = %w34 + %w226 + %w419 = %w23 ** 7 + %w420 = %w24 + %w421 = %w25 + %w422 = %w26 + %w423 = %w27 + %w424 = %w28 + %w425 = %w29 + %w426 = %w30 + %w427 = %w31 + %w428 = %w32 + %w429 = %w33 + %w430 = %w34 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w227 + %w24 = %w24 + %w228 + %w25 = %w25 + %w229 + %w26 = %w26 + %w230 + %w27 = %w27 + %w231 + %w28 = %w28 + %w232 + %w29 = %w29 + %w233 + %w30 = %w30 + %w234 + %w31 = %w31 + %w235 + %w32 = %w32 + %w236 + %w33 = %w33 + %w237 + %w34 = %w34 + %w238 + %w419 = %w23 ** 7 + %w420 = %w24 + %w421 = %w25 + %w422 = %w26 + %w423 = %w27 + %w424 = %w28 + %w425 = %w29 + %w426 = %w30 + %w427 = %w31 + %w428 = %w32 + %w429 = %w33 + %w430 = %w34 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w239 + %w24 = %w24 + %w240 + %w25 = %w25 + %w241 + %w26 = %w26 + %w242 + %w27 = %w27 + %w243 + %w28 = %w28 + %w244 + %w29 = %w29 + %w245 + %w30 = %w30 + %w246 + %w31 = %w31 + %w247 + %w32 = %w32 + %w248 + %w33 = %w33 + %w249 + %w34 = %w34 + %w250 + %w419 = %w23 ** 7 + %w420 = %w24 + %w421 = %w25 + %w422 = %w26 + %w423 = %w27 + %w424 = %w28 + %w425 = %w29 + %w426 = %w30 + %w427 = %w31 + %w428 = %w32 + %w429 = %w33 + %w430 = %w34 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w251 + %w24 = %w24 + %w252 + %w25 = %w25 + %w253 + %w26 = %w26 + %w254 + %w27 = %w27 + %w255 + %w28 = %w28 + %w256 + %w29 = %w29 + %w257 + %w30 = %w30 + %w258 + %w31 = %w31 + %w259 + %w32 = %w32 + %w260 + %w33 = %w33 + %w261 + %w34 = %w34 + %w262 + %w419 = %w23 ** 7 + %w420 = %w24 + %w421 = %w25 + %w422 = %w26 + %w423 = %w27 + %w424 = %w28 + %w425 = %w29 + %w426 = %w30 + %w427 = %w31 + %w428 = %w32 + %w429 = %w33 + %w430 = %w34 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w263 + %w24 = %w24 + %w264 + %w25 = %w25 + %w265 + %w26 = %w26 + %w266 + %w27 = %w27 + %w267 + %w28 = %w28 + %w268 + %w29 = %w29 + %w269 + %w30 = %w30 + %w270 + %w31 = %w31 + %w271 + %w32 = %w32 + %w272 + %w33 = %w33 + %w273 + %w34 = %w34 + %w274 + %w419 = %w23 ** 7 + %w420 = %w24 + %w421 = %w25 + %w422 = %w26 + %w423 = %w27 + %w424 = %w28 + %w425 = %w29 + %w426 = %w30 + %w427 = %w31 + %w428 = %w32 + %w429 = %w33 + %w430 = %w34 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w275 + %w24 = %w24 + %w276 + %w25 = %w25 + %w277 + %w26 = %w26 + %w278 + %w27 = %w27 + %w279 + %w28 = %w28 + %w280 + %w29 = %w29 + %w281 + %w30 = %w30 + %w282 + %w31 = %w31 + %w283 + %w32 = %w32 + %w284 + %w33 = %w33 + %w285 + %w34 = %w34 + %w286 + %w419 = %w23 ** 7 + %w420 = %w24 + %w421 = %w25 + %w422 = %w26 + %w423 = %w27 + %w424 = %w28 + %w425 = %w29 + %w426 = %w30 + %w427 = %w31 + %w428 = %w32 + %w429 = %w33 + %w430 = %w34 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w287 + %w24 = %w24 + %w288 + %w25 = %w25 + %w289 + %w26 = %w26 + %w290 + %w27 = %w27 + %w291 + %w28 = %w28 + %w292 + %w29 = %w29 + %w293 + %w30 = %w30 + %w294 + %w31 = %w31 + %w295 + %w32 = %w32 + %w296 + %w33 = %w33 + %w297 + %w34 = %w34 + %w298 + %w419 = %w23 ** 7 + %w420 = %w24 + %w421 = %w25 + %w422 = %w26 + %w423 = %w27 + %w424 = %w28 + %w425 = %w29 + %w426 = %w30 + %w427 = %w31 + %w428 = %w32 + %w429 = %w33 + %w430 = %w34 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w299 + %w24 = %w24 + %w300 + %w25 = %w25 + %w301 + %w26 = %w26 + %w302 + %w27 = %w27 + %w303 + %w28 = %w28 + %w304 + %w29 = %w29 + %w305 + %w30 = %w30 + %w306 + %w31 = %w31 + %w307 + %w32 = %w32 + %w308 + %w33 = %w33 + %w309 + %w34 = %w34 + %w310 + %w419 = %w23 ** 7 + %w420 = %w24 + %w421 = %w25 + %w422 = %w26 + %w423 = %w27 + %w424 = %w28 + %w425 = %w29 + %w426 = %w30 + %w427 = %w31 + %w428 = %w32 + %w429 = %w33 + %w430 = %w34 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w311 + %w24 = %w24 + %w312 + %w25 = %w25 + %w313 + %w26 = %w26 + %w314 + %w27 = %w27 + %w315 + %w28 = %w28 + %w316 + %w29 = %w29 + %w317 + %w30 = %w30 + %w318 + %w31 = %w31 + %w319 + %w32 = %w32 + %w320 + %w33 = %w33 + %w321 + %w34 = %w34 + %w322 + %w419 = %w23 ** 7 + %w420 = %w24 + %w421 = %w25 + %w422 = %w26 + %w423 = %w27 + %w424 = %w28 + %w425 = %w29 + %w426 = %w30 + %w427 = %w31 + %w428 = %w32 + %w429 = %w33 + %w430 = %w34 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w323 + %w24 = %w24 + %w324 + %w25 = %w25 + %w325 + %w26 = %w26 + %w326 + %w27 = %w27 + %w327 + %w28 = %w28 + %w328 + %w29 = %w29 + %w329 + %w30 = %w30 + %w330 + %w31 = %w31 + %w331 + %w32 = %w32 + %w332 + %w33 = %w33 + %w333 + %w34 = %w34 + %w334 + %w419 = %w23 ** 7 + %w420 = %w24 + %w421 = %w25 + %w422 = %w26 + %w423 = %w27 + %w424 = %w28 + %w425 = %w29 + %w426 = %w30 + %w427 = %w31 + %w428 = %w32 + %w429 = %w33 + %w430 = %w34 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w335 + %w24 = %w24 + %w336 + %w25 = %w25 + %w337 + %w26 = %w26 + %w338 + %w27 = %w27 + %w339 + %w28 = %w28 + %w340 + %w29 = %w29 + %w341 + %w30 = %w30 + %w342 + %w31 = %w31 + %w343 + %w32 = %w32 + %w344 + %w33 = %w33 + %w345 + %w34 = %w34 + %w346 + %w419 = %w23 ** 7 + %w420 = %w24 + %w421 = %w25 + %w422 = %w26 + %w423 = %w27 + %w424 = %w28 + %w425 = %w29 + %w426 = %w30 + %w427 = %w31 + %w428 = %w32 + %w429 = %w33 + %w430 = %w34 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w347 + %w24 = %w24 + %w348 + %w25 = %w25 + %w349 + %w26 = %w26 + %w350 + %w27 = %w27 + %w351 + %w28 = %w28 + %w352 + %w29 = %w29 + %w353 + %w30 = %w30 + %w354 + %w31 = %w31 + %w355 + %w32 = %w32 + %w356 + %w33 = %w33 + %w357 + %w34 = %w34 + %w358 + %w419 = %w23 ** 7 + %w420 = %w24 ** 7 + %w421 = %w25 ** 7 + %w422 = %w26 ** 7 + %w423 = %w27 ** 7 + %w424 = %w28 ** 7 + %w425 = %w29 ** 7 + %w426 = %w30 ** 7 + %w427 = %w31 ** 7 + %w428 = %w32 ** 7 + %w429 = %w33 ** 7 + %w430 = %w34 ** 7 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w359 + %w24 = %w24 + %w360 + %w25 = %w25 + %w361 + %w26 = %w26 + %w362 + %w27 = %w27 + %w363 + %w28 = %w28 + %w364 + %w29 = %w29 + %w365 + %w30 = %w30 + %w366 + %w31 = %w31 + %w367 + %w32 = %w32 + %w368 + %w33 = %w33 + %w369 + %w34 = %w34 + %w370 + %w419 = %w23 ** 7 + %w420 = %w24 ** 7 + %w421 = %w25 ** 7 + %w422 = %w26 ** 7 + %w423 = %w27 ** 7 + %w424 = %w28 ** 7 + %w425 = %w29 ** 7 + %w426 = %w30 ** 7 + %w427 = %w31 ** 7 + %w428 = %w32 ** 7 + %w429 = %w33 ** 7 + %w430 = %w34 ** 7 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w371 + %w24 = %w24 + %w372 + %w25 = %w25 + %w373 + %w26 = %w26 + %w374 + %w27 = %w27 + %w375 + %w28 = %w28 + %w376 + %w29 = %w29 + %w377 + %w30 = %w30 + %w378 + %w31 = %w31 + %w379 + %w32 = %w32 + %w380 + %w33 = %w33 + %w381 + %w34 = %w34 + %w382 + %w419 = %w23 ** 7 + %w420 = %w24 ** 7 + %w421 = %w25 ** 7 + %w422 = %w26 ** 7 + %w423 = %w27 ** 7 + %w424 = %w28 ** 7 + %w425 = %w29 ** 7 + %w426 = %w30 ** 7 + %w427 = %w31 ** 7 + %w428 = %w32 ** 7 + %w429 = %w33 ** 7 + %w430 = %w34 ** 7 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w383 + %w24 = %w24 + %w384 + %w25 = %w25 + %w385 + %w26 = %w26 + %w386 + %w27 = %w27 + %w387 + %w28 = %w28 + %w388 + %w29 = %w29 + %w389 + %w30 = %w30 + %w390 + %w31 = %w31 + %w391 + %w32 = %w32 + %w392 + %w33 = %w33 + %w393 + %w34 = %w34 + %w394 + %w419 = %w23 ** 7 + %w420 = %w24 ** 7 + %w421 = %w25 ** 7 + %w422 = %w26 ** 7 + %w423 = %w27 ** 7 + %w424 = %w28 ** 7 + %w425 = %w29 ** 7 + %w426 = %w30 ** 7 + %w427 = %w31 ** 7 + %w428 = %w32 ** 7 + %w429 = %w33 ** 7 + %w430 = %w34 ** 7 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + field[12 ] %w431 + field %w432 = %w23 + field %w433 = %w24 + field %w434 = %w25 + field %w435 = %w26 + field %w436 = %w27 + field %w437 = %w28 + field %w438 = %w29 + field %w439 = %w30 + field %w440 = %w31 + field %w441 = %w32 + field %w442 = %w33 + field %w443 = %w34 + %w431[0 ] = %w432 , init + %w431[1 ] = %w433 , init + %w431[2 ] = %w434 , init + %w431[3 ] = %w435 , init + %w431[4 ] = %w436 , init + %w431[5 ] = %w437 , init + %w431[6 ] = %w438 , init + %w431[7 ] = %w439 , init + %w431[8 ] = %w440 , init + %w431[9 ] = %w441 , init + %w431[10 ] = %w442 , init + %w431[11 ] = %w443 , init + field %w444 = %w431 + field %w445 = %w444 + field %w446 = %w445 + u32 %w447 = 0 + if %w447 != 12 : + field %w448 = %w446[%w447] + %w19 = %w19 + %w448 + %w447 = %w447 + 1 + else: + Dummy Load + if %w447 != 12 : + field %w448 = %w446[%w447] + %w19 = %w19 + %w448 + %w447 = %w447 + 1 + else: + Dummy Load + if %w447 != 12 : + field %w448 = %w446[%w447] + %w19 = %w19 + %w448 + %w447 = %w447 + 1 + else: + Dummy Load + if %w447 != 12 : + field %w448 = %w446[%w447] + %w19 = %w19 + %w448 + %w447 = %w447 + 1 + else: + Dummy Load + if %w447 != 12 : + field %w448 = %w446[%w447] + %w19 = %w19 + %w448 + %w447 = %w447 + 1 + else: + Dummy Load + if %w447 != 12 : + field %w448 = %w446[%w447] + %w19 = %w19 + %w448 + %w447 = %w447 + 1 + else: + Dummy Load + if %w447 != 12 : + field %w448 = %w446[%w447] + %w19 = %w19 + %w448 + %w447 = %w447 + 1 + else: + Dummy Load + if %w447 != 12 : + field %w448 = %w446[%w447] + %w19 = %w19 + %w448 + %w447 = %w447 + 1 + else: + Dummy Load + if %w447 != 12 : + field %w448 = %w446[%w447] + %w19 = %w19 + %w448 + %w447 = %w447 + 1 + else: + Dummy Load + if %w447 != 12 : + field %w448 = %w446[%w447] + %w19 = %w19 + %w448 + %w447 = %w447 + 1 + else: + Dummy Load + if %w447 != 12 : + field %w448 = %w446[%w447] + %w19 = %w19 + %w448 + %w447 = %w447 + 1 + else: + Dummy Load + if %w447 != 12 : + field %w448 = %w446[%w447] + %w19 = %w19 + %w448 + else: + Dummy Load + %w20 = %w20 + 1 + assert %o4(AS) == %w2(AS) + assert %o3(TS) == %w1(TS) + assert %o7 == %w19 + assert %o8 == %w20 + assert %o9 == %w18 + assert %o1(BN) == %w20 != 1000000 ? 1 : 2 +Transition: + %w20 != 1000000 ? -> 1 : -> 2 + +Block 2: +Func: main, Scope: 1 +Exec Bound: 1000000, While Loop: false +RO Ops: 0, VM Ops: 0 +Num Cons: 4 +Inputs: + %i1(BN): field + %i7: field +Outputs: + %o1(BN): field + %o2(RET): field +Instructions: + assert %i1(BN) == 2 + field %w19 = %i7 + field %w444 = %w19 + assert %o2(RET) == %w444 + assert %o1(BN) == 3 +Program terminates. + + +-- +Circ IR: +Optimizing IR... +done. +INPUT: [0, 0] + + +-- +Optimization: + + +-- +Post-Processing: +Entry block: 0 + +Block 0: +Func: main, Scope: 0 +Exec Bound: 1, While Loop: false +RO Ops: 0, VM Ops: 12 +Num Cons: 19 +Inputs: + %i1(BN): field + %i4(AS): field +Outputs: + %o1(BN): field + %o4(AS): field + %o3(TS): field + %o7: field + %o8: u32 + %o9: field +Instructions: + assert %i1(BN) == 0 + field %w2(AS) = %i4(AS) + field %w1(TS) = 0 + field[12 ] %w5 + field %w6 = 1 + field %w7 = 2 + field %w8 = 3 + field %w9 = 4 + field %w10 = 5 + field %w11 = 6 + field %w12 = 7 + field %w13 = 8 + field %w14 = 0 + field %w15 = 0 + field %w16 = 0 + field %w17 = 0 + %w5[0 ] = %w6 , init + %w5[1 ] = %w7 , init + %w5[2 ] = %w8 , init + %w5[3 ] = %w9 , init + %w5[4 ] = %w10 , init + %w5[5 ] = %w11 , init + %w5[6 ] = %w12 , init + %w5[7 ] = %w13 , init + %w5[8 ] = %w14 , init + %w5[9 ] = %w15 , init + %w5[10 ] = %w16 , init + %w5[11 ] = %w17 , init + field %w18 = %w5 + field %w19 = 0 + u32 %w20 = 0 + field %o4(AS) = %w2(AS) + field %o3(TS) = %w1(TS) + field %o7 = %w19 + u32 %o8 = %w20 + field %o9 = %w18 + field %o1(BN) = %w20 != 1000000 ? 1 : 2 +Transition: + %w20 != 1000000 ? -> 1 : -> 2 + +Block 1: +Func: main, Scope: 2 +Exec Bound: 1000000, While Loop: false +RO Ops: 0, VM Ops: 36 +Num Cons: 811 +Inputs: + %i1(BN): field + %i4(AS): field + %i3(TS): field + %i7: field + %i8: u32 + %i9: field +Outputs: + %o1(BN): field + %o4(AS): field + %o3(TS): field + %o7: field + %o8: u32 + %o9: field +Instructions: + assert %i1(BN) == 1 + field %w2(AS) = %i4(AS) + field %w1(TS) = %i3(TS) + field %w19 = %i7 + u32 %w20 = %i8 + field %w18 = %i9 + field %w21 = %w18 + field %w22 = %w21[0 ] + field %w23 = %w22 + field %w22 = %w21[1 ] + field %w24 = %w22 + field %w22 = %w21[2 ] + field %w25 = %w22 + field %w22 = %w21[3 ] + field %w26 = %w22 + field %w22 = %w21[4 ] + field %w27 = %w22 + field %w22 = %w21[5 ] + field %w28 = %w22 + field %w22 = %w21[6 ] + field %w29 = %w22 + field %w22 = %w21[7 ] + field %w30 = %w22 + field %w22 = %w21[8 ] + field %w31 = %w22 + field %w22 = %w21[9 ] + field %w32 = %w22 + field %w22 = %w21[10 ] + field %w33 = %w22 + field %w22 = %w21[11 ] + field %w34 = %w22 + field %w35 = 13080132714287612933 + field %w36 = 8594738767457295063 + field %w37 = 12896916465481390516 + field %w38 = 1109962092811921367 + field %w39 = 16216730422861946898 + field %w40 = 10137062673499593713 + field %w41 = 15292064466732465823 + field %w42 = 17255573294985989181 + field %w43 = 14827154241873003558 + field %w44 = 2846171647972703231 + field %w45 = 16246264663680317601 + field %w46 = 14214208087951879286 + field %w47 = 9667108687426275457 + field %w48 = 6470857420712283733 + field %w49 = 14103331940138337652 + field %w50 = 11854816473550292865 + field %w51 = 3498097497301325516 + field %w52 = 7947235692523864220 + field %w53 = 11110078701231901946 + field %w54 = 16384314112672821048 + field %w55 = 15404405912655775739 + field %w56 = 14077880830714445579 + field %w57 = 9555554662709218279 + field %w58 = 13859595358210603949 + field %w59 = 16859897325061800066 + field %w60 = 17685474420222222349 + field %w61 = 17858764734618734949 + field %w62 = 9410011022665866671 + field %w63 = 12495243629579414666 + field %w64 = 12416945298171515742 + field %w65 = 5776666812364270983 + field %w66 = 6314421662864060481 + field %w67 = 7402742471423223171 + field %w68 = 982536713192432718 + field %w69 = 17321168865775127905 + field %w70 = 2934354895005980211 + field %w71 = 10567510598607410195 + field %w72 = 8135543733717919110 + field %w73 = 116353493081713692 + field %w74 = 8029688163494945618 + field %w75 = 9003846637224807585 + field %w76 = 7052445132467233849 + field %w77 = 9645665432288852853 + field %w78 = 5446430061030868787 + field %w79 = 16770910634346036823 + field %w80 = 17708360571433944729 + field %w81 = 4661556288322237631 + field %w82 = 11977051899316327985 + field %w83 = 4378616569090929672 + field %w84 = 3334807502817538491 + field %w85 = 8019184735943344966 + field %w86 = 2395043908812246395 + field %w87 = 6558421058331732611 + field %w88 = 11735894060727326369 + field %w89 = 8143540538889204488 + field %w90 = 5991753489563751169 + field %w91 = 12235918791502088007 + field %w92 = 2880312033702687139 + field %w93 = 18224748115308382355 + field %w94 = 18070411013125314165 + field %w95 = 8156487614120951180 + field %w96 = 10615269510047010719 + field %w97 = 12489426404754222075 + field %w98 = 5055279340069995710 + field %w99 = 7231927319780248664 + field %w100 = 2602078848106763799 + field %w101 = 12445944369334781425 + field %w102 = 3978905923892496205 + field %w103 = 16711272944329818038 + field %w104 = 10439032361227108922 + field %w105 = 15110119871725214866 + field %w106 = 821141790655890946 + field %w107 = 11073536380651186235 + field %w108 = 4866839313097607757 + field %w109 = 13118391689513956636 + field %w110 = 14527674973762312380 + field %w111 = 7612751959265567999 + field %w112 = 6808090907814178161 + field %w113 = 6899703779492644997 + field %w114 = 3664666286336986826 + field %w115 = 783179505424462608 + field %w116 = 8990689241814097697 + field %w117 = 9646603555412825679 + field %w118 = 7351246026167205041 + field %w119 = 16970959813722173256 + field %w120 = 15735726858241466429 + field %w121 = 10347018221892268419 + field %w122 = 12195545878449322889 + field %w123 = 7423314197114049891 + field %w124 = 14908016116973904153 + field %w125 = 5840340122527363265 + field %w126 = 17740311462440614128 + field %w127 = 815306421953744623 + field %w128 = 17456357368219253949 + field %w129 = 6982651076559329072 + field %w130 = 11970987324614963868 + field %w131 = 8167785008538063246 + field %w132 = 9483259819397403968 + field %w133 = 954550221664291548 + field %w134 = 10339565171024313256 + field %w135 = 8651171084286500102 + field %w136 = 16974445528003515956 + field %w137 = 15104530047940621190 + field %w138 = 103271880867179718 + field %w139 = 14654666245504492663 + field %w140 = 12445769555936887967 + field %w141 = 11250582358051997490 + field %w142 = 6730977207490590241 + field %w143 = 15919951556166196935 + field %w144 = 4423540216573360915 + field %w145 = 16317664700341473511 + field %w146 = 4723997214951767765 + field %w147 = 10098756619006575500 + field %w148 = 3223149401237667964 + field %w149 = 6870494874300767682 + field %w150 = 2902095711130291898 + field %w151 = 7159372652788439733 + field %w152 = 11500508372997952671 + field %w153 = 13348148181479462670 + field %w154 = 12729401155983882093 + field %w155 = 15021242795466053388 + field %w156 = 3802990509227527157 + field %w157 = 4665459515680145682 + field %w158 = 13165553315407675603 + field %w159 = 6496364397926233172 + field %w160 = 12800832566287577810 + field %w161 = 9737592377590267426 + field %w162 = 8687131091302514939 + field %w163 = 1488200421755445892 + field %w164 = 11004377668730991641 + field %w165 = 13516338734600228410 + field %w166 = 2953581820660217936 + field %w167 = 3505040783153922951 + field %w168 = 3710332827435113697 + field %w169 = 15414874040873320221 + field %w170 = 8602547649919482301 + field %w171 = 13971349938398812007 + field %w172 = 187239246702636066 + field %w173 = 12886019973971254144 + field %w174 = 4512274763990493707 + field %w175 = 2986635507805503192 + field %w176 = 2315252455709119454 + field %w177 = 12537995864054210246 + field %w178 = 2039491936479859267 + field %w179 = 1558644089185031256 + field %w180 = 4074089203264759305 + field %w181 = 2522268501749395707 + field %w182 = 3414760436185256196 + field %w183 = 17420887529146466921 + field %w184 = 2817020417938125001 + field %w185 = 16538346563888261485 + field %w186 = 5592270336833998770 + field %w187 = 16876602064684906232 + field %w188 = 1793025614521516343 + field %w189 = 2178510518148748532 + field %w190 = 2726440714374752509 + field %w191 = 6502946837278398021 + field %w192 = 15816362857667988792 + field %w193 = 12997958454165692924 + field %w194 = 5314892854495903792 + field %w195 = 15533907063555687782 + field %w196 = 12312015675698548715 + field %w197 = 14140016464013350248 + field %w198 = 16325589062962838690 + field %w199 = 6796145646370327654 + field %w200 = 1168753512742361735 + field %w201 = 4100789820704709368 + field %w202 = 15947554381540469177 + field %w203 = 8597377839806076919 + field %w204 = 9704018824195918000 + field %w205 = 12763288618765762688 + field %w206 = 17249257732622847695 + field %w207 = 1998710993415069759 + field %w208 = 923759906393011543 + field %w209 = 1271051229666811593 + field %w210 = 17822362132088738077 + field %w211 = 11797234543722669271 + field %w212 = 5864538787265942447 + field %w213 = 15975583211110506970 + field %w214 = 7258516085733671960 + field %w215 = 17999926471875633100 + field %w216 = 635992114476018166 + field %w217 = 17205047318256576347 + field %w218 = 17384900867876315312 + field %w219 = 16484825562915784226 + field %w220 = 16694130609036138894 + field %w221 = 10575069350371260875 + field %w222 = 8330575162062887277 + field %w223 = 6212375704691932880 + field %w224 = 15965138197626618226 + field %w225 = 14285453069600046939 + field %w226 = 10005163510208402517 + field %w227 = 885298637936952595 + field %w228 = 541790758138118921 + field %w229 = 5985203084790372993 + field %w230 = 4685030219775483721 + field %w231 = 1411106851304815020 + field %w232 = 11290732479954096478 + field %w233 = 208280581124868513 + field %w234 = 10979018648467968495 + field %w235 = 8600643745023338215 + field %w236 = 3477453626867126061 + field %w237 = 6428436309340258604 + field %w238 = 5695415667275657934 + field %w239 = 15952065508715623490 + field %w240 = 15571300830419767248 + field %w241 = 17259785660502616862 + field %w242 = 4298425495274316083 + field %w243 = 9023601070579319352 + field %w244 = 7353589709321807492 + field %w245 = 2988848909076209475 + field %w246 = 10439527789422046135 + field %w247 = 6097734044161429459 + field %w248 = 1113429873817861476 + field %w249 = 1639063372386966591 + field %w250 = 7863102812716788759 + field %w251 = 216040220732135364 + field %w252 = 14252611488623712688 + field %w253 = 9543395466794536974 + field %w254 = 2714461051639810934 + field %w255 = 2588317208781407279 + field %w256 = 15458529123534594916 + field %w257 = 15748417817551040856 + field %w258 = 16414455697114422951 + field %w259 = 13378164466674639511 + field %w260 = 13894319928411294675 + field %w261 = 5032680892090751540 + field %w262 = 17201338494743078916 + field %w263 = 4397422800601932505 + field %w264 = 11285062031581972327 + field %w265 = 7309354640676468207 + field %w266 = 10457152817239331848 + field %w267 = 8855911538863247046 + field %w268 = 4301853449821814398 + field %w269 = 13001502396339103326 + field %w270 = 10218424535115580246 + field %w271 = 8628244713920681895 + field %w272 = 17410423622514037261 + field %w273 = 14080683768439215375 + field %w274 = 11453161143447188100 + field %w275 = 16761509772042181939 + field %w276 = 6688821660695954082 + field %w277 = 12083434295263160416 + field %w278 = 8540021431714616589 + field %w279 = 6891616215679974226 + field %w280 = 10229217098454812721 + field %w281 = 3292165387203778711 + field %w282 = 6090113424998243490 + field %w283 = 13431780521962358660 + field %w284 = 6061081364215809883 + field %w285 = 16792066504222214142 + field %w286 = 16134314044798124799 + field %w287 = 17070233710126619765 + field %w288 = 6915716851370550800 + field %w289 = 9505009849073026581 + field %w290 = 6422700465081897153 + field %w291 = 17977653991560529185 + field %w292 = 5800870252836247255 + field %w293 = 12096124733159345520 + field %w294 = 7679273623392321940 + field %w295 = 17835783910585744964 + field %w296 = 2478664878205754377 + field %w297 = 1720314468413114967 + field %w298 = 10376757819003248056 + field %w299 = 10376377187857634245 + field %w300 = 13344930747504284997 + field %w301 = 11579281865160153596 + field %w302 = 10300256980048736962 + field %w303 = 378765236515040565 + field %w304 = 11412420941557253424 + field %w305 = 12931662470734252786 + field %w306 = 43018908376346374 + field %w307 = 3589810689190160071 + field %w308 = 4688229274750659741 + field %w309 = 13688957436484306091 + field %w310 = 11424740943016984272 + field %w311 = 16001900718237913960 + field %w312 = 5548469743008097574 + field %w313 = 14584404916672178680 + field %w314 = 3396622135873576824 + field %w315 = 7861729246871155992 + field %w316 = 16112271126908045545 + field %w317 = 16988163966860016012 + field %w318 = 273641680619529493 + field %w319 = 15222677154027327363 + field %w320 = 4070328078309830604 + field %w321 = 13520458500363296391 + field %w322 = 8235111705801363015 + field %w323 = 5575990058472514138 + field %w324 = 2751301609188252989 + field %w325 = 6478598528223547074 + field %w326 = 386565553848556638 + field %w327 = 9417729078939938713 + field %w328 = 15204315939835727483 + field %w329 = 14942015033780606261 + field %w330 = 18369423901636582012 + field %w331 = 4715338437538604447 + field %w332 = 6840590980607806319 + field %w333 = 5535471161490539014 + field %w334 = 5341328005359029952 + field %w335 = 1475161295215894444 + field %w336 = 7999197814297036636 + field %w337 = 2984233088665867938 + field %w338 = 3097746028144832229 + field %w339 = 8849530863480031517 + field %w340 = 7464920943249009773 + field %w341 = 3802996844641460514 + field %w342 = 6284458522545927646 + field %w343 = 2307388003445002779 + field %w344 = 4461479354745457623 + field %w345 = 1649739722664588460 + field %w346 = 3008391274160432867 + field %w347 = 5142217010456550622 + field %w348 = 1775580461722730120 + field %w349 = 161694268822794344 + field %w350 = 1518963253808031703 + field %w351 = 16475258091652710137 + field %w352 = 119575899007375159 + field %w353 = 1275863735937973999 + field %w354 = 16539412514520642374 + field %w355 = 2303365191438051950 + field %w356 = 6435126839960916075 + field %w357 = 17794599201026020053 + field %w358 = 13847097589277840330 + field %w359 = 16645869274577729720 + field %w360 = 8039205965509554440 + field %w361 = 4788586935019371140 + field %w362 = 15129007200040077746 + field %w363 = 2055561615223771341 + field %w364 = 4149731103701412892 + field %w365 = 10268130195734144189 + field %w366 = 13406631635880074708 + field %w367 = 11429218277824986203 + field %w368 = 15773968030812198565 + field %w369 = 16050275277550506872 + field %w370 = 11858586752031736643 + field %w371 = 8927746344866569756 + field %w372 = 11802068403177695792 + field %w373 = 157833420806751556 + field %w374 = 4698875910749767878 + field %w375 = 1616722774788291698 + field %w376 = 3990951895163748090 + field %w377 = 16758609224720795472 + field %w378 = 3045571693290741477 + field %w379 = 9281634245289836419 + field %w380 = 13517688176723875370 + field %w381 = 7961395585333219380 + field %w382 = 1606574359105691080 + field %w383 = 17564372683613562171 + field %w384 = 4664015225343144418 + field %w385 = 6133721340680280128 + field %w386 = 2667022304383014929 + field %w387 = 12316557761857340230 + field %w388 = 10375614850625292317 + field %w389 = 8141542666379135068 + field %w390 = 9185476451083834432 + field %w391 = 4991072365274649547 + field %w392 = 17398204971778820365 + field %w393 = 16127888338958422584 + field %w394 = 13586792051317758204 + field %w395 = 17 + field %w396 = 15 + field %w397 = 41 + field %w398 = 16 + field %w399 = 2 + field %w400 = 28 + field %w401 = 13 + field %w402 = 13 + field %w403 = 39 + field %w404 = 18 + field %w405 = 34 + field %w406 = 20 + field %w407 = 8 + field %w408 = 0 + field %w409 = 0 + field %w410 = 0 + field %w411 = 0 + field %w412 = 0 + field %w413 = 0 + field %w414 = 0 + field %w415 = 0 + field %w416 = 0 + field %w417 = 0 + field %w418 = 0 + %w23 = %w23 + %w35 + %w24 = %w24 + %w36 + %w25 = %w25 + %w37 + %w26 = %w26 + %w38 + %w27 = %w27 + %w39 + %w28 = %w28 + %w40 + %w29 = %w29 + %w41 + %w30 = %w30 + %w42 + %w31 = %w31 + %w43 + %w32 = %w32 + %w44 + %w33 = %w33 + %w45 + %w34 = %w34 + %w46 + field %w419 = %w23 ** 7 + field %w420 = %w24 ** 7 + field %w421 = %w25 ** 7 + field %w422 = %w26 ** 7 + field %w423 = %w27 ** 7 + field %w424 = %w28 ** 7 + field %w425 = %w29 ** 7 + field %w426 = %w30 ** 7 + field %w427 = %w31 ** 7 + field %w428 = %w32 ** 7 + field %w429 = %w33 ** 7 + field %w430 = %w34 ** 7 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w47 + %w24 = %w24 + %w48 + %w25 = %w25 + %w49 + %w26 = %w26 + %w50 + %w27 = %w27 + %w51 + %w28 = %w28 + %w52 + %w29 = %w29 + %w53 + %w30 = %w30 + %w54 + %w31 = %w31 + %w55 + %w32 = %w32 + %w56 + %w33 = %w33 + %w57 + %w34 = %w34 + %w58 + %w419 = %w23 ** 7 + %w420 = %w24 ** 7 + %w421 = %w25 ** 7 + %w422 = %w26 ** 7 + %w423 = %w27 ** 7 + %w424 = %w28 ** 7 + %w425 = %w29 ** 7 + %w426 = %w30 ** 7 + %w427 = %w31 ** 7 + %w428 = %w32 ** 7 + %w429 = %w33 ** 7 + %w430 = %w34 ** 7 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w59 + %w24 = %w24 + %w60 + %w25 = %w25 + %w61 + %w26 = %w26 + %w62 + %w27 = %w27 + %w63 + %w28 = %w28 + %w64 + %w29 = %w29 + %w65 + %w30 = %w30 + %w66 + %w31 = %w31 + %w67 + %w32 = %w32 + %w68 + %w33 = %w33 + %w69 + %w34 = %w34 + %w70 + %w419 = %w23 ** 7 + %w420 = %w24 ** 7 + %w421 = %w25 ** 7 + %w422 = %w26 ** 7 + %w423 = %w27 ** 7 + %w424 = %w28 ** 7 + %w425 = %w29 ** 7 + %w426 = %w30 ** 7 + %w427 = %w31 ** 7 + %w428 = %w32 ** 7 + %w429 = %w33 ** 7 + %w430 = %w34 ** 7 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w71 + %w24 = %w24 + %w72 + %w25 = %w25 + %w73 + %w26 = %w26 + %w74 + %w27 = %w27 + %w75 + %w28 = %w28 + %w76 + %w29 = %w29 + %w77 + %w30 = %w30 + %w78 + %w31 = %w31 + %w79 + %w32 = %w32 + %w80 + %w33 = %w33 + %w81 + %w34 = %w34 + %w82 + %w419 = %w23 ** 7 + %w420 = %w24 ** 7 + %w421 = %w25 ** 7 + %w422 = %w26 ** 7 + %w423 = %w27 ** 7 + %w424 = %w28 ** 7 + %w425 = %w29 ** 7 + %w426 = %w30 ** 7 + %w427 = %w31 ** 7 + %w428 = %w32 ** 7 + %w429 = %w33 ** 7 + %w430 = %w34 ** 7 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w83 + %w24 = %w24 + %w84 + %w25 = %w25 + %w85 + %w26 = %w26 + %w86 + %w27 = %w27 + %w87 + %w28 = %w28 + %w88 + %w29 = %w29 + %w89 + %w30 = %w30 + %w90 + %w31 = %w31 + %w91 + %w32 = %w32 + %w92 + %w33 = %w33 + %w93 + %w34 = %w34 + %w94 + %w419 = %w23 ** 7 + %w420 = %w24 + %w421 = %w25 + %w422 = %w26 + %w423 = %w27 + %w424 = %w28 + %w425 = %w29 + %w426 = %w30 + %w427 = %w31 + %w428 = %w32 + %w429 = %w33 + %w430 = %w34 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w95 + %w24 = %w24 + %w96 + %w25 = %w25 + %w97 + %w26 = %w26 + %w98 + %w27 = %w27 + %w99 + %w28 = %w28 + %w100 + %w29 = %w29 + %w101 + %w30 = %w30 + %w102 + %w31 = %w31 + %w103 + %w32 = %w32 + %w104 + %w33 = %w33 + %w105 + %w34 = %w34 + %w106 + %w419 = %w23 ** 7 + %w420 = %w24 + %w421 = %w25 + %w422 = %w26 + %w423 = %w27 + %w424 = %w28 + %w425 = %w29 + %w426 = %w30 + %w427 = %w31 + %w428 = %w32 + %w429 = %w33 + %w430 = %w34 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w107 + %w24 = %w24 + %w108 + %w25 = %w25 + %w109 + %w26 = %w26 + %w110 + %w27 = %w27 + %w111 + %w28 = %w28 + %w112 + %w29 = %w29 + %w113 + %w30 = %w30 + %w114 + %w31 = %w31 + %w115 + %w32 = %w32 + %w116 + %w33 = %w33 + %w117 + %w34 = %w34 + %w118 + %w419 = %w23 ** 7 + %w420 = %w24 + %w421 = %w25 + %w422 = %w26 + %w423 = %w27 + %w424 = %w28 + %w425 = %w29 + %w426 = %w30 + %w427 = %w31 + %w428 = %w32 + %w429 = %w33 + %w430 = %w34 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w119 + %w24 = %w24 + %w120 + %w25 = %w25 + %w121 + %w26 = %w26 + %w122 + %w27 = %w27 + %w123 + %w28 = %w28 + %w124 + %w29 = %w29 + %w125 + %w30 = %w30 + %w126 + %w31 = %w31 + %w127 + %w32 = %w32 + %w128 + %w33 = %w33 + %w129 + %w34 = %w34 + %w130 + %w419 = %w23 ** 7 + %w420 = %w24 + %w421 = %w25 + %w422 = %w26 + %w423 = %w27 + %w424 = %w28 + %w425 = %w29 + %w426 = %w30 + %w427 = %w31 + %w428 = %w32 + %w429 = %w33 + %w430 = %w34 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w131 + %w24 = %w24 + %w132 + %w25 = %w25 + %w133 + %w26 = %w26 + %w134 + %w27 = %w27 + %w135 + %w28 = %w28 + %w136 + %w29 = %w29 + %w137 + %w30 = %w30 + %w138 + %w31 = %w31 + %w139 + %w32 = %w32 + %w140 + %w33 = %w33 + %w141 + %w34 = %w34 + %w142 + %w419 = %w23 ** 7 + %w420 = %w24 + %w421 = %w25 + %w422 = %w26 + %w423 = %w27 + %w424 = %w28 + %w425 = %w29 + %w426 = %w30 + %w427 = %w31 + %w428 = %w32 + %w429 = %w33 + %w430 = %w34 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w143 + %w24 = %w24 + %w144 + %w25 = %w25 + %w145 + %w26 = %w26 + %w146 + %w27 = %w27 + %w147 + %w28 = %w28 + %w148 + %w29 = %w29 + %w149 + %w30 = %w30 + %w150 + %w31 = %w31 + %w151 + %w32 = %w32 + %w152 + %w33 = %w33 + %w153 + %w34 = %w34 + %w154 + %w419 = %w23 ** 7 + %w420 = %w24 + %w421 = %w25 + %w422 = %w26 + %w423 = %w27 + %w424 = %w28 + %w425 = %w29 + %w426 = %w30 + %w427 = %w31 + %w428 = %w32 + %w429 = %w33 + %w430 = %w34 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w155 + %w24 = %w24 + %w156 + %w25 = %w25 + %w157 + %w26 = %w26 + %w158 + %w27 = %w27 + %w159 + %w28 = %w28 + %w160 + %w29 = %w29 + %w161 + %w30 = %w30 + %w162 + %w31 = %w31 + %w163 + %w32 = %w32 + %w164 + %w33 = %w33 + %w165 + %w34 = %w34 + %w166 + %w419 = %w23 ** 7 + %w420 = %w24 + %w421 = %w25 + %w422 = %w26 + %w423 = %w27 + %w424 = %w28 + %w425 = %w29 + %w426 = %w30 + %w427 = %w31 + %w428 = %w32 + %w429 = %w33 + %w430 = %w34 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w167 + %w24 = %w24 + %w168 + %w25 = %w25 + %w169 + %w26 = %w26 + %w170 + %w27 = %w27 + %w171 + %w28 = %w28 + %w172 + %w29 = %w29 + %w173 + %w30 = %w30 + %w174 + %w31 = %w31 + %w175 + %w32 = %w32 + %w176 + %w33 = %w33 + %w177 + %w34 = %w34 + %w178 + %w419 = %w23 ** 7 + %w420 = %w24 + %w421 = %w25 + %w422 = %w26 + %w423 = %w27 + %w424 = %w28 + %w425 = %w29 + %w426 = %w30 + %w427 = %w31 + %w428 = %w32 + %w429 = %w33 + %w430 = %w34 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w179 + %w24 = %w24 + %w180 + %w25 = %w25 + %w181 + %w26 = %w26 + %w182 + %w27 = %w27 + %w183 + %w28 = %w28 + %w184 + %w29 = %w29 + %w185 + %w30 = %w30 + %w186 + %w31 = %w31 + %w187 + %w32 = %w32 + %w188 + %w33 = %w33 + %w189 + %w34 = %w34 + %w190 + %w419 = %w23 ** 7 + %w420 = %w24 + %w421 = %w25 + %w422 = %w26 + %w423 = %w27 + %w424 = %w28 + %w425 = %w29 + %w426 = %w30 + %w427 = %w31 + %w428 = %w32 + %w429 = %w33 + %w430 = %w34 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w191 + %w24 = %w24 + %w192 + %w25 = %w25 + %w193 + %w26 = %w26 + %w194 + %w27 = %w27 + %w195 + %w28 = %w28 + %w196 + %w29 = %w29 + %w197 + %w30 = %w30 + %w198 + %w31 = %w31 + %w199 + %w32 = %w32 + %w200 + %w33 = %w33 + %w201 + %w34 = %w34 + %w202 + %w419 = %w23 ** 7 + %w420 = %w24 + %w421 = %w25 + %w422 = %w26 + %w423 = %w27 + %w424 = %w28 + %w425 = %w29 + %w426 = %w30 + %w427 = %w31 + %w428 = %w32 + %w429 = %w33 + %w430 = %w34 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w203 + %w24 = %w24 + %w204 + %w25 = %w25 + %w205 + %w26 = %w26 + %w206 + %w27 = %w27 + %w207 + %w28 = %w28 + %w208 + %w29 = %w29 + %w209 + %w30 = %w30 + %w210 + %w31 = %w31 + %w211 + %w32 = %w32 + %w212 + %w33 = %w33 + %w213 + %w34 = %w34 + %w214 + %w419 = %w23 ** 7 + %w420 = %w24 + %w421 = %w25 + %w422 = %w26 + %w423 = %w27 + %w424 = %w28 + %w425 = %w29 + %w426 = %w30 + %w427 = %w31 + %w428 = %w32 + %w429 = %w33 + %w430 = %w34 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w215 + %w24 = %w24 + %w216 + %w25 = %w25 + %w217 + %w26 = %w26 + %w218 + %w27 = %w27 + %w219 + %w28 = %w28 + %w220 + %w29 = %w29 + %w221 + %w30 = %w30 + %w222 + %w31 = %w31 + %w223 + %w32 = %w32 + %w224 + %w33 = %w33 + %w225 + %w34 = %w34 + %w226 + %w419 = %w23 ** 7 + %w420 = %w24 + %w421 = %w25 + %w422 = %w26 + %w423 = %w27 + %w424 = %w28 + %w425 = %w29 + %w426 = %w30 + %w427 = %w31 + %w428 = %w32 + %w429 = %w33 + %w430 = %w34 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w227 + %w24 = %w24 + %w228 + %w25 = %w25 + %w229 + %w26 = %w26 + %w230 + %w27 = %w27 + %w231 + %w28 = %w28 + %w232 + %w29 = %w29 + %w233 + %w30 = %w30 + %w234 + %w31 = %w31 + %w235 + %w32 = %w32 + %w236 + %w33 = %w33 + %w237 + %w34 = %w34 + %w238 + %w419 = %w23 ** 7 + %w420 = %w24 + %w421 = %w25 + %w422 = %w26 + %w423 = %w27 + %w424 = %w28 + %w425 = %w29 + %w426 = %w30 + %w427 = %w31 + %w428 = %w32 + %w429 = %w33 + %w430 = %w34 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w239 + %w24 = %w24 + %w240 + %w25 = %w25 + %w241 + %w26 = %w26 + %w242 + %w27 = %w27 + %w243 + %w28 = %w28 + %w244 + %w29 = %w29 + %w245 + %w30 = %w30 + %w246 + %w31 = %w31 + %w247 + %w32 = %w32 + %w248 + %w33 = %w33 + %w249 + %w34 = %w34 + %w250 + %w419 = %w23 ** 7 + %w420 = %w24 + %w421 = %w25 + %w422 = %w26 + %w423 = %w27 + %w424 = %w28 + %w425 = %w29 + %w426 = %w30 + %w427 = %w31 + %w428 = %w32 + %w429 = %w33 + %w430 = %w34 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w251 + %w24 = %w24 + %w252 + %w25 = %w25 + %w253 + %w26 = %w26 + %w254 + %w27 = %w27 + %w255 + %w28 = %w28 + %w256 + %w29 = %w29 + %w257 + %w30 = %w30 + %w258 + %w31 = %w31 + %w259 + %w32 = %w32 + %w260 + %w33 = %w33 + %w261 + %w34 = %w34 + %w262 + %w419 = %w23 ** 7 + %w420 = %w24 + %w421 = %w25 + %w422 = %w26 + %w423 = %w27 + %w424 = %w28 + %w425 = %w29 + %w426 = %w30 + %w427 = %w31 + %w428 = %w32 + %w429 = %w33 + %w430 = %w34 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w263 + %w24 = %w24 + %w264 + %w25 = %w25 + %w265 + %w26 = %w26 + %w266 + %w27 = %w27 + %w267 + %w28 = %w28 + %w268 + %w29 = %w29 + %w269 + %w30 = %w30 + %w270 + %w31 = %w31 + %w271 + %w32 = %w32 + %w272 + %w33 = %w33 + %w273 + %w34 = %w34 + %w274 + %w419 = %w23 ** 7 + %w420 = %w24 + %w421 = %w25 + %w422 = %w26 + %w423 = %w27 + %w424 = %w28 + %w425 = %w29 + %w426 = %w30 + %w427 = %w31 + %w428 = %w32 + %w429 = %w33 + %w430 = %w34 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w275 + %w24 = %w24 + %w276 + %w25 = %w25 + %w277 + %w26 = %w26 + %w278 + %w27 = %w27 + %w279 + %w28 = %w28 + %w280 + %w29 = %w29 + %w281 + %w30 = %w30 + %w282 + %w31 = %w31 + %w283 + %w32 = %w32 + %w284 + %w33 = %w33 + %w285 + %w34 = %w34 + %w286 + %w419 = %w23 ** 7 + %w420 = %w24 + %w421 = %w25 + %w422 = %w26 + %w423 = %w27 + %w424 = %w28 + %w425 = %w29 + %w426 = %w30 + %w427 = %w31 + %w428 = %w32 + %w429 = %w33 + %w430 = %w34 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w287 + %w24 = %w24 + %w288 + %w25 = %w25 + %w289 + %w26 = %w26 + %w290 + %w27 = %w27 + %w291 + %w28 = %w28 + %w292 + %w29 = %w29 + %w293 + %w30 = %w30 + %w294 + %w31 = %w31 + %w295 + %w32 = %w32 + %w296 + %w33 = %w33 + %w297 + %w34 = %w34 + %w298 + %w419 = %w23 ** 7 + %w420 = %w24 + %w421 = %w25 + %w422 = %w26 + %w423 = %w27 + %w424 = %w28 + %w425 = %w29 + %w426 = %w30 + %w427 = %w31 + %w428 = %w32 + %w429 = %w33 + %w430 = %w34 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w299 + %w24 = %w24 + %w300 + %w25 = %w25 + %w301 + %w26 = %w26 + %w302 + %w27 = %w27 + %w303 + %w28 = %w28 + %w304 + %w29 = %w29 + %w305 + %w30 = %w30 + %w306 + %w31 = %w31 + %w307 + %w32 = %w32 + %w308 + %w33 = %w33 + %w309 + %w34 = %w34 + %w310 + %w419 = %w23 ** 7 + %w420 = %w24 + %w421 = %w25 + %w422 = %w26 + %w423 = %w27 + %w424 = %w28 + %w425 = %w29 + %w426 = %w30 + %w427 = %w31 + %w428 = %w32 + %w429 = %w33 + %w430 = %w34 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w311 + %w24 = %w24 + %w312 + %w25 = %w25 + %w313 + %w26 = %w26 + %w314 + %w27 = %w27 + %w315 + %w28 = %w28 + %w316 + %w29 = %w29 + %w317 + %w30 = %w30 + %w318 + %w31 = %w31 + %w319 + %w32 = %w32 + %w320 + %w33 = %w33 + %w321 + %w34 = %w34 + %w322 + %w419 = %w23 ** 7 + %w420 = %w24 + %w421 = %w25 + %w422 = %w26 + %w423 = %w27 + %w424 = %w28 + %w425 = %w29 + %w426 = %w30 + %w427 = %w31 + %w428 = %w32 + %w429 = %w33 + %w430 = %w34 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w323 + %w24 = %w24 + %w324 + %w25 = %w25 + %w325 + %w26 = %w26 + %w326 + %w27 = %w27 + %w327 + %w28 = %w28 + %w328 + %w29 = %w29 + %w329 + %w30 = %w30 + %w330 + %w31 = %w31 + %w331 + %w32 = %w32 + %w332 + %w33 = %w33 + %w333 + %w34 = %w34 + %w334 + %w419 = %w23 ** 7 + %w420 = %w24 + %w421 = %w25 + %w422 = %w26 + %w423 = %w27 + %w424 = %w28 + %w425 = %w29 + %w426 = %w30 + %w427 = %w31 + %w428 = %w32 + %w429 = %w33 + %w430 = %w34 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w335 + %w24 = %w24 + %w336 + %w25 = %w25 + %w337 + %w26 = %w26 + %w338 + %w27 = %w27 + %w339 + %w28 = %w28 + %w340 + %w29 = %w29 + %w341 + %w30 = %w30 + %w342 + %w31 = %w31 + %w343 + %w32 = %w32 + %w344 + %w33 = %w33 + %w345 + %w34 = %w34 + %w346 + %w419 = %w23 ** 7 + %w420 = %w24 + %w421 = %w25 + %w422 = %w26 + %w423 = %w27 + %w424 = %w28 + %w425 = %w29 + %w426 = %w30 + %w427 = %w31 + %w428 = %w32 + %w429 = %w33 + %w430 = %w34 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w347 + %w24 = %w24 + %w348 + %w25 = %w25 + %w349 + %w26 = %w26 + %w350 + %w27 = %w27 + %w351 + %w28 = %w28 + %w352 + %w29 = %w29 + %w353 + %w30 = %w30 + %w354 + %w31 = %w31 + %w355 + %w32 = %w32 + %w356 + %w33 = %w33 + %w357 + %w34 = %w34 + %w358 + %w419 = %w23 ** 7 + %w420 = %w24 ** 7 + %w421 = %w25 ** 7 + %w422 = %w26 ** 7 + %w423 = %w27 ** 7 + %w424 = %w28 ** 7 + %w425 = %w29 ** 7 + %w426 = %w30 ** 7 + %w427 = %w31 ** 7 + %w428 = %w32 ** 7 + %w429 = %w33 ** 7 + %w430 = %w34 ** 7 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w359 + %w24 = %w24 + %w360 + %w25 = %w25 + %w361 + %w26 = %w26 + %w362 + %w27 = %w27 + %w363 + %w28 = %w28 + %w364 + %w29 = %w29 + %w365 + %w30 = %w30 + %w366 + %w31 = %w31 + %w367 + %w32 = %w32 + %w368 + %w33 = %w33 + %w369 + %w34 = %w34 + %w370 + %w419 = %w23 ** 7 + %w420 = %w24 ** 7 + %w421 = %w25 ** 7 + %w422 = %w26 ** 7 + %w423 = %w27 ** 7 + %w424 = %w28 ** 7 + %w425 = %w29 ** 7 + %w426 = %w30 ** 7 + %w427 = %w31 ** 7 + %w428 = %w32 ** 7 + %w429 = %w33 ** 7 + %w430 = %w34 ** 7 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w371 + %w24 = %w24 + %w372 + %w25 = %w25 + %w373 + %w26 = %w26 + %w374 + %w27 = %w27 + %w375 + %w28 = %w28 + %w376 + %w29 = %w29 + %w377 + %w30 = %w30 + %w378 + %w31 = %w31 + %w379 + %w32 = %w32 + %w380 + %w33 = %w33 + %w381 + %w34 = %w34 + %w382 + %w419 = %w23 ** 7 + %w420 = %w24 ** 7 + %w421 = %w25 ** 7 + %w422 = %w26 ** 7 + %w423 = %w27 ** 7 + %w424 = %w28 ** 7 + %w425 = %w29 ** 7 + %w426 = %w30 ** 7 + %w427 = %w31 ** 7 + %w428 = %w32 ** 7 + %w429 = %w33 ** 7 + %w430 = %w34 ** 7 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + %w23 = %w23 + %w383 + %w24 = %w24 + %w384 + %w25 = %w25 + %w385 + %w26 = %w26 + %w386 + %w27 = %w27 + %w387 + %w28 = %w28 + %w388 + %w29 = %w29 + %w389 + %w30 = %w30 + %w390 + %w31 = %w31 + %w391 + %w32 = %w32 + %w392 + %w33 = %w33 + %w393 + %w34 = %w34 + %w394 + %w419 = %w23 ** 7 + %w420 = %w24 ** 7 + %w421 = %w25 ** 7 + %w422 = %w26 ** 7 + %w423 = %w27 ** 7 + %w424 = %w28 ** 7 + %w425 = %w29 ** 7 + %w426 = %w30 ** 7 + %w427 = %w31 ** 7 + %w428 = %w32 ** 7 + %w429 = %w33 ** 7 + %w430 = %w34 ** 7 + %w23 = %w419 * %w407 + %w419 * %w395 + %w420 * %w396 + %w421 * %w397 + %w422 * %w398 + %w423 * %w399 + %w424 * %w400 + %w425 * %w401 + %w426 * %w402 + %w427 * %w403 + %w428 * %w404 + %w429 * %w405 + %w430 * %w406 + %w24 = %w420 * %w408 + %w420 * %w395 + %w421 * %w396 + %w422 * %w397 + %w423 * %w398 + %w424 * %w399 + %w425 * %w400 + %w426 * %w401 + %w427 * %w402 + %w428 * %w403 + %w429 * %w404 + %w430 * %w405 + %w419 * %w406 + %w25 = %w421 * %w409 + %w421 * %w395 + %w422 * %w396 + %w423 * %w397 + %w424 * %w398 + %w425 * %w399 + %w426 * %w400 + %w427 * %w401 + %w428 * %w402 + %w429 * %w403 + %w430 * %w404 + %w419 * %w405 + %w420 * %w406 + %w26 = %w422 * %w410 + %w422 * %w395 + %w423 * %w396 + %w424 * %w397 + %w425 * %w398 + %w426 * %w399 + %w427 * %w400 + %w428 * %w401 + %w429 * %w402 + %w430 * %w403 + %w419 * %w404 + %w420 * %w405 + %w421 * %w406 + %w27 = %w423 * %w411 + %w423 * %w395 + %w424 * %w396 + %w425 * %w397 + %w426 * %w398 + %w427 * %w399 + %w428 * %w400 + %w429 * %w401 + %w430 * %w402 + %w419 * %w403 + %w420 * %w404 + %w421 * %w405 + %w422 * %w406 + %w28 = %w424 * %w412 + %w424 * %w395 + %w425 * %w396 + %w426 * %w397 + %w427 * %w398 + %w428 * %w399 + %w429 * %w400 + %w430 * %w401 + %w419 * %w402 + %w420 * %w403 + %w421 * %w404 + %w422 * %w405 + %w423 * %w406 + %w29 = %w425 * %w413 + %w425 * %w395 + %w426 * %w396 + %w427 * %w397 + %w428 * %w398 + %w429 * %w399 + %w430 * %w400 + %w419 * %w401 + %w420 * %w402 + %w421 * %w403 + %w422 * %w404 + %w423 * %w405 + %w424 * %w406 + %w30 = %w426 * %w414 + %w426 * %w395 + %w427 * %w396 + %w428 * %w397 + %w429 * %w398 + %w430 * %w399 + %w419 * %w400 + %w420 * %w401 + %w421 * %w402 + %w422 * %w403 + %w423 * %w404 + %w424 * %w405 + %w425 * %w406 + %w31 = %w427 * %w415 + %w427 * %w395 + %w428 * %w396 + %w429 * %w397 + %w430 * %w398 + %w419 * %w399 + %w420 * %w400 + %w421 * %w401 + %w422 * %w402 + %w423 * %w403 + %w424 * %w404 + %w425 * %w405 + %w426 * %w406 + %w32 = %w428 * %w416 + %w428 * %w395 + %w429 * %w396 + %w430 * %w397 + %w419 * %w398 + %w420 * %w399 + %w421 * %w400 + %w422 * %w401 + %w423 * %w402 + %w424 * %w403 + %w425 * %w404 + %w426 * %w405 + %w427 * %w406 + %w33 = %w429 * %w417 + %w429 * %w395 + %w430 * %w396 + %w419 * %w397 + %w420 * %w398 + %w421 * %w399 + %w422 * %w400 + %w423 * %w401 + %w424 * %w402 + %w425 * %w403 + %w426 * %w404 + %w427 * %w405 + %w428 * %w406 + %w34 = %w430 * %w418 + %w430 * %w395 + %w419 * %w396 + %w420 * %w397 + %w421 * %w398 + %w422 * %w399 + %w423 * %w400 + %w424 * %w401 + %w425 * %w402 + %w426 * %w403 + %w427 * %w404 + %w428 * %w405 + %w429 * %w406 + field[12 ] %w431 + field %w432 = %w23 + field %w433 = %w24 + field %w434 = %w25 + field %w435 = %w26 + field %w436 = %w27 + field %w437 = %w28 + field %w438 = %w29 + field %w439 = %w30 + field %w440 = %w31 + field %w441 = %w32 + field %w442 = %w33 + field %w443 = %w34 + %w431[0 ] = %w432 , init + %w431[1 ] = %w433 , init + %w431[2 ] = %w434 , init + %w431[3 ] = %w435 , init + %w431[4 ] = %w436 , init + %w431[5 ] = %w437 , init + %w431[6 ] = %w438 , init + %w431[7 ] = %w439 , init + %w431[8 ] = %w440 , init + %w431[9 ] = %w441 , init + %w431[10 ] = %w442 , init + %w431[11 ] = %w443 , init + field %w444 = %w431 + field %w445 = %w444 + field %w446 = %w445 + u32 %w447 = 0 + if %w447 != 12 : + field %w448 = %w446[%w447] + %w19 = %w19 + %w448 + %w447 = %w447 + 1 + else: + Dummy Load + if %w447 != 12 : + field %w448 = %w446[%w447] + %w19 = %w19 + %w448 + %w447 = %w447 + 1 + else: + Dummy Load + if %w447 != 12 : + field %w448 = %w446[%w447] + %w19 = %w19 + %w448 + %w447 = %w447 + 1 + else: + Dummy Load + if %w447 != 12 : + field %w448 = %w446[%w447] + %w19 = %w19 + %w448 + %w447 = %w447 + 1 + else: + Dummy Load + if %w447 != 12 : + field %w448 = %w446[%w447] + %w19 = %w19 + %w448 + %w447 = %w447 + 1 + else: + Dummy Load + if %w447 != 12 : + field %w448 = %w446[%w447] + %w19 = %w19 + %w448 + %w447 = %w447 + 1 + else: + Dummy Load + if %w447 != 12 : + field %w448 = %w446[%w447] + %w19 = %w19 + %w448 + %w447 = %w447 + 1 + else: + Dummy Load + if %w447 != 12 : + field %w448 = %w446[%w447] + %w19 = %w19 + %w448 + %w447 = %w447 + 1 + else: + Dummy Load + if %w447 != 12 : + field %w448 = %w446[%w447] + %w19 = %w19 + %w448 + %w447 = %w447 + 1 + else: + Dummy Load + if %w447 != 12 : + field %w448 = %w446[%w447] + %w19 = %w19 + %w448 + %w447 = %w447 + 1 + else: + Dummy Load + if %w447 != 12 : + field %w448 = %w446[%w447] + %w19 = %w19 + %w448 + %w447 = %w447 + 1 + else: + Dummy Load + if %w447 != 12 : + field %w448 = %w446[%w447] + %w19 = %w19 + %w448 + else: + Dummy Load + %w20 = %w20 + 1 + field %o4(AS) = %w2(AS) + field %o3(TS) = %w1(TS) + field %o7 = %w19 + u32 %o8 = %w20 + field %o9 = %w18 + field %o1(BN) = %w20 != 1000000 ? 1 : 2 +Transition: + %w20 != 1000000 ? -> 1 : -> 2 + +Block 2: +Func: main, Scope: 1 +Exec Bound: 1000000, While Loop: false +RO Ops: 0, VM Ops: 0 +Num Cons: 4 +Inputs: + %i1(BN): field + %i7: field +Outputs: + %o1(BN): field + %o2(RET): field +Instructions: + assert %i1(BN) == 2 + field %w19 = %i7 + field %w444 = %w19 + field %o2(RET) = %w444 + field %o1(BN) = 3 +Program terminates. + + +-- +Interpretation: diff --git a/circ_blocks/examples/zxc.rs b/circ_blocks/examples/zxc.rs index c2627f31..af6ed5b9 100644 --- a/circ_blocks/examples/zxc.rs +++ b/circ_blocks/examples/zxc.rs @@ -1,8 +1,9 @@ // TODO: Might want to simplify Liveness Analysis & PMR now that scope changes are handled in optimization const PRINT_PROOF: bool = false; -const INLINE_SPARTAN_PROOF: bool = false; -const TOTAL_NUM_VARS_BOUND: usize = 100000000; +const INLINE_SPARTAN_PROOF: bool = true; +const TOTAL_NUM_VARS_BOUND: usize = 10000000000; +const MAX_FILE_SIZE: usize = 1073741824; use circ::front::zsharp::{self, ZSharpFE}; use circ::front::{FrontEnd, Mode}; @@ -33,7 +34,6 @@ use libspartan::{ use merlin::Transcript; use serde::{Deserialize, Serialize}; use std::time::*; -use std::time::*; // How many reserved variables (EXCLUDING V) are in front of the actual input / output? // %BN, %RET, %TS, %AS, %SP, %BP @@ -239,12 +239,21 @@ struct CompileTimeKnowledge { } impl CompileTimeKnowledge { - fn serialize_to_file(&self, benchmark_name: String) -> std::io::Result<()> { - let file_name = format!("../zok_tests/constraints/{benchmark_name}_bin.ctk"); - create_dir_all(Path::new(&file_name).parent().unwrap())?; - let mut f = File::create(file_name)?; + fn serialize_to_file( + &self, + benchmark_name: String, + max_file_size: usize, + ) -> std::io::Result<()> { let content = bincode::serialize(&self).unwrap(); - f.write(&content)?; + println!("CTK SIZE: {}", content.len()); + for i in 0..content.len().div_ceil(max_file_size) { + let file_name = format!("../zok_tests/constraints/{benchmark_name}_bin_{i}.ctk"); + create_dir_all(Path::new(&file_name).parent().unwrap())?; + let mut f = File::create(file_name)?; + let head = max_file_size * i; + let tail = min(max_file_size * (i + 1), content.len()); + f.write(&content[head..tail])?; + } Ok(()) } @@ -352,7 +361,7 @@ impl CompileTimeKnowledge { } #[derive(Serialize, Deserialize)] -struct RunTimeKnowledge { +struct RunTimeKnowledge { block_max_num_proofs: usize, block_num_proofs: Vec, consis_num_proofs: usize, @@ -377,13 +386,22 @@ struct RunTimeKnowledge { output_exec_num: usize, } -impl RunTimeKnowledge { - fn serialize_to_file(&self, benchmark_name: String) -> std::io::Result<()> { - let file_name = format!("../zok_tests/inputs/{benchmark_name}_bin.rtk"); - create_dir_all(Path::new(&file_name).parent().unwrap())?; - let mut f = File::create(file_name)?; +impl RunTimeKnowledge { + fn serialize_to_file( + &self, + benchmark_name: String, + max_file_size: usize, + ) -> std::io::Result<()> { let content = bincode::serialize(&self).unwrap(); - f.write(&content)?; + println!("RTK SIZE: {}", content.len()); + for i in 0..content.len().div_ceil(max_file_size) { + let file_name = format!("../zok_tests/inputs/{benchmark_name}_bin_{i}.rtk"); + create_dir_all(Path::new(&file_name).parent().unwrap())?; + let mut f = File::create(file_name)?; + let head = max_file_size * i; + let tail = min(max_file_size * (i + 1), content.len()); + f.write(&content[head..tail])?; + } Ok(()) } @@ -832,7 +850,7 @@ fn get_compile_time_knowledge( // -- // Generate witnesses and others // -- -fn get_run_time_knowledge( +fn get_run_time_knowledge( path: PathBuf, options: &Options, entry_regs: Vec, @@ -1267,7 +1285,7 @@ fn get_run_time_knowledge( } } -fn run_spartan_proof( +fn run_spartan_proof( ctk: CompileTimeKnowledge, rtk: RunTimeKnowledge, ) { @@ -1298,8 +1316,9 @@ fn run_spartan_proof( println!("Generating Circuits..."); // -- // BLOCK INSTANCES + // block_inst is used by sumcheck. Every block has the same number of variables let (block_num_vars, block_num_cons, block_num_non_zero_entries, mut block_inst) = - Instance::gen_block_inst::( + Instance::gen_block_inst::( block_num_instances_bound, num_vars, &ctk.args, @@ -1309,6 +1328,17 @@ fn run_spartan_proof( &ctk.num_vars_per_block, &rtk.block_num_proofs, ); + // block_inst is used by commitment. Every block has different number of variables + let (_, _, _, block_inst_for_commit) = Instance::::gen_block_inst::( + block_num_instances_bound, + num_vars, + &ctk.args, + num_inputs_unpadded, + &block_num_phy_ops, + &block_num_vir_ops, + &ctk.num_vars_per_block, + &rtk.block_num_proofs, + ); println!("Finished Block"); // Pairwise INSTANCES @@ -1345,7 +1375,8 @@ fn run_spartan_proof( println!("Comitting Circuits..."); // block_comm_map records the sparse_polys committed in each commitment // Note that A, B, C are committed separately, so sparse_poly[3*i+2] corresponds to poly C of instance i - let (block_comm_map, block_comm_list, block_decomm_list) = SNARK::multi_encode(&block_inst); + let (block_comm_map, block_comm_list, block_decomm_list) = + SNARK::multi_encode(&block_inst_for_commit); println!("Finished Block"); let (pairwise_check_comm, pairwise_check_decomm) = SNARK::encode(&pairwise_check_inst); println!("Finished Pairwise"); @@ -1589,13 +1620,15 @@ fn main() { ctk.write_to_file(benchmark_name.to_string()).unwrap(); rtk.write_to_file(benchmark_name.to_string()).unwrap(); } - if !INLINE_SPARTAN_PROOF { - // -- - // Write CTK, RTK to file - // -- - ctk.serialize_to_file(benchmark_name.to_string()).unwrap(); - rtk.serialize_to_file(benchmark_name.to_string()).unwrap(); - } else { + + // -- + // Write CTK, RTK to file + // -- + ctk.serialize_to_file(benchmark_name.to_string(), MAX_FILE_SIZE) + .unwrap(); + rtk.serialize_to_file(benchmark_name.to_string(), MAX_FILE_SIZE) + .unwrap(); + if INLINE_SPARTAN_PROOF { run_spartan_proof(ctk, rtk); } diff --git a/docs/spartan_parallel.md b/docs/spartan_parallel.md index 2225f442..cd8bed61 100644 --- a/docs/spartan_parallel.md +++ b/docs/spartan_parallel.md @@ -1,75 +1,345 @@ # Spartan Parallel ## Overview -`spartan_parallel` takes in circuits and witnesses of the blocks produced by `circ_blocks`, and generates and verifies a SNARK proof on the correct execution of the program code. One can treat `spartan_parallel` as a two-step process: first it emits 5 different (groups of, should really be number of blocks + 4) circuits based on the blocks and an execution trace, then it evokes a data-parallel proving process on those 5 circuits. +`spartan_parallel` takes in circuits and witnesses of the blocks produced by `circ_blocks`, and generates and verifies a SNARK proof on the correct execution of the program code. The process of `spartan_parallel` can be divided into the following stages: +- (Compile Time) Circuit preprocessing and commitment +- (Runtime) Witness preprocessing and commitment +- (Runtime) Sumcheck on all circuits and all instances +- (Runtime) Opening on witness and circuit commitments +- (Runtime) Shift and program IO proofs ## High-Level Idea -The program is executed correctly iff all of the following holds: +The program, when divided into blocks, is executed correctly iff all of the following holds: 1. All blocks of the program are executed correctly 2. All registers (including the label of the next block) are passed correctly between blocks. 3. The memory state (read-only and RAM) stays coherent throughout the execution. -Statement 1 can be checked directly through the block-specific circuits emitted by `circ_blocks`, while statement 2 and 3 can be checked by "extracting" inputs, outputs, and memory accesses out of block witnesses and check that they are pairwise consistent. `spartan_parallel` achieves so by generating "extraction circuits" and "consistency check circuits" based on compile-time metadata (number of inputs, outputs, and number of memory accesses per block). Furthermore, all three statements require witnesses to be arranged in different orders (statement 1 by block type, statement 2 by execution time, statement 3 by memory address), `spartan_parallel` inserts "permutation circuits" to verify the permutation between all three ordering: construct three univariate polynomials and test their equivalence by evaluating on a random point. [Let me know if this does not make sense!] +Statement 1 can be checked directly through the block-specific circuits emitted by `circ_blocks`, while statement 2 and 3 can be checked by "extracting" inputs, outputs, and memory accesses out of block witnesses and check that they are pairwise consistent. `spartan_parallel` achieves so by generating "extraction circuits" and "consistency check circuits" based on compile-time metadata (number of inputs, outputs, and number of memory accesses per block). Furthermore, all three statements require witnesses to be arranged in different orders (statement 1 by block type, statement 2 by execution time, statement 3 by memory address), `spartan_parallel` inserts "permutation circuits" to verify the permutation between all three ordering: construct three univariate polynomials and test their equivalence by evaluating on a random point. However, to ensure that the same set of witnesses are used by both block correctness check and permutation check, the prover needs to use the same commitment for both proofs. To prevent excessive commitment opening, `spartan_parallel` commits the overlapping witnesses of block correctness and permutation separately. -Please refer to [instance.rs](https://github.com/Jiangkm3/spartan_parallel/blob/master/src/instance.rs) for details of the circuits. +## Circuit Preprocessing and Commitment (Compile Time) +> Relevant files: `examples/interface.rs`, `src/instance.rs`, and `src/r1csinstance.rs` -## Inputs and Circuit Generation -At preprocessing stage, `spartan_parallel` reads in the following [inputs](https://github.com/Jiangkm3/spartan_parallel/blob/master/examples/interface.rs#L45): -- Circuits of each basic block -- Number of inputs, outputs, and memory operations of each block, as well as where these values are stored within the witnesses. -- Max number of registers that need to be passed from one block to another -- Max number of read-only memory accesses within a block -- Max number of RAM accesses within a block +### Inputs from `circ_blocks` +> Relevant struct: `CompileTimeKnowledge` in `examples/interface.rs` -Through the above inputs, `spartan_parallel` emits the following circuits during the preprocessing stage: -1. `BLOCK_CORRECTNESS` ([link](https://github.com/Jiangkm3/spartan_parallel/blob/master/src/instance.rs#L246)): verifies the correct execution of every block and "extracts" (constructs the polynomials) inputs, outputs, and all memory values out of each block. -2. `CONSIS_CHECK` ([link](https://github.com/Jiangkm3/spartan_parallel/blob/master/src/instance.rs#L545)): checks that when sorted in execution order, the output of the previous block matches with the input of the next block. This is performed similarly to an offline memory check. -3. `PHY_MEM_COHERE` ([link](https://github.com/Jiangkm3/spartan_parallel/blob/master/src/instance.rs#L545)): checks that the read-only memory accesses are coherent via an offline memory check. -4. `VIR_MEM_COHERE` ([link](https://github.com/Jiangkm3/spartan_parallel/blob/master/src/instance.rs#L545)): checks that all RAM accesses are coherent via an offline memory check. -5. `PERM_ROOT` ([link](https://github.com/Jiangkm3/spartan_parallel/blob/master/src/instance.rs#L761)): performs permutation check by constructing the polynomials of inputs and memory entries in execution / address order (block type order is handled in `BLOCK CORRECTNESS`) +At compile time, `spartan_parallel` reads in from `circ_blocks` through the struct `CompileTimeKnowledge`, including the R1CS circuit for each block (`args`) and all relevant metadata (number of inputs, witnesses, memory operations, etc. per block). -## Verify Sumcheck in Parallel -### Spartan Overview -The main idea behind Spartan is to use _two sumcheck protocols_ to assert the correctness of an R1CS equation: `Az * Bz - Cz = 0`. Let `A`, `B`, `C` be circuits of size `M * N`, and subsequently `z` be a satisfying assignment of length `N`. The goal is to prove +The circuit of each block $\mathcal{C}_i = (A, B, C)_i$ is designed to be satisfied by a witness $z_i$ of the following form: $$ -\forall_{x, y}, A(x, y)z(y) \cdot B(x, y)z(y) - C(x, y)z(y) = 0 +z_i = i_i || o_i || p_i || v_i || w_i $$ +where +* $i_i$ and $o_i$ are the inputs and outputs of the block, and should match with the outputs and inputs of the previous and next block. $i_i$ and $o_i$ also contain the block label for the current and next block to check that the prover always executes the correct block. +* $p_i$ records all stack accesses of the block through a list of $(addr_j, data_j)$. All $(addr_j, data_j)$ of all blocks are used to verify the coherence of a write-once memory. +* $v_i$ records all heap accesses of the block through a list of $(addr_j, data_j, ts_j, ls_j)$. All entries of all blocks are used to verify the coherence of a regular (write-many) memory. +* $w_i$ contains all other intermediate computations used by the block. -Sumcheck 1 invokes `m = log(M)` rounds to prove that given `Az`, `Bz`, `Cz` supplied by the prover, -$$ -\sum_{x\in \{0, 1\}^m} \tilde{eq}(\tau, x)(\tilde{Az}(x)\cdot \tilde{Bz}(x) - \tilde{Cz}(x)) = 0 -$$ -Sumcheck 1 reduces the above equation down to three claims: $v_a = \tilde{Az}(r_x)$, $v_b = \tilde{Bz}(r_x)$, $v_c = \tilde{Cz}(r_x)$. Sumcheck 2 then uses `n = log(N)` rounds to prove that `Az`, `Bz`, and `Cz` are computed correctly: -$$ -r_a v_a + r_b v_b + r_c v_c = \sum_{y\in \{0, 1\}^n} (r_a\cdot \tilde{A}(r_x, y) + r_b\cdot \tilde{B}(r_x, y) + r_c\cdot \tilde{C}(r_x, y))\cdot \tilde{z}(y) -$$ -where $r_a$, $r_b$, and $r_c$ are challenges provided by the verifier. Finally, prover opens $\tilde{A}(r_x, r_y)$, $\tilde{B}(r_x, r_y)$, $\tilde{C}(r_x, r_y)$, and $\tilde{z}(r_y)$ through polynomial commitment. +### Expanding and Generating Circuits +> Relevant struct: `Instance` in `src/instance.rs` -### Expanding Spartan to `spartan_parallel` -We expand Spartan to support `P` circuits, each with `Q_i` satisfying assignments (equivalent to `p\P` blocks, each executed `Q_i` times). The goal is now to prove -$$ -\forall_{i, j, x, y}, A_i(x, y)z_{i, j}(y) \cdot B_i(x, y)z_{i, j}(y) - C_i(x, y)z_{i, j}(y) = 0 -$$ +A prover of `spartan_parallel` needs to show the following: +1. For every block $i$, the witness generated from every execution $j$ of that block $z_{i, j}$ satisfies $\mathcal{C}_i$. (_block correctness_) +2. After permutating $(i_{i, j}, o_{i, j})$ into execution order $(i'_k, o'_k)$, we have $i'_k = o'_{k-1}$ for all $k \neq 0$. (_consistency_) +3. After permutating $p_{i, j} = \{(addr_{i, j, 0}, data_{i, j, 0}), (addr_{i, j, 1}, data_{i, j, 1}), \dots\}$ by address into $p'_k = (addr'_k, data'_k)$, $p'_k$ satisfies (_physical mem coherence_) +$$addr'_{k - 1} + 1 = addr'_k \vee (addr'_{k - 1} = addr'_k \wedge val'_{k - 1} = val'_k)$$ +4. After permutating $v_{i, j}$ into $v'_k$, $v'_k$ satisfies memory coherence (_virtual mem coherence_) -Let `Q_max = max_i Q_i`, prover provides `Az`, `Bz`, `Cz` as $P \times Q_i \times X$ tensors. Note that they are conceptually equivalent to vectors of length $P \cdot Q_{\text{max}} \cdot X$, but the special [tensor data structure](https://github.com/Jiangkm3/spartan_parallel/blob/master/src/custom_dense_mlpoly.rs#L22) allows the prover to skip evaluations on the $Q_{\text{max}} - Q_i$ unused "zero" entries within the dense polynomial. [Sumcheck 1](https://github.com/Jiangkm3/spartan_parallel/blob/master/src/r1csproof.rs#L320) now requires `log(P) + log(Q_max) + log(X) = p + q_max + x` rounds to prove that -$$ -\sum_{i\in \{0, 1\}^p, j\in \{0, 1\}^{q_\text{max}}, x\in \{0, 1\}^m} \tilde{eq}(\tau, i || j || x)(\tilde{Az}(i, j, x)\cdot \tilde{Bz}(i, j, x) - \tilde{Cz}(i, j, x)) = 0 -$$ -Note that to fully utilize the tensor structure and avoid the prover paying for $P\times Q_\text{max}\times X$ evaluations, this sumcheck is performed in the following order: -1. First on bits of $X$ (most significant to least significant) -2. Then on bits of $Q$ in _reverse order_ (from least significant to most significant) -3. Finally on bits of $P$ (most significant to least significant) +We note that the above steps imply the following additional procedures: -This is necessary because if the evaluation begins with bits of $P$ or the most significant bit of $Q$, then the $Q_{\text{max}} - Q_i$ unused entries are no longer zero in the next round. To accomodate for the reverse evaluation in $Q$, entries $\tilde{Az}$, $\tilde{Bz}$, and $\tilde{Cz}$ are also stored in reverse-bits-of-$Q$ order. This allows the final claims to be in the correct order: $v_a = \tilde{Az}(r_i, r_j, r_x)$, $v_b = \tilde{Bz}(r_i, r_j, r_x)$, $v_c = \tilde{Cz}(r_i, r_j, r_x)$. +5. Every $(i_{i, j}, o_{i, j}, p_{i, j}, v_{i, j})$ is correctly extracted from $z_{i, j}$ +6. The sets of $\{i_{i, j}, o_{i, j}\}$, $\{p_{i, j}\}$, $\{v_{i, j}\}$ are permutations of $\{i'_k, o'_k\}$, $\{p'_k\}$, and $\{v'_k\}$ +Permutations are checked via grand product proofs. Thus step 6 can be further divided into -[Sumcheck 2](https://github.com/Jiangkm3/spartan_parallel/blob/master/src/r1csproof.rs#L462) now requires `log(P) + log(Y) = p + y` rounds to check `Az`, `Bz`, and `Cz` for every `A`, `B`, and `C`. To do so, the prover first computes $\tilde{z}_{r_j}(i, y) = \tilde{z}(i, r_j, y)$, then proves: -$$ -r_a v_a + r_b v_b + r_c v_c = \sum_{i\in \{0, 1\}^p, y\in \{0, 1\}^n} \tilde{eq}(r_i, i)\cdot (r_a\cdot \tilde{A}(i, y) + r_b\cdot \tilde{B}(i, y) + r_c\cdot \tilde{C}(i, y))\cdot \tilde{z}_{r_j}(i, y) -$$ -Note that we cannot directly evaluate $\tilde{A}(r_p, y)$, etc. as that results in the equation becoming quadratic in terms of $r_p$. Thus an additional `p` rounds are introduced to flatten $r_p$. This introduces `p` new challenges. We denote the challenges generated in sumcheck 2 ($r_i', r_y$). +* (6a) $RLC_{i, o} = \prod_{i, j} (\tau - f(i_{i, j}) - r\cdot f(o_{i, j}))$, where $\tau$ and $r$ are random numbers and $f$ is a random linear combination (see consistency below). Compute $RLC_p = \prod_{i, j} (\tau - f(p_{i, j}))$, $RLC_v = \prod_{i, j} (\tau - f(v_{i, j}))$. +* (6b) $RLC'_{i, o} = \prod_k (\tau - f(i'_k) - r\cdot f(o'_k))$. Compute $RLC'_p$, $RLC'_v$ as well. +* (6c) Assert that $RLC_{i, o} = RLC'_{i, o}$, $RLC_p = RLC'_p$, $RLC_v = RLC'_v$. + +Since the prover has computed $f(i'_k)$ and $f(o'_k)$ during permutation, it can use them for consistency check. We can rewrite _consistency_ as: + +2. $f(i'_k) = f(o'_{k-1})$ for all $k \neq 0$. (_consistency_) + +_Remark_: $(i'_k, o'_k)$, $p'_k$, and $v'_k$ will be padded with 0 to the next power of 2, so consistency and coherence checks will have additional constraints to handle these 0 entries. + +We can now generate all the circuits we need: + +* A set of circuits ($\mathcal{C}'_i$) that checks step 1, 5, and 6a for each block $i$. These circuits are modified from $\mathcal{C}_i$ to add the rlc function $f$ and polynomial evaluation. As a result, its satisfying assignments $z'_{i, j}$ also requires modification from $z_{i, j}$, to the following form: +$$z'_{i, j} = (z_{i, j}, r, rz_{i, j}, \pi_{i, j}, \pi'_{i, j})$$ +- where + - $r$ is the randomness used by $f$ and $\tau$ + - $rz_{i, j}$ records intermediate computations for $\tau - f(i_{i, j}) - r\cdot f(o_{i, j})$, $\tau - f(p_{i, j})$, and $\tau - f(v_{i, j})$ + - $\pi_{i, j}$ stores $\tau - f(i_{i, j}) - r\cdot f(o_{i, j})$, $\tau - f(p_{i, j})$, and $\tau - f(v_{i, j})$, as well as their cumulative product that forms $RLC_{i, o}$, $RLC_p$, $RLC_v$. + - $\pi'_{i, j}$ is a shifted version of $\pi_{i, j}$, used to help compute the cumulative product. See _shift proofs_ section. +- To allow for each segment of $z'_{i, j}$ to be committed separately, `spartan_parallel` _conceptually_ pads each segment with 0's to the same length as $z_{i, j}$. Note that these pads are never materialized and can be skipped during actual computation. Since $z'_{i, j}$ also needs to be padded to a power of 2, this implies $|z'_{i, j}| = 8 \times |z_{i, j}|$ + +* A consistency circuit $\mathcal{C}_c$ for step 2 ($f(i'_k) = f(o'_{k-1})$). +* Stack and heap verification circuits $\mathcal{C}_p$, $\mathcal{C}_v$ for step 3 and 4. +* A permutation circuit $\mathcal{C}_\pi$ for step 6b. + +Note that the verifier can check 6c efficiently without sumcheck. +Also, $\mathcal{C}'_i$ are the larger circuits while $\mathcal{C}_c$, $\mathcal{C}_p$, $\mathcal{C}_v$, $\mathcal{C}_\pi$ are small and easily parallelizable. + +### Committing Circuits through Sparse Poly Commitment +> Relevant functions: +* `next_group_size` in `src/instance.rs` +* `gen_block_inst` in `src/instance.rs` +* `SNARK::multi_encode` in `src/lib.rs` +* `R1CSInstance::multi_commit` in `src/r1csinstance.rs` +* `R1CSInstance::multi_evaluate` in `src/r1csinstance.rs` + +The previous steps generate in total $b + 4$ circuits of various sizes, where $b$ is the number of blocks. Our circuit commitment follows the existing batched sparse polynomial commitment scheme of Spartan. However, with circuits of different sizes, we want to only pay proportional to the approximate size of each circuit. The solution is to divide circuits of different sizes into groups and commit each groups separately. + +Let each circuit $\mathcal{C}_i$ be of size $M_i\times N_i$ with $L_i$ non-zero entries. We assume that $M_i$ and $N_i$ are of similar sizes and $N_i$ and $L_i$ are roughly proportional to each other. +For each commitment, the prover pays for $O(L)$ time to generate a proof of size $O(\log(N) + \log(L))$. + +Our strategy is thus to group the circuits by the size of $N_i$. For each circuit $i$, the prover rounds its $N_i$ to the nearest power of 16 (or some other adjustable value) and put it in the corresponding group. For each group $j$, the prover computes the maximum $M_j$, $N_j$ and $L_j$ within the group, and batch commits every circuit of that group as $M_j \times N_j$ with $L_j$ non-zero entries. + +There is, however, a problem with this approach with regard to the modified block circuits $\mathcal{C}'_i$. Recall that each $\mathcal{C}'_i$ matches with an assignment $z'_{i, j}$ of 5 segments: +$$z'_{i, j} = (z_{i, j}, r, rz_{i, j}, \pi_{i, j}, \pi'_{i, j})$$ +each segment padded to the length of the block witness $|z_{i, j}|$. To perform the same sumcheck across all blocks, the size of all circuits needs to be _conceptually_ equivalent. (e,g, let $z_\text{max} = \max_{i, j} |z_{i, j}|$, for every block, $r[0] \leftrightarrow z'_{i, j}[z_\text{max}]$, $rz_{i, j}[0] \leftrightarrow z'_{i, j}[2\times z_\text{max}]$, etc.). However, for blocks of a different size, the padding size is different, and thus $r[0]$ will not always be the same entry of $z'_{i, j}$. + +The solution is to provide the prover with two versions of each block circuit (toggled by `COMMIT_MODE` in `gen_block_inst`). In the _sumcheck version_, every circuit is of the same $M_{\text{max}} = \max{M}$ and $N_{\text{max}} = \max{N}$. In the _commit version_, every circuit has $M$ and $N$ according to their group. Note that the prover's time and space cost to process a circuit is linear to their number of non-zero entries, which is the same for both versions. The prover can thus use the sumcheck version to perform the sumcheck of all blocks together, and use the commit version to reduce the time size of the commitment. + +The discrepancy between the two versions requires additional handling of commitment opening. The sumcheck produces two lists of challenges corresponding to the two dimensions of the circuit: $|rx| = \log M_{\text{max}}$, $|ry| = \log N_{\text{max}}$. On the constraint side, if $M_j < M_{\text{max}}$, the prover divides $rx \to rx_\text{pad} || rx_\text{eval}$. On the witness side, if $N_j < N_{\text{max}}$, the prover divides $ry\to ry_\text{comb} || ry_\text{pad} || ry_\text{eval}$. We describe each section: +* $rx_\text{pad}$ has length $(\log M_{\text{max}} - \log M_j)$ are the "extra" challenges +* $rx_\text{eval}$ has length $\log M_j$ are evaluated on the commitment +* $ry_\text{comb}$ has length-3 is used to combine the 5 (8) different segments of witnesses +* $ry_\text{pad}$ has length $(\log N_{\text{max}} - 3 - \log N_j)$ are the "extra" challenges on each segment. By placing $ry_\text{comb}$ in front of $ry_\text{pad}$, the prover resolves the issue where witness segments are padded to a different length in the commit version and the sumcheck version. +* $ry_\text{eval}$ has length $\log N_j$ are evaluated on the commitment. + +Thus, +$$\mathcal{C}_\text{sumcheck}(rx || ry) = (\prod_{r\in rx_\text{pad} || ry_\text{pad}} 1 - r) \cdot \mathcal{C}_\text{commit}(rx_\text{eval} || ry_\text{comb} || ry_\text{eval})$$ + +So the opening is performed on $(rx_\text{eval} || ry_\text{comb} || ry_\text{eval})$, and the verifier checks the result by computing and multiplying by $\prod_{r\in rx_\text{pad} || ry_\text{pad}} (1 - r)$. + +## Witness Preprocessing and Generation +> Relevant files: `examples/interface.rs` and `src/lib.rs` + +### Inputs from `circ_blocks` +> Relevant struct: `RunTimeKnowledge` in `examples/interface.rs` + +At runtime, `spartan_parallel` reads in from `circ_blocks` through the struct `RunTimeKnowledge`, which describes all the witnesses generated from the blocks: +* `block_vars_matrix`: all the inputs, outputs, memory accesses, and intermediate computations of every block executions, grouped by type of blocks. +* `exec_inputs`: all the inputs and outputs of every block, sorted by execution time. +* `init_phy_mems_list`, `init_vir_mems_list`: memory accesses that sets up the initial memory state, in any order. +* `addr_phy_mems_list`, `addr_vir_mems_list`: memory accesses throughout the program execution (including initialization), ordered by address. +* `addr_ts_bits_list`: bit split of timestamp difference, used by memory coherence check. + +### Circuit Sorting +> Relevant sections: `BLOCK SORT` and `PAIRWISE SORT` of `src/lib.rs` + +As later illlustrated by polynomial binding, the most efficient parallel proof requires the circuits (blocks) to be sorted by decreasing order of number of instances (executions). When the circuits are generated at compile time, however, the number of executions on each block is unknown. As such, during runtime, the prover and the verifier needs to re-order the block circuits and commitments based on their number of execution. The same sort is also performed on register consistency, stack, and heap coherence circuits according to their number of instances: `consis_num_proofs`, `total_num_phy_mem_accesses`, and `total_num_vir_mem_accesses`. + +### Witness Preprocessing and Commitment +> Relevant section: `CHALLENGES AND WITNESSES FOR PERMUTATION` of `src/lib.rs` + +Apart from the witnesses provided by each block execution, the prover also needs to compute additional witnesses used by permutation and consistency checks. This includes, most notably: +* `perm_w0 = [tau, r, r^2, ...]`: the randomness used by the random linear permutation. This value is can be efficiently generated by the verifier and does not require commitment. +* `block_w2`, `perm_exec_w2`, `phy_mem_w2`, `vir_mem_w2`: intermediate values used to compute random linear combinations. +* `block_w3`, `perm_exec_w3`, `phy_mem_w3`, `vir_mem_w3`: RLC and cumulative product of RLC. Each is consisted of $w3_k = [v_k, x_k, \pi_k, D_k, ri_k, ro_k]$, where + - $v_k$ is the valid bit, set to 0 if this particular $w3$ is a pad. If $v_k$ is 0, then every entry of $w3_k$ is 0. + - $x_k$ is the random linear combination of $(i_k, o_k)$, $p_k$, or $v_k$ + - $\pi_k$ is the cumulative product $\prod_{p \geq k}x_p$, computed as $\pi_k = v_k\cdot D_k$ + - $D_k$ is an intermediate variable: $D_k = x_k \cdot (\pi_{k+1} + (1 - v_{k+1}))$ + - $ri_k$ and $ro_k$ are only used by register transition to record the RLC of $i_k$ and $o_k$ individually +* `block_w3_shifted`, `perm_exec_w3_shifted`, `phy_mem_w3_shifted`, `vir_mem_w3_shifted`: each $w3$ shifted by one row. This is so that $D_k$ can obtain $\pi_{k+1}$ and $v_{k+1}$ for its computation. See shift proofs section for more details. + +All witnesses are committed using regular dense polynomial commitment schemes. `block_vars_matrix`, `block_w2`, `block_w3`, and `block_w3_shifted` are committed by each type of block. We note that we can use tricks similar to circuit commitment above to batch commit and batch open witness commitments. + +### Summary on Commitments +In total, `spartan_parallel` needs to commmit to the following items: +#### Compile time (all sparse polynomials) +* `BLOCK_CORRECTNESS`: `num_block` circuits of size `num_cons_per_block[i] * (8 * num_vars_per_block[i])` +* `CONSIS_CHECK`: one consistency circuit of size `1 * 16` +* `PHY_MEM_COHERE`: one stack coherence circuit of size `4 * 8` +* `VIR_MEM_COHERE`: one heap coherence circuit of size `(8 + max_ts_width) * (4 * max_ts_width)`, where `max_ts_width` is the number of bits required to express the heap access timestamp +* `PERM_ROOT`: one permutation circuit of size `(num_ios + 4) * (4 * num_ios)` +#### Runtime, round 1 (commitment hash required to generate RLC challenges) +* `block_vars`: $P$ instances of `block_num_proofs[i] * num_vars_per_block[i]` +* `exec_inputs`: `consis_num_proofs * num_ios` +* `init_phy_mems_list`: `total_num_init_phy_mem_accesses * 4` +* `addr_phy_mems_list`: `total_num_phy_mem_accesses * 4` +> _XXX: we should be able to reduce the length to `total_num_phy_mem_accesses * 2`._ +* `init_vir_mems_list`: `total_num_init_vir_mem_accesses * 8` +* `addr_vir_mems_list`: `total_num_vir_mem_accesses * 8` +> _XXX: we should be able to reduce the length to `total_num_phy_mem_accesses * 4`._ +* `addr_ts_bits_list`: `total_num_vir_mem_accesses * mem_addr_ts_bits_size` +#### Runtime, round 2 (witnesses computed from RLC challenges) +* `block_w2`: $P$ instances of `block_num_proofs[i] * (num_ios + block_num_phy_ops[i] + block_num_vir_ops[i])` +* `block_w3`, `block_w3_shifted`: $P$ instances of `block_w3_shifted`: `block_num_proofs[i] * 8` +* `perm_exec_w2`: `consis_num_proofs * num_ios` +* `perm_exec_w3`, `perm_exec_w3_shifted`: `consis_num_proofs * 8` +* `phy_mem_addr_w2`: `total_num_phy_mem_accesses * 4` +> _XXX: we should be able to reduce the length to `total_num_phy_mem_accesses * 2`._ +* `phy_mem_addr_w3`, `phy_mem_addr_w3_shifted`: `total_num_phy_mem_accesses * 8` +* `vir_mem_addr_w2`: `total_num_vir_mem_accesses * 8` +> _XXX: we should be able to reduce the length to `total_num_phy_mem_accesses * 4`._ +* `vir_mem_addr_w3`, `vir_mem_addr_w3_shifted`: `total_num_vir_mem_accesses * 8` + + +## Sumcheck Proof on Circuits and Instances +> Relevant files: `src/customdensepolynomial.rs`, `src/r1csproof.rs` and `src/sumcheck.rs` + +The main section of `spartan_parallel` is consisted of three proofs, each with its own sumcheck and commitment opening. Each proof handles: +1. Block correctness and grand product on block-ordered witnesses +2. Transition state consistency and stack and heap coherence +3. Grand product on execution-ordered and memory-ordered witnesses + +_XXX: The proofs were divided due to the different sizes of the circuits. However, this problem has since been resolved and one should be able to combine all the proofs together._ + +Without loss of generosity, we use the block correctness proof (proof 1) to illustrate details of an R1CS proof. Recall that the goal of block correctness proof is to test the satisfiability of each $z'_{i, j}$ on each modified block circuit $\mathcal{C'}_i = (A', B', C')_i$, where +$$z'_{i, j} = (z_{i, j}, r, rz_{i, j}, \pi_{i, j}, \pi'_{i, j})$$ +We denote the following parameters for the proof: +* $P$ (`num_instances`): number of circuits. +* $Q_i$ (`num_proofs`): number of assignments to each circuit $i$. +* $X$ (`num_cons`): _maximum_ number of constraints of any circuit. +* $W$ (`num_witness_secs`): number of padded segments of $z'_{i, j}$. In this case, $W = 5$. +* $Y$ (`max_num_inputs`): _maximum_ number of witnesses of any circuit. + +We use the lowercase version of each variable to denote their logarithmic value rounded up (e.g. $p = \log P$). Below we walkthrough the proving process of `spartan_parallel`. + +The goal of Spartan is to prove that $Az \cdot Bz - Cz = 0$. This is separated into two sumchecks: +* Sumcheck 1 proves that given purported polynomial extensions $\tilde{Az}, \tilde{Bz}, \tilde{Cz}$, +$$\sum \tilde{\text{eq}} \cdot (\tilde{Az} \cdot \tilde{Bz} - \tilde{Cz}) = 0$$ +* Sumcheck 2 proves that given purported polynomial extensions $\tilde{A}, \tilde{B}, \tilde{C}, \tilde{z}$, + $$(r_A\cdot \tilde{A} + r_B\cdot \tilde{B} + r_C\cdot \tilde{C})\cdot \tilde{z} = r_A\cdot \tilde{Az} + r_B\cdot \tilde{Bz} + r_C\cdot \tilde{Cz}$$ +for some random $r_A$, $r_B$, $r_C$. + +To implement data-parallelism, we divide Spartan into the following steps. + +### Combining Witnesses Together +> Relevant file: `src/r1csproof.rs` + +While in regular Spartan, $Az$ is simply a length-$X$ vector, obtained by multiplication of a $X\times Y$ matrix $A$ by a length-$Y$ vector $z$, the data-paralleled version is slightly more complicated. + +The prover's first task is to construct a $P\times Q_i\times W\times Y_i$ struct `z_mat` through a 4-dimensional vector. This is, conceptually, piecing together $W$ different witnesses of size $P\times Q_i\times Y_i$ together. In the case of block correctness proof $\mathcal{C}_i$, where +$$z'_{i, j} = (z_{i, j}, r, rz_{i, j}, \pi_{i, j}, \pi'_{i, j})$$ +$z, rz, \pi, \pi'$ are different for each circuit and each instance, and thus can be naturally expressed as $P\times Q_i\times Y_i$ vectors. $r$, which is the randomness used by RLC, however, is the same across all circuits and instances, and thus needs to be copied $P\times Q_i$ times. We note that this construction presents opportunities and challenges: on one hand, since every evaluation on the $r$ polynomial is the same, bindings on the $P$ and $Q_i$ dimensions are free, and thus it does not require a commitment opening proof; on the other hand, for this binding shortcut to work, $r$ needs to be the same on all $2^{q_i}$ bases, so $Q_i$ has to be a power of 2 (technically $P$ also needs to be a power of 2, but since $P$ is small, the verifier can manually bind $p$ variables to a polynomial). + +> To provide more intuition on this problem, assume that for some circuit $i$, $Q_i$ is not a power of 2. Let $Q_\text{pad}$ be the next power of 2 of $Q_i$, the sumcheck still needs to operate for $q_\text{pad}$ rounds on a vector of size $Q_\text{pad}$. What one can do, however, is to set entries $Q_i$ to $Q_\text{pad}$ to 0. If the prover needs to access any of these entries, it already knows that they are 0, and can skip the memory access and any multiplication on it. The problem with $r$ is that every entry needs to be the same (to skip the binding), and thus entries $Q_i$ to $Q_\text{pad}$ cannot be zero. + +From the construction we can deduce that the size of $Q_i$ and $Y_i$ depends on the entry of the $P$ dimension, while the size of $W$ does not. Further, even though sumcheck requires the size of each dimension to be _conceptually_ a power of 2, `z_mat` allows vectors on the $P, W, Y_i$ dimensions to only store the non-zero entries at the front. + +> XXX: current construction pads $Y_i$ to a power of 2, pending improvements. Moreover, there are no fundamental challenges to trim the $Q_i$ dimension, except that they make the code a lot messier and hard to parallelize. + +### Obtaining $\tilde{Az}, \tilde{Bz}, \tilde{Cz}$ +> Relevant files: `src/r1csinstance.rs` and `src/customdensepolynomial.rs` + +To obtain $Az$, $Bz$, $Cz$, the prover treats `z_mat` as $P$ counts of $Q_i \times (W \cdot Y_i)$ matrices. Since $A$, $B$, $C$ can be expressed as $P$ counts of $X_i\times (W \cdot Y_i)$ matrices, this allows the prover to perform $P$ matrix multiplications to obtain $P \times Q_i \times X_i$ tensors $Az$, $Bz$, $Cz$ and their MLE $\tilde{Az}$ (`poly_Az`), $\tilde{Bz}$, $\tilde{Cz}$. This process is described in `R1CSinstance::multiply_vec_block`. Note that: +* Conceptually, `poly_Az` of every block $i$ has $p + q_\text{max} + x_\text{max}$ variables. However, the value of the variables indexed at $[p, p + q_\text{max} - q_i)$ and $[p + q_\text{max}, p + q_\text{max} + x_\text{max} - x_i)$ does not affect the evaluation for parts of the polynomial. +* Each circuit $i$ has different $Q_i$ and $X_i$, so $Az$ is expressed as a 3-dimensional vector, and the prover stores its MLE in a concise structure `DensePolynomialPqx`. + +#### Bindings on a `DensePolynomialPqx` +> Relevant function: `DensePolynomialPqx::evaluate` + +`DensePolynomialPqx` is expressed as a 4-dimensional vector `Z` ($P\times Q_i\times W\times X_i$) and its relevant metadatas. However, every invocation of `DensePolynomialPqx` in the proof only uses 3 of the 4 dimensions, which are: +* `poly_Az`, `poly_Bz`, `poly_Cz`: uses $P$, $Q_i$ and $X_i$ dimension (so $W$ dimension always have length-1) +* `ABC_poly` binded to `rx`: uses $P$, $W$ and $X_i$ dimensions. Note that the $X_i$ dimension stores the witnesses and is actually the $Y_i$ dimension, but it behaves the same way as $X_i$. +* `Z_poly` binded to `rq`: uses $P$, $W$ and $X_i$ dimensions, where $X_i$ is again $Y_i$. + +A `DensePolynomialPqx` can, however, contain all 4 dimensions. A full evaluations thus requires the binding of $p + q_\text{max} + w + x_\text{max}$ variables, which we divide into 4 sections: $r_p, r_q, r_w, r_x$. + +We first note that binding from left to right can cause inefficiencies. This is because each binding on a variable of the $P$ dimension merges two vectors on the $Q_i$ dimension, which may be of different lengths, into a single vector of the longer length. As for a toy example, assume that a polynomial $G$ only has 2 dimensions $P\times Q_i$, and let $P = 4$ and $Q_i = [4, 4, 2, 2]$. The polynomial would thus contain 4 variables: +$$\tilde{G}(x_{p, 0}, x_{p, 1}, x_{q, 0}, x_{q, 1})$$ + +Binding $x_{p, 0}$ to $r$ is equivalent to the following operations: +$$G_0 = \langle(1 - r)\cdot G_{0, 0} + r\cdot G_{2, 0}, (1 - r)\cdot G_{0, 1} + r\cdot G_{2, 1}, (1 - r)\cdot G_{0, 2}, (1 - r)\cdot G_{0, 3}\rangle$$ +$$G_1 = \langle(1 - r)\cdot G_{1, 0} + r\cdot G_{3, 0}, (1 - r)\cdot G_{1, 1} + r\cdot G_{3, 1}, (1 - r)\cdot G_{1, 2}, (1 - r)\cdot G_{1, 3}\rangle$$ + +Since $Q_2 = Q_3 = 2$, $G_{2, 2}, G_{2, 3}, G_{3, 2}, G_{3, 3}$ are all 0s, so the prover does not access nor perform operations on them. As a result, in the first round, the prover's work is $\sum_i Q_i = 12$ multiplications. However, after the first round, the prover is left with $P = 2$ and $Q_i = [4, 4]$. So its work binding $x_{p, 1}$ would be 8 multiplications. + +Now consider the alternative of binding $x_{q, 1}$ first. All bindings are performed within the $Q$ dimension: +$$G_0 = \langle(1 - r)\cdot G_{0, 0} + r\cdot G_{0, 1}, (1 - r)\cdot G_{0, 2} + r\cdot G_{0, 3}\rangle$$ +$$G_1 = \langle(1 - r)\cdot G_{1, 0} + r\cdot G_{1, 1}, (1 - r)\cdot G_{1, 2} + r\cdot G_{1, 3}\rangle$$ +$$G_2 = \langle(1 - r)\cdot G_{2, 0} + r\cdot G_{2, 1}\rangle$$ +$$G_3 = \langle(1 - r)\cdot G_{3, 0} + r\cdot G_{3, 1}\rangle$$ + +This again costs 12 multiplications. However, this time it leaves us with $P = 4$ and $Q_i = [2, 2, 1, 1]$, and the next binding of $x_{q, 0}$ costs only 6 multiplications. + +As a result, binding on `DensePolynomialPqx` is always performed from right to left. Binding on an $r_x$ variable, for instance, would translate to: +``` +max_num_inputs = max_num_inputs.div_ceil(2) +for p in 0..num_instances: + for q in 0..num_proofs[p]: + for w in 0..num_witness_secss: + num_inputs[p] = num_inputs[p].div_ceil(2) + for x in 0..num_inputs[p]: + Z[p][q][w][x] = (1 - r) * Z[p][q][w][2 * x] + if 2 * x + 1 < Z[p][q][w].len(): + Z[p][q][w][x] += r * Z[p][q][w][2 * x + 1] +``` +which merges entry $2x$ and $2x+1$ into entry $x$. Note that if `num_inputs[p] = 1`, then the binding simply multiplies the first and only entry by $1-r$. + +### Sumcheck 1 +> Relevant functions: `R1CSProof::prove_phase_one` and `SumcheckInstanceProof::prove_cubic_with_additive_term_disjoint_rounds` + +Similar to the regular Spartan, sumcheck 1 is of the following form: +$$\sum_{\tau\in\{0, 1\}^{p + q_\text{max} + x_\text{max}}} \tilde{\text{eq}}(\tau) \cdot (\tilde{Az}(\tau) \cdot \tilde{Bz}(\tau) - \tilde{Cz}(\tau)) = 0$$ + +Except that $\tilde{Az}$, $\tilde{Bz}$, and $\tilde{Cz}$ are now $(p + q_\text{max} + x_\text{max})$-variate polynomials, which means the sumcheck involves $p + q_\text{max} + x_\text{max}$ rounds and returns with the challenge $r = r_p || r_q || r_x$. However, we want the prover to only perform $\sum_i Q_i \cdot X_i$ computations (as opposed to $P \cdot Q_\text{max} \cdot X_\text{max}$). + +The solution is the same approach to the binding problem. `spartan_parallel` always performs sumcheck evaluation from right to left. Since the evaluation polynomial is of degree 3, at each round, the prover performs the following steps: +1. Bind the right-most variable in $\tilde{\text{eq}}, \tilde{Az}, \tilde{Bz}, \tilde{Cz}$ to 0, 1, 2, and 3 and form a degree-3 univariate polynomial. +2. Use the univariate polynomial to generate a challenge $r_j$. +3. Bind the right-most variable in $\tilde{\text{eq}}, \tilde{Az}, \tilde{Bz}, \tilde{Cz}$ to $r_j$. + +### Obtaining $\tilde{ABC}, \tilde{Z}$, and Sumcheck 2 +> Relevant functions: `R1CSProof::prove_phase_two` and `SumcheckInstanceProof::prove_cubic_disjoint_rounds` + +At the end of sumcheck 1, the prover generates the following claims: +$$\tilde{Az}(r_p, r_q, r_x), \tilde{Bz}(r_p, r_q, r_x), \tilde{Cz}(r_p, r_q, r_x)$$ + +Sumcheck 2 now checks that $\tilde{Az}, \tilde{Bz}, \tilde{Cz}$ are computed correctly. Similar to Spartan, `spartan_parallel` first samples random coefficients $r_A, r_B, r_C$ and computes +$$s = r_A\cdot \tilde{Az}(r) + r_B\cdot \tilde{Bz}(r) + r_C\cdot \tilde{Cz}(r)$$ +as `claim_phase2`. Next, it generates $\tilde{ABC}_{r_x}$ as $r_A\cdot \tilde{A} + r_B\cdot\tilde{B} + r_C\cdot\tilde{C}$ binded to $r_x$ and $\tilde{Z}_{r_q}$ as $\tilde{Z}$ binded to $r_q$. Note that the prover cannot bind both $\tilde{ABC}$ and $\tilde{Z}$ to $r_p$, as $\tilde{Az}$ is computed through a pairwise multiplication on the $P$ dimension, not a vector dot product. + +> In other words, $\tilde{Az}_{r_p} = \tilde{eq}_{r_p} \cdot (\tilde{A} \circ_p \tilde{Z})$, but $\tilde{A}_{r_p}\cdot \tilde{Z}_{r_p} = \tilde{eq}_{r_p} \cdot \tilde{A} \cdot \tilde{eq}_{r_p} \cdot \tilde{Z}$. The two operations are not the same. + +However, to compensate for the missing $r_p$, `spartan_parallel` inserts an additional term $\tilde{eq}_{r_p}(\tau) = \tilde{eq}(r_p, \tau[0..p])$. Since $\tilde{eq}_{r_p}(\tau)$ only depends on the first $p$ variables of $\tau$, it can be expressed using only $P$ entries. Sumcheck 2 of `spartan_parallel` is thus: +$$\sum_{\tau\in\{0, 1\}^{p + w + y}} \tilde{eq}_{r_p}(\tau)\cdot \tilde{ABC}_{r_x}(\tau)\cdot \tilde{Z}_{r_q}(\tau) = s$$ + +Is a degree-3 sumcheck with $p + w + y$ rounds. Since $\tilde{ABC}_{r_x}$ and $\tilde{Z}_{r_q}$ are $P\times W\times Y_i$ `DensePolynomialPqx`'s, the sumcheck and binding is again performed from right to left. Finally, we note that the cost of this sumcheck is independent of $Q$ and thus is independent of the size of each execution. This makes sumcheck 2 extremely cheap. + +## Opening Witness and Circuit Commitment +> Relevant structs: `PolyEvalProof` and `R1CSEvalProof` + +At the end of sumcheck 2, the prover reduces the entire proof down to just two claims: $\tilde{ABC}(r_p', r_x, r_w, r_y)$ and $\tilde{Z}(r_p', r_q, r_w, r_y)$. Note that $r_p'$ are the last $p$ challenges derived from sumcheck 2, and are different from $r_p$ in sumcheck 1. + +Finally, the prover opens all commitments on the given points, this includes: +* $3 \times P$ sparse polynomial commitments on circuits ($A$, $B$, $C$), each of size $X_i \times (W Y_i)$. +* $W\times P$ dense polynomial commitments on witnesses ($Z$), each of size $Q_i \times Y_i$. + +We leave the investigation of batched commitment opening as future work. + +## Shift and Program IO Proofs +> Relevant structs: `ShiftProofs` and `IOProofs` in `src/lib.rs` + +After all sumchecks, the prover still needs to show the following: +* Each of the shifted polynomials (`block_w3_shifted`, `perm_exec_w3_shifted`, `phy_mem_w3_shifted`, `vir_mem_w3_shifted`) are performed correctly. We first motivate the necessity of shifted polynomials, then briefly describe the shift proof process. + +> XXX: There might be ways to shift a polynomial without additional commitment. If you know any, please let me know. + +* The program inputs and outputs are correctly reflected in the witnesses. + +### Polynomial Shifts and Shift Proofs + +We recall our grand product construction: given a list of $w3_k = [v_k, x_k, \pi_k, D_k], k\in[0, Q)$, want to compute the cumulative product $\pi_k$ through $D_k = x_k \cdot (\pi_{k+1} + (1 - v_{k+1}))$ and $\pi_k = v_k\cdot D_k$. We note that the same computation is applied to every $w3_k$, and thus the computation should be easily parallelizable. Naively, one would generate a circuit $\mathcal{C}_\text{perm}$ for one instance of $w3_k$, and then execute that circuit $Q$ times. However, this problem to this approach is that the computation also involves entries of $w3_{k+1}$ ($\pi_{k+1}$, $v_{k+1}$). Alternatively, one can also construct $\mathcal{C}_\text{perm}$ to be satisfied by $w3'_k = [v_k, x_k, \pi_k, D_k, v_{k+1}, x_{k+1}, \pi_{k+1}, D_{k+1}]$, but the prover still needs to prove that the last four entries of $w3'_k$ matches with the first four entries of $w3'_{k+1}$. Our solution is to cut $w3'$ in two halves (i.e. set $W = 2, Y = 4$). This translates to two $Q\times 4$ commitments: `w3 = [v0, x0, pi0, D0, v1, x1, pi1, D1, ...]` for the left half and `w3_shifted = [v1, x1, pi1, D1, v2, x2, pi2, D2, ..., 0, 0, 0, 0]` for the right half. Finally, to prove that `w3_shifted` is `w3` shifted by 4 entries, the prover treats entries of `w3` and `w3_shifted` as coefficients to univariate polynomials $\tilde{w3}$, $\tilde{w3_s}$ and shows that for some random challenge $r$, +$$\tilde{w3}(r) = v_0 + r\cdot x_0 + r^2\cdot pi_0 + r^3\cdot D_0 + r^4\tilde{w3_s}(r)$$ + +Thus, the protocol is as follows: +1. The prover sends the commitments $\mathcal{C}_{w3}$, $\mathcal{C}_{w3'}$, together with the purported values of $v_0, x_0, \pi_0, D_0$. +2. The verifier samples a random value $r$ and sends to the prover. +3. The prover opens the univariate commitments $\mathcal{C}_{w3}(r)$, $\mathcal{C}_{w3'}(r)$. +4. The verifier checks the relationship between $w3$ and $w3'$ using $v_0, x_0, \pi_0, D_0, \mathcal{C}_{w3}(r), \mathcal{C}_{w3'}(r)$. + +Note that the prover never proves that $v_0, x_0, \pi_0, D_0$ are the first four entries of $\tilde{w3}(r)$. This is unnecessary since the random linear combination forces it to provide the correct value. + +Finally, we remark that the same shift strategy can be applied to verify memory and register consistency checks on consecutive states. -Finally, prover opens $\tilde{A}(r_i', r_x, r_y)$, $\tilde{B}(r_i', r_x, r_y)$, $\tilde{C}(r_i', r_x, r_y)$, and $\tilde{z}(r_i', r_j, r_y)$ through polynomial commitment. +### Proving the Correctness of Program Input and Output -## Batched Commitments -Spartan currently uses Hyrax for polynomial commitment, which is easily data-parallelizable. `spartan_parallel` commits to each circuit separately (but in batch), and commits witnesses by the type of circuit (block) they are being applied to. This allows the size and number of execution of each block to be different, but at the cost of having commitment size linear to number of circuits (blocks). Thus it is of top priority to try to reduce the number of blocks emitted. +The final step is to check that the witnesses indeed contain program inputs and outputs. The prover does so by opening corresponding entries on `exec_inputs` ($i', o'$, input and output state of each block sorted by time of execution). It performs the following opening: +1. The first execution is on block 0. +2. The final execution terminates at a designated exit block. +3. Inputs of the first block execution match program input. +4. Outputs of the final block execution match program output. \ No newline at end of file diff --git a/docs/spartan_parallel_old.md b/docs/spartan_parallel_old.md new file mode 100644 index 00000000..2225f442 --- /dev/null +++ b/docs/spartan_parallel_old.md @@ -0,0 +1,75 @@ +# Spartan Parallel + +## Overview +`spartan_parallel` takes in circuits and witnesses of the blocks produced by `circ_blocks`, and generates and verifies a SNARK proof on the correct execution of the program code. One can treat `spartan_parallel` as a two-step process: first it emits 5 different (groups of, should really be number of blocks + 4) circuits based on the blocks and an execution trace, then it evokes a data-parallel proving process on those 5 circuits. + +## High-Level Idea +The program is executed correctly iff all of the following holds: +1. All blocks of the program are executed correctly +2. All registers (including the label of the next block) are passed correctly between blocks. +3. The memory state (read-only and RAM) stays coherent throughout the execution. + +Statement 1 can be checked directly through the block-specific circuits emitted by `circ_blocks`, while statement 2 and 3 can be checked by "extracting" inputs, outputs, and memory accesses out of block witnesses and check that they are pairwise consistent. `spartan_parallel` achieves so by generating "extraction circuits" and "consistency check circuits" based on compile-time metadata (number of inputs, outputs, and number of memory accesses per block). Furthermore, all three statements require witnesses to be arranged in different orders (statement 1 by block type, statement 2 by execution time, statement 3 by memory address), `spartan_parallel` inserts "permutation circuits" to verify the permutation between all three ordering: construct three univariate polynomials and test their equivalence by evaluating on a random point. [Let me know if this does not make sense!] + +Please refer to [instance.rs](https://github.com/Jiangkm3/spartan_parallel/blob/master/src/instance.rs) for details of the circuits. + +## Inputs and Circuit Generation +At preprocessing stage, `spartan_parallel` reads in the following [inputs](https://github.com/Jiangkm3/spartan_parallel/blob/master/examples/interface.rs#L45): +- Circuits of each basic block +- Number of inputs, outputs, and memory operations of each block, as well as where these values are stored within the witnesses. +- Max number of registers that need to be passed from one block to another +- Max number of read-only memory accesses within a block +- Max number of RAM accesses within a block + +Through the above inputs, `spartan_parallel` emits the following circuits during the preprocessing stage: +1. `BLOCK_CORRECTNESS` ([link](https://github.com/Jiangkm3/spartan_parallel/blob/master/src/instance.rs#L246)): verifies the correct execution of every block and "extracts" (constructs the polynomials) inputs, outputs, and all memory values out of each block. +2. `CONSIS_CHECK` ([link](https://github.com/Jiangkm3/spartan_parallel/blob/master/src/instance.rs#L545)): checks that when sorted in execution order, the output of the previous block matches with the input of the next block. This is performed similarly to an offline memory check. +3. `PHY_MEM_COHERE` ([link](https://github.com/Jiangkm3/spartan_parallel/blob/master/src/instance.rs#L545)): checks that the read-only memory accesses are coherent via an offline memory check. +4. `VIR_MEM_COHERE` ([link](https://github.com/Jiangkm3/spartan_parallel/blob/master/src/instance.rs#L545)): checks that all RAM accesses are coherent via an offline memory check. +5. `PERM_ROOT` ([link](https://github.com/Jiangkm3/spartan_parallel/blob/master/src/instance.rs#L761)): performs permutation check by constructing the polynomials of inputs and memory entries in execution / address order (block type order is handled in `BLOCK CORRECTNESS`) + +## Verify Sumcheck in Parallel +### Spartan Overview +The main idea behind Spartan is to use _two sumcheck protocols_ to assert the correctness of an R1CS equation: `Az * Bz - Cz = 0`. Let `A`, `B`, `C` be circuits of size `M * N`, and subsequently `z` be a satisfying assignment of length `N`. The goal is to prove +$$ +\forall_{x, y}, A(x, y)z(y) \cdot B(x, y)z(y) - C(x, y)z(y) = 0 +$$ + +Sumcheck 1 invokes `m = log(M)` rounds to prove that given `Az`, `Bz`, `Cz` supplied by the prover, +$$ +\sum_{x\in \{0, 1\}^m} \tilde{eq}(\tau, x)(\tilde{Az}(x)\cdot \tilde{Bz}(x) - \tilde{Cz}(x)) = 0 +$$ +Sumcheck 1 reduces the above equation down to three claims: $v_a = \tilde{Az}(r_x)$, $v_b = \tilde{Bz}(r_x)$, $v_c = \tilde{Cz}(r_x)$. Sumcheck 2 then uses `n = log(N)` rounds to prove that `Az`, `Bz`, and `Cz` are computed correctly: +$$ +r_a v_a + r_b v_b + r_c v_c = \sum_{y\in \{0, 1\}^n} (r_a\cdot \tilde{A}(r_x, y) + r_b\cdot \tilde{B}(r_x, y) + r_c\cdot \tilde{C}(r_x, y))\cdot \tilde{z}(y) +$$ +where $r_a$, $r_b$, and $r_c$ are challenges provided by the verifier. Finally, prover opens $\tilde{A}(r_x, r_y)$, $\tilde{B}(r_x, r_y)$, $\tilde{C}(r_x, r_y)$, and $\tilde{z}(r_y)$ through polynomial commitment. + +### Expanding Spartan to `spartan_parallel` +We expand Spartan to support `P` circuits, each with `Q_i` satisfying assignments (equivalent to `p\P` blocks, each executed `Q_i` times). The goal is now to prove +$$ +\forall_{i, j, x, y}, A_i(x, y)z_{i, j}(y) \cdot B_i(x, y)z_{i, j}(y) - C_i(x, y)z_{i, j}(y) = 0 +$$ + +Let `Q_max = max_i Q_i`, prover provides `Az`, `Bz`, `Cz` as $P \times Q_i \times X$ tensors. Note that they are conceptually equivalent to vectors of length $P \cdot Q_{\text{max}} \cdot X$, but the special [tensor data structure](https://github.com/Jiangkm3/spartan_parallel/blob/master/src/custom_dense_mlpoly.rs#L22) allows the prover to skip evaluations on the $Q_{\text{max}} - Q_i$ unused "zero" entries within the dense polynomial. [Sumcheck 1](https://github.com/Jiangkm3/spartan_parallel/blob/master/src/r1csproof.rs#L320) now requires `log(P) + log(Q_max) + log(X) = p + q_max + x` rounds to prove that +$$ +\sum_{i\in \{0, 1\}^p, j\in \{0, 1\}^{q_\text{max}}, x\in \{0, 1\}^m} \tilde{eq}(\tau, i || j || x)(\tilde{Az}(i, j, x)\cdot \tilde{Bz}(i, j, x) - \tilde{Cz}(i, j, x)) = 0 +$$ +Note that to fully utilize the tensor structure and avoid the prover paying for $P\times Q_\text{max}\times X$ evaluations, this sumcheck is performed in the following order: +1. First on bits of $X$ (most significant to least significant) +2. Then on bits of $Q$ in _reverse order_ (from least significant to most significant) +3. Finally on bits of $P$ (most significant to least significant) + +This is necessary because if the evaluation begins with bits of $P$ or the most significant bit of $Q$, then the $Q_{\text{max}} - Q_i$ unused entries are no longer zero in the next round. To accomodate for the reverse evaluation in $Q$, entries $\tilde{Az}$, $\tilde{Bz}$, and $\tilde{Cz}$ are also stored in reverse-bits-of-$Q$ order. This allows the final claims to be in the correct order: $v_a = \tilde{Az}(r_i, r_j, r_x)$, $v_b = \tilde{Bz}(r_i, r_j, r_x)$, $v_c = \tilde{Cz}(r_i, r_j, r_x)$. + + +[Sumcheck 2](https://github.com/Jiangkm3/spartan_parallel/blob/master/src/r1csproof.rs#L462) now requires `log(P) + log(Y) = p + y` rounds to check `Az`, `Bz`, and `Cz` for every `A`, `B`, and `C`. To do so, the prover first computes $\tilde{z}_{r_j}(i, y) = \tilde{z}(i, r_j, y)$, then proves: +$$ +r_a v_a + r_b v_b + r_c v_c = \sum_{i\in \{0, 1\}^p, y\in \{0, 1\}^n} \tilde{eq}(r_i, i)\cdot (r_a\cdot \tilde{A}(i, y) + r_b\cdot \tilde{B}(i, y) + r_c\cdot \tilde{C}(i, y))\cdot \tilde{z}_{r_j}(i, y) +$$ +Note that we cannot directly evaluate $\tilde{A}(r_p, y)$, etc. as that results in the equation becoming quadratic in terms of $r_p$. Thus an additional `p` rounds are introduced to flatten $r_p$. This introduces `p` new challenges. We denote the challenges generated in sumcheck 2 ($r_i', r_y$). + +Finally, prover opens $\tilde{A}(r_i', r_x, r_y)$, $\tilde{B}(r_i', r_x, r_y)$, $\tilde{C}(r_i', r_x, r_y)$, and $\tilde{z}(r_i', r_j, r_y)$ through polynomial commitment. + +## Batched Commitments +Spartan currently uses Hyrax for polynomial commitment, which is easily data-parallelizable. `spartan_parallel` commits to each circuit separately (but in batch), and commits witnesses by the type of circuit (block) they are being applied to. This allows the size and number of execution of each block to be different, but at the cost of having commitment size linear to number of circuits (blocks). Thus it is of top priority to try to reduce the number of blocks emitted. diff --git a/manual_check b/manual_check index 6104404b..a675d692 100755 --- a/manual_check +++ b/manual_check @@ -14,7 +14,6 @@ for cargo_toml in $(git ls-files '**/Cargo.toml'); do done ./setup.sh -./encode_ceno.sh - -# This one is expected to fail at the moment, but it's still useful to run: +# ./encode_ceno.sh # ./verify_ceno.sh +./test_poseidon.sh 1000 \ No newline at end of file diff --git a/setup.sh b/setup.sh index 18ab66f8..25a743cc 100755 --- a/setup.sh +++ b/setup.sh @@ -4,4 +4,6 @@ set -euxo pipefail ( cd circ_blocks cargo build --release --example zxc --no-default-features --features r1cs,smt,zok + cd ../spartan_parallel + RUSTFLAGS="-C target_cpu=native" cargo build --release --features profile --example interface ) diff --git a/spartan_parallel/Cargo.toml b/spartan_parallel/Cargo.toml index 2472d2d5..daa0d128 100644 --- a/spartan_parallel/Cargo.toml +++ b/spartan_parallel/Cargo.toml @@ -20,7 +20,7 @@ rand = { version = "0.8", features = ["getrandom"], default-features = false } digest = { version = "0.10", default-features = false } sha3 = { version = "0.10", default-features = false } byteorder = { version = "1", default-features = false } -rayon = { version = "1", optional = true } +rayon = { version = "1" } serde = { version = "1", features = ["derive"], default-features = false } bincode = { version = "1", default-features = false } subtle = { version = "2", features = ["i128"], default-features = false } @@ -52,9 +52,8 @@ std = [ "itertools/use_std", "flate2/rust_backend", ] -multicore = ["rayon"] profile = ["colored"] [[example]] name = "interface" -required-features = ["multicore", "profile"] +required-features = ["profile"] diff --git a/spartan_parallel/examples/interface.rs b/spartan_parallel/examples/interface.rs index dc1e26fc..c27dc47a 100644 --- a/spartan_parallel/examples/interface.rs +++ b/spartan_parallel/examples/interface.rs @@ -42,10 +42,17 @@ struct CompileTimeKnowledge { impl CompileTimeKnowledge { fn deserialize_from_file(benchmark_name: String) -> CompileTimeKnowledge { - let file_name = format!("../zok_tests/constraints/{}_bin.ctk", benchmark_name); - let mut f = File::open(file_name).unwrap(); + // Input can be provided through multiple files, use i to determine the next file label + let mut i = 0; + let mut file_name = format!("../zok_tests/constraints/{benchmark_name}_bin_{i}.ctk"); let mut content: Vec = Vec::new(); - f.read_to_end(&mut content).unwrap(); + while let Ok(mut f) = File::open(file_name) { + let mut new_content: Vec = Vec::new(); + f.read_to_end(&mut new_content).unwrap(); + content.extend(new_content); + i += 1; + file_name = format!("../zok_tests/constraints/{benchmark_name}_bin_{i}.ctk"); + } bincode::deserialize(&content).unwrap() } } @@ -78,10 +85,17 @@ struct RunTimeKnowledge { impl serde::de::Deserialize<'de>> RunTimeKnowledge { fn deserialize_from_file(benchmark_name: String) -> RunTimeKnowledge { - let file_name = format!("../zok_tests/inputs/{}_bin.rtk", benchmark_name); - let mut f = File::open(file_name).unwrap(); + // Input can be provided through multiple files, use i to determine the next file label + let mut i = 0; + let mut file_name = format!("../zok_tests/inputs/{benchmark_name}_bin_{i}.rtk"); let mut content: Vec = Vec::new(); - f.read_to_end(&mut content).unwrap(); + while let Ok(mut f) = File::open(file_name) { + let mut new_content: Vec = Vec::new(); + f.read_to_end(&mut new_content).unwrap(); + content.extend(new_content); + i += 1; + file_name = format!("../zok_tests/inputs/{benchmark_name}_bin_{i}.rtk"); + } bincode::deserialize(&content).unwrap() } } @@ -121,8 +135,9 @@ fn main() { println!("Generating Circuits..."); // -- // BLOCK INSTANCES + // block_inst is used by sumcheck. Every block has the same number of variables let (block_num_vars, block_num_cons, block_num_non_zero_entries, mut block_inst) = - Instance::gen_block_inst::( + Instance::gen_block_inst::( block_num_instances_bound, num_vars, &ctk.args, @@ -132,6 +147,17 @@ fn main() { &ctk.num_vars_per_block, &rtk.block_num_proofs, ); + // block_inst is used by commitment. Every block has different number of variables + let (_, _, _, block_inst_for_commit) = Instance::::gen_block_inst::( + block_num_instances_bound, + num_vars, + &ctk.args, + num_inputs_unpadded, + &block_num_phy_ops, + &block_num_vir_ops, + &ctk.num_vars_per_block, + &rtk.block_num_proofs, + ); println!("Finished Block"); // Pairwise INSTANCES @@ -171,7 +197,8 @@ fn main() { println!("Comitting Circuits..."); // block_comm_map records the sparse_polys committed in each commitment // Note that A, B, C are committed separately, so sparse_poly[3*i+2] corresponds to poly C of instance i - let (block_comm_map, block_comm_list, block_decomm_list) = SNARK::multi_encode(&block_inst); + let (block_comm_map, block_comm_list, block_decomm_list) = + SNARK::multi_encode(&block_inst_for_commit); println!("Finished Block"); let (pairwise_check_comm, pairwise_check_decomm) = SNARK::encode(&pairwise_check_inst); println!("Finished Pairwise"); diff --git a/spartan_parallel/src/custom_dense_mlpoly.rs b/spartan_parallel/src/custom_dense_mlpoly.rs index 18489e98..f4b85165 100644 --- a/spartan_parallel/src/custom_dense_mlpoly.rs +++ b/spartan_parallel/src/custom_dense_mlpoly.rs @@ -2,9 +2,9 @@ use std::cmp::min; use crate::dense_mlpoly::DensePolynomial; +use crate::math::Math; use crate::scalar::SpartanExtensionField; - -use super::math::Math; +use rayon::prelude::*; const MODE_P: usize = 1; const MODE_Q: usize = 2; @@ -14,342 +14,382 @@ const MODE_X: usize = 4; // Customized Dense ML Polynomials for Data-Parallelism // These Dense ML Polys are aimed for space-efficiency by removing the 0s for invalid (p, q, w, x) quadruple -// Dense polynomial with variable order: p, q_rev, w, x_rev +// Dense polynomial with variable order: p, q, w, x // Used by Z_poly in r1csproof -#[derive(Debug, Clone)] +#[derive(Debug, Clone, Hash)] pub struct DensePolynomialPqx { - num_instances: usize, // num_instances is a power of 2 and num_instances / 2 < Z.len() <= num_instances - num_proofs: Vec, - max_num_proofs: usize, - pub num_witness_secs: usize, // num_witness_secs is a power of 2 and num_witness_secs / 2 < Z[.][.].len() <= num_witness_secs - num_inputs: Vec, - max_num_inputs: usize, - pub Z: Vec>>>, // Evaluations of the polynomial in all the 2^num_vars Boolean inputs of order (p, q_rev, w, x_rev) - // Let Q_max = max_num_proofs, assume that for a given P, num_proofs[P] = Q_i, then let STEP = Q_max / Q_i, - // Z(P, y, .) is only non-zero if y is a multiple of STEP, so Z[P][j][.] actually stores Z(P, j*STEP, .) - // The same applies to X + // All metadata might not be a power of 2 + pub num_instances: usize, + pub num_proofs: Vec, // P + pub num_witness_secs: usize, + pub num_inputs: Vec>, // P x W + pub num_vars_p: usize, // log(P.next_power_of_two()) + pub num_vars_q: usize, + pub num_vars_w: usize, + pub num_vars_x: usize, + pub Z: Vec>>>, // Evaluations of the polynomial in all the 2^num_vars Boolean inputs of order (p, q, w, x) } -// Reverse the bits in q or x -pub fn rev_bits(q: usize, max_num_proofs: usize) -> usize { - (0..max_num_proofs.log_2()) - .rev() - .map(|i| q / (i.pow2()) % 2 * (max_num_proofs / i.pow2() / 2)) - .fold(0, |a, b| a + b) +fn fold_rq(proofs: &mut [Vec>], r_q: &[S], step: usize, mut q: usize, w: usize, x: &Vec) { + for r in r_q { + let r1 = S::field_one() - r.clone(); + let r2 = r.clone(); + + q = q.div_ceil(2); + (0..q).for_each(|q| { + (0..w).for_each(|w| { + (0..x[w]).for_each(|x| { + proofs[q * step][w][x] = r1 * proofs[2 * q * step][w][x] + r2 * proofs[(2 * q + 1) * step][w][x]; + }); + }); + }); + } } impl DensePolynomialPqx { // Assume z_mat is of form (p, q_rev, x), construct DensePoly pub fn new( - z_mat: &Vec>>>, - num_proofs: Vec, - max_num_proofs: usize, - num_inputs: Vec, - max_num_inputs: usize, + z_mat: Vec>>>, ) -> Self { - let num_instances = z_mat.len().next_power_of_two(); - let num_witness_secs = z_mat[0][0].len().next_power_of_two(); - DensePolynomialPqx { - num_instances, - num_proofs, - max_num_proofs, - num_witness_secs, - num_inputs, - max_num_inputs, - Z: z_mat.clone(), - } - } - - // Assume z_mat is in its standard form of (p, q, x) - // Reverse q and x and convert it to (p, q_rev, x_rev) - pub fn new_rev( - z_mat: &Vec>>>, - num_proofs: Vec, - max_num_proofs: usize, - num_inputs: Vec, - max_num_inputs: usize, - ) -> Self { - let mut Z = Vec::new(); let num_instances = z_mat.len(); + let num_proofs: Vec = (0..num_instances).map(|p| z_mat[p].len()).collect(); let num_witness_secs = z_mat[0][0].len(); - for p in 0..num_instances { - Z.push(vec![ - vec![ - vec![S::field_zero(); num_inputs[p]]; - num_witness_secs - ]; - num_proofs[p] - ]); - - let step_q = max_num_proofs / num_proofs[p]; - let step_x = max_num_inputs / num_inputs[p]; - for q in 0..num_proofs[p] { - // Reverse the bits of q. q_rev is a multiple of step_q - let q_rev = rev_bits(q, max_num_proofs); - // Now q_rev is between 0 to num_proofs[p] - let q_rev = q_rev / step_q; - - for x in 0..num_inputs[p] { - // Reverse the bits of x. x_rev is a multiple of step_x - let x_rev = rev_bits(x, max_num_inputs); - // Now x_rev is between 0 to num_inputs[p] - let x_rev = x_rev / step_x; - for w in 0..num_witness_secs { - Z[p][q_rev][w][x_rev] = z_mat[p][q][w][x]; - } - } - } + let num_inputs: Vec> = (0..num_instances).map(|p| + (0..num_witness_secs).map(|w| z_mat[p][0][w].len()).collect() + ).collect(); + // Sortedness check: num_proofs and num_inputs[p] are sorted in decreasing order + assert!((0..num_instances - 1).fold(true, |b, i| b && num_proofs[i] >= num_proofs[i + 1])); + for w in &num_inputs { + assert!((0..num_witness_secs - 1).fold(true, |b, i| b && w[i] >= w[i + 1])); } + + let num_vars_p = num_instances.next_power_of_two().log_2(); + let num_vars_q = num_proofs.iter().max().unwrap().next_power_of_two().log_2(); + let num_vars_w = num_witness_secs.next_power_of_two().log_2(); + let num_vars_x = num_inputs.iter().map(|i| i.iter().max().unwrap()).max().unwrap().next_power_of_two().log_2(); DensePolynomialPqx { - num_instances: num_instances.next_power_of_two(), + num_instances, num_proofs, - max_num_proofs, - num_witness_secs: num_witness_secs.next_power_of_two(), + num_witness_secs, num_inputs, - max_num_inputs, - Z, + num_vars_p, + num_vars_q, + num_vars_w, + num_vars_x, + Z: z_mat, } } pub fn len(&self) -> usize { - return self.num_instances * self.max_num_proofs * self.max_num_inputs; + return self.num_vars_p.pow2() * self.num_vars_q.pow2() * self.num_vars_w.pow2() * self.num_vars_x.pow2(); } - // Given (p, q_rev, x_rev) return Z[p][q_rev][x_rev] - pub fn index(&self, p: usize, q_rev: usize, w: usize, x_rev: usize) -> S { - if p < self.Z.len() - && q_rev < self.Z[p].len() - && w < self.Z[p][q_rev].len() - && x_rev < self.Z[p][q_rev][w].len() - { - return self.Z[p][q_rev][w][x_rev]; - } else { - return S::field_zero(); - } + // Given (p, q, w, x) return Z[p][q][w][x], DO NOT CHECK FOR OUT OF BOUND + pub fn index(&self, p: usize, q: usize, w: usize, x: usize) -> S { + return self.Z[p][q][w][x]; } - // Given (p, q_rev, w, x_rev) and a mode, return Z[p*][q_rev*][w*][x_rev*] - // Mode = 1 ==> p* is p with first bit set to 1 - // Mode = 2 ==> q_rev* is q_rev with first bit set to 1 - // Mode = 3 ==> w* is w with first bit set to 1 - // Mode = 4 ==> x_rev* is x_rev with first bit set to 1 - // Assume that first bit of the corresponding index is 0, otherwise throw out of bound exception - pub fn index_high(&self, p: usize, q_rev: usize, w: usize, x_rev: usize, mode: usize) -> S { + // Given (p, q, w, x) and a mode, return Z[p*][q*][w*][x*] + // Mode = 1 ==> p* = 2p for low, 2p + 1 for high + // Mode = 2 ==> q* = 2q for low, 2q + 1 + // Mode = 3 ==> w* = 2w for low, 2w + 1 + // Mode = 4 ==> x* = 2x for low, 2x + 1 + // Assume p*, q*, w*, x* are within bound + pub fn index_low(&self, p: usize, q: usize, w: usize, x: usize, mode: usize) -> S { + let ZERO = S::field_zero(); match mode { - MODE_P => { - if p + self.num_instances / 2 < self.Z.len() { - return self.Z[p + self.num_instances / 2][q_rev][w][x_rev]; - } else { - return S::field_zero(); - } - } - MODE_Q => { - return if self.num_proofs[p] == 1 { - S::field_zero() - } else { - self.Z[p][q_rev + self.num_proofs[p] / 2][w][x_rev] - }; - } - MODE_W => { - if w + self.num_witness_secs / 2 < self.Z[p][q_rev].len() { - return self.Z[p][q_rev][w + self.num_witness_secs / 2][x_rev]; - } else { - return S::field_zero(); - } - } - MODE_X => { - return if self.num_inputs[p] == 1 { - S::field_zero() - } else { - self.Z[p][q_rev][w][x_rev + self.num_inputs[p] / 2] - }; - } - _ => { - panic!( - "DensePolynomialPqx bound failed: unrecognized mode {}!", - mode - ); - } + MODE_P => { if self.num_instances == 1 { self.Z[0][q][w][x] } else if 2 * p >= self.num_instances { ZERO } else { self.Z[2 * p][q][w][x] } } + MODE_Q => { if 2 * q >= self.num_proofs[p] { ZERO } else { self.Z[p][2 * q][w][x] } }, + MODE_W => { if 2 * w >= self.num_witness_secs { ZERO } else { self.Z[p][q][2 * w][x] } } + MODE_X => { if 2 * x >= self.num_inputs[p][w] { ZERO } else { self.Z[p][q][w][2 * x] } }, + _ => unreachable!() + } + } + pub fn index_high(&self, p: usize, q: usize, w: usize, x: usize, mode: usize) -> S { + let ZERO = S::field_zero(); + match mode { + MODE_P => { if self.num_instances == 1 { self.Z[0][q][w][x] } else if 2 * p + 1 >= self.num_instances { ZERO } else { self.Z[2 * p + 1][q][w][x] } } + MODE_Q => { if 2 * q + 1 >= self.num_proofs[p] { ZERO } else { self.Z[p][2 * q + 1][w][x] } } + MODE_W => { if 2 * w + 1 >= self.num_witness_secs { ZERO } else { self.Z[p][q][2 * w + 1][x] } } + MODE_X => { if 2 * x + 1 >= self.num_inputs[p][w] { ZERO } else { self.Z[p][q][w][2 * x + 1] } } + _ => unreachable!() } } // Bound a variable to r according to mode - // Mode = 1 ==> Bound first variable of "p" section to r - // Mode = 2 ==> Bound first variable of "q" section to r - // Mode = 3 ==> Bound first variable of "w" section to r - // Mode = 4 ==> Bound first variable of "x" section to r + // Mode = 1 ==> Bound last variable of "p" section to r + // Mode = 2 ==> Bound last variable of "q" section to r + // Mode = 3 ==> Bound last variable of "w" section to r + // Mode = 4 ==> Bound last variable of "x" section to r pub fn bound_poly(&mut self, r: &S, mode: usize) { match mode { - MODE_P => { - self.bound_poly_p(r); - } - MODE_Q => { - self.bound_poly_q(r); - } - MODE_W => { - self.bound_poly_w(r); - } - MODE_X => { - self.bound_poly_x(r); - } - _ => { - panic!( - "DensePolynomialPqx bound failed: unrecognized mode {}!", - mode - ); - } + MODE_P => { self.bound_poly_p(r); } + MODE_Q => { self.bound_poly_q(r); } + MODE_W => { self.bound_poly_w(r); } + MODE_X => { if self.num_vars_q >= 1 { self.bound_poly_x_parallel(r) } else { self.bound_poly_x(r) }; } + _ => { panic!("DensePolynomialPqx bound failed: unrecognized mode {}!", mode); } } } - // Bound the first variable of "p" section to r + // Bound the last variable of "p" section to r // We are only allowed to bound "p" if we have bounded the entire q and x section - pub fn bound_poly_p(&mut self, r: &S) { - assert_eq!(self.max_num_proofs, 1); - assert_eq!(self.max_num_inputs, 1); - self.num_instances /= 2; - for p in 0..self.num_instances { - for w in 0..min(self.num_witness_secs, self.Z[p][0].len()) { - let Z_high = if p + self.num_instances < self.Z.len() { - self.Z[p + self.num_instances][0][w][0] - } else { - S::field_zero() - }; - self.Z[p][0][w][0] = self.Z[p][0][w][0] + *r * (Z_high - self.Z[p][0][w][0]); + fn bound_poly_p(&mut self, r: &S) { + assert!(self.num_vars_p >= 1); + assert_eq!(self.num_vars_q, 0); + assert_eq!(self.num_vars_x, 0); + let new_num_instances = self.num_instances.div_ceil(2); + for p in 0..new_num_instances { + for w in 0..self.num_witness_secs { + let Z_low = self.index_low(p, 0, w, 0, MODE_P); + let Z_high = self.index_high(p, 0, w, 0, MODE_P); + self.Z[p][0][w][0] = Z_low + r.clone() * (Z_high - Z_low); } } + self.num_instances = new_num_instances; + self.num_vars_p -= 1; } - // Bound the first variable of "q" section to r - pub fn bound_poly_q(&mut self, r: &S) { - self.max_num_proofs /= 2; - - for p in 0..min(self.num_instances, self.Z.len()) { - if self.num_proofs[p] == 1 { - for w in 0..min(self.num_witness_secs, self.Z[p][0].len()) { - for x in 0..self.num_inputs[p] { - self.Z[p][0][w][x] = (S::field_one() - *r) * self.Z[p][0][w][x]; - } - } - } else { - self.num_proofs[p] /= 2; - for q in 0..self.num_proofs[p] { - for w in 0..min(self.num_witness_secs, self.Z[p][q].len()) { - for x in 0..self.num_inputs[p] { - self.Z[p][q][w][x] = self.Z[p][q][w][x] - + *r * (self.Z[p][q + self.num_proofs[p]][w][x] - self.Z[p][q][w][x]); - } + // Bound the last variable of "q" section to r + fn bound_poly_q(&mut self, r: &S) { + assert!(self.num_vars_q >= 1); + for p in 0..self.num_instances { + let new_num_proofs = self.num_proofs[p].div_ceil(2); + for q in 0..new_num_proofs { + for w in 0..self.num_witness_secs { + for x in 0..self.num_inputs[p][w] { + let Z_low = self.index_low(p, q, w, x, MODE_Q); + let Z_high = self.index_high(p, q, w, x, MODE_Q); + self.Z[p][q][w][x] = Z_low + r.clone() * (Z_high - Z_low); } } } + self.num_proofs[p] = new_num_proofs; } + self.num_vars_q -= 1; } - // Bound the first variable of "w" section to r - pub fn bound_poly_w(&mut self, r: &S) { - self.num_witness_secs /= 2; + // Bound the last variable of "w" section to r + // We are only allowed to bound "w" if we have bounded the entire x section + fn _bound_poly_w_parallel(&mut self, r: &S) { + let ZERO = S::field_zero(); + assert!(self.num_vars_w >= 1); + assert_eq!(self.num_vars_x, 0); + let new_num_witness_secs = self.num_witness_secs.div_ceil(2); + let Z = std::mem::take(&mut self.Z); + self.Z = Z.into_iter().map(|Z_p| { + Z_p.into_par_iter().map(|mut Z_pq| { + for w in 0..self.num_witness_secs { + let Z_low = if 2 * w >= self.num_witness_secs { ZERO } else { Z_pq[2 * w][0] }; + let Z_high = if 2 * w + 1 >= self.num_witness_secs { ZERO } else { Z_pq[2 * w + 1][0] }; + Z_pq[w][0] = Z_low + r.clone() * (Z_high - Z_low); + } + Z_pq + }).collect::>>>() + }).collect::>>>>(); + self.num_witness_secs = new_num_witness_secs; + self.num_vars_w -= 1; +} - for p in 0..min(self.num_instances, self.Z.len()) { + // Bound the last variable of "w" section to r + // We are only allowed to bound "w" if we have bounded the entire x section + fn bound_poly_w(&mut self, r: &S) { + assert!(self.num_vars_w >= 1); + assert_eq!(self.num_vars_x, 0); + let new_num_witness_secs = self.num_witness_secs.div_ceil(2); + for p in 0..self.num_instances { for q in 0..self.num_proofs[p] { - for w in 0..self.num_witness_secs { - for x in 0..self.num_inputs[p] { - let Z_high = if w + self.num_witness_secs < self.Z[p][q].len() { - self.Z[p][q][w + self.num_witness_secs][x] - } else { - S::field_zero() - }; - self.Z[p][q][w][x] = self.Z[p][q][w][x] + *r * (Z_high - self.Z[p][q][w][x]); - } + for w in 0..new_num_witness_secs { + let Z_low = self.index_low(p, q, w, 0, MODE_W); + let Z_high = self.index_high(p, q, w, 0, MODE_W); + self.Z[p][q][w][0] = Z_low + r.clone() * (Z_high - Z_low); } } } - } - - // Bound the first variable of "x" section to r - pub fn bound_poly_x(&mut self, r: &S) { - self.max_num_inputs /= 2; + self.num_witness_secs = new_num_witness_secs; + self.num_vars_w -= 1; +} - for p in 0..min(self.num_instances, self.Z.len()) { - if self.num_inputs[p] == 1 { - for q in 0..self.num_proofs[p] { - for w in 0..min(self.num_witness_secs, self.Z[p][q].len()) { - self.Z[p][q][w][0] = (S::field_one() - *r) * self.Z[p][q][w][0]; + // Bound the last variable of "x" section to r + fn bound_poly_x_parallel(&mut self, r: &S) { + let ZERO = S::field_zero(); + let new_num_inputs: Vec> = self.num_inputs.iter().map(|p| + p.iter().map(|w| w.div_ceil(2)).collect() + ).collect(); + // assert!(self.num_vars_x >= 1); + let Z = std::mem::take(&mut self.Z); + self.Z = Z.into_iter().enumerate().map(|(p, Z_p)| { + Z_p.into_par_iter().map(|mut Z_pq| { + for w in 0..self.num_witness_secs { + for x in 0..new_num_inputs[p][w] { + let Z_low = if 2 * x >= self.num_inputs[p][w] { ZERO } else { Z_pq[w][2 * x] }; + let Z_high = if 2 * x + 1 >= self.num_inputs[p][w] { ZERO } else { Z_pq[w][2 * x + 1] }; + Z_pq[w][x] = Z_low + r.clone() * (Z_high - Z_low); } } - } else { - self.num_inputs[p] /= 2; + Z_pq + }).collect::>>>() + }).collect::>>>>(); + self.num_inputs = new_num_inputs; + if self.num_vars_x >= 1 { + self.num_vars_x -= 1; + } + } + + // Bound the last variable of "x" section to r + fn bound_poly_x(&mut self, r: &S) { + // assert!(self.num_vars_x >= 1); + for p in 0..self.num_instances { + for w in 0..self.num_witness_secs { + let new_num_inputs = self.num_inputs[p][w].div_ceil(2); for q in 0..self.num_proofs[p] { - for w in 0..min(self.num_witness_secs, self.Z[p][q].len()) { - for x in 0..self.num_inputs[p] { - self.Z[p][q][w][x] = self.Z[p][q][w][x] - + *r * (self.Z[p][q][w][x + self.num_inputs[p]] - self.Z[p][q][w][x]); - } + for x in 0..new_num_inputs { + let Z_low = self.index_low(p, q, w, x, MODE_X); + let Z_high = self.index_high(p, q, w, x, MODE_X); + self.Z[p][q][w][x] = Z_low + r.clone() * (Z_high - Z_low); } } + self.num_inputs[p][w] = new_num_inputs; } } + if self.num_vars_x >= 1 { + self.num_vars_x -= 1; + } } - // Bound the entire "p" section to r_p + // Bound the entire "p" section to r_p in reverse // Must occur after r_q's are bounded - pub fn bound_poly_vars_rp(&mut self, r_p: &Vec) { + pub fn bound_poly_vars_rp(&mut self, r_p: &[S]) { for r in r_p { self.bound_poly_p(r); } } - // Bound the entire "q_rev" section to r_q - pub fn bound_poly_vars_rq(&mut self, r_q: &Vec) { + // Bound the entire "q" section to r_q in reverse + pub fn bound_poly_vars_rq_parallel( + &mut self, + r_q: &[S], + ) { + let Z = std::mem::take(&mut self.Z); + + self.Z = Z + .into_iter() + .enumerate() + .map(|(p, mut inst)| { + let num_proofs = self.num_proofs[p]; + let dist_size = num_proofs / min(num_proofs, rayon::current_num_threads().next_power_of_two()); // distributed number of proofs on each thread + let num_threads = num_proofs / dist_size; + + // To perform rigorous parallelism, both num_proofs and # threads must be powers of 2 + // # threads must fully divide num_proofs for even distribution + assert_eq!(num_proofs, num_proofs.next_power_of_two()); + assert_eq!(num_threads, num_threads.next_power_of_two()); + + // Determine parallelism levels + let levels = num_proofs.log_2(); // total layers + let sub_levels = dist_size.log_2(); // parallel layers + let final_levels = num_threads.log_2(); // single core final layers + let left_over_q_len = r_q.len() - levels; // if r_q.len() > log2(num_proofs) + + // single proof matrix dimension W x X + let num_witness_secs = min(self.num_witness_secs, inst[0].len()); + let num_inputs = &self.num_inputs[p]; + + // Divide rq into sub, final, and left_over + let sub_rq = &r_q[0..sub_levels]; + let final_rq = &r_q[sub_levels..levels]; + let left_over_rq = &r_q[(r_q.len() - left_over_q_len)..r_q.len()]; + + if sub_levels > 0 { + inst = inst + .par_chunks_mut(dist_size) + .map(|chunk| { + fold_rq(chunk, sub_rq, 1, dist_size, num_witness_secs, num_inputs); + chunk.to_vec() + }) + .flatten().collect() + } + + if final_levels > 0 { + // aggregate the final result from sub-threads outputs using a single core + fold_rq(&mut inst, final_rq, dist_size, num_threads, num_witness_secs, num_inputs); + } + + if left_over_q_len > 0 { + // the series of random challenges exceeds the total number of variables + let c = left_over_rq.into_iter().fold(S::field_one(), |acc, n| acc * (S::field_one() - *n)); + for w in 0..inst[0].len() { + for x in 0..inst[0][w].len() { + inst[0][w][x] *= c; + } + } + } + + inst + }).collect::>>>>(); + + self.num_vars_q = 0; + self.num_proofs = vec![1; self.num_instances]; + } + + // Bound the entire "q" section to r_q in reverse + pub fn bound_poly_vars_rq(&mut self, r_q: &[S]) { for r in r_q { self.bound_poly_q(r); } } - // Bound the entire "w" section to r_w - pub fn bound_poly_vars_rw(&mut self, r_w: &Vec) { + // Bound the entire "w" section to r_w in reverse + pub fn bound_poly_vars_rw(&mut self, r_w: &[S]) { for r in r_w { self.bound_poly_w(r); } } // Bound the entire "x_rev" section to r_x - pub fn bound_poly_vars_rx(&mut self, r_x: &Vec) { + pub fn bound_poly_vars_rx(&mut self, r_x: &[S]) { for r in r_x { - self.bound_poly_x(r); + if self.num_vars_q >= 1 { self.bound_poly_x_parallel(r) } else { self.bound_poly_x(r) }; } } - pub fn evaluate(&self, r_p: &Vec, r_q: &Vec, r_w: &Vec, r_x: &Vec) -> S { + pub fn evaluate(&self, + rp_rev: &Vec, + rq_rev: &Vec, + rw_rev: &Vec, + rx_rev: &Vec, + ) -> S { let mut cl = self.clone(); - cl.bound_poly_vars_rx(r_x); - cl.bound_poly_vars_rw(r_w); - cl.bound_poly_vars_rq(r_q); - cl.bound_poly_vars_rp(r_p); - cl.index(0, 0, 0, 0) + cl.bound_poly_vars_rx(rx_rev); + cl.bound_poly_vars_rw(rw_rev); + cl.bound_poly_vars_rq(rq_rev); + cl.bound_poly_vars_rp(rp_rev); + return cl.index(0, 0, 0, 0); } // Convert to a (p, q_rev, x_rev) regular dense poly of form (p, q, x) pub fn to_dense_poly(&self) -> DensePolynomial { - let mut Z_poly = - vec![ - S::field_zero(); - self.num_instances * self.max_num_proofs * self.num_witness_secs * self.max_num_inputs - ]; - for p in 0..min(self.num_instances, self.Z.len()) { - let step_q = self.max_num_proofs / self.num_proofs[p]; - let step_x = self.max_num_inputs / self.num_inputs[p]; - for q_rev in 0..self.num_proofs[p] { - let q = rev_bits(q_rev * step_q, self.max_num_proofs); - for x_rev in 0..self.num_inputs[p] { - let x = rev_bits(x_rev * step_x, self.max_num_inputs); - for w in 0..min(self.num_witness_secs, self.Z[p][q_rev].len()) { - Z_poly[p * self.max_num_proofs * self.num_witness_secs * self.max_num_inputs - + q * self.num_witness_secs * self.max_num_inputs - + w * self.max_num_inputs - + x] = self.Z[p][q_rev][w][x_rev]; + let ZERO = S::field_zero(); + + let p_space = self.num_vars_p.pow2(); + let q_space = self.num_vars_q.pow2(); + let w_space = self.num_vars_w.pow2(); + let x_space = self.num_vars_x.pow2(); + + let mut Z_poly = vec![ZERO; p_space * q_space * w_space * x_space]; + for p in 0..self.num_instances { + for q in 0..self.num_proofs[p] { + for w in 0..self.num_witness_secs { + for x in 0..self.num_inputs[p][w] { + Z_poly[ + p * q_space * w_space * x_space + + q * w_space * x_space + + w * x_space + + x + ] = self.Z[p][q][w][x]; } } } } DensePolynomial::new(Z_poly) } -} +} \ No newline at end of file diff --git a/spartan_parallel/src/dense_mlpoly.rs b/spartan_parallel/src/dense_mlpoly.rs index 78a0886f..ba119bde 100644 --- a/spartan_parallel/src/dense_mlpoly.rs +++ b/spartan_parallel/src/dense_mlpoly.rs @@ -7,8 +7,9 @@ use super::random::RandomTape; use super::transcript::ProofTranscript; use core::ops::Index; use merlin::Transcript; +use rayon::{iter::ParallelIterator, slice::ParallelSliceMut}; use serde::{Deserialize, Serialize}; -use std::collections::HashMap; +use std::{cmp::min, collections::HashMap}; #[cfg(feature = "multicore")] use rayon::prelude::*; @@ -247,6 +248,57 @@ impl DensePolynomial { self.len = n; } + fn fold_r(proofs: &mut [S], r: &[S], step: usize, mut l: usize) { + for r in r { + let r1 = S::field_one() - r.clone(); + let r2 = r.clone(); + + l = l.div_ceil(2); + (0..l).for_each(|i| { + proofs[i * step] = r1 * proofs[2 * i * step] + r2 * proofs[(2 * i + 1) * step]; + }); + } + } + + // returns Z(r) in O(n) time + pub fn evaluate_and_consume_parallel(&mut self, r: &[S]) -> S { + assert_eq!(r.len(), self.get_num_vars()); + let mut inst = std::mem::take(&mut self.Z); + + let len = self.len; + let dist_size = len / min(len, rayon::current_num_threads().next_power_of_two()); // distributed number of proofs on each thread + let num_threads = len / dist_size; + + // To perform rigorous parallelism, both len and # threads must be powers of 2 + // # threads must fully divide num_proofs for even distribution + assert_eq!(len, len.next_power_of_two()); + assert_eq!(num_threads, num_threads.next_power_of_two()); + + // Determine parallelism levels + let levels = len.log_2(); // total layers + let sub_levels = dist_size.log_2(); // parallel layers + let final_levels = num_threads.log_2(); // single core final layers + // Divide r into sub and final + let sub_r = &r[0..sub_levels]; + let final_r = &r[sub_levels..levels]; + + if sub_levels > 0 { + inst = inst + .par_chunks_mut(dist_size) + .map(|chunk| { + Self::fold_r(chunk, sub_r, 1, dist_size); + chunk.to_vec() + }) + .flatten().collect() + } + + if final_levels > 0 { + // aggregate the final result from sub-threads outputs using a single core + Self::fold_r(&mut inst, final_r, dist_size, num_threads); + } + inst[0] + } + // returns Z(r) in O(n) time pub fn evaluate(&self, r: &[S]) -> S { // r must have a value for each variable diff --git a/spartan_parallel/src/instance.rs b/spartan_parallel/src/instance.rs index 91133400..d046bd47 100644 --- a/spartan_parallel/src/instance.rs +++ b/spartan_parallel/src/instance.rs @@ -1,10 +1,22 @@ use std::cmp::max; +use std::collections::HashMap; use crate::errors::R1CSError; use crate::math::Math; use crate::scalar::SpartanExtensionField; use crate::R1CSInstance; +const GROUP_POWER_SCALE: usize = 16; +// Group all instances with the similar num_vars (round to the next power of four) together +// Output.0 records the label of instances included within each commitment +fn next_group_size(val: usize) -> usize { + let mut base = 1; + while base < val { + base *= GROUP_POWER_SCALE; + } + return base; +} + /// `Instance` holds the description of R1CS matrices and a hash of the matrices #[derive(Clone)] pub struct Instance { @@ -20,22 +32,34 @@ impl Instance { num_instances: usize, max_num_cons: usize, num_cons: Vec, - num_vars: usize, + max_num_vars: usize, + num_vars: Vec, A: &Vec>, B: &Vec>, C: &Vec>, ) -> Result, R1CSError> { - let (num_vars_padded, max_num_cons_padded, num_cons_padded) = { - let num_vars_padded = { - let mut num_vars_padded = num_vars; + let ZERO = S::field_zero(); + + let (max_num_vars_padded, num_vars_padded, max_num_cons_padded, num_cons_padded) = { + let max_num_vars_padded = { + let mut max_num_vars_padded = max_num_vars; // ensure that num_vars_padded a power of two - if num_vars_padded.next_power_of_two() != num_vars_padded { - num_vars_padded = num_vars_padded.next_power_of_two(); + if max_num_vars_padded.next_power_of_two() != max_num_vars_padded { + max_num_vars_padded = max_num_vars_padded.next_power_of_two(); } - num_vars_padded + max_num_vars_padded }; + let mut num_vars_padded = Vec::new(); + for i in 0..num_vars.len() { + if num_vars[i] == 0 || num_vars[i] == 1 { + num_vars_padded.push(2); + } else { + num_vars_padded.push(num_vars[i].next_power_of_two()); + } + } + let max_num_cons_padded = { let mut max_num_cons_padded = max_num_cons; @@ -60,7 +84,7 @@ impl Instance { } } - (num_vars_padded, max_num_cons_padded, num_cons_padded) + (max_num_vars_padded, num_vars_padded, max_num_cons_padded, num_cons_padded) }; let bytes_to_scalar = @@ -74,8 +98,8 @@ impl Instance { } // col must be smaller than num_vars - if col >= num_vars { - println!("COL: {}, NUM_VARS: {}", col, num_vars); + if col >= num_vars[b] { + println!("COL: {}, NUM_VARS: {}", col, num_vars[b]); return Err(R1CSError::InvalidIndex); } @@ -83,8 +107,8 @@ impl Instance { if val.is_some().unwrap_u8() == 1 { // if col >= num_vars, it means that it is referencing a 1 or input in the satisfying // assignment - if col >= num_vars { - mat.push((row, col + num_vars_padded - num_vars, val.unwrap())); + if col >= num_vars[b] { + mat.push((row, col + num_vars_padded[b] - num_vars[b], val.unwrap())); } else { mat.push((row, col, val.unwrap())); } @@ -97,7 +121,7 @@ impl Instance { // we do not need to pad otherwise because the dummy constraints are implicit in the sum-check protocol if num_cons[b] == 0 || num_cons[b] == 1 { for i in tups.len()..num_cons_padded[b] { - mat.push((i, num_vars, S::field_zero())); + mat.push((i, num_vars[b], ZERO)); } } @@ -132,6 +156,7 @@ impl Instance { num_instances, max_num_cons_padded, num_cons_padded, + max_num_vars_padded, num_vars_padded, &A_scalar_list, &B_scalar_list, @@ -217,10 +242,10 @@ impl Instance { /// Verify the correctness of each block execution, as well as extracting all memory operations /// /// Input composition: (if every segment exists) - /// INPUT + VAR Challenges BLOCK_W2 BLOCK_W3 BLOCK_W3_SHIFTED - /// 0 1 2 IOW +1 +2 +3 +4 +5 | 0 1 2 3 | 0 1 2 3 4 NIU 1 2 3 2NP +1 +2 +3 +4 | 0 1 2 3 4 5 6 7 | 0 1 2 3 4 5 6 7 - /// v i0 ... PA0 PD0 ... VA0 VD0 ... | tau r r^2 ... | _ _ ZO r*i1 ... MR MC MR ... MR1 MR2 MR3 MC MR1 ... | v x pi D pi D pi D | v x pi D pi D pi D - /// INPUT PHY VIR INPUT PHY VIR INPUT PHY VIR + /// INPUT + VAR BLOCK_W2 Challenges BLOCK_W3 BLOCK_W3_SHIFTED + /// 0 1 2 IOW +1 +2 +3 +4 +5 | 0 1 2 3 4 NIU 1 2 3 2NP +1 +2 +3 +4 | 0 1 2 3 | 0 1 2 3 4 5 6 7 | 0 1 2 3 4 5 6 7 + /// v i0 ... PA0 PD0 ... VA0 VD0 ... | _ _ ZO r*i1 ... MR MC MR ... MR1 MR2 MR3 MC MR1 ... | tau r r^2 ... | v x pi D pi D pi D | v x pi D pi D pi D + /// INPUT PHY VIR INPUT PHY VIR INPUT PHY VIR /// /// VAR: /// We assume that the witnesses are of the following format: @@ -243,7 +268,9 @@ impl Instance { /// - VMR3 = r^3 * VT /// - VMC = (1 or VMC[i-1]) * (tau - VA - VMR1 - VMR2 - VMR3) /// The final product is stored in X = MC[NV - 1] - pub fn gen_block_inst( + /// + /// If in COMMIT_MODE, commit instance by num_vars_per_block, rounded to the nearest power of four + pub fn gen_block_inst( num_instances: usize, num_vars: usize, args: &Vec< @@ -263,7 +290,25 @@ impl Instance { ) -> (usize, usize, usize, Instance) { assert_eq!(num_instances, args.len()); - if PRINT_SIZE { + let num_vars_padded_per_block = if COMMIT_MODE { + // If in commit mode, group all R1CS with num_vars within a power of 2^4 + // For every padded group size, mark the actual maximum num_vars of each group + let mut max_size_per_group: HashMap = HashMap::new(); + for num_vars in num_vars_per_block { + if let Some(val) = max_size_per_group.get(&next_group_size(*num_vars)) { + if num_vars.next_power_of_two() > *val { + max_size_per_group.insert(next_group_size(*num_vars), num_vars.next_power_of_two()); + } + } else { + max_size_per_group.insert(next_group_size(*num_vars), num_vars.next_power_of_two()); + } + } + num_vars_per_block.iter().map(|i| max_size_per_group.get(&next_group_size(*i)).unwrap().clone()).collect() + } else { + vec![num_vars; num_instances] + }; + + if PRINT_SIZE && !COMMIT_MODE { println!("\n\n--\nBLOCK INSTS"); println!( "{:10} {:>4} {:>4} {:>4} {:>4}", @@ -292,44 +337,44 @@ impl Instance { let V_VD = |b: usize, i: usize| io_width + 2 * num_phy_ops[b] + 4 * i + 1; let V_VL = |b: usize, i: usize| io_width + 2 * num_phy_ops[b] + 4 * i + 2; let V_VT = |b: usize, i: usize| io_width + 2 * num_phy_ops[b] + 4 * i + 3; - // in CHALLENGES, not used if !has_mem_op - let V_tau = num_vars; - let V_r = |i: usize| num_vars + i; // in BLOCK_W2 / INPUT_W2 - let V_input_dot_prod = |i: usize| { + let V_input_dot_prod = |b: usize, i: usize| { if i == 0 { V_input(0) } else { - 2 * num_vars + 2 + i + num_vars_padded_per_block[b] + 2 + i } }; - let V_output_dot_prod = |i: usize| 2 * num_vars + 2 + (num_inputs_unpadded - 1) + i; + let V_output_dot_prod = |b: usize, i: usize| num_vars_padded_per_block[b] + 2 + (num_inputs_unpadded - 1) + i; // in BLOCK_W2 / PHY_W2 - let V_PMR = |i: usize| 2 * num_vars + 2 * num_inputs_unpadded + 2 * i; - let V_PMC = |i: usize| 2 * num_vars + 2 * num_inputs_unpadded + 2 * i + 1; + let V_PMR = |b: usize, i: usize| num_vars_padded_per_block[b] + 2 * num_inputs_unpadded + 2 * i; + let V_PMC = |b: usize, i: usize| num_vars_padded_per_block[b] + 2 * num_inputs_unpadded + 2 * i + 1; // in BLOCK_W2 / VIR_W2 let V_VMR1 = - |b: usize, i: usize| 2 * num_vars + 2 * num_inputs_unpadded + 2 * num_phy_ops[b] + 4 * i; + |b: usize, i: usize| num_vars_padded_per_block[b] + 2 * num_inputs_unpadded + 2 * num_phy_ops[b] + 4 * i; let V_VMR2 = - |b: usize, i: usize| 2 * num_vars + 2 * num_inputs_unpadded + 2 * num_phy_ops[b] + 4 * i + 1; + |b: usize, i: usize| num_vars_padded_per_block[b] + 2 * num_inputs_unpadded + 2 * num_phy_ops[b] + 4 * i + 1; let V_VMR3 = - |b: usize, i: usize| 2 * num_vars + 2 * num_inputs_unpadded + 2 * num_phy_ops[b] + 4 * i + 2; + |b: usize, i: usize| num_vars_padded_per_block[b] + 2 * num_inputs_unpadded + 2 * num_phy_ops[b] + 4 * i + 2; let V_VMC = - |b: usize, i: usize| 2 * num_vars + 2 * num_inputs_unpadded + 2 * num_phy_ops[b] + 4 * i + 3; + |b: usize, i: usize| num_vars_padded_per_block[b] + 2 * num_inputs_unpadded + 2 * num_phy_ops[b] + 4 * i + 3; + // in CHALLENGES, not used if !has_mem_op + let V_tau = |b: usize| 2 * num_vars_padded_per_block[b]; + let V_r = |b: usize, i: usize| 2 * num_vars_padded_per_block[b] + i; // in BLOCK_W3 - let V_v = 3 * num_vars; - let V_x = 3 * num_vars + 1; - let V_pi = 3 * num_vars + 2; - let V_d = 3 * num_vars + 3; - let V_Pp = 3 * num_vars + 4; - let V_Pd = 3 * num_vars + 5; - let V_Vp = 3 * num_vars + 6; - let V_Vd = 3 * num_vars + 7; + let V_v = |b: usize| 3 * num_vars_padded_per_block[b]; + let V_x = |b: usize| 3 * num_vars_padded_per_block[b] + 1; + let V_pi = |b: usize| 3 * num_vars_padded_per_block[b] + 2; + let V_d = |b: usize| 3 * num_vars_padded_per_block[b] + 3; + let V_Pp = |b: usize| 3 * num_vars_padded_per_block[b] + 4; + let V_Pd = |b: usize| 3 * num_vars_padded_per_block[b] + 5; + let V_Vp = |b: usize| 3 * num_vars_padded_per_block[b] + 6; + let V_Vd = |b: usize| 3 * num_vars_padded_per_block[b] + 7; // in BLOCK_W3_SHIFTED - let V_sv = 4 * num_vars; - let V_spi = 4 * num_vars + 2; - let V_Psp = 4 * num_vars + 4; - let V_Vsp = 4 * num_vars + 6; + let V_sv = |b: usize| 4 * num_vars_padded_per_block[b]; + let V_spi = |b: usize| 4 * num_vars_padded_per_block[b] + 2; + let V_Psp = |b: usize| 4 * num_vars_padded_per_block[b] + 4; + let V_Vsp = |b: usize| 4 * num_vars_padded_per_block[b] + 6; // Variable used by printing let mut total_inst_commit_size = 0; @@ -374,8 +419,8 @@ impl Instance { C, counter, vec![(V_input(i), 1)], - vec![(V_r(i), 1)], - vec![(V_input_dot_prod(i), 1)], + vec![(V_r(b, i), 1)], + vec![(V_input_dot_prod(b, i), 1)], ); counter += 1; } @@ -387,8 +432,8 @@ impl Instance { C, counter, vec![(V_output(i), 1)], - vec![(V_r(i + num_inputs_unpadded - 1), 1)], - vec![(V_output_dot_prod(i), 1)], + vec![(V_r(b, i + num_inputs_unpadded - 1), 1)], + vec![(V_output_dot_prod(b, i), 1)], ); counter += 1; } @@ -400,7 +445,7 @@ impl Instance { counter, vec![], vec![], - vec![(V_valid, 1), (V_v, -1)], + vec![(V_valid, 1), (V_v(b), -1)], ); counter += 1; // x[k] @@ -410,14 +455,14 @@ impl Instance { C, counter, [ - vec![(V_tau, 1)], + vec![(V_tau(b), 1)], (0..2 * num_inputs_unpadded - 2) - .map(|i| (V_input_dot_prod(i), -1)) + .map(|i| (V_input_dot_prod(b, i), -1)) .collect(), ] .concat(), vec![(V_cnst, 1)], - vec![(V_x, 1)], + vec![(V_x(b), 1)], ); counter += 1; // D[k] = x[k] * (pi[k + 1] + (1 - v[k + 1])) @@ -426,9 +471,9 @@ impl Instance { B, C, counter, - vec![(V_x, 1)], - vec![(V_spi, 1), (V_cnst, 1), (V_sv, -1)], - vec![(V_d, 1)], + vec![(V_x(b), 1)], + vec![(V_spi(b), 1), (V_cnst, 1), (V_sv(b), -1)], + vec![(V_d(b), 1)], ); counter += 1; // pi[k] = v[k] * D[k] @@ -437,9 +482,9 @@ impl Instance { B, C, counter, - vec![(V_v, 1)], - vec![(V_d, 1)], - vec![(V_pi, 1)], + vec![(V_v(b), 1)], + vec![(V_d(b), 1)], + vec![(V_pi(b), 1)], ); counter += 1; @@ -458,9 +503,9 @@ impl Instance { B, C, counter, - vec![(V_r(1), 1)], + vec![(V_r(b, 1), 1)], vec![(V_PD(i), 1)], - vec![(V_PMR(i), 1)], + vec![(V_PMR(b, i), 1)], ); counter += 1; // PMC = (1 or PMC[i-1]) * (tau - PA - PMR) @@ -471,8 +516,8 @@ impl Instance { C, counter, vec![(V_cnst, 1)], - vec![(V_tau, 1), (V_PA(i), -1), (V_PMR(i), -1)], - vec![(V_PMC(i), 1)], + vec![(V_tau(b), 1), (V_PA(i), -1), (V_PMR(b, i), -1)], + vec![(V_PMC(b, i), 1)], ); } else { (A, B, C) = Instance::::gen_constr( @@ -480,9 +525,9 @@ impl Instance { B, C, counter, - vec![(V_PMC(i - 1), 1)], - vec![(V_tau, 1), (V_PA(i), -1), (V_PMR(i), -1)], - vec![(V_PMC(i), 1)], + vec![(V_PMC(b, i - 1), 1)], + vec![(V_tau(b), 1), (V_PA(i), -1), (V_PMR(b, i), -1)], + vec![(V_PMC(b, i), 1)], ); } counter += 1; @@ -498,10 +543,10 @@ impl Instance { vec![if num_phy_ops[b] == 0 { (V_cnst, 1) } else { - (V_PMC(num_phy_ops[b] - 1), 1) + (V_PMC(b, num_phy_ops[b] - 1), 1) }], - vec![(V_Psp, 1), (V_cnst, 1), (V_sv, -1)], - vec![(V_Pd, 1)], + vec![(V_Psp(b), 1), (V_cnst, 1), (V_sv(b), -1)], + vec![(V_Pd(b), 1)], ); counter += 1; // Pp @@ -510,9 +555,9 @@ impl Instance { B, C, counter, - vec![(V_v, 1)], - vec![(V_Pd, 1)], - vec![(V_Pp, 1)], + vec![(V_v(b), 1)], + vec![(V_Pd(b), 1)], + vec![(V_Pp(b), 1)], ); counter += 1; @@ -528,7 +573,7 @@ impl Instance { B, C, counter, - vec![(V_r(1), 1)], + vec![(V_r(b, 1), 1)], vec![(V_VD(b, i), 1)], vec![(V_VMR1(b, i), 1)], ); @@ -539,7 +584,7 @@ impl Instance { B, C, counter, - vec![(V_r(2), 1)], + vec![(V_r(b, 2), 1)], vec![(V_VL(b, i), 1)], vec![(V_VMR2(b, i), 1)], ); @@ -550,7 +595,7 @@ impl Instance { B, C, counter, - vec![(V_r(3), 1)], + vec![(V_r(b, 3), 1)], vec![(V_VT(b, i), 1)], vec![(V_VMR3(b, i), 1)], ); @@ -564,7 +609,7 @@ impl Instance { counter, vec![(V_cnst, 1)], vec![ - (V_tau, 1), + (V_tau(b), 1), (V_VA(b, i), -1), (V_VMR1(b, i), -1), (V_VMR2(b, i), -1), @@ -580,7 +625,7 @@ impl Instance { counter, vec![(V_VMC(b, i - 1), 1)], vec![ - (V_tau, 1), + (V_tau(b), 1), (V_VA(b, i), -1), (V_VMR1(b, i), -1), (V_VMR2(b, i), -1), @@ -604,8 +649,8 @@ impl Instance { } else { (V_VMC(b, num_vir_ops[b] - 1), 1) }], - vec![(V_Vsp, 1), (V_cnst, 1), (V_sv, -1)], - vec![(V_Vd, 1)], + vec![(V_Vsp(b), 1), (V_cnst, 1), (V_sv(b), -1)], + vec![(V_Vd(b), 1)], ); counter += 1; // Vp @@ -614,9 +659,9 @@ impl Instance { B, C, counter, - vec![(V_v, 1)], - vec![(V_Vd, 1)], - vec![(V_Vp, 1)], + vec![(V_v(b), 1)], + vec![(V_Vd(b), 1)], + vec![(V_Vp(b), 1)], ); counter += 1; @@ -640,7 +685,7 @@ impl Instance { B_list.push(B); C_list.push(C); - if PRINT_SIZE { + if PRINT_SIZE && !COMMIT_MODE { let max_nnz = max(tmp_nnz_A, max(tmp_nnz_B, tmp_nnz_C)); let total_var = num_vars_per_block[b] + 2 * num_inputs_unpadded.next_power_of_two() @@ -661,19 +706,39 @@ impl Instance { } } - if PRINT_SIZE { + if PRINT_SIZE && !COMMIT_MODE { println!("Total Num of Blocks: {}", num_instances); println!("Total Inst Commit Size: {}", total_inst_commit_size); println!("Total Var Commit Size: {}", total_var_commit_size); println!("Total Cons Exec Size: {}", total_cons_exec_size); } + // Set num_cons of R1CS of the same num_vars to be the same + let num_cons_padded_per_block = { + if COMMIT_MODE { + let mut max_cons_per_group: HashMap = HashMap::new(); + for i in 0..num_instances { + if let Some(num_cons) = max_cons_per_group.get(&num_vars_padded_per_block[i]) { + if *num_cons < block_num_cons[i] { + max_cons_per_group.insert(num_vars_padded_per_block[i], block_num_cons[i]); + } + } else { + max_cons_per_group.insert(num_vars_padded_per_block[i], block_num_cons[i]); + } + } + num_vars_padded_per_block.iter().map(|i| max_cons_per_group.get(i).unwrap().clone()).collect() + } else { + block_num_cons + } + }; + let block_num_vars = 8 * num_vars; let block_inst = Instance::new( num_instances, block_max_num_cons, - block_num_cons, + num_cons_padded_per_block, block_num_vars, + num_vars_padded_per_block.into_iter().map(|i| 8 * i).collect(), &A_list, &B_list, &C_list, @@ -727,9 +792,14 @@ impl Instance { /// D2 = D1 * (ls[i+1] - STORE) /// Where STORE = 0 /// Input composition: - /// Op[k] Op[k + 1] D2 & bits of ts[k + 1] - ts[k] - /// 0 1 2 3 4 5 6 7 | 0 1 2 3 4 5 6 7 | 0 1 2 3 4 - /// v D1 a d ls ts _ _ | v D1 a d ls ts _ _ | D2 EQ B0 B1 ... + /// bits of ts[k + 1] - ts[k] Op[k] Op[k + 1] + /// 0 1 2 3 4 | 0 1 2 3 4 5 6 7 | 0 1 2 3 4 5 6 7 + /// D2 EQ B0 B1 ... | v D1 a d ls ts _ _ | v D1 a d ls ts _ _ + /// + /// If ADDR_NONCONSEC, address comparison of VIR uses <= instead of +1, with the following expression + /// ts | addr + /// 0 1 2 3 4 | 0 1 2 3 4 5 + /// D2 EQ B0 B1 ... | D4 INV EQ B0 B1 ... pub fn gen_pairwise_check_inst( max_ts_width: usize, mem_addr_ts_bits_size: usize, @@ -745,6 +815,7 @@ impl Instance { "", "con", "var", "nnz", "exec" ); } + // Variable used by printing let mut total_inst_commit_size = 0; let mut total_var_commit_size = 0; @@ -752,7 +823,6 @@ impl Instance { let pairwise_check_num_vars = max(8, mem_addr_ts_bits_size); let pairwise_check_max_num_cons = 8 + max_ts_width; - let pairwise_check_num_cons = vec![2, 4, 8 + max_ts_width]; let pairwise_check_num_non_zero_entries: usize = max(13 + max_ts_width, 5 + 2 * max_ts_width); let pairwise_check_inst = { @@ -883,23 +953,24 @@ impl Instance { let (A, B, C) = { let width = pairwise_check_num_vars; - let V_valid = 0; + // TS_BITS + let V_D2 = 0; + let V_EQ = 1; + let V_B = |i| 2 + i; + // OP[K], OP[K + 1] + let V_valid = width; let V_cnst = V_valid; - let V_D1 = 1; - let V_addr = 2; - let V_data = 3; - let V_ls = 4; - let V_ts = 5; - let V_D2 = 2 * width; - let V_EQ = 2 * width + 1; - let V_B = |i| 2 * width + 2 + i; + let V_D1 = width + 1; + let V_addr = width + 2; + let V_data = width + 3; + let V_ls = width + 4; + let V_ts = width + 5; let mut A: Vec<(usize, usize, [u8; 32])> = Vec::new(); let mut B: Vec<(usize, usize, [u8; 32])> = Vec::new(); let mut C: Vec<(usize, usize, [u8; 32])> = Vec::new(); let mut num_cons = 0; - // Sortedness // (v[k] - 1) * v[k + 1] = 0 (A, B, C) = Instance::::gen_constr( A, @@ -911,6 +982,7 @@ impl Instance { vec![], ); num_cons += 1; + // Sortedness // D1[k] = v[k + 1] * (1 - addr[k + 1] + addr[k]) (A, B, C) = Instance::::gen_constr( A, @@ -1046,8 +1118,9 @@ impl Instance { let pairwise_check_inst = Instance::new( 3, pairwise_check_max_num_cons, - pairwise_check_num_cons, + vec![pairwise_check_max_num_cons; 3], 4 * pairwise_check_num_vars, + vec![4 * pairwise_check_num_vars; 3], &A_list, &B_list, &C_list, @@ -1299,6 +1372,7 @@ impl Instance { perm_root_num_cons, vec![perm_root_num_cons], 8 * num_vars, + vec![8 * num_vars], &A_list, &B_list, &C_list, @@ -1312,4 +1386,4 @@ impl Instance { perm_root_inst, ) } -} +} \ No newline at end of file diff --git a/spartan_parallel/src/lib.rs b/spartan_parallel/src/lib.rs index 3c41496b..5f62cf14 100644 --- a/spartan_parallel/src/lib.rs +++ b/spartan_parallel/src/lib.rs @@ -15,8 +15,6 @@ extern crate digest; extern crate merlin; extern crate rand; extern crate sha3; - -#[cfg(feature = "multicore")] extern crate rayon; mod custom_dense_mlpoly; @@ -40,7 +38,7 @@ mod unipoly; use std::{ cmp::{max, Ordering}, fs::File, - io::Write, + io::Write, iter::zip, }; use dense_mlpoly::{DensePolynomial, PolyEvalProof}; @@ -52,6 +50,7 @@ use merlin::Transcript; use r1csinstance::{R1CSCommitment, R1CSDecommitment, R1CSEvalProof, R1CSInstance}; use r1csproof::R1CSProof; use random::RandomTape; +use rayon::iter::{IndexedParallelIterator, IntoParallelIterator, IntoParallelRefIterator, ParallelIterator}; use scalar::SpartanExtensionField; use serde::{Deserialize, Serialize}; use timer::Timer; @@ -433,6 +432,7 @@ impl ProverWitnessSecInfo { } } + // Empty ProverWitnessSecInfo fn dummy() -> ProverWitnessSecInfo { ProverWitnessSecInfo { num_inputs: Vec::new(), @@ -441,6 +441,16 @@ impl ProverWitnessSecInfo { } } + // Zero ProverWitnessSecInfo + fn pad() -> ProverWitnessSecInfo { + let ZERO = S::field_zero(); + ProverWitnessSecInfo { + num_inputs: vec![1], + w_mat: vec![vec![vec![ZERO]]], + poly_w: vec![DensePolynomial::new(vec![ZERO])], + } + } + // Concatenate the components in the given order to a new prover witness sec fn concat(components: Vec<&ProverWitnessSecInfo>) -> ProverWitnessSecInfo { let mut num_inputs = Vec::new(); @@ -467,7 +477,7 @@ impl ProverWitnessSecInfo { fn merge(components: Vec<&ProverWitnessSecInfo>) -> (ProverWitnessSecInfo, Vec) { // Merge algorithm with pointer on each component let mut pointers = vec![0; components.len()]; - let merged_size = components.iter().fold(0, |a, b| a + b.num_inputs.len()); + let merged_size = components.iter().map(|c| c.num_inputs.len()).sum(); // Map from instances of the merged ProverWitnessSec to each component let mut inst_map = Vec::new(); let mut merged_num_inputs = Vec::new(); @@ -531,6 +541,13 @@ impl VerifierWitnessSecInfo { } } + fn pad() -> VerifierWitnessSecInfo { + VerifierWitnessSecInfo { + num_inputs: vec![1], + num_proofs: vec![1], + } + } + // Concatenate the components in the given order to a new verifier witness sec fn concat(components: Vec<&VerifierWitnessSecInfo>) -> VerifierWitnessSecInfo { let mut num_inputs = Vec::new(); @@ -554,7 +571,7 @@ impl VerifierWitnessSecInfo { fn merge(components: Vec<&VerifierWitnessSecInfo>) -> (VerifierWitnessSecInfo, Vec) { // Merge algorithm with pointer on each component let mut pointers = vec![0; components.len()]; - let merged_size = components.iter().fold(0, |a, b| a + b.num_inputs.len()); + let merged_size = components.iter().map(|c| c.num_inputs.len()).sum(); // Map from instances of the merged ProverWitnessSec to each component let mut inst_map = Vec::new(); let mut merged_num_inputs = Vec::new(); @@ -605,13 +622,12 @@ pub struct SNARK { perm_root_r1cs_sat_proof: R1CSProof, perm_root_inst_evals: [S; 3], perm_root_r1cs_eval_proof: R1CSEvalProof, - // Product proof for permutation - perm_poly_poly_list: Vec, - proof_eval_perm_poly_prod_list: Vec>, + // perm_poly_poly_list: Vec, + // proof_eval_perm_poly_prod_list: Vec>, // shift_proof: ShiftProofs, - io_proof: IOProofs, + // io_proof: IOProofs, } // Sort block_num_proofs and record where each entry is @@ -643,11 +659,96 @@ impl PartialEq for InstanceSortHelper { } impl Eq for InstanceSortHelper {} -impl SNARK { +impl SNARK { fn protocol_name() -> &'static [u8] { b"Spartan SNARK proof" } + // Computes proof size by commitment / non-commitment + fn compute_size(&self) -> (usize, usize, usize, usize) { + /* + let commit_size = bincode::serialize(&self.block_comm_vars_list).unwrap().len() + + bincode::serialize(&self.exec_comm_inputs).unwrap().len() + + bincode::serialize(&self.addr_comm_phy_mems).unwrap().len() + + bincode::serialize(&self.addr_comm_phy_mems_shifted).unwrap().len() + + bincode::serialize(&self.addr_comm_vir_mems).unwrap().len() + + bincode::serialize(&self.addr_comm_vir_mems_shifted).unwrap().len() + + bincode::serialize(&self.addr_comm_ts_bits).unwrap().len() + + + bincode::serialize(&self.perm_exec_comm_w2_list).unwrap().len() + + bincode::serialize(&self.perm_exec_comm_w3_list).unwrap().len() + + bincode::serialize(&self.perm_exec_comm_w3_shifted).unwrap().len() + + + bincode::serialize(&self.block_comm_w2_list).unwrap().len() + + bincode::serialize(&self.block_comm_w3_list).unwrap().len() + + bincode::serialize(&self.block_comm_w3_list_shifted).unwrap().len() + + + bincode::serialize(&self.init_phy_mem_comm_w2).unwrap().len() + + bincode::serialize(&self.init_phy_mem_comm_w3).unwrap().len() + + bincode::serialize(&self.init_phy_mem_comm_w3_shifted).unwrap().len() + + + bincode::serialize(&self.init_vir_mem_comm_w2).unwrap().len() + + bincode::serialize(&self.init_vir_mem_comm_w3).unwrap().len() + + bincode::serialize(&self.init_vir_mem_comm_w3_shifted).unwrap().len() + + + bincode::serialize(&self.phy_mem_addr_comm_w2).unwrap().len() + + bincode::serialize(&self.phy_mem_addr_comm_w3).unwrap().len() + + bincode::serialize(&self.phy_mem_addr_comm_w3_shifted).unwrap().len() + + + bincode::serialize(&self.vir_mem_addr_comm_w2).unwrap().len() + + bincode::serialize(&self.vir_mem_addr_comm_w3).unwrap().len() + + bincode::serialize(&self.vir_mem_addr_comm_w3_shifted).unwrap().len(); + */ + let dense_commit_size = 0; + + let block_proof_size = bincode::serialize(&self.block_r1cs_sat_proof) + .unwrap() + .len() + + bincode::serialize(&self.block_inst_evals_bound_rp) + .unwrap() + .len() + + bincode::serialize(&self.block_inst_evals_list) + .unwrap() + .len() + + bincode::serialize(&self.block_r1cs_eval_proof_list) + .unwrap() + .len(); + + let pairwise_proof_size = bincode::serialize(&self.pairwise_check_r1cs_sat_proof) + .unwrap() + .len() + + bincode::serialize(&self.pairwise_check_inst_evals_bound_rp) + .unwrap() + .len() + + bincode::serialize(&self.pairwise_check_inst_evals_list) + .unwrap() + .len() + + bincode::serialize(&self.pairwise_check_r1cs_eval_proof) + .unwrap() + .len(); + + let perm_proof_size = bincode::serialize(&self.perm_root_r1cs_sat_proof) + .unwrap() + .len() + + bincode::serialize(&self.perm_root_inst_evals) + .unwrap() + .len() + + bincode::serialize(&self.perm_root_r1cs_eval_proof) + .unwrap() + .len(); + // + bincode::serialize(&self.perm_poly_poly_list).unwrap().len() + // + bincode::serialize(&self.proof_eval_perm_poly_prod_list).unwrap().len(); + + // + bincode::serialize(&self.shift_proof).unwrap().len() + // let io_proof_size = bincode::serialize(&self.io_proof).unwrap().len(); + ( + dense_commit_size, + block_proof_size, + pairwise_proof_size, + perm_proof_size, + ) + } + /// A public computation to create a commitment to a list of R1CS instances pub fn multi_encode( inst: &Instance, @@ -1015,9 +1116,6 @@ impl SNARK { let index: Vec = inst_sorter.iter().map(|i| i.index).collect(); let block_inst_unsorted = block_inst.clone(); block_inst.sort(block_num_instances, &index); - let block_num_vars: Vec = (0..block_num_instances) - .map(|i| block_num_vars[index[i]]) - .collect(); let block_num_phy_ops: Vec = (0..block_num_instances) .map(|i| block_num_phy_ops[index[i]]) .collect(); @@ -1174,50 +1272,48 @@ impl SNARK { // w2 is _, _, ZO, r * i1, r^2 * i2, r^3 * i3, ... // where ZO * r^n = r^n * o0 + r^(n + 1) * o1, ..., // are used by the consistency check - let perm_exec_w2 = { - let mut perm_exec_w2: Vec> = exec_inputs_list - .iter() - .map(|input| { - [ - vec![S::field_zero(); 3], - (1..2 * num_inputs_unpadded - 2) - .map(|j| perm_w0[j] * input[j + 2]) - .collect(), - vec![S::field_zero(); num_ios - 2 * num_inputs_unpadded], - ] - .concat() - }) - .collect(); - for q in 0..consis_num_proofs { - perm_exec_w2[q][0] = exec_inputs_list[q][0]; - perm_exec_w2[q][1] = exec_inputs_list[q][0]; + let (perm_exec_w2, perm_exec_w3) = { + let perm_exec_w2: Vec>; + let mut perm_exec_w3: Vec>; + // Entries that do not depend on others can be generated in parallel + (perm_exec_w2, perm_exec_w3) = (0..consis_num_proofs).into_par_iter().map(|q| { + // perm_exec_w2 + let mut perm_exec_w2_q = [ + vec![S::field_zero(); 3], + (1..2 * num_inputs_unpadded - 2) + .map(|j| perm_w0[j] * exec_inputs_list[q][j + 2]) + .collect(), + vec![S::field_zero(); num_ios - 2 * num_inputs_unpadded], + ].concat(); + perm_exec_w2_q[0] = exec_inputs_list[q][0]; + perm_exec_w2_q[1] = exec_inputs_list[q][0]; for i in 0..num_inputs_unpadded - 1 { let perm = if i == 0 { S::field_one() } else { perm_w0[i] }; - perm_exec_w2[q][0] = perm_exec_w2[q][0] + perm * exec_inputs_list[q][2 + i]; - perm_exec_w2[q][2] = - perm_exec_w2[q][2] + perm * exec_inputs_list[q][2 + (num_inputs_unpadded - 1) + i]; + perm_exec_w2_q[0] = perm_exec_w2_q[0] + perm * exec_inputs_list[q][2 + i]; + perm_exec_w2_q[2] = + perm_exec_w2_q[2] + perm * exec_inputs_list[q][2 + (num_inputs_unpadded - 1) + i]; } - perm_exec_w2[q][0] = perm_exec_w2[q][0] * exec_inputs_list[q][0]; - let ZO = perm_exec_w2[q][2]; - perm_exec_w2[q][1] = perm_exec_w2[q][1] + ZO; - perm_exec_w2[q][1] = perm_exec_w2[q][1] * exec_inputs_list[q][0]; - } - perm_exec_w2 - }; - // w3 is [v, x, pi, D] - let perm_exec_w3 = { - let mut perm_exec_w3: Vec> = vec![Vec::new(); consis_num_proofs]; - for q in (0..consis_num_proofs).rev() { - perm_exec_w3[q] = vec![S::field_zero(); 8]; - perm_exec_w3[q][0] = exec_inputs_list[q][0]; - perm_exec_w3[q][1] = perm_exec_w3[q][0] + perm_exec_w2_q[0] = perm_exec_w2_q[0] * exec_inputs_list[q][0]; + let ZO = perm_exec_w2_q[2]; + perm_exec_w2_q[1] = perm_exec_w2_q[1] + ZO; + perm_exec_w2_q[1] = perm_exec_w2_q[1] * exec_inputs_list[q][0]; + + // perm_exec_w3 + let mut perm_exec_w3_q = vec![S::field_zero(); 8]; + perm_exec_w3_q[0] = exec_inputs_list[q][0]; + perm_exec_w3_q[1] = perm_exec_w3_q[0] * (comb_tau - - perm_exec_w2[q][3..] + - perm_exec_w2_q[3..] .iter() .fold(S::field_zero(), |a, b| a + *b) - exec_inputs_list[q][2]); - perm_exec_w3[q][4] = perm_exec_w2[q][0]; - perm_exec_w3[q][5] = perm_exec_w2[q][1]; + perm_exec_w3_q[4] = perm_exec_w2_q[0]; + perm_exec_w3_q[5] = perm_exec_w2_q[1]; + + (perm_exec_w2_q, perm_exec_w3_q) + }).unzip(); + // Generate sequential entries separately + for q in (0..consis_num_proofs).rev() { if q != consis_num_proofs - 1 { perm_exec_w3[q][3] = perm_exec_w3[q][1] * (perm_exec_w3[q + 1][2] + S::field_one() - perm_exec_w3[q + 1][0]); @@ -1226,8 +1322,9 @@ impl SNARK { } perm_exec_w3[q][2] = perm_exec_w3[q][0] * perm_exec_w3[q][3]; } - perm_exec_w3 + (perm_exec_w2, perm_exec_w3) }; + // commit the witnesses and inputs separately instance-by-instance let (perm_exec_poly_w2, perm_exec_poly_w3, perm_exec_poly_w3_shifted) = { let perm_exec_poly_w2 = { @@ -1278,8 +1375,8 @@ impl SNARK { // INPUT PHY VIR // w3 is [v, x, pi, D, pi, D, pi, D] let mut block_w3: Vec>> = Vec::new(); - let block_w2_prover = { - let mut block_w2 = Vec::new(); + let block_w2 = { + let mut block_w2: Vec>> = Vec::new(); let block_w2_size_list: Vec = (0..block_num_instances) .map(|i| { (2 * num_inputs_unpadded + 2 * block_num_phy_ops[i] + 4 * block_num_vir_ops[i]) @@ -1311,115 +1408,131 @@ impl SNARK { |b: usize, i: usize| 2 * num_inputs_unpadded + 2 * block_num_phy_ops[b] + 4 * i + 3; for p in 0..block_num_instances { - block_w2.push(vec![Vec::new(); block_num_proofs[p]]); - block_w3.push(vec![Vec::new(); block_num_proofs[p]]); - for q in (0..block_num_proofs[p]).rev() { + let block_w2_p: Vec>; + let mut block_w3_p: Vec>; + // Entries that do not depend on others can be generated in parallel + (block_w2_p, block_w3_p) = (0..block_num_proofs[p]).into_par_iter().map(|q| { let V_CNST = block_vars_mat[p][q][0]; // For INPUT - block_w2[p][q] = vec![S::field_zero(); block_w2_size_list[p]]; + let mut q2 = vec![S::field_zero(); block_w2_size_list[p]]; - block_w2[p][q][0] = block_vars_mat[p][q][0]; - block_w2[p][q][1] = block_vars_mat[p][q][0]; + q2[0] = block_vars_mat[p][q][0]; + q2[1] = block_vars_mat[p][q][0]; for i in 1..2 * (num_inputs_unpadded - 1) { - block_w2[p][q][2 + i] = - block_w2[p][q][2 + i] + perm_w0[i] * block_vars_mat[p][q][i + 2]; + q2[2 + i] = q2[2 + i] + perm_w0[i] * block_vars_mat[p][q][i + 2]; } for i in 0..num_inputs_unpadded - 1 { let perm = if i == 0 { S::field_one() } else { perm_w0[i] }; - block_w2[p][q][0] = block_w2[p][q][0] + perm * block_vars_mat[p][q][2 + i]; - block_w2[p][q][2] = - block_w2[p][q][2] + perm * block_vars_mat[p][q][2 + (num_inputs_unpadded - 1) + i]; - } - block_w2[p][q][0] = block_w2[p][q][0] * block_vars_mat[p][q][0]; - let ZO = block_w2[p][q][2]; - block_w2[p][q][1] = block_w2[p][q][1] + ZO; - block_w2[p][q][1] = block_w2[p][q][1] * block_vars_mat[p][q][0]; - block_w3[p][q] = vec![S::field_zero(); 8]; - block_w3[p][q][0] = block_vars_mat[p][q][0]; - block_w3[p][q][1] = block_w3[p][q][0] - * (comb_tau - - block_w2[p][q][3..] - .iter() - .fold(S::field_zero(), |a, b| a + *b) - - block_vars_mat[p][q][2]); - if q != block_num_proofs[p] - 1 { - block_w3[p][q][3] = block_w3[p][q][1] - * (block_w3[p][q + 1][2] + S::field_one() - block_w3[p][q + 1][0]); - } else { - block_w3[p][q][3] = block_w3[p][q][1]; + q2[0] = q2[0] + perm * block_vars_mat[p][q][2 + i]; + q2[2] = q2[2] + perm * block_vars_mat[p][q][2 + (num_inputs_unpadded - 1) + i]; } - block_w3[p][q][2] = block_w3[p][q][0] * block_w3[p][q][3]; + q2[0] = q2[0] * block_vars_mat[p][q][0]; + let ZO = q2[2]; + q2[1] = q2[1] + ZO; + q2[1] = q2[1] * block_vars_mat[p][q][0]; + let mut q3 = vec![S::field_zero(); 8]; + q3[0] = block_vars_mat[p][q][0]; // For PHY // Compute PMR, PMC for i in 0..block_num_phy_ops[p] { // PMR = r * PD - block_w2[p][q][V_PMR(i)] = comb_r * block_vars_mat[p][q][io_width + V_PD(i)]; + q2[V_PMR(i)] = comb_r * block_vars_mat[p][q][io_width + V_PD(i)]; // PMC = (1 or PMC[i-1]) * (tau - PA - PMR) let t = if i == 0 { V_CNST } else { - block_w2[p][q][V_PMC(i - 1)] + q2[V_PMC(i - 1)] }; - block_w2[p][q][V_PMC(i)] = t - * (comb_tau - block_vars_mat[p][q][io_width + V_PA(i)] - block_w2[p][q][V_PMR(i)]); - } - // Compute x - let px = if block_num_phy_ops[p] == 0 { - V_CNST - } else { - block_w2[p][q][V_PMC(block_num_phy_ops[p] - 1)] - }; - // Compute D and pi - if q != block_num_proofs[p] - 1 { - block_w3[p][q][5] = - px * (block_w3[p][q + 1][4] + S::field_one() - block_w3[p][q + 1][0]); - } else { - block_w3[p][q][5] = px; + q2[V_PMC(i)] = t + * (comb_tau - block_vars_mat[p][q][io_width + V_PA(i)] - q2[V_PMR(i)]); } - block_w3[p][q][4] = V_CNST * block_w3[p][q][5]; // For VIR // Compute VMR1, VMR2, VMR3, VMC for i in 0..block_num_vir_ops[p] { // VMR1 = r * VD - block_w2[p][q][V_VMR1(p, i)] = comb_r * block_vars_mat[p][q][io_width + V_VD(p, i)]; + q2[V_VMR1(p, i)] = comb_r * block_vars_mat[p][q][io_width + V_VD(p, i)]; // VMR2 = r^2 * VL - block_w2[p][q][V_VMR2(p, i)] = + q2[V_VMR2(p, i)] = comb_r * comb_r * block_vars_mat[p][q][io_width + V_VL(p, i)]; // VMR1 = r^3 * VT - block_w2[p][q][V_VMR3(p, i)] = + q2[V_VMR3(p, i)] = comb_r * comb_r * comb_r * block_vars_mat[p][q][io_width + V_VT(p, i)]; // VMC = (1 or VMC[i-1]) * (tau - VA - VMR1 - VMR2 - VMR3) let t = if i == 0 { V_CNST } else { - block_w2[p][q][V_VMC(p, i - 1)] + q2[V_VMC(p, i - 1)] }; - block_w2[p][q][V_VMC(p, i)] = t + q2[V_VMC(p, i)] = t * (comb_tau - block_vars_mat[p][q][io_width + V_VA(p, i)] - - block_w2[p][q][V_VMR1(p, i)] - - block_w2[p][q][V_VMR2(p, i)] - - block_w2[p][q][V_VMR3(p, i)]); + - q2[V_VMR1(p, i)] + - q2[V_VMR2(p, i)] + - q2[V_VMR3(p, i)]); + } + (q2, q3) + }).unzip(); + // Generate sequential entries separately + for q in (0..block_num_proofs[p]).rev() { + let V_CNST = block_vars_mat[p][q][0]; + // For INPUT + block_w3_p[q][1] = block_w3_p[q][0] + * (comb_tau + - block_w2_p[q][3..] + .iter() + .fold(S::field_zero(), |a, b| a + *b) + - block_vars_mat[p][q][2]); + if q != block_num_proofs[p] - 1 { + block_w3_p[q][3] = block_w3_p[q][1] + * (block_w3_p[q + 1][2] + S::field_one() - block_w3_p[q + 1][0]); + } else { + block_w3_p[q][3] = block_w3_p[q][1]; + } + block_w3_p[q][2] = block_w3_p[q][0] * block_w3_p[q][3]; + + // For PHY + // Compute x + let px = if block_num_phy_ops[p] == 0 { + V_CNST + } else { + block_w2_p[q][V_PMC(block_num_phy_ops[p] - 1)] + }; + // Compute D and pi + if q != block_num_proofs[p] - 1 { + block_w3_p[q][5] = + px * (block_w3_p[q + 1][4] + S::field_one() - block_w3_p[q + 1][0]); + } else { + block_w3_p[q][5] = px; } + block_w3_p[q][4] = V_CNST * block_w3_p[q][5]; + + // For VIR // Compute x let vx = if block_num_vir_ops[p] == 0 { V_CNST } else { - block_w2[p][q][V_VMC(p, block_num_vir_ops[p] - 1)] + block_w2_p[q][V_VMC(p, block_num_vir_ops[p] - 1)] }; // Compute D and pi if q != block_num_proofs[p] - 1 { - block_w3[p][q][7] = - vx * (block_w3[p][q + 1][6] + S::field_one() - block_w3[p][q + 1][0]); + block_w3_p[q][7] = + vx * (block_w3_p[q + 1][6] + S::field_one() - block_w3_p[q + 1][0]); } else { - block_w3[p][q][7] = vx; + block_w3_p[q][7] = vx; } - block_w3[p][q][6] = V_CNST * block_w3[p][q][7]; + block_w3_p[q][6] = V_CNST * block_w3_p[q][7]; } + + block_w2.push(block_w2_p); + block_w3.push(block_w3_p); } + block_w2 + }; + + let (block_poly_w2_list, block_poly_w3_list, block_poly_w3_list_shifted) = { // commit the witnesses and inputs separately instance-by-instance let mut block_poly_w2_list = Vec::new(); @@ -1433,12 +1546,7 @@ impl SNARK { }; block_poly_w2_list.push(block_poly_w2); } - - let block_w2_prover = ProverWitnessSecInfo::new(block_w2.clone(), block_poly_w2_list); - - block_w2_prover - }; - let (block_poly_w3_list, block_poly_w3_list_shifted) = { + let mut block_poly_w3_list = Vec::new(); let mut block_poly_w3_list_shifted = Vec::new(); @@ -1471,20 +1579,20 @@ impl SNARK { block_poly_w3_list_shifted.push(block_poly_w3_shifted); } - (block_poly_w3_list, block_poly_w3_list_shifted) + (block_poly_w2_list, block_poly_w3_list, block_poly_w3_list_shifted) }; let perm_w0_prover = ProverWitnessSecInfo::new(vec![vec![perm_w0]], vec![perm_poly_w0]); let perm_exec_w2_prover = ProverWitnessSecInfo::new(vec![perm_exec_w2], vec![perm_exec_poly_w2]); - let perm_exec_w3_prover = - ProverWitnessSecInfo::new(vec![perm_exec_w3.clone()], vec![perm_exec_poly_w3]); let perm_exec_w3_shifted_prover = ProverWitnessSecInfo::new( vec![[perm_exec_w3[1..].to_vec(), vec![vec![S::field_zero(); 8]]].concat()], vec![perm_exec_poly_w3_shifted], ); + let perm_exec_w3_prover = + ProverWitnessSecInfo::new(vec![perm_exec_w3], vec![perm_exec_poly_w3]); - let block_w3_prover = ProverWitnessSecInfo::new(block_w3.clone(), block_poly_w3_list); + let block_w2_prover = ProverWitnessSecInfo::new(block_w2, block_poly_w2_list); let block_w3_shifted_prover = ProverWitnessSecInfo::new( block_w3 .iter() @@ -1492,6 +1600,7 @@ impl SNARK { .collect(), block_poly_w3_list_shifted, ); + let block_w3_prover = ProverWitnessSecInfo::new(block_w3, block_poly_w3_list); ( comb_tau, @@ -1810,35 +1919,135 @@ impl SNARK { let block_vars_prover = ProverWitnessSecInfo::new(block_vars_mat, block_poly_vars_list); let exec_inputs_prover = ProverWitnessSecInfo::new(vec![exec_inputs_list], exec_poly_inputs); let init_phy_mems_prover = if total_num_init_phy_mem_accesses > 0 { - ProverWitnessSecInfo::new(vec![init_phy_mems_list.clone()], poly_init_phy_mems) + ProverWitnessSecInfo::new(vec![init_phy_mems_list], poly_init_phy_mems) } else { ProverWitnessSecInfo::dummy() }; let init_vir_mems_prover = if total_num_init_vir_mem_accesses > 0 { - ProverWitnessSecInfo::new(vec![init_vir_mems_list.clone()], poly_init_vir_mems) + ProverWitnessSecInfo::new(vec![init_vir_mems_list], poly_init_vir_mems) } else { ProverWitnessSecInfo::dummy() }; let addr_phy_mems_prover = if total_num_phy_mem_accesses > 0 { - ProverWitnessSecInfo::new(vec![addr_phy_mems_list.clone()], addr_poly_phy_mems) + ProverWitnessSecInfo::new(vec![addr_phy_mems_list], addr_poly_phy_mems) } else { ProverWitnessSecInfo::dummy() }; let addr_vir_mems_prover = if total_num_vir_mem_accesses > 0 { - ProverWitnessSecInfo::new(vec![addr_vir_mems_list.clone()], addr_poly_vir_mems) + ProverWitnessSecInfo::new(vec![addr_vir_mems_list], addr_poly_vir_mems) } else { ProverWitnessSecInfo::dummy() }; timer_commit.stop(); + // Record total size of witnesses: + let block_witness_sizes: Vec = [ + block_vars_prover + .poly_w + .iter() + .map(|i| i.len()) + .collect::>(), + block_w2_prover + .poly_w + .iter() + .map(|i| i.len()) + .collect::>(), + block_w3_prover + .poly_w + .iter() + .map(|i| i.len()) + .collect::>(), + block_w3_shifted_prover + .poly_w + .iter() + .map(|i| i.len()) + .collect::>(), + ] + .concat(); + let exec_witness_sizes: Vec = [ + exec_inputs_prover + .poly_w + .iter() + .map(|i| i.len()) + .collect::>(), + perm_exec_w2_prover + .poly_w + .iter() + .map(|i| i.len()) + .collect::>(), + perm_exec_w3_prover + .poly_w + .iter() + .map(|i| i.len()) + .collect::>(), + perm_exec_w3_shifted_prover + .poly_w + .iter() + .map(|i| i.len()) + .collect::>(), + ] + .concat(); + let mem_witness_sizes: Vec = [ + addr_phy_mems_prover + .poly_w + .iter() + .map(|i| i.len()) + .collect::>(), + phy_mem_addr_w2_prover + .poly_w + .iter() + .map(|i| i.len()) + .collect::>(), + phy_mem_addr_w3_prover + .poly_w + .iter() + .map(|i| i.len()) + .collect::>(), + phy_mem_addr_w3_shifted_prover + .poly_w + .iter() + .map(|i| i.len()) + .collect::>(), + addr_vir_mems_prover + .poly_w + .iter() + .map(|i| i.len()) + .collect::>(), + addr_ts_bits_prover + .poly_w + .iter() + .map(|i| i.len()) + .collect::>(), + vir_mem_addr_w2_prover + .poly_w + .iter() + .map(|i| i.len()) + .collect::>(), + vir_mem_addr_w3_prover + .poly_w + .iter() + .map(|i| i.len()) + .collect::>(), + vir_mem_addr_w3_shifted_prover + .poly_w + .iter() + .map(|i| i.len()) + .collect::>(), + ] + .concat(); + + println!("BLOCK WITNESSES: {:?} Goldilocks", block_witness_sizes); + println!("EXEC WITNESSES: {:?} Goldilocks", exec_witness_sizes); + println!("MEM WITNESSES: {:?} Goldilocks", mem_witness_sizes); + // -- // BLOCK_CORRECTNESS_EXTRACT // -- let timer_proof = Timer::new("Block Correctness Extract"); let block_wit_secs = vec![ &block_vars_prover, - &perm_w0_prover, &block_w2_prover, + &perm_w0_prover, &block_w3_prover, &block_w3_shifted_prover, ]; @@ -1850,7 +2059,6 @@ impl SNARK { block_max_num_proofs, block_num_proofs, num_vars, - &block_num_vars, block_wit_secs, &block_inst.inst, transcript, @@ -1869,9 +2077,11 @@ impl SNARK { let timer_eval = Timer::new("eval_sparse_polys"); // Per instance evaluation is unsorted - let inst_evals_list = block_inst_unsorted.inst.multi_evaluate(&rx, &ry); + let inst_evals_list = block_inst_unsorted.inst.multi_evaluate::(&rx, &ry); // RP-bound evaluation is sorted - let (_, inst_evals_bound_rp) = block_inst.inst.multi_evaluate_bound_rp(&rp, &rx, &ry); + let (_, inst_evals_bound_rp) = block_inst + .inst + .multi_evaluate_bound_rp::(&rp, &rx, &ry); timer_eval.stop(); for r in &inst_evals_list { @@ -1887,7 +2097,7 @@ impl SNARK { let r1cs_eval_proof_list = { let mut r1cs_eval_proof_list = Vec::new(); for i in 0..block_comm_list.len() { - let proof = R1CSEvalProof::prove( + let proof = R1CSEvalProof::prove::( &block_decomm_list[i].decomm, &rx, &ry, @@ -1932,27 +2142,28 @@ impl SNARK { .max() .unwrap() .clone(); - let (pairwise_prover, inst_map) = ProverWitnessSecInfo::merge(vec![ + let (pairwise_w0_prover, inst_map) = ProverWitnessSecInfo::merge(vec![ &perm_exec_w3_prover, &addr_phy_mems_prover, - &addr_vir_mems_prover, + &addr_ts_bits_prover, ]); - let (pairwise_shifted_prover, _) = ProverWitnessSecInfo::merge(vec![ + let (pairwise_w1_prover, _) = ProverWitnessSecInfo::merge(vec![ &perm_exec_w3_shifted_prover, &addr_phy_mems_shifted_prover, - &addr_vir_mems_shifted_prover, + &addr_vir_mems_prover, ]); - let addr_ts_bits_prover = { - let mut components = vec![&perm_w0_prover; inst_map.len()]; + let dummy_w2 = ProverWitnessSecInfo::pad(); + let pairwise_w2_prover = { + let mut components = vec![&dummy_w2; inst_map.len()]; for i in 0..inst_map.len() { if inst_map[i] == 2 { - components[i] = &addr_ts_bits_prover; + components[i] = &addr_vir_mems_shifted_prover; } } ProverWitnessSecInfo::concat(components) }; - let pairwise_num_instances = pairwise_prover.w_mat.len(); - let pairwise_num_proofs: Vec = pairwise_prover.w_mat.iter().map(|i| i.len()).collect(); + let pairwise_num_instances = pairwise_w0_prover.w_mat.len(); + let pairwise_num_proofs: Vec = pairwise_w0_prover.w_mat.iter().map(|i| i.len()).collect(); let (pairwise_check_r1cs_sat_proof, pairwise_check_challenges) = { let (proof, pairwise_check_challenges) = { R1CSProof::prove( @@ -1960,11 +2171,10 @@ impl SNARK { pairwise_size, &pairwise_num_proofs, max(8, mem_addr_ts_bits_size), - &vec![max(8, mem_addr_ts_bits_size); pairwise_num_instances], vec![ - &pairwise_prover, - &pairwise_shifted_prover, - &addr_ts_bits_prover, + &pairwise_w0_prover, + &pairwise_w1_prover, + &pairwise_w2_prover, ], &pairwise_check_inst.inst, transcript, @@ -1987,11 +2197,13 @@ impl SNARK { let timer_eval = Timer::new("eval_sparse_polys"); // Per instance evaluation is unsorted - let inst_evals_list = pairwise_check_inst_unsorted.inst.multi_evaluate(&rx, &ry); + let inst_evals_list = pairwise_check_inst_unsorted + .inst + .multi_evaluate::(&rx, &ry); // RP-bound evaluation is sorted let (_, inst_evals_bound_rp) = pairwise_check_inst .inst - .multi_evaluate_bound_rp(&rp, &rx, &ry); + .multi_evaluate_bound_rp::(&rp, &rx, &ry); timer_eval.stop(); for r in &inst_evals_list { @@ -2004,7 +2216,7 @@ impl SNARK { let _: S = transcript.challenge_scalar(b"challenge_c2"); let r1cs_eval_proof = { - let proof = R1CSEvalProof::prove( + let proof = R1CSEvalProof::prove::( &pairwise_check_decomm.decomm, &rx, &ry, @@ -2084,7 +2296,6 @@ impl SNARK { perm_size, &perm_root_num_proofs, num_ios, - &vec![num_ios; perm_root_num_instances], vec![ &perm_w0_prover, &perm_root_w1_prover, @@ -2120,7 +2331,7 @@ impl SNARK { timer_eval.stop(); let r1cs_eval_proof = { - let proof = R1CSEvalProof::prove( + let proof = R1CSEvalProof::prove::( &perm_root_decomm.decomm, &rx, &ry, @@ -2141,6 +2352,7 @@ impl SNARK { // -- // PERM_PRODUCT_PROOF // -- + /* let timer_proof = Timer::new("Perm Product"); // Record the prod of exec, blocks, mem_block, & mem_addr let (perm_poly_poly_list, proof_eval_perm_poly_prod_list) = { @@ -2292,6 +2504,7 @@ impl SNARK { &mut random_tape, ); timer_proof.stop(); + */ timer_prove.stop(); @@ -2309,12 +2522,11 @@ impl SNARK { perm_root_r1cs_sat_proof, perm_root_inst_evals, perm_root_r1cs_eval_proof, - - perm_poly_poly_list, - proof_eval_perm_poly_prod_list, + // perm_poly_poly_list, + // proof_eval_perm_poly_prod_list, // shift_proof, - io_proof, + // io_proof, } } @@ -2365,13 +2577,7 @@ impl SNARK { transcript: &mut Transcript, ) -> Result<(), ProofVerifyError> { - let proof_size = bincode::serialize(&self).unwrap().len(); - let commit_size = bincode::serialize(&block_comm_list).unwrap().len() + - // bincode::serialize(&block_gens).unwrap().len() + - bincode::serialize(&pairwise_check_comm).unwrap().len() + - // bincode::serialize(&pairwise_check_gens).unwrap().len() + - bincode::serialize(&perm_root_comm).unwrap().len(); - // bincode::serialize(&perm_root_gens).unwrap().len(); + let (_, block_size, pairwise_size, perm_size) = self.compute_size(); let meta_size = // usize 19 * std::mem::size_of::() + @@ -2544,9 +2750,7 @@ impl SNARK { let mut block_num_proofs: Vec = inst_sorter.iter().map(|i| i.num_exec).collect(); // index[i] = j => the original jth entry should now be at the ith position let block_index: Vec = inst_sorter.iter().map(|i| i.index).collect(); - let block_num_vars: Vec = (0..block_num_instances) - .map(|i| block_num_vars[block_index[i]]) - .collect(); + let block_num_vars: Vec = (0..block_num_instances).map(|i| block_num_vars[block_index[i]]).collect(); let block_num_phy_ops: Vec = (0..block_num_instances) .map(|i| block_num_phy_ops[block_index[i]]) .collect(); @@ -2855,8 +3059,8 @@ impl SNARK { let timer_sat_proof = Timer::new("Block Correctness Extract Sat"); let block_wit_secs = vec![ &block_vars_verifier, - &perm_w0_verifier, &block_w2_verifier, + &perm_w0_verifier, &block_w3_verifier, &block_w3_shifted_verifier, ]; @@ -2895,7 +3099,7 @@ impl SNARK { .collect(); for i in 0..block_comm_list.len() { - self.block_r1cs_eval_proof_list[i].verify( + self.block_r1cs_eval_proof_list[i].verify::( &block_comm_list[i].comm, &rx, &ry, @@ -2930,27 +3134,28 @@ impl SNARK { .max() .unwrap() .clone(); - let (pairwise_verifier, inst_map) = VerifierWitnessSecInfo::merge(vec![ + let (pairwise_w0_verifier, inst_map) = VerifierWitnessSecInfo::merge(vec![ &perm_exec_w3_verifier, &addr_phy_mems_verifier, - &addr_vir_mems_verifier, + &addr_ts_bits_verifier ]); - let (pairwise_shifted_verifier, _) = VerifierWitnessSecInfo::merge(vec![ + let (pairwise_w1_verifier, _) = VerifierWitnessSecInfo::merge(vec![ &perm_exec_w3_shifted_verifier, &addr_phy_mems_shifted_verifier, - &addr_vir_mems_shifted_verifier, + &addr_vir_mems_verifier, ]); - let addr_ts_bits_verifier = { - let mut components = vec![&perm_w0_verifier; inst_map.len()]; + let dummy_w2 = VerifierWitnessSecInfo::pad(); + let pairwise_w2_verifier = { + let mut components = vec![&dummy_w2; inst_map.len()]; for i in 0..inst_map.len() { if inst_map[i] == 2 { - components[i] = &addr_ts_bits_verifier; + components[i] = &addr_vir_mems_shifted_verifier; } } VerifierWitnessSecInfo::concat(components) }; - let pairwise_num_instances = pairwise_verifier.num_proofs.len(); - let pairwise_num_proofs: Vec = pairwise_verifier.num_proofs.clone(); + let pairwise_num_instances = pairwise_w0_verifier.num_proofs.len(); + let pairwise_num_proofs: Vec = pairwise_w0_verifier.num_proofs.clone(); let pairwise_check_challenges = self.pairwise_check_r1cs_sat_proof.verify( pairwise_num_instances, @@ -2958,9 +3163,9 @@ impl SNARK { &pairwise_num_proofs, max(8, mem_addr_ts_bits_size), vec![ - &pairwise_verifier, - &pairwise_shifted_verifier, - &addr_ts_bits_verifier, + &pairwise_w0_verifier, + &pairwise_w1_verifier, + &pairwise_w2_verifier, ], pairwise_check_num_cons, &self.pairwise_check_inst_evals_bound_rp, @@ -2988,7 +3193,7 @@ impl SNARK { }) .collect(); - self.pairwise_check_r1cs_eval_proof.verify( + self.pairwise_check_r1cs_eval_proof.verify::( &pairwise_check_comm.comm, &rx, &ry, @@ -3075,7 +3280,7 @@ impl SNARK { S::append_field_to_transcript(tag, transcript, *val); } let [_, _, rx, ry] = perm_block_root_challenges; - self.perm_root_r1cs_eval_proof.verify( + self.perm_root_r1cs_eval_proof.verify::( &perm_root_comm.comm, &rx, &ry, @@ -3088,6 +3293,7 @@ impl SNARK { // -- // PERM_PRODUCT_PROOF // -- + /* { let timer_eval_opening = Timer::new("Perm Product"); // Verify prod of exec, blocks, mem_block, & mem_addr @@ -3282,13 +3488,14 @@ impl SNARK { transcript, )?; timer_proof.stop(); + */ timer_verify.stop(); - println!("PROOF SIZE: {}", proof_size); - println!("COMMIT SIZE: {}", commit_size); - println!("META SIZE: {}", meta_size); - println!("Total Proof Size: {}", proof_size + commit_size + meta_size); + println!("BLOCK SUMCHECK SIZE: {} bytes", block_size); + println!("PAIRWISE SUMCHECK SIZE: {} bytes", pairwise_size); + println!("PERM SUMCHECK SIZE: {} bytes", perm_size); + println!("META SIZE: {} bytes", meta_size); Ok(()) } diff --git a/spartan_parallel/src/r1csinstance.rs b/spartan_parallel/src/r1csinstance.rs index 7e280814..4162661a 100644 --- a/spartan_parallel/src/r1csinstance.rs +++ b/spartan_parallel/src/r1csinstance.rs @@ -1,3 +1,6 @@ +use rayon::prelude::*; + +use std::cmp::{max, min}; use std::collections::HashMap; use crate::scalar::SpartanExtensionField; @@ -16,6 +19,7 @@ use super::timer::Timer; use flate2::{write::ZlibEncoder, Compression}; use merlin::Transcript; use serde::{Deserialize, Serialize}; +use std::iter::zip; #[derive(Debug, Serialize, Deserialize, Clone)] pub struct R1CSInstance { @@ -24,7 +28,8 @@ pub struct R1CSInstance { // num_cons and num_vars need to be power of 2 max_num_cons: usize, num_cons: Vec, - num_vars: usize, + max_num_vars: usize, + num_vars: Vec, // List of individual A, B, C for matrix multiplication A_list: Vec>, B_list: Vec>, @@ -47,6 +52,8 @@ impl AppendToTranscript for R1CSCommitment { } pub struct R1CSDecommitment { + num_cons: usize, + num_vars: usize, dense: MultiSparseMatPolynomialAsDense, } @@ -60,19 +67,20 @@ impl R1CSCommitment { } } -impl R1CSInstance { +impl R1CSInstance { pub fn new( num_instances: usize, max_num_cons: usize, num_cons: Vec, - num_vars: usize, + max_num_vars: usize, + num_vars: Vec, A_list: &Vec>, B_list: &Vec>, C_list: &Vec>, ) -> R1CSInstance { Timer::print(&format!("number_of_instances {num_instances}")); Timer::print(&format!("number_of_constraints {max_num_cons}")); - Timer::print(&format!("number_of_variables {num_vars}")); + Timer::print(&format!("number_of_variables {max_num_vars}")); // Timer::print(&format!("number_non-zero_entries_A {}", A.len())); // Timer::print(&format!("number_non-zero_entries_B {}", B.len())); // Timer::print(&format!("number_non-zero_entries_C {}", C.len())); @@ -85,16 +93,17 @@ impl R1CSInstance { } // check that num_vars is a power of 2 - assert_eq!(num_vars.next_power_of_two(), num_vars); + assert_eq!(max_num_vars.next_power_of_two(), max_num_vars); + for v in &num_vars { + assert_eq!(v.next_power_of_two(), *v); + assert!(*v <= max_num_vars); + } // check that length of A_list, B_list, C_list are the same assert_eq!(A_list.len(), B_list.len()); assert_eq!(B_list.len(), C_list.len()); // no errors, so create polynomials - let num_poly_vars_x = max_num_cons.log_2(); - let num_poly_vars_y = num_vars.log_2(); - let mut poly_A_list = Vec::new(); let mut poly_B_list = Vec::new(); let mut poly_C_list = Vec::new(); @@ -104,6 +113,9 @@ impl R1CSInstance { let mut mat_C = Vec::new(); for inst in 0..A_list.len() { + let num_poly_vars_x = num_cons[inst].log_2(); + let num_poly_vars_y = num_vars[inst].log_2(); + let A = &A_list[inst]; let B = &B_list[inst]; let C = &C_list[inst]; @@ -149,7 +161,8 @@ impl R1CSInstance { num_instances, max_num_cons, num_cons: num_cons.clone(), - num_vars, + max_num_vars, + num_vars: num_vars.clone(), A_list: poly_A_list, B_list: poly_B_list, C_list: poly_C_list, @@ -179,7 +192,11 @@ impl R1CSInstance { } pub fn get_num_vars(&self) -> usize { - self.num_vars + self.max_num_vars + } + + pub fn get_inst_num_vars(&self) -> &Vec { + &self.num_vars } pub fn get_num_cons(&self) -> usize { @@ -203,7 +220,6 @@ impl R1CSInstance { num_instances: usize, num_proofs: Vec, max_num_proofs: usize, - num_inputs: Vec, max_num_inputs: usize, max_num_cons: usize, num_cons: Vec, @@ -228,52 +244,43 @@ impl R1CSInstance { Az.push(Vec::new()); Bz.push(Vec::new()); Cz.push(Vec::new()); - for q in 0..num_proofs[p] { - let z = &z_list[q]; - - Az[p].push(vec![self.A_list[p_inst].multiply_vec_disjoint_rounds( - num_cons[p_inst].clone(), - max_num_inputs, - num_inputs[p], - z, - )]); - Bz[p].push(vec![self.B_list[p_inst].multiply_vec_disjoint_rounds( - num_cons[p_inst].clone(), - max_num_inputs, - num_inputs[p], - z, - )]); - Cz[p].push(vec![self.C_list[p_inst].multiply_vec_disjoint_rounds( - num_cons[p_inst].clone(), - max_num_inputs, - num_inputs[p], - z, - )]); - } + + Az[p] = (0..num_proofs[p]) + .into_par_iter() + .map(|q| { + vec![self.A_list[p_inst].multiply_vec_disjoint_rounds( + num_cons[p_inst].clone(), + max_num_inputs, + &z_list[q], + )] + }) + .collect(); + Bz[p] = (0..num_proofs[p]) + .into_par_iter() + .map(|q| { + vec![self.B_list[p_inst].multiply_vec_disjoint_rounds( + num_cons[p_inst].clone(), + max_num_inputs, + &z_list[q], + )] + }) + .collect(); + Cz[p] = (0..num_proofs[p]) + .into_par_iter() + .map(|q| { + vec![self.C_list[p_inst].multiply_vec_disjoint_rounds( + num_cons[p_inst].clone(), + max_num_inputs, + &z_list[q], + )] + }) + .collect(); } ( - DensePolynomialPqx::new_rev( - &Az, - num_proofs.clone(), - max_num_proofs, - num_cons.clone(), - max_num_cons, - ), - DensePolynomialPqx::new_rev( - &Bz, - num_proofs.clone(), - max_num_proofs, - num_cons.clone(), - max_num_cons, - ), - DensePolynomialPqx::new_rev( - &Cz, - num_proofs, - max_num_proofs, - num_cons.clone(), - max_num_cons, - ), + DensePolynomialPqx::new(Az), + DensePolynomialPqx::new(Bz), + DensePolynomialPqx::new(Cz), ) } @@ -286,7 +293,7 @@ impl R1CSInstance { ) -> (Vec, Vec, Vec) { assert!(self.num_instances == 1 || self.num_instances == num_instances); assert_eq!(num_rows, self.max_num_cons); - assert_eq!(num_cols, self.num_vars); + assert_eq!(num_cols, self.max_num_vars); let mut evals_A_list = Vec::new(); let mut evals_B_list = Vec::new(); @@ -328,7 +335,7 @@ impl R1CSInstance { num_rows: &Vec, num_segs: usize, max_num_cols: usize, - num_cols: &Vec, + num_cols: &Vec>, evals: &[S], // Output in p, q, w, i format, where q section has length 1 ) -> ( @@ -338,34 +345,19 @@ impl R1CSInstance { ) { assert!(self.num_instances == 1 || self.num_instances == num_instances); assert_eq!(num_rows, &self.num_cons); - assert_eq!(num_segs.next_power_of_two() * max_num_cols, self.num_vars); + assert_eq!( + num_segs.next_power_of_two() * max_num_cols, + self.max_num_vars + ); let mut evals_A_list = Vec::new(); let mut evals_B_list = Vec::new(); let mut evals_C_list = Vec::new(); - // Length of output follows self.num_instances NOT num_instances!!! for p in 0..self.num_instances { - let evals_A = self.A_list[p].compute_eval_table_sparse_disjoint_rounds( - evals, - num_rows[p], - num_segs, - max_num_cols, - num_cols[p], - ); - let evals_B = self.B_list[p].compute_eval_table_sparse_disjoint_rounds( - evals, - num_rows[p], - num_segs, - max_num_cols, - num_cols[p], - ); - let evals_C = self.C_list[p].compute_eval_table_sparse_disjoint_rounds( - evals, - num_rows[p], - num_segs, - max_num_cols, - num_cols[p], - ); + let num_cols = *num_cols[p].iter().max().unwrap(); + let evals_A = self.A_list[p].compute_eval_table_sparse_disjoint_rounds(evals, num_rows[p], num_segs, max_num_cols, num_cols); + let evals_B = self.B_list[p].compute_eval_table_sparse_disjoint_rounds(evals, num_rows[p], num_segs, max_num_cols, num_cols); + let evals_C = self.C_list[p].compute_eval_table_sparse_disjoint_rounds(evals, num_rows[p], num_segs, max_num_cols, num_cols); evals_A_list.push(vec![evals_A]); evals_B_list.push(vec![evals_B]); evals_C_list.push(vec![evals_C]); @@ -374,21 +366,45 @@ impl R1CSInstance { (evals_A_list, evals_B_list, evals_C_list) } - pub fn multi_evaluate(&self, rx: &[S], ry: &[S]) -> Vec { + // If IS_BLOCK, ry is truncated starting at the third entry + pub fn multi_evaluate(&self, rx: &[S], ry: &[S]) -> Vec { let mut eval_list = Vec::new(); // Evaluate each individual poly on [rx, ry] for i in 0..self.num_instances { + let num_cons = self.num_cons[i]; + let num_vars = self.num_vars[i]; + let rx_header = rx[..rx.len() - min(rx.len(), num_cons.log_2())] + .iter() + .fold(S::field_one(), |c, i| c * (S::field_one() - i.clone())); + let rx_short = &rx[rx.len() - min(rx.len(), num_cons.log_2())..]; + let ry_skip_len = ry.len() - min(ry.len(), num_vars.log_2()); + let (ry_header, ry_short) = { + if IS_BLOCK { + let ry_header = ry[3..3 + ry_skip_len] + .iter() + .fold(S::field_one(), |c, i| c * (S::field_one() - i.clone())); + let ry_short = [ry[..3].to_vec(), ry[3 + ry_skip_len..].to_vec()].concat(); + (ry_header, ry_short) + } else { + let ry_header = ry[0..ry_skip_len] + .iter() + .fold(S::field_one(), |c, i| c * (S::field_one() - i.clone())); + let ry_short = ry[ry_skip_len..].to_vec(); + (ry_header, ry_short) + } + }; + let evals = SparseMatPolynomial::multi_evaluate( &[&self.A_list[i], &self.B_list[i], &self.C_list[i]], - rx, - ry, + rx_short, + &ry_short, ); - eval_list.extend(evals.clone()); + eval_list.extend(evals.into_iter().map(|i| rx_header * ry_header * i)); } eval_list } - pub fn multi_evaluate_bound_rp( + pub fn multi_evaluate_bound_rp( &self, rp: &[S], rx: &[S], @@ -403,11 +419,38 @@ impl R1CSInstance { let mut eval_list = Vec::new(); // Evaluate each individual poly on [rx, ry] for i in 0..self.num_instances { + let num_cons = self.num_cons[i]; + let num_vars = self.num_vars[i]; + let rx_header = rx[..rx.len() - min(rx.len(), num_cons.log_2())] + .iter() + .fold(S::field_one(), |c, i| c * (S::field_one() - i.clone())); + let rx_short = &rx[rx.len() - min(rx.len(), num_cons.log_2())..]; + let ry_skip_len = ry.len() - min(ry.len(), num_vars.log_2()); + let (ry_header, ry_short) = { + if IS_BLOCK { + let ry_header = ry[3..3 + ry_skip_len] + .iter() + .fold(S::field_one(), |c, i| c * (S::field_one() - i.clone())); + let ry_short = [ry[..3].to_vec(), ry[3 + ry_skip_len..].to_vec()].concat(); + (ry_header, ry_short) + } else { + let ry_header = ry[0..ry_skip_len] + .iter() + .fold(S::field_one(), |c, i| c * (S::field_one() - i.clone())); + let ry_short = ry[ry_skip_len..].to_vec(); + (ry_header, ry_short) + } + }; + let evals = SparseMatPolynomial::multi_evaluate( &[&self.A_list[i], &self.B_list[i], &self.C_list[i]], - rx, - ry, + rx_short, + &ry_short, ); + let evals: Vec = evals + .into_iter() + .map(|i| rx_header * ry_header * i) + .collect(); eval_list.extend(evals.clone()); a_evals.push(evals[0]); b_evals.push(evals[1]); @@ -434,17 +477,6 @@ impl R1CSInstance { (evals[0], evals[1], evals[2]) } - // Group all instances with the similar NNZ (round to the next power of eight) together - // Output.0 records the label of instances included within each commitment - // Note that we do not group A, B, C together - pub fn next_power_of_eight(val: usize) -> usize { - let mut base = 1; - while base < val { - base *= 8; - } - return base; - } - pub fn multi_commit( &self, ) -> ( @@ -452,56 +484,51 @@ impl R1CSInstance { Vec>, Vec>, ) { - let mut nnz_size: HashMap = HashMap::new(); + let mut vars_size: HashMap = HashMap::new(); let mut label_map: Vec> = Vec::new(); let mut sparse_polys_list: Vec>> = Vec::new(); + let mut max_num_cons_list: Vec = Vec::new(); + let mut max_num_vars_list: Vec = Vec::new(); + // Group the instances based on number of variables, which are already orders of 2^4 for i in 0..self.num_instances { - // A_list - let A_len = Self::next_power_of_eight(self.A_list[i].get_num_nz_entries()); - if let Some(index) = nnz_size.get(&A_len) { + let var_len = self.num_vars[i]; + // A_list, B_list, C_list + if let Some(index) = vars_size.get(&var_len) { label_map[*index].push(3 * i); sparse_polys_list[*index].push(&self.A_list[i]); - } else { - let next_label = nnz_size.len(); - nnz_size.insert(A_len, next_label); - label_map.push(vec![3 * i]); - sparse_polys_list.push(vec![&self.A_list[i]]); - } - // B_list - let B_len = Self::next_power_of_eight(self.B_list[i].get_num_nz_entries()); - if let Some(index) = nnz_size.get(&B_len) { label_map[*index].push(3 * i + 1); sparse_polys_list[*index].push(&self.B_list[i]); - } else { - let next_label = nnz_size.len(); - nnz_size.insert(B_len, next_label); - label_map.push(vec![3 * i + 1]); - sparse_polys_list.push(vec![&self.B_list[i]]); - } - // C_list - let C_len = Self::next_power_of_eight(self.C_list[i].get_num_nz_entries()); - if let Some(index) = nnz_size.get(&C_len) { label_map[*index].push(3 * i + 2); sparse_polys_list[*index].push(&self.C_list[i]); + max_num_cons_list[*index] = max(max_num_cons_list[*index], self.num_cons[i]); + max_num_vars_list[*index] = max(max_num_vars_list[*index], self.num_vars[i]); } else { - let next_label = nnz_size.len(); - nnz_size.insert(C_len, next_label); - label_map.push(vec![3 * i + 2]); - sparse_polys_list.push(vec![&self.C_list[i]]); + let next_label = vars_size.len(); + vars_size.insert(var_len, next_label); + label_map.push(vec![3 * i, 3 * i + 1, 3 * i + 2]); + sparse_polys_list.push(vec![&self.A_list[i], &self.B_list[i], &self.C_list[i]]); + max_num_cons_list.push(self.num_cons[i]); + max_num_vars_list.push(self.num_vars[i]); } } let mut r1cs_comm_list = Vec::new(); let mut r1cs_decomm_list = Vec::new(); - for sparse_polys in sparse_polys_list { + for ((sparse_polys, max_num_cons), max_num_vars) in + zip(zip(sparse_polys_list, max_num_cons_list), max_num_vars_list) + { let (comm, dense) = SparseMatPolynomial::multi_commit(&sparse_polys); let r1cs_comm = R1CSCommitment { - num_cons: self.num_instances * self.max_num_cons, - num_vars: self.num_vars, + num_cons: max_num_cons.next_power_of_two(), + num_vars: max_num_vars, comm, }; - let r1cs_decomm = R1CSDecommitment { dense }; + let r1cs_decomm = R1CSDecommitment { + num_cons: max_num_cons.next_power_of_two(), + num_vars: max_num_vars, + dense, + }; r1cs_comm_list.push(r1cs_comm); r1cs_decomm_list.push(r1cs_decomm); @@ -522,11 +549,15 @@ impl R1CSInstance { let (comm, dense) = SparseMatPolynomial::multi_commit(&sparse_polys); let r1cs_comm = R1CSCommitment { num_cons: self.num_instances * self.max_num_cons, - num_vars: self.num_vars, + num_vars: self.max_num_vars, comm, }; - let r1cs_decomm = R1CSDecommitment { dense }; + let r1cs_decomm = R1CSDecommitment { + num_cons: self.num_instances * self.max_num_cons, + num_vars: self.max_num_vars, + dense, + }; (r1cs_comm, r1cs_decomm) } @@ -538,7 +569,8 @@ pub struct R1CSEvalProof { } impl R1CSEvalProof { - pub fn prove( + // If is BLOCK, separate the first 3 entries of ry out (corresponding to the 5 segments of witnesses) + pub fn prove( decomm: &R1CSDecommitment, rx: &[S], // point at which the polynomial is evaluated ry: &[S], @@ -547,14 +579,43 @@ impl R1CSEvalProof { random_tape: &mut RandomTape, ) -> R1CSEvalProof { let timer = Timer::new("R1CSEvalProof::prove"); - let proof = - SparseMatPolyEvalProof::prove(&decomm.dense, rx, ry, evals, transcript, random_tape); + let rx_skip_len = rx.len() - min(rx.len(), decomm.num_cons.log_2()); + let rx_header = rx[..rx_skip_len] + .iter() + .fold(S::field_one(), |c, i| c * (S::field_one() - i.clone())); + let rx_short = &rx[rx_skip_len..]; + let ry_skip_len = ry.len() - min(ry.len(), decomm.num_vars.log_2()); + let (ry_header, ry_short) = { + if IS_BLOCK { + let ry_header = ry[3..3 + ry_skip_len] + .iter() + .fold(S::field_one(), |c, i| c * (S::field_one() - i.clone())); + let ry_short = [ry[..3].to_vec(), ry[3 + ry_skip_len..].to_vec()].concat(); + (ry_header, ry_short) + } else { + let ry_header = ry[0..ry_skip_len] + .iter() + .fold(S::field_one(), |c, i| c * (S::field_one() - i.clone())); + let ry_short = ry[ry_skip_len..].to_vec(); + (ry_header, ry_short) + } + }; + // let ry_short = &ry[..min(ry.len(), decomm.num_vars.log_2())]; + let proof = SparseMatPolyEvalProof::prove( + &decomm.dense, + rx_header * ry_header, + rx_short, + &ry_short, + evals, + transcript, + random_tape, + ); timer.stop(); R1CSEvalProof { proof } } - pub fn verify( + pub fn verify( &self, comm: &R1CSCommitment, rx: &[S], // point at which the R1CS matrix polynomials are evaluated @@ -562,6 +623,33 @@ impl R1CSEvalProof { evals: &Vec, transcript: &mut Transcript, ) -> Result<(), ProofVerifyError> { - self.proof.verify(&comm.comm, rx, ry, evals, transcript) + let rx_header = rx[..rx.len() - min(rx.len(), comm.num_cons.log_2())] + .iter() + .fold(S::field_one(), |c, i| c * (S::field_one() - i.clone())); + let rx_short = &rx[rx.len() - min(rx.len(), comm.num_cons.log_2())..]; + let ry_skip_len = ry.len() - min(ry.len(), comm.num_vars.log_2()); + let (ry_header, ry_short) = { + if IS_BLOCK { + let ry_header = ry[3..3 + ry_skip_len] + .iter() + .fold(S::field_one(), |c, i| c * (S::field_one() - i.clone())); + let ry_short = [ry[..3].to_vec(), ry[3 + ry_skip_len..].to_vec()].concat(); + (ry_header, ry_short) + } else { + let ry_header = ry[0..ry_skip_len] + .iter() + .fold(S::field_one(), |c, i| c * (S::field_one() - i.clone())); + let ry_short = ry[ry_skip_len..].to_vec(); + (ry_header, ry_short) + } + }; + self.proof.verify( + &comm.comm, + rx_header * ry_header, + rx_short, + &ry_short, + evals, + transcript, + ) } } diff --git a/spartan_parallel/src/r1csproof.rs b/spartan_parallel/src/r1csproof.rs index 05a52d94..e1f2b1e7 100644 --- a/spartan_parallel/src/r1csproof.rs +++ b/spartan_parallel/src/r1csproof.rs @@ -4,7 +4,6 @@ use super::dense_mlpoly::{DensePolynomial, EqPolynomial}; use super::errors::ProofVerifyError; use super::math::Math; use super::r1csinstance::R1CSInstance; -use super::random::RandomTape; use super::sumcheck::SumcheckInstanceProof; use super::timer::Timer; use super::transcript::ProofTranscript; @@ -13,16 +12,22 @@ use crate::{ProverWitnessSecInfo, VerifierWitnessSecInfo}; use merlin::Transcript; use serde::{Deserialize, Serialize}; use std::cmp::min; +use std::iter::zip; +use rayon::prelude::*; #[derive(Serialize, Deserialize, Debug)] pub struct R1CSProof { sc_proof_phase1: SumcheckInstanceProof, sc_proof_phase2: SumcheckInstanceProof, claims_phase2: (S, S, S), + // Need to commit vars for short and long witnesses separately + // The long version must exist, the short version might not + eval_vars_at_ry_list: Vec>, + eval_vars_at_ry: S, // proof_eval_vars_at_ry_list: Vec>, } -impl R1CSProof { +impl R1CSProof { fn prove_phase_one( num_rounds: usize, num_rounds_x_max: usize, @@ -71,17 +76,17 @@ impl R1CSProof { num_rounds_p: usize, single_inst: bool, num_witness_secs: usize, - num_inputs: Vec, + num_inputs: Vec>, claim: &S, evals_eq: &mut DensePolynomial, evals_ABC: &mut DensePolynomialPqx, evals_z: &mut DensePolynomialPqx, transcript: &mut Transcript, - ) -> (SumcheckInstanceProof, Vec, Vec) { + ) -> (SumcheckInstanceProof, Vec, Vec, Vec>) { let comb_func = |poly_A_comp: &S, poly_B_comp: &S, poly_C_comp: &S| -> S { *poly_A_comp * *poly_B_comp * *poly_C_comp }; - let (sc_proof_phase_two, r, claims) = SumcheckInstanceProof::::prove_cubic_disjoint_rounds( + let (sc_proof_phase_two, r, claims, claimed_vars_at_ry) = SumcheckInstanceProof::::prove_cubic_disjoint_rounds( claim, num_rounds, num_rounds_y_max, @@ -97,7 +102,7 @@ impl R1CSProof { transcript, ); - (sc_proof_phase_two, r, claims) + (sc_proof_phase_two, r, claims, claimed_vars_at_ry) } fn protocol_name() -> &'static [u8] { @@ -111,7 +116,6 @@ impl R1CSProof { num_proofs: &Vec, // Number of inputs of the combined Z matrix max_num_inputs: usize, - num_inputs: &Vec, // WITNESS_SECS // How many sections does each Z vector have? // num_witness_secs can be between 1 - 8 @@ -127,6 +131,9 @@ impl R1CSProof { inst: &R1CSInstance, transcript: &mut Transcript, ) -> (R1CSProof, [Vec; 4]) { + let ZERO = S::field_zero(); + let ONE = S::field_one(); + let timer_prove = Timer::new("R1CSProof::prove"); >::append_protocol_name( transcript, @@ -141,9 +148,19 @@ impl R1CSProof { assert_eq!(*p, p.next_power_of_two()); assert!(*p <= max_num_proofs); } - for i in num_inputs { - assert_eq!(*i, i.next_power_of_two()); - assert!(*i <= max_num_inputs); + // Construct num_inputs as P x W + // Note: w.num_inputs[p_w] might exceed max_num_inputs, but only the first max_num_inputs entries are used + let mut num_inputs: Vec> = (0..num_instances).map(|p| witness_secs.iter().map(|w| { + let p_w = if w.num_inputs.len() == 1 { 0 } else { p }; + min(w.num_inputs[p_w], max_num_inputs) + }).collect()).collect(); + // Number of inputs must be in decreasing order between witness segments + for p in 0..num_instances { + for w in (1..witness_secs.len()).rev() { + if num_inputs[p][w - 1] < num_inputs[p][w] { + num_inputs[p][w - 1] = num_inputs[p][w] + } + } } // Number of instances is either one or matches num_instances assert!(inst.get_num_instances() == 1 || inst.get_num_instances() == num_instances); @@ -174,22 +191,26 @@ impl R1CSProof { // append input to variables to create a single vector z let timer_tmp = Timer::new("prove_z_mat_gen"); - let mut z_mat: Vec>>> = Vec::new(); - for p in 0..num_instances { - z_mat.push(Vec::new()); - for q in 0..num_proofs[p] { - z_mat[p].push(vec![vec![S::field_zero(); num_inputs[p]]; num_witness_secs]); - for w in 0..witness_secs.len() { + + let z_mat = (0..num_instances).map(|p| { + (0..num_proofs[p]).into_par_iter().map(|q| { + (0..witness_secs.len()).map(|w| { let ws = witness_secs[w]; let p_w = if ws.w_mat.len() == 1 { 0 } else { p }; let q_w = if ws.w_mat[p_w].len() == 1 { 0 } else { q }; - // Only append the first num_inputs_entries of w_mat[p][q] - for i in 0..min(ws.num_inputs[p_w], num_inputs[p]) { - z_mat[p][q][w][i] = ws.w_mat[p_w][q_w][i]; - } - } - } - } + + let r_w = if ws.num_inputs[p_w] < num_inputs[p][w] { + let padding = std::iter::repeat(ZERO).take(num_inputs[p][w] - ws.num_inputs[p_w]).collect::>(); + let mut r = ws.w_mat[p_w][q_w].clone(); + r.extend(padding); + r + } else { + ws.w_mat[p_w][q_w].iter().take(num_inputs[p][w]).cloned().collect::>() + }; + r_w + }).collect::>>() + }).collect::>>>() + }).collect::>>>>(); timer_tmp.stop(); // derive the verifier's challenge \tau @@ -213,7 +234,6 @@ impl R1CSProof { num_instances, num_proofs.clone(), max_num_proofs, - num_inputs.clone(), max_num_inputs, num_cons, block_num_cons.clone(), @@ -223,7 +243,7 @@ impl R1CSProof { // Sumcheck 1: (Az * Bz - Cz) * eq(x, q, p) = 0 let timer_tmp = Timer::new("prove_sum_check"); - let (sc_proof_phase1, rx, _claims_phase1) = R1CSProof::prove_phase_one( + let (sc_proof_phase1, rx_rev, _claims_phase1) = R1CSProof::prove_phase_one( num_rounds_x + num_rounds_q + num_rounds_p, num_rounds_x, num_rounds_q, @@ -248,23 +268,23 @@ impl R1CSProof { timer_tmp.stop(); timer_sc_proof_phase1.stop(); - let (tau_claim, Az_claim, Bz_claim, Cz_claim) = ( + let (_tau_claim, Az_claim, Bz_claim, Cz_claim) = ( &(poly_tau_p[0] * poly_tau_q[0] * poly_tau_x[0]), &poly_Az.index(0, 0, 0, 0), &poly_Bz.index(0, 0, 0, 0), &poly_Cz.index(0, 0, 0, 0), ); - // prove the final step of sum-check #1 - let _taus_bound_rx = tau_claim; + S::append_field_to_transcript(b"Az_claim", transcript, *Az_claim); + S::append_field_to_transcript(b"Bz_claim", transcript, *Bz_claim); + S::append_field_to_transcript(b"Cz_claim", transcript, *Cz_claim); // Separate the result rx into rp, rq, and rx - let (rx_rev, rq_rev) = rx.split_at(num_rounds_x); - let (rq_rev, rp) = rq_rev.split_at(num_rounds_q); + let (rx_rev, rq_rev) = rx_rev.split_at(num_rounds_x); + let (rq_rev, rp_rev) = rq_rev.split_at(num_rounds_q); let rx: Vec = rx_rev.iter().copied().rev().collect(); - let rq_rev = rq_rev.to_vec(); let rq: Vec = rq_rev.iter().copied().rev().collect(); - let rp = rp.to_vec(); + let rp = rp_rev.iter().copied().rev().collect(); // -- // PHASE 2 @@ -295,7 +315,11 @@ impl R1CSProof { evals_ABC.push(vec![Vec::new()]); for w in 0..num_witness_secs { evals_ABC[p][0].push(Vec::new()); - for i in 0..num_inputs[p] { + // If single instance, need to find the maximum num_inputs + let num_inputs = if inst.get_num_instances() == 1 { + num_inputs.iter().map(|n| n[w]).max().unwrap() + } else { num_inputs[p][w] }; + for i in 0..num_inputs { evals_ABC[p][0][w].push( r_A * evals_A[p][0][w][i] + r_B * evals_B[p][0][w][i] + r_C * evals_C[p][0][w][i], ); @@ -304,34 +328,23 @@ impl R1CSProof { } evals_ABC }; - let mut ABC_poly = DensePolynomialPqx::new_rev( - &evals_ABC, - vec![1; num_instances], - 1, - num_inputs.clone(), - max_num_inputs, - ); + let mut ABC_poly = DensePolynomialPqx::new(evals_ABC); timer_tmp.stop(); let timer_tmp = Timer::new("prove_z_gen"); // Construct a p * q * len(z) matrix Z and bound it to r_q - let mut Z_poly = DensePolynomialPqx::new_rev( - &z_mat, - num_proofs.clone(), - max_num_proofs, - num_inputs.clone(), - max_num_inputs, - ); + let mut Z_poly = DensePolynomialPqx::new(z_mat); timer_tmp.stop(); let timer_tmp = Timer::new("prove_z_bind"); - Z_poly.bound_poly_vars_rq(&rq_rev.to_vec()); + Z_poly.bound_poly_vars_rq_parallel(&rq_rev); timer_tmp.stop(); // An Eq function to match p with rp let mut eq_p_rp_poly = DensePolynomial::new(EqPolynomial::new(rp).evals()); // Sumcheck 2: (rA + rB + rC) * Z * eq(p) = e - let (sc_proof_phase2, ry, _claims_phase2) = R1CSProof::prove_phase_two( + let timer_tmp = Timer::new("prove_sum_check"); + let (sc_proof_phase2, ry_rev, _claims_phase2, claimed_vars_at_ry) = R1CSProof::prove_phase_two( num_rounds_y + num_rounds_w + num_rounds_p, num_rounds_y, num_rounds_w, @@ -345,13 +358,14 @@ impl R1CSProof { &mut Z_poly, transcript, ); + timer_tmp.stop(); timer_sc_proof_phase2.stop(); // Separate ry into rp, rw, and ry - let (ry_rev, rw) = ry.split_at(num_rounds_y); - let (rw, rp) = rw.split_at(num_rounds_w); - let rp = rp.to_vec(); - let rw = rw.to_vec(); + let (ry_rev, rw_rev) = ry_rev.split_at(num_rounds_y); + let (rw_rev, rp_rev) = rw_rev.split_at(num_rounds_w); + let rp: Vec = rp_rev.iter().copied().rev().collect(); + let rw: Vec = rw_rev.iter().copied().rev().collect(); let ry: Vec = ry_rev.iter().copied().rev().collect(); assert_eq!(Z_poly.len(), 1); @@ -364,9 +378,13 @@ impl R1CSProof { let timer_polyeval = Timer::new("polyeval"); // For every possible wit_sec.num_inputs, compute ry_factor = prodX(1 - ryX)... - let mut ry_factors = vec![S::field_one(); num_rounds_y + 1]; + let mut rq_factors = vec![ONE; num_rounds_q + 1]; + for i in 0..num_rounds_q { + rq_factors[i + 1] = rq_factors[i] * (ONE - rq[i]); + } + let mut ry_factors = vec![ONE; num_rounds_y + 1]; for i in 0..num_rounds_y { - ry_factors[i + 1] = ry_factors[i] * (S::field_one() - ry[i]); + ry_factors[i + 1] = ry_factors[i] * (ONE - ry[i]); } let mut poly_list = Vec::new(); @@ -374,43 +392,29 @@ impl R1CSProof { let mut num_inputs_list = Vec::new(); // List of all evaluations let mut Zr_list = Vec::new(); - // List of evaluations separated by witness_secs + // Obtain list of evaluations separated by witness_secs + // Note: eval_vars_at_ry_list and raw_eval_vars_at_ry_list are W * P but claimed_vars_at_ry_list is P * W, and + // raw_eval_vars_at_ry_list does not multiply rq_factor and ry_factor let mut eval_vars_at_ry_list = vec![Vec::new(); num_witness_secs]; - + let mut raw_eval_vars_at_ry_list = vec![Vec::new(); num_witness_secs]; for i in 0..num_witness_secs { let w = witness_secs[i]; let wit_sec_num_instance = w.w_mat.len(); - eval_vars_at_ry_list.push(Vec::new()); - for p in 0..wit_sec_num_instance { - poly_list.push(&w.poly_w[p]); - num_proofs_list.push(w.w_mat[p].len()); - num_inputs_list.push(w.num_inputs[p]); - // Depending on w.num_inputs[p], ry_short can be two different values - let ry_short = { - // if w.num_inputs[p] >= num_inputs, need to pad 0's to the front of ry - if w.num_inputs[p] >= max_num_inputs { - let ry_pad = vec![S::field_zero(); w.num_inputs[p].log_2() - max_num_inputs.log_2()]; - [ry_pad, ry.clone()].concat() - } - // Else ry_short is the last w.num_inputs[p].log_2() entries of ry - // thus, to obtain the actual ry, need to multiply by (1 - ry0)(1 - ry1)..., which is ry_factors[num_rounds_y - w.num_inputs[p]] - else { - ry[num_rounds_y - w.num_inputs[p].log_2()..].to_vec() - } - }; - let rq_short = - rq[num_rounds_q - num_proofs_list[num_proofs_list.len() - 1].log_2()..].to_vec(); - let r = &[rq_short, ry_short.clone()].concat(); - let eval_vars_at_ry = poly_list[poly_list.len() - 1].evaluate(r); - Zr_list.push(eval_vars_at_ry); - if w.num_inputs[p] >= max_num_inputs { - eval_vars_at_ry_list[i].push(eval_vars_at_ry); + if w.num_inputs[p] > 1 { + poly_list.push(&w.poly_w[p]); + num_proofs_list.push(w.w_mat[p].len()); + num_inputs_list.push(w.num_inputs[p]); + // Find out the extra q and y padding to remove in raw_eval_vars_at_ry_list + let rq_pad_inv = rq_factors[num_rounds_q - num_proofs[p].log_2()].invert().unwrap(); + let ry_pad_inv = if w.num_inputs[p] >= max_num_inputs { ONE } else { ry_factors[num_rounds_y - w.num_inputs[p].log_2()].invert().unwrap() }; + eval_vars_at_ry_list[i].push(claimed_vars_at_ry[p][i] * rq_pad_inv); // I don't know why need to divide by rq and later multiply it back, but it doesn't work without this + let claimed_vars_at_ry_no_pad = claimed_vars_at_ry[p][i] * rq_pad_inv * ry_pad_inv; + Zr_list.push(claimed_vars_at_ry_no_pad); + raw_eval_vars_at_ry_list[i].push(claimed_vars_at_ry_no_pad); } else { - eval_vars_at_ry_list[i] - .push(eval_vars_at_ry * ry_factors[num_rounds_y - w.num_inputs[p].log_2()]); - eval_vars_at_ry_list[i] - .push(eval_vars_at_ry * ry_factors[num_rounds_y - w.num_inputs[p].log_2()]); + eval_vars_at_ry_list[i].push(ZERO); + raw_eval_vars_at_ry_list[i].push(ZERO); } } } @@ -434,13 +438,6 @@ impl R1CSProof { // So we need to multiply each entry by (1 - rq0)(1 - rq1) let mut eval_vars_comb_list = Vec::new(); for p in 0..num_instances { - let _wit_sec_p = |i: usize| { - if witness_secs[i].w_mat.len() == 1 { - 0 - } else { - p - } - }; let wit_sec_p = |i: usize| { if witness_secs[i].w_mat.len() == 1 { 0 @@ -451,28 +448,28 @@ impl R1CSProof { let e = |i: usize| eval_vars_at_ry_list[i][wit_sec_p(i)]; let prefix_list = match num_witness_secs.next_power_of_two() { 1 => { - vec![S::field_one()] + vec![ONE] } 2 => { - vec![(S::field_one() - rw[0]), rw[0]] + vec![(ONE - rw[0]), rw[0]] } 4 => { vec![ - (S::field_one() - rw[0]) * (S::field_one() - rw[1]), - (S::field_one() - rw[0]) * rw[1], - rw[0] * (S::field_one() - rw[1]), + (ONE - rw[0]) * (ONE - rw[1]), + (ONE - rw[0]) * rw[1], + rw[0] * (ONE - rw[1]), rw[0] * rw[1], ] } 8 => { vec![ - (S::field_one() - rw[0]) * (S::field_one() - rw[1]) * (S::field_one() - rw[2]), - (S::field_one() - rw[0]) * (S::field_one() - rw[1]) * rw[2], - (S::field_one() - rw[0]) * rw[1] * (S::field_one() - rw[2]), - (S::field_one() - rw[0]) * rw[1] * rw[2], - rw[0] * (S::field_one() - rw[1]) * (S::field_one() - rw[2]), - rw[0] * (S::field_one() - rw[1]) * rw[2], - rw[0] * rw[1] * (S::field_one() - rw[2]), + (ONE - rw[0]) * (ONE - rw[1]) * (ONE - rw[2]), + (ONE - rw[0]) * (ONE - rw[1]) * rw[2], + (ONE - rw[0]) * rw[1] * (ONE - rw[2]), + (ONE - rw[0]) * rw[1] * rw[2], + rw[0] * (ONE - rw[1]) * (ONE - rw[2]), + rw[0] * (ONE - rw[1]) * rw[2], + rw[0] * rw[1] * (ONE - rw[2]), rw[0] * rw[1] * rw[2], ] } @@ -481,17 +478,16 @@ impl R1CSProof { } }; let mut eval_vars_comb = - (0..num_witness_secs).fold(S::field_zero(), |s, i| s + prefix_list[i] * e(i)); - for q in 0..(num_rounds_q - num_proofs[p].log_2()) { - eval_vars_comb = eval_vars_comb * (S::field_one() - rq[q]); - } + (0..num_witness_secs).fold(ZERO, |s, i| s + prefix_list[i] * e(i)); + eval_vars_comb *= rq_factors[num_rounds_q - num_proofs[p].log_2()]; eval_vars_comb_list.push(eval_vars_comb); } timer_polyeval.stop(); let poly_vars = DensePolynomial::new(eval_vars_comb_list); - let _eval_vars_at_ry = poly_vars.evaluate(&rp); - + let eval_vars_at_ry = poly_vars.evaluate(&rp); + // prove the final step of sum-check #2 + // Deferred to verifier timer_prove.stop(); ( @@ -499,9 +495,11 @@ impl R1CSProof { sc_proof_phase1, sc_proof_phase2, claims_phase2: (*Az_claim, *Bz_claim, *Cz_claim), + eval_vars_at_ry_list: raw_eval_vars_at_ry_list, + eval_vars_at_ry, // proof_eval_vars_at_ry_list, }, - [rp, rq_rev, rx, [rw, ry].concat()], + [rp, rq, rx, [rw, ry].concat()], ) } @@ -509,7 +507,7 @@ impl R1CSProof { &self, num_instances: usize, max_num_proofs: usize, - _num_proofs: &Vec, + num_proofs: &Vec, max_num_inputs: usize, // NUM_WITNESS_SECS @@ -525,9 +523,12 @@ impl R1CSProof { witness_secs: Vec<&VerifierWitnessSecInfo>, num_cons: usize, - _evals: &[S; 3], + evals: &[S; 3], transcript: &mut Transcript, ) -> Result<[Vec; 4], ProofVerifyError> { + let ZERO = S::field_zero(); + let ONE = S::field_one(); + >::append_protocol_name( transcript, R1CSProof::::protocol_name(), @@ -551,34 +552,40 @@ impl R1CSProof { let tau_q = transcript.challenge_vector(b"challenge_tau_q", num_rounds_q); let tau_x = transcript.challenge_vector(b"challenge_tau_x", num_rounds_x); - let (_, rx) = self.sc_proof_phase1.verify( - S::field_zero(), + let (claim_post_phase_1, rx_rev) = self.sc_proof_phase1.verify( + ZERO, num_rounds_x + num_rounds_q + num_rounds_p, 3, transcript, )?; - // Separate the result rx into rp_round1, rq, and rx - let (rx_rev, rq_rev) = rx.split_at(num_rounds_x); - let (rq_rev, rp_round1) = rq_rev.split_at(num_rounds_q); + // Separate the result rx into rp, rq, and rx + let (rx_rev, rq_rev) = rx_rev.split_at(num_rounds_x); + let (rq_rev, rp_rev) = rq_rev.split_at(num_rounds_q); let rx: Vec = rx_rev.iter().copied().rev().collect(); - let rq_rev = rq_rev.to_vec(); - let _rq: Vec = rq_rev.iter().copied().rev().collect(); - let rp_round1 = rp_round1.to_vec(); + let rq: Vec = rq_rev.iter().copied().rev().collect(); + let rp_round1: Vec = rp_rev.iter().copied().rev().collect(); // taus_bound_rx is really taus_bound_rx_rq_rp let taus_bound_rp: S = (0..rp_round1.len()) - .map(|i| { - rp_round1[i] * tau_p[i] + (S::field_one() - rp_round1[i]) * (S::field_one() - tau_p[i]) - }) + .map(|i| rp_round1[i] * tau_p[i] + (ONE - rp_round1[i]) * (ONE - tau_p[i])) .product(); - let taus_bound_rq: S = (0..rq_rev.len()) - .map(|i| rq_rev[i] * tau_q[i] + (S::field_one() - rq_rev[i]) * (S::field_one() - tau_q[i])) + let taus_bound_rq: S = (0..rq.len()) + .map(|i| rq[i] * tau_q[i] + (ONE - rq[i]) * (ONE - tau_q[i])) .product(); - let taus_bound_rx: S = (0..rx_rev.len()) - .map(|i| rx_rev[i] * tau_x[i] + (S::field_one() - rx_rev[i]) * (S::field_one() - tau_x[i])) + let taus_bound_rx: S = (0..rx.len()) + .map(|i| rx[i] * tau_x[i] + (ONE - rx[i]) * (ONE - tau_x[i])) .product(); - let _taus_bound_rx = taus_bound_rp * taus_bound_rq * taus_bound_rx; + let taus_bound_rx = taus_bound_rp * taus_bound_rq * taus_bound_rx; + + + // perform the intermediate sum-check test with claimed Az, Bz, and Cz + let (Az_claim, Bz_claim, Cz_claim) = self.claims_phase2; + S::append_field_to_transcript(b"Az_claim", transcript, Az_claim); + S::append_field_to_transcript(b"Bz_claim", transcript, Bz_claim); + S::append_field_to_transcript(b"Cz_claim", transcript, Cz_claim); + + assert_eq!(taus_bound_rx * (Az_claim * Bz_claim - Cz_claim), claim_post_phase_1); // derive three public challenges and then derive a joint claim let r_A: S = transcript.challenge_scalar(b"challenge_Az"); @@ -589,7 +596,7 @@ impl R1CSProof { let claim_phase2 = r_A * Az_claim + r_B * Bz_claim + r_C * Cz_claim; // verify the joint claim with a sum-check protocol - let (_, ry) = self.sc_proof_phase2.verify( + let (claim_post_phase_2, ry_rev) = self.sc_proof_phase2.verify( claim_phase2, num_rounds_y + num_rounds_w + num_rounds_p, 3, @@ -597,37 +604,43 @@ impl R1CSProof { )?; // Separate ry into rp, rw, and ry - let (ry_rev, rw) = ry.split_at(num_rounds_y); - let (rw, rp) = rw.split_at(num_rounds_w); - let rp = rp.to_vec(); - let rw = rw.to_vec(); + let (ry_rev, rw_rev) = ry_rev.split_at(num_rounds_y); + let (rw_rev, rp_rev) = rw_rev.split_at(num_rounds_w); + let rp: Vec = rp_rev.iter().copied().rev().collect(); + let rw: Vec = rw_rev.iter().copied().rev().collect(); let ry: Vec = ry_rev.iter().copied().rev().collect(); // An Eq function to match p with rp - let _p_rp_poly_bound_ry: S = (0..rp.len()) - .map(|i| rp[i] * rp_round1[i] + (S::field_one() - rp[i]) * (S::field_one() - rp_round1[i])) + let p_rp_poly_bound_ry: S = (0..rp.len()) + .map(|i| rp[i] * rp_round1[i] + (ONE - rp[i]) * (ONE - rp_round1[i])) .product(); // verify Z(rp, rq, ry) proof against the initial commitment // First by witness & by instance on ry // For every possible wit_sec.num_inputs, compute ry_factor = prodX(1 - ryX)... // If there are 2 witness secs, then ry_factors[0] = 1, ry_factors[1] = 1, ry_factors[2] = 1 - ry1, ry_factors[3] = (1 - ry1)(1 - ry2), etc. - let mut ry_factors = vec![S::field_one(); num_rounds_y + 1]; + let mut ry_factors = vec![ONE; num_rounds_y + 1]; for i in 0..num_rounds_y { - ry_factors[i + 1] = (ry_factors[i]) * (S::field_one() - ry[i]); + ry_factors[i + 1] = (ry_factors[i]) * (ONE - ry[i]); } // POLY COMMIT let timer_commit_opening = Timer::new("verify_sc_commitment_opening"); let mut num_proofs_list = Vec::new(); let mut num_inputs_list = Vec::new(); - + let mut eval_Zr_list = Vec::new(); for i in 0..num_witness_secs { let w = witness_secs[i]; let wit_sec_num_instance = w.num_proofs.len(); for p in 0..wit_sec_num_instance { - num_proofs_list.push(w.num_proofs[p]); - num_inputs_list.push(w.num_inputs[p]); + if w.num_inputs[p] > 1 { + // comm_list.push(&w.comm_w[p]); + num_proofs_list.push(w.num_proofs[p]); + num_inputs_list.push(w.num_inputs[p]); + eval_Zr_list.push(self.eval_vars_at_ry_list[i][p]); + } else { + assert_eq!(self.eval_vars_at_ry_list[i][p], ZERO); + } } } @@ -643,38 +656,47 @@ impl R1CSProof { */ // Then on rp + let mut expected_eval_vars_list = Vec::new(); for p in 0..num_instances { - let _wit_sec_p = |i: usize| { + let wit_sec_p = |i: usize| { if witness_secs[i].num_proofs.len() == 1 { 0 } else { p } }; - let _prefix_list = match num_witness_secs.next_power_of_two() { + let c = |i: usize| { + if witness_secs[i].num_inputs[wit_sec_p(i)] >= max_num_inputs { + self.eval_vars_at_ry_list[i][wit_sec_p(i)] + } else { + self.eval_vars_at_ry_list[i][wit_sec_p(i)] + * ry_factors[num_rounds_y - witness_secs[i].num_inputs[wit_sec_p(i)].log_2()] + } + }; + let prefix_list = match num_witness_secs.next_power_of_two() { 1 => { - vec![S::field_one()] + vec![ONE] } 2 => { - vec![(S::field_one() - rw[0]), rw[0]] + vec![(ONE - rw[0]), rw[0]] } 4 => { vec![ - (S::field_one() - rw[0]) * (S::field_one() - rw[1]), - (S::field_one() - rw[0]) * rw[1], - rw[0] * (S::field_one() - rw[1]), + (ONE - rw[0]) * (ONE - rw[1]), + (ONE - rw[0]) * rw[1], + rw[0] * (ONE - rw[1]), rw[0] * rw[1], ] } 8 => { vec![ - (S::field_one() - rw[0]) * (S::field_one() - rw[1]) * (S::field_one() - rw[2]), - (S::field_one() - rw[0]) * (S::field_one() - rw[1]) * rw[2], - (S::field_one() - rw[0]) * rw[1] * (S::field_one() - rw[2]), - (S::field_one() - rw[0]) * rw[1] * rw[2], - rw[0] * (S::field_one() - rw[1]) * (S::field_one() - rw[2]), - rw[0] * (S::field_one() - rw[1]) * rw[2], - rw[0] * rw[1] * (S::field_one() - rw[2]), + (ONE - rw[0]) * (ONE - rw[1]) * (ONE - rw[2]), + (ONE - rw[0]) * (ONE - rw[1]) * rw[2], + (ONE - rw[0]) * rw[1] * (ONE - rw[2]), + (ONE - rw[0]) * rw[1] * rw[2], + rw[0] * (ONE - rw[1]) * (ONE - rw[2]), + rw[0] * (ONE - rw[1]) * rw[2], + rw[0] * rw[1] * (ONE - rw[2]), rw[0] * rw[1] * rw[2], ] } @@ -682,10 +704,33 @@ impl R1CSProof { panic!("Unsupported num_witness_secs: {}", num_witness_secs); } }; + let mut eval_vars_comb = + (1..num_witness_secs).fold(prefix_list[0] * c(0), |s, i| s + prefix_list[i] * c(i)); + for q in 0..(num_rounds_q - num_proofs[p].log_2()) { + eval_vars_comb *= ONE - rq[q]; + } + expected_eval_vars_list.push(eval_vars_comb); } + let EQ_p = &EqPolynomial::new(rp.clone()).evals()[..num_instances]; + let expected_eval_vars_at_ry = + zip(EQ_p, expected_eval_vars_list).fold(ZERO, |s, (a, b)| s + *a * b); + + assert_eq!(expected_eval_vars_at_ry, self.eval_vars_at_ry); + timer_commit_opening.stop(); - Ok([rp, rq_rev, rx, [rw, ry].concat()]) + // compute commitment to eval_Z_at_ry = (ONE - ry[0]) * self.eval_vars_at_ry + ry[0] * poly_input_eval + let eval_Z_at_ry = &self.eval_vars_at_ry; + + // perform the final check in the second sum-check protocol + let [eval_A_r, eval_B_r, eval_C_r] = evals; + let expected_claim_post_phase2 = + (r_A * *eval_A_r + r_B * *eval_B_r + r_C * *eval_C_r) * *eval_Z_at_ry * p_rp_poly_bound_ry; + + // verify proof that expected_claim_post_phase2 == claim_post_phase2 + assert_eq!(claim_post_phase_2, expected_claim_post_phase2); + + Ok([rp, rq, rx, [rw, ry].concat()]) } } diff --git a/spartan_parallel/src/scalar/fp.rs b/spartan_parallel/src/scalar/fp.rs index d50b5358..f5a7b33e 100644 --- a/spartan_parallel/src/scalar/fp.rs +++ b/spartan_parallel/src/scalar/fp.rs @@ -15,6 +15,9 @@ use zeroize::Zeroize; #[derive(Clone, Copy, Eq, Serialize, Deserialize, Hash, Debug)] pub struct Scalar(Goldilocks); +unsafe impl Send for Scalar {} +unsafe impl Sync for Scalar {} + impl SpartanExtensionField for Scalar { type InnerType = Goldilocks; type BaseField = Goldilocks; diff --git a/spartan_parallel/src/scalar/fp2.rs b/spartan_parallel/src/scalar/fp2.rs index 1787b49c..0410e4af 100644 --- a/spartan_parallel/src/scalar/fp2.rs +++ b/spartan_parallel/src/scalar/fp2.rs @@ -14,6 +14,9 @@ use zeroize::Zeroize; #[derive(Clone, Copy, Eq, Serialize, Deserialize, Hash, Debug)] pub struct ScalarExt2(GoldilocksExt2); +unsafe impl Send for ScalarExt2 {} +unsafe impl Sync for ScalarExt2 {} + impl From for ScalarExt2 { fn from(g: GoldilocksExt2) -> Self { Self(g) diff --git a/spartan_parallel/src/scalar/mod.rs b/spartan_parallel/src/scalar/mod.rs index 138a2259..110a4440 100644 --- a/spartan_parallel/src/scalar/mod.rs +++ b/spartan_parallel/src/scalar/mod.rs @@ -47,12 +47,14 @@ pub trait SpartanExtensionField: + fmt::Debug + Mul + MulAssign + + Send + + Sync { /// Inner Goldilocks extension field - type InnerType: ExtensionField + Field; + type InnerType: ExtensionField + Field + Send + Sync; /// Basefield for conserving computational resources - type BaseField: Field; + type BaseField: Field + Send + Sync; /// Return inner Goldilocks field element fn inner(&self) -> &Self::InnerType; diff --git a/spartan_parallel/src/sparse_mlpoly.rs b/spartan_parallel/src/sparse_mlpoly.rs index 830d2803..ef766b1e 100644 --- a/spartan_parallel/src/sparse_mlpoly.rs +++ b/spartan_parallel/src/sparse_mlpoly.rs @@ -30,9 +30,9 @@ impl SparseMatEntry { #[derive(Clone, Debug, Serialize, Deserialize)] pub struct SparseMatPolynomial { - num_vars_x: usize, - num_vars_y: usize, - M: Vec>, + pub num_vars_x: usize, + pub num_vars_y: usize, + pub M: Vec>, } pub struct Derefs { @@ -403,21 +403,22 @@ impl SparseMatPolynomial { // Z is consisted of vector segments // Z[i] contains entries i * max_num_cols ~ i * max_num_cols + num_cols pub fn multiply_vec_disjoint_rounds( - &self, - num_rows: usize, - max_num_cols: usize, - _num_cols: usize, + &self, + num_rows: usize, + max_num_cols: usize, z: &Vec>, ) -> Vec { (0..self.M.len()) .map(|i| { let row = self.M[i].row; let col = self.M[i].col; - let val = &self.M[i].val; - (row, *val * z[col / max_num_cols][col % max_num_cols]) + let val = self.M[i].val.clone(); + let w = col / max_num_cols; + let y = col % max_num_cols; + (row, if w < z.len() && y < z[w].len() { val * z[w][y] } else { S::field_zero() }) }) .fold(vec![S::field_zero(); num_rows], |mut Mz, (r, v)| { - Mz[r] = Mz[r] + v; + Mz[r] += v; Mz }) } @@ -450,8 +451,7 @@ impl SparseMatPolynomial { for i in 0..self.M.len() { let entry = &self.M[i]; - M_evals[entry.col / max_num_cols][entry.col % max_num_cols] = - M_evals[entry.col / max_num_cols][entry.col % max_num_cols] + rx[entry.row] * entry.val; + M_evals[entry.col / max_num_cols][entry.col % max_num_cols] += rx[entry.row] * entry.val; } M_evals } @@ -650,14 +650,14 @@ impl PolyEvalNetwork { } #[derive(Debug, Serialize, Deserialize)] -struct HashLayerProof { +pub struct HashLayerProof { eval_row: (Vec, Vec, S), eval_col: (Vec, Vec, S), eval_val: Vec, eval_derefs: (Vec, Vec), - proof_ops: PolyEvalProof, - proof_mem: PolyEvalProof, - proof_derefs: DerefsEvalProof, + pub proof_ops: PolyEvalProof, + pub proof_mem: PolyEvalProof, + pub proof_derefs: DerefsEvalProof, } impl HashLayerProof { @@ -975,12 +975,12 @@ impl HashLayerProof { } #[derive(Debug, Serialize, Deserialize)] -struct ProductLayerProof { +pub struct ProductLayerProof { eval_row: (S, Vec, Vec, S), eval_col: (S, Vec, Vec, S), eval_val: (Vec, Vec), - proof_mem: ProductCircuitEvalProofBatched, - proof_ops: ProductCircuitEvalProofBatched, + pub proof_mem: ProductCircuitEvalProofBatched, + pub proof_ops: ProductCircuitEvalProofBatched, } impl ProductLayerProof { @@ -993,6 +993,7 @@ impl ProductLayerProof { col_prod_layer: &mut ProductLayer, dense: &MultiSparseMatPolynomialAsDense, derefs: &Derefs, + r_header: S, eval: &[S], transcript: &mut Transcript, ) -> (Self, Vec, Vec) { @@ -1067,7 +1068,7 @@ impl ProductLayerProof { S::append_field_to_transcript(b"claim_eval_dotp_left", transcript, eval_dotp_left); S::append_field_to_transcript(b"claim_eval_dotp_right", transcript, eval_dotp_right); - assert_eq!(eval_dotp_left + eval_dotp_right, eval[i]); + assert_eq!(r_header * (eval_dotp_left + eval_dotp_right), eval[i]); eval_dotp_left_vec.push(eval_dotp_left); eval_dotp_right_vec.push(eval_dotp_right); @@ -1144,6 +1145,7 @@ impl ProductLayerProof { &self, num_ops: usize, num_cells: usize, + r_header: S, eval: &[S], transcript: &mut Transcript, ) -> Result<(Vec, Vec, Vec, Vec, Vec), ProofVerifyError> { @@ -1190,7 +1192,7 @@ impl ProductLayerProof { assert_eq!(eval_dotp_left.len(), num_instances); let mut claims_dotp_circuit: Vec = Vec::new(); for i in 0..num_instances { - assert_eq!(eval_dotp_left[i] + eval_dotp_right[i], eval[i]); + assert_eq!(r_header * (eval_dotp_left[i] + eval_dotp_right[i]), eval[i]); S::append_field_to_transcript(b"claim_eval_dotp_left", transcript, eval_dotp_left[i]); S::append_field_to_transcript(b"claim_eval_dotp_right", transcript, eval_dotp_right[i]); @@ -1230,9 +1232,9 @@ impl ProductLayerProof { } #[derive(Debug, Serialize, Deserialize)] -struct PolyEvalNetworkProof { - proof_prod_layer: ProductLayerProof, - proof_hash_layer: HashLayerProof, +pub struct PolyEvalNetworkProof { + pub proof_prod_layer: ProductLayerProof, + pub proof_hash_layer: HashLayerProof, } impl PolyEvalNetworkProof { @@ -1244,6 +1246,7 @@ impl PolyEvalNetworkProof { network: &mut PolyEvalNetwork, dense: &MultiSparseMatPolynomialAsDense, derefs: &Derefs, + r_header: S, evals: &[S], transcript: &mut Transcript, random_tape: &mut RandomTape, @@ -1258,6 +1261,7 @@ impl PolyEvalNetworkProof { &mut network.col_layers.prod_layer, dense, derefs, + r_header, evals, transcript, ); @@ -1280,6 +1284,7 @@ impl PolyEvalNetworkProof { pub fn verify( &self, comm: &SparseMatPolyCommitment, + r_header: S, evals: &[S], rx: &[S], ry: &[S], @@ -1302,7 +1307,7 @@ impl PolyEvalNetworkProof { let (claims_mem, rand_mem, mut claims_ops, claims_dotp, rand_ops) = self .proof_prod_layer - .verify(num_ops, num_cells, evals, transcript)?; + .verify(num_ops, num_cells, r_header, evals, transcript)?; assert_eq!(claims_mem.len(), 4); assert_eq!(claims_ops.len(), 4 * num_instances); assert_eq!(claims_dotp.len(), 3 * num_instances); @@ -1342,7 +1347,7 @@ impl PolyEvalNetworkProof { #[derive(Debug, Serialize, Deserialize)] pub struct SparseMatPolyEvalProof { - poly_eval_network_proof: PolyEvalNetworkProof, + pub poly_eval_network_proof: PolyEvalNetworkProof, } impl SparseMatPolyEvalProof { @@ -1370,6 +1375,7 @@ impl SparseMatPolyEvalProof { pub fn prove( dense: &MultiSparseMatPolynomialAsDense, + r_header: S, rx: &[S], // point at which the polynomial is evaluated ry: &[S], evals: &[S], // a vector evaluation of \widetilde{M}(r = (rx,ry)) for each M @@ -1415,8 +1421,15 @@ impl SparseMatPolyEvalProof { timer_build_network.stop(); let timer_eval_network = Timer::new("evalproof_layered_network"); - let poly_eval_network_proof = - PolyEvalNetworkProof::prove(&mut net, dense, &derefs, evals, transcript, random_tape); + let poly_eval_network_proof = PolyEvalNetworkProof::prove( + &mut net, + dense, + &derefs, + r_header, + evals, + transcript, + random_tape, + ); timer_eval_network.stop(); poly_eval_network_proof @@ -1430,6 +1443,7 @@ impl SparseMatPolyEvalProof { pub fn verify( &self, comm: &SparseMatPolyCommitment, + r_header: S, rx: &[S], // point at which the polynomial is evaluated ry: &[S], evals: &[S], // evaluation of \widetilde{M}(r = (rx,ry)) @@ -1451,6 +1465,7 @@ impl SparseMatPolyEvalProof { self.poly_eval_network_proof.verify( comm, + r_header, evals, &rx_ext, &ry_ext, @@ -1506,6 +1521,7 @@ mod tests { let mut prover_transcript = Transcript::new(b"example"); let proof = SparseMatPolyEvalProof::prove( &dense, + Scalar::one(), &rx, &ry, &evals, @@ -1515,7 +1531,14 @@ mod tests { let mut verifier_transcript = Transcript::new(b"example"); assert!(proof - .verify(&poly_comm, &rx, &ry, &evals, &mut verifier_transcript,) + .verify( + &poly_comm, + Scalar::one(), + &rx, + &ry, + &evals, + &mut verifier_transcript, + ) .is_ok()); } } diff --git a/spartan_parallel/src/sumcheck.rs b/spartan_parallel/src/sumcheck.rs index 57b11cf4..e362985d 100644 --- a/spartan_parallel/src/sumcheck.rs +++ b/spartan_parallel/src/sumcheck.rs @@ -6,11 +6,11 @@ use crate::scalar::SpartanExtensionField; use super::dense_mlpoly::DensePolynomial; use super::errors::ProofVerifyError; -use super::random::RandomTape; use super::transcript::{AppendToTranscript, ProofTranscript}; use super::unipoly::{CompressedUniPoly, UniPoly}; use itertools::izip; use merlin::Transcript; +use rayon::iter::{IntoParallelIterator, ParallelIterator}; use serde::{Deserialize, Serialize}; use std::cmp::min; @@ -317,7 +317,7 @@ impl SumcheckInstanceProof { claims_dotp, ) } - + pub fn prove_cubic_disjoint_rounds( claim: &S, num_rounds: usize, @@ -326,16 +326,18 @@ impl SumcheckInstanceProof { num_rounds_p: usize, single_inst: bool, // indicates whether poly_B only has one instance num_witness_secs: usize, - mut num_inputs: Vec, + mut num_inputs: Vec>, poly_A: &mut DensePolynomial, poly_B: &mut DensePolynomialPqx, poly_C: &mut DensePolynomialPqx, comb_func: F, transcript: &mut Transcript, - ) -> (Self, Vec, Vec) + ) -> (Self, Vec, Vec, Vec>) where F: Fn(&S, &S, &S) -> S, { + let ZERO = S::field_zero(); + // NOTE: if single_inst, number of instances in poly_B is 1, might not match with instance_len! // NOTE: num_proofs must be 1! // We perform sumcheck in y -> w -> p order, but all polynomials have parameters (p, w, y) @@ -351,6 +353,8 @@ impl SumcheckInstanceProof { let mut witness_secs_len = num_rounds_w.pow2(); let mut instance_len: usize = num_rounds_p.pow2(); + // Every variable binded to ry + let mut claimed_vars_at_ry = Vec::new(); for j in 0..num_rounds { /* For debugging only */ /* If the value is not 0, the instance / input is wrong */ @@ -361,8 +365,8 @@ impl SumcheckInstanceProof { for p in 0..min(instance_len, num_inputs.len()) { let p_inst = if single_inst { 0 } else { p }; for w in 0..min(witness_secs_len, num_witness_secs) { - for y_rev in 0..inputs_len { - let val = poly_A[p] * poly_B.index(p_inst, 0, w, y_rev) * poly_C.index(p, 0, w, y_rev); + for y in 0..min(num_inputs[p_inst][w], num_inputs[p][w]) { + let val = poly_A[p] * poly_B.index(p_inst, 0, w, y) * poly_C.index(p, 0, w, y); expected += val; } } @@ -383,6 +387,14 @@ impl SumcheckInstanceProof { } else { MODE_P }; + if j == num_rounds_y_max { + for p in 0..poly_C.num_instances { + claimed_vars_at_ry.push(Vec::new()); + for w in 0..poly_C.num_witness_secs { + claimed_vars_at_ry[p].push(poly_C.index(p, 0, w, 0)); + } + } + } if inputs_len > 1 { inputs_len /= 2 @@ -393,73 +405,55 @@ impl SumcheckInstanceProof { }; let poly = { - let mut eval_point_0 = S::field_zero(); - let mut eval_point_2 = S::field_zero(); - let mut eval_point_3 = S::field_zero(); + let mut eval_point_0 = ZERO; + let mut eval_point_2 = ZERO; + let mut eval_point_3 = ZERO; // We are guaranteed initially instance_len < num_inputs.len() < instance_len x 2 // So min(instance_len, num_proofs.len()) suffices for p in 0..min(instance_len, num_inputs.len()) { let p_inst = if single_inst { 0 } else { p }; - if mode == MODE_X && num_inputs[p] > 1 { - num_inputs[p] /= 2; - } for w in 0..min(witness_secs_len, num_witness_secs) { - for y in 0..num_inputs[p] { - // evaluate A on p, w, y - let poly_A_index_p_w_y = poly_A[p]; - - // evaluate A on p_high, q_high, x_high - let poly_A_index_high_p_w_y = match mode { - MODE_P => poly_A[p + instance_len], - MODE_W => poly_A[p], - MODE_X => poly_A[p], - _ => { - panic!( - "DensePolynomialPqx bound failed: unrecognized mode {}!", - mode - ); - } + if mode == MODE_X && num_inputs[p][w] > 1 { + num_inputs[p][w] /= 2; + } + for y in 0..num_inputs[p][w] { + // evaluate A, B, C on p, w, y + let (poly_A_low, poly_A_high) = match mode { + MODE_X => (poly_A[p], poly_A[p]), + MODE_W => (poly_A[p], poly_A[p]), + MODE_P => (poly_A[2 * p], poly_A[2 * p + 1]), + _ => unreachable!() }; + let poly_B_low = poly_B.index_low(p_inst, 0, w, y, mode); + let poly_B_high = poly_B.index_high(p_inst, 0, w, y, mode); + let poly_C_low = poly_C.index_low(p, 0, w, y, mode); + let poly_C_high = poly_C.index_high(p, 0, w, y, mode); // eval 0: bound_func is A(low) - eval_point_0 = eval_point_0 - + comb_func( - &poly_A_index_p_w_y, - &poly_B.index(p_inst, 0, w, y), - &poly_C.index(p, 0, w, y), - ); // Az[0, x, x, x, ...] + eval_point_0 = eval_point_0 + comb_func(&poly_A_low, &poly_B_low, &poly_C_low); // Az[x, x, x, ..., 0] // eval 2: bound_func is -A(low) + 2*A(high) - let poly_A_bound_point = - poly_A_index_high_p_w_y + poly_A_index_high_p_w_y - poly_A_index_p_w_y; - let poly_B_bound_point = poly_B.index_high(p_inst, 0, w, y, mode) - + poly_B.index_high(p_inst, 0, w, y, mode) - - poly_B.index(p_inst, 0, w, y); // Az[2, x, x, ...] - let poly_C_bound_point = poly_C.index_high(p, 0, w, y, mode) - + poly_C.index_high(p, 0, w, y, mode) - - poly_C.index(p, 0, w, y); + let poly_A_bound_point = poly_A_high + poly_A_high - poly_A_low; + let poly_B_bound_point = poly_B_high + poly_B_high - poly_B_low; + let poly_C_bound_point = poly_C_high + poly_C_high - poly_C_low; eval_point_2 = eval_point_2 + comb_func( &poly_A_bound_point, &poly_B_bound_point, &poly_C_bound_point, - ); + ); // Az[x, x, ..., 2] // eval 3: bound_func is -2A(low) + 3A(high); computed incrementally with bound_func applied to eval(2) - let poly_A_bound_point = - poly_A_bound_point + poly_A_index_high_p_w_y - poly_A_index_p_w_y; - let poly_B_bound_point = poly_B_bound_point - + poly_B.index_high(p_inst, 0, w, y, mode) - - poly_B.index(p_inst, 0, w, y); // Az[3, x, x, ...] - let poly_C_bound_point = - poly_C_bound_point + poly_C.index_high(p, 0, w, y, mode) - poly_C.index(p, 0, w, y); + let poly_A_bound_point = poly_A_bound_point + poly_A_high - poly_A_low; + let poly_B_bound_point = poly_B_bound_point + poly_B_high - poly_B_low; + let poly_C_bound_point = poly_C_bound_point + poly_C_high - poly_C_low; eval_point_3 = eval_point_3 + comb_func( &poly_A_bound_point, &poly_B_bound_point, &poly_C_bound_point, - ); + ); // Az[x, x, ..., 3] } } } @@ -484,7 +478,7 @@ impl SumcheckInstanceProof { // bound all tables to the verifier's challenege if mode == MODE_P { - poly_A.bound_poly_var_top(&r_j); + poly_A.bound_poly_var_bot(&r_j); } if mode != MODE_P || !single_inst { poly_B.bound_poly(&r_j, mode); @@ -502,6 +496,7 @@ impl SumcheckInstanceProof { poly_B.index(0, 0, 0, 0), poly_C.index(0, 0, 0, 0), ], + claimed_vars_at_ry, ) } @@ -523,8 +518,10 @@ impl SumcheckInstanceProof { transcript: &mut Transcript, ) -> (Self, Vec, Vec) where - F: Fn(&S, &S, &S, &S) -> S, + F: Fn(&S, &S, &S, &S) -> S + std::marker::Sync, { + let ZERO = S::field_zero(); + // Note: num_witness_secs must be 1! // We perform sumcheck in x -> q_rev -> p order, but all polynomials have parameters (p, q, x) // poly_A is the EQ polynomial of size P * Q_max * X @@ -555,14 +552,10 @@ impl SumcheckInstanceProof { println!("\nNEW INSTANCE"); let mut expected = ZERO; for p in 0..min(instance_len, num_proofs.len()) { - let step_q = proof_len / num_proofs[p]; - let step_x = cons_len / num_cons[p]; - for q_rev in 0..num_proofs[p] { - for x_rev in 0..num_cons[p] { - let val = poly_Ap[p] * poly_Aq[q_rev * step_q] * poly_Ax[x_rev * step_x] * (poly_B.index(p, q_rev, 0, x_rev) * poly_C.index(p, q_rev, 0, x_rev) - poly_D.index(p, q_rev, 0, x_rev)); - let q = rev_bits(q_rev * step_q, proof_len); - let x = rev_bits(x_rev * step_x, cons_len); - if val != ZERO { println!("p: {}, q: {}, x: {}, val: {:?}", p, q, x, val); } + for q in 0..num_proofs[p] { + for x in 0..num_cons[p] { + let val = poly_Ap[p] * poly_Aq[q] * poly_Ax[x] * (poly_B.index(p, q, 0, x) * poly_C.index(p, q, 0, x) - poly_D.index(p, q, 0, x)); + // if val != ZERO { println!("p: {}, q: {}, x: {}, val: {:?}", p, q, x, val); } expected += val; } } @@ -577,113 +570,168 @@ impl SumcheckInstanceProof { // Mode = 2 ==> q // Mode = 4 ==> x let mode = if j < num_rounds_x_max { + cons_len = cons_len.div_ceil(2); MODE_X } else if j < num_rounds_x_max + num_rounds_q_max { + proof_len = proof_len.div_ceil(2); MODE_Q } else { + instance_len = instance_len.div_ceil(2); MODE_P }; - if cons_len > 1 { - cons_len /= 2 - } else if proof_len > 1 { - proof_len /= 2 - } else { - instance_len /= 2 - }; - let poly = { - let mut eval_point_0 = S::field_zero(); - let mut eval_point_2 = S::field_zero(); - let mut eval_point_3 = S::field_zero(); - - // We are guaranteed initially instance_len < num_proofs.len() < instance_len x 2 - // So min(instance_len, num_proofs.len()) suffices - for p in 0..min(instance_len, num_proofs.len()) { - if mode == MODE_X && num_cons[p] > 1 { - num_cons[p] /= 2; - } - // If q > num_proofs[p], the polynomials always evaluate to 0 - if mode == MODE_Q && num_proofs[p] > 1 { - num_proofs[p] /= 2; + if mode == MODE_X { + // Multicore evaluation in MODE_X + let mut eval_point_0 = ZERO; + let mut eval_point_2 = ZERO; + let mut eval_point_3 = ZERO; + + // We are guaranteed initially instance_len < num_proofs.len() < instance_len x 2 + // So min(instance_len, num_proofs.len()) suffices + for p in 0..min(instance_len, num_proofs.len()) { + num_cons[p] = num_cons[p].div_ceil(2); + (eval_point_0, eval_point_2, eval_point_3) = (0..num_proofs[p]).into_par_iter().map(|q| { + let mut eval_point_0 = ZERO; + let mut eval_point_2 = ZERO; + let mut eval_point_3 = ZERO; + for x in 0..num_cons[p] { + // evaluate A, B, C, D on p, q, x + let poly_A_low = poly_Ap[p] * poly_Aq[q] * poly_Ax[2 * x]; + let poly_A_high = poly_Ap[p] * poly_Aq[q] * poly_Ax[2 * x + 1]; + let poly_B_low = poly_B.index_low(p, q, 0, x, mode); + let poly_B_high = poly_B.index_high(p, q, 0, x, mode); + let poly_C_low = poly_C.index_low(p, q, 0, x, mode); + let poly_C_high = poly_C.index_high(p, q, 0, x, mode); + let poly_D_low = poly_D.index_low(p, q, 0, x, mode); + let poly_D_high = poly_D.index_high(p, q, 0, x, mode); + + // eval 0: bound_func is A(low) + eval_point_0 = eval_point_0 + + comb_func( + &poly_A_low, + &poly_B_low, + &poly_C_low, + &poly_D_low, + ); // Az[x, x, x, ..., 0] + + // eval 2: bound_func is -A(low) + 2*A(high) + let poly_A_bound_point = poly_A_high + poly_A_high - poly_A_low; + let poly_B_bound_point = poly_B_high + poly_B_high - poly_B_low; + let poly_C_bound_point = poly_C_high + poly_C_high - poly_C_low; + let poly_D_bound_point = poly_D_high + poly_D_high - poly_D_low; + eval_point_2 = eval_point_2 + + comb_func( + &poly_A_bound_point, + &poly_B_bound_point, + &poly_C_bound_point, + &poly_D_bound_point, + ); // Az[x, x, ..., 2] + + // eval 3: bound_func is -2A(low) + 3A(high); computed incrementally with bound_func applied to eval(2) + let poly_A_bound_point = poly_A_bound_point + poly_A_high - poly_A_low; + let poly_B_bound_point = poly_B_bound_point + poly_B_high - poly_B_low; + let poly_C_bound_point = poly_C_bound_point + poly_C_high - poly_C_low; + let poly_D_bound_point = poly_D_bound_point + poly_D_high - poly_D_low; + eval_point_3 = eval_point_3 + + comb_func( + &poly_A_bound_point, + &poly_B_bound_point, + &poly_C_bound_point, + &poly_D_bound_point, + ); // Az[x, x, ..., 3] + } + (eval_point_0, eval_point_2, eval_point_3) + }).collect::>().into_iter().fold((eval_point_0, eval_point_2, eval_point_3), |(e0, e2, e3), (a0, a2, a3)| (e0 + a0, e2 + a2, e3 + a3)); } - for q in 0..num_proofs[p] { - let step_q = proof_len / num_proofs[p]; - let step_x = cons_len / num_cons[p]; - for x in 0..num_cons[p] { - // evaluate Ap, Aq, Ax on p, q, x - let poly_A_index_p_q_x = poly_Ap[p] * poly_Aq[q * step_q] * poly_Ax[x * step_x]; - - // evaluate Ap, Aq, Ax on p_high, q_high, x_high - let poly_A_index_high_p_q_x = match mode { - MODE_P => poly_Ap[p + instance_len] * poly_Aq[q * step_q] * poly_Ax[x * step_x], - MODE_Q => poly_Ap[p] * poly_Aq[q * step_q + proof_len] * poly_Ax[x * step_x], - MODE_X => poly_Ap[p] * poly_Aq[q * step_q] * poly_Ax[x * step_x + cons_len], - _ => { - panic!( - "DensePolynomialPqx bound failed: unrecognized mode {}!", - mode - ); - } - }; - - // eval 0: bound_func is A(low) - eval_point_0 = eval_point_0 - + comb_func( - &poly_A_index_p_q_x, - &poly_B.index(p, q, 0, x), - &poly_C.index(p, q, 0, x), - &poly_D.index(p, q, 0, x), - ); // Az[0, x, x, x, ...] - - // eval 2: bound_func is -A(low) + 2*A(high) - let poly_A_bound_point = - poly_A_index_high_p_q_x + poly_A_index_high_p_q_x - poly_A_index_p_q_x; - let poly_B_bound_point = poly_B.index_high(p, q, 0, x, mode) - + poly_B.index_high(p, q, 0, x, mode) - - poly_B.index(p, q, 0, x); // Az[2, x, x, ...] - let poly_C_bound_point = poly_C.index_high(p, q, 0, x, mode) - + poly_C.index_high(p, q, 0, x, mode) - - poly_C.index(p, q, 0, x); - let poly_D_bound_point = poly_D.index_high(p, q, 0, x, mode) - + poly_D.index_high(p, q, 0, x, mode) - - poly_D.index(p, q, 0, x); - eval_point_2 = eval_point_2 - + comb_func( - &poly_A_bound_point, - &poly_B_bound_point, - &poly_C_bound_point, - &poly_D_bound_point, - ); - // eval 3: bound_func is -2A(low) + 3A(high); computed incrementally with bound_func applied to eval(2) - let poly_A_bound_point = - poly_A_bound_point + poly_A_index_high_p_q_x - poly_A_index_p_q_x; - let poly_B_bound_point = - poly_B_bound_point + poly_B.index_high(p, q, 0, x, mode) - poly_B.index(p, q, 0, x); // Az[3, x, x, ...] - let poly_C_bound_point = - poly_C_bound_point + poly_C.index_high(p, q, 0, x, mode) - poly_C.index(p, q, 0, x); - let poly_D_bound_point = - poly_D_bound_point + poly_D.index_high(p, q, 0, x, mode) - poly_D.index(p, q, 0, x); - eval_point_3 = eval_point_3 - + comb_func( - &poly_A_bound_point, - &poly_B_bound_point, - &poly_C_bound_point, - &poly_D_bound_point, - ); + let evals = vec![ + eval_point_0, + claim_per_round - eval_point_0, + eval_point_2, + eval_point_3, + ]; + let poly = UniPoly::from_evals(&evals); + poly + } else { + // Singlecore evaluation in other Modes + let mut eval_point_0 = ZERO; + let mut eval_point_2 = ZERO; + let mut eval_point_3 = ZERO; + + // We are guaranteed initially instance_len < num_proofs.len() < instance_len x 2 + // So min(instance_len, num_proofs.len()) suffices + for p in 0..min(instance_len, num_proofs.len()) { + // If q > num_proofs[p], the polynomials always evaluate to 0 + if mode == MODE_Q { num_proofs[p] = num_proofs[p].div_ceil(2); } + for q in 0..num_proofs[p] { + for x in 0..num_cons[p] { + // evaluate A, B, C, D on p, q, x + let (poly_A_low, poly_A_high) = match mode { + MODE_Q => ( + poly_Ap[p] * poly_Aq[2 * q] * poly_Ax[x], + poly_Ap[p] * poly_Aq[2 * q + 1] * poly_Ax[x], + ), + MODE_P => ( + poly_Ap[2 * p] * poly_Aq[q] * poly_Ax[x], + poly_Ap[2 * p + 1] * poly_Aq[q] * poly_Ax[x], + ), + _ => unreachable!() + }; + let poly_B_low = poly_B.index_low(p, q, 0, x, mode); + let poly_B_high = poly_B.index_high(p, q, 0, x, mode); + let poly_C_low = poly_C.index_low(p, q, 0, x, mode); + let poly_C_high = poly_C.index_high(p, q, 0, x, mode); + let poly_D_low = poly_D.index_low(p, q, 0, x, mode); + let poly_D_high = poly_D.index_high(p, q, 0, x, mode); + + // eval 0: bound_func is A(low) + eval_point_0 = eval_point_0 + + comb_func( + &poly_A_low, + &poly_B_low, + &poly_C_low, + &poly_D_low, + ); // Az[x, x, x, ..., 0] + + // eval 2: bound_func is -A(low) + 2*A(high) + let poly_A_bound_point = poly_A_high + poly_A_high - poly_A_low; + let poly_B_bound_point = poly_B_high + poly_B_high - poly_B_low; + let poly_C_bound_point = poly_C_high + poly_C_high - poly_C_low; + let poly_D_bound_point = poly_D_high + poly_D_high - poly_D_low; + eval_point_2 = eval_point_2 + + comb_func( + &poly_A_bound_point, + &poly_B_bound_point, + &poly_C_bound_point, + &poly_D_bound_point, + ); // Az[x, x, ..., 2] + + // eval 3: bound_func is -2A(low) + 3A(high); computed incrementally with bound_func applied to eval(2) + let poly_A_bound_point = poly_A_bound_point + poly_A_high - poly_A_low; + let poly_B_bound_point = poly_B_bound_point + poly_B_high - poly_B_low; + let poly_C_bound_point = poly_C_bound_point + poly_C_high - poly_C_low; + let poly_D_bound_point = poly_D_bound_point + poly_D_high - poly_D_low; + eval_point_3 = eval_point_3 + + comb_func( + &poly_A_bound_point, + &poly_B_bound_point, + &poly_C_bound_point, + &poly_D_bound_point, + ); // Az[x, x, ..., 3] + } } } - } - let evals = vec![ - eval_point_0, - claim_per_round - eval_point_0, - eval_point_2, - eval_point_3, - ]; - let poly = UniPoly::from_evals(&evals); - poly + let evals = vec![ + eval_point_0, + claim_per_round - eval_point_0, + eval_point_2, + eval_point_3, + ]; + let poly = UniPoly::from_evals(&evals); + poly + } }; // append the prover's message to the transcript @@ -694,12 +742,14 @@ impl SumcheckInstanceProof { r.push(r_j); // bound all tables to the verifier's challenege - if mode == 1 { - poly_Ap.bound_poly_var_top(&r_j); - } else if mode == 2 { - poly_Aq.bound_poly_var_top(&r_j); + if mode == MODE_X { + poly_Ax.bound_poly_var_bot(&r_j); + } else if mode == MODE_Q { + poly_Aq.bound_poly_var_bot(&r_j); + } else if mode == MODE_P { + poly_Ap.bound_poly_var_bot(&r_j); } else { - poly_Ax.bound_poly_var_top(&r_j); + unreachable!() } poly_B.bound_poly(&r_j, mode); poly_C.bound_poly(&r_j, mode); diff --git a/spartan_parallel/writeups/proofs_overview.md b/spartan_parallel/writeups/proofs_overview.md index 87cd9951..a8df21c3 100644 --- a/spartan_parallel/writeups/proofs_overview.md +++ b/spartan_parallel/writeups/proofs_overview.md @@ -1,7 +1,7 @@ | Proofs | W0 | W1 | w2 | W3 | W4 | W5 | |--------|----|----|----|----|----|----| -| BLOCK_CORRECTNESS | block_vars | perm_w0 | block_input_w2 | block_w2 | block_w3 | block_shifted_w3 | +| BLOCK_CORRECTNESS | block_vars | block_w2 | perm_w0 | block_w3 | block_shifted_w3 | | CONSIS_CHECK | perm_exec_w3 | perm_exec_w3_shifted | | PHY_MEM_COHERE | addr_phy_mems | addr_phy_mems_shifted | -| VIR_MEM_COHERE | addr_vir_mems | addr_vir_mems_shifted | addr_ts_bits | -| PERM_ROOT | perm_w0 | perm_root_w2 | perm_root_w3 | perm_root_shifted_w3 | +| VIR_MEM_COHERE | addr_ts_bits | addr_vir_mems | addr_vir_mems_shifted | +| PERM_ROOT | perm_w0 | perm_root_w2 | perm_root_w3 | perm_root_shifted_w3 | \ No newline at end of file diff --git a/test_poseidon.sh b/test_poseidon.sh new file mode 100755 index 00000000..84313fe2 --- /dev/null +++ b/test_poseidon.sh @@ -0,0 +1,4 @@ +#!/bin/bash +echo "const u32 REPETITION = $1" > zok_tests/benchmarks/poseidon_test/poseidon_const.zok && +cd circ_blocks && +target/release/examples/zxc poseidon_test/poseidon_struct \ No newline at end of file diff --git a/zok_tests/benchmarks/poseidon_test/poseidon_array.zok b/zok_tests/benchmarks/poseidon_test/poseidon_array.zok new file mode 100644 index 00000000..a1f09307 --- /dev/null +++ b/zok_tests/benchmarks/poseidon_test/poseidon_array.zok @@ -0,0 +1,1649 @@ +from "poseidon_const" import REPETITION + +struct Digest { + field[4] elements +} + +def poseidon(field[12] input) -> field[12]: + field state0 = input[0] + field state1 = input[1] + field state2 = input[2] + field state3 = input[3] + field state4 = input[4] + field state5 = input[5] + field state6 = input[6] + field state7 = input[7] + field state8 = input[8] + field state9 = input[9] + field state10 = input[10] + field state11 = input[11] + + field c0 = 13080132714287612933 + field c1 = 8594738767457295063 + field c2 = 12896916465481390516 + field c3 = 1109962092811921367 + field c4 = 16216730422861946898 + field c5 = 10137062673499593713 + field c6 = 15292064466732465823 + field c7 = 17255573294985989181 + field c8 = 14827154241873003558 + field c9 = 2846171647972703231 + field c10 = 16246264663680317601 + field c11 = 14214208087951879286 + field c12 = 9667108687426275457 + field c13 = 6470857420712283733 + field c14 = 14103331940138337652 + field c15 = 11854816473550292865 + field c16 = 3498097497301325516 + field c17 = 7947235692523864220 + field c18 = 11110078701231901946 + field c19 = 16384314112672821048 + field c20 = 15404405912655775739 + field c21 = 14077880830714445579 + field c22 = 9555554662709218279 + field c23 = 13859595358210603949 + field c24 = 16859897325061800066 + field c25 = 17685474420222222349 + field c26 = 17858764734618734949 + field c27 = 9410011022665866671 + field c28 = 12495243629579414666 + field c29 = 12416945298171515742 + field c30 = 5776666812364270983 + field c31 = 6314421662864060481 + field c32 = 7402742471423223171 + field c33 = 982536713192432718 + field c34 = 17321168865775127905 + field c35 = 2934354895005980211 + field c36 = 10567510598607410195 + field c37 = 8135543733717919110 + field c38 = 116353493081713692 + field c39 = 8029688163494945618 + field c40 = 9003846637224807585 + field c41 = 7052445132467233849 + field c42 = 9645665432288852853 + field c43 = 5446430061030868787 + field c44 = 16770910634346036823 + field c45 = 17708360571433944729 + field c46 = 4661556288322237631 + field c47 = 11977051899316327985 + field c48 = 4378616569090929672 + field c49 = 3334807502817538491 + field c50 = 8019184735943344966 + field c51 = 2395043908812246395 + field c52 = 6558421058331732611 + field c53 = 11735894060727326369 + field c54 = 8143540538889204488 + field c55 = 5991753489563751169 + field c56 = 12235918791502088007 + field c57 = 2880312033702687139 + field c58 = 18224748115308382355 + field c59 = 18070411013125314165 + field c60 = 8156487614120951180 + field c61 = 10615269510047010719 + field c62 = 12489426404754222075 + field c63 = 5055279340069995710 + field c64 = 7231927319780248664 + field c65 = 2602078848106763799 + field c66 = 12445944369334781425 + field c67 = 3978905923892496205 + field c68 = 16711272944329818038 + field c69 = 10439032361227108922 + field c70 = 15110119871725214866 + field c71 = 821141790655890946 + field c72 = 11073536380651186235 + field c73 = 4866839313097607757 + field c74 = 13118391689513956636 + field c75 = 14527674973762312380 + field c76 = 7612751959265567999 + field c77 = 6808090907814178161 + field c78 = 6899703779492644997 + field c79 = 3664666286336986826 + field c80 = 783179505424462608 + field c81 = 8990689241814097697 + field c82 = 9646603555412825679 + field c83 = 7351246026167205041 + field c84 = 16970959813722173256 + field c85 = 15735726858241466429 + field c86 = 10347018221892268419 + field c87 = 12195545878449322889 + field c88 = 7423314197114049891 + field c89 = 14908016116973904153 + field c90 = 5840340122527363265 + field c91 = 17740311462440614128 + field c92 = 815306421953744623 + field c93 = 17456357368219253949 + field c94 = 6982651076559329072 + field c95 = 11970987324614963868 + field c96 = 8167785008538063246 + field c97 = 9483259819397403968 + field c98 = 954550221664291548 + field c99 = 10339565171024313256 + field c100 = 8651171084286500102 + field c101 = 16974445528003515956 + field c102 = 15104530047940621190 + field c103 = 103271880867179718 + field c104 = 14654666245504492663 + field c105 = 12445769555936887967 + field c106 = 11250582358051997490 + field c107 = 6730977207490590241 + field c108 = 15919951556166196935 + field c109 = 4423540216573360915 + field c110 = 16317664700341473511 + field c111 = 4723997214951767765 + field c112 = 10098756619006575500 + field c113 = 3223149401237667964 + field c114 = 6870494874300767682 + field c115 = 2902095711130291898 + field c116 = 7159372652788439733 + field c117 = 11500508372997952671 + field c118 = 13348148181479462670 + field c119 = 12729401155983882093 + field c120 = 15021242795466053388 + field c121 = 3802990509227527157 + field c122 = 4665459515680145682 + field c123 = 13165553315407675603 + field c124 = 6496364397926233172 + field c125 = 12800832566287577810 + field c126 = 9737592377590267426 + field c127 = 8687131091302514939 + field c128 = 1488200421755445892 + field c129 = 11004377668730991641 + field c130 = 13516338734600228410 + field c131 = 2953581820660217936 + field c132 = 3505040783153922951 + field c133 = 3710332827435113697 + field c134 = 15414874040873320221 + field c135 = 8602547649919482301 + field c136 = 13971349938398812007 + field c137 = 187239246702636066 + field c138 = 12886019973971254144 + field c139 = 4512274763990493707 + field c140 = 2986635507805503192 + field c141 = 2315252455709119454 + field c142 = 12537995864054210246 + field c143 = 2039491936479859267 + field c144 = 1558644089185031256 + field c145 = 4074089203264759305 + field c146 = 2522268501749395707 + field c147 = 3414760436185256196 + field c148 = 17420887529146466921 + field c149 = 2817020417938125001 + field c150 = 16538346563888261485 + field c151 = 5592270336833998770 + field c152 = 16876602064684906232 + field c153 = 1793025614521516343 + field c154 = 2178510518148748532 + field c155 = 2726440714374752509 + field c156 = 6502946837278398021 + field c157 = 15816362857667988792 + field c158 = 12997958454165692924 + field c159 = 5314892854495903792 + field c160 = 15533907063555687782 + field c161 = 12312015675698548715 + field c162 = 14140016464013350248 + field c163 = 16325589062962838690 + field c164 = 6796145646370327654 + field c165 = 1168753512742361735 + field c166 = 4100789820704709368 + field c167 = 15947554381540469177 + field c168 = 8597377839806076919 + field c169 = 9704018824195918000 + field c170 = 12763288618765762688 + field c171 = 17249257732622847695 + field c172 = 1998710993415069759 + field c173 = 923759906393011543 + field c174 = 1271051229666811593 + field c175 = 17822362132088738077 + field c176 = 11797234543722669271 + field c177 = 5864538787265942447 + field c178 = 15975583211110506970 + field c179 = 7258516085733671960 + field c180 = 17999926471875633100 + field c181 = 635992114476018166 + field c182 = 17205047318256576347 + field c183 = 17384900867876315312 + field c184 = 16484825562915784226 + field c185 = 16694130609036138894 + field c186 = 10575069350371260875 + field c187 = 8330575162062887277 + field c188 = 6212375704691932880 + field c189 = 15965138197626618226 + field c190 = 14285453069600046939 + field c191 = 10005163510208402517 + field c192 = 885298637936952595 + field c193 = 541790758138118921 + field c194 = 5985203084790372993 + field c195 = 4685030219775483721 + field c196 = 1411106851304815020 + field c197 = 11290732479954096478 + field c198 = 208280581124868513 + field c199 = 10979018648467968495 + field c200 = 8600643745023338215 + field c201 = 3477453626867126061 + field c202 = 6428436309340258604 + field c203 = 5695415667275657934 + field c204 = 15952065508715623490 + field c205 = 15571300830419767248 + field c206 = 17259785660502616862 + field c207 = 4298425495274316083 + field c208 = 9023601070579319352 + field c209 = 7353589709321807492 + field c210 = 2988848909076209475 + field c211 = 10439527789422046135 + field c212 = 6097734044161429459 + field c213 = 1113429873817861476 + field c214 = 1639063372386966591 + field c215 = 7863102812716788759 + field c216 = 216040220732135364 + field c217 = 14252611488623712688 + field c218 = 9543395466794536974 + field c219 = 2714461051639810934 + field c220 = 2588317208781407279 + field c221 = 15458529123534594916 + field c222 = 15748417817551040856 + field c223 = 16414455697114422951 + field c224 = 13378164466674639511 + field c225 = 13894319928411294675 + field c226 = 5032680892090751540 + field c227 = 17201338494743078916 + field c228 = 4397422800601932505 + field c229 = 11285062031581972327 + field c230 = 7309354640676468207 + field c231 = 10457152817239331848 + field c232 = 8855911538863247046 + field c233 = 4301853449821814398 + field c234 = 13001502396339103326 + field c235 = 10218424535115580246 + field c236 = 8628244713920681895 + field c237 = 17410423622514037261 + field c238 = 14080683768439215375 + field c239 = 11453161143447188100 + field c240 = 16761509772042181939 + field c241 = 6688821660695954082 + field c242 = 12083434295263160416 + field c243 = 8540021431714616589 + field c244 = 6891616215679974226 + field c245 = 10229217098454812721 + field c246 = 3292165387203778711 + field c247 = 6090113424998243490 + field c248 = 13431780521962358660 + field c249 = 6061081364215809883 + field c250 = 16792066504222214142 + field c251 = 16134314044798124799 + field c252 = 17070233710126619765 + field c253 = 6915716851370550800 + field c254 = 9505009849073026581 + field c255 = 6422700465081897153 + field c256 = 17977653991560529185 + field c257 = 5800870252836247255 + field c258 = 12096124733159345520 + field c259 = 7679273623392321940 + field c260 = 17835783910585744964 + field c261 = 2478664878205754377 + field c262 = 1720314468413114967 + field c263 = 10376757819003248056 + field c264 = 10376377187857634245 + field c265 = 13344930747504284997 + field c266 = 11579281865160153596 + field c267 = 10300256980048736962 + field c268 = 378765236515040565 + field c269 = 11412420941557253424 + field c270 = 12931662470734252786 + field c271 = 43018908376346374 + field c272 = 3589810689190160071 + field c273 = 4688229274750659741 + field c274 = 13688957436484306091 + field c275 = 11424740943016984272 + field c276 = 16001900718237913960 + field c277 = 5548469743008097574 + field c278 = 14584404916672178680 + field c279 = 3396622135873576824 + field c280 = 7861729246871155992 + field c281 = 16112271126908045545 + field c282 = 16988163966860016012 + field c283 = 273641680619529493 + field c284 = 15222677154027327363 + field c285 = 4070328078309830604 + field c286 = 13520458500363296391 + field c287 = 8235111705801363015 + field c288 = 5575990058472514138 + field c289 = 2751301609188252989 + field c290 = 6478598528223547074 + field c291 = 386565553848556638 + field c292 = 9417729078939938713 + field c293 = 15204315939835727483 + field c294 = 14942015033780606261 + field c295 = 18369423901636582012 + field c296 = 4715338437538604447 + field c297 = 6840590980607806319 + field c298 = 5535471161490539014 + field c299 = 5341328005359029952 + field c300 = 1475161295215894444 + field c301 = 7999197814297036636 + field c302 = 2984233088665867938 + field c303 = 3097746028144832229 + field c304 = 8849530863480031517 + field c305 = 7464920943249009773 + field c306 = 3802996844641460514 + field c307 = 6284458522545927646 + field c308 = 2307388003445002779 + field c309 = 4461479354745457623 + field c310 = 1649739722664588460 + field c311 = 3008391274160432867 + field c312 = 5142217010456550622 + field c313 = 1775580461722730120 + field c314 = 161694268822794344 + field c315 = 1518963253808031703 + field c316 = 16475258091652710137 + field c317 = 119575899007375159 + field c318 = 1275863735937973999 + field c319 = 16539412514520642374 + field c320 = 2303365191438051950 + field c321 = 6435126839960916075 + field c322 = 17794599201026020053 + field c323 = 13847097589277840330 + field c324 = 16645869274577729720 + field c325 = 8039205965509554440 + field c326 = 4788586935019371140 + field c327 = 15129007200040077746 + field c328 = 2055561615223771341 + field c329 = 4149731103701412892 + field c330 = 10268130195734144189 + field c331 = 13406631635880074708 + field c332 = 11429218277824986203 + field c333 = 15773968030812198565 + field c334 = 16050275277550506872 + field c335 = 11858586752031736643 + field c336 = 8927746344866569756 + field c337 = 11802068403177695792 + field c338 = 157833420806751556 + field c339 = 4698875910749767878 + field c340 = 1616722774788291698 + field c341 = 3990951895163748090 + field c342 = 16758609224720795472 + field c343 = 3045571693290741477 + field c344 = 9281634245289836419 + field c345 = 13517688176723875370 + field c346 = 7961395585333219380 + field c347 = 1606574359105691080 + field c348 = 17564372683613562171 + field c349 = 4664015225343144418 + field c350 = 6133721340680280128 + field c351 = 2667022304383014929 + field c352 = 12316557761857340230 + field c353 = 10375614850625292317 + field c354 = 8141542666379135068 + field c355 = 9185476451083834432 + field c356 = 4991072365274649547 + field c357 = 17398204971778820365 + field c358 = 16127888338958422584 + field c359 = 13586792051317758204 + + field mc0 = 17 + field mc1 = 15 + field mc2 = 41 + field mc3 = 16 + field mc4 = 2 + field mc5 = 28 + field mc6 = 13 + field mc7 = 13 + field mc8 = 39 + field mc9 = 18 + field mc10 = 34 + field mc11 = 20 + field md0 = 8 + field md1 = 0 + field md2 = 0 + field md3 = 0 + field md4 = 0 + field md5 = 0 + field md6 = 0 + field md7 = 0 + field md8 = 0 + field md9 = 0 + field md10 = 0 + field md11 = 0 + + // -- + // r = 0 + // ark + state0 = state0 + c0 + state1 = state1 + c1 + state2 = state2 + c2 + state3 = state3 + c3 + state4 = state4 + c4 + state5 = state5 + c5 + state6 = state6 + c6 + state7 = state7 + c7 + state8 = state8 + c8 + state9 = state9 + c9 + state10 = state10 + c10 + state11 = state11 + c11 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 ** 7 + field new_state2 = state2 ** 7 + field new_state3 = state3 ** 7 + field new_state4 = state4 ** 7 + field new_state5 = state5 ** 7 + field new_state6 = state6 ** 7 + field new_state7 = state7 ** 7 + field new_state8 = state8 ** 7 + field new_state9 = state9 ** 7 + field new_state10 = state10 ** 7 + field new_state11 = state11 ** 7 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 1 + // ark + state0 = state0 + c12 + state1 = state1 + c13 + state2 = state2 + c14 + state3 = state3 + c15 + state4 = state4 + c16 + state5 = state5 + c17 + state6 = state6 + c18 + state7 = state7 + c19 + state8 = state8 + c20 + state9 = state9 + c21 + state10 = state10 + c22 + state11 = state11 + c23 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 ** 7 + field new_state2 = state2 ** 7 + field new_state3 = state3 ** 7 + field new_state4 = state4 ** 7 + field new_state5 = state5 ** 7 + field new_state6 = state6 ** 7 + field new_state7 = state7 ** 7 + field new_state8 = state8 ** 7 + field new_state9 = state9 ** 7 + field new_state10 = state10 ** 7 + field new_state11 = state11 ** 7 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 2 + // ark + state0 = state0 + c24 + state1 = state1 + c25 + state2 = state2 + c26 + state3 = state3 + c27 + state4 = state4 + c28 + state5 = state5 + c29 + state6 = state6 + c30 + state7 = state7 + c31 + state8 = state8 + c32 + state9 = state9 + c33 + state10 = state10 + c34 + state11 = state11 + c35 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 ** 7 + field new_state2 = state2 ** 7 + field new_state3 = state3 ** 7 + field new_state4 = state4 ** 7 + field new_state5 = state5 ** 7 + field new_state6 = state6 ** 7 + field new_state7 = state7 ** 7 + field new_state8 = state8 ** 7 + field new_state9 = state9 ** 7 + field new_state10 = state10 ** 7 + field new_state11 = state11 ** 7 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 3 + // ark + state0 = state0 + c36 + state1 = state1 + c37 + state2 = state2 + c38 + state3 = state3 + c39 + state4 = state4 + c40 + state5 = state5 + c41 + state6 = state6 + c42 + state7 = state7 + c43 + state8 = state8 + c44 + state9 = state9 + c45 + state10 = state10 + c46 + state11 = state11 + c47 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 ** 7 + field new_state2 = state2 ** 7 + field new_state3 = state3 ** 7 + field new_state4 = state4 ** 7 + field new_state5 = state5 ** 7 + field new_state6 = state6 ** 7 + field new_state7 = state7 ** 7 + field new_state8 = state8 ** 7 + field new_state9 = state9 ** 7 + field new_state10 = state10 ** 7 + field new_state11 = state11 ** 7 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 4 + // ark + state0 = state0 + c48 + state1 = state1 + c49 + state2 = state2 + c50 + state3 = state3 + c51 + state4 = state4 + c52 + state5 = state5 + c53 + state6 = state6 + c54 + state7 = state7 + c55 + state8 = state8 + c56 + state9 = state9 + c57 + state10 = state10 + c58 + state11 = state11 + c59 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 + field new_state2 = state2 + field new_state3 = state3 + field new_state4 = state4 + field new_state5 = state5 + field new_state6 = state6 + field new_state7 = state7 + field new_state8 = state8 + field new_state9 = state9 + field new_state10 = state10 + field new_state11 = state11 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 5 + // ark + state0 = state0 + c60 + state1 = state1 + c61 + state2 = state2 + c62 + state3 = state3 + c63 + state4 = state4 + c64 + state5 = state5 + c65 + state6 = state6 + c66 + state7 = state7 + c67 + state8 = state8 + c68 + state9 = state9 + c69 + state10 = state10 + c70 + state11 = state11 + c71 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 + field new_state2 = state2 + field new_state3 = state3 + field new_state4 = state4 + field new_state5 = state5 + field new_state6 = state6 + field new_state7 = state7 + field new_state8 = state8 + field new_state9 = state9 + field new_state10 = state10 + field new_state11 = state11 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 6 + // ark + state0 = state0 + c72 + state1 = state1 + c73 + state2 = state2 + c74 + state3 = state3 + c75 + state4 = state4 + c76 + state5 = state5 + c77 + state6 = state6 + c78 + state7 = state7 + c79 + state8 = state8 + c80 + state9 = state9 + c81 + state10 = state10 + c82 + state11 = state11 + c83 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 + field new_state2 = state2 + field new_state3 = state3 + field new_state4 = state4 + field new_state5 = state5 + field new_state6 = state6 + field new_state7 = state7 + field new_state8 = state8 + field new_state9 = state9 + field new_state10 = state10 + field new_state11 = state11 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 7 + // ark + state0 = state0 + c84 + state1 = state1 + c85 + state2 = state2 + c86 + state3 = state3 + c87 + state4 = state4 + c88 + state5 = state5 + c89 + state6 = state6 + c90 + state7 = state7 + c91 + state8 = state8 + c92 + state9 = state9 + c93 + state10 = state10 + c94 + state11 = state11 + c95 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 + field new_state2 = state2 + field new_state3 = state3 + field new_state4 = state4 + field new_state5 = state5 + field new_state6 = state6 + field new_state7 = state7 + field new_state8 = state8 + field new_state9 = state9 + field new_state10 = state10 + field new_state11 = state11 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 8 + // ark + state0 = state0 + c96 + state1 = state1 + c97 + state2 = state2 + c98 + state3 = state3 + c99 + state4 = state4 + c100 + state5 = state5 + c101 + state6 = state6 + c102 + state7 = state7 + c103 + state8 = state8 + c104 + state9 = state9 + c105 + state10 = state10 + c106 + state11 = state11 + c107 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 + field new_state2 = state2 + field new_state3 = state3 + field new_state4 = state4 + field new_state5 = state5 + field new_state6 = state6 + field new_state7 = state7 + field new_state8 = state8 + field new_state9 = state9 + field new_state10 = state10 + field new_state11 = state11 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 9 + // ark + state0 = state0 + c108 + state1 = state1 + c109 + state2 = state2 + c110 + state3 = state3 + c111 + state4 = state4 + c112 + state5 = state5 + c113 + state6 = state6 + c114 + state7 = state7 + c115 + state8 = state8 + c116 + state9 = state9 + c117 + state10 = state10 + c118 + state11 = state11 + c119 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 + field new_state2 = state2 + field new_state3 = state3 + field new_state4 = state4 + field new_state5 = state5 + field new_state6 = state6 + field new_state7 = state7 + field new_state8 = state8 + field new_state9 = state9 + field new_state10 = state10 + field new_state11 = state11 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 10 + // ark + state0 = state0 + c120 + state1 = state1 + c121 + state2 = state2 + c122 + state3 = state3 + c123 + state4 = state4 + c124 + state5 = state5 + c125 + state6 = state6 + c126 + state7 = state7 + c127 + state8 = state8 + c128 + state9 = state9 + c129 + state10 = state10 + c130 + state11 = state11 + c131 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 + field new_state2 = state2 + field new_state3 = state3 + field new_state4 = state4 + field new_state5 = state5 + field new_state6 = state6 + field new_state7 = state7 + field new_state8 = state8 + field new_state9 = state9 + field new_state10 = state10 + field new_state11 = state11 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 11 + // ark + state0 = state0 + c132 + state1 = state1 + c133 + state2 = state2 + c134 + state3 = state3 + c135 + state4 = state4 + c136 + state5 = state5 + c137 + state6 = state6 + c138 + state7 = state7 + c139 + state8 = state8 + c140 + state9 = state9 + c141 + state10 = state10 + c142 + state11 = state11 + c143 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 + field new_state2 = state2 + field new_state3 = state3 + field new_state4 = state4 + field new_state5 = state5 + field new_state6 = state6 + field new_state7 = state7 + field new_state8 = state8 + field new_state9 = state9 + field new_state10 = state10 + field new_state11 = state11 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 12 + // ark + state0 = state0 + c144 + state1 = state1 + c145 + state2 = state2 + c146 + state3 = state3 + c147 + state4 = state4 + c148 + state5 = state5 + c149 + state6 = state6 + c150 + state7 = state7 + c151 + state8 = state8 + c152 + state9 = state9 + c153 + state10 = state10 + c154 + state11 = state11 + c155 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 + field new_state2 = state2 + field new_state3 = state3 + field new_state4 = state4 + field new_state5 = state5 + field new_state6 = state6 + field new_state7 = state7 + field new_state8 = state8 + field new_state9 = state9 + field new_state10 = state10 + field new_state11 = state11 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 13 + // ark + state0 = state0 + c156 + state1 = state1 + c157 + state2 = state2 + c158 + state3 = state3 + c159 + state4 = state4 + c160 + state5 = state5 + c161 + state6 = state6 + c162 + state7 = state7 + c163 + state8 = state8 + c164 + state9 = state9 + c165 + state10 = state10 + c166 + state11 = state11 + c167 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 + field new_state2 = state2 + field new_state3 = state3 + field new_state4 = state4 + field new_state5 = state5 + field new_state6 = state6 + field new_state7 = state7 + field new_state8 = state8 + field new_state9 = state9 + field new_state10 = state10 + field new_state11 = state11 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 14 + // ark + state0 = state0 + c168 + state1 = state1 + c169 + state2 = state2 + c170 + state3 = state3 + c171 + state4 = state4 + c172 + state5 = state5 + c173 + state6 = state6 + c174 + state7 = state7 + c175 + state8 = state8 + c176 + state9 = state9 + c177 + state10 = state10 + c178 + state11 = state11 + c179 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 + field new_state2 = state2 + field new_state3 = state3 + field new_state4 = state4 + field new_state5 = state5 + field new_state6 = state6 + field new_state7 = state7 + field new_state8 = state8 + field new_state9 = state9 + field new_state10 = state10 + field new_state11 = state11 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 15 + // ark + state0 = state0 + c180 + state1 = state1 + c181 + state2 = state2 + c182 + state3 = state3 + c183 + state4 = state4 + c184 + state5 = state5 + c185 + state6 = state6 + c186 + state7 = state7 + c187 + state8 = state8 + c188 + state9 = state9 + c189 + state10 = state10 + c190 + state11 = state11 + c191 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 + field new_state2 = state2 + field new_state3 = state3 + field new_state4 = state4 + field new_state5 = state5 + field new_state6 = state6 + field new_state7 = state7 + field new_state8 = state8 + field new_state9 = state9 + field new_state10 = state10 + field new_state11 = state11 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 16 + // ark + state0 = state0 + c192 + state1 = state1 + c193 + state2 = state2 + c194 + state3 = state3 + c195 + state4 = state4 + c196 + state5 = state5 + c197 + state6 = state6 + c198 + state7 = state7 + c199 + state8 = state8 + c200 + state9 = state9 + c201 + state10 = state10 + c202 + state11 = state11 + c203 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 + field new_state2 = state2 + field new_state3 = state3 + field new_state4 = state4 + field new_state5 = state5 + field new_state6 = state6 + field new_state7 = state7 + field new_state8 = state8 + field new_state9 = state9 + field new_state10 = state10 + field new_state11 = state11 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 17 + // ark + state0 = state0 + c204 + state1 = state1 + c205 + state2 = state2 + c206 + state3 = state3 + c207 + state4 = state4 + c208 + state5 = state5 + c209 + state6 = state6 + c210 + state7 = state7 + c211 + state8 = state8 + c212 + state9 = state9 + c213 + state10 = state10 + c214 + state11 = state11 + c215 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 + field new_state2 = state2 + field new_state3 = state3 + field new_state4 = state4 + field new_state5 = state5 + field new_state6 = state6 + field new_state7 = state7 + field new_state8 = state8 + field new_state9 = state9 + field new_state10 = state10 + field new_state11 = state11 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 18 + // ark + state0 = state0 + c216 + state1 = state1 + c217 + state2 = state2 + c218 + state3 = state3 + c219 + state4 = state4 + c220 + state5 = state5 + c221 + state6 = state6 + c222 + state7 = state7 + c223 + state8 = state8 + c224 + state9 = state9 + c225 + state10 = state10 + c226 + state11 = state11 + c227 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 + field new_state2 = state2 + field new_state3 = state3 + field new_state4 = state4 + field new_state5 = state5 + field new_state6 = state6 + field new_state7 = state7 + field new_state8 = state8 + field new_state9 = state9 + field new_state10 = state10 + field new_state11 = state11 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 19 + // ark + state0 = state0 + c228 + state1 = state1 + c229 + state2 = state2 + c230 + state3 = state3 + c231 + state4 = state4 + c232 + state5 = state5 + c233 + state6 = state6 + c234 + state7 = state7 + c235 + state8 = state8 + c236 + state9 = state9 + c237 + state10 = state10 + c238 + state11 = state11 + c239 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 + field new_state2 = state2 + field new_state3 = state3 + field new_state4 = state4 + field new_state5 = state5 + field new_state6 = state6 + field new_state7 = state7 + field new_state8 = state8 + field new_state9 = state9 + field new_state10 = state10 + field new_state11 = state11 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 20 + // ark + state0 = state0 + c240 + state1 = state1 + c241 + state2 = state2 + c242 + state3 = state3 + c243 + state4 = state4 + c244 + state5 = state5 + c245 + state6 = state6 + c246 + state7 = state7 + c247 + state8 = state8 + c248 + state9 = state9 + c249 + state10 = state10 + c250 + state11 = state11 + c251 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 + field new_state2 = state2 + field new_state3 = state3 + field new_state4 = state4 + field new_state5 = state5 + field new_state6 = state6 + field new_state7 = state7 + field new_state8 = state8 + field new_state9 = state9 + field new_state10 = state10 + field new_state11 = state11 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 21 + // ark + state0 = state0 + c252 + state1 = state1 + c253 + state2 = state2 + c254 + state3 = state3 + c255 + state4 = state4 + c256 + state5 = state5 + c257 + state6 = state6 + c258 + state7 = state7 + c259 + state8 = state8 + c260 + state9 = state9 + c261 + state10 = state10 + c262 + state11 = state11 + c263 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 + field new_state2 = state2 + field new_state3 = state3 + field new_state4 = state4 + field new_state5 = state5 + field new_state6 = state6 + field new_state7 = state7 + field new_state8 = state8 + field new_state9 = state9 + field new_state10 = state10 + field new_state11 = state11 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 22 + // ark + state0 = state0 + c264 + state1 = state1 + c265 + state2 = state2 + c266 + state3 = state3 + c267 + state4 = state4 + c268 + state5 = state5 + c269 + state6 = state6 + c270 + state7 = state7 + c271 + state8 = state8 + c272 + state9 = state9 + c273 + state10 = state10 + c274 + state11 = state11 + c275 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 + field new_state2 = state2 + field new_state3 = state3 + field new_state4 = state4 + field new_state5 = state5 + field new_state6 = state6 + field new_state7 = state7 + field new_state8 = state8 + field new_state9 = state9 + field new_state10 = state10 + field new_state11 = state11 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 23 + // ark + state0 = state0 + c276 + state1 = state1 + c277 + state2 = state2 + c278 + state3 = state3 + c279 + state4 = state4 + c280 + state5 = state5 + c281 + state6 = state6 + c282 + state7 = state7 + c283 + state8 = state8 + c284 + state9 = state9 + c285 + state10 = state10 + c286 + state11 = state11 + c287 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 + field new_state2 = state2 + field new_state3 = state3 + field new_state4 = state4 + field new_state5 = state5 + field new_state6 = state6 + field new_state7 = state7 + field new_state8 = state8 + field new_state9 = state9 + field new_state10 = state10 + field new_state11 = state11 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 24 + // ark + state0 = state0 + c288 + state1 = state1 + c289 + state2 = state2 + c290 + state3 = state3 + c291 + state4 = state4 + c292 + state5 = state5 + c293 + state6 = state6 + c294 + state7 = state7 + c295 + state8 = state8 + c296 + state9 = state9 + c297 + state10 = state10 + c298 + state11 = state11 + c299 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 + field new_state2 = state2 + field new_state3 = state3 + field new_state4 = state4 + field new_state5 = state5 + field new_state6 = state6 + field new_state7 = state7 + field new_state8 = state8 + field new_state9 = state9 + field new_state10 = state10 + field new_state11 = state11 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 25 + // ark + state0 = state0 + c300 + state1 = state1 + c301 + state2 = state2 + c302 + state3 = state3 + c303 + state4 = state4 + c304 + state5 = state5 + c305 + state6 = state6 + c306 + state7 = state7 + c307 + state8 = state8 + c308 + state9 = state9 + c309 + state10 = state10 + c310 + state11 = state11 + c311 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 + field new_state2 = state2 + field new_state3 = state3 + field new_state4 = state4 + field new_state5 = state5 + field new_state6 = state6 + field new_state7 = state7 + field new_state8 = state8 + field new_state9 = state9 + field new_state10 = state10 + field new_state11 = state11 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 26 + // ark + state0 = state0 + c312 + state1 = state1 + c313 + state2 = state2 + c314 + state3 = state3 + c315 + state4 = state4 + c316 + state5 = state5 + c317 + state6 = state6 + c318 + state7 = state7 + c319 + state8 = state8 + c320 + state9 = state9 + c321 + state10 = state10 + c322 + state11 = state11 + c323 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 ** 7 + field new_state2 = state2 ** 7 + field new_state3 = state3 ** 7 + field new_state4 = state4 ** 7 + field new_state5 = state5 ** 7 + field new_state6 = state6 ** 7 + field new_state7 = state7 ** 7 + field new_state8 = state8 ** 7 + field new_state9 = state9 ** 7 + field new_state10 = state10 ** 7 + field new_state11 = state11 ** 7 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 27 + // ark + state0 = state0 + c324 + state1 = state1 + c325 + state2 = state2 + c326 + state3 = state3 + c327 + state4 = state4 + c328 + state5 = state5 + c329 + state6 = state6 + c330 + state7 = state7 + c331 + state8 = state8 + c332 + state9 = state9 + c333 + state10 = state10 + c334 + state11 = state11 + c335 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 ** 7 + field new_state2 = state2 ** 7 + field new_state3 = state3 ** 7 + field new_state4 = state4 ** 7 + field new_state5 = state5 ** 7 + field new_state6 = state6 ** 7 + field new_state7 = state7 ** 7 + field new_state8 = state8 ** 7 + field new_state9 = state9 ** 7 + field new_state10 = state10 ** 7 + field new_state11 = state11 ** 7 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 28 + // ark + state0 = state0 + c336 + state1 = state1 + c337 + state2 = state2 + c338 + state3 = state3 + c339 + state4 = state4 + c340 + state5 = state5 + c341 + state6 = state6 + c342 + state7 = state7 + c343 + state8 = state8 + c344 + state9 = state9 + c345 + state10 = state10 + c346 + state11 = state11 + c347 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 ** 7 + field new_state2 = state2 ** 7 + field new_state3 = state3 ** 7 + field new_state4 = state4 ** 7 + field new_state5 = state5 ** 7 + field new_state6 = state6 ** 7 + field new_state7 = state7 ** 7 + field new_state8 = state8 ** 7 + field new_state9 = state9 ** 7 + field new_state10 = state10 ** 7 + field new_state11 = state11 ** 7 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 29 + // ark + state0 = state0 + c348 + state1 = state1 + c349 + state2 = state2 + c350 + state3 = state3 + c351 + state4 = state4 + c352 + state5 = state5 + c353 + state6 = state6 + c354 + state7 = state7 + c355 + state8 = state8 + c356 + state9 = state9 + c357 + state10 = state10 + c358 + state11 = state11 + c359 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 ** 7 + field new_state2 = state2 ** 7 + field new_state3 = state3 ** 7 + field new_state4 = state4 ** 7 + field new_state5 = state5 ** 7 + field new_state6 = state6 ** 7 + field new_state7 = state7 ** 7 + field new_state8 = state8 ** 7 + field new_state9 = state9 ** 7 + field new_state10 = state10 ** 7 + field new_state11 = state11 ** 7 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + return [state0, state1, state2, state3, state4, state5, state6, state7, state8, state9, state10, state11] + +def main() -> field: + field[12] inputs = [1, 2, 3, 4, 5, 6, 7, 8, 0, 0, 0, 0] + field cumulated_hash = 0 + for u32 i in 0..REPETITION do + field[12] hashes = poseidon(inputs) + for u32 j in 0..12 do + cumulated_hash = cumulated_hash + hashes[j] + endfor + endfor + + return cumulated_hash diff --git a/zok_tests/benchmarks/poseidon_test/poseidon_const.zok b/zok_tests/benchmarks/poseidon_test/poseidon_const.zok new file mode 100644 index 00000000..e7ae59fb --- /dev/null +++ b/zok_tests/benchmarks/poseidon_test/poseidon_const.zok @@ -0,0 +1 @@ +const u32 REPETITION = 1000 diff --git a/zok_tests/benchmarks/poseidon_test/poseidon_struct.zok b/zok_tests/benchmarks/poseidon_test/poseidon_struct.zok new file mode 100644 index 00000000..9e3cbe1f --- /dev/null +++ b/zok_tests/benchmarks/poseidon_test/poseidon_struct.zok @@ -0,0 +1,1688 @@ +from "poseidon_const" import REPETITION + +struct Digest { + field[4] elements +} + +struct PoseidonState { + field state0 + field state1 + field state2 + field state3 + field state4 + field state5 + field state6 + field state7 + field state8 + field state9 + field state10 + field state11 +} + +def poseidon(PoseidonState input) -> PoseidonState: + field state0 = input.state0 + field state1 = input.state1 + field state2 = input.state2 + field state3 = input.state3 + field state4 = input.state4 + field state5 = input.state5 + field state6 = input.state6 + field state7 = input.state7 + field state8 = input.state8 + field state9 = input.state9 + field state10 = input.state10 + field state11 = input.state11 + + field c0 = 13080132714287612933 + field c1 = 8594738767457295063 + field c2 = 12896916465481390516 + field c3 = 1109962092811921367 + field c4 = 16216730422861946898 + field c5 = 10137062673499593713 + field c6 = 15292064466732465823 + field c7 = 17255573294985989181 + field c8 = 14827154241873003558 + field c9 = 2846171647972703231 + field c10 = 16246264663680317601 + field c11 = 14214208087951879286 + field c12 = 9667108687426275457 + field c13 = 6470857420712283733 + field c14 = 14103331940138337652 + field c15 = 11854816473550292865 + field c16 = 3498097497301325516 + field c17 = 7947235692523864220 + field c18 = 11110078701231901946 + field c19 = 16384314112672821048 + field c20 = 15404405912655775739 + field c21 = 14077880830714445579 + field c22 = 9555554662709218279 + field c23 = 13859595358210603949 + field c24 = 16859897325061800066 + field c25 = 17685474420222222349 + field c26 = 17858764734618734949 + field c27 = 9410011022665866671 + field c28 = 12495243629579414666 + field c29 = 12416945298171515742 + field c30 = 5776666812364270983 + field c31 = 6314421662864060481 + field c32 = 7402742471423223171 + field c33 = 982536713192432718 + field c34 = 17321168865775127905 + field c35 = 2934354895005980211 + field c36 = 10567510598607410195 + field c37 = 8135543733717919110 + field c38 = 116353493081713692 + field c39 = 8029688163494945618 + field c40 = 9003846637224807585 + field c41 = 7052445132467233849 + field c42 = 9645665432288852853 + field c43 = 5446430061030868787 + field c44 = 16770910634346036823 + field c45 = 17708360571433944729 + field c46 = 4661556288322237631 + field c47 = 11977051899316327985 + field c48 = 4378616569090929672 + field c49 = 3334807502817538491 + field c50 = 8019184735943344966 + field c51 = 2395043908812246395 + field c52 = 6558421058331732611 + field c53 = 11735894060727326369 + field c54 = 8143540538889204488 + field c55 = 5991753489563751169 + field c56 = 12235918791502088007 + field c57 = 2880312033702687139 + field c58 = 18224748115308382355 + field c59 = 18070411013125314165 + field c60 = 8156487614120951180 + field c61 = 10615269510047010719 + field c62 = 12489426404754222075 + field c63 = 5055279340069995710 + field c64 = 7231927319780248664 + field c65 = 2602078848106763799 + field c66 = 12445944369334781425 + field c67 = 3978905923892496205 + field c68 = 16711272944329818038 + field c69 = 10439032361227108922 + field c70 = 15110119871725214866 + field c71 = 821141790655890946 + field c72 = 11073536380651186235 + field c73 = 4866839313097607757 + field c74 = 13118391689513956636 + field c75 = 14527674973762312380 + field c76 = 7612751959265567999 + field c77 = 6808090907814178161 + field c78 = 6899703779492644997 + field c79 = 3664666286336986826 + field c80 = 783179505424462608 + field c81 = 8990689241814097697 + field c82 = 9646603555412825679 + field c83 = 7351246026167205041 + field c84 = 16970959813722173256 + field c85 = 15735726858241466429 + field c86 = 10347018221892268419 + field c87 = 12195545878449322889 + field c88 = 7423314197114049891 + field c89 = 14908016116973904153 + field c90 = 5840340122527363265 + field c91 = 17740311462440614128 + field c92 = 815306421953744623 + field c93 = 17456357368219253949 + field c94 = 6982651076559329072 + field c95 = 11970987324614963868 + field c96 = 8167785008538063246 + field c97 = 9483259819397403968 + field c98 = 954550221664291548 + field c99 = 10339565171024313256 + field c100 = 8651171084286500102 + field c101 = 16974445528003515956 + field c102 = 15104530047940621190 + field c103 = 103271880867179718 + field c104 = 14654666245504492663 + field c105 = 12445769555936887967 + field c106 = 11250582358051997490 + field c107 = 6730977207490590241 + field c108 = 15919951556166196935 + field c109 = 4423540216573360915 + field c110 = 16317664700341473511 + field c111 = 4723997214951767765 + field c112 = 10098756619006575500 + field c113 = 3223149401237667964 + field c114 = 6870494874300767682 + field c115 = 2902095711130291898 + field c116 = 7159372652788439733 + field c117 = 11500508372997952671 + field c118 = 13348148181479462670 + field c119 = 12729401155983882093 + field c120 = 15021242795466053388 + field c121 = 3802990509227527157 + field c122 = 4665459515680145682 + field c123 = 13165553315407675603 + field c124 = 6496364397926233172 + field c125 = 12800832566287577810 + field c126 = 9737592377590267426 + field c127 = 8687131091302514939 + field c128 = 1488200421755445892 + field c129 = 11004377668730991641 + field c130 = 13516338734600228410 + field c131 = 2953581820660217936 + field c132 = 3505040783153922951 + field c133 = 3710332827435113697 + field c134 = 15414874040873320221 + field c135 = 8602547649919482301 + field c136 = 13971349938398812007 + field c137 = 187239246702636066 + field c138 = 12886019973971254144 + field c139 = 4512274763990493707 + field c140 = 2986635507805503192 + field c141 = 2315252455709119454 + field c142 = 12537995864054210246 + field c143 = 2039491936479859267 + field c144 = 1558644089185031256 + field c145 = 4074089203264759305 + field c146 = 2522268501749395707 + field c147 = 3414760436185256196 + field c148 = 17420887529146466921 + field c149 = 2817020417938125001 + field c150 = 16538346563888261485 + field c151 = 5592270336833998770 + field c152 = 16876602064684906232 + field c153 = 1793025614521516343 + field c154 = 2178510518148748532 + field c155 = 2726440714374752509 + field c156 = 6502946837278398021 + field c157 = 15816362857667988792 + field c158 = 12997958454165692924 + field c159 = 5314892854495903792 + field c160 = 15533907063555687782 + field c161 = 12312015675698548715 + field c162 = 14140016464013350248 + field c163 = 16325589062962838690 + field c164 = 6796145646370327654 + field c165 = 1168753512742361735 + field c166 = 4100789820704709368 + field c167 = 15947554381540469177 + field c168 = 8597377839806076919 + field c169 = 9704018824195918000 + field c170 = 12763288618765762688 + field c171 = 17249257732622847695 + field c172 = 1998710993415069759 + field c173 = 923759906393011543 + field c174 = 1271051229666811593 + field c175 = 17822362132088738077 + field c176 = 11797234543722669271 + field c177 = 5864538787265942447 + field c178 = 15975583211110506970 + field c179 = 7258516085733671960 + field c180 = 17999926471875633100 + field c181 = 635992114476018166 + field c182 = 17205047318256576347 + field c183 = 17384900867876315312 + field c184 = 16484825562915784226 + field c185 = 16694130609036138894 + field c186 = 10575069350371260875 + field c187 = 8330575162062887277 + field c188 = 6212375704691932880 + field c189 = 15965138197626618226 + field c190 = 14285453069600046939 + field c191 = 10005163510208402517 + field c192 = 885298637936952595 + field c193 = 541790758138118921 + field c194 = 5985203084790372993 + field c195 = 4685030219775483721 + field c196 = 1411106851304815020 + field c197 = 11290732479954096478 + field c198 = 208280581124868513 + field c199 = 10979018648467968495 + field c200 = 8600643745023338215 + field c201 = 3477453626867126061 + field c202 = 6428436309340258604 + field c203 = 5695415667275657934 + field c204 = 15952065508715623490 + field c205 = 15571300830419767248 + field c206 = 17259785660502616862 + field c207 = 4298425495274316083 + field c208 = 9023601070579319352 + field c209 = 7353589709321807492 + field c210 = 2988848909076209475 + field c211 = 10439527789422046135 + field c212 = 6097734044161429459 + field c213 = 1113429873817861476 + field c214 = 1639063372386966591 + field c215 = 7863102812716788759 + field c216 = 216040220732135364 + field c217 = 14252611488623712688 + field c218 = 9543395466794536974 + field c219 = 2714461051639810934 + field c220 = 2588317208781407279 + field c221 = 15458529123534594916 + field c222 = 15748417817551040856 + field c223 = 16414455697114422951 + field c224 = 13378164466674639511 + field c225 = 13894319928411294675 + field c226 = 5032680892090751540 + field c227 = 17201338494743078916 + field c228 = 4397422800601932505 + field c229 = 11285062031581972327 + field c230 = 7309354640676468207 + field c231 = 10457152817239331848 + field c232 = 8855911538863247046 + field c233 = 4301853449821814398 + field c234 = 13001502396339103326 + field c235 = 10218424535115580246 + field c236 = 8628244713920681895 + field c237 = 17410423622514037261 + field c238 = 14080683768439215375 + field c239 = 11453161143447188100 + field c240 = 16761509772042181939 + field c241 = 6688821660695954082 + field c242 = 12083434295263160416 + field c243 = 8540021431714616589 + field c244 = 6891616215679974226 + field c245 = 10229217098454812721 + field c246 = 3292165387203778711 + field c247 = 6090113424998243490 + field c248 = 13431780521962358660 + field c249 = 6061081364215809883 + field c250 = 16792066504222214142 + field c251 = 16134314044798124799 + field c252 = 17070233710126619765 + field c253 = 6915716851370550800 + field c254 = 9505009849073026581 + field c255 = 6422700465081897153 + field c256 = 17977653991560529185 + field c257 = 5800870252836247255 + field c258 = 12096124733159345520 + field c259 = 7679273623392321940 + field c260 = 17835783910585744964 + field c261 = 2478664878205754377 + field c262 = 1720314468413114967 + field c263 = 10376757819003248056 + field c264 = 10376377187857634245 + field c265 = 13344930747504284997 + field c266 = 11579281865160153596 + field c267 = 10300256980048736962 + field c268 = 378765236515040565 + field c269 = 11412420941557253424 + field c270 = 12931662470734252786 + field c271 = 43018908376346374 + field c272 = 3589810689190160071 + field c273 = 4688229274750659741 + field c274 = 13688957436484306091 + field c275 = 11424740943016984272 + field c276 = 16001900718237913960 + field c277 = 5548469743008097574 + field c278 = 14584404916672178680 + field c279 = 3396622135873576824 + field c280 = 7861729246871155992 + field c281 = 16112271126908045545 + field c282 = 16988163966860016012 + field c283 = 273641680619529493 + field c284 = 15222677154027327363 + field c285 = 4070328078309830604 + field c286 = 13520458500363296391 + field c287 = 8235111705801363015 + field c288 = 5575990058472514138 + field c289 = 2751301609188252989 + field c290 = 6478598528223547074 + field c291 = 386565553848556638 + field c292 = 9417729078939938713 + field c293 = 15204315939835727483 + field c294 = 14942015033780606261 + field c295 = 18369423901636582012 + field c296 = 4715338437538604447 + field c297 = 6840590980607806319 + field c298 = 5535471161490539014 + field c299 = 5341328005359029952 + field c300 = 1475161295215894444 + field c301 = 7999197814297036636 + field c302 = 2984233088665867938 + field c303 = 3097746028144832229 + field c304 = 8849530863480031517 + field c305 = 7464920943249009773 + field c306 = 3802996844641460514 + field c307 = 6284458522545927646 + field c308 = 2307388003445002779 + field c309 = 4461479354745457623 + field c310 = 1649739722664588460 + field c311 = 3008391274160432867 + field c312 = 5142217010456550622 + field c313 = 1775580461722730120 + field c314 = 161694268822794344 + field c315 = 1518963253808031703 + field c316 = 16475258091652710137 + field c317 = 119575899007375159 + field c318 = 1275863735937973999 + field c319 = 16539412514520642374 + field c320 = 2303365191438051950 + field c321 = 6435126839960916075 + field c322 = 17794599201026020053 + field c323 = 13847097589277840330 + field c324 = 16645869274577729720 + field c325 = 8039205965509554440 + field c326 = 4788586935019371140 + field c327 = 15129007200040077746 + field c328 = 2055561615223771341 + field c329 = 4149731103701412892 + field c330 = 10268130195734144189 + field c331 = 13406631635880074708 + field c332 = 11429218277824986203 + field c333 = 15773968030812198565 + field c334 = 16050275277550506872 + field c335 = 11858586752031736643 + field c336 = 8927746344866569756 + field c337 = 11802068403177695792 + field c338 = 157833420806751556 + field c339 = 4698875910749767878 + field c340 = 1616722774788291698 + field c341 = 3990951895163748090 + field c342 = 16758609224720795472 + field c343 = 3045571693290741477 + field c344 = 9281634245289836419 + field c345 = 13517688176723875370 + field c346 = 7961395585333219380 + field c347 = 1606574359105691080 + field c348 = 17564372683613562171 + field c349 = 4664015225343144418 + field c350 = 6133721340680280128 + field c351 = 2667022304383014929 + field c352 = 12316557761857340230 + field c353 = 10375614850625292317 + field c354 = 8141542666379135068 + field c355 = 9185476451083834432 + field c356 = 4991072365274649547 + field c357 = 17398204971778820365 + field c358 = 16127888338958422584 + field c359 = 13586792051317758204 + + field mc0 = 17 + field mc1 = 15 + field mc2 = 41 + field mc3 = 16 + field mc4 = 2 + field mc5 = 28 + field mc6 = 13 + field mc7 = 13 + field mc8 = 39 + field mc9 = 18 + field mc10 = 34 + field mc11 = 20 + field md0 = 8 + field md1 = 0 + field md2 = 0 + field md3 = 0 + field md4 = 0 + field md5 = 0 + field md6 = 0 + field md7 = 0 + field md8 = 0 + field md9 = 0 + field md10 = 0 + field md11 = 0 + + // -- + // r = 0 + // ark + state0 = state0 + c0 + state1 = state1 + c1 + state2 = state2 + c2 + state3 = state3 + c3 + state4 = state4 + c4 + state5 = state5 + c5 + state6 = state6 + c6 + state7 = state7 + c7 + state8 = state8 + c8 + state9 = state9 + c9 + state10 = state10 + c10 + state11 = state11 + c11 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 ** 7 + field new_state2 = state2 ** 7 + field new_state3 = state3 ** 7 + field new_state4 = state4 ** 7 + field new_state5 = state5 ** 7 + field new_state6 = state6 ** 7 + field new_state7 = state7 ** 7 + field new_state8 = state8 ** 7 + field new_state9 = state9 ** 7 + field new_state10 = state10 ** 7 + field new_state11 = state11 ** 7 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 1 + // ark + state0 = state0 + c12 + state1 = state1 + c13 + state2 = state2 + c14 + state3 = state3 + c15 + state4 = state4 + c16 + state5 = state5 + c17 + state6 = state6 + c18 + state7 = state7 + c19 + state8 = state8 + c20 + state9 = state9 + c21 + state10 = state10 + c22 + state11 = state11 + c23 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 ** 7 + field new_state2 = state2 ** 7 + field new_state3 = state3 ** 7 + field new_state4 = state4 ** 7 + field new_state5 = state5 ** 7 + field new_state6 = state6 ** 7 + field new_state7 = state7 ** 7 + field new_state8 = state8 ** 7 + field new_state9 = state9 ** 7 + field new_state10 = state10 ** 7 + field new_state11 = state11 ** 7 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 2 + // ark + state0 = state0 + c24 + state1 = state1 + c25 + state2 = state2 + c26 + state3 = state3 + c27 + state4 = state4 + c28 + state5 = state5 + c29 + state6 = state6 + c30 + state7 = state7 + c31 + state8 = state8 + c32 + state9 = state9 + c33 + state10 = state10 + c34 + state11 = state11 + c35 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 ** 7 + field new_state2 = state2 ** 7 + field new_state3 = state3 ** 7 + field new_state4 = state4 ** 7 + field new_state5 = state5 ** 7 + field new_state6 = state6 ** 7 + field new_state7 = state7 ** 7 + field new_state8 = state8 ** 7 + field new_state9 = state9 ** 7 + field new_state10 = state10 ** 7 + field new_state11 = state11 ** 7 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 3 + // ark + state0 = state0 + c36 + state1 = state1 + c37 + state2 = state2 + c38 + state3 = state3 + c39 + state4 = state4 + c40 + state5 = state5 + c41 + state6 = state6 + c42 + state7 = state7 + c43 + state8 = state8 + c44 + state9 = state9 + c45 + state10 = state10 + c46 + state11 = state11 + c47 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 ** 7 + field new_state2 = state2 ** 7 + field new_state3 = state3 ** 7 + field new_state4 = state4 ** 7 + field new_state5 = state5 ** 7 + field new_state6 = state6 ** 7 + field new_state7 = state7 ** 7 + field new_state8 = state8 ** 7 + field new_state9 = state9 ** 7 + field new_state10 = state10 ** 7 + field new_state11 = state11 ** 7 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 4 + // ark + state0 = state0 + c48 + state1 = state1 + c49 + state2 = state2 + c50 + state3 = state3 + c51 + state4 = state4 + c52 + state5 = state5 + c53 + state6 = state6 + c54 + state7 = state7 + c55 + state8 = state8 + c56 + state9 = state9 + c57 + state10 = state10 + c58 + state11 = state11 + c59 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 + field new_state2 = state2 + field new_state3 = state3 + field new_state4 = state4 + field new_state5 = state5 + field new_state6 = state6 + field new_state7 = state7 + field new_state8 = state8 + field new_state9 = state9 + field new_state10 = state10 + field new_state11 = state11 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 5 + // ark + state0 = state0 + c60 + state1 = state1 + c61 + state2 = state2 + c62 + state3 = state3 + c63 + state4 = state4 + c64 + state5 = state5 + c65 + state6 = state6 + c66 + state7 = state7 + c67 + state8 = state8 + c68 + state9 = state9 + c69 + state10 = state10 + c70 + state11 = state11 + c71 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 + field new_state2 = state2 + field new_state3 = state3 + field new_state4 = state4 + field new_state5 = state5 + field new_state6 = state6 + field new_state7 = state7 + field new_state8 = state8 + field new_state9 = state9 + field new_state10 = state10 + field new_state11 = state11 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 6 + // ark + state0 = state0 + c72 + state1 = state1 + c73 + state2 = state2 + c74 + state3 = state3 + c75 + state4 = state4 + c76 + state5 = state5 + c77 + state6 = state6 + c78 + state7 = state7 + c79 + state8 = state8 + c80 + state9 = state9 + c81 + state10 = state10 + c82 + state11 = state11 + c83 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 + field new_state2 = state2 + field new_state3 = state3 + field new_state4 = state4 + field new_state5 = state5 + field new_state6 = state6 + field new_state7 = state7 + field new_state8 = state8 + field new_state9 = state9 + field new_state10 = state10 + field new_state11 = state11 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 7 + // ark + state0 = state0 + c84 + state1 = state1 + c85 + state2 = state2 + c86 + state3 = state3 + c87 + state4 = state4 + c88 + state5 = state5 + c89 + state6 = state6 + c90 + state7 = state7 + c91 + state8 = state8 + c92 + state9 = state9 + c93 + state10 = state10 + c94 + state11 = state11 + c95 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 + field new_state2 = state2 + field new_state3 = state3 + field new_state4 = state4 + field new_state5 = state5 + field new_state6 = state6 + field new_state7 = state7 + field new_state8 = state8 + field new_state9 = state9 + field new_state10 = state10 + field new_state11 = state11 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 8 + // ark + state0 = state0 + c96 + state1 = state1 + c97 + state2 = state2 + c98 + state3 = state3 + c99 + state4 = state4 + c100 + state5 = state5 + c101 + state6 = state6 + c102 + state7 = state7 + c103 + state8 = state8 + c104 + state9 = state9 + c105 + state10 = state10 + c106 + state11 = state11 + c107 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 + field new_state2 = state2 + field new_state3 = state3 + field new_state4 = state4 + field new_state5 = state5 + field new_state6 = state6 + field new_state7 = state7 + field new_state8 = state8 + field new_state9 = state9 + field new_state10 = state10 + field new_state11 = state11 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 9 + // ark + state0 = state0 + c108 + state1 = state1 + c109 + state2 = state2 + c110 + state3 = state3 + c111 + state4 = state4 + c112 + state5 = state5 + c113 + state6 = state6 + c114 + state7 = state7 + c115 + state8 = state8 + c116 + state9 = state9 + c117 + state10 = state10 + c118 + state11 = state11 + c119 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 + field new_state2 = state2 + field new_state3 = state3 + field new_state4 = state4 + field new_state5 = state5 + field new_state6 = state6 + field new_state7 = state7 + field new_state8 = state8 + field new_state9 = state9 + field new_state10 = state10 + field new_state11 = state11 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 10 + // ark + state0 = state0 + c120 + state1 = state1 + c121 + state2 = state2 + c122 + state3 = state3 + c123 + state4 = state4 + c124 + state5 = state5 + c125 + state6 = state6 + c126 + state7 = state7 + c127 + state8 = state8 + c128 + state9 = state9 + c129 + state10 = state10 + c130 + state11 = state11 + c131 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 + field new_state2 = state2 + field new_state3 = state3 + field new_state4 = state4 + field new_state5 = state5 + field new_state6 = state6 + field new_state7 = state7 + field new_state8 = state8 + field new_state9 = state9 + field new_state10 = state10 + field new_state11 = state11 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 11 + // ark + state0 = state0 + c132 + state1 = state1 + c133 + state2 = state2 + c134 + state3 = state3 + c135 + state4 = state4 + c136 + state5 = state5 + c137 + state6 = state6 + c138 + state7 = state7 + c139 + state8 = state8 + c140 + state9 = state9 + c141 + state10 = state10 + c142 + state11 = state11 + c143 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 + field new_state2 = state2 + field new_state3 = state3 + field new_state4 = state4 + field new_state5 = state5 + field new_state6 = state6 + field new_state7 = state7 + field new_state8 = state8 + field new_state9 = state9 + field new_state10 = state10 + field new_state11 = state11 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 12 + // ark + state0 = state0 + c144 + state1 = state1 + c145 + state2 = state2 + c146 + state3 = state3 + c147 + state4 = state4 + c148 + state5 = state5 + c149 + state6 = state6 + c150 + state7 = state7 + c151 + state8 = state8 + c152 + state9 = state9 + c153 + state10 = state10 + c154 + state11 = state11 + c155 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 + field new_state2 = state2 + field new_state3 = state3 + field new_state4 = state4 + field new_state5 = state5 + field new_state6 = state6 + field new_state7 = state7 + field new_state8 = state8 + field new_state9 = state9 + field new_state10 = state10 + field new_state11 = state11 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 13 + // ark + state0 = state0 + c156 + state1 = state1 + c157 + state2 = state2 + c158 + state3 = state3 + c159 + state4 = state4 + c160 + state5 = state5 + c161 + state6 = state6 + c162 + state7 = state7 + c163 + state8 = state8 + c164 + state9 = state9 + c165 + state10 = state10 + c166 + state11 = state11 + c167 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 + field new_state2 = state2 + field new_state3 = state3 + field new_state4 = state4 + field new_state5 = state5 + field new_state6 = state6 + field new_state7 = state7 + field new_state8 = state8 + field new_state9 = state9 + field new_state10 = state10 + field new_state11 = state11 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 14 + // ark + state0 = state0 + c168 + state1 = state1 + c169 + state2 = state2 + c170 + state3 = state3 + c171 + state4 = state4 + c172 + state5 = state5 + c173 + state6 = state6 + c174 + state7 = state7 + c175 + state8 = state8 + c176 + state9 = state9 + c177 + state10 = state10 + c178 + state11 = state11 + c179 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 + field new_state2 = state2 + field new_state3 = state3 + field new_state4 = state4 + field new_state5 = state5 + field new_state6 = state6 + field new_state7 = state7 + field new_state8 = state8 + field new_state9 = state9 + field new_state10 = state10 + field new_state11 = state11 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 15 + // ark + state0 = state0 + c180 + state1 = state1 + c181 + state2 = state2 + c182 + state3 = state3 + c183 + state4 = state4 + c184 + state5 = state5 + c185 + state6 = state6 + c186 + state7 = state7 + c187 + state8 = state8 + c188 + state9 = state9 + c189 + state10 = state10 + c190 + state11 = state11 + c191 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 + field new_state2 = state2 + field new_state3 = state3 + field new_state4 = state4 + field new_state5 = state5 + field new_state6 = state6 + field new_state7 = state7 + field new_state8 = state8 + field new_state9 = state9 + field new_state10 = state10 + field new_state11 = state11 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 16 + // ark + state0 = state0 + c192 + state1 = state1 + c193 + state2 = state2 + c194 + state3 = state3 + c195 + state4 = state4 + c196 + state5 = state5 + c197 + state6 = state6 + c198 + state7 = state7 + c199 + state8 = state8 + c200 + state9 = state9 + c201 + state10 = state10 + c202 + state11 = state11 + c203 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 + field new_state2 = state2 + field new_state3 = state3 + field new_state4 = state4 + field new_state5 = state5 + field new_state6 = state6 + field new_state7 = state7 + field new_state8 = state8 + field new_state9 = state9 + field new_state10 = state10 + field new_state11 = state11 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 17 + // ark + state0 = state0 + c204 + state1 = state1 + c205 + state2 = state2 + c206 + state3 = state3 + c207 + state4 = state4 + c208 + state5 = state5 + c209 + state6 = state6 + c210 + state7 = state7 + c211 + state8 = state8 + c212 + state9 = state9 + c213 + state10 = state10 + c214 + state11 = state11 + c215 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 + field new_state2 = state2 + field new_state3 = state3 + field new_state4 = state4 + field new_state5 = state5 + field new_state6 = state6 + field new_state7 = state7 + field new_state8 = state8 + field new_state9 = state9 + field new_state10 = state10 + field new_state11 = state11 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 18 + // ark + state0 = state0 + c216 + state1 = state1 + c217 + state2 = state2 + c218 + state3 = state3 + c219 + state4 = state4 + c220 + state5 = state5 + c221 + state6 = state6 + c222 + state7 = state7 + c223 + state8 = state8 + c224 + state9 = state9 + c225 + state10 = state10 + c226 + state11 = state11 + c227 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 + field new_state2 = state2 + field new_state3 = state3 + field new_state4 = state4 + field new_state5 = state5 + field new_state6 = state6 + field new_state7 = state7 + field new_state8 = state8 + field new_state9 = state9 + field new_state10 = state10 + field new_state11 = state11 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 19 + // ark + state0 = state0 + c228 + state1 = state1 + c229 + state2 = state2 + c230 + state3 = state3 + c231 + state4 = state4 + c232 + state5 = state5 + c233 + state6 = state6 + c234 + state7 = state7 + c235 + state8 = state8 + c236 + state9 = state9 + c237 + state10 = state10 + c238 + state11 = state11 + c239 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 + field new_state2 = state2 + field new_state3 = state3 + field new_state4 = state4 + field new_state5 = state5 + field new_state6 = state6 + field new_state7 = state7 + field new_state8 = state8 + field new_state9 = state9 + field new_state10 = state10 + field new_state11 = state11 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 20 + // ark + state0 = state0 + c240 + state1 = state1 + c241 + state2 = state2 + c242 + state3 = state3 + c243 + state4 = state4 + c244 + state5 = state5 + c245 + state6 = state6 + c246 + state7 = state7 + c247 + state8 = state8 + c248 + state9 = state9 + c249 + state10 = state10 + c250 + state11 = state11 + c251 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 + field new_state2 = state2 + field new_state3 = state3 + field new_state4 = state4 + field new_state5 = state5 + field new_state6 = state6 + field new_state7 = state7 + field new_state8 = state8 + field new_state9 = state9 + field new_state10 = state10 + field new_state11 = state11 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 21 + // ark + state0 = state0 + c252 + state1 = state1 + c253 + state2 = state2 + c254 + state3 = state3 + c255 + state4 = state4 + c256 + state5 = state5 + c257 + state6 = state6 + c258 + state7 = state7 + c259 + state8 = state8 + c260 + state9 = state9 + c261 + state10 = state10 + c262 + state11 = state11 + c263 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 + field new_state2 = state2 + field new_state3 = state3 + field new_state4 = state4 + field new_state5 = state5 + field new_state6 = state6 + field new_state7 = state7 + field new_state8 = state8 + field new_state9 = state9 + field new_state10 = state10 + field new_state11 = state11 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 22 + // ark + state0 = state0 + c264 + state1 = state1 + c265 + state2 = state2 + c266 + state3 = state3 + c267 + state4 = state4 + c268 + state5 = state5 + c269 + state6 = state6 + c270 + state7 = state7 + c271 + state8 = state8 + c272 + state9 = state9 + c273 + state10 = state10 + c274 + state11 = state11 + c275 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 + field new_state2 = state2 + field new_state3 = state3 + field new_state4 = state4 + field new_state5 = state5 + field new_state6 = state6 + field new_state7 = state7 + field new_state8 = state8 + field new_state9 = state9 + field new_state10 = state10 + field new_state11 = state11 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 23 + // ark + state0 = state0 + c276 + state1 = state1 + c277 + state2 = state2 + c278 + state3 = state3 + c279 + state4 = state4 + c280 + state5 = state5 + c281 + state6 = state6 + c282 + state7 = state7 + c283 + state8 = state8 + c284 + state9 = state9 + c285 + state10 = state10 + c286 + state11 = state11 + c287 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 + field new_state2 = state2 + field new_state3 = state3 + field new_state4 = state4 + field new_state5 = state5 + field new_state6 = state6 + field new_state7 = state7 + field new_state8 = state8 + field new_state9 = state9 + field new_state10 = state10 + field new_state11 = state11 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 24 + // ark + state0 = state0 + c288 + state1 = state1 + c289 + state2 = state2 + c290 + state3 = state3 + c291 + state4 = state4 + c292 + state5 = state5 + c293 + state6 = state6 + c294 + state7 = state7 + c295 + state8 = state8 + c296 + state9 = state9 + c297 + state10 = state10 + c298 + state11 = state11 + c299 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 + field new_state2 = state2 + field new_state3 = state3 + field new_state4 = state4 + field new_state5 = state5 + field new_state6 = state6 + field new_state7 = state7 + field new_state8 = state8 + field new_state9 = state9 + field new_state10 = state10 + field new_state11 = state11 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 25 + // ark + state0 = state0 + c300 + state1 = state1 + c301 + state2 = state2 + c302 + state3 = state3 + c303 + state4 = state4 + c304 + state5 = state5 + c305 + state6 = state6 + c306 + state7 = state7 + c307 + state8 = state8 + c308 + state9 = state9 + c309 + state10 = state10 + c310 + state11 = state11 + c311 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 + field new_state2 = state2 + field new_state3 = state3 + field new_state4 = state4 + field new_state5 = state5 + field new_state6 = state6 + field new_state7 = state7 + field new_state8 = state8 + field new_state9 = state9 + field new_state10 = state10 + field new_state11 = state11 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 26 + // ark + state0 = state0 + c312 + state1 = state1 + c313 + state2 = state2 + c314 + state3 = state3 + c315 + state4 = state4 + c316 + state5 = state5 + c317 + state6 = state6 + c318 + state7 = state7 + c319 + state8 = state8 + c320 + state9 = state9 + c321 + state10 = state10 + c322 + state11 = state11 + c323 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 ** 7 + field new_state2 = state2 ** 7 + field new_state3 = state3 ** 7 + field new_state4 = state4 ** 7 + field new_state5 = state5 ** 7 + field new_state6 = state6 ** 7 + field new_state7 = state7 ** 7 + field new_state8 = state8 ** 7 + field new_state9 = state9 ** 7 + field new_state10 = state10 ** 7 + field new_state11 = state11 ** 7 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 27 + // ark + state0 = state0 + c324 + state1 = state1 + c325 + state2 = state2 + c326 + state3 = state3 + c327 + state4 = state4 + c328 + state5 = state5 + c329 + state6 = state6 + c330 + state7 = state7 + c331 + state8 = state8 + c332 + state9 = state9 + c333 + state10 = state10 + c334 + state11 = state11 + c335 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 ** 7 + field new_state2 = state2 ** 7 + field new_state3 = state3 ** 7 + field new_state4 = state4 ** 7 + field new_state5 = state5 ** 7 + field new_state6 = state6 ** 7 + field new_state7 = state7 ** 7 + field new_state8 = state8 ** 7 + field new_state9 = state9 ** 7 + field new_state10 = state10 ** 7 + field new_state11 = state11 ** 7 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 28 + // ark + state0 = state0 + c336 + state1 = state1 + c337 + state2 = state2 + c338 + state3 = state3 + c339 + state4 = state4 + c340 + state5 = state5 + c341 + state6 = state6 + c342 + state7 = state7 + c343 + state8 = state8 + c344 + state9 = state9 + c345 + state10 = state10 + c346 + state11 = state11 + c347 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 ** 7 + field new_state2 = state2 ** 7 + field new_state3 = state3 ** 7 + field new_state4 = state4 ** 7 + field new_state5 = state5 ** 7 + field new_state6 = state6 ** 7 + field new_state7 = state7 ** 7 + field new_state8 = state8 ** 7 + field new_state9 = state9 ** 7 + field new_state10 = state10 ** 7 + field new_state11 = state11 ** 7 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + // -- + // r = 29 + // ark + state0 = state0 + c348 + state1 = state1 + c349 + state2 = state2 + c350 + state3 = state3 + c351 + state4 = state4 + c352 + state5 = state5 + c353 + state6 = state6 + c354 + state7 = state7 + c355 + state8 = state8 + c356 + state9 = state9 + c357 + state10 = state10 + c358 + state11 = state11 + c359 + // sbox + field new_state0 = state0 ** 7 + field new_state1 = state1 ** 7 + field new_state2 = state2 ** 7 + field new_state3 = state3 ** 7 + field new_state4 = state4 ** 7 + field new_state5 = state5 ** 7 + field new_state6 = state6 ** 7 + field new_state7 = state7 ** 7 + field new_state8 = state8 ** 7 + field new_state9 = state9 ** 7 + field new_state10 = state10 ** 7 + field new_state11 = state11 ** 7 + // mix + state0 = new_state0 * md0+ new_state0 * mc0+ new_state1 * mc1+ new_state2 * mc2+ new_state3 * mc3+ new_state4 * mc4+ new_state5 * mc5+ new_state6 * mc6+ new_state7 * mc7+ new_state8 * mc8+ new_state9 * mc9+ new_state10 * mc10+ new_state11 * mc11 + state1 = new_state1 * md1+ new_state1 * mc0+ new_state2 * mc1+ new_state3 * mc2+ new_state4 * mc3+ new_state5 * mc4+ new_state6 * mc5+ new_state7 * mc6+ new_state8 * mc7+ new_state9 * mc8+ new_state10 * mc9+ new_state11 * mc10+ new_state0 * mc11 + state2 = new_state2 * md2+ new_state2 * mc0+ new_state3 * mc1+ new_state4 * mc2+ new_state5 * mc3+ new_state6 * mc4+ new_state7 * mc5+ new_state8 * mc6+ new_state9 * mc7+ new_state10 * mc8+ new_state11 * mc9+ new_state0 * mc10+ new_state1 * mc11 + state3 = new_state3 * md3+ new_state3 * mc0+ new_state4 * mc1+ new_state5 * mc2+ new_state6 * mc3+ new_state7 * mc4+ new_state8 * mc5+ new_state9 * mc6+ new_state10 * mc7+ new_state11 * mc8+ new_state0 * mc9+ new_state1 * mc10+ new_state2 * mc11 + state4 = new_state4 * md4+ new_state4 * mc0+ new_state5 * mc1+ new_state6 * mc2+ new_state7 * mc3+ new_state8 * mc4+ new_state9 * mc5+ new_state10 * mc6+ new_state11 * mc7+ new_state0 * mc8+ new_state1 * mc9+ new_state2 * mc10+ new_state3 * mc11 + state5 = new_state5 * md5+ new_state5 * mc0+ new_state6 * mc1+ new_state7 * mc2+ new_state8 * mc3+ new_state9 * mc4+ new_state10 * mc5+ new_state11 * mc6+ new_state0 * mc7+ new_state1 * mc8+ new_state2 * mc9+ new_state3 * mc10+ new_state4 * mc11 + state6 = new_state6 * md6+ new_state6 * mc0+ new_state7 * mc1+ new_state8 * mc2+ new_state9 * mc3+ new_state10 * mc4+ new_state11 * mc5+ new_state0 * mc6+ new_state1 * mc7+ new_state2 * mc8+ new_state3 * mc9+ new_state4 * mc10+ new_state5 * mc11 + state7 = new_state7 * md7+ new_state7 * mc0+ new_state8 * mc1+ new_state9 * mc2+ new_state10 * mc3+ new_state11 * mc4+ new_state0 * mc5+ new_state1 * mc6+ new_state2 * mc7+ new_state3 * mc8+ new_state4 * mc9+ new_state5 * mc10+ new_state6 * mc11 + state8 = new_state8 * md8+ new_state8 * mc0+ new_state9 * mc1+ new_state10 * mc2+ new_state11 * mc3+ new_state0 * mc4+ new_state1 * mc5+ new_state2 * mc6+ new_state3 * mc7+ new_state4 * mc8+ new_state5 * mc9+ new_state6 * mc10+ new_state7 * mc11 + state9 = new_state9 * md9+ new_state9 * mc0+ new_state10 * mc1+ new_state11 * mc2+ new_state0 * mc3+ new_state1 * mc4+ new_state2 * mc5+ new_state3 * mc6+ new_state4 * mc7+ new_state5 * mc8+ new_state6 * mc9+ new_state7 * mc10+ new_state8 * mc11 + state10 = new_state10 * md10+ new_state10 * mc0+ new_state11 * mc1+ new_state0 * mc2+ new_state1 * mc3+ new_state2 * mc4+ new_state3 * mc5+ new_state4 * mc6+ new_state5 * mc7+ new_state6 * mc8+ new_state7 * mc9+ new_state8 * mc10+ new_state9 * mc11 + state11 = new_state11 * md11+ new_state11 * mc0+ new_state0 * mc1+ new_state1 * mc2+ new_state2 * mc3+ new_state3 * mc4+ new_state4 * mc5+ new_state5 * mc6+ new_state6 * mc7+ new_state7 * mc8+ new_state8 * mc9+ new_state9 * mc10+ new_state10 * mc11 + return PoseidonState { + state0: state0, + state1: state1, + state2: state2, + state3: state3, + state4: state4, + state5: state5, + state6: state6, + state7: state7, + state8: state8, + state9: state9, + state10: state10, + state11: state11, + } + +def main() -> field: + PoseidonState inputs = PoseidonState { + state0: 1, + state1: 2, + state2: 3, + state3: 4, + state4: 5, + state5: 6, + state6: 7, + state7: 8, + state8: 0, + state9: 0, + state10: 0, + state11: 0 + } + field cumulated_hash = 0 + for u32 i in 0..REPETITION do + PoseidonState hashes = poseidon(inputs) + cumulated_hash = cumulated_hash + hashes.state0 + hashes.state1 + hashes.state2 + hashes.state3 + hashes.state4 + hashes.state5 + hashes.state6 + hashes.state7 + hashes.state8 + hashes.state9 + hashes.state10 + hashes.state11 + endfor + + return cumulated_hash \ No newline at end of file diff --git a/zok_tests/benchmarks/tests/dna_align_cobbl.input b/zok_tests/benchmarks/tests/dna_align_cobbl.input new file mode 100644 index 00000000..31139124 --- /dev/null +++ b/zok_tests/benchmarks/tests/dna_align_cobbl.input @@ -0,0 +1,3 @@ +x 0 +n 15 +END \ No newline at end of file diff --git a/zok_tests/benchmarks/tests/dna_align_cobbl.zok b/zok_tests/benchmarks/tests/dna_align_cobbl.zok new file mode 100644 index 00000000..87f42698 --- /dev/null +++ b/zok_tests/benchmarks/tests/dna_align_cobbl.zok @@ -0,0 +1,116 @@ +/* + * Computes the Longest Common Subsequence of two strings, one of + * length m and the other of length n in O(m*n) time + */ +def main(u32 x, u32 n) -> u32: + array_decl u32[ro n] A + array_decl u32[ro n] B + u32 sum = 0 + for u32 i in 0..n do + sum = sum + i + A[i] = sum + B[i] = 60 - sum + endfor + + u32[n] LCS = [0; n] + u32 arr_size = n + + // Dynamic programming memo + u32[n * n + n + 1] LL = [0; n * n + n + 1] + // Hold choices made at each step, for use when backtracking + array_decl u32[ro n * n + n + 1] choices + + // Used when backtracking + u32 diag = 0 + u32 down = 0 + u32 right = 0 + + // Go backwards from i = n-1 downto 0 + u32 i = n - 1 + while i + 1 > 0 do + u32 j = n - 1 + while j + 1 > 0 do + if A[i] == B[j] then + if i+1 < n && j+1 < n then + diag = LL[(i+1) * arr_size + j+1] + else + diag = 0 + endif + // Diagonal jump + LL[i * arr_size + j] = 1 + diag + choices[i * arr_size + j] = 0 + else + if i+1 < n && j < n then + down = LL[(i+1) * arr_size + j] + else + down = 0 + endif + if i < n && j+1 < n then + right = LL[i * arr_size + j+1] + else + right = 0 + endif + // Assertion: down and right differ by at most 1 + if down == right + 1 then + // Jump down + LL[i * arr_size + j] = down + choices[i * arr_size + j] = 1 + else + // Jump right if down == right or right == down + 1. + LL[i * arr_size + j] = right + choices[i * arr_size + j] = 2 + endif + endif + j = j - 1 + endwhile + i = i - 1 + endwhile + + + // Construct LCS, allowing it to have intermittent zero characters + u32 iPtr = 0 + u32 jPtr = 0 // Pointers to where in LL we are with respect to backtracking + + u32 i = 0 + while i < n do + LCS[i] = 0 //If A[i] is not in the LCS, this remains 0. + u32 j = 0 + while j < n do + if i == iPtr && j == jPtr then // Loop until we meet up with the iPtr and jPtr + u32 choice = choices[i * arr_size + j] + if choice == 0 then // we made a diagonal jump here + LCS[i] = A[i] + iPtr = iPtr + 1 + jPtr = jPtr + 1 + else + if choice == 1 then // jump down + iPtr = iPtr + 1 + else // jump right + jPtr = jPtr + 1 + endif + endif + endif + j = j + 1 + endwhile + i = i + 1 + endwhile + + // Now move any string terminator (\0) characters in LCS to the end ala insertion sort + u32 i = 1 + while i < n do + u32 inserted = 0 + u32 j = 0 + while j < i do + if LCS[j] == 0 && inserted == 0 then + // Swap LCS[j] and LCS[i]. + LCS[j] = LCS[i] + LCS[i] = 0 + inserted = 1 + endif + j = j + 1 + endwhile + i = i + 1 + endwhile + + + return LCS[x] \ No newline at end of file diff --git a/zok_tests/benchmarks/tests/kmp_search_cobbl.input b/zok_tests/benchmarks/tests/kmp_search_cobbl.input new file mode 100644 index 00000000..e06b3e3f --- /dev/null +++ b/zok_tests/benchmarks/tests/kmp_search_cobbl.input @@ -0,0 +1,5 @@ +b 0 +c 0 +n 240 +m 24 +END \ No newline at end of file diff --git a/zok_tests/benchmarks/tests/kmp_search_cobbl.zok b/zok_tests/benchmarks/tests/kmp_search_cobbl.zok new file mode 100644 index 00000000..2f65badf --- /dev/null +++ b/zok_tests/benchmarks/tests/kmp_search_cobbl.zok @@ -0,0 +1,69 @@ +def lps_gen(u32 m, u32[m] pat) -> u32[m]: + u32[m] lps = [0; m] + + u32 len = 0 + u32 i = 1 + + while i < m do + if pat[i] == pat[len] then + len = len + 1 + lps[i] = len + i = i + 1 + else + if len != 0 then + len = lps[len - 1] + else + i = i + 1 + endif + endif + endwhile + + + return lps + +def main(u32 b, u32 c, u32 n, u32 m) -> u32: + array_decl u32[n] txt + array_decl u32[m] pat + // Initialize arrays + u32 sum = 0 + for u32 i in 0..n do + sum = sum + i + txt[i] = sum + endfor + for u32 i in 0..m do + pat[i] = txt[n - m - b + i] + endfor + + // random access to ensure array is written in memory + u32 x = pat[b] + u32 y = txt[b] + + // Generate LPS + u32[m] lps = lps_gen(m, pat) + + u32 i = 0 + u32 j = 0 + u32 found = 0 + + while m - j <= n - i do + if pat[j] == txt[i] then + i = i + 1 + j = j + 1 + endif + + if j == m then + j = lps[j - 1] + found = i - j + else + if i < n && pat[j] != txt[i] then + if j != 0 then + j = lps[j - 1] + else + i = i + 1 + endif + endif + endif + endwhile + + + return found + (x + y) * c diff --git a/zok_tests/benchmarks/unit_tests/.DS_Store b/zok_tests/benchmarks/unit_tests/.DS_Store deleted file mode 100644 index d182ff86..00000000 Binary files a/zok_tests/benchmarks/unit_tests/.DS_Store and /dev/null differ diff --git a/zok_tests/benchmarks/unit_tests/2pc_array.input b/zok_tests/benchmarks/unit_tests/2pc_array.input deleted file mode 100644 index 22a89f3c..00000000 --- a/zok_tests/benchmarks/unit_tests/2pc_array.input +++ /dev/null @@ -1,3 +0,0 @@ -a field 3 -b field 2 -END diff --git a/zok_tests/benchmarks/unit_tests/2pc_array.zok b/zok_tests/benchmarks/unit_tests/2pc_array.zok deleted file mode 100644 index 5e8e90fc..00000000 --- a/zok_tests/benchmarks/unit_tests/2pc_array.zok +++ /dev/null @@ -1,17 +0,0 @@ -def main(field a, field b) -> field: - field[4] arr = [b; 4] - for field i in 0..2 do - field sum = 0 - for field j in 0..4 do - field b = b + a - field a = a + j - field sum = sum + a - if sum == 10 then - arr[j] = arr[j] + sum - endif - arr[j] = arr[j] + sum - endfor - field a = 20 - arr[b] = a - endfor - return arr[a] + b diff --git a/zok_tests/benchmarks/unit_tests/2pc_bound.zok b/zok_tests/benchmarks/unit_tests/2pc_bound.zok deleted file mode 100644 index a14cf4c5..00000000 --- a/zok_tests/benchmarks/unit_tests/2pc_bound.zok +++ /dev/null @@ -1,42 +0,0 @@ -def add(field b, field c) -> field: - // BLK 12 -> 1 - field a = c - for field i in 0..3 do - if b == 5 then - // BLK 13 -> 3 - return b + a - else - // BLK 14 -> 3 - return b + a * a - endif - endfor - // BLK 15 -> 1 - return b - -def main(field a)-> field: - // BLK 0 -> 1 - // BLK 1 -> 1 - a = a + 1 - for field i in 0..4 do - if i == 0 then - // BLK 2 -> 4 - a = add(a, a) - // BLK 3 -> 4 - else - // BLK 4 -> 4 - a = add(a, a) - // BLK 5 -> 4 - endif - // BLK 6 -> 4 - a = add(a, a) - // BLK 7 -> 4 - endfor - // BLK 8 - for field i in 0..2 do - // BLK 9 -> 2 - a = add(a, a) - // BLK 10 -> 2 - endfor - // BLK 11 -> 1 - a = a + 1 - return a diff --git a/zok_tests/benchmarks/unit_tests/2pc_cond_store.input b/zok_tests/benchmarks/unit_tests/2pc_cond_store.input deleted file mode 100644 index 9bf69ebb..00000000 --- a/zok_tests/benchmarks/unit_tests/2pc_cond_store.input +++ /dev/null @@ -1,3 +0,0 @@ -a u32 2 -b u32 3 -END diff --git a/zok_tests/benchmarks/unit_tests/2pc_cond_store.zok b/zok_tests/benchmarks/unit_tests/2pc_cond_store.zok deleted file mode 100644 index ba4433ea..00000000 --- a/zok_tests/benchmarks/unit_tests/2pc_cond_store.zok +++ /dev/null @@ -1,4 +0,0 @@ -def main(u32 a, u32 b) -> u32: - u32[4] c = [a; 4] - cond_store(c, 1, b, a < 10) - return c[b] diff --git a/zok_tests/benchmarks/unit_tests/2pc_demo.zok b/zok_tests/benchmarks/unit_tests/2pc_demo.zok deleted file mode 100644 index faded6b0..00000000 --- a/zok_tests/benchmarks/unit_tests/2pc_demo.zok +++ /dev/null @@ -1,19 +0,0 @@ -def add(field b, field c) -> field: - // Blk 5 - field a = c - if b == 5 then - return b + a - else - return b + a * a - endif - -def main(field a, field b)-> field: - a = a + 1 - for field a in 0..400 do - b = add(a, b) - b = b == 3 ? 2 : 4 - a = a + b - endfor - // Blk 4 - a = a + 1 - return a + b diff --git a/zok_tests/benchmarks/unit_tests/2pc_func_call.zok b/zok_tests/benchmarks/unit_tests/2pc_func_call.zok deleted file mode 100644 index 495fc111..00000000 --- a/zok_tests/benchmarks/unit_tests/2pc_func_call.zok +++ /dev/null @@ -1,24 +0,0 @@ -def add_helper(field c, field b) -> field: - return c + b - -def add(field a, field b) -> field: - field c = a - field d = b - return add_helper(c, b) - -def main(field a, field b) -> field: - for field i in 0..4 do - a = a + 1 - field a = 10 - b = add(a, b) - field c = 8 - b = add(b, c) - endfor - a = add(a, 10) - for field i in 0..2 do - for field j in 0..4 do - field a = 20 - b = add(a, b) - endfor - endfor - return add(a, b) diff --git a/zok_tests/benchmarks/unit_tests/2pc_func_simp.zok b/zok_tests/benchmarks/unit_tests/2pc_func_simp.zok deleted file mode 100644 index 2946cb70..00000000 --- a/zok_tests/benchmarks/unit_tests/2pc_func_simp.zok +++ /dev/null @@ -1,20 +0,0 @@ -def add(field a, field b) -> field: - return a + b - -def main() -> field: - field a = 5 - field b = 4 - for field i in 0..4 do - field a = 10 - for field j in 0..2 do - a = a + 1 - field a = 20 - endfor - for field k in 0..2 do - a = a + 1 - field a = 40 - field b = 10 - endfor - b = a + b - endfor - return a + b diff --git a/zok_tests/benchmarks/unit_tests/2pc_if_else.zok b/zok_tests/benchmarks/unit_tests/2pc_if_else.zok deleted file mode 100644 index 1d906567..00000000 --- a/zok_tests/benchmarks/unit_tests/2pc_if_else.zok +++ /dev/null @@ -1,25 +0,0 @@ -def main(field a, field b, field c) -> field: - if a != 4 then - field b = 12 - if c == 12 then - field b = 14 - c = c + b - else - field d = 12 - c = c + d - endif - c = c + b - else - field b = 9 - if a < 6 then - b = 8 - c = b - endif - b = 6 - c = c + b - endif - a = a + 10 - if a != 1 then - c = c + 1 - endif - return a + b + c diff --git a/zok_tests/benchmarks/unit_tests/2pc_if_return.zok b/zok_tests/benchmarks/unit_tests/2pc_if_return.zok deleted file mode 100644 index 5b0925be..00000000 --- a/zok_tests/benchmarks/unit_tests/2pc_if_return.zok +++ /dev/null @@ -1,36 +0,0 @@ -def add(field a, field b) -> field: - return a + b - -def foo(field a, field b, field c) -> field: - for field i in 0..4 do - c = i - field i = 10 - if c < b then - field c = 5 - if a < c then - return add(c, i) - endif - else - if c < a then - b = b + c - else - if c == 0 then - b = b + a - else - b = b + b - endif - endif - i = i + 1 - endif - endfor - return a + b + c - -def main(field a, field b, field c) -> field: - for field i in 0..2 do - field a = 5 - if a < add(i, add(i, b)) then - return foo(a, b, c) - a = a + 10 - endif - endfor - return a diff --git a/zok_tests/benchmarks/unit_tests/2pc_if_return_cc.input b/zok_tests/benchmarks/unit_tests/2pc_if_return_cc.input deleted file mode 100644 index 50527abd..00000000 --- a/zok_tests/benchmarks/unit_tests/2pc_if_return_cc.input +++ /dev/null @@ -1,4 +0,0 @@ -a 5 -b 4 -c 3 -END diff --git a/zok_tests/benchmarks/unit_tests/2pc_if_return_cc.zok b/zok_tests/benchmarks/unit_tests/2pc_if_return_cc.zok deleted file mode 100644 index f99dd950..00000000 --- a/zok_tests/benchmarks/unit_tests/2pc_if_return_cc.zok +++ /dev/null @@ -1,29 +0,0 @@ -def add(field a, field b) -> field: - return a + b - -def foo(field a, field b, field c) -> field: - for field i in 0..4 do - c = i - if c < b then - if a < 5 then - return add(5, i) - endif - else - if c < a then - b = b + c - else - if c == 0 then - b = b + a - else - b = b + b - endif - endif - endif - endfor - return a + b + c - -def main(field a, field b, field c) -> field: - if a < add(5, add(5, b)) then - return foo(a, b, c) - endif - return a diff --git a/zok_tests/benchmarks/unit_tests/2pc_loop_addition.zok b/zok_tests/benchmarks/unit_tests/2pc_loop_addition.zok deleted file mode 100644 index 10807cef..00000000 --- a/zok_tests/benchmarks/unit_tests/2pc_loop_addition.zok +++ /dev/null @@ -1,16 +0,0 @@ -def main() -> field: - field a = 5 - field b = 4 - a = 3 - field i = 10 - for field i in 0..4 do - a = a + 1 - field a = 60 - field i = 10 - for field j in 0..6 do - field a = 80 - endfor - b = b + 1 - endfor - a = a + 10 - return a + b + i diff --git a/zok_tests/benchmarks/unit_tests/2pc_loop_merge.zok b/zok_tests/benchmarks/unit_tests/2pc_loop_merge.zok deleted file mode 100644 index a98f611a..00000000 --- a/zok_tests/benchmarks/unit_tests/2pc_loop_merge.zok +++ /dev/null @@ -1,9 +0,0 @@ -def main(field a) -> field: - a = a < 3 ? 2 : 4 - a = a < 3 ? 2 : 4 - a = a < 3 ? 2 : 4 - a = a < 3 ? 2 : 4 - for field i in 0..2 do - a = a + 1 - endfor - return a diff --git a/zok_tests/benchmarks/unit_tests/2pc_mult_func.zok b/zok_tests/benchmarks/unit_tests/2pc_mult_func.zok deleted file mode 100644 index 571696c1..00000000 --- a/zok_tests/benchmarks/unit_tests/2pc_mult_func.zok +++ /dev/null @@ -1,17 +0,0 @@ -def add(field a, field b) -> field: - return a + b - -def mult(field a, field b) -> field: - return a * b - -def main() -> field: - field a = 5 - field b = 4 - field a = 3 - for field i in 0..4 do - a = a + 1 - field a = 60 - b = add(add(a, b), b) - endfor - a = a + 10 - return add(a, mult(b, a)) diff --git a/zok_tests/benchmarks/unit_tests/2pc_multi_func_call.zok b/zok_tests/benchmarks/unit_tests/2pc_multi_func_call.zok deleted file mode 100644 index 13388ab8..00000000 --- a/zok_tests/benchmarks/unit_tests/2pc_multi_func_call.zok +++ /dev/null @@ -1,8 +0,0 @@ -def add(field a, field b) -> field: - return a + b - -def foo(field a, field c) -> field: - return add(add(a, c), add(c, a)) - -def main(field a, field b, field c, field d) -> field: - return foo(foo(a, b), foo(c, d)) diff --git a/zok_tests/benchmarks/unit_tests/2pc_scope_simp.zok b/zok_tests/benchmarks/unit_tests/2pc_scope_simp.zok deleted file mode 100644 index c8de75d1..00000000 --- a/zok_tests/benchmarks/unit_tests/2pc_scope_simp.zok +++ /dev/null @@ -1,12 +0,0 @@ -def main() -> field: - field a = 5 - field b = 4 - for field i in 0..2 do - field a = 10 - for field j in 0..2 do - field a = 20 - endfor - field a = 20 - b = a - endfor - return a + b diff --git a/zok_tests/benchmarks/unit_tests/2pc_type_change.input b/zok_tests/benchmarks/unit_tests/2pc_type_change.input deleted file mode 100644 index f50fc064..00000000 --- a/zok_tests/benchmarks/unit_tests/2pc_type_change.input +++ /dev/null @@ -1,3 +0,0 @@ -a 5 -b 4 -END diff --git a/zok_tests/benchmarks/unit_tests/2pc_type_change.zok b/zok_tests/benchmarks/unit_tests/2pc_type_change.zok deleted file mode 100644 index b802ff20..00000000 --- a/zok_tests/benchmarks/unit_tests/2pc_type_change.zok +++ /dev/null @@ -1,13 +0,0 @@ -// Test Circ_Block's behavior when a variable is shadowed in the same scope with a different type -// Test includes %RET - -def add(field a, field b) -> field: - return a + b - -def main(u32 a, u32 b) -> u32: - u32 d = a - u32 e = b - field a = 10 - field b = 20 - u32 r = add(a, b) == a + b ? d : e - return r diff --git a/zok_tests/benchmarks/unit_tests/array_input.input b/zok_tests/benchmarks/unit_tests/array_input.input deleted file mode 100644 index 40437e08..00000000 --- a/zok_tests/benchmarks/unit_tests/array_input.input +++ /dev/null @@ -1,4 +0,0 @@ -MEM [ 0 1 3 1 3 5 4 2 7 3 ] -a 0 -b [ 2 3 5 6 7 ] -END diff --git a/zok_tests/benchmarks/unit_tests/array_input.zok b/zok_tests/benchmarks/unit_tests/array_input.zok deleted file mode 100644 index 1f333528..00000000 --- a/zok_tests/benchmarks/unit_tests/array_input.zok +++ /dev/null @@ -1,6 +0,0 @@ -// Test array inputs -def main(field[10] MEM, field[6] a, field[5] b) -> field: - assert(a[2] == a[4]) - b[4] = 3 - assert(b[4] == b[1]) - return 1 diff --git a/zok_tests/benchmarks/unit_tests/dead_input.input b/zok_tests/benchmarks/unit_tests/dead_input.input deleted file mode 100644 index 85e171d9..00000000 --- a/zok_tests/benchmarks/unit_tests/dead_input.input +++ /dev/null @@ -1,3 +0,0 @@ -a 5 -b 3 -END diff --git a/zok_tests/benchmarks/unit_tests/dead_input.zok b/zok_tests/benchmarks/unit_tests/dead_input.zok deleted file mode 100644 index ea4eb7a3..00000000 --- a/zok_tests/benchmarks/unit_tests/dead_input.zok +++ /dev/null @@ -1,2 +0,0 @@ -def main(u32 a, u32 b) -> u32: - return b diff --git a/zok_tests/benchmarks/unit_tests/inline_func.zok b/zok_tests/benchmarks/unit_tests/inline_func.zok deleted file mode 100644 index 21ae3bdd..00000000 --- a/zok_tests/benchmarks/unit_tests/inline_func.zok +++ /dev/null @@ -1,8 +0,0 @@ -def bar() -> u32: - return 1 - -def inline foo() -> u32: - return bar() - -def main() -> u32: - return foo() + foo() diff --git a/zok_tests/benchmarks/unit_tests/multi_dim.zok b/zok_tests/benchmarks/unit_tests/multi_dim.zok deleted file mode 100644 index dd6f8b95..00000000 --- a/zok_tests/benchmarks/unit_tests/multi_dim.zok +++ /dev/null @@ -1,10 +0,0 @@ -// Note: when declared as [[2; b]; a], all entries of arr shares the same pointer, similar to python - -def main(u32 a, u32 b, u32 c, u32 d) -> field: - field[a][b] arr = [[2; b]; a] - field[b] tmp = [4; b] - arr[1] = tmp - // To perform multi-dimensional STORE, one need to first perform LOAD - // load = arr[0]; load[d] = 3 - arr[0][d] = 3 - return arr[c][d] diff --git a/zok_tests/benchmarks/unit_tests/read_only_array.input b/zok_tests/benchmarks/unit_tests/read_only_array.input deleted file mode 100644 index adffab2d..00000000 --- a/zok_tests/benchmarks/unit_tests/read_only_array.input +++ /dev/null @@ -1,4 +0,0 @@ -a [ 0 ] -b [ro 0 ] -c 1 -END diff --git a/zok_tests/benchmarks/unit_tests/read_only_array.zok b/zok_tests/benchmarks/unit_tests/read_only_array.zok deleted file mode 100644 index f6b968ab..00000000 --- a/zok_tests/benchmarks/unit_tests/read_only_array.zok +++ /dev/null @@ -1,11 +0,0 @@ -// Test the type check of read-only arrays -def main(field[0] a, field[ro 0] b, field c) -> field: - field x = 0 - if c == 1 then - if c == 0 then - x = a[0] - else - x = b[0] - endif - endif - return x diff --git a/zok_tests/benchmarks/unit_tests/test.zok b/zok_tests/benchmarks/unit_tests/test.zok deleted file mode 100644 index a3e76b5f..00000000 --- a/zok_tests/benchmarks/unit_tests/test.zok +++ /dev/null @@ -1,22 +0,0 @@ -// Bug report: function call that invokes %SP but no other spilling - -def bar(u32 a) -> u32: - return a - -def foo(u32 a) -> u32: - return bar(a) - -def main(u32 a, u32 b, u32 c) -> u32: - u32 ret = 0 - if a > 0 then - u32 d = a - u32 e = b - for u32 i in 0..100 do - d = d + b - e = e + c - endfor - ret = d + e - else - ret = foo(a + b + c) - endif - return ret diff --git a/zok_tests/benchmarks/unit_tests/test_witness.input b/zok_tests/benchmarks/unit_tests/test_witness.input deleted file mode 100644 index e0bd31b3..00000000 --- a/zok_tests/benchmarks/unit_tests/test_witness.input +++ /dev/null @@ -1,2 +0,0 @@ -n 3 -END diff --git a/zok_tests/benchmarks/unit_tests/test_witness.witness b/zok_tests/benchmarks/unit_tests/test_witness.witness deleted file mode 100644 index 6297d3ff..00000000 --- a/zok_tests/benchmarks/unit_tests/test_witness.witness +++ /dev/null @@ -1,5 +0,0 @@ -1 1 0 -1 1 0 -1 1 0 -1 1 0 -END diff --git a/zok_tests/benchmarks/unit_tests/test_witness.zok b/zok_tests/benchmarks/unit_tests/test_witness.zok deleted file mode 100644 index 4da450f3..00000000 --- a/zok_tests/benchmarks/unit_tests/test_witness.zok +++ /dev/null @@ -1,12 +0,0 @@ -def main(u32 n) -> u32: - witness u32 b0 - witness u32 b1 - witness u32 b2 - for u32 i in 0..n do - witness u32 b0 - witness u32 b1 - witness u32 b2 - assert(b0 * 4 + b1 * 2 + b2 * 1 == 6) - endfor - assert(b0 * 4 + b1 * 2 + b2 * 1 == 6) - return 1 diff --git a/zok_tests/benchmarks/unit_tests/weird_array.input b/zok_tests/benchmarks/unit_tests/weird_array.input deleted file mode 100644 index cd63b5b1..00000000 --- a/zok_tests/benchmarks/unit_tests/weird_array.input +++ /dev/null @@ -1,3 +0,0 @@ -a 5 -b 1 -END diff --git a/zok_tests/benchmarks/unit_tests/weird_array.zok b/zok_tests/benchmarks/unit_tests/weird_array.zok deleted file mode 100644 index 8749be6e..00000000 --- a/zok_tests/benchmarks/unit_tests/weird_array.zok +++ /dev/null @@ -1,16 +0,0 @@ -// Test array appearance in all weird locations -def foo(u32[0] arr, u32 b) -> u32[0]: - return [arr[b]; 2 * b] - -def main(u32 a, u32 b) -> u32: - u32[a] s = [0; a] - for u32 i in 0..a do - s[i] = i - endfor - u32 t = 0 - for u32 i in 0..s[1] do - u32[2 * b] tmp = foo([0, 1, 2, 3, 4, 5], b) - t = tmp[0] - endfor - - return t