aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorkaiwu <kaiwu2004@gmail.com>2022-12-22 15:15:30 +0800
committerkaiwu <kaiwu2004@gmail.com>2022-12-22 15:15:30 +0800
commit03d317932a7c55325aea010dba153590d985f753 (patch)
tree9089362eeb08ce2590f9310e57626de94bbec158 /src
parent4f62fff4afa338cefad3729eebd22fbffd98e002 (diff)
downloadadvent-of-code-03d317932a7c55325aea010dba153590d985f753.tar.gz
advent-of-code-03d317932a7c55325aea010dba153590d985f753.zip
2022 day21
Diffstat (limited to 'src')
-rw-r--r--src/2022/day21/README.md55
-rw-r--r--src/2022/day21/aoc.cpp93
-rw-r--r--src/2022/day21/aoc.h67
-rw-r--r--src/2022/day21/input1933
-rw-r--r--src/2022/day21/input015
5 files changed, 2159 insertions, 4 deletions
diff --git a/src/2022/day21/README.md b/src/2022/day21/README.md
index 8b13789..c0015bb 100644
--- a/src/2022/day21/README.md
+++ b/src/2022/day21/README.md
@@ -1 +1,56 @@
+--- Day 21: Monkey Math ---
+
+The monkeys are back! You're worried they're going to try to steal your stuff again, but it seems like they're just holding their ground and making various monkey noises at you.
+
+Eventually, one of the elephants realizes you don't speak monkey and comes over to interpret. As it turns out, they overheard you talking about trying to find the grove; they can show you a shortcut if you answer their riddle.
+
+Each monkey is given a job: either to yell a specific number or to yell the result of a math operation. All of the number-yelling monkeys know their number from the start; however, the math operation monkeys need to wait for two other monkeys to yell a number, and those two other monkeys might also be waiting on other monkeys.
+
+Your job is to work out the number the monkey named root will yell before the monkeys figure it out themselves.
+
+For example:
+
+root: pppw + sjmn
+dbpl: 5
+cczh: sllz + lgvd
+zczc: 2
+ptdq: humn - dvpt
+dvpt: 3
+lfqf: 4
+humn: 5
+ljgn: 2
+sjmn: drzm * dbpl
+sllz: 4
+pppw: cczh / lfqf
+lgvd: ljgn * ptdq
+drzm: hmdt - zczc
+hmdt: 32
+
+Each line contains the name of a monkey, a colon, and then the job of that monkey:
+
+ A lone number means the monkey's job is simply to yell that number.
+ A job like aaaa + bbbb means the monkey waits for monkeys aaaa and bbbb to yell each of their numbers; the monkey then yells the sum of those two numbers.
+ aaaa - bbbb means the monkey yells aaaa's number minus bbbb's number.
+ Job aaaa * bbbb will yell aaaa's number multiplied by bbbb's number.
+ Job aaaa / bbbb will yell aaaa's number divided by bbbb's number.
+
+So, in the above example, monkey drzm has to wait for monkeys hmdt and zczc to yell their numbers. Fortunately, both hmdt and zczc have jobs that involve simply yelling a single number, so they do this immediately: 32 and 2. Monkey drzm can then yell its number by finding 32 minus 2: 30.
+
+Then, monkey sjmn has one of its numbers (30, from monkey drzm), and already has its other number, 5, from dbpl. This allows it to yell its own number by finding 30 multiplied by 5: 150.
+
+This process continues until root yells a number: 152.
+
+However, your actual situation involves considerably more monkeys. What number will the monkey named root yell?
+
+--- Part Two ---
+
+Due to some kind of monkey-elephant-human mistranslation, you seem to have misunderstood a few key details about the riddle.
+
+First, you got the wrong job for the monkey named root; specifically, you got the wrong math operation. The correct operation for monkey root should be =, which means that it still listens for two numbers (from the same two monkeys as before), but now checks that the two numbers match.
+
+Second, you got the wrong monkey for the job starting with humn:. It isn't a monkey - it's you. Actually, you got the job wrong, too: you need to figure out what number you need to yell so that root's equality check passes. (The number that appears after humn: in your input is now irrelevant.)
+
+In the above example, the number you need to yell to pass root's equality test is 301. (This causes root to get the same number, 150, from both of its monkeys.)
+
+What number do you yell to pass root's equality test?
diff --git a/src/2022/day21/aoc.cpp b/src/2022/day21/aoc.cpp
index 8bc9411..f373689 100644
--- a/src/2022/day21/aoc.cpp
+++ b/src/2022/day21/aoc.cpp
@@ -1,9 +1,98 @@
#include "aoc.h"
+#include <functional>
+#include <map>
+#include <set>
namespace aoc2022 {
-std::pair<int, int> day21(line_view) {
- return {0, 0};
+std::map<line_view, monkey_math> monkeys;
+
+struct monkey_tree {
+ monkey_math* name;
+ monkey_tree* left = nullptr;
+ monkey_tree* right = nullptr;
+
+ monkey_tree(monkey_math* n) : name(n) {}
+};
+
+void find(monkey_tree* t, line_view name, monkey_tree** m, std::set<monkey_math*>& ms) {
+ if (*m == nullptr && t->left)
+ find(t->left, name, m, ms);
+ if (*m == nullptr && t->right)
+ find(t->right, name, m, ms);
+
+ if (t->name->op[0] == name) {
+ *m = t;
+ ms.insert(t->name);
+ }
+ if (*m != nullptr) {
+ if (t->left == *m)
+ ms.insert(t->name);
+ if (t->right == *m)
+ ms.insert(t->name);
+ *m = t;
+ }
}
+
+int64_t get_value(line_view name, monkey_tree* t) {
+ auto& m = monkeys[name];
+ if (m.value == INT64_MAX) {
+ t->left = new monkey_tree{&monkeys[m.op[1]]};
+ t->right = new monkey_tree{&monkeys[m.op[2]]};
+
+ int64_t v1 = get_value(m.op[1], t->left);
+ int64_t v2 = get_value(m.op[2], t->right);
+ std::function<int64_t(int64_t, int64_t)> fs[] = {
+ [](int64_t x1, int64_t x2) { return x1 + x2; },
+ [](int64_t x1, int64_t x2) { return x1 - x2; },
+ [](int64_t x1, int64_t x2) { return x1 * x2; },
+ [](int64_t x1, int64_t x2) { return x1 / x2; },
+ };
+ m.value = fs[(int)m.todo](v1, v2);
+ }
+ return m.value;
}
+int64_t get_value(int64_t value, const std::set<monkey_math*>& ms, monkey_tree* t) {
+ // std::cout << t->name->op[0] << " needs to be " << value << std::endl;
+ if (t->name->op[0] == "humn") {
+ return value;
+ } else {
+ bool b = ms.find(t->left->name) == ms.end();
+ int64_t v0 = b ? monkeys[t->left->name->op[0]].value : monkeys[t->right->name->op[0]].value;
+ monkey_tree* t0 = b ? t->right : t->left;
+ switch (t->name->todo) {
+ case oper::add:
+ return get_value(value - v0, ms, t0);
+ case oper::minus:
+ return get_value(b ? v0 - value : value + v0, ms, t0);
+ case oper::multiply:
+ return get_value(value / v0, ms, t0);
+ case oper::division:
+ return get_value(b ? v0 / value : value * v0, ms, t0);
+ case none: break;
+ }
+ }
+ return 0;
+}
+
+std::pair<int64_t, int64_t> day21(line_view file) {
+ per_line(file, [](line_view lv) {
+ auto m = monkey_math{lv};
+ // m.print();
+ monkeys.insert({m.op[0], m});
+ return true;
+ });
+ auto& m = monkeys["root"];
+ monkey_tree tree{&m};
+ int64_t n1 = get_value("root", &tree);
+
+ monkey_tree* target = nullptr;
+ std::set<monkey_math*> ms;
+ find(&tree, "humn", &target, ms);
+
+ auto n2 = get_value(monkeys["qwqj"].value, ms, tree.left);
+ // auto n2 = get_value(monkeys["sjmn"].value, ms, tree.left);
+ return {n1, n2};
+}
+} // namespace aoc2022
diff --git a/src/2022/day21/aoc.h b/src/2022/day21/aoc.h
index 388265c..ca5d6a3 100644
--- a/src/2022/day21/aoc.h
+++ b/src/2022/day21/aoc.h
@@ -1,7 +1,70 @@
#include "common.h"
#include <vector>
+#include <iostream>
+#include <stdint.h>
namespace aoc2022 {
-std::pair<int, int> day21(line_view);
-}
+enum oper {
+ add,
+ minus,
+ multiply,
+ division,
+ none,
+};
+
+struct monkey_math {
+ line_view op[3];
+ oper todo;
+ int64_t value = 0;
+
+ void print() const noexcept {
+ std::cout << op[0] << ": ";
+ if (todo == none) {
+ printf("%ld", value);
+ }
+ else {
+ char ops[] = {'+', '-', '*', '/'};
+ std::cout << op[1];
+ printf(" %c ", ops[(int) todo]);
+ std::cout << op[2];
+ }
+ printf("\n");
+ }
+
+ monkey_math() = default;
+ monkey_math(line_view lv) {
+ const char* p = lv.line;
+ op[0] = {p, 4};
+
+ if (*(p + 6) >= '0' && *(p + 6) <= '9') {
+ const char* p0 = p + 6;
+ while (*p0 >= '0' && *p0 <= '9') {
+ value = value * 10 + *p0 - '0';
+ p0++;
+ }
+ todo = none;
+ } else {
+ value = INT64_MAX;
+ op[1] = {p + 6, 4};
+ op[2] = {p + 13, 4};
+ switch (*(p + 11)) {
+ case '+':
+ todo = add;
+ break;
+ case '-':
+ todo = minus;
+ break;
+ case '*':
+ todo = multiply;
+ break;
+ case '/':
+ todo = division;
+ break;
+ }
+ }
+ }
+};
+
+std::pair<int64_t, int64_t> day21(line_view);
+} // namespace aoc2022
diff --git a/src/2022/day21/input b/src/2022/day21/input
index e69de29..a999735 100644
--- a/src/2022/day21/input
+++ b/src/2022/day21/input
@@ -0,0 +1,1933 @@
+fnsw: vlmz - lssm
+gwlv: 2
+zcsz: lcwg * sfsg
+zdrm: 3
+bpzq: 1
+jvvs: cfwg + mgdb
+wjvb: 2
+gspq: 3
+thbm: csnh * vqlg
+zwjj: svzn + znpl
+qfnv: fmzc * wgtv
+hjln: tsdf * hwjh
+dflj: qdgp * cvjw
+jsqj: 2
+jsdl: lfdn / cffd
+hzmf: 7
+vswb: sdrv + qwrs
+vzwg: 3
+mhjm: 2
+nhzl: mdsf * rmtj
+qdhg: tzwn * ndrb
+cbzd: 11
+drhm: 1
+vjvt: 7
+fmbj: nlhd + gprq
+sfpq: rhhv * wcgt
+vjdg: 2
+dlct: dnzp * bcdp
+chfd: 3
+jdjb: dfrm + czjm
+ccsr: nwzw + bfcp
+wssm: 2
+hjss: gncn * slgs
+mfwn: wrnb + zqsl
+qlgj: clcj + pbwc
+nrnw: 4
+mftc: 5
+nbrt: 3
+gcpq: rdlm * jnvz
+mgwl: 5
+swvr: 5
+zjmv: scvc + gsjc
+nngq: tqmc / qhjs
+pnpc: 2
+rpgl: 5
+srls: jddm + bmgz
+prbq: qdzj * qhvj
+srzb: 3
+mwqn: dbsp + csmb
+qwjn: dtff * gspq
+mvvj: 3
+qfrm: 9
+clbj: tnvv * zfvl
+vvlr: 2
+dlrn: mpfr + vrzm
+zrdh: 7
+lmdh: qrqp * blgz
+pfrn: lnpm * qrnh
+hrtg: 5
+lljf: 2
+wfvl: 3
+jnjr: 9
+lnpm: tcgb + pppg
+dcws: 3
+spjg: 4
+pmnj: rjmz * pdhw
+zcvd: hbws * gwlg
+pfbv: pzfv * hcwj
+jdqr: 5
+jshf: mqhs + jwlt
+pwrl: 2
+qchw: hrvd - wsrw
+fspc: nbsp + btfc
+wvrt: sstw * fhhc
+qgrw: mhvf + zcgs
+ncjq: zhhj * dwtn
+zwmc: 2
+rzqh: lgqz + wfwh
+hrpv: qlml * pfrf
+rdgj: rvhf + bwmt
+pqvb: 16
+jsdj: bhcp + zmbs
+dglb: vbns * glfs
+nrjd: 2
+cvqs: 5
+zjzn: 2
+nthp: nlps + nvzr
+rjst: 3
+jfnm: 6
+nldq: 3
+bnsl: 5
+tdvn: vmvg * nvzn
+wbqd: 10
+pwtn: 9
+bccr: gglp + pvfw
+qwmb: 12
+spbm: jwnd * zndn
+pjfv: 2
+chgr: 3
+zlvb: gzmd + dvzp
+jnjb: 4
+gprq: mfrp - jlpf
+lvsm: 4
+nbsp: 5
+pcpc: 5
+gtnl: bhml * pjbl
+sbsl: 10
+sstt: 8
+trsz: 9
+snsb: lsgm - qpfg
+jncn: vmhg * jmcs
+vfrg: 2
+pqvt: 6
+vvgm: 15
+ptvf: lczq * pwwr
+wwwm: rspn / dmmp
+qfvs: 8
+bfdn: lgtl + hglj
+nvmd: tlqv + zcwt
+gvrr: 3
+fqjz: 2
+gvjr: 2
+fsrb: 2
+wlbz: 5
+nnfq: flhj + pwld
+sdpz: grcr / vszn
+vvfm: 7
+wvlm: fbmn - hwsh
+gcrv: 7
+fvvq: zlpd * sphs
+cbcf: 6
+fmgp: 2
+lnqb: lqbn * vvmc
+ttch: 8
+szzn: mmtj * dvdm
+rmtj: 3
+hhnc: ccsm / lqml
+npvf: mdws * jmzj
+wpzq: hdsz * bgsh
+gsjc: zszn + qwdt
+lhfl: 2
+mrwt: mdhd * vbvd
+vfbq: nmzb / vdlm
+dscl: 5
+qblq: wlpd * pjvz
+grhp: zcgt / fwbg
+lhnj: pzws * ptml
+tjbr: wbvd / sltr
+ffmj: pwmp * qsbs
+vbjg: 5
+wtms: 2
+zzhw: 10
+dgmp: nptm + rhsb
+gqll: 5
+shhf: 5
+slgs: 20
+nqbh: rwpl / bngl
+bqhg: 5
+dfzh: vdnj * cqjc
+rdvw: fgzm * wzrg
+bvrz: mnvz - zgtj
+mswd: 2
+hvrb: prpb * cvlm
+ffmz: tfcq + flrz
+wgdp: 17
+lwgt: jmwr + vscz
+zbcv: 4
+jqvv: rcsw * hwpm
+sftj: 2
+prvl: gpws * cgdn
+jmcs: 2
+djsf: stsw / jvgg
+slwq: vgdd * vnmg
+hppl: 5
+rcgh: cgtn + brtw
+dnrd: lhlp + tgjh
+prpw: jfbt + vszs
+ccjt: wmcv - rbqp
+gqlj: cczr * nthp
+tfnc: 12
+qcdv: 16
+gdpf: 3
+wtwl: jgcn * nnjl
+vgqr: 5
+hfjg: lzjb + nngq
+qlzp: 2
+hjdb: 2
+hbsq: 2
+zpdl: nfvl * dfwb
+sqwc: 3
+gdrz: 4
+rncs: cnmf / psqh
+czlm: 7
+sdrt: 2
+hfws: mjvp * bqzt
+tcml: 2
+gzbq: hbdn + nqfb
+mlrn: gwvh * lgff
+svng: rjcr * fwss
+wmzv: rzfm + gphl
+chws: hmmg / nrjd
+wzrg: ldsn - smjn
+bsnt: nbpj + shsd
+fvmb: wzth + nlnq
+mqhs: dncb + vjpw
+ncvj: ndwb * wgdp
+pdhw: 2
+zdzp: 2
+rzlc: 2
+trhb: sdws + bjct
+hztt: 2
+ctgh: 4
+lfft: pmnp + lwsf
+gbgr: 2
+msfw: 3
+rgcj: 6
+vbnt: 8
+pvcq: fwqj * nzfv
+dwwz: qlzp + dntd
+smjn: grhp * chws
+qhvj: jcvq + ggcc
+qpsr: hppq + grcl
+cvjw: lnqb / bqnv
+wgvf: csqb * ttqg
+zlbl: lgrn * dqbf
+zmdq: 6
+cgqw: 2
+ngbs: 3
+pjnz: 7
+ddlw: 4
+vgdd: wtjh + ngrp
+zzts: 3
+vjrf: bcjv * mjzj
+vcbr: 5
+vnfp: hjgc + nfvb
+zdlm: hzmf * lwlq
+rbqp: 12
+ctzs: 15
+cbld: smwh + lbbp
+smhj: 6
+qpfg: 4
+qnfh: 3
+nndw: 3
+fprl: tvpl + hjdb
+nhgf: ltft + rdgj
+hmmg: tbfn * scrn
+fbcm: pczl * jzch
+mgrz: 2
+wppg: 3
+fwjp: wgvf * sdrt
+dtgc: 4
+hvqs: zzsq * tfmb
+fzjj: 8
+vlfd: 4
+wbdz: fnlz + rnzj
+hjgc: 2
+svjj: 6
+wndc: cmwr * mcnm
+nnph: 10
+twvq: cpvs - cbld
+wqzj: 5
+ltlm: 19
+hpcq: 4
+mnzn: 4
+hwfz: nhpl * wzgw
+wqnn: 8
+mwgg: rjst + bsjc
+mbbt: 6
+zlsl: nwpf + ffmj
+ptml: 4
+pshc: 2
+nlnq: 1
+dvzp: wzql * wtnv
+rmhr: 2
+bmjd: 3
+zfcd: ttqw * qcpl
+nslm: wtms + qwjb
+mbll: 2
+bjml: 3
+fdlb: hgvc * zttg
+bqnv: 5
+wznd: zgqq - hvrb
+lbfn: 3
+njwq: cbdq * ddhj
+mqvs: bvll * bnsl
+jgcn: 4
+rdgm: cbcb + qwjn
+vpqv: wvrt / hczz
+gvcw: 9
+qznr: 11
+smwh: 6
+cvml: 5
+rwpl: gbtq + mbzh
+ncgl: 4
+nrqr: ssqn * hztt
+zspc: 2
+qcsd: 11
+wblt: 2
+bqgf: 10
+fmhc: wlfc + cpnh
+snlm: jhmp * qdcp
+qrrw: 3
+vrwm: cczz + rqht
+bmgz: rjgb * vwzz
+vzzj: 4
+gltp: nnpd * sfqw
+rvrr: wwwm * lvms
+brtw: 5
+vscz: 9
+hzdl: 2
+lfbv: ccsr + jjwn
+vhmq: dlbb * drzm
+pswb: 5
+vrtr: 2
+blgz: 12
+pcfg: 3
+mdlj: 5
+cwcd: fqfs / jjgc
+lvtf: 3
+cfhr: 7
+twml: bsnf + vggn
+vhcd: npwm + vlfd
+smcc: wjnl * ddjr
+rvhf: jspb / gwvz
+mbts: 19
+jgnc: 3
+vwbg: jtsg + mmvm
+jsvg: jhlq * tpgj
+rjvj: tcpc + lzvr
+cnmf: qtbz + bphw
+ddjr: 3
+wtph: 10
+dbvl: 9
+mznq: gvjr * fvsd
+ttqj: lbgr * vvvt
+pmjm: pfqv + gcql
+mmbf: mbhn * qczz
+flrz: hpqt / lmjc
+bgjq: pwqg + gztl
+lggf: hdmr * rqch
+lcht: rflv / hzdv
+sqbf: 8
+dltm: 2
+pppg: 1
+llqr: 8
+qcbr: 3
+ghlv: 3
+grrs: 7
+hzdv: 2
+zbvf: rpgl + cnlj
+mphw: 3
+ptbf: 2
+jvjt: hrpv / tvcv
+pthv: 2
+grtd: gfwt * lszf
+mfmc: shjp + pthm
+qrnh: 14
+bbhw: ldjj + zhcs
+lvwd: 16
+dpvg: hzlv * ddcp
+dwqs: 2
+wgfb: 3
+jtgt: 9
+ljbd: bbbs + msfw
+rbvv: ctwj + wblt
+dqtq: 3
+vntw: jsgf + wdfz
+bzlh: jthg * rpdh
+sbnf: 1
+lcwm: 5
+pgsr: 2
+sgbm: lvtf * rcdn
+mssv: 3
+lnqt: 3
+srdl: 8
+wvpj: 11
+ntdq: qnwn * rncs
+cgmp: mgbt * jjrq
+rfmp: cgmp / svnq
+wtfw: 2
+wpzb: snsz / lrst
+msdv: 19
+bbbq: jmsv + dwwz
+prqm: 2
+jgrf: 5
+mdzg: zmrw + jmfw
+snsd: dclf + mprj
+ttpj: 2
+tjmj: zbvf * vtzc
+ljfw: 4
+vljq: htmt * wjbm
+ngrl: 3
+lrst: 2
+ccnw: wlwz + pshc
+hrzv: cscm * nrfp
+gchm: gzbm * bphn
+czbb: 3
+plgr: 4
+tscp: 3
+jmjv: 5
+czmm: 13
+cqgb: 20
+nnnp: mggt + fqpj
+bjmz: wppt + chfz
+pfqv: 3
+zmsl: zfcd - snmm
+tntl: ctzh - nbfw
+wlpd: 5
+swwq: 16
+hlnf: 2
+vpgz: 2
+pfrf: 3
+mqnh: jgnc + zjvq
+lclm: 2
+jsqw: htqp + dhlf
+zhhj: 2
+szcz: 2
+wbnl: 3
+nwzw: tdrn - gcdr
+rjgj: 7
+rnlr: vhhg / nnjp
+pvpl: 2
+qlnb: 5
+btwr: 10
+vwzz: mfmb + zhmm
+gpbr: 3
+gpzw: 3
+dblh: lwpg + smhj
+hbsv: hdwt * rtnt
+bbtz: grvh + lmng
+grvh: dqhd - qmbc
+lmvw: gfsr + jsrt
+scvc: 2
+wtjh: 3
+hpzd: 11
+nwcw: 4
+ntzl: zhjd + slwq
+dztl: 17
+zwfh: zmsb + wqsv
+wpnt: 10
+grtt: 3
+rqwd: dfhh - pmnj
+bcdp: grtd * wnbz
+nrpj: lvrp + nhgf
+jvgg: 2
+nfvl: bgjq + tddb
+jcdg: mbsr * lvwv
+lnmg: htrl + dtfm
+vfps: dlsm + ntzl
+bphn: fscl + vcsr
+bjbz: qdvg - tvzr
+tnnd: 2
+vbgh: hvzb * jcdg
+snjc: 2
+dbjj: nbrt * wgfb
+fvjt: rggc + znfp
+ssbj: 2
+hppq: 10
+qsqc: cjhm + dhrh
+rtgg: 5
+nnsn: npgh * srgw
+pjgn: 4
+ldqj: gsnd + zdlm
+npgh: 3
+pqsg: 5
+mgjf: dzcc * thjb
+ptzq: 2
+pjvz: bzvv * sphp
+tpnc: tgsp / rsgp
+bsnf: qprv + bsvn
+fgjn: gbgr * vnct
+njsj: 2
+vfvv: 4
+mvtj: jsdj / rmfr
+lwwt: 7
+gmzd: cqsz + cpwg
+rsvv: vzzj + qwzm
+dtfm: 1
+hwpm: ptvf + gglm
+wjcv: 5
+ptln: 5
+fqvg: 4
+dhbr: 13
+fmmr: gvnm - gdrz
+cfgn: 18
+brgj: vlhl + hdlq
+jbdz: wvlm * qqnm
+humn: 506
+rdlb: zwjj / qmpb
+tvsl: 1
+fzvr: 12
+lgpq: bjml * ngrl
+rtgq: wmhw + mcbm
+ftsg: 3
+vmvg: 3
+zwnl: 11
+ffcg: 18
+llcs: 7
+mggt: sbwc * srjv
+dgmb: qprd * nncc
+fsdv: hbsv + rtpz
+shjr: 3
+fgzm: 2
+pzfp: ctpj * znqw
+zzhd: ccwv + mmbf
+qzjw: 2
+pzdz: ngbs * drtm
+tpnl: vwsr + tstm
+vsrj: 17
+vrhf: vdnw + htwq
+scwz: 4
+tswq: 2
+lvrp: 4
+lmng: fprl * ttcq
+cqjc: 2
+dwtn: 11
+ttdj: 6
+bnsf: ctzs - drhm
+sfwh: 4
+zfqj: 10
+vtwp: 2
+znqw: 2
+lgqz: dvnr * pvwq
+jmmh: 2
+tlqv: qnfv + zjwd
+qvhs: wdhn * rscv
+zhcf: qvcb * sdhl
+wcgt: nqgv + rtbz
+jcvs: snsb + cvbc
+lfdn: lgrl * qfnv
+qcvs: 1
+dbww: 10
+snmm: 11
+qpwn: 4
+nzbm: tmbd + nnph
+gprf: 3
+vcpv: gvvz + wtcf
+qsqv: vstf + lcht
+htqp: sbmq + zcsz
+jrtc: qjvt + hhzn
+hvrt: cbbp + jhqv
+pbwc: 1
+svrl: 3
+mqbj: 9
+jjzh: 2
+wlnr: mnnf + zlvb
+qvjv: ddlw * mvvn
+mblw: 11
+njqw: qzjw * wwbl
+dzcb: 2
+jdfl: 3
+lwpg: 10
+dhnv: lvvg / rhjh
+zfvl: 7
+bwws: bnqm / mwjp
+lvtj: 5
+dscc: vwrv + nfvq
+mcht: 2
+ctbt: 1
+vlmh: 4
+hvqd: 3
+psnz: pjfv * zqrl
+ftmv: 5
+fscl: ldlr - bslz
+nlwj: 3
+sltr: 2
+rgjn: gmgp + rtgq
+jzch: tgjp + mvlt
+dwcq: vjzp * gcpg
+lsrm: twtm - stpf
+pvfw: psnr * hzsn
+fmsj: 11
+mcvc: 5
+rtbz: 12
+lfvd: hdhh * hwfz
+pvwq: 2
+gwmz: qfrm - pthv
+sdsz: wcgw * wrpq
+qlfp: gwpt + zhqn
+fswp: 3
+sgtr: 4
+rwsw: lhfl * pznl
+wfwh: 4
+hjvn: zprt * cbqv
+jmwr: 2
+vprl: 3
+hdwt: 3
+dqch: qghq * mdzg
+wbvd: sstt * wtph
+vwrr: 7
+zjvq: fbfc * rbmt
+gltv: 4
+mzrc: 20
+psqh: 2
+zrqr: trhb + sfdc
+zlld: 2
+lgsw: jntz * rcbd
+fcqr: 2
+bzwt: 2
+tdpr: 7
+qwtz: 3
+dmhw: qhzs + sbnf
+vszn: 2
+qnpt: bhrb - fngq
+bsgf: 3
+qzqz: 3
+jjtf: ntdq - qngn
+jmsv: 3
+grcl: 3
+rbqg: 5
+dmvv: 2
+mjsv: bbtz + gmzd
+rtnt: mnht + hgjg
+msss: 4
+wvcp: jpjz * gdsn
+pvgt: 2
+qnlq: 4
+fcdl: zqfl / mnmq
+jlvs: rbfr * rwjc
+smcz: 12
+fdjw: bbnr * trzn
+qjff: mdrf * tmjt
+mggw: lsrm / tmnv
+hddg: 3
+vzff: fqvg * rnrc
+ntmg: swwq * tzct
+gwvz: 5
+cczz: pvqf * zstp
+zjlz: 2
+nnjp: 2
+mbmw: mpht + jvjt
+ndrb: nwgh * fnvm
+jslr: vqsp / qwcv
+vwrv: 9
+rvcj: 2
+mwjp: 2
+nbnw: 3
+tdfv: 5
+rhhv: 2
+fngq: 3
+bttg: 1
+cqgn: 17
+drnd: 18
+rbdq: fsdv / qsll
+mfrp: hpzd * wwqf
+pwmp: mbbt * tdpr
+zjwd: 5
+vjzp: 4
+tstm: 3
+gzbm: drnd + gsls
+qsll: 6
+lhbt: spbm * rhgg
+lldj: dbzs * bmcv
+njwt: jpcj * vsrl
+tbcl: zjwn + cfql
+rlbh: btwr + gtnl
+ncmp: 5
+prjz: 14
+qncr: pfbv - sbsl
+pphs: 3
+shsd: 7
+sphs: cbpq * zgvq
+lhcw: 13
+tjgf: 2
+rnbh: 5
+dnbn: qnpt * jvdh
+vlpq: btfj + vbwm
+hjgn: 5
+qqnm: 2
+tgjh: prvl + zvns
+nntg: nrls * djsf
+swnn: cqgb + hvrt
+zqsl: jznt * gpbz
+lbzq: srzb * lrlr
+dncb: 7
+wmmh: 4
+drzm: 2
+hzvw: 5
+pzfz: bbsl * dmvv
+jfpm: mpqf + lgsw
+dfvp: 3
+jmfw: gqzj - pjnv
+thmh: 2
+vhql: 2
+mpqf: jvvs * trtc
+vghd: lggf / rglt
+trfg: jgqf * hlzj
+pfzl: 2
+vqsp: pftp * hmpj
+vqpp: 12
+nwgh: 2
+lrmr: njqw * lzrd
+wdbt: 3
+bjws: wqzj + vghd
+sjwm: 3
+rmqp: qclz * hhnc
+gqzj: vgqb + bghm
+dtmb: jvtv * wsgm
+pbds: 2
+drnq: 4
+gghq: gqjl + bsnt
+cscm: 4
+cftg: gqll * tbgp
+rsrp: 1
+rhsb: cbvz / ptrc
+bwhf: 3
+stsz: bbbq + wbtw
+grrm: 11
+jjzj: drfh / lqfm
+sbhj: cwcd * gwmz
+wqsv: 1
+bcjv: 3
+lbbp: 13
+nfvb: dmhw * sbhv
+jmvh: 4
+rtnc: dscc * tgzm
+fflg: vntw * cglj
+szrh: 4
+jfbt: cngv / ncmp
+gcpg: mggw + fbcm
+qgzq: ccnw * rbmh
+ggcc: lldj - ttdj
+ndgd: 5
+gzzt: zfwt + ggwm
+vvfh: 5
+rgbg: 2
+jzsr: slhw * shjr
+ltcv: 10
+fhcc: hhvl * tfqh
+cqdt: 2
+sfhv: dgmp / jgrf
+vztr: zzts + ggjs
+zfqd: jcgq + qwgs
+mnmq: 2
+zpnh: mqww / gjmc
+cpwg: 1
+tqnd: vlmh * vctt
+nnjl: lrbl * vwbg
+sphp: 13
+lgrn: dbtp + rdlb
+dsrz: 5
+cssq: clzl + cphw
+lcrh: qwtz * fpwp
+pmjc: 2
+cbcb: zjzn * wtth
+lmfg: ltcv - mphw
+dhdz: 2
+ntcg: 14
+vmhv: dtrm * sshd
+jgjs: 4
+czjm: qvhs + dthh
+cnnj: 3
+bsbq: jtfl * qtbt
+wslv: jsqw + bpzq
+dqdc: 4
+ffwg: 3
+zvns: ghzj * nwbb
+nqzm: prqm * zlsl
+cvgg: 4
+flvc: 13
+rpvn: 2
+dghh: dzhn + gjpg
+dlbp: 3
+hzsn: 3
+rrbw: mwnr + zfnb
+rcdn: 3
+msrb: 3
+mcds: 3
+wsrw: 5
+ldsn: hwgr / gmnm
+msfg: 15
+clhv: 2
+vdlm: 2
+mdmc: 4
+zhgh: 12
+sdgr: tvbv * dwll
+fpzm: zgsg + mwth
+phgg: hvfn / lfpr
+lvnw: dztl - sgtr
+sbmq: dcvj * nnmf
+jnjt: 3
+vbht: 1
+htmt: lmps * brfn
+tfqh: bcgf + sdsz
+vhvt: 5
+cdrv: jwqc * dscp
+ggjs: 4
+bbzs: 4
+vsht: 4
+fhhc: 7
+dbqw: 2
+clsd: 2
+vsdd: ptlt * pgsr
+dhdh: mfnj + tzbj
+nfvf: 11
+jflt: 4
+zwgd: 1
+btfc: 2
+hjzt: lwpr + hrtd
+dpsb: dbjj * vpqv
+jthg: fswp * slnn
+bmqg: 1
+qqnw: 2
+vrjw: msrb * dpzs
+mjvp: 3
+sdws: sbbc * vhmq
+qvjr: wmhm * vsdd
+pzfv: 2
+ctzl: 4
+jshj: 3
+vwmg: 3
+dtff: fnwh + hrvc
+qjvt: 8
+rlgr: 2
+pspg: 2
+ngrv: 2
+gwpt: 13
+lvms: fhht * vzwg
+prfd: 2
+qrqp: 2
+dcvj: 3
+zttr: pswb * ghjv
+stpf: wndc + bnbb
+wgpv: sntv + wcch
+fggn: pbqf * jtpd
+jbld: rwmr + hgpp
+vbvd: 3
+qjst: spzc * frpb
+wdhn: 13
+gdsn: llgt + pjgn
+zscv: wlbz + lbjg
+nlhd: qlgj * lscb
+fvcc: 5
+nhpl: 2
+mtwz: 2
+wlwz: vgnr + pphs
+mptb: 3
+bnbb: fcqr * clgw
+vsgr: 6
+nqfb: ljbd / rlgr
+nrls: 5
+dvnr: 9
+lpqg: gzbq * qmhm
+bphw: lghp * bwqn
+qdpf: 3
+spzc: 3
+mbsr: 3
+rtfg: 2
+fmzc: 2
+fprq: cppq * tqfv
+jmrr: 17
+cnfb: 3
+cgwd: 5
+qfnt: qcdv + jcvg
+rnlz: 2
+zhlb: dbvl + rpvn
+ltbn: 2
+wdfw: 6
+lscb: nwfv - vhth
+jgqf: tpnc - lrmr
+rjtc: 2
+chch: 5
+wppt: 2
+vvjq: mvnf + ngft
+rvtp: shzg + jwpt
+tllz: vsht * ptln
+gpbz: fcrn * bzwt
+jbfm: rqwd * rpfz
+ttgb: 2
+hbsz: cqgn * ncgl
+tmbd: 7
+tbrn: tqcw - tvsl
+jwvl: 2
+cczr: 2
+fvhn: 3
+dhrh: fmbj + llpr
+vzww: szbq * qrgz
+zbzd: 8
+qrtn: 4
+vsdc: 5
+dscp: 5
+qwcv: 2
+sbpw: tshf * ngwz
+gmgz: 4
+qgmm: prvh + msfv
+cbbp: 1
+hpqt: mflh + hbsq
+vsbd: 11
+wzth: hrmp * hfps
+wtth: twml / tzrh
+pqwr: 2
+lqml: 3
+nhcj: 15
+hhpz: rvcj * qsqc
+bnhp: ltrn * nqhs
+pczl: qwmb + zpnh
+zwgg: ptbf * jhls
+jbjz: 17
+svsh: npvf + rsrp
+plvb: 5
+lbcq: zsrg + vnzs
+vbwm: bsbq * mdmc
+hrtd: 5
+wbgg: 3
+cbpq: 7
+chfz: 5
+lmps: qbcz / rjtc
+rspn: 14
+zjbp: 3
+rzfm: mgsg * ctzl
+mflh: nlwj * qsqv
+cnvz: dzvc * svrl
+vstf: 5
+mnsw: 4
+htrl: 5
+vnwg: wqwf * rmhg
+cdwj: njjm - nshc
+tptz: smcc + wtnb
+jjrq: zmvp + fvmb
+qnjz: trfg - bqft
+tgzm: 2
+tngv: lmlf * svfq
+zshl: 3
+bmfb: vbvl * snjc
+dnzp: zrdh * chch
+zqnb: fwrb + pztz
+hlgn: lntm * zwnl
+rnrc: fwls * qsdd
+tddt: zhlb * hdtb
+pgcd: hjln + nrnw
+vnzs: zqjb * wjvb
+dqtb: 2
+bvmt: vvfh * vbbd
+zhjd: 16
+wtrr: qhgm * qpsr
+zqfl: fnjg * rnlz
+clcj: qnfh * zcbf
+jcvq: dhbr * cjrn
+gmcq: fpzs * dtrv
+fcrn: slfn + hhqj
+fmnq: 3
+jjwn: nntg * vgqr
+qrnp: 2
+zhmm: ffcf + wmzv
+ncrg: nllm + lclf
+tzwn: 2
+rbfr: lggv + qfjp
+bbbg: 5
+qsbs: lwpd + csqd
+frvm: tbwl * tjgf
+ttfq: gwwd * mtwz
+zprt: zwmc + fvcw
+btqf: 7
+dpph: 2
+lzrd: pswm + jflt
+pvmm: sfwn + lcvr
+qwjb: 5
+bwqn: 2
+jsng: 2
+vdnj: 13
+vcsr: wgfv / pjnz
+bcgf: ppvn / hrlf
+sqvg: 2
+rcsw: 3
+hvcd: 3
+ddcp: 13
+cqpr: jtnp * ffdw
+zqjb: 7
+zpmc: 4
+qzts: tdgj * jmrr
+mcbm: lwgt + nzbm
+mdws: 2
+vtzc: 2
+vmbv: 1
+bfcp: ncjq * tdqd
+fqpj: tdhn * czmm
+wqcc: 5
+nmpn: fgmj + hhdd
+lclf: wcdm * bwrs
+gnlw: 5
+wzgw: rmjs - dcws
+cdtn: wjgv * tmvd
+gmvr: lltd + qnlq
+qdvg: dpsb + cgpw
+tgjp: mhrp * sbpw
+cjrn: 2
+bbnd: 11
+jqtn: vzww + fcdl
+ppvn: qmlw * strm
+cbhg: 3
+cpwd: wlnr * qddv
+nvzr: 9
+lgrl: 2
+ngpl: 2
+wtnb: smcs * hscp
+pftp: tzrv * qdpr
+hgrw: 6
+qtbz: nzlp * rgbg
+fvnp: fggn + hrtg
+sfsg: 5
+gfpf: 2
+zmhl: 7
+ncjw: 4
+bwrs: 13
+cbdq: tdvn + rpcd
+chpt: 14
+zjwn: ttwj + hmgr
+pznl: tmnq * glsv
+gfzd: dnbn * mhjm
+zstp: 3
+qczz: 5
+rpdh: phgg + dgmb
+fvsd: jbfm - pjvt
+rmjs: 14
+jhlq: dvhf * mgwl
+wmcv: nbfb * wcct
+jtpd: 6
+zgqq: lbzq + szdh
+shjp: hjss + bshn
+dzjj: wdlv + snsd
+vnct: vsdc + tjmj
+blph: 2
+vpnb: grdl * nfvf
+tqfv: 5
+ffcf: 2
+slfn: 15
+qhjs: 2
+mpfr: 3
+swcb: 2
+nzlp: mptb * pvpl
+mjhn: 3
+csmv: llqr + hdvg
+bcjg: shhf + ptzq
+fszl: 5
+mbbj: gbzj - cnnj
+qfjp: pvpp + jsvg
+vjdt: 17
+lwpd: rpfl * pzsl
+zndn: 5
+cgtn: 2
+hdtb: lvzj - jsdl
+clns: 13
+gvlj: qmrn * dbqw
+ggdl: 11
+snsz: ffmz + dzjj
+fztp: lzch + ftzh
+crsd: zzhw * vfcd
+pbpl: cqzw * lfbq
+crmt: grrs * bvrz
+cwcp: 4
+qffl: 5
+mdhd: 5
+mprj: 1
+nfvq: mtsn * mcht
+bndf: wppg * thbm
+wmhm: 6
+fcgc: 2
+hvzb: 2
+bzgn: qdpf * tdsd
+szbq: 2
+plpv: wfgp + gcsv
+rjhn: dlrn / zlld
+sfwn: llsf * pclf
+vsct: 3
+dbtp: ncqw + mplh
+vfhb: pspg * qcbr
+npwm: fmgp + rbqg
+stmg: 4
+lsfh: wznd + dqch
+cphw: 1
+jmzj: 3
+sbrz: mwgg * ttgb
+wdlv: cqwt + qmnw
+vbbd: 3
+dqbf: 3
+mzvj: rcql + jsqj
+drhf: 3
+nzjs: 1
+lqpq: frgw / njsj
+mmlc: jslr + jfjl
+fswt: 3
+hncs: nhjj * jnjt
+wbfv: 2
+mdsf: 3
+jhgd: 10
+zcwt: ghzf / szrh
+qprv: njhc + pqvt
+qgnb: 2
+mdrf: 4
+lfzj: zqzf * vbjg
+lhlp: mrwt * dzfp
+jhzm: 4
+mpvq: 12
+lssm: grwc + ncrg
+fpjv: vjdt * wttd
+lbgr: lfvd + zcvd
+pttb: dwqs + spjg
+pswm: lnmg + nvdr
+qwqj: nqzm * bzlh
+ttcq: 3
+qtbt: 3
+ngwz: 2
+grdl: swnn + vrtr
+lfbq: gwhv - dtmb
+nqgv: fczg + htzz
+dzcc: 2
+rhjh: 6
+vmsh: 3
+jfjl: shdg + mhzn
+csnh: 4
+fsnw: 9
+tdrn: cwdc * vmhv
+gvhg: 2
+fdsc: 2
+tzrh: 3
+hmpj: 5
+fczs: plvb * cbzd
+mbhn: 5
+fczg: 5
+qnwn: 2
+ccsm: sfpq - vtsh
+pclf: 5
+qhgm: 4
+rpfl: gfzd + nvmd
+zlpd: 4
+gwww: 4
+hfps: 2
+fwnw: 3
+njzn: rwgc + zsmj
+qgvj: gmvr + frhv
+cnhr: 2
+mrzs: lwwt * dvdq
+llhw: qddm * ctgp
+cmwr: tfnc + ntmg
+zcfn: 3
+ngzh: 5
+sfdc: hfjg * plpv
+sdhl: fgjn + bzgn
+gglp: chcj + mvtj
+fhpl: 7
+smpz: qchw / jdbn
+nrdl: dwcz + gvhg
+nbfb: 4
+hbpp: 4
+gphl: fspc + tllz
+lzvr: tddt * rwph
+gmgw: 6
+nllm: rprq + mrgn
+ltgp: 2
+nbfw: 2
+vddr: 2
+gglm: bwdw + mbmw
+zqfz: 2
+sshj: 3
+hwsd: 2
+ptlt: 3
+vsrl: hvcz * pgcd
+prvh: wbdz * blgt
+lvwz: njzn * hltf
+lvhw: 9
+dhlf: 3
+lttp: 19
+gjpg: 2
+jsgf: sbrz + gmcq
+blqj: mfmc / fszl
+qbcz: ttqj + hmgw
+bwdw: wdnz * gqbb
+ncqw: fzzt + tfhb
+nslg: bbhw + jdph
+gfwt: vzzm + sgbm
+gmnm: 2
+wcdm: gnlw * dsrz
+chcj: 10
+fwfn: hppl + pwjf
+qngn: vwmg * zjpj
+jdcr: qblq + jshf
+nwpf: mqvs * bbnd
+dhzf: nlfv + hvqs
+hczz: 2
+dvdm: 2
+lqfm: 3
+jtfl: 3
+vvvt: 2
+cppq: vtgn * pmjc
+mscr: 4
+qmjs: jrtc * csmc
+zqrl: lvwz - srls
+wfdj: rjhn * qzvb
+wdgw: 2
+fdjb: 8
+mtsn: fdsc * mcvc
+jddm: qrnp * lhnj
+nzfv: czwb + qvcm
+tzps: lsdf + jsbd
+jjmp: 2
+llsf: 18
+lsdf: 11
+tfmf: 2
+pthm: qrtn * jzdb
+jwpt: lpqg / ttpj
+rtph: mfdm + cmjj
+hhqj: 5
+nhhl: 4
+rmfr: 2
+wnhd: 2
+shdg: vbgh * dqtb
+mhrp: 3
+jvdh: rtgg + scgl
+wdfz: lfbv / pqwr
+fswd: hsfg * fswt
+hhjc: vqpp * vrbm
+frhv: 1
+sntv: 2
+hltf: jdqr * zdrm
+ghzj: gchm - rmhr
+tmnq: 8
+bmdf: vvjq * bsdt
+fnlz: gfpf * nbnw
+tmjt: 2
+pmnp: 2
+jpjz: 2
+qjng: dglb - dpph
+qrgz: 4
+vszs: fnsw * ghlv
+vqlg: 2
+jcvg: 7
+bhml: 3
+gwvh: 3
+jspb: pftm + tgsl
+rbmt: 5
+sfqw: 11
+ctzh: 8
+nnpd: 2
+wrpq: sjwm + szhq
+lzqq: bbbg + qwhz
+pbqf: 3
+jdbn: 2
+clhb: nnsn * hrfz
+fpwp: cgwd + wssm
+mjzj: nrdl + fdjw
+flhj: 7
+hmgw: bbzs * fqsp
+wqwf: 5
+bzbr: 2
+pvpp: tzwh * jbdz
+sdrv: 1
+qhrf: ffwg * lgpq
+qdcp: zrhp * zjbp
+hdsz: 17
+mplh: rwsw / mbll
+nwfv: pfzl * jmjv
+vmhg: ldqj + bjws
+rszm: 2
+rcbd: 10
+tvzr: qnbl + jhzm
+slhw: shbw + ntcg
+jcgq: hbgd / djzc
+hrvd: wjcv + nhww
+zgtj: 11
+sshh: fzjj + wfdj
+dmmp: 2
+bqft: rgjn + rbdq
+rjgb: 2
+rwjc: 3
+hvcz: 2
+rpcd: 16
+fzbp: flwh + pczr
+qmlw: 2
+hrvc: qcvs + svjj
+tzrv: 5
+jtnp: ffcg - vgmc
+vfcd: hrzv - dmsz
+pvpg: 3
+jjgc: 2
+rhfq: 3
+wzdd: 6
+tpwg: dmms + psdf
+srgw: fztp + jcvs
+wjgv: msss + dqtq
+nvjt: fzbw + ctbt
+wptt: dblh + pzdz
+ctgp: 2
+lbjg: 12
+hbdn: wgpv * znjw
+gwhv: rdgm + zfml
+sbbc: dvcf * mssv
+zsrg: pcfg * twvq
+wcfb: 2
+wwzn: 5
+nhww: 12
+wtgf: rrbw * qdpv
+gmdn: nzcj * mcwv
+hdlq: rqgl * zcfn
+phbz: 2
+scvw: zrqr - tngv
+cfql: lmdh - rcgh
+wwqf: crcf * vfvv
+nvwr: lbcq * wtfw
+tcgb: grtt * ngpl
+tbwl: nbwg + cdwj
+vctt: 2
+zmrw: zwlq * vsgr
+wjbm: djnd * hbsz
+vbfb: 4
+qsrc: 5
+tsqv: 11
+cwdc: wtgf * lmcc
+rtpz: wzdr * tpnl
+cgdn: fvjt + lsvs
+nncc: 2
+zhcs: sdpz + vprl
+fzbw: dhdz * mhrt
+lszf: 2
+qmrn: 11
+rmhg: 3
+wmhw: cdrv + qfvs
+clzl: 10
+bsjj: ljfw + tscp
+phjn: fjbs - fmhc
+jlqf: 5
+mhrt: 5
+vhth: 3
+lgtl: 4
+rjmz: 4
+nvzn: 7
+ldjj: 2
+bslz: rvfl * fwjp
+tbrz: hwsd * mdzl
+znjw: 2
+qmbc: 10
+ngbr: nndw * smpz
+lmcc: nnnp + lhbt
+znpl: dgcl * lgcl
+zcgs: lcmm * tzps
+mmtj: nzbn + wbgg
+vlhl: 2
+cfsf: 9
+vwjr: lwsw + cnvz
+wzdr: znqj / lrzr
+csmb: vnfp / tswq
+tsdf: 3
+nwbb: 2
+hftm: 3
+wgtv: qsbv + llhw
+fzzt: gcrv * cbcf
+cpvs: jnjb * dsdv
+drtm: 7
+jhls: ccjt + drhf
+gztl: clgr + cfgn
+njhc: 3
+tddb: gzzt * pqvb
+vtgn: 4
+gbtq: mbbj * rvrr
+mwnr: 6
+qsdd: 2
+ttqg: cfsf + wnhd
+dbsp: zwgd + vswb
+ctwj: 20
+ngrp: 8
+gfsm: jwwt + vfgw
+hgvc: blqj - qgzq
+qrrb: vrjw * sfws
+cqwt: 7
+lgff: 3
+brwz: whtp + pwtn
+qwzm: 4
+zmbs: 3
+ltrn: 2
+tdsd: gvph + grrm
+rvqj: 7
+wtcf: bjbz / tfmf
+fqfs: brsw * jjtf
+qflj: dlct + fswd
+dsdv: rnbh * dcpb
+zhqn: trsz * clsd
+gqbb: 3
+dntd: 8
+bshn: fpzm / mgrz
+jccv: ngrv * frvm
+rlzf: 5
+fgzs: 6
+zfnb: 1
+dpzs: 13
+mfbs: 11
+dclf: 18
+ttvm: lfft * tpwg
+pczr: zfqj * rghn
+wcgw: 8
+hwjh: 3
+tdhn: qlfp + mpwv
+cgbh: fbmq + mzrc
+cjhm: hgrj + vhcd
+jlpf: 11
+lvzj: ttch * cdrp
+qnfv: vqsh * gprf
+lghp: 17
+nptm: wptt * mjcf
+lwsw: 5
+qmnw: 4
+jdph: 4
+nzbn: 4
+wpvt: 4
+hvfn: pzfz * rjvj
+rpzm: 3
+mbmt: ztzz + qjst
+bsdt: 2
+hwsh: 2
+tdgj: 4
+qwgs: wfvl * snlm
+ghjv: 5
+dvdq: 3
+fbfc: 2
+rqht: 2
+mrvw: 2
+gmjj: 18
+tfcq: sfhv + vfbq
+dgcl: zwgg + hhms
+lfpr: 2
+zgvq: 2
+scrn: 2
+rcql: 5
+nzcj: qpqw * rwrj
+nrfp: ggtm + bzbr
+cwjz: qlgn + hcdq
+dzhn: 5
+rpfz: 5
+rvfl: 4
+tdqd: ghhc * hzvw
+fnvm: vwjr + sqbf
+spql: 3
+mwth: pvcq * fqjz
+psnr: pvgt * mgfs
+tbfh: gmgz * ngbr
+ggwm: 3
+ffdw: 5
+rbmh: hfws * chfd
+bnqm: fdlb + rssb
+nnhc: pqsg * zmdq
+mfmb: 4
+llfp: tbmt * vsct
+zfwt: hvwm - mqbj
+fvcw: 17
+vgll: 5
+dmms: ncjw * cvgg
+fbfp: 9
+lwpr: rnlr - vbht
+fgmj: hddg * pwrl
+tqcw: 20
+bzvv: 2
+dtrm: 2
+hlzj: rtnc / pnpc
+vbns: 3
+wdnz: vvgm - cssn
+pztz: vpsj + dpvg
+mhvf: hjvn + fhcc
+pjbl: qrrw * sshj
+wgfv: rdvw - wwqn
+jjcv: scvw - qrrb
+jtvq: qgvj + bvmt
+sshd: tdsq + vljq
+shbw: nhhl + vnwg
+cpnh: vcbr + gmdn
+zfml: bndf * cdtn
+rggc: mgvc - ltjv
+vrzm: bnsf + vhvt
+zjpj: 5
+fpzs: 3
+vtsh: 5
+tjpg: 2
+splt: 2
+gfsr: vzff + wdbt
+qvcm: 2
+rssb: bccr * vmsh
+tcpc: pbpl + qflj
+djnd: 4
+bgsh: bwst - gdpf
+pjnv: bsgf * bmfb
+rlph: zwwn / tsgr
+hgpp: 6
+gcsv: qvhb * tsqv
+nlfv: 13
+dwcz: 6
+sbwc: 9
+smcs: plgr * hqpb
+tdsq: hnmh * cvml
+gncn: rmbb * pjnh
+mgdb: lfzj + dhzf
+hrbp: dltm * rlph
+nshc: jqtn - prfd
+qhmh: 2
+qfdz: 2
+dmsz: hrbp + nzjs
+dzfp: 13
+fmlh: zscv * ptns
+root: fflg + qwqj
+jntz: 8
+hrlf: 4
+nwcq: hzdl * mbmt
+bmsz: 4
+tzct: 4
+csmc: 4
+trzn: 5
+wwqn: vfps + gmgw
+hrmp: rjgj + lvwd
+tzbj: 12
+qvhb: msfg + rtfg
+blgt: 2
+qbnw: 2
+mqww: qdhg / vpgz
+bmqm: 3
+btfj: nwcq + lvnw
+lzch: tqnd * gpzw
+mnnf: pcpj / llfp
+nzdr: cvqs * wbnl
+dgwd: 16
+jnvz: zwfh * gpbr
+mfnj: gvlj / phbz
+dlbb: 3
+btdz: 3
+hwgr: lsfh + zqnb
+cdrp: jnjr - vvlr
+mvmm: 4
+mmvm: 15
+crcf: 2
+glfs: 3
+qcpl: hftm + chpt
+vpsj: jjzh * vcpv
+rnzj: 1
+stsw: nslg * lljf
+wlfc: brgr * qfdz
+pwld: 1
+htwq: fmsd + vjvt
+bznq: dwcq + hhjc
+lznl: zpgj * wbfv
+jzvq: ncvj + fzbp
+dwll: 5
+svzn: dflj * zdzp
+glsv: 4
+whtp: 5
+bvll: njwt + clhb
+llgt: 9
+nmzb: mpvq + csmv
+mfdm: 3
+zmvp: fbfp + lbfn
+cqsz: rbvv + mnsw
+ctpj: jmmh * hjzt
+lvwv: 2
+mnvz: mblw * bmqm
+ggtm: 16
+shzg: fmlh + rvjr
+hhdd: 3
+qlgn: lhcw * dgmj
+tnns: wdfw * stmg
+wwbl: jlqf * nqgj
+fnwh: 2
+szdh: bsjj * srdl
+gvph: jtvq + mzvj
+lcwg: 3
+tnhv: fsfw + jzvq
+lrzr: 2
+pjnh: 2
+njjm: wtwl + nnhc
+qdpr: 6
+bsvn: ltjg - wpvt
+rhgg: wqnn * mnzn
+gvnm: 14
+qhzs: 13
+gjmc: 2
+ccwv: zspc * mrpf
+dgmj: 7
+vnmg: pbds * dscl
+cppb: bwws - hqbh
+fjbs: zfnf / mswd
+wprz: pzfp - svrr
+mrgn: 1
+lwlq: 2
+ptns: 2
+lzjb: lvhw * mvvj
+flwh: qgmm + bmdf
+wzql: 13
+fwrb: gcnz * wcfb
+hqpb: 2
+zwwn: tbrn + bwhf
+dnbw: 2
+lsgm: lclm + qhrf
+lmbw: msdv * hlnf
+pvqf: fwnw + hpcq
+mgvc: lmbw + jdfl
+jsrt: jccv / zpmc
+dfrm: 5
+dfwb: 2
+rwph: rsvv + ftsg
+tmnv: 4
+wttd: 2
+pvhp: 3
+gsnd: 5
+rwgc: fmmr + gghq
+mjfs: lzqq * vfrg
+rjcr: 6
+hmgr: 15
+mclj: 7
+sfws: fvnp + mjqp
+msfv: 1
+snmd: 2
+thjb: bgcw / tcml
+mvnf: 6
+bvcg: cpwd - jqvv
+nqhs: mcds * vhql
+dvhf: tbcl - cssq
+qnbl: qjff + qznr
+vgnr: 3
+czwb: jbjz + qpwn
+rdlm: 2
+hcwj: tjbr - szqq
+hrfz: nvwr + jdcr
+mjcf: 5
+qjbg: fmsj + tbfh
+jtsg: 2
+hscp: ftmv + fgsl
+ltft: fvcc + pttb
+qsbv: 1
+rhcb: cwcp * pvhp
+vcmc: 5
+dbzs: 3
+grcr: lvsm * btqf
+hsfg: qgrw - pfrn
+mvlt: dlbp + scwz
+fbmq: 3
+bgcw: njwf * stsz
+tshf: 4
+cgpw: jmvh * qncr
+slnn: 3
+lwsf: 9
+lmlf: 11
+qdgp: 2
+tnvv: 3
+rbgl: 3
+djmp: 2
+vlmz: dnrd / nrqr
+fwbg: 2
+gqjl: vsrj + zjlz
+vfgw: bfgl + llcs
+dlsm: qvjv / vbfb
+hgjg: ttvm - lttp
+lsvs: wslv * zqfz
+tbgp: 2
+vscm: rlbh + zfqd
+hhzn: ltgp + mclj
+qghq: 2
+tvcv: 3
+brsw: 2
+tgsp: qcfh + jfpm
+strm: ssbj * sshh
+zpgj: 3
+qlml: ttbb + clns
+jhmp: 3
+bmcv: vcmc + szcz
+lltd: 3
+ptrc: 3
+vggn: rgcj + fczs
+nlps: hbpp * fhpl
+tbfn: mrzs + vbnt
+jvtv: 9
+jsbd: 8
+hdvg: 2
+hdhh: 9
+bsjc: 5
+hdmr: pjzs + szzn
+pcpj: jlvs - zhcf
+nvdr: 1
+fhht: 3
+dthh: 3
+bdqf: rdhz * swcb
+cvbc: 3
+bghm: bttg + dhnv
+wrnb: nmpn * pmjm
+srsp: 4
+cnlj: 4
+cfcm: 1
+ztzz: drnq * ftrq
+fzpg: 5
+mpht: 2
+vdgh: gltp / sqvg
+tzwh: 8
+pjzs: 3
+pjvt: tntl * nwcw
+mpwv: wmmh * svng
+cmjj: spql * trrq
+dcpb: 3
+lczq: rzqh - rhfq
+dtrv: fvvq + qcsd
+fgsl: 2
+jwlt: fsnw * jshj
+scgl: vddr * fzvr
+hgrj: lqpq * qjng
+pbbh: mvmm * psnz
+hbws: pvmm + gfsm
+mgsg: 2
+zcbf: 2
+bjct: mznq * vvfm
+cvlm: cqdt * mjhn
+nnmf: zshl * tnnd
+bbsl: 3
+trtc: 3
+frpb: sfwh + czbb
+lggv: gwlv * dbjt
+rghn: ctgh + chgr
+znfp: tjpg * mbts
+mdzl: 3
+brgr: cqpr + gqlj
+mgfs: lznl + psgd
+fmsd: clhv * qfnt
+pwwr: 3
+twtm: cppb * qqnw
+cngv: rrwg * vrwm
+vqsh: 7
+qzvb: 3
+qmhm: 2
+bbbs: wvcp + ngzh
+grwc: mjsv * pvpg
+lntm: 4
+qddv: 14
+csqd: tnhv * rntr
+wnbz: 2
+hqbh: crsd + cwjz
+ssqn: 4
+szqq: qzqz + fgzs
+hzlv: brwz - sqwc
+nbpj: 4
+zttg: 3
+dbjt: pjqs - zlbl
+cfwg: 2
+wsgm: nslm * vhtd
+wwsh: prpw / vtwp
+svnq: 2
+cbqv: 7
+qcfh: wwsh + lmvw
+lcmm: 3
+ltjg: bjmz * dfvp
+jwwt: vpnb - fhwz
+jhqv: wqcc * cnhr
+tbmt: 3
+vbvl: 5
+wgpf: btdz + jgjs
+tpgj: 3
+nqgj: 3
+gmgp: qljc + njwq
+zcgt: rmqp - mscr
+prpb: bmqg + smcz
+rglt: 2
+cqmg: vrhf * mftc
+tvpl: 5
+hhms: mmlc - pcpc
+tsgr: 2
+bngl: 5
+ghhc: 5
+hhvl: 3
+sfsh: 5
+jsdz: 2
+qpqw: hfrp + jfnm
+ftrq: 2
+mcwv: 3
+bbnr: cbhg * fvhn
+vslg: 2
+zmsb: 6
+jzdb: jbld + fprq
+gbzj: 10
+scwj: 2
+wbtw: 16
+vqts: 5
+vmhh: zmsl + wpzb
+hjdp: zbzd * cnfb
+rdhz: 7
+mgbt: 2
+zwlq: nvjt + jwvl
+sstw: 2
+cssn: 2
+qwhz: 2
+dzvc: 2
+vjpw: 3
+gzmd: 2
+rntr: bqgf * mgjf
+gpws: 5
+srjv: wpzq + hjdp
+bwmt: nhzl * gvrr
+dczf: 4
+hfrp: qlnb + fsrb
+fmtb: hgrw + lcrh
+bwst: jsdz * dghh
+znqj: vjrf * scwj
+lgcl: 2
+jhwh: 7
+fnjg: lcwm + rtph
+rflv: qsrc + gvcw
+vrbm: 2
+qdpv: mdlj * ltlm
+vgqb: zjmv * fdjb
+mjqp: bdqf * wbqd
+gwwd: 4
+htzz: 2
+clgr: 13
+zqzf: 6
+rqch: 2
+lmjc: 2
+lvvg: prjz * rhcb
+tgsl: rpzm * czlm
+vwsr: 4
+zsmj: jtgt + hlgn
+rvjr: sdgr * dnbw
+cglj: 3
+rprq: mrgf + vlpq
+psdf: qhmh * fmnq
+mnht: zhgh * bmsz
+pzsl: vscm / dczf
+tfhb: vdgh + mrjn
+fsfw: wdgw + jncn
+fwss: 3
+frgw: crmt + bnhp
+ttqw: 2
+cbvz: zfmh * hvqd
+gcnz: jjzj - vmhh
+drfh: nqbh + zpdl
+tvbv: 3
+gvvz: 15
+qwdt: 2
+vdnw: 14
+zfnf: mfwn + jzsr
+ghzf: rvqj * zbcv
+wcch: wpnt + vmbv
+vzzm: snmd * ndgd
+qprd: zzhd * rvtp
+gsls: 10
+hglj: vqts * tdfv
+gcdr: bvcg / nldq
+mhzn: vslg + mlrn
+svfq: prbq - gcpq
+pftm: mwqn * qbnw
+dvcf: hhpz / dzcb
+vgmc: 5
+qclz: 6
+cbvw: bcjg * hjgn
+qvcb: 3
+brfn: 3
+jwnd: bmjd + dbww
+wfgp: hvcd * tbrz
+fwls: 10
+zczn: cqmg * nzdr
+zgsg: qnjz * jsng
+wtnv: 3
+hbgd: tptz + wprz
+ldlr: brgj * vgll
+fqsp: bfdn * rzlc
+pjqs: bznq / dqdc
+rwmr: cgqw + clbj
+hcdq: cbvw * wvpj
+hnmh: jjcv * fwfn
+svrr: 11
+zszn: blph * szhf
+ngft: 5
+qljc: 5
+ttwj: 2
+szhq: 3
+trrq: 5
+nbwg: 12
+clgw: vztr * rfmp
+llpr: wgpf + qvjr
+ndwb: vfrq * fcgc
+zzsq: 4
+mvvn: hbpf - qjbg
+tfmb: 4
+tmvd: 6
+lqbn: 5
+mrjn: nrpj - swvr
+qdzj: 11
+psgd: 1
+fwqj: 2
+nhjj: vjdg * gwww
+vfrq: rszm * lnqt
+ltjv: 4
+gcql: ttfq * wwzn
+qddm: nnfq - mrvw
+hbpf: qffl * qzts
+mbzh: thmh * phjn
+wjnl: flvc + srsp
+wcct: lvtj * splt
+jwqc: mqnh + vfhb
+bfgl: mfbs + zttr
+rscv: 2
+dqhd: cfhr + fpjv
+pwqg: 16
+jznt: humn - sbhj
+rqgl: tlth * vsbd
+mrpf: gmjj + cgbh
+cffd: 4
+sbhv: 4
+vhtd: 4
+jpcj: zczn + pbbh
+cqzw: dtgc + svsh
+mrgf: bqhg * lmfg
+pzws: 2
+pwjf: wtrr * sftj
+gwlg: 5
+tqmc: jjmp * dfzh
+bhrb: 16
+djzc: 2
+rrwg: wzdd * cftg
+lrlr: fmtb + jdjb
+rwrj: 2
+mcnm: 2
+lrbl: 2
+bqzt: 3
+qwrs: ltbn * rbgl
+zrhp: 3
+ttbb: dhdh - jhwh
+rmbb: qmjs / gltv
+bhcp: 11
+vvmc: tnns + fzpg
+fhwz: hncs + vwrr
+csqb: 2
+fbmn: nhcj + jhgd
+szhf: 3
+dfhh: sfsh * rlzf
+lcvr: qgnb * ggdl
+njwf: 2
+hvwm: djmp * dgwd
+rsgp: 9
+vhhg: qffm * zmhl
+ftzh: 7
+ddhj: 2
+tlth: 5
+qmpb: 3
+zfmh: mjfs + cfcm
+qffm: 2
diff --git a/src/2022/day21/input0 b/src/2022/day21/input0
index e69de29..e14be60 100644
--- a/src/2022/day21/input0
+++ b/src/2022/day21/input0
@@ -0,0 +1,15 @@
+root: pppw + sjmn
+dbpl: 5
+cczh: sllz + lgvd
+zczc: 2
+ptdq: humn - dvpt
+dvpt: 3
+lfqf: 4
+humn: 5
+ljgn: 2
+sjmn: drzm * dbpl
+sllz: 4
+pppw: cczh / lfqf
+lgvd: ljgn * ptdq
+drzm: hmdt - zczc
+hmdt: 32