commit 1bc1f289b027f13f4e557ab9398c9ab618cc52cd
parent 32bcf09f5c4af7f9bef142975c66c1656a4d3f26
Author: Sebastiano Tronto <sebastiano@tronto.net>
Date: Mon, 7 Jul 2025 11:47:29 +0200
Day 21 2022
Diffstat:
5 files changed, 2175 insertions(+), 0 deletions(-)
diff --git a/2022/21/a.rs b/2022/21/a.rs
@@ -0,0 +1,19 @@
+mod common;
+use common::*;
+
+pub fn calculate(name: &str, monkeys: &Vec<Monkey>) -> i64 {
+ let i = monkeys.iter().position(|m| m.name == name).unwrap();
+ match &monkeys[i].kind {
+ MonkeyType::Num(n) => *n,
+ MonkeyType::Op(op) => {
+ let n1 = calculate(&op.m1, &monkeys);
+ let n2 = calculate(&op.m2, &monkeys);
+ apply_op(n1, n2, op)
+ }
+ }
+}
+
+fn main() {
+ let monkeys = read_monkeys_from_stdin();
+ println!("{}", calculate(&"root", &monkeys));
+}
diff --git a/2022/21/b.rs b/2022/21/b.rs
@@ -0,0 +1,63 @@
+mod common;
+use common::*;
+
+fn solve_for_humn(name: &str, n1: i64, monkeys: &Vec<Monkey>) -> i64 {
+ if name == "humn" { return n1; }
+
+ let i = monkeys.iter().position(|m| m.name == name).unwrap();
+ if let MonkeyType::Op(op) = &monkeys[i].kind {
+ if let Some(n2) = result_or_unknown(&op.m1, &monkeys) {
+ // n1 = n2 [op] [unknown]
+ match op.op {
+ '+' => solve_for_humn(&op.m2, n1-n2, &monkeys),
+ '-' => solve_for_humn(&op.m2, n2-n1, &monkeys),
+ '*' => solve_for_humn(&op.m2, n1/n2, &monkeys),
+ '/' => solve_for_humn(&op.m2, n2/n1, &monkeys),
+ _ => panic!("invalid operator")
+ }
+ } else {
+ if let Some(n2) = result_or_unknown(&op.m2, &monkeys) {
+ // n1 = [unknown] [op] n2
+ match op.op {
+ '+' => solve_for_humn(&op.m1, n1-n2, &monkeys),
+ '-' => solve_for_humn(&op.m1, n1+n2, &monkeys),
+ '*' => solve_for_humn(&op.m1, n1/n2, &monkeys),
+ '/' => solve_for_humn(&op.m1, n1*n2, &monkeys),
+ _ => panic!("invalid operator")
+ }
+ } else { panic!("both sides undetermined"); }
+ }
+ } else { panic!("found number when trying to solve for humn"); }
+}
+
+fn result_or_unknown(name: &str, monkeys: &Vec<Monkey>) -> Option<i64> {
+ if name == "humn" { return None; }
+
+ let i = monkeys.iter().position(|m| m.name == name).unwrap();
+ match &monkeys[i].kind {
+ MonkeyType::Num(n) => Some(*n),
+ MonkeyType::Op(op) => {
+ let n1 = result_or_unknown(&op.m1, &monkeys)?;
+ let n2 = result_or_unknown(&op.m2, &monkeys)?;
+ Some(apply_op(n1, n2, op))
+ }
+ }
+}
+
+pub fn solve(monkeys: &Vec<Monkey>) -> i64 {
+ let i = monkeys.iter().position(|m| m.name == "root").unwrap();
+ if let MonkeyType::Op(op) = &monkeys[i].kind {
+ if let Some(n) = result_or_unknown(&op.m1, &monkeys) {
+ return solve_for_humn(&op.m2, n, monkeys);
+ } else {
+ if let Some(n) = result_or_unknown(&op.m2, &monkeys) {
+ return solve_for_humn(&op.m1, n, &monkeys);
+ } else { panic!("humn not found"); }
+ }
+ } else { panic!("root monkey is of type number"); }
+}
+
+fn main() {
+ let monkeys = read_monkeys_from_stdin();
+ println!("{}", solve(&monkeys));
+}
diff --git a/2022/21/common.rs b/2022/21/common.rs
@@ -0,0 +1,51 @@
+#[derive(Debug)]
+pub struct Operation {
+ pub m1: String,
+ pub m2: String,
+ pub op: char
+}
+
+#[derive(Debug)]
+pub enum MonkeyType {
+ Num(i64),
+ Op(Operation)
+}
+
+#[derive(Debug)]
+pub struct Monkey {
+ pub name: String,
+ pub kind: MonkeyType
+}
+
+pub fn read_monkeys_from_stdin() -> Vec<Monkey> {
+ let mut v = vec![];
+ let mut line = String::new();
+ while std::io::stdin().read_line(&mut line).unwrap() > 0 {
+ let name = String::from(&line[0..4]);
+ let monkey = match line.chars().nth(6).unwrap() {
+ '0'..='9' => {
+ let n = line[6..line.len()-1].parse::<i64>().unwrap();
+ Monkey { name, kind: MonkeyType::Num(n) }
+ },
+ _ => {
+ let m1 = String::from(&line[6..10]);
+ let m2 = String::from(&line[13..17]);
+ let op = Operation { m1, m2, op: line.chars().nth(11).unwrap() };
+ Monkey { name, kind: MonkeyType::Op(op) }
+ }
+ };
+ v.push(monkey);
+ line.clear();
+ }
+ v
+}
+
+pub fn apply_op(n1: i64, n2: i64, op: &Operation) -> i64 {
+ match op.op {
+ '+' => n1 + n2,
+ '-' => n1 - n2,
+ '*' => n1 * n2,
+ '/' => n1 / n2,
+ _ => panic!("invalid operator")
+ }
+}
diff --git a/2022/21/input b/2022/21/input
@@ -0,0 +1,2027 @@
+vbrb: chdt * bjwg
+fjbm: jwfq * rghb
+pqdf: sthb + lfsh
+mcpm: 13
+wgvm: 8
+ljtb: lhfz + swzh
+qbgq: wbtc * gvpc
+lmhg: bdms * mlnv
+nlfm: hfvj - snpz
+blfg: zsmt - qbvp
+vmdh: wttr + whjh
+dtnd: 3
+svmj: 2
+jctp: lbtn * qwsb
+gzwp: 12
+ngzm: 5
+bcsc: hrvn + jncv
+tdmr: 4
+lcls: rrbm * glgc
+hjzm: vdpq * scgm
+vwrp: 1
+wwtw: bjwc * sfvn
+lzzh: 5
+bjwc: qscl + qbbp
+rqfs: bqsl * dptf
+pmcg: spjd * frjb
+bmgr: 1
+qdpn: frpm * dlbd
+rhtp: 9
+qnhh: cwlj * rmsn
+qfwr: 2
+zscw: 3
+dwsr: dfmp - nvdj
+wpmz: wmzt + fgbg
+gglg: 5
+vdsh: nltw + whlp
+mdvl: 2
+qlrn: 4
+qgfr: rnsj / qncv
+twsd: zwzd * rqtc
+phwf: 9
+wbsd: bmvp + shwc
+hrvf: 3
+lrcz: 5
+zbnm: wtrw * hzcc
+qrjs: rjbz + tvzh
+mhmv: 5
+pjbd: 4
+hmtl: 3
+ghpf: rdgh * gfdr
+fjvq: rglj * rpsf
+jncv: hwrh * frqm
+qmwj: 4
+jlwr: 3
+bwjf: 2
+jbvp: 5
+dwsb: cbmq + frmc
+mhzp: 19
+ncsr: 3
+pbcg: bbmn * qrvw
+zpbj: rsrl + znqq
+qbvp: 3
+rjbz: dqcj * qqbd
+hslf: 3
+zjdf: ndjb * jqqh
+tvgm: lpwt * hhjr
+drjh: 2
+rqvn: jsjg + zvhj
+tfds: 3
+wtzb: prqq + ptrm
+cpqd: qlwc * hnsd
+jsgt: vnzw * bncf
+smbr: 6
+zqsc: hwgd * fzbq
+wwdv: 2
+crrg: mzwv - bdgc
+hrvn: tzgt * pswg
+mcdt: fmlp * zhpm
+bmrl: gwqj * pztj
+tgsc: nltt * mmbs
+mdjf: 4
+nwcb: 1
+qhzc: 3
+qgsn: 3
+fvsw: ndln + clbh
+pvwp: 3
+frsf: fslb - bnsh
+ftqs: 5
+mzjc: ndlv + dwsb
+hqhv: vdsh * pdnv
+rqjp: bhfs * qbjv
+mdpt: plgj + cjmw
+sgqb: 2
+vsgd: fhcm + nmnd
+jgsj: nfdt * lfjp
+jzrp: 2
+fmlp: 3
+gdhf: 5
+nwlt: qmqw * fdps
+wqjh: 2
+bcwb: dlrt + bhmj
+qblm: 3
+mbtq: 2
+wcgd: 17
+nwvl: 10
+pcdc: 2
+smrd: 4
+qvww: sgnf * hjrh
+qvhr: phjh * pjdp
+qrvw: cqsh + rhtg
+lqwj: 2
+snpz: fszc + fdhr
+hdrv: 2
+wmnp: 2
+fcgr: 2
+ljqd: 2
+ddsn: 5
+wlph: gsbv * scpf
+nfbj: rqfs * tdhp
+ztzh: mmrg * dmgg
+hltt: 2
+tztg: 4
+jvnc: 3
+htjt: jtfh / tztg
+vlzg: dqcg * cfdq
+zrsj: 3
+blrh: 5
+gsnm: dcgs * gjns
+fzzf: 9
+gfdr: wntj + cdpw
+tddv: rbpz * tclc
+gpnj: zfqd * gnwp
+prqq: jddp + qtdr
+rtdc: 7
+ftpp: 11
+bfgt: ptgv * dfdm
+rdgh: 2
+sbmf: 3
+mfpj: 2
+bmhj: mmnm * pphg
+mzmv: 4
+jrst: tjgd - mphq
+vbtl: cgtc * jnvg
+qrph: bdft * sttt
+chhc: 2
+clng: vlzg + nrgj
+gbst: jpbv * zrjs
+mwfs: dmsm * hpcm
+mglh: 2
+bplp: 2
+fdhr: 4
+fgdm: vlfd + qdcf
+cjht: qtzt + rvgq
+gpfn: mqvd / srpg
+qflz: wghm - mpqf
+nqdj: wsmm / wghp
+cslr: 2
+jhhw: tfqg / pmws
+gmrs: dgpn * tczr
+vzph: ftlc * smzf
+gfcl: hvjm * gzjb
+lghg: 3
+vjpt: 5
+ttjf: 3
+cfdq: qsdr + cwlr
+cnts: 19
+nlgl: 3
+rpsf: mtmg + bhld
+mznz: clqz * nhwz
+hvgl: qllb * qwrw
+smgz: 4
+dvbw: psfb + bdcr
+svzr: hnbd * gndz
+jrsd: gnsq + dmzs
+sdrp: qcmm + nlcz
+rjhc: fjdn + jdmz
+whjp: 4
+flhz: rgcf * jzrp
+rwzh: 5
+vfjj: 17
+gjtl: tzsr + tdtv
+qmbl: 3
+pwvj: pvwp * nbcd
+fngw: 11
+jqhc: 4
+lscz: 3
+fcsq: cvfs * rqqq
+nnjz: wnrn / blwc
+glfs: 5
+nvpw: nfjt * bsql
+jmfw: 5
+qrsw: gpfn + ghpf
+hzbg: 2
+wdfq: tqtd + pzjh
+cggn: 7
+fpdq: lsht + vmlb
+pwsd: 2
+rhlp: vvgm + ngzm
+pzjl: 7
+nbcd: 7
+bzch: 5
+cvbp: 7
+qgql: 5
+wwsq: dhzp / bhrr
+zwnq: 2
+jbwh: 11
+tdcp: 3
+zcfn: 10
+fwwz: 5
+grfb: lgvj * bclh
+dsqn: prdr - mzhs
+fpgn: lbfv + qhbr
+cwwt: 2
+lqmv: nsnt + vtps
+djjr: 3
+vvgm: 6
+jgzw: lcvv / djzm
+bznq: 9
+nlwj: 6
+nzvc: 7
+nrjd: 5
+mnff: 2
+nstp: 5
+sbcc: 9
+tnpf: nbdd * vbhz
+zwtt: 2
+jwmj: 11
+njsr: 20
+phjh: 5
+szrn: bgqj / mbtq
+ccvw: rthp * bnbv
+whjh: 3
+fzsw: bgct * vbrb
+lhfz: 3
+rsqz: mmtl + mhnl
+gphw: pbfr + lcrw
+qmqn: ggst / lfzg
+mmln: nqrc + sjhq
+frjb: ctff + cjzh
+sqbd: wbdl + cncc
+mjtn: hzwf + wrzp
+zwtw: 2
+rjrt: 2
+wrwb: 4
+gwrr: 8
+zwnj: zdsn * zvsw
+pmqq: 3
+jzlf: 7
+vvpn: fvsw + dzgp
+gbjm: jcnw / lzwb
+mwwv: 2
+ftsp: 4
+ftgc: 5
+hgsf: splb * cvpd
+cdjr: 4
+btrz: 3
+hnsd: rjqm + stmg
+lhsz: fsqj + mznz
+jpgr: thpr / ltln
+zqnr: 5
+qzsj: nlwj + mglq
+nsrt: bhqg * ldtb
+brnc: bspd * gnnd
+llcs: fbjj - ffrb
+pdpr: gzzw * rjhg
+lcnf: 5
+gndz: 15
+zmmn: jspj * bdhm
+plft: 3
+zjlw: qdjp * qnhm
+lhhv: rhzv * hmtp
+jhrj: 5
+fdzt: glfh + zcfn
+gmvj: frtc + gmnn
+wnqs: sqsf + gbdt
+qdnw: 14
+vbmj: nrmn * bgtp
+ptnw: 2
+zlhb: 5
+rsbn: 5
+qhbr: 20
+qnhm: 2
+gghs: lbjd + mrtm
+nblh: 5
+vmmr: 3
+qscg: wqjh * bcwb
+rlbs: vqwj * qnhp
+bncf: 4
+ttfm: 18
+tqbs: 2
+nlzh: wpmz + hwvj
+bvbm: 17
+lcvv: pqqr * szfn
+smnb: jmvt * vtsq
+mwqj: 3
+dwcs: 3
+nvrt: wbjs + zmgg
+dlbd: rjzn + tlpl
+dgvj: sqcf * dctd
+vplt: swcp * ssdb
+dbhd: pqcq * jbww
+hpfg: brwb * dtnd
+cbws: 3
+lsht: gnsp * dvrw
+lqdt: dsqn / cspc
+nqqh: gzcc - fzww
+tlwf: 2
+vpgs: 1
+tqjf: 4
+hwfn: gwwp + lvjt
+hszm: pqgm + bgfc
+hdcc: gghs + wpsm
+hwch: 5
+mlvt: 6
+nfjt: 3
+ccsf: 14
+nblb: 5
+gbtr: phtb * nqqf
+qscw: 2
+cszf: 6
+rvjb: 3
+smhp: 2
+btgr: rszj + pldr
+jrbm: trhv / wprj
+vdpq: 6
+cbvz: 3
+qfmp: 9
+qnmq: 4
+lvrf: ptsq + hvdh
+stlz: 7
+lptg: 2
+wrgg: 2
+nwwl: 7
+ccfq: lzsq - vbdm
+sspj: 11
+wzwg: 3
+frfb: 3
+pfpj: tddv + gvhp
+zzdg: 4
+dzjn: pnnb + ndbv
+ltpc: 5
+htwc: 2
+mpbf: 2
+ntvh: 5
+bwsg: 4
+zbps: 14
+nltt: hdrv + mzsv
+cnvw: 2
+fqmj: 2
+psfb: hzbg * mhsf
+wsmr: 2
+njvh: 11
+bpnp: tqbs * bwsg
+slfj: zcnl * fwwz
+blsh: 2
+dfdm: hvgl + hphc
+cncs: tfds + gvbd
+jzrs: hgsf + wgsd
+ndbv: mhsj * npjp
+tbzm: bnwt * fbgq
+wjzg: dqtw + fgsj
+bbmc: jmfw + bhtp
+drjd: qvzd * bfts
+bnqh: 4
+bfbp: 6
+frcr: cvbw + qqgf
+cfsc: drgr * mvsc
+mmcv: 2
+rlvj: dhdm + lhhv
+qvdf: 6
+vjfd: 2
+wlzb: pslg * qjwm
+ngpn: cbpz / fcgr
+lchm: 3
+ttjh: 3
+bjwg: mfcf + vvpn
+hhtw: htwc * hrsh
+rqdj: fmqd + mztg
+dnft: vqnj / fcnc
+dnsq: 2
+mlnv: 8
+bqdc: cvbp + ltzz
+pfww: sjww + fsnd
+vvhp: 19
+qjwm: 3
+zltt: 2
+srpg: 2
+cnrp: fwzr + qmhg
+thpr: ztls * ptmg
+qlwc: 2
+gmnn: wmmb * ntvz
+wghp: 2
+bnwt: 2
+mztg: smnb + jtdr
+ljzb: 11
+ttjw: clfn * mhjt
+psvd: zjdf + fhnr
+nmgh: 5
+gcnb: dsrj - hzdw
+rrgq: 5
+rjhg: hplr - zphz
+plgj: ttls * tdmd
+fbzt: hqwv + rllf
+wgtw: 2
+vnrn: srbg * sqbd
+hcnq: qvww * pdww
+tqdb: dcqq - nwcb
+znmv: 6
+bvvf: 2
+gchm: 14
+nsrp: fpdq * wrjb
+zfcb: wbpf + slfj
+cbnl: mddl + qfsd
+rlmf: 13
+nfsp: fgpn + tbbp
+fdgc: 11
+zwzd: gsvf + mnml
+jngd: dflt * zcgs
+tdch: 6
+qfrn: 3
+dwnc: jphm * htdw
+vlfd: vfzq * pvwd
+gfwh: 2
+fbdd: 19
+jfbz: 5
+gfwl: dtqd + lgrv
+cbcl: 2
+bcqp: qrtj + mtqj
+dmvb: wnth + wgtw
+bwsw: mmln * gmnp
+hhmc: lzqs - tmlw
+bnsm: 4
+rzvm: 7
+zctj: qgsn * qstr
+gdqd: clnq / vfwc
+hzdb: 5
+wbpf: bgzz + hjzm
+hrwf: 5
+ptsq: nbqf + mblc
+bwdz: 1
+cbhp: 5
+sgtr: bgpt + fgfh
+rgcf: cmzt - zwtv
+znls: crlb + rfqj
+djzm: 2
+rcdb: 1
+scpf: 11
+bdgc: 1
+jnct: 5
+hplr: hbmb / pqrw
+dprz: 11
+pnnz: 4
+brvt: svzr + qtbt
+gchp: 1
+pmnh: gscv * cmqc
+mlrh: fjct * zgrh
+qfnj: 13
+vfrz: 10
+qrmb: 3
+lcmn: mdzq * fpzc
+mprz: dtbr + rrgq
+fpqf: 2
+tbnm: 4
+dbgr: lcmn + dnjz
+wntj: dwcs * dnft
+rhgc: 2
+bzhw: sgll * nbgz
+dgpn: 4
+qjzh: mllc / wjdv
+vmmf: qmqn - qdpn
+bjzp: swvv - bmnl
+bqhr: psgm + jsdm
+tqqv: 2
+jcqs: jnps + rlbs
+jbww: 3
+hhwc: pbgp * rtnj
+dmsm: pqdf / pgpd
+gczb: gchw - bqnb
+hmww: 5
+dqnb: 18
+chgf: cpgb / cczr
+zmvl: 7
+rwbs: fcff + mjqv
+dprj: 3
+dsjw: 2
+qmpn: humn - twsd
+dhvg: 6
+fgmg: jbtg * qfwr
+chqt: mtss * gtnj
+clbh: lcnm * dbhd
+gdbh: 18
+sqcf: 2
+bbzc: 3
+dhdm: 1
+qwpv: htjt + qrph
+qbzs: thjq + mzbj
+nglc: srbp - tbzd
+brfg: 5
+mlst: lbsv * qjsc
+vqsq: 3
+cfmz: vmgd + lqmv
+plhz: sbjb + qvdf
+ddgf: 3
+bhjp: 2
+wlwg: 4
+hjrj: 4
+cbgr: zstg * ffjj
+rzrj: mcdt - fzzf
+trfc: 1
+nbcg: 2
+zrzq: wgvm * ttdj
+vslc: zbnd / zqfr
+fppw: bjrg * qrjs
+ghqj: mzjc + sjjh
+bjrg: dfcm / ftsp
+fpdn: 2
+fnll: cfsc - hpfg
+fcnc: 4
+hmtp: 3
+zsjj: 9
+cwlj: 3
+dtbr: bztm * qtlg
+vmrb: mmtb * cgwr
+lmmc: qmzf * hqlp
+drfp: 3
+nfdt: swnq + gmrn
+qzft: 17
+hfvj: vwzt * rswp
+rcsz: sphh * mglh
+bmnl: bsjp + mhgl
+qstr: 2
+rllf: htsm * wmwj
+hwvj: 6
+wvtb: lvqw + rbrt
+mllc: bcql - zwnj
+frpm: zbps + qpwd
+bhvq: 4
+mwmc: 2
+zwtv: 8
+rglj: 3
+bwhj: jvbr * dmwm
+gztn: 1
+nbdd: rnpz + zdvz
+pmws: 2
+jtnj: 3
+zgds: 10
+vbww: 2
+rmqg: fdjc * bwsw
+hfhj: mjsz + rhwv
+frnq: 9
+wmmb: 2
+tsvc: 9
+swvv: drjh * hsbq
+sthb: tzhb + trrt
+rhgr: 1
+mpfn: jpgr + czzc
+rtgs: 5
+gsbv: 5
+cgwr: 5
+lvmd: 3
+nfrw: cszf + vzht
+vtsq: hlhf / zjtg
+ngzw: 2
+mhmm: 9
+lhzt: 6
+lnnq: 8
+mjpv: pvds * wnvh
+hzwf: zmrl * wlwg
+pqwb: 4
+qrzf: wlzb + ccgs
+bcns: 1
+tbsw: vcnz + tvgm
+fhzl: pcmj * lghd
+vmbr: qmbt + vtwd
+gmrn: ttfm + lltd
+mdzq: 2
+qfll: 9
+jbtg: 13
+ccgs: 11
+mcnw: rpzm * tgsg
+rrwt: qzqs + qfmp
+stwh: 8
+zdqq: tglb * nscl
+tftw: gchm + qzft
+cjtm: 1
+fvdb: rqsp + jjnc
+bbbj: 4
+hsbq: lvvl - jflw
+zbdc: lnrw + zflr
+dnzl: 3
+gnjj: 2
+ffmh: 3
+hvhf: 2
+fmqd: 19
+jttj: jlwr * psgc
+bcwh: dcff + rqjp
+jlfc: bnfv - dbhw
+dzgp: 18
+fszb: 2
+rllv: zwbb * dbth
+prdr: vjnb + fdcc
+jrvp: mwzr + mhmm
+gtbc: dcrr * tmww
+nvvd: 4
+mbtd: 6
+ctff: 2
+ddwp: 3
+hnbd: 3
+mtms: qgmw + cjgj
+nnjb: 4
+bsvj: cnts - pwsd
+lfjp: 2
+hjjh: qscg / fdnm
+mtnb: zgzd * rwqm
+dlrt: qblm * jzlf
+vtps: mjnn + bzhw
+fldd: jqbv + rcql
+pfsh: vhcm * frfb
+lljh: 4
+wpsm: ctgv + lthh
+lqrz: blsh * qrmb
+blhf: djjr * bhwl
+glzq: 5
+nsnt: ggsf - mdpt
+ndjb: 8
+hjcq: tmng * nprw
+zflr: mjwn + rrdz
+jmtd: 3
+bhld: 13
+dsnm: 2
+hvdh: 3
+fcff: 8
+qdws: fgdm - fmlr
+nqrc: 5
+bcql: whcs / lqpp
+fvpn: tdcp + vrhl
+gnwd: 1
+hcfz: jnct * ntln
+jtdc: rncr + wgll
+fjbn: pwfg + vrfc
+scgm: 3
+tfqg: fznl * zczg
+dtnp: 13
+mlfw: lbrq * tvtf
+mtss: 4
+mjqv: 5
+zrjs: 4
+gzsm: hnwr * bpws
+whmv: psvd * qqrd
+tmhm: gtvn * cswd
+qpjt: chgf * cvmp
+qvqs: 4
+bjcf: 2
+wgsd: 8
+tdmd: 4
+dptf: 2
+pqpw: 3
+lhcv: ntdq + fbfm
+rjqn: 3
+vdtc: 3
+tzsr: svmj * qflz
+nmgf: 3
+jqbv: tlsb / sdgp
+pnnb: hdwd * wqvr
+frms: 2
+cdwd: 2
+jdpn: nmhr / snzf
+jphw: 2
+wgjw: 4
+cnsm: 4
+cgtc: 2
+cvbw: pcnd + vslc
+cjgj: djdz - szjs
+zqfr: 2
+mcfb: 13
+nbqf: gpnj - bvbm
+fgsj: nnjb * zjjw
+rqjh: rnbh * lstr
+slzr: qrsw + mwfs
+hwrh: 4
+fnrn: hjcq * wvsd
+thvj: bnsm + cwpb
+tmvt: 6
+jssj: cqfw * cdfs
+cmqc: 2
+zczg: sgdg + wnsr
+tdtz: 3
+nvtp: vbtl * zrqs
+vlww: 2
+wgll: 2
+twdw: lddq - tzqg
+dcmw: 2
+ztfs: pcgf + qpjj
+ztls: lsfn * jfnf
+htnc: cqld - vnms
+dqtw: rccb - fptp
+vbhz: zrhg * vmbr
+bdhm: 5
+gbwq: 2
+wvmt: rvjb * jrst
+dmdn: jlwf * tngp
+rfqj: vqsq * mwqj
+fznb: 3
+gqwg: 8
+jcsg: hrvf * cbws
+jdmz: wvtb * rzvm
+qmbt: 5
+fbrv: ztfs + crrg
+tvhf: chrm * clng
+wmhs: 3
+tvjr: nzqn * ppzv
+pdww: vzjg + djhf
+vdsq: 5
+ljnh: 4
+bztt: 1
+flrt: fslr * lcgf
+vhcm: cqrc * bdsb
+cmzt: rrch + cqbl
+jmvt: 2
+qsdr: llvs * gdqm
+pjdp: nrjd * pntq
+rqqq: 3
+vsnc: hqcb * jjhv
+mhjb: 2
+vhnm: 3
+sddr: hlbq * qvqd
+qvpp: phwf + fjdl
+sdgp: 5
+tssr: 5
+btmc: qpbn * zwrz
+fdjc: cqhs - gchp
+bvhl: mbgm * lvdm
+cjvf: 4
+wmfl: bzmm * dqcq
+mgqb: 5
+cpgb: rnnf * gtbc
+rwgh: gbld + bpcd
+qllb: jqsj * dpdw
+stht: 2
+spvw: sbmf * chgz
+fbfm: dvbw * zmvl
+cqld: rwtt * rfmr
+rrfr: 1
+htdw: hgmc / pzjl
+lvqw: 3
+tvms: jrbc * vqnp
+pppn: 3
+whzm: 2
+hwfz: zctj + vwrp
+nzqn: fcbr * wrwb
+jhrd: 2
+vjqg: 2
+gnnd: 2
+smcs: nhnm + hzdb
+pcgf: 10
+ngzt: vzcf * cnvw
+pvbp: rbhl * qsmf
+zftm: mlpj + jcsg
+vrjv: ccvq * rtmc
+pfhl: bsvj + rgjw
+plzw: 5
+nhpj: gsvq + dtnp
+rwff: 3
+tngp: 5
+qpvz: 1
+cbmq: vlfl * cbvz
+qncm: 5
+fcbz: trrr * cdnj
+blvm: wmpz + lvgp
+gdvv: cdjr * vnhg
+qqmp: dqlz + bqvw
+zdbr: vfrz + bznq
+jjnc: 4
+sjww: lddw * ddgf
+jjhv: hcdb / rbgd
+lwnt: 5
+sjvz: zfpq + stzq
+lsvn: jgzw * pjbr
+csfc: wmfl * dfbg
+jdpd: 16
+bbdr: 2
+fcbr: 4
+ptmg: ssnj * pmtp
+rfmr: 4
+szwb: 7
+wbdl: ddtn / tshm
+smzf: wdzb + ttjw
+ntcq: hcnq / mpbg
+dsrj: jrwv * mmcj
+stwg: fflp * rblw
+sjmp: 3
+wbbq: qmjd * prrt
+zscz: 2
+ppzv: jlmn / cjpr
+slfw: 1
+dfvf: gdqd * gtfw
+vdsf: rvjh * htzf
+zhzd: fpdd + rtdc
+pmtp: 7
+gqtg: 6
+vmmc: lscz + zsdz
+vhtj: 3
+vjlf: nwwl + cbnl
+wnvg: 10
+rfzh: dmdn + gwrz
+qpbb: 2
+wmwj: 16
+mwgh: jhhw * rdfn
+qpbn: 2
+swnq: qwpv / hgbw
+bdtq: 4
+gbld: 12
+bmwp: 7
+hpcm: 2
+pzrg: mcnw / hpgr
+sjbl: rzrj - rnrs
+csch: 5
+wttr: 18
+hplm: 3
+qnnf: dhvg * vdqb
+lcgf: gdhf + zgds
+qhwg: 4
+dqcg: 3
+dmwr: ngvv * mhmv
+btcb: 5
+qscl: qfjs * mnss
+fsbj: pqsm + gljn
+lstr: zscw + mrds
+gzzw: 2
+wmzt: phbv + crgl
+dhhn: sddn * ljnh
+vqnj: nzvc + jnfm
+gvbd: 4
+llvs: 2
+cfbc: 5
+qwsb: 11
+bslc: bpnp + flms
+lvdm: 10
+lbtn: 2
+frmc: jcpw - trfc
+dpdw: nhnc * wqtt
+gjcw: 3
+whlp: fgmg + pwvj
+qlnm: lsls * qcqq
+zcgs: 2
+rvgq: 4
+lddw: cbnb * ptnw
+wqtt: 3
+vvlv: 1
+mhjt: 5
+dflt: zjbv * tzjz
+rwtt: 9
+ddlb: npcw + lchm
+vqnp: 2
+sbvw: pqsz + jllj
+jhsh: vzph * lvsf
+mchc: hbrj + fvdb
+hwgd: 4
+tlvn: 4
+mhzd: nsch * vmmr
+rpzn: 9
+zgrv: wnbq + jrsd
+wbtc: fvjb * nrsc
+rcql: wlbf - nsrt
+qlcw: 3
+rbrt: 4
+ncsw: 8
+hwqq: 5
+fdnm: 2
+sczc: 2
+htzf: 2
+lvrh: vmdn * wlbc
+spwr: 2
+jwdm: 2
+pfhn: bbbj * fhzl
+zgpc: cncs * btrz
+qncv: 5
+pzgf: 3
+lvbs: hlbb + fpns
+bgqj: sdrp * mdvl
+nqpj: bplz * cnrp
+lvgp: ftqs * rjrt
+crgl: glfs * zdlc
+vjmp: 5
+rmms: fnll - sdhs
+qtbt: fpdn * dswc
+tclc: 11
+qpwd: jrrp + tvsq
+tlpl: qnnf / hgnb
+vtvf: 2
+jzvg: 4
+wnth: 5
+hbrj: 12
+mmnm: 5
+zrhg: 3
+tbzd: zppw * mlfw
+nhcb: 14
+jzjg: 3
+cnlm: ccvw - jgqh
+lmnj: 1
+ghtq: dclw * hvfd
+fsnd: 4
+mfmj: 12
+stsm: 9
+jvcb: 2
+grrl: 2
+rzrp: 5
+pjbr: 3
+npbj: sbvw + sbvj
+npjp: 5
+gfmq: rcsz + njmj
+gsvq: 8
+lvvl: mpfn / rhtp
+dcff: 6
+fgfh: hwqb - dgjb
+cljs: vflp + cdbc
+fdps: 3
+tvgc: 3
+pqsz: cbhp * gzcz
+pvds: 2
+bhtp: 2
+sjph: 8
+wpwd: hdzc * rsqz
+crth: vvzf - smhp
+tcfd: rgjv + hnrs
+mvpm: vjps * fszs
+zpgq: lfqs * mbtd
+tmng: 20
+czdb: 4
+hqlp: 3
+tdbs: hhhj + cjws
+swcp: 3
+fdmv: pwqp * hwqq
+tzgt: 3
+sfqb: 1
+ltln: 5
+wnvh: jfqn * zllr
+jzmw: wbbq + nqpj
+chrm: 5
+mwbc: jrld * ldql
+fldv: vfct + tggr
+wdnh: dzhl * gbrf
+zsdz: qrwt * bplp
+rmsn: rmqg - nqdj
+dsjc: lcwv * zpgg
+bhmj: sdwc * hthn
+fbgq: zqnr * fdgc
+zqfb: qscw * jfbz
+hphc: vjmp * ffld
+tmwt: 5
+nvbj: 9
+fvjb: 7
+qpjj: nhpj * bssf
+szwq: dhmn * qgql
+jgwc: ghcp / bpjn
+prdz: jtdc * jlfc
+jjmb: 17
+fjtw: 2
+plsg: 3
+tgqf: 8
+bljd: 8
+gdqm: 5
+tsvl: vdsg * ngms
+qsbv: ffjd * vfrl
+rpzm: 3
+qdjp: 13
+mqvd: snlq * dqjd
+hlbb: jwdm * ldtd
+gdzr: jrbm + rctq
+fmlr: 5
+fdbv: 3
+cncc: 20
+vtwn: 9
+qmqw: ndwj + gwrr
+zvhw: zczv * lpfl
+fqhj: lhsz * jbrr
+cdbc: mrjw * sncr
+vzcf: 4
+bvsp: 3
+mhgl: vdnb * plzw
+qdcf: vvhp + dqnb
+stmg: bgvt * gzjm
+tggr: fvpn * fsvd
+lwdt: vrjv + rmsl
+qmvj: wwsq + phtm
+nmhr: hlsp + pplj
+qmdh: 3
+zhmz: bncj * bslc
+bgtt: qsbv / fdcm
+wqnm: brnc / njrw
+shwc: lmhg + dwnc
+gljn: nzlb * rwnd
+gwbf: jphw * dsmm
+lccq: 9
+mvsc: cjtm + flhz
+dqlz: 2
+tczr: 2
+jnps: 3
+vprt: rhfb * cggn
+dbbw: 3
+nhnc: 8
+ztdf: 2
+nlcz: pfww + pvnb
+vrhl: 4
+ctgv: 2
+lszf: zwnq * dsmb
+drfh: dzjn * qlbh
+mqgn: 16
+zppw: 2
+wgnl: qfll * qfnj
+sbvj: qzsj + hhwc
+jftb: 4
+ntlq: 12
+thjq: fbzt * sgcq
+zwbb: 3
+fslb: rpdc * tmcs
+vvvc: hcfz + tzgw
+mjwn: ldlw - gfwl
+jnfm: jhrj + bgmg
+tmcs: 2
+szjs: 13
+gwrz: 18
+vcjn: 8
+jfwb: cbrg * vjqg
+ldtb: 12
+zwmg: 5
+lrcs: 3
+zrqs: 2
+dsvp: 3
+gvpc: 2
+bfts: 11
+prpq: 3
+fszc: lhzt + lqqc
+rtmc: 12
+tglb: 7
+qlbh: 2
+gdcc: frcr / cbcl
+fptp: ttww * lzzh
+dfbg: 4
+cdnj: 2
+dsmm: bfbp * zblh
+vflp: rqdj - hmht
+zlml: 2
+qqrd: mqzv + nlzh
+tlsb: sggt - dwgc
+vjnb: tqqv * zjlw
+ndns: qqbc * lrcz
+hgmc: plhz * sjvz
+bdft: blvm * jftb
+nnwl: 5
+tgpb: ztjb * ngzw
+lcjj: 2
+cswd: 7
+vfzq: 3
+tvtf: 2
+jszt: zzdg * zwrj
+pmjb: hnvd + fdzt
+gbdw: 8
+cfsf: ztzh + cstb
+cltq: 2
+twmc: rhgr + wgjv
+tdbg: 2
+gtgm: 3
+mrds: 4
+gvjc: 2
+jphm: 3
+hdwd: 2
+trpw: grwq * jzcq
+jrdf: 2
+zsmt: 11
+vwzt: 2
+nbgz: 2
+hfvh: 2
+ttww: 3
+rcbw: rrvm * dhcl
+zlzr: 2
+cqhs: wgjw * fngj
+ztjb: vvvc * jrdf
+qwrw: zbqs + nbwz
+vnms: 8
+cqsh: 1
+fjdl: 13
+humn: 909
+zbnd: qqmp * vqzl
+fjct: 2
+rbfl: swnd + fwqb
+nltw: lljh * bqnt
+cvjc: pdgc - mjqq
+ftdh: 3
+pqwg: 10
+cstb: bpcv * stht
+hlbq: blfg + ddsn
+ndlv: 2
+hzcc: 11
+ggsf: msgs * rpqb
+pgzz: 2
+flnw: 5
+zdsn: 7
+hjrh: 6
+dgzf: fzsw * wgnt
+mphq: 1
+mjrq: vlcs * mnff
+jwvv: 2
+wgnt: grrl * gdvv
+drvc: 5
+bhdv: 3
+ndln: qqfj * szwb
+lcmf: cdzd + hblw
+hltf: lcmf * lrcs
+bczb: 2
+dctd: vpgs + nwvl
+ftzb: bwbq * qdnw
+hnpm: pfsh / rjqn
+vdsg: ccfq * cnsm
+jfzt: bjcf + bqhr
+ddtn: mwwv * lvrf
+tfvq: 18
+jspj: 5
+nfjv: 4
+gwqj: 15
+vfvh: 2
+djdz: lvrh - drjd
+rjnp: dbbw * jtgl
+wrjb: 5
+hgdc: 3
+wprj: 2
+czmg: rvvw * qgbn
+wsjr: zqfh * qhwg
+vmgd: qmpn / qncm
+vmlb: 2
+cwlr: vplt * prpq
+jvbr: 2
+hgbw: 2
+nlpg: nblh * qchf
+mfcf: mzmv * zbnm
+mqzv: bcns + sdhq
+vzjg: rppf * vhjr
+zmqf: 10
+sjjh: 4
+mblc: bmgr + tmvt
+mglq: 13
+fcwg: 3
+vzht: 1
+pdnv: dgzf + wwtw
+bwpn: 2
+vqpz: 14
+qwbt: 4
+vbzd: zdbm / gfcl
+cfdl: drvc + slfw
+gcph: 2
+jcgf: tdbs / mjpv
+phzw: zltt * plft
+hjsl: 5
+sggl: 4
+ghcp: hwfn * gnjj
+hvst: 3
+mzhs: ftpp * pfrj
+rpqb: 2
+gplz: 6
+pswg: 3
+nmmf: prmp + hnpm
+pqrw: 2
+rcjh: zpdf * dprj
+mddl: gmrs - zbns
+grwq: tftw * hgbb
+znzc: njsr * bnqh
+ssdb: 3
+bztm: 4
+gmhb: 8
+vhnl: 2
+dlsv: 5
+bclh: 2
+hgbb: 3
+fflp: 5
+nlpr: znnm * tlfm
+tbrs: gmdn * ttjh
+vnhf: tvjr / nfjv
+nbrr: 6
+prmp: 4
+jbrr: 3
+qtzt: 3
+bvwj: 7
+bqjn: hmww + whcp
+vqdb: 4
+gvwp: bmsr + vbmj
+qvzd: 2
+mrjw: 5
+nrgj: tbpv * vmrb
+jrbc: 8
+ldql: 3
+rdfn: 2
+dspw: 2
+snzf: 2
+fszs: cgvz * vflw
+wtlf: dwsr - jbmb
+rwqm: qdws * hchc
+chgz: fcsq + hwql
+dsmb: dgdw + wmnp
+jrld: 3
+rrst: zwmg + bljd
+qhwt: bcnh - fdmv
+fdcm: 3
+lbjd: nvbj + gbtr
+wqfs: 5
+tdjn: 3
+rbcz: pjgc / llcs
+bnfv: rqdl / zlzr
+hpvh: 9
+zgrh: 3
+qqbd: 3
+lbtt: 14
+mpqf: 1
+dmgg: 5
+wlbc: 4
+sdhs: mcnt * bqnh
+sfvn: rrwt * gvmt
+fngj: 2
+pntq: dlsd + bdtq
+jtfh: pmnh * sldv
+pqqr: 2
+fznl: 2
+gvfh: fbdd + gbst
+tdtv: vjpt * vnrn
+cnzs: 3
+fvcs: 7
+bbmn: zbdc + grts
+jwqm: 7
+wsmm: rblh / sqds
+wrtj: rnwc * djpf
+gscv: sgcg + vpmt
+pcjv: 2
+vrnp: bqjn + sthl
+sllv: 4
+dqcq: 3
+bbmr: 3
+pjzg: 4
+jnvg: gztn + tbrs
+pphg: mlrh + lmnj
+rvvw: ddlb + tqdb
+zllr: 2
+cnbj: 4
+qhjg: 6
+qclq: 5
+flqb: bzgh + gvwp
+rpts: 17
+qtdr: pfhn + ssht
+sgcg: dfdq * wghv
+hnwr: 2
+szfn: ccsf + sfpl
+dnjz: cbzf - hrwf
+nblf: phwr * cjvf
+hgnb: 2
+whcs: vzfg + blbq
+fprq: ddnd * scqp
+hqpl: zmmn * mswb
+lcnm: 2
+cczr: 2
+wflp: 2
+zppm: 6
+mdsf: vhmd * wtjj
+lfqs: sfqb + wgnl
+fwqb: lhcz + zzqb
+glff: cvjc * frms
+zftt: bcsp + rcbp
+nswh: dmwr + bvhl
+mlpj: 4
+rbhl: 5
+jsqz: 5
+hlhf: dspw * mmrt
+dmgl: 4
+jcpw: 14
+zhpm: 13
+djpg: 3
+zjtg: 2
+cjbv: pcdc * bgtt
+tssm: zqqt + rlnr
+hmht: 9
+ggst: btgr + jgsj
+cbrg: qlnm + tsvc
+pldr: cpcv * bjzp
+hccw: 2
+hcvs: hjrj * sspj
+jqwb: 11
+zwrz: 13
+vmtz: hqhv + qcbf
+zstg: 6
+lqqc: 1
+pbfr: 1
+zdbm: gdbh * bvhr
+rjzn: qrjp * grvt
+hflp: 8
+chdt: 2
+fslr: 3
+njmj: dsjc + ghgb
+nvdj: 11
+lvsf: 3
+rgjw: chcr * qqrl
+vlfl: 4
+qsfd: fvcs * sllv
+fnzs: vfvh * jdpd
+zczv: 2
+gznc: 3
+brwb: 3
+wnrn: lvft * jctp
+cjmw: 1
+vhmd: 3
+root: wvvv + whqc
+qqfj: mbts + fbcs
+qzsn: 3
+zfpq: 5
+ndwj: znls + hdpr
+fjtt: 1
+lfnd: chrb * qlrr
+mqrc: wpwd + prdz
+mrtm: pjbd * cfdl
+tdhp: 3
+pwqp: tvgc * qfrn
+phqc: 2
+cdzd: qqwp * ghtq
+gnwp: 6
+zjbv: znmv + rcdb
+dfdq: 15
+cbzf: fvfd * pjgz
+cvpd: 3
+tlsz: 5
+rhwv: qpbb * lzqd
+ggmr: 3
+ntdq: qwzr + rqjh
+hhjr: pdpr - fnrn
+wdzb: jfzt / hvgd
+sbjd: ftrn + zvhw
+vgtz: 5
+vzfg: rdhn + brvt
+bztf: mhzd + gzwp
+lrjl: 19
+hblw: jfwb * qzqg
+csfd: npbj * fjtw
+grvt: 3
+sdwc: 4
+rhfb: 2
+vdlm: wqfg + wtvg
+gmnp: 4
+rtnj: 3
+ddfj: cwwt * gqtg
+vnhg: nthb + ljzb
+pfwr: gbwq + hjsl
+cjws: pzgf * hhmc
+jnrm: 4
+tcpp: ttjf * pjng
+scqp: lhcv + trpw
+ffjd: mjrq / smcs
+bssf: 2
+rgjv: 3
+nzlb: cllf * nzbt
+tvsq: qwbt * hwch
+tjgd: 8
+tmvw: 3
+qrtj: pmjb + tmhm
+bpcd: 1
+hjcg: bbdr + zhzd
+fpjt: ndqz * blhf
+zvsw: lszf + flrt
+wnbq: zppm * zbgj
+sphh: rslh * lvbs
+tshm: 2
+psgc: rtmp + dmgl
+hvfd: lgwl + btmc
+sdjp: qgfr - qvhr
+cdtc: 2
+jgfz: 1
+tlhq: ltpc * rhgc
+pslg: 3
+qchf: 5
+zphz: jhrd * wjzg
+rttj: fldd * bvvf
+cdbn: 9
+ldtd: plsg * bhjp
+tbbp: 3
+vhjr: 4
+gnsp: cpqd / dvnb
+glgc: smrd * bbzc
+hzft: lccq - qmnq
+ptgv: sgcs * rmms
+jddp: fwbj * jszt
+dmzs: 5
+wpmf: 20
+hvgd: 2
+hvjm: 2
+bqnt: dsmt * bvsp
+mhsj: 15
+nmrt: 2
+ngms: zpgq + hszm
+lzwb: 4
+lghd: 2
+lffp: 5
+ntvz: lsvn + bhvq
+dplj: vrnp * pcjv
+bdsb: 3
+lvrb: 2
+mswb: 2
+wbsn: tlqc * tdtz
+bclr: 7
+qrwt: 5
+qvqd: 19
+vtpg: 4
+whqc: vmtz * whmv
+mbhh: 5
+fsvd: tlsz * btjh
+tqsw: 2
+shcf: nglp * cfsf
+jpbv: mfpj * ccpn
+mdwm: 6
+zmrw: cljs + bztf
+tbpv: pvpc + vfjj
+zpdf: nfbj * lvmd
+vtls: 5
+jsdm: 1
+qbjv: gsnm + zsph
+tzgw: 1
+jvzb: 3
+srbg: 7
+fsqj: pfhl * cltq
+zjjw: tlhq + lqrz
+gzcc: twdw / nlgl
+qqrl: 2
+wqfg: 6
+qrjp: 5
+rccb: tqsw * zjpd
+qzqs: pqwg * zdbr
+bhqg: 4
+crlb: dcmw * lwnt
+vbvw: tbsw + qhwt
+dgjb: 16
+chrb: 4
+rwnd: 5
+rnnf: 2
+jflw: zhmz + wbsd
+qgmw: 3
+wvsd: wpmf - tdch
+zdvz: fjvq + mqrc
+nqqf: 3
+mwzw: 1
+gbrf: 3
+gwpw: 3
+sgcq: 4
+mhsf: 3
+ngvv: 5
+bsrh: jzrs * tlwf
+bqsl: 3
+rqwg: njvh * rlzg
+sgnf: jwcr * ncsr
+wvvv: mjtn * vbqq
+qcln: jbwh + bwdz
+ccpn: 3
+nzbn: gznc * ndns
+sfcc: 2
+fldt: 3
+hjtq: 2
+gzjm: 2
+zbns: 2
+pqgm: tjwh + rbsb
+zfqd: qmdh * ggmr
+hmfc: 11
+pzjh: tsvl - tnpf
+bzgh: gczb - mttv
+zbqs: qmcg * stwg
+mnss: 7
+pdtf: 4
+hrsh: dmvb + wslb
+ftrn: 6
+rqtc: zgpc / gtgm
+jfnf: 4
+gjns: jgwc + qnmq
+vflw: 2
+vfwc: 3
+crgg: mfmj * hjtq
+snlt: fdbv * szfq
+jqsb: mdsf / hplm
+ndqz: qrzf + gfbh
+rrvm: bmrl + sjbl
+dbmn: glff + qsgj
+lzhn: cdsn + sddr
+mlrz: 10
+ssnj: qsfd / czdb
+fllq: pdtf + fbnq
+jtgl: zjqd - hmzz
+ttls: nhcb + zsjj
+bpcv: twmc + bvwj
+njrw: 2
+psrq: vmmf * ttjn
+bgvt: 11
+tzjz: vbww + cfbc
+fqmb: 11
+frtc: bqdc - mrzt
+cvfs: 3
+mbts: 3
+nbwz: stwh * lwdt
+qqgf: hmmf / mtrg
+ldlw: rbcz * zpfb
+zjqd: 13
+rrdz: nlpg * bwpn
+dcgs: jzgf * dsjw
+jhhg: jrvp * hvhf
+hpgr: 4
+bvhr: jvcb * hqss
+clqz: 2
+fbnq: 4
+wslb: mwmc * jmtd
+wgjv: 5
+hwbc: 2
+fgpn: 10
+tlfm: vqpz / ztdf
+rppf: hwmt / cbst
+fbcs: 4
+qzqg: tgpb - nfsp
+jzcq: 3
+dsmt: 2
+bzmm: 2
+sqsf: 7
+lrcd: 17
+zpgg: 3
+qqzp: zmqf + gnwd
+fpzc: lcnf * vdsq
+ftlc: 2
+bgpt: 4
+fwbj: 4
+sthl: 4
+bqvw: 19
+lgrv: vtls * csch
+fhcm: 5
+blwc: 4
+cjpr: 3
+hdpr: 8
+lhcz: 9
+jgqh: sdjp * smbr
+rqdl: rlmf * phzw
+zpfb: 3
+bshj: 3
+zgsl: brfg + jqwb
+qtfz: pjbc * vgtz
+rsrl: gglg * pqtn
+ssht: 5
+dcrr: 13
+sgdg: 4
+rpdc: jtmm + zgsl
+fzww: wwdv * pdpw
+sdhq: pwjz * hslf
+fdwd: jvnc * mcpm
+gvhp: qctm - fpjt
+wghv: 5
+spjv: 2
+spwm: 2
+ntln: jqhc * hdqh
+fllp: 1
+fpns: crth * zlhb
+fbjj: 10
+mtqj: rrfr + spvw
+hthn: 2
+lpfl: 3
+bgfc: zllc / pztf
+rnbh: qjmg + drjf
+ntmp: rqwg + bmdv
+whcp: 4
+zhcb: 3
+sfpl: qhzc * hhqv
+trrr: 3
+jcjj: 5
+ddnd: 3
+tvdd: 3
+spjd: 10
+lthh: 5
+vbqq: 2
+qsgj: 1
+nscl: 3
+rtmp: 5
+trhv: 14
+rbgd: 3
+msgs: dhhn + dbgr
+stzq: 2
+npcw: 3
+mtpw: jwvv * chqt
+tzqg: pwqb + nvrt
+tvzh: lfnd * fqmj
+qnhp: 2
+cgvz: nmgh + vvlv
+zcwc: 4
+lsfn: vmdh + tqjf
+vmdn: blrh + rrst
+jsjg: 15
+blbq: qnhh - czmg
+sjhq: mgqb + rwff
+cdsn: spwm * bsrh
+dzhl: qvqs + sbcc
+nvjr: fpgn * pzjb
+nthb: vshh * vdgh
+srbp: vbvw / wflp
+mzbj: bcsc * rpsh
+swnd: vcjn + sjmp
+cdsw: jqwv * dlnt
+sgll: rbfl * smdh
+dfmp: gvfh * qwhz
+gvmt: qbgq + bcdr
+pcnd: tpvp * gcnb
+wqvr: 19
+hjcn: 7
+pqsm: nnwl + ntmp
+dhmn: pjzg * bwjf
+jbmb: wfmt * ftdh
+mqnq: 7
+qrcp: fszb * tdmr
+gfbh: tlvn * zscz
+bdcr: 1
+bwbw: tdbg * pqpw
+ftbn: ljqd * stlz
+qjsc: 2
+ggjq: 3
+lbfv: jbvp + qlrn
+pjng: 13
+qfjs: ntlq + rqvn
+lfzg: 3
+wjdv: 9
+vfrl: 3
+jrwv: 7
+pqcq: 4
+tlsn: lcjj * tgqf
+djfs: fjbm + zqsc
+gbdt: dvsf * nzlr
+lnrw: sndj + mprz
+lgvj: nlfm + sbjd
+wtvg: 1
+ghgb: nnjz * pnnz
+zqpv: 3
+gsvf: 4
+mnml: jttj + qspv
+qcmm: jcjj * cnbj
+rcbp: 1
+splb: 13
+wvrv: 3
+hprc: jzvg * qvpp
+cbnb: rlvj + fcbz
+mtmg: njgr + hdff
+rctq: 4
+jcnw: jgbr * hltt
+rthp: shcf * djfs
+bnsh: hmtl * qmbl
+qgbn: vjfd * nfrw
+fltw: lmmc + mwzw
+jrrp: 3
+nrsc: 5
+phtb: 9
+dvmc: nmrt * cnzs
+bgtp: 5
+pwfg: 3
+pvnb: tmwt * ntvh
+rghb: hsmq + brlg
+jgbr: hcvs / gfwh
+drwr: hfhj + nwlt
+phbv: 12
+mwzr: 2
+dhcl: 2
+pdgc: ddfj + zrzq
+mjnn: nnhg + slzr
+vpmt: fjbn - mchc
+jqsj: 4
+fjdn: tfvq * wvrv
+vcqn: 16
+pplj: zwtt * zqfb
+jsfl: 2
+hqss: tvms - dlsv
+qqbc: 2
+hwqb: cjht * nbnh
+gchw: spwr * qpdf
+phtm: qtzw + fppw
+lzsq: bcqp - ldlt
+zwrj: 2
+hhqv: 3
+sggt: sbrq * pfpj
+qclz: fngw + gvjc
+zfzl: 16
+fwzr: rjmw + mdwm
+dswc: mmcv * tssr
+clfn: 5
+vqbv: 12
+lbsv: cvjg + tcfd
+bnbv: wdfq * gwpw
+bsql: 3
+dcpf: qcln * hhtw
+bmvp: fldt * ftbn
+zblh: 2
+fgbg: jgfz + bclr
+fffz: 5
+vpns: rpzn * jfnn
+hhhj: bszp * lghg
+btjh: 4
+fqhn: 3
+rvjh: jjmb + vpns
+fdcc: gfmq * drfp
+zjpd: sggl * gnvv
+djhf: tcpp + mlst
+mmcj: 3
+hlsp: hpvh + rzrp
+fmtq: gwbf + jnrm
+vqzl: zfzl + mqgn
+bhfs: btcb + mpbf
+tpvp: qjpv + zftt
+bgct: 2
+lvft: 2
+rnsj: pbcg + flqb
+jlwf: 5
+ldlt: frsf * spjv
+chcr: 7
+pfrj: bbmc * pmqq
+nprw: 2
+cpcv: 2
+lsls: 4
+ccvq: phqc * mhzp
+qpbr: 4
+gnsq: vjlf - nbrr
+lmmd: 4
+rnrs: 7
+fsdg: 7
+grts: nqqh / lmmd
+lzqd: rbzz + bmwp
+swzh: mlvt + nstp
+dvnb: 2
+lgwl: nlpr - fcrs
+pvpc: hvst * pnbp
+nmnd: 11
+vzvz: 3
+bmdv: 1
+cvjg: 16
+hqwv: lqdt - jdpn
+bcsp: 7
+jwfq: fsbj - lbtt
+dzgf: jngd + jcqs
+vnzw: 4
+dqcj: gbdw + fqhn
+rpsh: 7
+vvzf: pppn * bhdv
+gzjb: 3
+vdgh: jssj + wqfs
+dfcm: qpbr * hjcn
+sbrq: 2
+hnvd: 4
+gtvn: gmhb + wmhs
+sndj: zftm * ffmh
+rrbm: wsjr + fbrv
+lpqs: qmwj + sgtr
+lpwt: jsfl + zcwc
+dlsd: 7
+rjqm: 1
+gttd: dvmc + hprc
+dtqd: bfnw + qvpf
+bwbq: vqdb + thvj
+cvmp: bwhj + qjzh
+gtnj: 2
+bhrr: 2
+hzdw: 4
+ssrb: 5
+fcrs: 6
+dbhw: 10
+qcbf: mtnb + bfgt
+bcdr: pmcg + qzpz
+cdpw: 4
+fvfd: hwfz * lptg
+drgr: 4
+bdms: 11
+rslh: 2
+hdzc: 3
+tqtd: dcpf * lzhn
+zdlc: 7
+lddq: tbnm * qmvj
+wtrw: 2
+nsch: 13
+ttjn: 4
+wrzp: cnlm / fcwg
+fhbr: 8
+dlnt: 7
+zllc: nsrp + zgrv
+mmrg: 3
+qtzw: vbzd - qclz
+hdff: 4
+lqpp: 2
+qtlg: tlsn + ggjq
+hdqh: 2
+ffrb: 3
+rhtg: vqbv / cdtc
+wmpz: 1
+mrzt: 5
+lmhb: 19
+zgzd: wbsn + zlsd
+sncr: hwbc + rwzh
+hmmf: lcls + psrq
+qfsd: bddw / ncsw
+rlnr: bwbw * srtj
+bncj: 5
+zzqb: zhcb + mwgh
+whhl: hltf / dsvp
+pnbp: 3
+vrfc: wdnh * vhnm
+cjzh: 4
+zvhj: 2
+mttv: sjph * vcqn
+mhtc: bczb * vhtj
+lmtp: rjhc + wrtj
+qpdf: hdcc + mvpm
+qjmg: wnqs / sfcc
+vcnz: zfcb + zmrw
+nhnm: 1
+dbth: 2
+wghm: sczc * cjbv
+mjqq: jzjg * sgqb
+hsmq: stsm * rwgh
+nhwz: chhc * qqzp
+bpws: 3
+vdnb: bzch * nblb
+bmtv: ljtb / cslr
+brlg: mtms / dsnm
+zjmj: rcbw + bmtv
+ppfn: vtvf * cdsw
+bqnb: vdsf + jhhg
+qmjd: 3
+mbgm: 3
+vjps: cdbn * lqwj
+qqwp: pfwr + vsgd
+sbjb: 5
+zsph: nblf + rhlp
+drjf: 12
+dmwm: bcwh - rcjh
+mhnl: gzsm * rllv
+clnq: fznb * wtzb
+cdfs: 2
+dhzp: rttj - fqhj
+fhnr: nvpw * mcfb
+lfsh: 19
+jllj: gttd - mlrz
+snlq: glzq * lrjl
+wfmt: 13
+rnpz: fjzj - grfb
+qbbp: jvlb + wvmt
+wnsr: 3
+bmsr: jwmj + lnnq
+rszj: frnq * hjjh
+zmrl: drfh / whzm
+dvrw: 3
+hqcb: htnc / smgz
+dclw: 3
+bgmg: mdjf * fllq
+szfq: 2
+lsdb: 6
+djpf: 2
+rbpz: gdcc - dfvf
+lzgl: rpts * qtln
+pgpd: 2
+qwzr: 2
+gcpb: 7
+lbrq: fldv - crgg
+cwpb: 15
+gwwp: 4
+jlmn: qlcw * wqnm
+qctm: nzbn * bmhj
+vpmg: wcgd * dplj
+wwjd: 2
+rfdr: 5
+cbpz: gcpb * fpqf
+dvsf: 3
+mgpl: rfdr * mhtc
+fzbq: tvhf / ssrb
+pjgz: dgvj / nbcg
+htsm: 2
+pcmj: 4
+mmbs: 7
+vlcs: ntcq / nzzs
+bhwl: 3
+pqtn: zqpv * qzsn
+jtdr: pzrg + pvbp
+hbmb: jcgf + vpmg
+tmlw: jzmw / zlml
+pvwd: 3
+qvvf: 5
+trrt: 1
+rbzz: wzwg * ngzt
+frqm: 8
+qvpf: fmtq + ghqj
+cqrc: qvvf + lsdb
+bszp: gmvj * vlww
+njgr: 2
+rblw: 5
+qlfb: dzgf * vzvz
+smdh: 4
+sqds: 2
+hwql: ftgc * flnw
+pjsm: 11
+tjwh: gjcw * wlph
+jtmm: 1
+vdqb: 3
+sttt: fffz * wrgg
+znnm: 3
+mzsv: 12
+mmtb: lmhb + bztt
+nbnh: 9
+hwmt: tgsc + wnvg
+frlc: pgzz + qhjg
+nnhg: rsbn * lzgl
+dgdw: gcph * mtpw
+qspv: 6
+tgsg: 12
+gnvv: 11
+zcnl: 7
+qtln: 2
+cqbl: gbjm * zwtw
+cbst: 6
+zqqt: gdzr + jhsh
+nzlr: 5
+tlqc: gjtl * zjmj
+rdhn: nglc * vhnl
+qcqq: 2
+nrmn: 3
+qlrr: 5
+rjmw: 1
+bfnw: gqwg + hmfc
+jfnn: 4
+qmzf: 2
+dqjd: 2
+ffld: whhl * bbmr
+nzbt: 5
+lzqs: cfmz * hqpl
+mmtl: 2
+ffjj: 3
+rblh: znzc + nvtp
+mzwv: qpvz + mqnq
+nglp: qtfz + ppfn
+qjpv: 5
+phwr: 3
+rlzg: 5
+cspc: jqsb + fllp
+mcnt: 2
+qsmf: 2
+rswp: jwqm * rhnb
+pbgp: 3
+cqfw: vprt + djpg
+qmnq: 2
+qmcg: 5
+zqfh: mwbc - vdtc
+czzc: qpjt + lqzh
+srtj: 6
+bpjn: 2
+jzgf: 3
+qmhg: 4
+mjsz: bjsp * lvrb
+qzpz: nvjr + dprz
+rhnb: 3
+tmww: 3
+vtwd: wsmr * jtnj
+gmdn: 2
+jwcr: 2
+zbgj: 3
+fjzj: vtwn * rjnp
+pwqb: drwr + qbzs
+rncr: 9
+wbjs: hjcg * rwbs
+jfqn: 3
+lltd: dnsq * gplz
+gtfw: 4
+pzjb: 2
+tzhb: dnzl + jvzb
+mpbg: 2
+bjsp: 3
+cllf: 2
+zmgg: vngp - jsgt
+mmrt: 11
+pjgc: vsnc * hccw
+pjbc: 5
+vqwj: lrcd - vtpg
+bplz: 3
+gzcz: 5
+bsjp: rtgs * szrn
+vfct: cbgr + qclq
+bgzz: 1
+jvlb: fltw * zdqq
+hnrs: nvvd * hgdc
+pwjz: 4
+vshh: 4
+qwhz: 3
+ttdj: 2
+dcqq: vdlm + mbhh
+rnwc: nmmf + snlt
+zlsd: tssm * vnhf
+lqzh: qlfb + ftzb
+vngp: lpqs - mhjb
+ptrm: qrcp + fnzs
+jqwv: 2
+pdpw: lmtp - hflp
+bqnh: 3
+lvjt: 3
+flms: rfzh * zrsj
+hcdb: wtlf * tmvw
+pztj: 2
+wlbf: fdwd * ngpn
+rrch: nmgf * ddwp
+hchc: 3
+sddn: 4
+ltzz: bshj * lffp
+psgm: 9
+sldv: 2
+bspd: fprq + tbzm
+fpdd: 4
+bcnh: jsqz * mgpl
+bddw: fqmb * fhbr
+dwgc: dbmn * vmmc
+jqqh: 9
+pztf: 3
+rqsp: tdjn * gphw
+sgcs: 3
+glfh: 3
+rmsl: csfc + zpbj
+znqq: nswh - pjsm
+wtjj: tvdd + whjp
+rhzv: 2
+lcwv: 3
+mtrg: 8
+nzzs: pqwb + wwjd
+prrt: csfd / cdwd
+hmzz: 2
+vbdm: fjtt + szwq
+lcrw: frlc - hfvh
+rbsb: fsdg * hzft
diff --git a/2022/21/test b/2022/21/test
@@ -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