From 1a7151a3226c6ac79203b3469c82eaa5bac1c01f Mon Sep 17 00:00:00 2001 From: Christian Date: Wed, 8 Nov 2023 22:08:02 +0100 Subject: [PATCH] Day 21 --- Y2022.cabal | 1 + app/Main.hs | 1 + bench/Bench.hs | 1 + data/21.in | 2913 +++++++++++++++++++++++++++++++++++++++++++++++ src/Days/D21.hs | 117 ++ src/Lib.hs | 2 + src/Print.hs | 6 +- 7 files changed, 3038 insertions(+), 3 deletions(-) create mode 100644 data/21.in create mode 100644 src/Days/D21.hs diff --git a/Y2022.cabal b/Y2022.cabal index 5fb8f90..da75c4b 100644 --- a/Y2022.cabal +++ b/Y2022.cabal @@ -55,6 +55,7 @@ library Days.D18 Days.D19 Days.D20 + Days.D21 build-depends: bytestring , either diff --git a/app/Main.hs b/app/Main.hs index fccadde..1d696fa 100644 --- a/app/Main.hs +++ b/app/Main.hs @@ -28,6 +28,7 @@ paths = , "./data/18.in" , "./data/19.in" , "./data/20.in" + , "./data/21.in" ] solutions :: [(Int, Day, FilePath)] diff --git a/bench/Bench.hs b/bench/Bench.hs index 90f3f07..faea1d6 100644 --- a/bench/Bench.hs +++ b/bench/Bench.hs @@ -27,6 +27,7 @@ paths = , "./data/18.in" , "./data/19.in" , "./data/20.in" + , "./data/21.in" ] solutions :: [(Integer, [Day], FilePath)] diff --git a/data/21.in b/data/21.in new file mode 100644 index 0000000..626246b --- /dev/null +++ b/data/21.in @@ -0,0 +1,2913 @@ +ldbh: svzt + qdvz +bngr: 12 +whrt: 7 +vmlt: vvgw * glnh +qvrb: 2 +fbpw: 14 +mrjf: 14 +zvrs: srms * hgnp +mjbc: 2 +bllv: 5 +rzfq: llwp * dvvw +qgfc: 6 +vnpd: 10 +hhvp: 11 +srql: 16 +gqpz: zgmj * qhtw +fqld: 5 +mqjr: cmgg * gdcd +pqjn: swvg + rbdc +ntft: 2 +lgjb: 4 +zpvn: mdtc * lgwl +qrzq: 9 +jdvs: 2 +cvdj: hnrv * mcsd +wvsd: 2 +hhgq: 7 +rlgh: 4 +wlbp: 13 +zrml: 4 +dzdb: 9 +nzwf: wbmh + ggjq +bvzt: bnwc + vqcl +ftmc: tplh * qznz +jngc: przr - pngm +ftvj: pvsj * pzvp +npdf: tvnm * trmn +wrrs: zmsh * zgnd +vbnv: ljsw * pbzs +mclj: bbhl * lpwf +mmmr: rvfq + hrtl +pqwl: 5 +nfmf: 15 +zsvt: zhqn * wlss +gpfs: 11 +nrbb: 3 +tswh: zwsr + pfgq +hqfw: 7 +gfqd: 4 +npjd: ltfv + vshm +rlmp: rwwq + vcnl +mbtl: dnwh * wlnw +qmjs: bffr + hvpd +lfvg: 2 +pmml: 7 +vglt: dvbz * pwpr +cvbd: 3 +sfdf: 4 +pmfc: 4 +qjrl: 12 +fszl: 2 +qjzz: rbzw + gzrc +zldt: wqnz * lfpw +wnlc: 3 +nvrv: 3 +hjjj: bcpt + zwtc +qjsm: 5 +wwng: 2 +nnjt: ltfn * wlsr +rsqd: 19 +rtfv: whpl + swcb +pwpr: 4 +dgsr: 3 +wjdt: pbwz - rpgb +rjqm: fwtv + psnh +dnwh: 5 +fthn: fmgs * tszt +ngvc: cghl * vspv +qpgr: pfph * fcdv +vnhp: zrfh + lspf +stzl: 3 +dwtv: 9 +cglj: 11 +nhhv: 2 +dgbw: nwpq - wntw +vfhf: 5 +hlsw: 1 +vmlg: 17 +pbwd: qvmw * pnwq +fgtj: 13 +gjhp: 13 +nmjs: mjgn + dtrb +blgt: 14 +bswt: 1 +jbnd: 2 +tfwd: 7 +lgqf: 9 +jdpn: 2 +cjwm: 11 +zdzq: splv * scpd +jggc: 3 +rmvl: jsts * dftj +dblr: dzpg + jcpf +bmst: hzfw * lpmn +nnts: lmnf + bjnt +fttj: jlnf + fjtj +vfsl: vjww * mnlm +fwmh: zmgz * gtdc +dfcv: ztpw * rjfq +ptqd: 3 +jnrc: lrtb * wqtl +pnzn: 9 +lgrq: 10 +gntl: dzqj / qldl +gwwj: 4 +bllb: 8 +lflg: sfdm * rrbc +hmtj: mfsb * wczz +lslj: 2 +rllz: 7 +mthf: dsgz / ljnh +mbfc: ntmv + hzdb +fhpm: zlgd + gzgt +thnj: 6 +rrwp: 10 +dchh: 2 +gprh: 1 +btpq: dmrl * rwhs +wcdt: 4 +trgj: 4 +ftqb: 3 +qpgt: 3 +cnsp: wlnb * tnhd +vsgq: gqvw * bpbf +bffr: 1 +dhng: tqct + dgdp +bwcw: lltw * mhmj +mfpt: 3 +lcjl: dtsj + glrn +wvnm: rqqv * vqth +qsws: 5 +ldhq: phjl * qtfm +cgtw: wjtq * bhbf +nbcv: rptz * dfnl +ffmh: qvtn * wsmj +hcsr: 3 +nwwq: rgjm / glbd +tfjh: vbzc * pwvl +hwjq: 2 +prwm: hbsn / fscf +pcfm: 1 +crld: gcnz + trgj +tgvm: gjjg * jhdt +cczz: 3 +mfqf: 2 +trhz: mrtd * bzzg +tgvs: 2 +nqtq: 5 +dsgz: cnwr * vslf +hzww: tjhf * pmfv +fgsw: dcmn + nzjb +slmd: 3 +zrhl: shmb + fsfb +ztqf: hjjl + bcgf +gdzt: 3 +pstd: brbn * wlnd +npjl: mflw * qngw +bzzw: rtjw * gqpz +bslm: 3 +zbcm: hcsr * rwnr +fpgc: hhvp * wpmh +fdnc: zdzr + tnnm +vhtm: ndsl + mgjc +nqtf: zdrg * ntpj +cjlm: pgld - vcts +mpvs: 12 +bjch: 4 +pmgp: vvqq + qgzj +qtfm: 2 +cdft: 2 +dbhz: vdfd + pcvf +fmlg: dqgz + vswp +vzhm: gdgj + nzbr +dwms: cmjr / wngv +gfpv: 3 +rrqt: dpzc * bbhq +fsfb: rfdh + prpz +pqdf: lnhc * rmvb +mlnc: fzlz + mbrm +fbpn: 2 +pvdz: qgqb + bcql +gdjz: pfll * gnws +llns: 4 +zssr: 12 +dhhv: ftbv * fjfb +vqpd: zpgl * zmjl +qpgf: 2 +gwzn: frwz / flrb +njsn: 2 +fhmc: 5 +cvhh: rbdm * lgzl +wcrw: 8 +fjms: hcmp * pbbd +vpzw: 3 +mnrw: 5 +brzg: bpmr + wfhg +vwjg: 11 +wnzm: 9 +pdht: 3 +nnlg: whrh * zfrs +jwtz: ssll * bpvc +lnbs: sgch + llhp +mwdh: qzmr * prhf +dsws: 16 +rjqb: wzjg * rpgh +tndq: lwcr * gwpc +vsdl: 4 +gclp: fptm * bfmv +vqfr: zwnc * mnrw +czcs: 4 +ftjz: dhqv + vrnq +hlfs: rvww + lthl +cglf: bwzn + cpvh +spbv: smnh + mvwz +gmgb: 2 +dvbz: lgvn * fgtj +tmdg: rpzc - qrzq +pfvb: vpgj * dwpj +cdsv: zmgm * fdrv +qsln: wsvc + qmqw +vjww: 5 +mqpv: cdft * nzfc +sbsn: swfg * jtnb +vhld: fhwc * cdgc +mcjq: 2 +jrzv: 2 +dznt: wpzn * mfrl +fbrt: nvfb * mcrj +cwgr: 16 +zlwz: 3 +mmsd: lbhj + lmjm +rjnl: vrgq + ddlw +pbrm: lhbg + zztd +zrzg: tbqz * vzsm +qqcw: tvzg * vmmz +jrjf: jbwm * dtwd +pblt: 3 +dvqh: hsdp * smdc +jjbb: dlrb + fttj +dbsb: 3 +bbqc: czmt * whwt +nglf: 3 +rvfq: dhpd + whzp +gqhj: 5 +httw: 2 +wfph: 5 +zmwd: 5 +cljr: 3 +vzsq: jggc * vsmn +tlgv: bdtt + lptg +tsdb: 5 +vfrb: 3 +rspf: 5 +pbzs: 5 +lgvn: 2 +sdct: 7 +zldp: zmvb * trwh +ghjs: jclm + npjl +wmlm: 2 +pptb: tldb + drnv +chms: 2 +jzmz: nwzv * fjth +qrms: cqpt / httw +wnlm: dblr / tsmw +lfhs: dqpt / ghwn +fgll: 1 +rsmj: 3 +gctt: qcmr + vwbs +pfjj: mhbg * hpzr +lmzs: ttln - sdcs +snrb: wtfg * jvqz +pgld: jlwb + nfmf +bzfz: mzbf + lfwn +prqh: 5 +qzsc: pcrd + hdgh +rgnd: 2 +fllb: tvjv * zjdm +cmjr: qjhr * ntfj +fgzt: 2 +qgqb: lfwm * wprg +hwtj: fpqw * zlnr +cwgp: vjjn * vvbl +bjpn: 13 +jhgz: 3 +nzws: 3 +psft: nwgm * vlzq +twqn: ffpj * rgww +ddcm: 5 +fscf: 2 +root: jhpn + jmsg +lrdw: rjpp * dbsb +qjcv: ntmf + jsgc +llhp: nqsg * zqwd +trsb: 2 +rnzz: wrrr + wjng +vgmz: pmfn - zlfz +dgtn: tgcl + pfgv +vmtg: 3 +brbn: 2 +bzzg: 4 +rfdh: bzfz + wsnm +ldmh: gctt + nwpw +vnps: vhqc + hnrp +qnbm: pzfr * fdws +gpvh: gjhp * jgbc +gqdp: pfml + pphs +qllm: vcbb * phvw +spbm: 5 +pfnd: 6 +gmnq: 4 +djqn: mfmh + rlgh +vvqq: 8 +jhbc: mmjs / cdht +zhvm: nmjs + wqwn +tmjc: 8 +jclv: 2 +jwtj: dqlj + qmbg +hrpq: 2 +ttqs: 2 +nqdf: 4 +zzhv: smlj * rzdb +wphz: 11 +vvbl: 3 +vddh: 3 +sfmf: 3 +pfwj: vztw * rfbp +bgmd: 2 +cqfv: fcpr + scph +jmgs: jqnf * ppbs +drpl: 2 +mfrl: 2 +wzfw: 3 +lpwf: 7 +hhhv: 2 +pvcc: dvvs * prgs +cdsz: 7 +jjmr: nglf * pdgd +lntl: shjt * drrq +zpgf: 7 +znql: 2 +mvwz: lgbt * whrt +dbph: gtqc + sdbd +fjfb: 3 +nzgm: 4 +rbzw: 11 +vcjn: ztrr * cftq +nqjm: rzwl * pnjh +wwlw: mrtr * cntj +hcsq: 5 +gcmt: 3 +qgss: sdsv + fwfv +ctdh: gmqv * bgsr +mpcl: 2 +wcbv: 2 +sgjl: 2 +qmqp: 8 +cbrj: tnlz + cjmb +tnmf: 2 +qvtf: djqn * gmcr +pvsj: 3 +pvlc: gpfs + mzhz +zghf: btbw * nrpm +bghv: zcdq + bwnc +rtrr: 2 +jjmh: hhfc * hfjw +smnp: fmdq * sqnl +bjnt: pbmd * hzvs +lsbt: 5 +mshq: 11 +tztc: dwrt * bqln +tqnw: 2 +rmsc: 5 +sgcb: fbjl * wvvr +hzdf: 4 +zlgd: 19 +wqnz: 5 +dhdg: 11 +wsmj: 2 +rwbt: 2 +gpsr: ntwb * gdvg +pbwz: rlzc + hwfq +cjvm: qwdv + jwtj +jbsp: 2 +mmsm: 7 +nlqv: nrzm * cfcp +hgmh: 2 +jvzb: 6 +spwt: 5 +sfpz: svnn * bcgs +dsrd: rcnt + nzjd +fvqw: 3 +fcpr: mmnt + hhnn +jbcl: swdt + wjzp +tgbc: hgcv / zzjh +bwfg: 4 +brll: 4 +sdbd: rfpt * tlhs +rzlm: mshc + lllw +fghb: rsdq * mtsr +nvzl: vvbj + fpgc +wzjg: 3 +dgts: 13 +thqp: mglm * hjqs +tgwr: 7 +ftmv: 3 +cdgc: 4 +fzgg: mwdd * gqhz +jggz: 3 +lrts: 3 +fhjb: 5 +fjlw: vcwl + rmvl +mclz: rbhm * rcjm +qqjh: zrrz / fhjb +sqdp: 6 +gzrc: ncnd + gspl +hzwg: 4 +tpwn: qtpm + rhbt +mdtc: sscw + pstd +wsjr: 8 +mtsr: 2 +bmjz: 5 +pfph: 15 +dgrr: bdbf + sbzn +dqsh: gtsl * rjwb +jbrr: hdwz * vjst +nwmf: drrc * fthn +trcb: ffht * fgzt +gtqb: 2 +qpns: rcjb + fcfw +vlqr: pgzv * lmnr +jhvq: ftdm + hnjn +mfml: ssjj + vgpc +qmbg: bsbr + swnh +tfht: bnpn * hmhd +hllq: 3 +hjzm: qzmw / hwjq +nltb: 2 +lpbw: 6 +bdtt: qlqz + lzps +vhbh: 2 +rjtf: 12 +jjfn: 3 +zqgf: 5 +hvpd: pcgp * pfth +ltfn: 5 +qbqn: jjfn * lppq +tbfd: 3 +gnpg: 6 +wfgl: jzqd + rnfm +mpjn: 4 +dlrb: tldr * jldb +pgvz: 4 +dpzc: 9 +dcsv: 3 +twww: 2 +stvm: zbvh * tsgt +qfwb: 3 +fwfv: 1 +gqbf: pzgd * spwt +snjm: 6 +cjrv: htlz + plhl +lbql: chqd + zgcb +wzps: tcpv + mclj +zjrq: 12 +mwdd: 5 +zjqh: 2 +tfmc: tswh * llns +qvpm: gmnq * wrsb +rflf: 13 +rbdm: 2 +pcrd: fbct + vrrg +nzhq: 2 +ctdv: fdlj / jwcj +hsdp: 7 +nwjg: qzmh * mqrf +nztp: gjcq + mwls +sfrl: 2 +lhbh: 2 +ntfj: nchm + fnhl +qzws: qdht + fmrh +nczf: 10 +hldf: 1 +qhtw: wljn + jjjh +ltrr: 2 +nphv: ggsp + fvhs +gzhv: nmvt * pdtg +vcwl: ggpb * clrh +trdv: 7 +zgdd: 2 +dsqr: 4 +pwpv: 5 +frwz: wvlc * jwpr +qnqq: lvhp * jcwd +gvqt: 5 +tzqq: hjsj * lssp +lrfr: 13 +wmwh: zjqh * jjqt +lqwd: 5 +lzfc: 5 +sbbp: 17 +jfrt: vpzw * lgmp +fjth: 5 +mjlv: 14 +qwsc: qszq * glgp +cjsd: 11 +slqf: 3 +wgwc: shzr + rrcj +mhcj: 2 +qmsf: rqpf * czdj +wrnr: gmgb + bsrq +cbcz: rcns + htcb +qnfg: hncf * nnlg +swfq: 2 +qgmg: qjjv * vdtt +glrw: psqs * cwqf +lqcz: zzqr + wjbg +jclm: 1 +llwp: 3 +gvjh: gjmr * mrft +vqbb: 2 +hnqs: 1 +trcf: dfbn * chcr +czdj: 13 +cctq: 3 +lgwl: 2 +gldg: htsh + cpbj +bqwb: 2 +hfrd: gdbv * ztnq +ltlv: pjjm + fzln +rnhl: cpqw + wtmw +lwcr: 3 +lmgd: 5 +lqgl: 5 +psjq: 17 +gqqd: ltgw * fpgj +wjrb: bwvd * gjfl +tbjg: 3 +lstd: 10 +dqpt: nbvv * fhmc +ftvt: 5 +zlrr: 3 +qdfv: nmqr - gtvd +wtpl: 4 +zbnd: rbjm * pfwr +wbpl: pbrm * psjq +hgvr: 4 +nqgg: plcl * drcg +gvwf: sgbq * htqc +nhsb: tztc + fbrq +tlhs: fznf + wnzm +tjhp: 6 +hfdf: 3 +lcph: vjbs + dpdf +mvfz: 1 +tszq: wjrb + mdvp +dhct: npdf + qqcw +fmnt: lcdb * zbrf +gdfs: 2 +jtvn: 2 +ntvq: 3 +qqjp: jtrl + fflm +nqsg: thbf * ptqd +mzhz: 2 +crqb: mzbh * zspz +gfgb: 3 +pvrt: 4 +dwct: pjjg * ghjs +hngw: gfqd + qcfh +dhqv: fvmd * vpwn +jqvc: qggp * tbtf +zrrz: cfnc + zvqb +ljjq: 3 +rrcj: 5 +dcjv: 1 +mdhj: 3 +nnss: 11 +mgbh: jcsr + zrrw +sztv: 3 +scpw: hftt + chjz +whpf: 3 +tftj: 14 +jrdv: 4 +pttf: 2 +srcn: rprn + rfvz +qngw: 2 +szmt: pvnn * dsqr +rcsd: tbgn * gjgn +mwsm: gfms * bvcf +rmzn: 2 +dzgr: 4 +swff: cstb * lsgn +brdl: 2 +tqmf: 2 +wddf: 2 +thzq: 15 +lwqr: nlfd + wnlc +mpjv: gjwm + jggf +dbrs: svvj * ftmv +vpbl: ftvj * nfqt +tsgt: ngbl + nfjq +nqcj: 3 +zdjm: 16 +tgtg: 5 +qsbv: nzcb * fhpg +sflh: 3 +wlnw: 3 +ngbl: pvjt + zpgf +lmzw: 3 +sjln: mgnd * wzhw +nzfd: cfzc * vvhg +prhf: 3 +mmjc: 2 +vpmp: hwtj + clcv +rbmt: 9 +jhbp: jqwd / vqbb +nmzt: rptb - whsn +zpbs: rnfb * stmh +dplf: cmbf + rsjs +zrrj: vplq / gfnd +dbns: 3 +mpff: 2 +mwbj: lcwg * dmzr +pgdv: qgns + nqgg +cltb: 2 +wpvc: hfsb + vzhm +rptb: jnrc / rhbz +rtjd: 11 +dpwn: 2 +bzwz: 2 +cfcp: 4 +dzqj: rtfv * mfzd +gzbt: 8 +fgss: 5 +fldz: 5 +sggn: 3 +tmnw: pcbg * hczp +ntdz: ndfb + scpw +vssr: snpg / hggn +vmns: szbj + lzlt +rprn: rqpd + mlbb +vhmj: 2 +jhdq: 17 +dsbl: 18 +fvmd: nnpj * cwfr +hzvt: 5 +nqcb: vngq / zctb +vdtt: 3 +pfmb: 3 +pzdn: nrhn * rnsh +fjbn: 4 +qjhr: 2 +pwjf: lhhs - bbtr +hbsn: qmcg + qggj +znqt: 3 +jshh: 2 +bgwf: lblc / vpds +fzdz: mjdd - whbl +rqjt: qrsp - mccl +jfjq: jpbw + drqd +pclr: nzwf * ptzj +vspv: 5 +stgr: 5 +tvdc: 4 +rwcj: 2 +mdjr: jjtn + lntl +rhwt: fbpn * dgzs +cpbj: flcf + wlpl +wbvg: cntg - cqsv +jhzf: hcnr * pgvr +rfbp: bmhr + nmvg +gshf: 2 +mqdg: 10 +zrtr: 10 +lmwv: 3 +zftc: 2 +gjcq: 10 +vmtj: qnfg / lbwn +tqlm: hjbw * nlvt +cwfr: 16 +vrpq: jnwt + fqld +mnwz: nglb - bjrt +vldp: 2 +qfjr: tndq / cnbv +vdfd: bwqr - jbdf +vtwj: fsdm - vmdr +wnbc: wcrw + cfnd +svch: dbph * hbnz +hwpv: mgcp * rdnz +zfgs: 11 +rfvz: tszq + vmzw +ttln: lfld / wqbf +shgt: 2 +hwjn: 6 +ggql: zmwd * mdgc +vzwl: 5 +hgnp: 2 +rgwf: vtvc * mpjv +rvnl: cjvr + cscb +blvb: 5 +qwhl: 3 +rwwq: pvgd + qhnh +hpfq: 3 +dzwm: 2 +szhp: mlbw + fhdg +zgcb: hwjn + ntqv +jqvd: gdgg * wrcq +lvwf: fszl * chwr +fdzn: zpzl + whqj +wpww: mqdj * lghr +shjt: 8 +pzfr: rtph / fjrq +qzmh: 5 +bqgn: 2 +rhbb: 2 +jhpn: wjpd / nzwj +qqgl: mlst / sgjl +plzr: tgtg * fgss +zpfc: vnps * tgvs +mlst: 14 +sbmw: 2 +tdbv: 2 +tptj: 3 +wcwm: 4 +fdrv: 3 +mpnb: drwp * vqtg +cmgf: 2 +vcmw: qjzz * nzfn +czrw: sjqz + rvsw +stmh: 2 +zpnt: 2 +prgs: 3 +hmvt: glsz + lsbt +zsdd: 7 +gcfw: rzgr * rmzl +vlzq: nwjg + phrn +jfvw: sbmw * gtmg +mccl: brrz * fcrm +pvnn: czln * bbpb +fdlj: mcvb / znfj +sdgz: 9 +glsz: bmlz * hjjc +hnrp: cglj * hvql +qppl: 4 +vpml: 3 +nwzv: 2 +cpvh: rszf * bdwd +sdwd: 3 +jpdd: smnp + sblb +tmgc: 1 +ndmd: sjdp * rfdj +ttff: 6 +nlvt: 14 +pdtg: ccwv * gdfs +swnh: hgvr + ntvq +gwbw: hzvt * nhsb +tfcm: 18 +wsnm: fwbh * sflh +tlvf: jjgd + vqpd +hsnz: gshf * gjjc +mmfc: jwjw * mgwv +pmfn: djwc * spbv +rpnv: ttmc + gmvf +pcfb: 2 +jjtl: 9 +wpzn: 13 +gbqd: 3 +qprt: 2 +wngv: 2 +nbzl: hdtb - plgq +cftt: 2 +ftds: 3 +jqwd: lfcv + dbzd +gjwb: 4 +bsbr: 1 +vpgj: 6 +hdwv: 6 +rpmc: 2 +nwbf: tqfl + tqnm +rtzp: wqfl * tlsr +zhqn: 3 +cnwr: hpgl / sqld +zfgz: 2 +nhct: 2 +qbbm: 2 +hqlg: cjcd + pvsp +jdjs: wsqr - pfvb +lbwn: 8 +jdbs: vnhp + bgbw +mfbb: 2 +bcqn: gvjh + rnvj +jbns: 1 +jbdf: 8 +gjds: 3 +vsdr: mdjr + hjch +cpsr: dgts * qvrb +dnlv: 9 +ftch: mlvw - hhlh +rqpd: zvds * svjs +vvfq: rbvm + rstg +cprt: bswt + zfgs +jsts: 5 +mjgn: 3 +smlq: pmml * nzhq +trpc: 12 +zmvb: 2 +tmcv: 1 +vztw: 4 +ltfv: nnhv * ffvn +fmrh: pqwm * nfdm +pqgs: rqdn + vjjm +gwgc: 2 +bsjb: cprt * dsrd +lhhs: bbgv * tmdg +gnqj: blvb * cfvw +lpmn: 16 +cfnd: 3 +qrjd: nbcv * nhdn +rbsj: 1 +zvvj: mvcj * dgtn +gmmg: jptz * sjzj +jwrb: rnbd + btpq +gwpz: zpbs * zbcm +vhss: 2 +rvwf: qrjd - wcbw +gzhr: cnrn + qllm +crms: 3 +jsbf: rqjt / rzhm +wqsd: wmwh / sgrb +ntvm: qwhl + qfdt +mgnz: 7 +rftf: 4 +hdwz: jcmm + hqvm +smgt: fswj / hrnt +zdrg: 3 +vgpc: plwt + rqnv +gftp: 3 +pmvl: ztqf - vpml +mmbh: qfjr * wwzt +cfzd: 2 +shcj: qjnb - nmmt +qggp: zftc * lwjp +nrsl: 17 +fpgj: vcrd * qbbm +mjrm: 2 +cmwg: 7 +mhtq: mpnb + gpjm +ntbm: slqf + whpf +pbzj: 3 +ztrs: rtnh * mmsd +pnld: 5 +jlmf: bndv * cfqj +hwdh: 3 +szhg: 10 +pfrp: zrzg - gwpz +zwtc: znwh + qfpv +jdnd: fccm * fwcm +frbg: 4 +jwzc: 13 +dzpg: smlq + jfwh +lbfv: 3 +mslr: 4 +pfnb: 2 +tqnm: 6 +lgzs: 4 +gnng: fhnd * dnhm +pwvl: 17 +gfnd: 5 +dqcc: 2 +znzt: twqz * ttqs +fwpd: 8 +bpcl: 2 +glrn: qvrj + crlf +lwpp: tnwh / hvwr +mrnj: zmmb + gdzv +vjql: qcfm + btqw +hqwv: dzgr * fpbf +slml: 5 +cgfj: 13 +mzzh: jrdv + mwvc +wngs: 6 +gbqh: glnt * fssq +bdbf: 3 +wmbg: 1 +hmnv: 3 +sbpz: vrff * vhtm +tbgn: sgcb + dfcv +rzgr: 2 +mpjc: 3 +vqss: pbwd + whvj +wdhf: qgzn * cglf +tdnf: 2 +rmzl: jwvj + dgmr +pvzn: 2 +blrg: hgwm * sdgz +nnzq: zjlt * frpj +gjjc: wjgz + rtjd +zfbr: drpd * fhcw +rcnt: 2 +hqqs: 11 +zqjm: 2 +tbjz: 5 +chhz: tzbs * dvwr +mfvb: 3 +rtgj: jdgn + mrsh +qnmn: rjqb * rlzs +jtvd: 2 +rsmh: wlcv + hmws +vqcq: rcbc + rdzl +fdws: pdjr * lrsw +vltb: ftnr * hgtc +gmcr: 4 +mjdd: szhp / jrsg +cwph: 5 +zpgl: 2 +qznz: 2 +qfbt: 14 +ddbq: 2 +cgsj: tjzq * fclr +ddrt: 2 +lhrb: qprt + vpcs +rlzs: 5 +lmjm: 4 +swvw: 3 +tzbs: ppwg + nfdg +jtcn: fdzn * ddnh +vjjm: rhwt + jjmh +svwm: 4 +rvww: jgdm * mmmr +zvqb: hhcw * fqst +pcbg: dgrr * ltrr +bzpw: fphg - jqvc +gftg: sdqn + dqdl +rgth: 14 +hpgr: zrml + sdwd +nnpj: 2 +vgzb: 13 +jftl: zftt * stdm +rlbf: 2 +wzhw: 4 +vpds: bllb - fgll +chhw: tlfm * gbrq +phjl: 3 +rnfb: mfqv - tpqg +cfqj: 4 +drqd: cmjp * bdqj +wjbg: 5 +htlz: czcs * srhp +qsgl: 2 +dnsn: vrpq * scsz +nctg: 3 +hjjl: 14 +lgzl: 3 +pnwh: 3 +jcvb: fbgp + qmqp +dfnl: 9 +cmbf: mpcl * rddd +mnbn: 2 +zcdb: 8 +crfd: mhrz + jqpp +pzvp: 3 +dqfv: 7 +lppq: tsdb + pshm +pwrd: dwpr + wgbb +sgmp: 4 +wdhs: 4 +gtgt: jjmr * bcpq +gjwm: tclj + ddqg +hjtd: mjrm * hfdf +htcb: fjlw * pwrd +clhf: 2 +tcpv: 2 +lgmv: 2 +hzld: 2 +dncs: 2 +qslg: vgzb * nvnh +ccdl: 3 +njpp: pnld * jjtl +ftng: fdqv * hrwg +mfgt: 3 +mtgt: 18 +gqbt: 2 +sdlf: psdm / szsm +rtcv: 12 +zjsh: dvqh + mfwm +lqqn: ddrt * wzps +htfm: 9 +rmzj: lzcj * hstb +lptg: bgvz * cnsp +lpmb: 7 +dghl: qnmn + pwcc +dgzj: 7 +sfdm: znzt + vhjz +mwvc: 2 +ztqm: 5 +mtqv: hjjh * nztp +sstl: dpwn + bnlm +ggjq: 6 +mrtd: 2 +bnwc: ztdw * bmqv +dftj: mmfc - jdjc +pphs: 10 +hdtb: zghf + dmhl +svsr: jftl + wzll +bpvb: 4 +blln: 9 +qdwj: 3 +tqct: 4 +gtqc: 1 +drmf: 2 +vsjh: 11 +wjmc: ngjz * vwzl +hbpn: 12 +hljf: 2 +jhbg: rztf + zfbr +fwbh: 2 +bwqd: wdhs * svhr +wlwm: 5 +vrdq: wzqn + zjpn +crqr: 4 +plhl: vpbl + bwqd +sjzj: dsbl + cppz +wbql: ctdh * tgcw +nnhc: 3 +rdsc: 2 +zlfz: vdrm * mlzj +mmbv: smcp * hvgw +mcsf: 2 +rznw: szhg * jfhf +mqzg: 2 +wgfm: jpdz + mmdt +btvd: wwlv * ftds +ftnj: tdmp - vfhw +tsvw: nphp + zbzj +svnz: tpsd * sdct +wcmq: lvmj + vqhd +fnqb: 1 +bmlz: 3 +rdvh: zdjm + nggn +wbhz: 9 +sbjn: mgnz * dsdp +vmmz: 17 +hgdg: pfjj + wmtd +spqg: nfwc * vcgg +jztq: rqgr * dpmj +ncnd: 2 +dpsd: bpcl * mhtq +hfzf: vmll * jsff +vmll: vbfl * ghql +bcrq: hfrd + dlnr +cvfz: 3 +sddr: 4 +jdns: 11 +lmml: 5 +mrsh: mmsm * vmvz +njcb: 2 +qcfm: 11 +qhzd: rcsd * zlpc +sdqn: qwws + jwtz +wrnm: 13 +hsgt: 2 +hctg: tpmb + smgt +jgdm: rjnf * dtmj +tplh: 7 +sqnl: 5 +rpch: szmt + pzfg +rnvj: vcdn + wfnc +qnhb: 5 +fvhs: mfpt + fhpm +vdhl: 13 +mcnw: 2 +rztf: blnd + snzc +zmgm: 5 +wsqr: cddd + vmnr +vbfl: 5 +jzzf: 2 +hblm: mcdc + dnlv +vslf: 2 +qwdl: qpgf * sstl +rgwd: 3 +jcwd: 3 +scpd: 7 +nbqt: 11 +zrfh: 4 +wblh: 3 +jgqd: vvcf * mrrf +pbqn: lpqp + nwwq +pjjg: 3 +cbfn: 2 +bqbw: 4 +swcb: pqdf + jndc +czpj: 13 +lwjp: rjnl - zfgz +lzsv: 2 +clbn: 6 +cfdc: qdfv - trpc +zdzr: 5 +vdzv: stds - hjtd +ljsv: lmvz * mfml +tpmb: nljn - rsmh +rpgb: 4 +wfjw: 3 +hqfp: wldj * vfsm +gsjb: jhmd + hsct +hnrz: lmtm + lfhs +ffpj: 14 +hqnm: dplm + wdbd +ftlh: bjns + qlmd +plcl: jdns * blfg +tzjm: 3 +whpl: 5 +swfg: nphv + nqtf +nfqt: 3 +lgwh: lqgl * qqgl +wgjv: 9 +tsbr: zpnt * qvvq +djsl: hblm + dqsc +pjjm: fdmp * vmlt +crlf: ftqb * jcrj +dnwd: hgpf * vfhf +dhmn: lrdt + swst +tvnm: 3 +qzmw: gjlz - sjrs +trmn: 5 +dgmd: lflj + dwvz +mtgq: ssmw + pngz +gdhs: 2 +fhnd: 2 +blhc: 2 +swzz: 2 +gzsm: dmcv + grnn +gtsl: vljn + ljsv +jpdz: 2 +fnhl: rjvq * gvfs +jqcc: 5 +rjpp: 3 +nghg: 1 +pcdq: dsfn + lnnl +fbct: 3 +plmw: 6 +wljn: 2 +cdht: 2 +bhbf: ttcq + gzts +fmgs: 2 +vqtg: 11 +lgbt: 5 +sqjm: jfvw * cbfn +hjbw: 2 +pmwl: 1 +rhrd: hzww + bwhz +zjbb: 3 +czbq: zprm - nvzl +ttdp: bssj * jlpc +bjtq: 3 +lznn: 19 +hmmv: mpbd + rmhz +fqst: hdmv * fwmh +dgzs: tdnf + zqzz +dwph: 9 +rqzp: lgqf * gfpv +rrcs: cgsj + whwb +pfwr: dwvt + qwcb +bnlm: 5 +jhmd: 5 +shns: spwv + nbnc +gvjd: rfsc / fblr +jclb: cmgf + nqgc +whsg: 3 +rmhz: 1 +rddd: 19 +prbn: 8 +qvmg: 13 +nglb: fjct * mwdh +mrft: 7 +mzbf: 12 +nbzg: 5 +cbwf: 2 +qvrj: nnts * tqns +bjpp: 18 +pgvr: stms * wwmb +dvmq: 3 +tqgt: tjfb * znvn +wtvc: vmns * rpmc +qptt: 15 +jbwm: 3 +zztd: 4 +zldl: tlvf * hqpn +hhnh: rhhr * pqgb +brpl: tmzg * dhdg +mmzl: qwsc + cjvm +wjng: 2 +jdss: 2 +pfgv: 2 +ggsp: 9 +ssld: sgft + ltlv +gbcz: jshh + hcsq +qrsp: shns * gdln +vcrd: 3 +pnjh: 3 +fzqr: djvq * zrms +vjlf: njgq + gwzq +pbmd: 3 +nbmm: 4 +lwrf: lpcc * bbqc +bhdw: sdhv - ljss +rqgr: 6 +dgdr: gwbw - jdss +mmsb: jlzz / mfbb +hnvj: 2 +pgpr: rlbf * tlgv +bbhq: 3 +cntg: tnhh * clgc +ltrg: pcfm + wgfm +hhgt: wnjv * tvgj +zddf: 3 +smdc: 11 +mcvb: dhzr * mtgt +gjfl: 3 +wlln: pzmz / zztg +wwqt: 2 +mcrj: 4 +jhdt: dghl * pngp +hvzf: jrnm + wvnm +clzr: 2 +hwwc: 2 +vsmn: 11 +fhqq: sztv * brhl +llgh: 2 +zztg: 2 +wpmh: 3 +hhvl: cqvd * gfgb +rsmq: 3 +nzjb: 7 +lwmt: hbrc + szws +mnwm: 3 +vcct: wgwc * sbbp +trrg: 2 +wqgj: wjbb * qljm +fjmr: mvfz + hpws +lvws: 3 +dwlb: 5 +qpzs: 2 +cbvj: dqgp + swff +cjbl: wjhs / hlzv +hnjn: bgrf + jnsd +vncb: 2 +ndtc: 2 +fzpb: vcvq / rdsc +cmvt: 13 +vcbb: 8 +djsn: 3 +fflm: ptwr - twms +mqnb: gcsh - fdvc +lfwn: 5 +rszf: 4 +rfsc: 14 +vbvn: 5 +tttr: rllz + cnnh +vdmf: 5 +pqvv: nfdp - vjmw +twhw: gdqr * pnng +chqd: 1 +wczz: 3 +gwhz: 4 +rnff: 3 +dnvc: 2 +grnn: 8 +clgd: ccdl * whpp +lmtm: wcgd + mmsb +lcdb: 2 +brjg: 8 +gfms: 3 +trtb: 1 +bqln: 5 +hzvb: tmgc + dqfv +nzbr: 7 +djwc: 5 +hrrf: tbjv + jjbb +fvbr: fbcs * wnnm +bndv: 2 +tgcl: fmlg + fnmv +svhr: 4 +wrjc: 3 +mzcf: 2 +lnmv: ggqb + gbcz +sjcr: dqqz + lntt +qmsr: 3 +rlfw: 2 +gfml: 9 +scgs: 4 +tzps: 17 +qcfh: 6 +lqhf: 4 +bdzl: 2 +cpjl: 19 +hjqs: 17 +csts: jdgj + zshp +cstb: 2 +rqlv: 3 +hqcv: cjpz * mshq +djjj: 4 +dhlf: tttr * twww +jmhm: nsbm * vhss +hmws: twzf + wcdt +bflj: cjjg + lzdd +vcnl: bjpp * jswb +vmrd: 9 +qjjv: fzlt + qhzd +slqq: jljv / mpff +vcdn: 3 +bssj: 2 +rlhh: 2 +nbbp: 3 +dzqm: chng + spqg +zpzl: vccg * hwqp +ptzj: 2 +rbzb: 17 +pfll: 2 +trwh: frnv + trtb +rnbd: vcmw + wrrs +sdfv: 2 +qwtf: 2 +smpw: vmmm * rlct +tfhs: gclb * dphn +sjqh: 2 +pwcc: dplf * ssmb +rfgl: 11 +zzsh: plhn + hgdg +stnb: cdqd * zvbb +gqvw: cmwg + ttff +hvmw: qmjs + pcdq +nlsr: 5 +vhnh: 4 +lsjs: fnqr * cccn +swvg: 13 +rrzm: vhwb / mfqf +mlzj: psff + clbn +wwzt: 3 +rvsw: qfwb * chvv +rhbt: chss + mwbj +wzcw: 5 +mhbb: 1 +hzvs: 3 +pnqb: 3 +pszh: 3 +lgmp: 2 +pchj: nvbb + ljgd +zgnd: mlrd / rhmt +gdln: 2 +hzdb: rgth * djjj +jnnj: 5 +drnv: wnlm * pltr +nhdn: hrws * jnwn +mbrm: zldt / dlvq +rlrd: 4 +bgcd: pchj / gnpg +vrff: zldl * pjrr +bcgs: 3 +cqzv: thqp - hsqd +mfqh: 3 +fzlt: npht * ftnj +lnnl: 5 +nfjq: tvsj * nzgm +ngzw: snjm * gptm +bgvz: sjln * pmfc +lslh: 2 +mfwm: rflw - nnss +hzvw: wwcs + fnqb +shmb: stgr * jsmc +gdgg: prqh * zlnm +fnhg: 8 +ssll: 17 +phvw: gqbt * gjds +svmp: 3 +zmzw: 3 +lpbz: sggn * dgzj +bsmn: qcmm - qvtf +hqpn: 3 +dhgl: 3 +bgvj: 8 +gzts: cwgr + rbsj +qwsj: nfwz / nbcm +pdmq: jclb / rhmm +phrn: 1 +fbjl: dscc + vqsf +vpwn: rtqr * qcsl +qvdc: glgw + rzlm +rjvq: ctmc + zfnd +pnrq: 3 +wwvm: 2 +sqld: 2 +cfpz: 3 +zswm: 3 +wqsg: 7 +zlnr: 2 +ljgd: jndv * vddh +qmlf: 2 +vfsm: bcqn * wblh +jnpn: 2 +wbpn: qbqn + bmvs +rcjm: 4 +jndg: phfz / sbct +rlct: 5 +psnh: srrz * rqtc +pcvf: bzzc * qthd +tmzg: zqfc - qzws +nmvt: vncb * qpmz +jmsg: blhr + mvbl +bwhz: ftch * bdzl +ctlf: wddf * fvbr +zhts: jztq / jqqc +vsbs: zvvj + jzhh +qdqb: 2 +smzv: bvqw + rptm +bcgf: 2 +pbbd: rdvh - rspf +cqpt: lpmb * tpcb +jccj: 2 +pwwj: 5 +tvpz: 2 +rrhr: 3 +rtph: qjzs / qqvs +pvdn: pwpv * lnvd +tjhf: 12 +hqft: cqcg + vnpd +rnfm: qpgr / nhcb +qcmr: gcmt + lstd +dqsc: bvfd * mwhg +jnqb: 17 +ddqg: 3 +bfbt: svfm * rggr +bdbr: 2 +vdsb: jclv * dzqm +jlwb: 4 +tvsj: 5 +clcv: wdgm * ffqj +hnrv: 2 +ljss: gvdf - pcjs +bgbw: 14 +rnbw: gcsv - rbtm +zmjl: tshw * cczz +jldb: 5 +dbqj: 12 +jsff: wdjz + vjcl +ffqj: dqhd + hrcf +dwrt: 5 +blhr: zvrs * smmw +bjhc: lzhg + btvd +hqlt: 3 +qdtp: rjtf + msdq +pngm: nwvp * mmhh +gqmf: npjd * wrnr +mqrf: 2 +gjmq: zdwc * jvlc +qtqs: gbqh * vstm +tvzg: 4 +djqh: cgsg * gdhs +vvgw: 5 +svjs: tbfd * rplc +zshp: mbqv * glwd +vzsm: jdnd + twhw +fhzr: 1 +bzzc: 5 +rcps: rznw + wlbp +jccz: 2 +rhbz: tvdc * bwtf +twms: 4 +jcpf: 5 +cnbv: 3 +drrc: 2 +zmmb: pclr * jtzc +cmnn: rczz * wvvn +gvpc: 3 +vwzl: 3 +nnjb: 4 +bwcz: zhvz + chmw +wlzn: 2 +jcdd: rgfn * dwms +cghl: 2 +sfbh: 3 +tncg: 3 +rggr: 15 +mctg: 3 +jwjw: 16 +rqtb: cqtb + fhzr +pqqm: jsbf + dgmd +bstw: glrw * rrcs +fmwh: rpch * jgqd +bvzz: bjtq * tftm +nttw: 4 +cpqw: 5 +vhml: 3 +cvjn: 2 +mcdc: lqnc * bqbw +cdqd: 3 +zlfr: tfcm + rbmt +gqhz: 3 +fhcw: 4 +qljm: jdpn * hpfq +mhsl: fzpb - dbqj +gswg: 6 +dqgp: hsjl * cjwm +fhpg: 2 +qfls: ftgp * zdld +nhjb: dgsr * mcsf +ljnf: 4 +qcjw: mhsl + hvfn +rmvb: 3 +qpmz: 3 +hgpf: 5 +rfcr: zmzw * tncg +qfpv: hvdv + cmnn +nzcb: jmgs + twhq +bbtr: mfcz + ftvt +jlcv: 7 +sgch: rbmc + lsjs +hnnl: zsdd * ltrg +lzps: gfhn * jpnd +lfwm: gvzs * dncs +rbjm: 5 +bjns: nvrv + qmsf +tqfl: 1 +tqns: 2 +cmgg: 4 +rnsh: qwtf * lgrs +pzmz: rshw * ftmc +nbvv: bslm * ntbm +thbf: 3 +jvsn: qpns * hwdh +przt: 2 +dhjw: smmj * jlcv +tgpm: mtqv * hdvf +nmgr: lzvl - gzsm +cjzg: 7 +pndw: hnvj * hngp +zdwc: 2 +vfhw: btpt + fmwh +gjfc: fswm - blsm +nbmn: 10 +szws: smpw + rqzp +fzln: bvlm + cjsd +jdgj: tmnw - pvfp +vmmm: 5 +vqth: 2 +brjz: cmdj + gwfm +vbfj: bjhc * fwnr +sfsl: mtgq + fnhg +nshn: 3 +jqpp: vtwj * ddlr +jqqc: bvcr * lqsl +rhmt: 2 +tntf: 3 +tsmw: 2 +wjzp: tzqj * qfrq +dttz: mrjf + ntvm +zprm: fjms * njcb +tlsr: 5 +dfff: 4 +bvpf: 9 +mglm: 2 +rfzr: lgjb * wvrw +ltrw: 3 +zzsz: htsc * ljnf +vgmn: rlfw * vjqq +gwpc: 7 +rqtm: qlnh - clzr +qjdr: 2 +tmzl: zddf * ddvj +hmpd: 13 +nvbb: cdsz * pvcc +phfz: nhjb * dbhz +wpqs: 2 +rgjm: zhqc * bqgn +hpzr: thqr * wzfw +cmpz: 12 +sjqp: mqpv + jhjh +jnsr: vsdl * thtg +wdgm: 3 +htsh: hcws * lmnn +cllb: dwlb * zsfz +bnfb: 3 +fcfw: lmwv * tgfm +jpgs: hllr * nqcd +bdnr: hzvw * ntft +bvcr: 3 +cccn: wlln + pqjn +fnmv: nztn + vjmn +ssmb: gchw + pwwj +tdnr: ndmd * gjfc +lrsw: scgs * ppqm +jlnf: wngs * dfff +trwq: 5 +ddvq: 2 +tjpm: pndw - ftng +rbtm: hchr / ndtc +ptlz: 3 +dqgz: rfzr + wjmc +rpzc: wrww * ghhl +jdcj: 3 +wbmh: 11 +mlmd: 8 +lghr: 3 +nbrt: 16 +thld: 1 +qvvq: pnpc / rwcj +qvtn: rbjb - znql +wlpl: grgb + mrcw +vrbd: qvdm + ncmn +dwvz: jfch * qslg +btpt: tjjv + qsdt +czsd: 2 +mgnd: 4 +wmtd: ntjv * fgns +vjcl: rhqn + lpbw +wqwr: 20 +jrdp: 4 +rptz: 13 +dscc: trcb * qfls +whrh: 12 +rzwl: 3 +svvj: 2 +nfzn: 3 +ntmv: pszh * gwhz +djdb: lznn * nqdf +mnlm: 2 +dtpr: 3 +glnh: 2 +hjjc: 2 +vbzc: 2 +zrrw: 11 +lwrn: 2 +cgsg: 11 +hllr: 2 +bwzn: 1 +hgcv: mmbh * hzvb +wfhg: 4 +mlrd: hcbt + hfgl +fzlz: 11 +wdjz: 3 +jrvq: nstb * prbn +rsww: rvnl * ljjq +ztnz: dzdb * gbqd +bwnc: cpsr * ftjz +mdvp: gqdp * brdl +rfpt: 3 +crmj: 19 +dvwr: 4 +hdvf: cfzd * cjrv +hlzv: 2 +rrpj: 5 +rwhs: hqlt * pblt +frpj: 2 +sjqz: qsgl * lbhw +zlpc: bzpw * jggs +mmdt: 4 +bfvg: rdrd + rspb +vhns: 2 +snnf: 3 +nmvg: 3 +nzwb: 6 +rdqn: msgm + sbsn +tbdc: 2 +mvhf: 2 +rgfn: 4 +zgfr: pjmg + jcdd +ndfb: wzbb * chms +dctv: rnhl + wpww +zngh: bpvb + llwn +cvhs: 17 +vlbb: 2 +gldb: fpvq * tqmf +hdgh: wwqt * nbzg +zgzm: 5 +jjtn: 6 +nfdp: jdgr * tmjc +vqcl: mvhf * dvps +mmhh: crms * ddvq +rdrd: 1 +hpws: 6 +mshc: rnst * ptlz +mhrz: 13 +hrwg: 3 +mqzc: wlwm * qjtq +zftt: wfgl * srcn +ddlr: 4 +stds: qwdl * dchh +zspz: 3 +bjsd: 1 +hghr: nbqt + vbnv +qtss: 3 +cgdw: gvwf + thnj +smlj: nltb * jvsn +bsrq: cssw + wbhz +wjpd: ddcb + mlnf +jtzc: bgmd * ftlh +twhq: 12 +wvrw: 2 +mjmc: njsn * lctw +ftgp: 5 +mlvw: rjsv / rdcv +lzhg: 1 +pvbg: 1 +wgcj: 7 +thfj: 2 +dgqd: 8 +zzlv: lgfz + sbpz +jwpr: 3 +llbm: htqm + cdsv +bztn: vhns + wphz +qfrq: 2 +hbbb: gnjr * vltb +tcss: 18 +zzcs: cvdj / lfmv +gqjv: 11 +mcsd: tflj + rsqd +fwnb: dhhv + lvmw +rtjw: rnff * qhdb +czmt: 3 +cscb: bfjc * nrsl +mvdc: 3 +qvdm: 1 +gnjr: 5 +hqgh: mmjj * vwgr +jwhv: mzcf + nnpz +wtmw: 6 +rhhr: 5 +mmjj: 2 +fdzf: rqbv * swfq +zcdq: qnqq * hfzf +gfvb: 8 +hdzh: lslh * qgpj +hggn: 2 +wfsd: 5 +lwdp: 1 +wjtq: jrdp + lgvp +znwh: 10 +cjvr: hcnt * rflf +tzzf: fptl + qsmt +rqml: 3 +vvbj: 4 +zvds: 4 +snzc: rmsc * lvcf +lpps: cgfj * cmpw +mrqz: 9 +vqhd: ldbh * hdzh +scfv: 7 +chss: jbnd * jcgv +sqcv: cvfz * hfnm +pzgw: 3 +vqsf: vpmp - gtjb +llwf: 2 +jpnd: lvwf + gqhj +wvvr: mjmc + dszm +cbmd: plzr * jrqs +pddd: 2 +chwr: nnjb + csnr +gcsv: shcj * vcct +fccm: 20 +lvhp: ngth + vbfj +fgmc: 3 +hfsb: ncwd * rqtb +sfln: rsmj * whsg +dbzd: zrrj * ldvv +wsvc: ntdz / clgd +mhbg: vldp * slqq +jswb: 3 +csrz: dctv + wwlw +lmnr: 3 +wjgf: rjll + mjdp +bwvd: tmzl + frfr +jggf: 3 +tnhh: wdnd / shgt +hjch: mlnc / nnqn +cfzc: 2 +pfgq: 1 +gzsw: bwcz * ffmh +tflj: 4 +zsfz: 2 +jggs: 3 +lrtb: dwct - dznt +lflj: ctdv + hbbb +nzfc: 13 +thbr: 16 +nphp: jtvd * pgvz +pjmg: 1 +dplm: 2 +hpbj: hzwg + hllq +lmvz: 4 +ntqv: nnjt - zwrv +wprg: wrnm * fjlz +lrws: 2 +ttpc: 5 +cdjb: zvwn + sfpz +ghhv: 5 +phpn: 3 +nnqv: djjq + zjrq +jznb: jhjg + jmhm +qbcp: gdjz * bcrq +gvzs: fjnz + ddnc +wcgd: brll * mhcj +vmvz: 5 +wntw: hfmf * llgh +mmnt: 2 +twzf: 2 +clgc: 3 +jvhc: gzdj + sfwm +jvlc: 11 +czln: nshn + hzdf +bbgv: 3 +ttmc: 5 +tgfm: 5 +whzp: 1 +stms: 3 +gjnz: mgbh * mjbc +mlqw: 5 +dqlj: lbfm * sbjn +smmp: 11 +fwcm: crqb - wwqb +blfg: 17 +qlnh: 13 +fzhh: qtss * svnz +bjrt: 5 +tftm: 2 +jjbn: fcjh + vhml +fgns: 8 +fhwc: hwcd + rzfq +wlnb: gdzt * tblt +fwtv: sgtb * gdmf +bpmr: 9 +lzdd: 11 +dhzr: 6 +crpb: bmlm * ntrz +swdt: sdlf + cjzg +ztpw: bsmn + pvdz +hngp: ztrs + hjzm +hvgw: 5 +lctw: 4 +mbtg: wgcj * vrbh +qtpm: fdnc * qqjp +cnrn: dsbb * jqcc +hfnm: 3 +mgwv: 11 +wzll: hwpv * fwnb +qzmc: 4 +lsgn: sfmt + lgwh +ggpb: 2 +wzqn: 14 +vjst: tgpm + vrpr +fjnz: zhlc * jlmf +vjjn: 3 +pnwq: trcf + jpgs +qwdv: dqsh + jqvd +dgpp: 6 +nrsf: 14 +gjgn: 2 +grgb: hbpn + ddns +zhlc: 4 +lbfm: 7 +mrhb: 7 +pscj: 2 +jdgn: mfqh * pnwh +vvrp: 6 +msbf: frbg * mpjn +dvgd: lrts * dzwm +dsbb: 7 +wwbn: dqcc * mctg +wlss: vqjl * qmsr +hcnr: 4 +qldl: 2 +lnvd: 5 +gtmg: zpfc + ltlq +gptm: 4 +qlqz: qdjj * jzpc +szsm: drmf * stzl +znvn: hpgr * mdhj +tcql: 2 +nrhn: 2 +vwgr: 11 +lzfp: zpzm * gffg +jdth: 8 +hfmf: ssld * mcnw +cntj: 3 +djfc: 2 +sfmt: rtcv * lsfw +qmrl: 1 +jpnw: 8 +sdcs: lcjl * wvsd +rhjz: lsds + qsbg +lgvp: 7 +hgwm: 9 +pmfv: hqwv + hshc +wwlv: 2 +prpz: vqgf * wcls +mlbb: mhwm / mnbn +sgbq: 3 +qszq: snrb + pzdn +qwmj: ftjl + nmgr +psbh: qpzs * hjvn +pngz: 2 +vjgs: 13 +rbhm: 4 +wwcs: 8 +rfgt: lfln + mdqg +qjtd: jwhv - bbdc +rcjb: vnlv + cpjl +rmcj: qqbg + zzcs +dlnr: tfgn / nqcj +hjtn: 5 +tldb: cbrj * bljh +gnlm: 10 +bnns: gpsr + dnwd +zjlt: gjrr + qbcp +psdm: bngr * tjhp +jfwh: cfpz * nqjm +lvmw: pmnm * sfmf +nchm: zsjw + bnfg +rhmm: 2 +tqfw: 5 +hgng: 7 +dphn: 2 +sgbw: 2 +nqgr: cdnh / mwnc +vqvp: sfln - lrws +vtvc: 5 +djqb: 5 +dbgz: mpqp * sjqp +ttcq: lrqt * mlhc +fmdq: 13 +gdzv: pzhl - rjqm +hchr: bvzt * qdhj +gdmf: fbpp * cwgp +ldvv: 3 +psqs: wbzb + jdth +vcvq: cftt * jdbs +fnpv: swzz * ggpt +pqgb: jpbm - tfch +mrtr: hcmm + jhdq +nwgm: 7 +zqpw: dfpc * czpj +sjrs: cdzm * qcjw +msgm: stdh + fllb +btbw: bghv * zzlv +zwrv: 4 +wnmm: 3 +wlnd: hhnh / jhgz +mvcj: spbm + nhct +gcdm: 7 +lspf: nnqv / trrg +bbhl: 5 +zhqc: wwnj * fjmr +jzqd: 13 +vhrq: lpps * dvmq +plgq: fldz * pqqm +zfjs: 5 +qdvz: qppn + hqft +gtrw: fzhh - mjlv +zntw: 19 +glgw: 4 +ljsw: 10 +pvlm: wjnm - rsww +gmvf: jrjf * dphl +dgch: 2 +vdgf: bvzz + cjlm +vrbh: vmrd * nlsr +wwqb: 3 +ncmn: dgpp * jfnd +mrzn: 2 +lqsl: 2 +nwvp: 3 +vbhp: svnp / vdqq +bnfg: 12 +zfbc: dljg + wbpl +lnsv: 7 +wrcq: cmvt + ttbn +zqzz: fpsl * zlwz +qhnz: fbrt + hmpd +dldm: 3 +mrrf: stfs + wcbm +nvhc: 3 +vlmw: 3 +vrrg: 10 +wbzb: mfvb * lnsv +lfld: bnff + mbtg +bvlm: 6 +jjgd: 19 +wfnc: bzsh - nctg +rstg: 20 +wdnd: jbjv * rwbt +bnpn: jnsr + psft +sfvh: 2 +ssmw: 5 +lblc: qvmg * lcns +zbvh: 7 +lllw: 7 +vjbl: 1 +nljn: hqgh + pjrs +qhpw: rhrd / ztzs +qvmw: 2 +vbgh: 2 +ggpt: 16 +hcbt: rtzp * cllb +wzbb: zpvn - bzzw +mvbl: lzfp * qtqs +lvmj: qnhb * dnbb +jnmq: bcvq + gldg +ghwn: 6 +ggfd: wwng * fcjq +zjdm: lflg + rtgm +cdzm: 2 +fplq: jngc * mqzc +fjtj: tnrn + llbm +mcdt: 5 +smcp: 2 +qdhj: qdqb * mclz +rbqp: hqcv * qpgt +dcmn: 1 +wjnm: qsln * qgqh +tpcb: 2 +bhhf: ljpr / dnvc +svvm: 8 +fpbf: wnbc + jbns +bfjc: 4 +mmvb: 2 +wjbb: jrzv + vdmf +nfdm: rbqp + fhcj +qdht: fvfz * mtrc +whpp: 3 +wlcv: 2 +szbj: 4 +sscw: tjpm / sfbh +ftjl: cnvz + fpbh +gdbv: gnqj + qcbv +rzdb: drpl * zfbc +gfhn: 13 +lgrs: 13 +jlhr: 3 +nvnh: 2 +cppz: jtvn + bjpn +vcvr: 5 +smmw: wpnn * tzpf +tnwh: hgmh * rrzm +nnpz: jfrt + qjdr +btqw: hmnv * npgr +fbpp: 3 +ljnh: 2 +qscg: 2 +tmpq: 2 +ljpr: 20 +dnhm: rlmp / wnmm +jndv: hnrz + bhdw +fcrm: pbzj + wdrl +vmnr: 3 +tbjv: grfr - bzdn +qgzj: 5 +cpcq: hngf * lgmv +vshm: 1 +rcbd: mrhb + qsbv +nhcb: 5 +qcqp: spbs * ttpc +jlzz: sjhg * cqzv +hgjv: 8 +lnhc: bdrl + cctq +dtwd: 2 +lsds: dhng + fgth +qwcb: zhts + gclp +qtpz: svmp * nbrt +qgpl: ddbq * jpdd +rlsj: 4 +gjjg: zhvm * tcql +fvfz: 4 +stmc: pvlm + sqjm +tlfm: 2 +tzqj: 11 +srrz: nctw * rqlv +bwdv: wfsd * brtm +gtdc: 3 +gjnb: 2 +vstm: bvsp + zmlr +lpcc: tnmf * dcqc +hzfw: mwrj * lmvd +zlnm: 5 +hpgl: gstr + htcw +rrbp: 4 +fcfg: gtrw + zgzm +rczz: 3 +zpzm: 7 +llwn: 3 +tqsc: 15 +lwts: bnfb * mjcq +stdh: tdfw * rrhr +srhp: fgsw + pnqb +fsdm: cvhh + tgwr +cqtb: 5 +drrq: dhlf + pfgr +dmrl: 14 +zzjh: 2 +vplq: jmrm + jtcn +nfwz: vjql * gnng +zsjw: qvdc + blrg +humn: 4140 +tdmp: tgvm / hghb +vcww: 1 +bvfd: 2 +djjq: bfdw * ndtp +qwws: vhlg / znqt +bdrl: 4 +wcbw: jqtb + vvfq +cmjp: hlfs / qrms +rfdb: 3 +mwls: rvwn + tftj +tdfw: smmp * mpjc +ddnh: 4 +qgqh: 4 +mzbh: 3 +htsc: lhbh * mrqz +rpgh: tdnr + mdrc +chcr: 19 +pngp: 3 +gmqv: 4 +nzjd: 15 +hsct: 18 +htqm: qfbt / vhmj +bpbf: 2 +pdjr: pnrq * gnlm +mgcp: 3 +prgt: 3 +mpqp: rrqt * pvlc +vccg: 2 +zvbm: lrfr + wpvc +grnd: 10 +ppqm: 3 +vcts: 6 +sbzn: 16 +nctw: lsfs + hvzf +lmnn: 7 +sfwm: 4 +glwd: lgrq + cjbl +pjrr: 19 +hghb: 3 +jpbm: fdfl + nvmf +vngq: zzsh + vglt +rpwp: 5 +bdwd: 5 +jdgr: 4 +zmgz: 2 +ptwr: jnqb * wrjc +bcvq: bmst + jbhp +vvhg: lwrn + wcwm +nhsj: gqbf * lwpp +rnrq: dttz * dqhf +flcf: 20 +gngg: 3 +qctq: 2 +qcgr: 8 +djbc: 2 +pcgp: 2 +tfgn: qhpw - bnns +npgr: 3 +fpvq: qmlf * prwm +wwtq: qjzg * vhrq +rcfh: 3 +rtnh: sdbc * nppw +mfcz: 2 +zvwn: ztqm * brzg +pfth: 3 +gvdf: tgbc + dgdr +lzlt: 15 +gzdj: 7 +qgns: cbvj * cqrc +bwqr: vjgs * grvd +sjhg: 2 +wqbf: 2 +wcbm: qwtr * rqml +ppwg: hqlg * njpp +gwzq: lslj * ddcm +ltgw: 6 +tbqv: 4 +fptm: 2 +qwth: tqsc * tqnw +mzgt: vhnh + lhhc +hqvm: bwdv / zfjs +vvcf: 8 +mtrc: 2 +bcpq: tmcv + qjrl +dljg: grnd * jdvs +rzhm: 5 +qqvs: 2 +gdcd: nqcp * lnbs +bdqj: 5 +mfzd: 2 +gdgj: 4 +tshw: 3 +chjz: vmtj + rcbd +jcrj: 5 +fbcs: 3 +fpsl: ngvc + vdhl +hhlq: btbp * przt +qjtq: 3 +fdmp: qtms + mhbb +pjgz: nrbb * pvdn +jhjh: dthb + vgmz +tqbr: vjvc / lgjh +jrnm: lhrb + wqwr +qcmm: fwgz - pgdv +pqwm: 2 +cssw: 2 +tgcn: nmzt * zqjm +nvlh: sgmp * nbbp +rjll: rbjp + mbfc +zbrt: fvgc * bhqd +ffch: 2 +wlsr: 3 +jqtb: tdbv * sbgm +lbhj: 3 +hdzs: qsws * cbwf +hhcw: sfvh * nmlm +dnbb: hdzs * sfrl +blsm: 5 +njgq: wcbv * cmpz +gspl: rqdl + zjbb +cnnh: 4 +qgzn: 3 +rjsv: crnq + vsbs +frnv: 10 +hrws: 2 +smnh: 12 +dbqd: 6 +zrms: pdmq + ncdj +lsfs: 4 +blnd: ggql - vjbl +ctmc: dmvm * hqvt +fznf: 2 +lbhw: 5 +tgpv: 2 +rbmc: jhbg + vhld +wpnn: brpl + rnbw +zwsr: 10 +ddvj: 7 +fjlz: 2 +fcjh: 4 +nwpw: 4 +nsmc: 3 +dvvs: 3 +qdjj: pfnd + gzhr +dctf: tzmc * jnhm +rdnz: jlhr + vsgq +dmzr: hvnv + whsz +ntrz: 4 +ftdm: djdb * hhvl +bzlz: 2 +ztrr: cljr * zgdd +dszm: wcmq / mzmd +pdgd: 3 +drcg: 13 +qqbg: 18 +dtrb: 4 +hshc: lrsl * vbvn +pftf: bflj * dgrc +rfdj: dcjv + bhhf +mlhc: 2 +dwvt: vgmn * vhbh +jglq: pjrp * hhhv +rjfq: 5 +tvbf: 2 +wwdv: jwzc * fdzf +tjzq: tqbr + crld +lmnf: prcj + qdtp +dwpj: 11 +lvcf: hvrz * lmzw +lfln: djsn * cltb +zjpn: 2 +mwnc: 2 +nqgc: rpfj * vcvr +mdgc: 4 +htcw: 1 +jndc: vssr * qdwj +lfcv: vdjq + humn +tszt: lvws * rlhh +wwmc: 3 +whsn: 14 +rjnf: hnnl + mjsq +vpbb: 5 +vhqc: dhgl * lmgd +lfpw: 14 +vjqq: 3 +fwnr: mqdg + crmj +pzfg: cwzn * nqsn +vqjl: 3 +ztdw: clhf * nnhc +hsqd: gjnb + lrdw +wrrr: vzwl * hmvt +vmzw: 6 +ccwv: jzmz + bvpf +hlhr: wwdv + gqmf +mdrc: vdsb / mmjc +dgrc: 2 +thtg: 2 +hvrz: vvrp + nzcc +mhmj: 11 +tbqz: 2 +sblb: 8 +cnvz: sqcv + qqjh +nvfb: 3 +mflw: 14 +rdzl: jhnf * qjcv +wqfl: 2 +wvlc: llhr + hjtn +qlcf: wjgf + pwjf +sbct: 6 +zhfb: 2 +plhn: stmc / rfgl +jbhp: 7 +msdq: qhnd * ttdp +bfmv: lpbz + zhfb +mcpb: qlcf - rjsq +flrb: 3 +pfgr: 3 +hbrc: gszw * pbqn +tzmc: 2 +rjsq: wqsd + jhzf +mzwd: sqdp * mbnf +fmqq: blgt * tvpz +zbzj: dwph + crqr +jwvj: gldb - ppnj +tljm: dbqd * mslr +llhr: mlmd * nzws +ghql: 5 +nlfd: vdgf + rnzz +rbjp: 3 +mlbw: nfqm / djfc +dthb: czrw * jhbc +clrh: 6 +whvj: gcqg * tpwn +fssq: sdgt + mzzh +lrdt: jcvb * rsmq +cdnh: zvbm * wdhf +lcns: 7 +hjjh: 9 +lnvc: mcdt * wgjv +qpzz: chhz - bstw +sdsv: mpfb * bsww +shzr: 1 +tnhd: 10 +vrnq: gzsw + pnfw +lndq: 4 +mpfb: rtgj / djbc +vhlg: hctg * stnb +hdmv: 2 +fblr: 2 +vhjz: 5 +nwpq: rnvb * zlfr +tjfb: czsd * djsl +pnng: pfnb * fnpv +fclr: 3 +rnst: 4 +zvbb: 3 +cjcd: qcqp * gntl +mwhg: 3 +vdrm: rgnd + sfdf +pjwb: bllv + hsgt +jnhm: 5 +lgjh: 2 +vthh: cvbd * prgt +whsz: 15 +bjmz: 2 +rtqr: 5 +stdm: 2 +ssjj: 16 +tpqg: 2 +mwrj: 2 +hfjw: 3 +jzhh: lmzs * pwfc +gchw: 12 +rshw: hljf * vwjg +tblt: 2 +cqvd: wbql - gwzn +nvmf: vmtg * zntw +fphg: tccd - qpzz +rplc: hgjv - gprh +nmqr: nlfl * rmzn +brrz: 2 +gjlz: vsjh * fzdz +sgrb: 2 +gdqr: nqcb - fzqr +dfpc: wmbg + gjnz +jsmc: ddzt + chhw +fdqv: drsd + smzv +mphn: mcjq * thbr +hbnz: 2 +wrww: mwsm + nbmm +nbcm: 4 +fdvc: wrsd * wfph +bddj: hdwv + zhnf +whwt: pfwj / lgzs +tzpf: pqgs - mcpb +glnt: 13 +lssp: 2 +wvvn: 3 +zwnc: 5 +thqr: 2 +cjjg: 12 +cwmc: csrz + blhc +lztc: 5 +fjtn: nhmw + bsqm +rdcv: 4 +nfqm: tsws + qwsj +zrlc: tbdc + rpwp +vcgg: mthf + vpgz +btbp: 4 +fgth: 6 +ddns: qhwr * gftp +ffvn: 4 +zbrf: pcfb + mlqw +qggj: tgcn * ltrw +qhnd: 2 +cmpw: 3 +vpgz: 8 +lltw: rdqn * lnmv +cftq: 3 +tjjv: mmzl * vnhs +nzsq: cdjb * tgpv +bgsr: 2 +pcvr: 14 +brtm: fhtp + thzq +lthl: gftg + zqpw +ltlq: tfwd * pqwl +ppbs: 7 +pnfw: jdcj * hgjm +pfml: 9 +gzgt: 1 +wldj: 6 +bljh: 11 +jdjc: hhgq + qvpm +drpd: hhlq * jpnw +vjbs: jgqs / qscg +nqsn: 9 +qmqw: stvm * zdlf +vdjq: zzsz + mqnb +npht: vqss + zzhv +cfnc: lzsv * dwbn +ftnr: 3 +gzbf: 2 +jptz: 8 +csnr: fvqw * vthh +chng: wzcw * tsbr +jvqz: 3 +fwrv: vlqr + bztn +hcmm: 4 +jgvv: jccj + qjsm +rhrm: 3 +jqnf: 5 +pcjs: fjtn * rlnv +fpqw: bdnr + crfd +zzqr: 2 +rflw: tfhs * dsws +pvjt: 4 +zmsh: 2 +vlnt: 2 +vjvc: chdq * pttf +wwnj: 4 +jhnf: mfgt * tmpq +zhnf: 17 +pjrp: 3 +mhwm: sfsl * bgvj +sgtb: zswm + wtpl +mpbd: zwfm * gsjb +fbgp: 2 +dfbn: 3 +qhdb: 3 +jjqt: vrbd + tljm +jpbw: nzfd * cvhs +gbrq: 7 +chmw: pcvr + bzmp +hhlh: gwgc * bgcd +ncnf: 12 +bvcf: 2 +hrnt: 2 +tfch: 20 +vhwb: thfj * rpnv +whqj: mzwd + dzdv +qsmt: wpqs + dhjw +hvql: 2 +vljn: dlpd + rcps +tgcw: 12 +dqdl: mscc * nttw +tnnm: 16 +nggn: 18 +qrcw: hgng + rmzj +pvgd: tbjg * nsmc +qhwr: 3 +jcmm: mnwz + pjgz +cddd: dpsd - tfjh +mjsq: hrpq + qgfc +hvnv: qgss * chjh +dgmr: pfrp / dgch +hmhd: 5 +bcql: pgpr + lwrf +mjdp: brcb * jfzc +jfzc: lqhf * mvzd +jqfb: nnzq - hhgt +bwtf: 2 +nzcc: 5 +rqtc: 2 +hvwr: 2 +vjmw: lbfv * wwmc +gcsh: sjqh * fjqg +pbfb: lqqn / bjmz +rpfj: 4 +dwbn: 3 +wdrl: hrrf / sddr +vfzc: jnpn * trwq +whbl: rmcj + zrhl +sgft: vfsl * bmjz +hcmp: 2 +ddnc: cwmc - mthz +wjgz: cpcq + gdzw +trch: jnnj * hzld +pnpc: vfzc * bwfg +nfwc: 5 +svfm: 2 +twqz: 13 +hwqp: 3 +dpdf: gjmq + msbf +nztn: 2 +lbnn: wjdt + rgwd +wcls: 3 +gvfs: 5 +pnhs: 3 +rcns: vcjn * svsr +mscc: pqvv * bqwb +vnhs: 13 +gstr: vfrb * cqfv +nppw: tntf * tzjm +hgsd: 4 +bpfj: 5 +nrpm: 3 +vjmn: 4 +stfs: zcdb * rlrd +vrpr: rvwf + mqjr +sdhv: hblv * jvhc +sdgt: 1 +vpcs: 5 +lrqt: 7 +gdvg: 19 +fhtp: gqjv * wmlm +qjzs: tvbf * ggfd +whwb: dvmr * bdbr +frfr: 2 +bhqd: 13 +sbgm: zbrt + tqlm +jwcj: 2 +bfdw: 2 +qhnh: swvw * hwwc +vcjc: 11 +rhqn: 8 +hncf: vmlg + hbnq +wstf: 17 +nzfn: 5 +ndsl: tdsj + pptb +nlfl: wmvp + bgwf +rqnv: 3 +bzsh: 10 +jzpc: 2 +cjmb: 3 +gtvd: 17 +fhcj: 7 +bzmp: wbvg * bzwz +jfnd: 2 +scsz: 3 +hswj: gpvh + zbnd +bsww: 3 +rsjs: rtrr * dctf +rqqv: 6 +wjhs: qjbr + pmvl +nqcd: wdhw * rftf +wrsb: 3 +tbtf: mrnj + nqgr +gpjm: twqn - pftf +jgbc: 4 +jsgc: 9 +lzcj: 4 +qjzg: jbsp * qhnz +hftt: wtvc + hjjj +qtms: vlmw * qctq +nnqn: 2 +jfhf: 5 +sfhj: rnrq - trdv +cwzn: 13 +dhpd: wwvm * pdht +mvzd: qmrl + ncnf +bgrf: dhct * bjch +vmdr: 3 +hrtl: 6 +tsws: dgbw * qgvv +dmvm: 4 +dmcv: 5 +mfsb: 3 +qzmr: 2 +hvdv: 4 +pvsp: vqcq + sfhj +jbjv: 17 +jcgv: svch + vcjc +dpmj: rrpj * gvqt +zfnd: 1 +ntpj: lzfv + pvbg +dqhf: 3 +mfmh: 19 +jgqs: vbhp + gcpj +bsqm: 16 +hfgl: 6 +clhj: cfdc * mvdc +tnlz: 4 +hhfc: 5 +mzfr: 4 +psff: 1 +nfdg: gtqb * jfjq +jnwn: vqfr + zldp +zqwd: 5 +znfj: 2 +rtgm: bzwf + rrwp +pzhl: whhj + nhsj +ngth: 8 +glbd: 8 +prcj: qgpl / lfvg +cwqf: trsb * phpn +brcb: 4 +fptl: zlrr * pjwb +wnjv: 3 +jjjh: psbh + ldmh +gjmr: 3 +mlbt: tzqq + bqph +vdqq: 4 +qwtl: hngw + gfml +drwp: 3 +ftbv: tqfw + svvm +ndtp: 17 +jtrl: gcdm * qcgr +chjh: 4 +jrqs: 2 +qgpj: 3 +wqwn: wlzn * tjfv +rrbc: 3 +cqrc: 4 +ztnq: 7 +hwfq: vpbb * jccz +szsc: lmml * gvpc +qcsl: wqgj - hqqs +lsfw: 6 +nmmt: pvrt + jgvv +vqgf: lztc + wstf +bmlm: 2 +svnp: csts * gwwj +qsbg: lbql / mnwm +rbvm: lqwd + ctlf +rqdn: nzsq * tbqv +lmvd: 3 +fnqr: 2 +chdq: nghg + fhqq +hjvn: 3 +qvjb: trch * jjbn +bbdc: 1 +rptm: fghb * rlsj +brhl: 2 +wwmb: 2 +lpqp: vbgh * rqtm +tvjv: 2 +vwbs: 6 +gtjb: fmqq + mpvs +ntmf: 2 +jgtn: rhbb * vrdq +lqnc: 2 +pvfp: 3 +wqtl: pmwl + scfv +svnn: 19 +gffg: cbcz * wfjw +qwtr: 3 +qfdt: qtpz + ffch +fpbh: lndq + bfbt +fhdg: qcdh * jglq +gcqg: 3 +dvvw: 3 +rlnv: 4 +pgzv: dcsv * nfzn +zctb: 5 +pltr: 4 +zqfc: jbcl * jznb +spbs: 7 +gclb: 5 +scph: 1 +qcbv: mmbv + thld +nqcp: 2 +jnsd: qwmj * vqvp +ggqb: fmnt + gzbt +wdhw: 2 +rcbc: qvjb + vdzv +nhmw: 3 +wtfg: slmd + dgqd +gszw: pfmb * bshv +hjsj: 13 +hstb: 6 +rsjh: nqtq + llwf +qmcg: jdjs + mbtl +bzdn: 10 +fvgc: 13 +jljv: rhjz * pvzn +pwfc: 2 +mzmd: 2 +rvwn: 7 +srms: bwcw + wwtq +fcdv: 2 +rqdl: tbjz * zqgf +tvgj: qptt + jnmq +dqhd: 9 +bmvs: 8 +wmvp: 16 +grvd: rddh * qppl +lfmv: 2 +fjrq: 2 +przr: fwrv + ztnz +tnrn: pbfb + jrvq +crnq: mlbt * pnzn +cqcg: sjjh + zrtr +mgjc: jndg + fplq +tjfv: 17 +qgvv: 2 +hgtc: 11 +nsbm: 14 +jmrm: jwrb + zjsh +jtnb: 2 +hczp: 2 +mrcw: 6 +jhjg: 3 +hbrs: 5 +jvsg: 5 +vswp: 18 +mthz: qwtl + dwtv +mqdj: crpb + dtpr +wnnm: 3 +bbpb: 3 +mlnf: nbzl + tqgt +wgbb: cbmd + hghr +vnlv: 13 +dtsj: lcph + fcfg +qsdt: dbgz + vrhb +jfch: 10 +fbrq: qghw * cvjn +nmlm: 6 +bcpt: nwbf * vlnt +rsdq: 5 +hngf: 5 +tclj: 5 +dsdp: 6 +ntjv: jggz * hbrs +jcsr: 3 +dtmj: 3 +fcjq: gtgt + hsnz +nnhv: 4 +mmjs: 20 +gnws: 10 +fjqg: zdzq - mphn +rgww: 10 +bmhr: 7 +ntwb: nrsf + lbnn +smmj: 2 +pmnm: 3 +zfrs: 2 +rbtr: hqfp - rgwf +hblv: vzsq + mzgt +mjcq: 2 +rlzc: 3 +hbnq: 2 +vrhb: jhvq + qnbm +jnwt: 2 +dlvq: 2 +lzvl: lwqr - bfvg +hcbj: 3 +tdsj: bddj + nlqv +rqbv: lnvc + djqh +qthd: 7 +gjrr: tzzf * blln +pzgd: 7 +lhhc: 15 +pjrs: 5 +lntt: 1 +svzt: 9 +dwpr: 2 +jlpc: 3 +dvmr: lzfc * pmgp +nstb: 3 +bshv: 3 +nrzm: 20 +lzfv: zssr / bzlz +dmhl: qgmg * lwts +lnqh: 4 +tbdg: 2 +nbnc: jqfb / plmw +sdbc: gngg * snnf +swst: hgsd + gvjd +bvsp: rbtr * hqnm +bzwf: 4 +splv: srql + nvhc +rbdc: cgdw * nvlh +snpg: 14 +ztzs: 3 +fjct: tbdg + ghhv +tldr: 5 +rddh: 2 +ngjz: 5 +tccd: zgfr * hlhr +fswj: mrzn * sjcr +wdbd: jgtn - vcww +rspb: fwpd + tzps +ncgp: 10 +gcpj: qrcw + gqqd +mdqg: 8 +mbnf: 2 +dzdv: 5 +cmdj: ngzw / fjbn +zbjd: 3 +cqsv: mmvb * cwph +vrgq: dbrs + hnqs +cfvw: fpjl * zrlc +wrsd: rhrm * rfdb +ddcb: fgmc * lwmt +fdfl: lnqh * qzsc +rwnr: gswg + lwdp +hwcd: nbmn * mqzg +dvps: trhz + tsvw +bvqw: svwm + dldm +zdlf: 2 +bpvc: 5 +pshm: 2 +rbjb: hpbj + wwbn +sjdp: 2 +htqc: 5 +hwrg: hmmv * hqfw +lhbg: zbjd * bbmq +ddlw: rcfh + hmtj +lhrp: 4 +dlpd: brjg * hcbj +bbmq: 3 +qppn: pzgw * rfcr +hhnn: pscj * jvzb +zgmj: 3 +hcws: nzwb + hlsw +dcqc: 5 +qghw: 3 +hrcf: 4 +ppnj: tcss * htfm +tpsd: 2 +chvv: 3 +dsfn: hldf + lqcz +gdzw: mzfr * lhrp +mfqv: bpfj * jvsg +lcwg: 2 +plwt: 4 +hsjl: djqb * tptj +ddzt: 5 +zhvz: fzgg - gzbf +zdld: 7 +hcnt: 11 +ffht: 4 +drsd: wbpn * rrbp +djvq: rbzb + qjtd +dgdp: 13 +lgfz: jbrr * rsjh +rqpf: 2 +jrsg: ldhq + bjsd +lrsl: 5 +gcnz: 3 +bmqv: 3 +bnff: gcfw - hswj +ncwd: 3 +ghhl: pddd * dbns +spwv: zngh * vjlf +fcbz: 4 +grfr: vlbb * zsvt +bqph: wqsg + nczf +cjpz: 2 +zwfm: 2 +hqvt: 3 +glgp: dvgd + qwth +ttbn: fbpw + wsjr +fwgz: clhj * gzhv +rjwb: gjwb * sdfv +gwfm: 1 +hgjm: dhmn * brjz +qcdh: czbq + nwmf +hvfn: bsjb / sgbw +qlmd: ncgp + rfgt +qjnb: slml + tfmc +ncdj: bchl + qzmc +fswm: gmmg / gfvb +dphl: 4 +fpjl: 3 +rnvb: jhbp - hwrg +zmlr: vsdr * hvmw +mbqv: 2 +qjbr: dnsn + fcbz +nzwj: 4 +dqqz: nhhv * pnhs +sjjh: szsc * jzzf +whhj: cgtw + tfht +bchl: 19 diff --git a/src/Days/D21.hs b/src/Days/D21.hs new file mode 100644 index 0000000..343bcec --- /dev/null +++ b/src/Days/D21.hs @@ -0,0 +1,117 @@ +{-# LANGUAGE ImportQualifiedPost #-} +{-# LANGUAGE LambdaCase #-} +{-# LANGUAGE OverloadedStrings #-} + +module Days.D21 where + +import Common +import Data.Char (isAlpha) +import Data.Functor ((<&>)) +import Data.Map (Map) +import Data.Map qualified as Map +import Data.Maybe (fromJust) +import Data.Text (Text) +import Parse +import Text.Megaparsec (oneOf, takeWhile1P, (<|>)) +import Text.Megaparsec.Char (space, string) +import Text.Megaparsec.Char.Lexer qualified as Lexer + +type Name = Text + +data Op = Add | Sub | Mul | Div + deriving (Show) + +data Operand = Ref Name | Val Integer + deriving (Show) + +data Operation = Binary Operand Op Operand | Constant Integer + deriving (Show) + +parser :: Parser [(Name, Operation)] +parser = someLines monkey + where + lexeme = Lexer.lexeme space + + name = takeWhile1P Nothing isAlpha + + operation = binary <|> constant + binary = Binary <$> (Ref <$> lexeme name) <*> lexeme op <*> (Ref <$> name) + op = + oneOf ['+', '-', '*', '/'] + <&> \case + '+' -> Add + '-' -> Sub + '*' -> Mul + '/' -> Div + _ -> error "Invalid operation" + + constant = Constant . toInteger <$> int + + monkey = (,) <$> name <* string ": " <*> operation + +toFun :: (Integral a) => Op -> (a -> a -> a) +toFun Add = (+) +toFun Sub = (-) +toFun Mul = (*) +toFun Div = div + +force :: Map Name Operation -> Operand -> (Operand, Map Name Operation) +force context (Val c) = (Val c, context) +force context (Ref ident) = + case Map.lookup ident context of + Nothing -> (Ref ident, context) + Just (Constant c) -> (Val c, context) + Just (Binary left op right) -> + let (leftForced, context') = force context left + (rightForced, context'') = force context' right + in case (leftForced, rightForced) of + (Val l, Val r) -> + let v = toFun op l r + in (Val v, Map.insert ident (Constant v) context'') + _ -> + ( Ref ident, + Map.insert ident (Binary leftForced op rightForced) context'' + ) + +unwrapVal :: Operand -> Integer +unwrapVal (Val c) = c +unwrapVal _ = error "Can't unwrap Ref" + +inverse :: Operation -> Integer -> (Name, Integer) +inverse (Binary (Val c) Add (Ref i)) target = (i, target - c) +inverse (Binary (Ref i) Add (Val c)) target = (i, target - c) +inverse (Binary (Val c) Mul (Ref i)) target = (i, target `div` c) +inverse (Binary (Ref i) Mul (Val c)) target = (i, target `div` c) +inverse (Binary (Val c) Sub (Ref i)) target = (i, c - target) +inverse (Binary (Ref i) Sub (Val c)) target = (i, c + target) +inverse (Binary (Val c) Div (Ref i)) target = (i, c `div` target) +inverse (Binary (Ref i) Div (Val c)) target = (i, c * target) +inverse _ _ = error "Can not invert" + +coerce :: Map Name Operation -> Name -> Integer -> Maybe Integer +coerce context name target = + case Map.lookup name context of + Nothing -> Just target + Just (Constant _) -> Nothing + Just binOp -> + uncurry (coerce context) (inverse binOp target) + +part1 :: [(Name, Operation)] -> Integer +part1 shouts = + let context = Map.fromList shouts + in unwrapVal . fst $ force context (Ref "root") + +part2 :: [(Name, Operation)] -> Integer +part2 shouts = + let context = Map.fromList $ filter ((/= "humn") . fst) shouts + (_, forcedContext) = force context (Ref "root") + in fromJust $ + case Map.lookup "root" forcedContext of + Just (Binary (Val c) _ (Ref right)) -> + coerce forcedContext right c + Just (Binary (Ref left) _ (Val c)) -> + coerce forcedContext left c + _ -> Nothing + +day :: Day +day = parsecDay parser (definitive . part1, definitive . part2) diff --git a/src/Lib.hs b/src/Lib.hs index 4d930c9..0ee28b6 100644 --- a/src/Lib.hs +++ b/src/Lib.hs @@ -32,6 +32,7 @@ import Days.D17 qualified as D17 import Days.D18 qualified as D18 import Days.D19 qualified as D19 import Days.D20 qualified as D20 +import Days.D21 qualified as D21 import Data.ByteString.Char8 qualified as BS import Data.Text.IO qualified as T @@ -64,4 +65,5 @@ days = , [D18.day] , [D19.day] , [D20.day] + , [D21.day] ] diff --git a/src/Print.hs b/src/Print.hs index 8c1400f..6d68b57 100644 --- a/src/Print.hs +++ b/src/Print.hs @@ -4,14 +4,14 @@ import Common import Text.Printf (printf) printHeader :: IO () -printHeader = putStrLn "[ Day ]------(1)-----+-------(2)------" +printHeader = putStrLn "[ Day ]-------(1)------+-------(2)------" printFooter :: IO () -printFooter = putStrLn "[-----]--------------+----------------" +printFooter = putStrLn "[-----]----------------+----------------" printDR :: Int -> DayResult -> IO () printDR day (Left errorString) = printf "[ %2d ] ====== PARSER ERROR =======\n%s" day errorString printDR day (Right (sol1, sol2)) = let r1 = maybe "unsolved" show sol1 r2 = maybe "unsolved" show sol2 - in printf "[ %2d ] %12s | %14s\n" day r1 r2 + in printf "[ %2d ] %14s | %14s\n" day r1 r2