summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Wernick <justin@worthe-it.co.za>2022-12-21 18:45:26 +0200
committerJustin Wernick <justin@worthe-it.co.za>2022-12-21 18:45:26 +0200
commitfc12d3728a85d2e0a3d4de32a30faa0c7162ab2f (patch)
treee6c4378f3141f7460ee02d1079680cce4e1246f2
parentac60314a48408277bd59ce14fdb3964355381f97 (diff)
Day 21 part 1
-rw-r--r--2022/inputs/day_21.txt2643
-rw-r--r--2022/src/bin/day_21.rs291
2 files changed, 2934 insertions, 0 deletions
diff --git a/2022/inputs/day_21.txt b/2022/inputs/day_21.txt
new file mode 100644
index 0000000..e59658c
--- /dev/null
+++ b/2022/inputs/day_21.txt
@@ -0,0 +1,2643 @@
+nfpr: 3
+mhnp: 2
+lhzg: vgvf * hnfq
+wwnq: hcvc + clwj
+bzvl: 2
+rtbr: fdqt + nwlj
+dgzz: lhnr + fwwm
+nwnj: 4
+hwqb: wcfm * fcrt
+vbdj: 13
+glcj: 3
+mfbw: 2
+wwfg: djwb * lfdc
+pfgc: qscf + wvps
+hmfb: wmvs * sqmf
+smcp: 2
+gbpj: 9
+ncrg: lnfb * vtnc
+lhcf: slrl + hzwm
+pvtg: mprn + hvtr
+vpdc: vcql * pwhq
+tqrl: 4
+mpdf: 5
+zjmz: qssp + mmqq
+ftqz: 2
+fsdf: gdnh + cwwn
+pjrd: 5
+sglv: 11
+bvws: 5
+wcfm: 2
+hbbd: 2
+btgq: fwpm + jgph
+fsdd: 3
+tzgp: wjgz - rfdf
+dvzl: csdd + cfcz
+rqbq: 2
+jhrl: zfvc * rzvq
+wpms: zhcw * qwll
+vrbz: zbwz * cszq
+fcgz: cqht + vhtf
+sthr: thqf + zcjv
+lqzt: 3
+wwcz: hlln * mgmp
+smcs: 2
+trmw: jgzj / qvzq
+tmpq: 5
+dmhl: vrhg - nzmj
+zsww: 2
+rlfh: 5
+rgtn: 5
+bhws: lntz + bvcz
+rfwq: zrmn * fwlf
+djzp: 4
+dgtr: 20
+bmds: bdmb * wdvv
+mjlq: 14
+bfdr: slwq * gjsz
+vrgp: 14
+mmpg: nlff / tlzs
+dphq: ngcc + whhr
+jvwg: fczm * qspw
+nnlc: qgsh * jrrh
+zljq: 7
+hqpf: rznw * pdnq
+dczq: 2
+tsvw: 4
+pnss: 2
+cwhv: fjnl + qhlv
+fwrq: 2
+zmsn: gqnm * mnqm
+rfsv: mpdf * sqgt
+wncg: 5
+lcbg: 12
+wddt: 6
+bcsr: mtqb + bqgf
+hggp: 3
+fmrg: qldl * pqsb
+ctfn: 4
+nhth: wppc + ppgd
+whfn: vhvn + fvzg
+tmvj: szzb * qnjw
+fvpr: fssn / qddm
+wfjh: 2
+dcbm: 1
+bcrw: 5
+svtd: rtfh + dbrp
+jcjm: 8
+fmss: ztst * zjtd
+ppgz: 3
+wmqt: 2
+lhmt: vvzs * bzfv
+gnnf: 5
+hnjf: jwjv * jpbp
+twbv: qpww / jpqp
+rszt: 6
+vqrc: 3
+qnjw: 2
+svlw: tnzj - hdql
+lbgv: 2
+tfcl: 7
+sfvp: mgcq * mjcq
+wqnw: hmhn + njmc
+fvnz: wdgg + vvpw
+rnls: 14
+bvcm: 1
+jmrs: hfls + rldh
+fmsl: cwrq * mnlr
+llzd: jrrf + rzsb
+mzsg: mjlq + pfsr
+wbgz: glhd + hddc
+drzc: 20
+lvzr: 15
+zfdt: 2
+mdww: ltvp * fvld
+tdff: crwh + cppn
+lsdm: 3
+pdsl: 10
+bdtv: 9
+sclb: 2
+llzm: mmmw + wfzm
+lqnw: wqwl * ssft
+qzrc: vbbp * qpzm
+dsmg: 6
+hvts: 6
+rqlq: 15
+tvmj: ppnm + rnjm
+mztc: mczb * gphh
+gvww: 11
+zthb: 4
+svsp: 7
+dcgb: 2
+dbfj: 8
+bdqv: chqt + vhsg
+rczc: 11
+hsgt: 2
+dsfp: 2
+pbrl: rlhg * cgmn
+rllv: hmpl + psbb
+hjjd: mlnr + mmfz
+gphh: 5
+wpsl: lnbh / lsgz
+bdcr: 2
+jrwg: 3
+nhss: 10
+dznz: gvdd + jzss
+hbbs: 2
+gfcg: 2
+tqvc: 11
+jbnw: 6
+tvpz: 2
+nhsn: qgzw / bljg
+hshc: 3
+dhdq: mhpq * qvhp
+tnzj: vthb * hbnt
+rvzd: 1
+vhpp: hblp * clws
+cjfc: stfd - sgcw
+ftgw: bbrt * flsh
+mdjq: 5
+jgmq: 5
+srdb: vsvb * rjcg
+nhvn: 4
+tsnm: cvzt * fjpl
+qgsh: nfrp + ctjg
+fmwr: cbnr * fpwm
+grbv: 5
+nhqc: 14
+nrpq: 11
+crmh: qbqd - jqql
+vqpl: hqsf * ntlp
+ctbh: 9
+prjm: 3
+rtzd: 2
+jznz: tjls + pgcq
+dqnh: 2
+sfrc: twjv * bblj
+njfq: qhfj - lvpl
+nfzm: vlvg - brmz
+dvwv: rfsv - clcl
+wjwl: 2
+ggjh: 3
+jlcj: tcbz - crjq
+rlhg: 3
+bnzz: 3
+sgvc: 2
+gjtl: zwnl - vjfd
+rnjm: dqps * vdlz
+fwwm: 4
+hpct: 2
+hbbb: mrjw - fggh
+pnjg: rpgs + qpns
+mnqm: 4
+hvpt: 1
+znld: mnwq * ctnp
+csgj: 5
+cwff: 2
+rzfp: wbqm * mflz
+vlvg: jltj + tgmh
+gshc: 3
+fjqv: 3
+trnf: cbhv * fjqv
+bljg: 2
+srgr: dznz + ntnr
+fssn: rjfs + mzbb
+sdfd: 2
+tnrt: vpdc + vsqz
+jtjj: gtls * tcbp
+cmvw: 2
+cqht: jrdb + gwqq
+brct: 5
+rqjj: zllt * rvwc
+jvzn: qncv * jftn
+hszt: ldmb + sncl
+wcpw: 2
+mlld: 1
+tfwz: gdmq / qcrp
+hrfq: 11
+mlnr: vjjh * wftp
+rzvt: 16
+ccht: 2
+wsrh: rzvt * thbq
+nfrv: 4
+hwzq: ldps + fvhc
+flsg: 2
+flzc: jpsv + tcgs
+qjdw: 2
+zhjs: 3
+wtjm: vtgj + jdzv
+qtzl: 12
+ltgp: 3
+tmst: 2
+vctd: rqbq * hmtb
+btzj: 2
+qbcp: 2
+bbcm: vjhz * mhps
+qhfj: pfdj + mdrm
+bzjj: dbnq * tvmq
+mjvq: bqzm * mhrp
+wrdz: vqlc + rqtj
+gvnr: 4
+nchp: 13
+fwpm: vmjg - rbnb
+dzpb: dsmz * zhnb
+bmfv: hzcn + csgj
+qbzh: 20
+tzhq: 3
+fcrt: fsdd * sgtb
+trdv: smpc - vwrc
+hmnj: 20
+cdhn: lccv * qcpp
+zwhl: wzmh + fdtg
+sgcf: qfsn + wbps
+vpdd: hqdt + pnhl
+bbdd: rjbv * pmrz
+rjpc: 3
+bfdj: zfwf + nfnf
+gjbq: 2
+jhst: 5
+qdcn: 3
+jljn: 2
+pglr: hcsm / wncg
+tthz: 3
+rvwc: 2
+ctjg: 5
+ppjr: 7
+gmpb: 9
+rspn: 5
+vqhh: pqjw + lpnj
+vljn: pzpn + hvts
+bdmb: scqr - hqpv
+wfsl: qpdp + zzmg
+cnpn: slpb * ggqm
+sczh: 3
+dqss: czgd + ppsj
+pfpc: wdnm * grgl
+rnzm: 5
+tbch: gcjw + dczj
+zmwd: 14
+ftph: nzzt + fnld
+vwss: 4
+hlvz: glwd - rzms
+psps: lvcl * gwfw
+cdjd: hvjv + djhh
+nqsf: 2
+ngmc: 7
+sllg: 2
+lrpq: cjwd * ffms
+hlmj: rnmc + bjvz
+vfbl: 5
+chwr: qjml * pldf
+btwf: svnh * glmg
+bmdp: 7
+sqrf: 7
+jznp: 5
+gnbn: 7
+zlcq: smjc * crlr
+lvpl: nvqf * bdqh
+bsts: pscb + zzhj
+hszv: bhph * tvpf
+vcsm: rhnq * rfvf
+lfdc: zlps * jpmf
+rjgb: qwlf + jdhv
+fddj: pdtv * shgn
+bvzm: rbmv * sbvv
+dtzc: nwfq + nrpq
+cmqs: bvzm / fvws
+mtqb: smzd * bsdw
+lgwp: 2
+shgj: jhgf * zcth
+swzq: 5
+rdtm: rqqs - wdss
+rtqj: 2
+cwqh: 1
+fmhd: hmhh + mrdd
+czwr: vdjr + gnjl
+wdnm: 4
+cbmr: mvld * sfsz
+ndzq: 5
+ssft: twdv + cnqg
+qprn: 2
+mqpw: 2
+fpjd: 3
+grhd: 2
+nrrw: 2
+dzwb: 4
+zhfb: wmsh * pglr
+cltn: 3
+hcqq: brgz - nwqz
+bnwn: 16
+phst: 2
+gvhz: 3
+ghzb: smwj * rlgp
+plbm: pljz + wqzz
+cszq: rsbn + tlvd
+jpbp: cwwh + nvhl
+nsmc: 3
+cmtg: bmfv * shjm
+qrmt: zrvw + bbcm
+nlsh: nwwh + tsrb
+qwgt: mdcw + fvmv
+bbbr: 3
+vdwd: 3
+hmmt: nzsl - gbpj
+tvtl: hnlg - tfjv
+qbqd: dhpj / wfrs
+fggh: mbpm * rjtp
+cjns: wlbh - mjtq
+wtmf: rtdl * mmwf
+nwwh: gnvm + crlq
+cqvm: zqwb * wmjj
+lrvz: ttqc + bdmc
+bbrp: 4
+dfhb: 2
+nzmg: bsrm * qhwf
+lgdg: 3
+rbmw: tfcl * pwlm
+pdmt: hgrb * jvzn
+gnpg: 5
+dbhn: 9
+wdvv: qvvq * ctvj
+gnjl: bdvs / qqgl
+szhm: crnh + jmpv
+zwmv: hgfz + mghg
+cnsf: 10
+dbnw: 3
+cpth: lgrc * hwzd
+ftjv: ltlv + qzpj
+shnl: 2
+smmv: dvjp * bnzz
+lrzq: 2
+wffl: 2
+zwgd: lhzg / jzwp
+qhnn: gcgj * scnf
+mdqb: 1
+wwzh: 2
+slnn: 11
+qqms: vdrc * hczr
+jzcf: 4
+wfrs: 2
+vgcm: 2
+qrwj: 4
+bwsz: 5
+mrqn: 2
+zhww: 8
+crnh: 20
+wcnr: dgqm + jnwd
+nmsg: 5
+fffw: wtmf + fvml
+jbjw: 2
+zjlc: rrmg / dzdc
+lnbh: qlwj - jtvr
+dbrp: jhfh + nqsj
+vrhg: pvsv * vwfj
+tnqd: 13
+ggwv: 2
+mmrb: hrpr + rfcp
+wgqw: 2
+qnzm: 3
+njsv: 4
+fjsf: qcsn + mjml
+dfpz: 2
+hnrh: 3
+fjsz: tsvw * bvmz
+tvzz: nwsv + znpt
+dmwl: 19
+rlqz: fgjb * zpvw
+hqsq: njsv * cwff
+zbdg: 2
+mrdd: vbcp + srfw
+dwvm: bbdd + nnpg
+grhg: 2
+qtqf: twgn + cbtm
+drst: jwwn * rwhd
+bnbw: 7
+zbfp: dzpb * dqss
+pndj: 1
+jrdb: 16
+ffws: lrnq * qvbs
+jmhp: 2
+rqpl: 11
+pjdn: 6
+brjh: prrc + ldlt
+ttrt: 4
+ctrv: 2
+jdzv: 6
+pbpg: 2
+jtsc: gpjc / nrcz
+glwd: 18
+tstt: zbzs * zzlb
+gdqb: nqnv * qnpg
+vlnc: msfz + pgvw
+znpt: vnwb * jtdr
+jhwc: 4
+qhlv: lrhh * ntdb
+lctr: 3
+tswc: 3
+gtgp: sjgz * dbsj
+zwnl: qvjp + jhpn
+lgpt: jtdg - mbvj
+tcbp: 2
+bjwf: fvwf - hjjd
+cvzn: 3
+pqqd: ljbw + jsdl
+gdnh: jvqq - spjj
+whnr: 13
+qddm: 3
+qpwq: dvfn / gwhz
+szfr: 5
+cbfz: dszf + nfmc
+pmdb: bsvj * mqqg
+dznt: pfcl * tcts
+lgsg: qvhh * dtcn
+mdzp: 3
+fcjv: 6
+bdlp: jjjm + hpzz
+zhrs: hvnj * bmjr
+ngnz: 2
+clpj: wcdg - srml
+npjm: 3
+vfnt: cpth + cwbb
+ldll: bmnh / zhrf
+dvst: lqzt * rfjz
+tblh: 20
+vpvs: nhqc + btgv
+dtqb: 5
+djdt: fzpz * vhbz
+hpcf: 17
+zfvc: 9
+glmv: pbrl + hqwr
+crfq: 3
+jzrl: 3
+ndzf: pldm + qvfg
+twml: 10
+hbzb: 3
+llwt: mwst + gtgp
+brnm: 3
+hzbg: fvbf * sfbf
+cflr: 7
+jgzj: ztjq * sznf
+gjmn: qdcn * gbpm
+zjpq: 2
+vntg: 2
+zhnb: 5
+zvzb: 4
+qggg: 1
+ghdm: 2
+gwlf: 4
+tqhb: mgjb + mwnm
+lmwv: sqjm / ppgz
+tbnn: 14
+gbcw: hrwd * vcqz
+dzzl: wltr * vljn
+mqqg: rbvv + dvzl
+pbdp: rpcp + nlsh
+wcst: 3
+qfcn: 2
+vdtd: qfrh * rqlq
+bhnm: 2
+vqlc: fvpr * wfnt
+rshw: cnfd * vwfv
+gdbn: nlbv - shnt
+gzpt: jqgn + swzj
+qfqb: 4
+srvg: fvjc + rzdl
+qzpd: bnfs * zpvm
+mfrv: 2
+bpfp: 2
+msgw: 2
+jqql: rhwf * gmbl
+mmcp: 2
+rjbv: fcdn * vplt
+pgsc: gdjm / sntl
+wzbr: 2
+jrpl: 3
+tscf: 2
+wtqz: zhbf * twgp
+nnrt: vfhp / gnbn
+cssz: vqhh + bmds
+gmdz: hphs + rnvf
+pwhg: hbbd * qqll
+zznw: 2
+slpb: 2
+clwj: 3
+hdbf: mmzp / sbfm
+tdnq: 3
+bwnp: whwz * mfjg
+jpwt: wsll * ltwt
+mvld: 4
+crjq: 2
+qhwf: lgjp + pjdd
+nrcz: 2
+wggr: 3
+lmlc: rfwq + nfrv
+hwmz: 13
+snhg: nbzn * mlsq
+twzt: 2
+bhvm: rcpd + ncrg
+zqbz: 8
+lbvl: 7
+nqfq: sdcq - tnpn
+dcrf: 5
+rbmv: phzm / vlgs
+svfg: 3
+ttrs: chnw * wghb
+qfjr: 15
+wsll: 3
+zmwq: 6
+hcvc: 4
+gpvt: rnls + twwc
+pmjn: bdwh - dqdb
+hsll: znfl + hwzq
+dfbn: 5
+vvcf: 3
+wjbj: 9
+wjsq: 3
+zjtf: 2
+qfbn: ddrp * qhdc
+mbcw: 5
+ztds: jmwv * gvmg
+pmtz: gtqt + nfzm
+ztst: ndzq + ndds
+zztr: 7
+znbq: 1
+bsbh: cjns / cvpv
+lrmh: shwb * grhg
+ljwm: 5
+fmht: rwgb * sdfd
+dzdc: 2
+ctzn: jglt * jlnt
+dnsd: zzld / flsg
+dmlh: drbc * lsdm
+qbbw: 18
+vsqz: dflr * tblh
+ftss: 5
+gntf: dnmm * wvss
+hrlp: 2
+qgpm: 2
+hqwr: hhmn * cwvr
+bhhj: 2
+vmss: 6
+sqmf: 3
+pscb: cjfc * sjbq
+wvps: zjsb + jbnw
+fsfs: bmsr + nltq
+gvhf: 7
+fnbg: 5
+pjwn: 4
+nwpp: 2
+mdnv: ghpn + jpnn
+rwhd: rnzp * whbg
+twjm: fghf + btjt
+tvtg: 18
+vplt: 4
+cflt: wtzs * vvzb
+hqcr: pczl * nnjh
+tdsq: nwrd + dtzc
+zsms: 3
+vjpt: 15
+cmgw: 2
+hmhn: 16
+jvqq: qzhj - wwwf
+fvzg: strg + jpnr
+wmvs: hzvv - fbmp
+pgrs: 4
+bbrn: cnpn * htrc
+jsnc: phld / gvhz
+wftp: 8
+mmfz: 20
+zzmg: 6
+scnf: mfrv * mlbh
+bdqh: 3
+jtdr: ttrs / fdzp
+pwnn: 10
+qpns: bjwf - mhvw
+nqhg: bszp * qmmn
+tlzs: 3
+bslr: vzlb - wwmm
+fpsb: swdm / brvg
+znll: 2
+tjjc: tdff + zjmz
+fdlt: 8
+nvhl: 5
+rzsb: ggzt - dwmq
+crpm: dcjz + tfgm
+svvz: 4
+qznn: tgrj + lsnr
+nvpl: nhvw * fvqc
+tqls: 7
+czvp: 4
+zqnt: 11
+jshd: 2
+vtzp: 2
+jpjf: 3
+sgcw: qszs + qtzs
+cwnc: llzm + strj
+wqhv: mdmw + prjv
+jbwg: 18
+mmzp: whcg * ttth
+vwpn: 2
+qzmj: 3
+ncgf: thcl + prwj
+blgr: 3
+mncv: bwwh + bhrg
+slwq: 2
+pfzz: fvcg * djzp
+mjch: vlms / dlqg
+mghg: gmmn * jhfq
+fvwf: qqcs * dwmd
+jltj: gctw - hfsj
+bttc: 11
+wbzc: mbhj * qlmw
+hgqf: 4
+qcpp: 2
+tngh: tpjl * dnhb
+bhrg: 6
+bwdg: 5
+pwbl: wlzt / snvz
+dpgz: 2
+sbsb: 2
+rgrf: wbrl * tjmq
+hmhh: mzsg * cmvw
+lwmw: nchj + zvrv
+vssp: czjl * qrqt
+flpm: 2
+dfqr: nrpj * lchz
+rnnh: hqsq + tsrt
+thvd: qdtq + gcdj
+pcpq: znfq + rjqj
+zmsr: sgbp + nnrt
+dvjp: 3
+dhpj: ndzf + jhjz
+hpzl: 3
+csdd: wpcs * tmvw
+mbmd: 4
+cbnr: 5
+cfzl: 4
+cjwd: jpvc / bhnm
+fvdd: hbdz + fptg
+hjnv: vwhz / gsjp
+glmg: 4
+ljbw: shsb + lhvd
+thcl: gvsp + shrc
+zbtt: qfrl + prgw
+dbch: 2
+chnw: 3
+gshw: 3
+vhff: wsdc * jwsn
+hrpb: 5
+vdrc: bfdj + nzql
+rnmc: dztm * wjsq
+rpgs: dnrv + djvb
+tstm: 5
+jngt: 2
+tltg: pdsl - vprd
+fmpw: 3
+qqll: 3
+pgvw: 4
+zspd: tcms + wjqg
+bsdf: gwsw + hfcm
+jvgg: dhdq * tpqf
+ttsv: gwws * sllg
+bpfb: tzhq * wtqz
+dnhb: 13
+sdqn: ndmp - dzlh
+lpnj: hzns + ljcc
+qscf: 2
+twwc: qfcn + btpj
+vprm: 2
+cstf: 3
+cpnn: 16
+prjv: 6
+fhtq: jhwc + hwdc
+jqgd: dfpz * zbzn
+qmtw: dsqh - cfdg
+mmwf: 3
+ptzv: 3
+gwtf: mhnp * zlvb
+dwmq: bbrn * cbtq
+twgn: gwbm * csjj
+wmhp: 3
+dglq: qvjl * pnss
+clvq: 2
+nqhc: 2
+ngcc: svsp * cfzd
+pgwh: ltgp * wzdn
+mmjj: lswr * lnfd
+jrdz: 2
+jgzn: 5
+vgwp: 14
+wdzn: 14
+rjqj: trtn - ddcr
+lnfb: 3
+phwt: 6
+fvrt: 2
+pbnl: cltn * plsg
+vvzs: 2
+fbdr: szhm * jnth
+rsrm: 3
+fnnn: 1
+jrzg: 7
+tfct: 3
+wrrn: 17
+zbcd: wtlj + tjrd
+pmhg: 3
+trrw: 3
+flsh: 3
+tchj: dhjs * mzsr
+fvqn: lcwf * ghtz
+jjfl: tvtg / tlvj
+dzrp: 3
+dqpt: 3
+fsvt: 2
+lzlv: 3
+bngh: drst + bvsq
+jwpq: lmcb * blnh
+lvcl: 11
+qzss: pmtz * pdmt
+pfqb: 5
+qqgl: 5
+vnjr: 2
+phld: rtwh * vdwd
+qvjl: 3
+dqph: 4
+zzcv: 2
+whph: fztz / wffl
+psbb: 15
+vhdj: cddq * dcrf
+mflz: 3
+dztm: dgfd + pwnn
+jtvr: 4
+lgcb: hllz * dbfj
+ndmp: ctbh + jbqh
+gjzm: 14
+fvqc: 6
+nlnt: twbv * tngh
+cfdg: 5
+mcvg: jllb / zjvc
+lhww: 2
+vhtf: 8
+vnqz: bzjd / qfsc
+qmmn: 20
+qfpz: chvg / clvq
+qqqd: 19
+tqrn: ggnj * jwqd
+szzb: flgg - vvzt
+fvhf: 2
+qncv: tbnn / lqrj
+hwdg: zwtg + ljhw
+dtcn: 3
+ddcr: vlnc + szfr
+vwfj: swdn * ljlj
+fztm: 2
+wcdg: gwvz / lbvl
+plsg: 3
+snjv: 6
+qpww: pqhd * vvcf
+ltfn: 3
+csjj: fjhq / mfbw
+ffbc: 4
+nqhv: 5
+ljcc: 2
+tgnc: 3
+bsvj: grbv * prvz
+lmwf: 6
+rfvf: 4
+mbsb: bmpb / fjvz
+jnbm: 3
+qdqq: 8
+wqjh: hgqn + qldc
+fgdn: 2
+rptv: 5
+ljmb: 8
+pwqv: lrpl / fgdn
+htvv: zhrs + frrf
+hnlg: 16
+vpcq: 3
+rnrh: lvsv + nhvn
+nnff: rdms / hzws
+fjmz: fgwm + dphq
+sgbp: 9
+mhjd: tllf + bnhb
+fqcb: 2
+wsgr: wwnh + vfbl
+gpjc: fwpt * lbnb
+qwlf: bsvc * tfbb
+bjbv: 2
+hfjm: qwzw + fmwr
+mchq: qclp * lcjz
+qgcj: 4
+cqrz: thll + rfwf
+wmnc: 5
+hflc: 7
+tfdn: 2
+mwnm: lrzq * jzmv
+jlnt: 2
+hvdn: 4
+rfwf: 2
+tbdw: 3
+gdrc: 1
+brmz: 1
+nqsj: 13
+dqmw: 3
+bphw: fmjh + brlc
+cfcz: mshv * blcv
+prgw: 4
+wltc: 3
+wntb: 3
+hczr: 11
+vlgs: 2
+vtfr: sczh + cdtj
+zcdp: dczb - vjrq
+twdv: 5
+tgrj: 5
+lzbw: bdtv * bvsp
+jvmf: bsts / qvwl
+prlq: tfdn * mpdb
+vmsn: 3
+fspn: 17
+tcbz: qjdw * tqrl
+dpdh: 5
+dnrv: hphq * rqjj
+gtvt: ftss + bvcm
+zvdt: jzcf * lhmt
+rwll: bsbh + pgdw
+dcfn: jgzn * crgm
+tlvj: 3
+fjfv: 8
+tnpn: 4
+qfrh: 3
+mscj: hlmj * bvmp
+wvrv: 3
+zsvm: 4
+nfmc: 3
+pgzq: 9
+zfwf: 18
+rmgw: zzcw + ghpm
+shzl: 4
+lcsz: 2
+flbg: 3
+zbsf: zhbc * qnwb
+zfzv: 5
+gwhz: 3
+vhbc: thwd * cstf
+hbnt: 4
+plgf: bzfq + fbjd
+qmzf: 5
+qqcb: mwtp * vqlf
+gvwb: lzdr * mmrb
+nchj: 7
+jhhv: 2
+pnhl: 1
+qsrq: 10
+brlc: tptq * dbdm
+nlzw: 4
+tqtz: 3
+gwbm: jtjv + qssl
+ngtq: rmvg + rcmr
+wghb: vhff / flpm
+nlbv: gqtt * lfjb
+qcvs: jvmf + spfb
+wmjj: 3
+vvgs: tmlg + qdmn
+fmcq: 3
+mhpq: lwmw + mndz
+jqhf: fnzl * hcqq
+ghtz: gnpg * pcgq
+fgvz: wbjz + bpfb
+tbwz: 18
+dbwr: 2
+qssl: 16
+hzps: 20
+gqtt: zbfp + npdq
+jwsl: 15
+bfhs: 4
+wsrd: jghv + rjbd
+wmth: dfhb * bhws
+gzvd: ghdm * jqvf
+plnq: qqqd * jpjf
+fvws: 3
+vzlh: 5
+wvss: 3
+sntl: 2
+ldlt: 2
+hhth: ghfs + jvgg
+zzgp: zqbz * lmwr
+zngq: 1
+pzfv: mhhd / tmst
+hqsf: lrmh + ghrw
+pqls: qrmt * jrdz
+mzmw: gnnf * qhwt
+dfmr: dzgl + fjqc
+tpnr: hjzj + fqmt
+swdn: 5
+lchz: 2
+qwsr: 3
+humn: 3116
+grvz: wlwn * fpjd
+bbbz: tqlh + gvhf
+bqgw: 3
+bdmh: 3
+rqbn: 4
+srjc: cqsc + gllb
+mczb: 11
+hqpv: 3
+rchh: gmdz + dbgc
+lpld: 2
+qqzv: 11
+blnl: 5
+qnpg: fnnn + cdhn
+mlcr: bzjj * cvjb
+mbvj: 1
+tdgq: 8
+wlds: hlmp * trbp
+bswm: htcn * nlzw
+zbvq: 3
+zrhz: nsgn + hvpt
+npqv: 17
+fgvw: 5
+hsls: 14
+ffdq: dzsp * mppg
+vfrr: 11
+mnfw: 2
+gbpm: 3
+pfsr: 1
+rjbd: 5
+qmpz: 2
+hjqc: 4
+svrm: 5
+whwz: 3
+tgmh: 2
+hcvt: 5
+zrvg: btwf * qwgt
+bzjh: 3
+wzzq: mpzw * cfvr
+wvcl: 2
+jqgn: wqhv * tvzz
+nvwv: lsdh / qswf
+tsrt: rdhg / gdfl
+frrf: 5
+qtzs: tpjm / sgqp
+mhps: bnld + wtzj
+mlvf: 5
+qszs: 7
+zvbl: jqbb + jbwg
+cbhv: mbcw * zbvq
+hjnp: 3
+drbc: 7
+fvzm: 5
+ssjw: 3
+dwmd: mjcf * sqrn
+sbpl: 2
+rqwq: zlsj + lszh
+vvmb: dfwp * wpgz
+bfzt: 2
+lpwg: wtvs * fjsf
+mhrp: 2
+jqbb: wmdf - zmwd
+sdcq: 13
+mwrw: hzsv * gqrc
+nlml: bprr + slnn
+srqs: 4
+dtgh: 5
+ffjg: llhz * vpdd
+mpvt: 9
+vmrz: mjzj * mbsb
+hmvh: 3
+pltc: 2
+vtms: 4
+vmzq: 7
+wqtt: 4
+bzfv: 5
+mtgf: 13
+wpbq: znrh * gqbv
+mqdq: hfdl * dtqb
+tvpf: 2
+tppd: rlqb * sltv
+zpvw: ggwn + rwpd
+gllb: 9
+fvqq: 5
+zbqq: 2
+wzdn: 2
+qlgh: 17
+ttth: fjfv + rlfh
+nwlj: 15
+lrpl: hvvm * cfqc
+wjbz: bmdp * fztm
+jzgn: vrqq + zcnc
+rzdl: 20
+gcjc: 15
+qdtq: wfsl + rvfm
+gmbl: dvjw + ggfs
+tngp: bbhh + jblw
+lsfl: mnfw * ljrh
+blnh: jtwv + dffb
+zjfq: 8
+rhwf: 5
+ldjl: whft + hzlw
+cbsh: crfq * vqrc
+tndg: 2
+zpvm: 2
+jtwv: 1
+jcwt: dwtv * wbmh
+frrl: 2
+hphq: 2
+gfts: lzdv + zmwq
+rhnq: qlss * dsmg
+bsrm: gcdw + wqtm
+qdtj: srqs + sfcf
+ddrw: mmpg + wptg
+bjnj: 4
+gqrc: 7
+qvjp: hbbb + wwzb
+hrrj: 3
+crgp: dqzj * dbch
+trbp: 11
+rbnb: 3
+pmtj: 2
+jlmw: 13
+sznf: 11
+lfht: vzlh * zmsh
+qzds: 13
+bnfs: wmqt * tfbd
+bwrf: 2
+rcmr: 3
+dllz: wdzn + trnf
+gqqp: 1
+sszl: 12
+snds: dvjl + hmzs
+qzhj: sclb * qhfr
+bzlb: 2
+tlnz: wtzv + plzv
+zlvb: 17
+qbbq: 20
+lswr: 3
+glhd: 2
+hjwl: 2
+rdbd: 10
+zzhj: tlnz + gjbb
+dnft: bfbw + gslf
+zmzv: pwvq - zfdt
+zlgv: vpcq * phst
+jwwn: 6
+mhzg: 6
+rrmg: shnl * cctt
+ftwd: 7
+sjbj: rphq * mjch
+lrnq: glnb * qwsr
+qfsn: znld - pmdb
+lrtb: tstm + dgzz
+qswf: 2
+tpbs: 6
+hfsb: crmm + vfvl
+wmsh: gjtw * crpm
+jcfz: 10
+ppbm: qppl + tsnm
+htzc: splh * pnfz
+sqjm: jlrh * qdcl
+lpjq: bwdg * lhqq
+nwzg: hfjm + znbq
+nglr: dhdt * mpvt
+tpsm: vqpl * zscm
+lbld: dnsd - gbcw
+thtd: 2
+sbdl: zjzp + jgpw
+cvjg: jzlt + jtjj
+wppc: 7
+lzdr: 5
+vvgr: rwtt * rjgb
+bzfq: zfzv * gswh
+hwdc: 3
+phsq: 3
+mjtj: gcjc + sjjq
+hzqp: 4
+zwtg: 13
+dgqm: tmwd * qnqt
+tbln: ppzp * pgnd
+ppsj: bwnm + rdbw
+qcsn: 2
+gnvm: hnlb + qthh
+jmws: 4
+csds: 5
+wlwn: 11
+vsvb: 5
+bmnh: zgss * mzcr
+pqjw: jrpl + nsrc
+vbrn: tdns * pvgb
+gwnj: llwd * dpdh
+cnqg: lzvb + rchh
+gzbm: cspp + tbbl
+hzvv: 14
+mzqv: 4
+dnmm: 4
+crmq: hztr + vzmc
+rdhg: hdsf + wjwl
+hshj: qzss + nlnt
+fdnh: 4
+lszv: jlzc + mqgc
+dnsv: 1
+tfgm: nrnn * tvcf
+mndz: wcst * tscf
+ldbf: tvgc + tpsm
+dprm: gdsl * bpsf
+mhhd: shgj / lmch
+qvjw: ggwv * sjtb
+cjzz: 3
+hwht: rnzm * fsdf
+pcgq: whnr * vprm
+bzrn: sgcf / ldpl
+jjrh: fhtq + nvpl
+gdfl: 2
+dmvp: vdtd * zwjv
+htjr: mcvg / mnzt
+ncbl: ddjm / vdst
+jdhh: dmhz * pgld
+tpqf: nhsn * bfpl
+gwsw: 13
+dvfh: lqdw * hrbb
+hgrb: 5
+lvsv: hnjf * zsms
+hlbh: rspn + jcwt
+dbmn: 3
+fjnl: cbmr + zcvz
+fmln: tpjd + fsvt
+ldps: vjhb * dqnh
+cqfq: fjbm + zrqj
+qdcl: bmjp - gdqb
+vwrj: 3
+dnjf: 3
+zjsb: 1
+njmc: 3
+mzsr: 7
+hdvp: 2
+lmch: 2
+wjqg: 2
+vnwb: 2
+twgp: 11
+mqpd: hmln * qcvs
+ldmb: 3
+fflp: 4
+bnhb: 3
+jmpv: jszm * dlbp
+qggl: 13
+jsdl: 3
+czgd: cdjd / vlbb
+hgsw: 20
+zrmn: 3
+gzdb: 9
+jbft: csrh * gvms
+wdrb: 3
+fzpz: 2
+bprr: lhpp * qbbq
+hcqw: dtgh * tvtl
+dtzf: 6
+qspw: 10
+vgzv: 2
+bvsq: jjrh * swzq
+stvw: 5
+zhwq: wdrb * mdvp
+frwg: 6
+fbjd: 4
+vgvf: 7
+rltp: qppn + ldnw
+fztz: fwqg * fspj
+lsdh: twcw * gzdr
+mwst: gjzm * srgm
+ndhv: 3
+jgjl: wjbj + vgzv
+mmmw: jrzg * lwrf
+hzhn: 4
+dvjw: bggp + zgfh
+tmtw: 10
+jbqh: zsww * wqjh
+ljhh: 19
+vqlf: 13
+rncq: 2
+ztjq: 2
+jqmp: 4
+mvql: hfsb * gthl
+vcqz: 9
+lnfd: ddww - qpwq
+dczj: hgjw * qhwp
+fwqg: hgmq + mqqq
+chqt: 2
+vpqj: 2
+wfzm: vnqz * nhmm
+vzmc: cqvm + dcfn
+rsvv: tgrb + lpbz
+gwqq: 5
+gctw: tgnc * ldjl
+zbsp: 2
+ctnp: 3
+ndgz: 2
+lqch: cvzn + wrnr
+svnj: 1
+pzjw: 2
+jzwp: 2
+gnrm: 8
+wmdf: pfdb / mgtr
+ljvs: zqnt * rbmw
+qppl: tdhb * jrwg
+fvml: gzbm + cdhm
+zhbf: 5
+rvfm: mncv / glcj
+cbtq: fvcl * mjvd
+tgsl: 2
+djnj: pbnl + nfch
+lmcd: 2
+rvlp: 2
+lpmr: mjtj * gbft
+hmtb: qsjg + djdt
+tbrg: nsmc + qsrq
+vbqr: plnq * rvlp
+smhl: wlnt * lfqs
+gtqt: mchq + pbdp
+fffz: vpbq * dhqm
+rtqc: 2
+wsgj: 17
+fjhq: dfwn * fjsz
+stfd: whfn / jdpl
+fvlq: 4
+dbqh: 4
+tvwc: hsll + jdhh
+nbzv: 2
+gdjm: rpbj + lfht
+fnzl: 5
+dbqf: dbqh * sglv
+ndds: 2
+chvg: bngh * jlwn
+smjm: 3
+dsmz: 2
+gjtw: 2
+sbmn: 3
+hmzt: hvgm + trjz
+mpsf: 2
+mjml: 9
+nrwg: lrfd * mlqn
+nltq: 2
+fvmv: 2
+wsjv: 9
+pqhd: fnfl + wjgb
+dvpt: zqtj * vtjd
+dzgl: qcwd * zspd
+mmqq: 8
+bggp: 2
+vmfn: 5
+tnmq: lqqv + fzfs
+wbqm: 2
+vhgn: qzqg + rllv
+hvsr: ljwf * hhnd
+gvcc: 5
+bhqt: jrzz - fnbg
+tdns: cbfz - sbmn
+qnwb: qbcp * crmq
+vmnc: 9
+jnwd: zmsr / vpvg
+hmpl: 2
+mgtr: 4
+wvgd: 7
+qzjp: 5
+ngml: 1
+qvhp: tmvh + dwcj
+gpht: pcjt + vmnc
+hlln: 4
+vvgf: 1
+zcnc: 4
+hzlw: hdvp * fphj
+cjng: wgst * qtzl
+tbbl: stvw * zrzh
+slqc: 16
+tvcf: 4
+lwrf: pjzg + dtzf
+fnld: ftjv * qlzj
+sfsz: 2
+dvjl: 13
+fdqt: 19
+crlq: gvnr * dfqr
+sjbq: 2
+zhbc: tdsq - slsw
+ljwf: 3
+fspj: 2
+wjgb: shrr + wzzq
+bjvz: nnjn + qbzh
+rzms: 5
+qjqr: lvgq + rqpl
+lrdc: mztc * tstt
+rvbl: qzrc - dvwv
+rjcg: tbln + cwqh
+prvz: 2
+zqpr: 2
+mptj: nvmp + vhpp
+szrj: 3
+rvjp: 9
+sfbf: wggr * lmpn
+tvgc: ppqb * chwr
+znfq: wzmf + fmgl
+rdms: lwzh + ftng
+lhpp: 7
+zgcc: wplg * smpn
+trnq: jmws + ptzv
+dqzj: zzcv + lzbw
+ddjm: vnbj + njfq
+bdvs: gflv + vfnt
+wqwl: schp + pjfc
+djvz: 3
+brvg: 6
+qjss: ghzb / qznn
+nsrc: 15
+ltzg: 3
+wglw: qhzf * tbhh
+vvzb: 3
+fphg: tpbs + trnq
+gvms: 5
+hpzz: 3
+vtgj: 7
+jhgf: zgjq * wnvz
+rrmq: glmv + zhfb
+dbsj: wmnc + hwqb
+gtls: gpvt - rnjp
+mhvw: vztt * bbbv
+svnh: 2
+jlwn: 2
+jtcz: bfdr - zzmb
+hmjc: fqlf + gfts
+sszc: qjtf * trdv
+qvhh: mqlz - rbcj
+pdvs: 18
+nhfv: dlrg * rqtm
+smwj: rszt + qdgn
+gvgp: 20
+dwtv: 2
+vdjr: ljbb + hbfw
+znmj: 1
+lnrs: 1
+fwlf: 3
+gdmq: nbhp * bwrf
+jrzz: dmrn + vhbc
+snng: 2
+qgzw: jngt * jvmt
+lzvb: sjjj + mjgv
+jnlm: 3
+hfcm: tfwz * hrsf
+csrh: 3
+lcjz: 9
+fvtb: 3
+pdch: 2
+nnpg: scsr + dglq
+lntz: rsrf / btgf
+lpbz: sqrf * tzgp
+ddrp: cwzh + trzl
+qfhq: 3
+gtmb: jbft * twtf
+fjtz: qhnn + ndhd
+nvdl: 3
+trjz: 5
+hgcf: dbhn + hzqp
+hblp: 3
+hrpr: dprm * scsc
+pfdb: mscj / sthr
+gzdn: 6
+dhjs: rdps * hhth
+wvzw: 2
+hqfr: 1
+lfqs: 7
+qfsc: 2
+fzgh: dhst - dhbq
+flgg: dfzr / wwzh
+qwpf: lqlc * shzl
+cpcz: 4
+wwnh: 5
+tzsm: wzwf * qdqq
+qnlg: ggfw * ndhv
+shjm: cssz + mbzj
+rnzp: 2
+jjfn: qprn * trmw
+qrlj: qsbv + ccss
+bbbv: wrrn + wcbl
+mzbb: ncgf + pzpf
+fwpt: lhsj + fjmz
+rqtj: fcjv * hgsw
+vltc: 3
+thll: lczh + ttsv
+bvsp: 5
+dwnj: drzc + swfb
+pzqs: 5
+shbj: fdlt + npqv
+hrvs: hhrh + tfcv
+bwnm: 7
+mfjp: 7
+vjjh: 8
+mvzl: 3
+dblf: lrtb + vbvh
+ssnz: bhvm * ztvn
+qnmv: zcdp + qqzv
+shrr: 4
+svzg: znps + hvsr
+rgjv: 2
+jwmt: hggp + zsvm
+rmpc: 5
+gfpg: 2
+prsj: czjh * dvps
+qhhz: dvsp / bwsz
+zzwj: 4
+hzns: 12
+rdps: dwwc + zhbt
+lmcb: 3
+clws: hmvh * mmhp
+nvmp: 17
+hzcn: 2
+zqsd: 8
+mlsq: 3
+hhss: 5
+dlfc: 3
+ctvj: 3
+gwlr: 2
+shgn: bdcr * vwlz
+wvts: 18
+llvb: prlq + psps
+vhvt: zthb + zqsc
+fttf: 3
+ncmc: jgdp * bjbv
+nfnf: 4
+gdjv: 3
+mlbh: vwbw + ddrw
+lqrj: 2
+qdgn: 1
+ljbb: mqpt + bsdf
+cspp: hszv - hrfq
+hbdz: lcbg * fwrq
+wlnt: 2
+lbrc: zjfq * cctg
+frld: 3
+nnrn: 3
+nnjn: pqqd + pjdn
+ggnj: 17
+bqpb: qwfd + jqgd
+cwvr: mbgw * wzlh
+hcsm: sbjr * bcrw
+nhmm: 3
+nfch: zvzb * cpnn
+pmrz: 2
+bjtf: 4
+hhrt: 2
+dhqm: zlbr + swfn
+znrh: 4
+hgtd: clpj / qhrl
+qjml: 2
+jgvc: tlmf + smhl
+zbmz: 2
+jlrh: 3
+jpfb: 16
+nrcq: fdnh * mzrc
+vwvr: jznp * twzt
+vvzt: 6
+vtnc: wwnq * lmcd
+mdcw: chlt - ncbl
+ttgl: 2
+wltr: nqsf * wtjm
+qlss: 4
+tmlg: dbjs * vhvt
+jpnn: 6
+jgpn: 3
+tcgs: ntcd + wpbq
+mqlc: 5
+vhvn: lbld * fmrf
+fpwq: fpsb + bwjb
+ghrw: 5
+lbdj: gbvt + vbqr
+cdtj: 3
+cctt: mlch - wddt
+nhpb: qfhq * nrsh
+lhqq: 10
+qvwl: 3
+plzv: 2
+pljz: tnqd * spvj
+crlr: ctcm + tbrg
+pvsv: rltp + hgtd
+mfmp: 3
+svnq: rshw + lrdc
+bwbt: 15
+rtdl: nnff - ssnz
+nldm: 17
+whbg: 3
+dbnq: 3
+lthz: llvb + flzc
+vnmv: 4
+mrpc: 3
+lsnr: 2
+wwjg: dwtq * rmlw
+dqdb: swlc + lhzz
+ltjt: 2
+mdrm: 8
+vtlr: 5
+jhfr: 2
+mzlf: 4
+fbfr: 2
+vbjh: 4
+wlzt: ddtg * cgzc
+wrbs: 1
+zhbt: 5
+tqll: 3
+pjfc: 18
+jftn: 2
+jdhv: 8
+zqtj: 5
+nftj: jmrs + mlld
+jwjt: lhww * rczc
+hzph: 2
+bfpl: hdbf + tqrn
+rbcj: fcgz * mdzp
+zdpm: wbzc + bplm
+ljlj: 3
+dcjz: qmtw + jhfr
+prwj: 20
+wcbl: 15
+hrwd: cjng / jtrz
+dzlh: 7
+pfcl: pwbl + zhvl
+srjv: pwqv * lcsz
+trzl: 7
+hzsv: tpnr + mjvq
+qdqj: 3
+wwmm: cmgw * zcns
+cnnq: 4
+gdpw: 4
+rnhl: 3
+cgmn: lhjh / fvrt
+gqbv: svtd * dcgb
+hcjn: 3
+wzlh: 3
+dhgs: pgzq * fttf
+sgqp: 2
+fnsm: bzlb * rbgq
+lmwr: 5
+vcql: 8
+pjqb: 3
+wptg: jjfn + rdtm
+jghv: 2
+sjnt: hwht * lvzr
+ghht: jfrj * mfjp
+cwbb: qbnz + ljvs
+vvpw: 10
+ntcd: lqzz * sfvp
+jzss: nglq * ctrv
+djrb: rzph + mbvv
+lzrm: 10
+vbcp: vjpt - vltc
+mgcn: lbrc + zbgm
+zvft: rptc * lfcj
+bfbw: qzpd + qqcb
+tmvw: 2
+vprd: 2
+jwvr: zcwv * dqqp
+chbl: 5
+sgbl: qbqw - llzd
+jftv: 4
+tdhb: wfbf + rbcq
+vbvh: rzdw + lmlc
+fmgl: 3
+qsjg: cqrz * qwjt
+hczq: bzsb * mmvt
+hhmn: 10
+bvff: vtdz - qggg
+qwfz: cbsh + fnsm
+dffb: dncn * gshw
+cpvb: 5
+ppnm: fppg / lgwp
+zgfp: wglw + bwbt
+rzvq: hwrl + jwzl
+zrhq: frrl * czwr
+gjml: grzh * jqjz
+djhv: 13
+bhph: gzvd + wrbs
+vdst: 2
+vvfz: 18
+bvmp: rzhb + csds
+pzpn: qwpf + nvdl
+qhdc: jgvc * mzwz
+jpvc: btcl * cvbr
+gnqz: 3
+cwcq: jddd * qsdz
+djhh: qrtc - sqfh
+spsr: 20
+zbzs: 3
+zfmm: jtsm * vgwd
+ttvw: 3
+hzvq: 5
+gmmn: pgrs * mmcp
+rwfv: 5
+mgjb: ndbz * zrrn
+lqlc: 2
+vmjg: rswf + bbrp
+wwzb: rnrh + hvjg
+fpgl: 5
+tgmn: 2
+dhdt: jhsd * rptv
+bplm: srdw * jldf
+mzrc: 9
+nzgq: fphd * jssc
+wwwf: nvds * tndg
+hbfw: nnwj * qfqb
+rqwc: hszt + frld
+dsqh: mcfm * hjqc
+cwwn: 20
+jqvf: lvgt * trzs
+qwfd: 3
+zgzw: 4
+twcg: 2
+ppzp: wlds / bpfp
+brjz: hnvn + htjr
+jgpw: 9
+nvjg: 3
+jtrz: 2
+mvgh: nmsg * zgzw
+dlvm: lsps * wzbr
+ggzt: plbm * whph
+fvcl: 19
+fmmh: tzld + sqjd
+nnwj: zjlc * tqll
+jfrj: rqhr * bbbz
+zdtm: mfcn + trmh
+gqnm: 2
+ggqm: mlvf + srjv
+plvh: 3
+nrtj: 7
+vhsg: 4
+pwng: gjml + dqrn
+wpcs: zjtf * qjqr
+hqlv: nqwc / cpvb
+hfsj: fwsb + vtlr
+nzsl: jfnq * bqgw
+gccm: 3
+qctt: 2
+mdvt: 3
+jrtr: 2
+zrvw: gdbn / bbbr
+qwlj: 3
+drfl: 4
+nhvw: 2
+zcns: qvjw / gfpg
+tqlh: 8
+zcfj: 3
+ddcv: gdpw * pbpg
+tzqt: rfbb + hcqw
+hcsf: 3
+jgnq: dzwb * cvjg
+lfqg: wwfg - bwht
+hlzh: lltn + mvwl
+mqpt: lmvt + hqpf
+smpn: czmc * hhjd
+dlbc: bdmh + zhtl
+rbcq: wzdd * jpfb
+tpjm: wrdz + mfgv
+drmd: 5
+mpmq: 2
+gjbb: nzmg / pmjj
+ghfs: dfmr * hzbg
+twtf: 2
+cqsl: 4
+nnpm: 4
+dbdm: 3
+jhfh: plgz * dhgt
+wdgg: dcfw + ncmc
+jfnq: gjbq * hrpb
+gslf: djln * cffb
+tjmp: pdch * wpms
+twcw: mvgh + jmhp
+npdq: wljf * zhww
+lcsh: ffdq * zdpm
+tngz: 5
+bmjp: qswh * vwdp
+zrqj: mqlw * zhns
+lbbz: 4
+fjmf: zzwj * hqtq
+hrbb: 2
+fvbf: 2
+hrzt: 1
+bwlj: 2
+mfjg: sbdl + rhzh
+trmh: 4
+dmnf: 2
+spjj: 7
+qhzf: 2
+pqsb: 11
+vvvv: 13
+pnfz: qnlg - qgcj
+tjmq: 3
+snvz: 2
+rjfs: 8
+zbwz: 11
+jmwv: jcjt + zmnl
+cvpv: 2
+nszt: 4
+grzh: hzhn + gccm
+ftll: 4
+zzmb: wthn * lgdg
+qcrp: bsmb * jppb
+bbtl: 3
+qchb: 3
+cmsv: bbtl * nftj
+mzcr: vvvw * nppj
+gbgp: 2
+sqnw: 3
+hphs: bnjc + rqwq
+zzcw: 3
+nglq: rmgw - hdgg
+jlrq: 3
+gqst: 2
+dhgt: 5
+mmvt: 2
+sptm: tjmp * mvgs
+pdnq: 2
+hfdl: 4
+ltwt: 3
+jsql: vmzq * jgpn
+cffb: 10
+fzfs: lqch + cgll
+wtzv: zvft + nzgq
+wrlb: 6
+wzmf: 14
+hvtr: 3
+hlmp: 2
+hmln: 3
+rsbn: vtfr * gqwt
+mjmh: tzsm + mmtz
+rnjp: vrgp / pzjw
+qzpj: dpfm / qmpz
+thbq: 3
+mbgb: plgf + jpwt
+bblj: 5
+dwcj: wqtt * tfht
+cwzh: hrgt - qwfz
+whhr: jcfz + zztr
+fsml: 12
+shrc: dzrp * wvgd
+dlbp: jhzl + hflc
+mmhp: 7
+nwsv: 3
+bvqz: mrdp + rrqw
+jjjm: 4
+nwfq: ctfn * zbsp
+zqwb: 7
+llwd: bjbn + wvts
+rhzh: qvdr + hmfb
+bgft: frwg * pzdj
+bcrr: 2
+hvvm: 2
+qdgv: 2
+rdsr: 5
+gcdw: cnsf + tthz
+pcjt: 2
+ttfr: 6
+fnfl: hsls * hbbs
+rfbb: bfhs * qjss
+pgdw: 1
+rqtm: 5
+mjzh: 3
+bbrt: 5
+djcq: 9
+mbhj: pvcm * hshc
+qvzq: 2
+wshg: 5
+mzwz: 3
+jrzn: dbwr * mzlf
+pnbf: qzpg * fffz
+pzdb: cmqs * zbdg
+sqgt: ddrs * blnl
+lqlq: ftqz * qgsb
+btpj: tjmn * tgsl
+nrpj: 3
+pwwq: jnlm * gzjd
+bmpq: jwsl + drfl
+wzwf: 2
+dfzr: bwlj * drzs
+wljf: hhjc / hhrt
+cmtn: wjpm + bbpn
+fdzp: 3
+qvfg: dlvm + hzvb
+bpsf: 3
+ppgd: 16
+dcfw: 1
+cmgn: 4
+phwz: 2
+jrrh: 2
+mmvj: wsgj + bjnj
+qssp: 3
+qcbj: 13
+fcrl: zwhl - jhrl
+pwnb: snds * hjnv
+vtdz: 10
+ggwn: 12
+jhpn: dhhr + lthz
+bbpn: slwg - dzzl
+shsb: 1
+dwwc: 2
+wpgz: 2
+wtzs: jtbn + hnrh
+rswf: dlfc * lhpq
+tqzw: 1
+rrqw: slhl * wmwb
+zwhq: rzwt * zmrs
+vgwd: 4
+jgph: 3
+hsqh: lbdj / sbpl
+sqrn: lmwf + jwvr
+znfl: ftwd * sszl
+rzdw: mptj / tgmc
+rphq: fstp / msgw
+bmpb: pdqv * fjmf
+swfn: hpzl * bdqv
+phhj: 4
+mbpm: 3
+jpsv: smgb * mjmh
+mjzj: 3
+mrdp: vvfz * mmjj
+vwfv: cnnq * pbzc
+dczb: hftv * mbmd
+bszp: 5
+lhvd: 13
+cvzb: lrvz + lhtt
+hmrv: 4
+rdvq: gwlr * mjzh
+wjpm: gnqz * dmlh
+dqps: ccht * rdvq
+qcwd: lgsg + cfjv
+jwsm: sqnw + vbjh
+pgmv: zqsd + cflt
+bmsr: pjhp * nrtj
+tmvh: nqhw * hsqh
+mrjw: rwfv * dllz
+qclr: wwcz * fgvw
+zrzh: jjvv + pndj
+mqqq: tbch * nhfv
+bsvc: 4
+ctcm: pjrd * fpgl
+rldh: 2
+sbvv: 3
+phcl: 3
+rcpd: dmvp - rlqz
+nwmq: 3
+mnwq: pnbf / wfjh
+sjjq: 2
+jwjv: 5
+ffbl: 7
+srgm: gsbh + fwbj
+shvj: 9
+sqfh: bswm * gtmb
+jhsd: 3
+qldc: tpdn + rfpw
+qhwt: czgs * nnlc
+dlrg: 4
+cswr: 4
+ndhd: 11
+czjl: snjv + djcq
+rwpd: mrcr - qwlj
+dmrn: bdlp + spsr
+gvsp: rdsr * wvrv
+tcms: 5
+zjtd: 3
+hvjv: sszc + dvqw
+mgmp: 7
+qlmw: tswc * qrwj
+qclp: 3
+bdmc: ljtc + fmsl
+smjc: 2
+ggwl: tzqt * lgsl
+vqsq: 5
+mcjf: 3
+rdbq: 4
+mlch: jsql + tdgq
+vdzf: wltc * zhwq
+nffl: swft / twcg
+fppg: ndgg + dmhl
+bvmz: 3
+hqdt: rjgp + hqfr
+smgb: 17
+qjtf: 2
+rjdq: phwt + twml
+mdhj: 3
+jssc: 5
+cfqc: nhss + hmmt
+hhjc: zpnz * fvlq
+hmlw: 9
+sznj: dwsv * tqls
+mmtz: 1
+wtvs: 2
+wmwb: fpwq * zbhf
+zbzn: cqsl * bzdh
+jddd: 5
+mdvp: 2
+mvgs: szrj * mhjd
+dmhz: 4
+djvb: dvpt + glwf
+hzwm: 19
+rptc: wwzr * phhj
+qwzv: nrrw * jzrl
+gqwt: 2
+mnlr: 3
+wsdc: hlhp + zfmm
+fvjc: 1
+gsgn: lqlq * tvmj
+qvbs: 3
+lhlc: 17
+ncmj: qtqf + fvqn
+hwzd: humn - cdcz
+nvds: 5
+fstp: tngp / rncq
+zqtp: sgvc + brct
+mqlw: jnbm * bnbw
+lwpp: ltbb * jwsm
+hllz: 6
+sgtb: 2
+jdpl: 3
+fmqc: djrb * rtqc
+rpbj: 4
+vwvt: 2
+bwjb: hcjn * zwmv
+vztt: 2
+ddww: rzfp * crgp
+clcl: dblf * wfwm
+lrhh: 2
+jcjt: cfzl * blgr
+nrsh: 4
+wzdd: 2
+vpvg: 3
+fphd: tbdw * vmsn
+vjrq: 10
+zfjz: 2
+rnvf: 1
+ltvp: nrwg / tgmn
+bwhl: 2
+tllf: vjww * mqpw
+vrwl: mdnv * lfqg
+pjhp: 3
+vbnz: 2
+lcts: 3
+lrfd: 2
+cgzc: 2
+bzjd: 14
+czgs: 2
+qgsj: zqtp * dwnj
+chlt: jrpw - hgqf
+qhrl: 3
+nqhw: 7
+gpbj: cjzz + slqc
+shrv: 2
+tptq: 9
+schp: gzdn + rgtn
+mght: 5
+hftv: qmzf * ndgz
+mbgw: 2
+lszh: 13
+htrc: 2
+jzvc: shvj + svvz
+gjsz: 16
+rtwh: ftll + fmln
+rsrf: mdjq * rnbq
+spfb: zrqr + mlcr
+ftlq: cmtn * fgvz
+rfcp: ttcz - jvwg
+rzph: mdww + cwcq
+zhvl: 16
+dbfr: wdmq + mmvj
+qhfr: pgwh + tqvc
+cdcz: zfjz * cwhv
+dszf: 14
+jrpw: htvn * vtms
+ffrj: 5
+whcg: 3
+spnb: lbgv + pjwn
+vjcg: wbtd - ppbm
+lvgq: npjm * zlgv
+ljrh: 4
+cqsc: mvjw + lbbz
+fpbd: zwhq * bcrr
+ncwh: zhjs * pgsc
+lhnr: jznz * hbzb
+vqcr: 3
+bsmb: 2
+ctgw: 19
+rwtt: 2
+scqr: fmss - ljwm
+lsgz: 2
+bnjc: 14
+phvd: 15
+ndbz: fsfs * lrpv
+strg: brnm * rcjn
+hqtq: 4
+wbjz: hqlv * svlw
+dflr: 6
+ltbb: vrwl + pnjg
+pbzc: 2
+qrqt: 2
+lqdw: 3
+zmsh: 2
+swlc: pdvs + rvjp
+pdqb: 3
+zhcw: 2
+gzdr: 3
+dlnc: 20
+pczl: dzpd + vmcj
+pzdj: jlcj + dcbm
+wtlj: 16
+phzm: pwng * mrqn
+cmdr: qnmv * pfqb
+qgcd: gwtf - tjcr
+rtfh: 14
+jglt: 11
+cnpj: 3
+bbhh: 19
+pgcq: 2
+mrcr: vhgn / trrw
+hzbs: 5
+qswh: zbsf + gzpt
+ljhw: crpp * mbgb
+htvn: cswr + llnt
+nqnv: tqhb + lwpp
+ldpl: 9
+zhtl: 4
+mgcq: 5
+tbhh: 5
+qdrc: smcs * mlrb
+brqv: 3
+bsmg: 13
+bntr: 5
+qwzw: 20
+swdm: mgcn * sdqn
+dfwp: 3
+vwrc: 5
+bmjr: jcvd / mdhj
+zqsc: 3
+ddrs: wshg * bntr
+fbcs: 2
+vwlz: rqbn * wvcl
+mjgv: hmlw * mdvt
+gwfw: 3
+dvfn: dnjf * wcnr
+zcvz: pfzz + gvww
+zbgm: nglr - vdzf
+qwjt: wsgr + srvg
+smzd: hcsf + htzh
+mjcf: 3
+vrqq: 17
+pjmt: nnpm * svnq
+lzhd: mrpc * zbtt
+fgwm: mwqt * hmnj
+hvnj: 2
+jtbn: 4
+jbqq: ffbc + gmpb
+dfwn: bmpq * jcps
+vwhz: dczq * nldm
+ndgg: fmrg * twgr
+ljtc: cmgn * wwjg
+wthn: 3
+tjrd: vfrr * vntg
+fghf: grhd * vdzh
+wwzr: 13
+dqrn: hrlp * vvmb
+mqgc: ssjw * dpqj
+jpws: ppjr * btzj
+swzj: qjwl + fbdr
+wplg: 6
+crpp: 2
+pjzg: 1
+lzdv: fsml * znll
+nlht: rmpc * ncmj
+fpwm: 5
+rzwt: 4
+zvdq: 11
+mppg: fmht + jpnc
+lwzh: mqpd - ftph
+dfdc: zpcr * mcjf
+qthh: pzqs + dnsv
+fmjh: 1
+cfzd: 2
+mbzj: qgcd * jwmt
+dppw: pzrs + zlcq
+vvvw: 3
+btgv: lbdn + bwqc
+fczm: gqst * nzvf
+rcbf: gsgn - sptm
+zcth: 12
+rcrt: pgmv + wjbz
+bmjf: glgl + hmjc
+jpnc: sznj * nnrn
+qqcs: 3
+nbhp: nhth * tdnq
+llnt: lzrm - vwrj
+pzrs: qwzv + cmsv
+vfmz: vpqj * jwjt
+gswh: 2
+wrnr: 9
+vwdp: gvgp * nwpp
+tjcr: 11
+lhzz: 8
+gzmj: tdgz * hlvz
+twgr: mhzg + ngml
+rvjj: ftgw + pwnb
+jppg: fjtz + cpfv
+hnvn: fvdd - ttrt
+vpbq: tchj + ldbf
+djwb: 4
+jrrf: bcsr * rrmq
+nrnn: 5
+ccss: srgr + fcrl
+mpdb: dznt / hhss
+rmvg: bdtn * vmfn
+shnt: fphg * cqfq
+lfjb: 2
+nhns: plvh * ljmb
+nwrd: 3
+hmzs: jcjm * zjpq
+zmrs: gqqp + tjjc
+pmjj: 2
+wzzw: pzdb + dhgs
+sjgz: 5
+tfjv: 5
+srdw: 17
+djps: 2
+hzws: vrhc + vwss
+wjgz: 9
+lvgt: 2
+fmcm: 2
+mwqt: 2
+mvjw: zbqq * ltzg
+zscm: twjm * tmpq
+fwsb: 15
+bvcz: qdrc + wcpw
+tfnd: pmhg * wnml
+gdsl: cpcz + zgfp
+wbrl: 7
+nnjh: 2
+dwtq: lhcf + vwvr
+wslq: rlpz * qzmj
+dhhr: fqfn * vmfw
+spvj: 4
+nzvf: rvjj / fflp
+glgl: 2
+zwjv: 3
+wlbh: lctr * vhdj
+vnbj: 9
+qgjc: 5
+mqpq: zmzv + wtbw
+fjvz: 2
+mdfp: 2
+vwbw: nvwv + zrwv
+pwlm: 5
+znps: jpws / fvhf
+nlcp: ldll + lpjq
+dlqg: 2
+zhns: 3
+vdzh: lcts * lmwv
+tlmf: 3
+rnbq: jrvg * lpwg
+llhz: 3
+tfbb: 2
+rbgq: 3
+tpdn: 4
+sncl: 4
+swft: jhhv * htnf
+rzhb: gnrm + wmhp
+cctg: 5
+dmvt: qclr + lhlc
+rjtp: vgcm * zvdq
+fjpl: 3
+vhtm: tqtz + hnnl
+root: bzrn + gvhs
+qvvq: 2
+hztr: wmth / npmr
+jwqw: 12
+brgz: sbnq + szwn
+ntdb: srjc * wgqw
+wnml: 7
+crmm: bzvl * bzjh
+zmnl: 5
+pgld: nwzg + jlmw
+mprn: 5
+qgsb: 6
+shwb: jwqw + lgpt
+lqtg: ttrv + nffl
+gcgj: 2
+plgz: 2
+dvsp: ldgf + jgjl
+ftng: vfmz * rqwc
+zgfh: phvd * flbg
+cnfd: nqdc + dgtr
+whft: wqgs * dqmw
+tdgz: 3
+lbnb: 2
+zhrf: 2
+vjhz: brjh + qfjr
+lczh: qchb * hrrj
+gbft: 2
+sbfm: 3
+cmpb: 7
+tlvd: 5
+jjvv: 7
+nwqz: 5
+nzql: hzbs * hcvt
+cfvr: 3
+bwjl: pbvv * wslq
+sjjj: 2
+cgll: fbcs + qzjp
+hdql: 15
+mcfm: qctt * wntb
+vjww: 4
+blcv: mght * nqhv
+zcwv: 5
+ltzn: 4
+pvcm: 7
+qfrl: 5
+qhwp: 5
+sltv: 19
+hddc: 8
+rqhr: 3
+bzsb: fpbd + btgq
+bsdw: 17
+tvmq: 3
+mbvv: ffws - wqnw
+tzld: 13
+wtzj: 3
+sqjd: 7
+mnzt: 2
+rjgp: 5
+hvjg: vwpn * rlsq
+wbtd: sfrc + cmtg
+glwf: mvzl * qdgw
+jpqp: 3
+qldl: 5
+wtbw: zwlq + mpsf
+jpnr: llwt - fmmh
+nsgn: 10
+lchd: tdwg + cwmb
+lhpq: slbz + gjmn
+rmlw: 4
+tgmc: 2
+bqvn: nhpb + qhhz
+pgnd: gvcc + mdqb
+npbg: qdgv * nzjr
+vzlb: qrlj / fqcb
+cvbr: 2
+tmwd: 2
+qdgw: 4
+chdl: 5
+vmfw: 5
+grgl: 2
+bnld: 10
+mfgv: phsq * zdtm
+zjzp: 3
+ldgf: qdtj * rsrm
+vmcj: dvfh + zwgd
+jqjz: ltlm + tqzw
+fptg: 9
+bclm: 19
+dpqj: 2
+gvdd: rtqj * ffjg
+fbmp: 4
+gwvz: zrhq - ggps
+hwrl: 4
+wnvz: 3
+jtmr: 14
+srfw: 5
+btgf: 2
+fgjb: 2
+jlzc: 1
+btcl: 13
+rzlz: fvnz * wvzw
+rfpw: 7
+ppzn: bslr * lpgv
+tfbd: tppd + rgrf
+sbnq: 12
+zwhh: spnb * mvql
+rlsq: gwnj + dbqf
+dhbq: 4
+zbhf: 3
+tsrb: gzdb + bfzt
+tpjd: vqsq + qbbw
+zwlq: 5
+cmwc: 4
+lgjp: tfcn * vtzp
+lgsl: npbg / dpgz
+zlbr: 5
+jwsn: 2
+qsdz: hsgt * tfct
+ggps: pcpq + jsnc
+sbjr: 7
+rdbw: vbdj + hzps
+drzs: 19
+fjqc: cnrf * mssm
+lfqh: crmh * smjm
+hvsl: bvws + hrzt
+thqf: 1
+vlms: mtgf + qggl
+pzpf: jwvv + tnrt
+lmvt: phcl * chdl
+fmrf: 2
+vlbb: 6
+jszm: 3
+lrpv: 3
+dvps: 5
+lhtt: mzqv * ngmt
+gcdj: 5
+mwtp: 19
+rfjz: snng * wzzw
+qjwl: gpht * csrp
+vbbp: 2
+fqfn: zrvg + vpvs
+nqdc: cflr * qdqj
+npmr: 2
+hrsf: 2
+gthl: 2
+pdtv: lpld * jnqm
+bwht: 2
+qdmn: bvff + ngnz
+tjls: pvtg + hjnp
+jtjv: dmwl * wrsj
+wqzz: zvbl * rdbg
+cvzt: vvgs + rsvv
+rtcv: 3
+cbtm: nrcq + sjzd
+rcjn: jtsc * rtzd
+zjvc: 2
+vjfd: fmqc / smcp
+zrwv: ffbl * rtcv
+wfgq: bmjf * ltjt
+sfcf: fvtb + ttfr
+hzvb: thvd * pltc
+ngmt: bttc + brjz
+jppb: 3
+zgss: 3
+lcwf: zwmj * djnj
+cddq: 5
+jldf: hmzt + rjdq
+cpfv: 18
+jwzl: brqv * dbnw
+mshv: 19
+ttqc: rcbf * vbnz
+hhjd: 2
+jwvv: dbmn + rtbr
+rfdf: 3
+zrrn: 9
+jzlt: 1
+tcts: 5
+rlpr: 6
+srml: mzmw + tvwc
+cfjv: sjbj + dvst
+nzmj: lpmr + jppg
+trtn: rdbq * mqpq
+zlps: vmss + tngz
+ppqb: frlh + gvwb
+slrl: 14
+cdhm: qgjc * nqhg
+hfls: 4
+htzh: 14
+pjdd: 8
+jtdg: nfvj * ddcv
+jwqd: 2
+lbdn: 4
+zlsj: 4
+jblw: tndh + dsfp
+bnnm: 4
+mjcq: 5
+fvwn: 17
+msfz: 13
+vrhc: 3
+mfcn: cnpj * shbj
+mdmw: 2
+jhjz: pmjn + ppzn
+rqqs: rdbd * rjpc
+ffms: 4
+cppn: grvz - fvqq
+thwd: 5
+hnnl: 4
+bwwh: smmv * gshc
+wqgs: 5
+csrp: 5
+qhhf: nfpr * phwz
+mqlz: hrvs + ghht
+fcdn: 3
+hgfz: prsj + nwmq
+glnb: jssv / prjm
+ltlm: mpmq * nvjg
+rlpz: jtcz - wrlb
+wgst: 9
+ldnw: tltg + mhqb
+hnfq: 2
+scsc: rnnh * jftv
+tdwg: jjfl * dmnf
+cvjb: djps + bqpb
+slwg: nlml * wbgz
+cdlc: 11
+mlrb: 3
+rlqb: 2
+gcjw: 6
+qwll: 7
+lccv: 5
+ntlp: jvjb * fvwn
+swfb: jshd + zljq
+rdbg: 5
+szwn: 6
+fvld: hvsl + jsfz
+pldf: ggwl + lcsh
+hgqn: 18
+slbz: mqdq / jrtr
+ggfs: jzvc + rzlz
+ttrv: lrsl + gntf
+wbps: mqlc * dwvm
+djln: chbl * vjcg
+jrvg: 2
+ltlv: 1
+twjv: dqph * fmhd
+pdqv: 2
+nfvj: 4
+lqzz: 11
+dncn: 2
+bqgf: vhtm + hpcf
+wfnt: 5
+wdmq: 2
+wbmh: svfg + ltzn
+lwmv: 2
+ddtg: dlzh / nbzv
+cwwh: 2
+hdsf: pfpc * fbfr
+rznw: fspn + pwhg
+bwhd: wfgq / pmtj
+zllt: nqhc * jlrq
+qggs: vrbz + lrpq
+slhl: 10
+htnf: jgnq + tnmq
+zrqr: hqcr * nqfq
+dpfm: nszt * cvzz
+lqqv: 4
+wqtm: 15
+tfcn: dlbc * gfcg
+dgfd: 7
+tqbq: 3
+qzpg: 2
+dzsp: 5
+czmc: gzmj + jtmr
+hrgt: vvvv * jqmp
+cwmb: ncwh + zvdt
+hhnd: 13
+scsr: vnmv + qnzm
+czjh: 8
+lltn: mdfp * zbcd
+qlzj: tmtw + gdjv
+dwsv: ztds / bhhj
+sjtb: nzvt / jbjw
+fwbj: 13
+hgmq: zwhh + bwnp
+lmpn: vctd - mwrw
+cnlg: tbwz + znmj
+mvwl: snhg * dfdc
+lgrc: 17
+qpzm: lfqh + vcsm
+nzzt: fddj / gwlf
+dzpd: 10
+pvgb: 18
+zgjq: 2
+dqqp: 5
+qvdr: clnl * svrm
+fzfb: 2
+jpmf: 2
+gwws: 4
+nvqf: 2
+qlwj: nchp * jljn
+crgm: 2
+fqlf: 15
+vthb: qqvm / zbmz
+mjvd: 7
+sjzd: sjnt + pjmt
+trzs: 7
+pwvq: tthn + lnrs
+jtsm: 3
+ztvn: 4
+btjt: jqhf * nlht
+jnth: 2
+vdlz: cnlg + htvv
+jcps: 3
+hgjw: 5
+frgf: 2
+bqzm: ngmc * sbsb
+dhst: ljhh + cmwc
+nbzn: 5
+qbqw: dnft * jzgn
+wdss: 9
+smpc: qgsj - hwdg
+jcvd: ctgw * rnhl
+hdgg: 3
+gzjd: 5
+cwrq: nhns + lszv
+fdtg: bhqt * zrhz
+fphj: zqpr + fvzm
+zcjv: 7
+wfwm: 2
+hnlb: 2
+tpjl: 3
+nfrp: 6
+pfdj: pwwq - bnnm
+lpgv: 2
+gvmg: 2
+frlh: qfbn + lqnw
+vtjd: 5
+jhzl: zznw * ffrj
+lsps: lgcb + gpbj
+gvhs: ftlq * sgbl
+qqvm: tvpz * bsmg
+ghpn: 1
+fvhc: 15
+hjzj: ltfn + nwnj
+bjbn: 1
+wrsj: 3
+jhfq: 18
+dvqw: wpsl * qcbj
+gsjp: 2
+splh: 2
+ttcz: fmcq * gjtl
+nlff: vssp * djhv
+wrcb: 3
+ntnr: cvzb / lzlv
+bzdh: 2
+fvcg: 3
+tndh: hlbh * ngtq
+vhbz: dmvt * vwvt
+rwgb: vmrz + cjwr
+zvrv: jgmq * fmcm
+zzld: pqls - zgcc
+mpzw: 13
+lhjh: bclm * hpct
+qbnz: bnwn + qqms
+zcjg: svzg / rgjv
+mjtq: frgf + hwmz
+htcn: 4
+jzmv: hczq / thtd
+slsw: 3
+qppn: dfbn * lsfl
+jnqm: 17
+lhsj: czvp * pfgc
+jsfz: 1
+qnqt: zzgp + wrcb
+zzlb: 3
+rpcp: htzc + lchd
+hhrh: 13
+rbvv: fffw / hvdn
+fjbm: 4
+pbvv: bqvn + wprd
+rlgp: 7
+jvjb: 2
+ggfw: 5
+jgdp: 3
+strj: hllw * jbqq
+vfvl: 4
+qzqg: 13
+zpnz: shrv * qzds
+mljz: svnj + rlpr
+lrsl: lzhd + vvgr
+nqwc: rcrt * jhst
+gsbh: ggjh * vnjr
+mlqn: bphw + rvzd
+cjwr: cmpb + cwnc
+clnl: 5
+pldm: cmdr * ttvw
+tfht: ttgl * hlzh
+wzmh: cdlc + nlcp
+hlhp: 1
+bdtn: 2
+zwmj: 3
+tgrb: hzvq * drmd
+vfhp: wsjv * bgft
+nzjr: bvqz + hshj
+jllb: jwpq + mljz
+gflv: srdb + wsrh
+mhqb: pjqb * fmpw
+tfcv: gtvt * tfnd
+vjhb: 7
+wprd: zcjg + vgwp
+fqmt: pzfv * pdqb
+zpcr: 3
+hvgm: 17
+bwqc: 5
+qsbv: qfpz + vbrn
+crwh: 1
+lfcj: bwhl * hmrv
+qpdp: vvgf + qhhf
+prrc: ctzn / qgpm
+tjmn: 5
+jssv: qlgh * dqpt
+dbjs: jrzn - gdrc
+cnrf: hgcf * bjtf
+dbgc: hzph * mfmp
+bdwh: dppw * zmsn
+wfbf: tqbq * zcfj
+nppj: 2
+mssm: vqcr * qggs
+gbvt: gbgp * tmvj
+ghpm: dlnc + dbfr
+hllw: wsrd + zngq
+jvmt: lqtg + bwjl
+tthn: hjwl * fzgh
+qrtc: rvbl / djvz
+dlzh: rwll * lwmv
+nzvt: fzfb * bwhd
+cvzz: 15
+pwhq: 2
diff --git a/2022/src/bin/day_21.rs b/2022/src/bin/day_21.rs
new file mode 100644
index 0000000..7b23bab
--- /dev/null
+++ b/2022/src/bin/day_21.rs
@@ -0,0 +1,291 @@
+use nom::{
+ branch::alt,
+ bytes::complete::tag,
+ character::complete::{alpha1, i64, line_ending},
+ combinator::map,
+ multi::separated_list1,
+ sequence::tuple,
+ IResult,
+};
+use std::{
+ collections::{BTreeMap, BTreeSet},
+ fmt, fs,
+};
+
+fn main() -> Result<(), Box<dyn std::error::Error>> {
+ let input = fs::read_to_string("inputs/day_21.txt")?;
+ let mut monkeys = Monkeys::parser(&input).unwrap().1;
+
+ dbg!(monkeys.eval("root"));
+
+ let (original_root_left, original_root_right) =
+ monkeys.0.get("root").expect("No root monkey!").values();
+
+ monkeys.0.insert(
+ "root".into(),
+ Expression::Eql(original_root_left, original_root_right.expect("foo")),
+ );
+ monkeys
+ .0
+ .insert("humn".into(), Expression::Value(Value::Input));
+
+ // TODO: This should be some sort of loop until done. It isn't complete yet.
+ monkeys.simplify();
+ dbg!(monkeys.0.len());
+ monkeys.simplify();
+ dbg!(monkeys.0.len());
+ monkeys.simplify();
+ dbg!(monkeys.0.len());
+ dbg!(monkeys.print_expression("root"));
+
+ Ok(())
+}
+
+#[derive(Debug, Clone)]
+struct Monkeys(BTreeMap<String, Expression>);
+
+#[derive(Debug, Clone)]
+enum Expression {
+ Value(Value),
+ Add(Value, Value),
+ Sub(Value, Value),
+ Mul(Value, Value),
+ Div(Value, Value),
+ Eql(Value, Value),
+}
+
+#[derive(Debug, Clone)]
+enum Value {
+ Ref(String),
+ Literal(i64),
+ Input,
+}
+
+impl Monkeys {
+ fn parser(input: &str) -> IResult<&str, Self> {
+ map(
+ separated_list1(line_ending, tuple((alpha1, tag(": "), Expression::parser))),
+ |lines| {
+ Monkeys(
+ lines
+ .into_iter()
+ .map(|(id, _, expression): (&str, _, Expression)| {
+ (id.to_owned(), expression)
+ })
+ .collect(),
+ )
+ },
+ )(input)
+ }
+
+ fn simplify(&mut self) {
+ let ids: Vec<String> = self.0.keys().cloned().collect();
+
+ // simplify to literals where possible
+ for id in &ids {
+ if let Some(val) = self.eval(id) {
+ self.0
+ .insert(id.clone(), Expression::Value(Value::Literal(val)));
+ }
+ }
+
+ // simplify single sides of expressions where possible (especially unwrap refs)
+ for id in &ids {
+ let monkey = self.0.get(id).expect("Unknown monkey!");
+ let simplified = match monkey {
+ Expression::Value(v) => Expression::Value(self.simplify_value(v)),
+ Expression::Add(a, b) => {
+ Expression::Add(self.simplify_value(a), self.simplify_value(b))
+ }
+ Expression::Sub(a, b) => {
+ Expression::Sub(self.simplify_value(a), self.simplify_value(b))
+ }
+ Expression::Mul(a, b) => {
+ Expression::Mul(self.simplify_value(a), self.simplify_value(b))
+ }
+ Expression::Div(a, b) => {
+ Expression::Div(self.simplify_value(a), self.simplify_value(b))
+ }
+ Expression::Eql(a, b) => {
+ Expression::Eql(self.simplify_value(a), self.simplify_value(b))
+ }
+ };
+ self.0.insert(id.clone(), simplified);
+
+ if let Some(val) = self.eval(id) {
+ self.0
+ .insert(id.clone(), Expression::Value(Value::Literal(val)));
+ }
+ }
+
+ // simplify across the equals
+ // TODO: There are probably more of these cases needed
+ for id in &ids {
+ let monkey = self.0.get(id).expect("Unknown monkey!").clone();
+ match monkey {
+ Expression::Eql(Value::Ref(r), Value::Literal(v))
+ | Expression::Eql(Value::Literal(v), Value::Ref(r)) => {
+ let referenced_monkey = self.0.get(&r).expect("Unknown monkey!").clone();
+
+ let new_eql = match referenced_monkey {
+ Expression::Add(Value::Ref(new_r), Value::Literal(added))
+ | Expression::Add(Value::Literal(added), Value::Ref(new_r)) => {
+ Some((new_r.clone(), v - added))
+ }
+ Expression::Sub(Value::Ref(new_r), Value::Literal(subtracted)) => {
+ Some((new_r.clone(), v + subtracted))
+ }
+ Expression::Mul(Value::Ref(new_r), Value::Literal(mult))
+ | Expression::Mul(Value::Literal(mult), Value::Ref(new_r)) => {
+ Some((new_r.clone(), v / mult))
+ }
+ Expression::Div(Value::Ref(new_r), Value::Literal(denom)) => {
+ Some((new_r.clone(), v * denom))
+ }
+ _ => None,
+ };
+
+ if let Some((new_r, new_v)) = new_eql {
+ self.0.insert(
+ id.clone(),
+ Expression::Eql(Value::Ref(new_r), Value::Literal(new_v)),
+ );
+ }
+ }
+ _ => {}
+ }
+ }
+
+ // clearing out unreferenced monkeys
+ let monkey_references: BTreeSet<String> = self
+ .0
+ .values()
+ .flat_map(|expression| match expression.values() {
+ (Value::Ref(v1), Some(Value::Ref(v2))) => vec![v1, v2],
+ (Value::Ref(v), _) | (_, Some(Value::Ref(v))) => vec![v],
+ _ => vec![],
+ })
+ .collect();
+ for id in &ids {
+ if id != "root" && !monkey_references.contains(id) {
+ self.0.remove(id);
+ }
+ }
+ }
+
+ fn simplify_value(&self, val: &Value) -> Value {
+ match val {
+ Value::Ref(r) => {
+ let referenced = self.0.get(r).expect("Unknown monkey!");
+ match referenced {
+ Expression::Value(v) => v.clone(),
+ _ => val.clone(),
+ }
+ }
+ v => v.clone(),
+ }
+ }
+
+ fn eval(&self, id: &str) -> Option<i64> {
+ let monkey = self.0.get(id).expect("Unknown monkey!");
+
+ match monkey {
+ Expression::Value(v) => self.resolve_value(v),
+ Expression::Add(a, b) => self
+ .resolve_value(a)
+ .zip(self.resolve_value(b))
+ .map(|(a, b)| a + b),
+ Expression::Sub(a, b) => self
+ .resolve_value(a)
+ .zip(self.resolve_value(b))
+ .map(|(a, b)| a - b),
+ Expression::Mul(a, b) => self
+ .resolve_value(a)
+ .zip(self.resolve_value(b))
+ .map(|(a, b)| a * b),
+ Expression::Div(a, b) => self
+ .resolve_value(a)
+ .zip(self.resolve_value(b))
+ .map(|(a, b)| a / b),
+ Expression::Eql(a, b) => self
+ .resolve_value(a)
+ .zip(self.resolve_value(b))
+ .map(|(a, b)| if a == b { 1 } else { 0 }),
+ }
+ }
+
+ fn resolve_value(&self, value: &Value) -> Option<i64> {
+ match value {
+ Value::Ref(id) => self.eval(id),
+ Value::Literal(num) => Some(*num),
+ Value::Input => None,
+ }
+ }
+
+ fn print_expression(&self, id: &str) -> String {
+ let monkey = self.0.get(id).expect("Unknown monkey!");
+
+ match monkey {
+ Expression::Value(v) => format!("({})", self.print_value(v)),
+ Expression::Add(a, b) => format!("({} + {})", self.print_value(a), self.print_value(b)),
+ Expression::Sub(a, b) => format!("({} - {})", self.print_value(a), self.print_value(b)),
+ Expression::Mul(a, b) => format!("({} * {})", self.print_value(a), self.print_value(b)),
+ Expression::Div(a, b) => format!("({} / {})", self.print_value(a), self.print_value(b)),
+ Expression::Eql(a, b) => {
+ format!("({} == {})", self.print_value(a), self.print_value(b))
+ }
+ }
+ }
+
+ fn print_value(&self, value: &Value) -> String {
+ match value {
+ Value::Ref(id) => self.print_expression(id),
+ Value::Literal(num) => format!("{}", num),
+ Value::Input => "input".into(),
+ }
+ }
+}
+
+impl Expression {
+ fn parser(input: &str) -> IResult<&str, Self> {
+ alt((
+ map(
+ tuple((Value::parser, tag(" + "), Value::parser)),
+ |(a, _, b)| Expression::Add(a, b),
+ ),
+ map(
+ tuple((Value::parser, tag(" - "), Value::parser)),
+ |(a, _, b)| Expression::Sub(a, b),
+ ),
+ map(
+ tuple((Value::parser, tag(" * "), Value::parser)),
+ |(a, _, b)| Expression::Mul(a, b),
+ ),
+ map(
+ tuple((Value::parser, tag(" / "), Value::parser)),
+ |(a, _, b)| Expression::Div(a, b),
+ ),
+ map(Value::parser, Expression::Value),
+ ))(input)
+ }
+
+ fn values(&self) -> (Value, Option<Value>) {
+ match self.clone() {
+ Expression::Value(v) => (v, None),
+ Expression::Add(a, b) => (a, Some(b)),
+ Expression::Sub(a, b) => (a, Some(b)),
+ Expression::Mul(a, b) => (a, Some(b)),
+ Expression::Div(a, b) => (a, Some(b)),
+ Expression::Eql(a, b) => (a, Some(b)),
+ }
+ }
+}
+
+impl Value {
+ fn parser(input: &str) -> IResult<&str, Self> {
+ alt((
+ map(i64, Value::Literal),
+ map(alpha1, |s: &str| Value::Ref(s.to_owned())),
+ ))(input)
+ }
+}