From 72a9d740bf9d06b00b50c43a2e875b04c6d98444 Mon Sep 17 00:00:00 2001 From: Julien Dessaux Date: Thu, 21 Nov 2024 00:23:25 +0100 Subject: 2023-25 in haskell --- 2023/25-Snowverload/example | 13 + 2023/25-Snowverload/first.hs | 76 +++ 2023/25-Snowverload/input | 1256 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 1345 insertions(+) create mode 100644 2023/25-Snowverload/example create mode 100644 2023/25-Snowverload/first.hs create mode 100644 2023/25-Snowverload/input diff --git a/2023/25-Snowverload/example b/2023/25-Snowverload/example new file mode 100644 index 0000000..bbfda0b --- /dev/null +++ b/2023/25-Snowverload/example @@ -0,0 +1,13 @@ +jqt: rhn xhk nvd +rsh: frs pzl lsr +xhk: hfx +cmg: qnr nvd lhk bvb +rhn: xhk bvb hfx +bvb: xhk hfx +pzl: lsr hfx nvd +qnr: nvd +ntq: jqt hfx bvb xhk +nvd: lhk +lsr: lhk +rzs: qnr cmg lsr rsh +frs: qnr lhk lsr diff --git a/2023/25-Snowverload/first.hs b/2023/25-Snowverload/first.hs new file mode 100644 index 0000000..18063f2 --- /dev/null +++ b/2023/25-Snowverload/first.hs @@ -0,0 +1,76 @@ +-- requires cabal install --lib megaparsec parser-combinators heap vector fgl +-- very slow with runghc, use ghc -O3 -o first first.hs +module Main (main) where + +import Control.Applicative.Permutations +import Control.Monad (void, when) +import qualified Data.Char as C +import Data.Either +import Data.Function +import Data.Functor +import Data.Graph.Inductive +import qualified Data.Heap as H +import qualified Data.List as L +import qualified Data.Map as M +import Data.Maybe +import Data.Ratio +import qualified Data.Set as S +import Data.Tuple +import qualified Data.Vector as V +import qualified Data.Vector.Unboxed as VU +import Data.Void (Void) +import Text.Megaparsec +import Text.Megaparsec.Char + +import Debug.Trace + +exampleExpectedOutput = 54 + +type Input = M.Map String (S.Set String) + +type Parser = Parsec Void String + +parseLabel :: Parser String +parseLabel = some letterChar <* optional (char ':') <* optional hspace + +parseLine :: Parser (String, S.Set String) +parseLine = (,) <$> parseLabel + <*> (S.fromList <$> some parseLabel) + +parseInput' :: Parser Input +parseInput' = M.fromList <$> (some (parseLine <* eol) <* eof) + +parseInput :: String -> IO Input +parseInput filename = do + input <- readFile filename + case runParser parseInput' filename input of + Left bundle -> error $ errorBundlePretty bundle + Right input' -> return input' + +compute :: Input -> Int +compute input = size1 * (order g - size1) + where + n = L.nub $ M.keys input ++ (S.elems . S.unions $ M.elems input) + e = [(from, to) | (from, tos) <- M.assocs input, to <- S.elems tos] + n' = zip n [1..] + e' = map (\(from, to) -> (fromJust $ L.lookup from n', fromJust $ L.lookup to n', from ++ "-" ++ to)) e + g :: Gr String String + g = undir $ mkGraph (map swap n') e' + size1 = length group1 + group1 = compute' (nodes g) + -- Karger's algorithm to compute a minimum cut + -- implementation from https://github.com/jrp2014/AoC2023/blob/main/Day25/Day25.hs#L60 + compute' :: [Node] -> [Node] + compute' s | sum (map count s) == 3 = s + | otherwise = compute' (L.delete (L.maximumBy (compare `on` count) s) s) + where + count :: Node -> Int + count ns = length $ suc g ns L.\\ s + +main :: IO () +main = do + example <- parseInput "example" + let exampleOutput = compute example + when (exampleOutput /= exampleExpectedOutput) (error $ "example failed: got " ++ show exampleOutput ++ " instead of " ++ show exampleExpectedOutput) + input <- parseInput "input" + print $ compute input diff --git a/2023/25-Snowverload/input b/2023/25-Snowverload/input new file mode 100644 index 0000000..7c0486a --- /dev/null +++ b/2023/25-Snowverload/input @@ -0,0 +1,1256 @@ +pxv: xtm lsh jgq +tgb: jqb rmh fzx +fnf: mpx lzb vnb sgd lhz +blx: xrj +zql: czm kqz gjt rxn +mzp: fqk +kjb: nvn flq vbj vzx +jtx: stq +ntf: bgg +lsc: plj ljr +bzg: rdv +fjl: hhs fsq kbt jmb +hzv: cfl smm mtv zkb +lft: grq btj +hgc: hnh dff +rmx: ckz sgj fzz pgh +tnz: qst vlf ndh +tsm: vml vgx +zkb: pvv mng gmr +gjt: mgv jcj lzc mhz +kqb: xgm nvb fzj mfb +pjj: fjb hgp fkb +msn: rjh fdv +bnj: fxh xlp +bjk: gfx cbz fzj qzq +kzl: jdj +hxt: dlj ttx +fvv: mfl tdh sqt +jgd: nzn blx bxv pkt +xvx: qkl grq xvz +dmb: hnh +hrr: pst bbk +mzh: mxd knn brg lxh kfn ntf +vdl: gnr qxm xks fsq qqr +qrk: kxf jzj fbj szn rfs +prs: mdd +bfr: nrf +sqp: nmt +gvh: qrv mrm vrc ttd vxh +lzf: rzq jhr jjd mff +gpj: pxn +zqg: rjt cnp dxz +xgn: mst xjv +ppr: tkm +xnp: skq dlz +mpn: fct nhv vrv hnh +xsk: cbc phm jmd ngp +vzm: xlk trg jct +fmk: mxd ckv psh pzx +vtv: jmd nbl +jlv: btf zmh +rkj: qjx cst jjd cvj +gzg: dlz sls knn rzc +sth: tzn cgq qqj plh mvv mrq +nzz: nbj hql vqc +vct: hhj gxs zsg hgq +ckb: zbc phh +hgp: fzr dkr +tdh: jjs +lqd: vrc mxk qlk dlr +mkh: rtj pgz vzj +rdl: pnm mst +stl: hqd lzc dlb +ghb: xxj hmc +ppt: psx ngh ssk +njl: msn gkc rhh vzm +xgb: ftc plj fnj grf +xxd: kbt szx cvq hqn +hms: gxf lkx nvn vhd +gxf: bjk skd rlh +ndx: qtr hrt +dks: fsn +lzq: csr rjs +rfx: csv txd qps cnl +srl: cqv +vlf: zmh pnq +fnq: zgb jdk lkb ccn +dln: ljr ctf +pdt: lzc phc rzf +lcs: bhs xtq +lgm: frz zxr lzc +vdv: bzg +mhz: smg +trj: cjg krh sgj +prv: msp +fvj: gpd +bdz: szn zmt pdk ptd ngh +sgd: vft hdm +dds: jdh qqj qdf pmx +pbq: qph qxr ffn nqz +mms: bst brz pjg +qxj: tjs blx snb +pzt: vml +zzz: pkt dqs gfg +dtm: mqv dtr rjt fct +rxp: tgj +lgg: vhn pjr +jzk: rvb zdv qvt gkk +xfj: cvj sgd nrk lcm +vfq: vmt znq gnr +sbp: hmr +qzq: kgv npb +flh: nrx crh ddj szk pdk +cmv: vtv ntv gcn tvc +tck: cnk kjv vcp gld xlt +qfm: nqz dlz +nxv: nbb +kbq: jtx hgp +mdr: fnz gqd vnn bst +bpp: ppd lnh smm zxq +mrq: jbh +zdt: gqd +pnq: dhj rqh +dvx: qvp bhd +sch: dtv dfk +cst: ttd +vbk: qkl psx +tmz: qgg mzb jgs jsh +ddj: tgv msp gqd +zkg: mnd xbm kbg +hmx: rln kbg sck lzs +tqb: bjh xsp fxz tvt fpr +bjm: xrr +hjs: tmj dzc lpl ktz +cdm: tgq hfg hxt xmh +hhv: fxh hvs +rrm: ldm +xcs: dfj xhc +khk: vgx rgt +slf: ccj fbp sxt +mcd: fmx jqq qhq +pkl: fvp qhv ngp vcp jgq +hzn: tpf mjs ghl +gxs: hhj lfb +tzn: prm +tkc: tvj bjm +hps: bbx +hrs: qdl gsh lfn lhn +ffn: rjh +zhh: lvl hhc +pch: pkj njr nzd lmv +smk: pjs gdl +ssc: rxp smk lhn +tzd: xtm phn lpl qkg +jmp: gqp lln +xkp: jsm +qch: lqp +vjg: snr drk spc jcp tpf +hvx: prm ztt qvp +qdp: fsn fdl kdv vkv +dkc: jkf rxg ncg dpn +qhd: hgg phh gvg csr lmz +nlz: czv cxj snv kxk tnx +xbq: gzq fjj pmr tmj +qnn: xxn qjk lqp mzp +qqr: fkx mfl ghb +mzk: xgm zjg tgb dvr gvr +fbx: lmz fld nvb bcr rvn cgm +tkf: czv btf +mtc: bsf jnn rkn +psz: htn bpn vnt +msg: pjs +rln: nhs lsm +xcx: nhs xtp +hgg: xmh hxt pjs +lsh: jnq +qgm: sdz +ztf: ndx ncd lzq dsr xsl tnx mzb +phn: gmz kvv dzz +vnb: zfh +xjv: tfg +msc: pgh srf qmb +tvd: crv cbn zcx +gsd: crn phh jcp +xvg: prm jjt +cvf: qjc fkb ltk cgq +ftb: msp gqq gqd vfq mlk +rcr: cmd tzm mpx hhv +vkp: pkr +hgq: nlc ssk kdg +tzm: hzf flq +lxg: jbb vgp +hhc: rgz +zbd: csr rts lnz pkp +rrt: pgz tjb jst prn +gxx: dpm hkv xlr +qmb: jcj bsx dxv gxv zbd +brz: lgk kbr tck hjp +ptt: hbb fdl qqd +bdq: fjc +cpp: btk xtp +mdh: pkm qrs ppt +fxz: kkk sns +jqd: szr vlp bdv kgv +lpr: njt mpx +xbf: rhh dts cbl vnn +dzn: hbh czs qns +cpk: bmv scj xzj msj lzc +jdv: jht +zvv: zsg zmm bnc +npz: nhv dqx vdz cpb cbl +prc: jnq +czd: kdx fjt qrv lnn +cgn: fdc mpx kqq +plm: hxs mhx vtt +ldp: cqb pgg trg psx +dsz: lqp djg fqq +szh: pzx cfl cdk kzl vzn +jjd: kzz +tpz: phn bnr xlt +bhd: vbh +cbl: rzc +jqj: nsh +zmx: bnx ptg zhx xkp +mml: vzx qvt +cpb: qhb xlt +jdj: gfg +gbx: jvs lgk vdn +jqz: gmv scd lnz jdk +kdq: xjd gcg fjl kgx +ghg: mxc +pnt: zvx vbp +plh: zgb crs +fjp: cjc hpf snr xfj +czs: vth +prn: nsv mbh dtk kzz +lxb: jbh vft nbb +ftt: gfg vkv cbn vns +shq: gbv qns flg +phd: lpk tmv dlz +zvq: nnk khk +hnh: kdg +llb: nxv qxq +ncd: fkb +tmv: xjd cmz +dxj: tcc +qfx: ltm pdk mxc +mfb: fgd +vjn: skn gmg +htv: rnr fht jjq fth mng +tqp: ktp scp vcj ngs +jsz: hmr tqx +mzv: sch msj +jnr: drr vnm nkf zrj +chg: ppd vcp dtr lsm jnq +qkx: xxt tgv fnc ngs +vtm: mvr bkg rdv +bsn: mdd +zmh: stl +ljx: gtb vnh msp jbt +rhl: ddb ghl bcq srt +ljr: czp +vnn: drr +dmz: djg bjt nsz drk bsn +cqk: rjh mch nlc drr hrn njj +zld: tsm nfr +gjk: lcs vgb +vln: rbl mdh ndq +ctk: cjc vpq hgv +qlr: prs cjc hhc +fpf: gvr vxh +fkh: bjr bjc dsv +mqk: bgl lgn kff +xvp: vcn bjm stj +xgm: zvs +pgh: kkt +pmp: ngh pkv bsc vsj +snr: plj +pqd: zfm phg lzb jfl +bqt: nqf nfh xvg csj +xjp: rfg mtv mfl +gsh: rxp hzf jtq dtv pkr +znh: zxq +zvj: mpx ccn czv qgg +lhg: fjt bnx mhh +tjs: ngs +knn: bbs +lfb: bhf +bcn: rrg ssn lzb +njb: tml hmk qqk +dbv: ttx vbn vng qgf +rzf: ssn skh +ddx: ppx hsm znh rdl +qfz: kfj kdv +xnk: gkg +ftc: tkc jst +vtj: thv jdj tdh +dtk: ghl qnh +sls: pzx scp +vcp: knc +fzz: zth +xqk: qvt jtq +tvt: llb krf mvv +dvv: kpz fbj phd nng +pzc: vfk fsr jsz tqb sbm mvv +gpl: bkz pts mmk +mzl: xng fxz qlk +nbh: dmm qfz brs gld +txd: vgb btk +zgb: dfk +hhs: xkf +gck: bcn cqn tcc cgm +fnj: qvt mcv ttd bfx zfh +bjh: mzt jzq zhh +ssn: vzx bbx +lxk: xrd dxb +rbl: tvc gdj +mcv: mrq zdh pts nmt spc +ztb: lhz nvb lnb jzq +qgg: tzm hpf gfx +mnc: hqd qnh rkp vnt +kdx: bjp ltc +mvf: zls cnp rfg rxr +plf: dtv npb xng +grd: zjm vcn jzq +gms: smg lnz +tlz: mdd gtt +vpp: pst fvp hhr njj qxr +slm: llj +jxv: kpz rnr +lvl: bbx +rnx: dks +qbh: vhc pxn hgv +qnh: bzg +rzz: vbh crn +qmx: phr qqb njs pzt +nhc: pxt vcs jtz +ptn: mff vpq +ppp: hhv msg srf fxm +rsm: cls cxq sns bcr lmz +xdx: xrd zhp kdx +bnx: fqq mxk +jzg: vqc dxj lxk +zrn: bhf sfb zxq +jbs: ksc thv lnh nbl rbj hfv nzn +ndq: jqj +gnr: rrm vns +dfr: msj gtt bkb rbs xlv +ptd: hbb +rrq: fsr xrr xvp ntn +mjs: cxg +gfq: rmz gms lxb lzn czm +hfn: nhs +rcb: mcg lpr dlt mlh +qlp: xtp cht mkk nfg +kjg: mbk nrk qqj tmz ssq +frx: pcg qrs bnc vmt +kqs: ckz rtj +vkc: mrd vfc qrk vmt +jtq: sjb +frz: psz ctf fml +qhb: hpr +ndr: bdv nqf jrl sld +txh: xjp fqb zzx tft kvv +xbz: jkj hxh +ksc: czj hzs kmp +cgl: kgx cbc +gtk: dmb mlk +dcx: lsm vdz rjt +spg: jzc mkk frx +pms: xrd gmg +hdl: fpj +bpj: kzz +vpc: mqv ccj bdq +znn: gpd nzd dtp +pkp: zhn hdb krh +ltp: msj lzc +ckh: jsz rvb xgm jsm qch +stj: vft rvn qns +cbn: vnh zls +mrg: tlz njr lhs nxv +mgk: pnm kbm +hmj: fnc qhq +gbz: ffn rkv kzl pdj +cls: bmt vkp +fmp: drs jkf jmd sck jnn tkt znh +gxv: jgs xqq nhl +mgv: zhd +xgf: rqh +jjs: jnn mxc +nmt: szr +zpr: fkx lhm dcv +cvq: qhb qfz qxz +rbq: gjk xrb qrs hbc +sqh: phn xhc hnk qng ktz +ntz: kbm pll +rhh: qmm +hxl: dtv gsh +mhq: jbh +dff: cnl kfn kdv +vjd: dgm jcj fpr +nnt: vng nvt qlr lms bmv +grj: gld mgk zzx fjj +xsp: hzf +snp: stm ghg xtm +rss: rjt mgk fdv +qgx: fnc bxm +fqp: hxl +spc: gpd +cnm: tcc +kpf: vzj hps lfn +ljv: cjc +hnk: fts gqq pkt +dgc: mmk rrg vqc +brg: fxg gcg +rjq: mbt fqp csj +jkt: gxx jbt plm +htn: vxh gcc hdb +nrk: jrt +zvs: zdh klk +xdk: rzc fsq ctc btx vxb +tlc: gsk cgg mjs +lkx: xzj rts rsb +rpb: jzj pkm llj +flk: mqk qst pcv +bsx: zjg cxg fms mxk +sck: xrb +zxq: dzc +vds: slm zdt cxh gjg mlk +rxn: sgd xxn +mbn: hvs hng ptn prs +zvf: fjt fvj nzz kxk +bjt: fgf xrr +ggb: hgv cgg mzp +hhr: ldt +gll: rrg dvr +mxb: hsd jvs rkm jnc +dct: gjl xxt gbx tzd +mch: fnc tjs dks ndq qmn +svb: trq tbs gpj ctk +qst: rjs rjq krf bjr +lcb: pvr skq kjx +sgq: zxr mqn vqc +cvn: vcn lhz smk mbk +hjb: bjv vcj vnh qfm +lkd: ncg ssk bgx cts cvv +rkh: fjc jnn +jtd: ngn vnt nzd +qjz: zzz dfj xjd qfx +nbp: jht pfc nqq snt +thh: dsz ntn qch grd +vtt: hhs +snb: xjv stm +cch: frz mmk mzq +hdm: bzg jqb +rnr: rkz +xzk: dxm zth xvg mrg +fcx: jjv +bmv: fsr rkp +jsh: sjb +lhn: pdh nqf +fjt: xrr +pdk: tbd dkl +dpf: lmv gms msj gcc qns +mjf: vdv rzq sdn tnz +szn: gmd pgg +rxf: jrl +hmz: rcx phm +bqj: hbb xzl chh ckv ngh +bqc: lhs +lpk: ldm nrf dsh +cdk: fcx khv cnl +pbk: hbh tht ltc kpf +dgr: hqd gmv kmz +rmk: crv xhc lsh +pcv: lzc hvs +zcx: fmp nfg rgt pqz +fnz: ffc +pnm: cvv fcx +dvq: mjk dsv sns fld +cmd: ljv cgm qzq +xrx: czp sjb vbh +dcr: xbm rgc +nfh: xhl kzn zdb +kst: hvs +kdv: ngs +jkf: bnc +mvb: spc crn +kgx: lgk gdj +qmq: lzs pcg nnk phr +vrp: vtj hfv njs qkl +rcq: fkd +xhc: lkf +qrs: pzx +kzn: mff fzh dgq +hkh: qpm lnx knn +cgk: lkd jkj mgk +xqq: xxn jff +hfc: bhd xfx fbg +zpt: mbh +kbg: xbg xnk +sbn: nbl zzz glz rcd +dft: qng gdk zzx +zxr: hgv mhq +dvz: jdk zfh +zhn: bjr +qvp: nvx +nvn: ltc rts jhr lxg +fjj: pll +lnf: gsg vbj dsz nhc +qkm: rhh pcg vdz dxc +lql: cqn nvx mhh jjd +kkk: sdn dnk +fkv: hgp rxv ngn nlz +pls: qgm qhb +qng: ctc lpj +rkp: ttd +vhd: tgj xdr +vfc: kdg jfn +pgg: fct +zmc: dxc vmt xnc +bgl: vbj +dxz: jnq +lmk: bkg +slv: grj mch jrc +vdz: lxh +xvf: lfb ndq qrc qhv pdj +rbs: nbb qtr +bst: xnk jfn +xmb: sbp jsh pmx bkb +ctc: vtd dks +mxk: czs +lnn: csj +drp: scp bvk zsg +mrc: rtp lgg +zvm: fgd vgh mlh +hgv: zvx +qlt: npm gbx bhf vhh +jjq: qrc rkk hkv +hpr: tkt +hhj: cnk nbl +skv: bpj hvx rzf +sqt: vnn dzz +jvd: nxj njt sqp +fks: jvl cls mjk skd +scn: skh pcv +jzc: rnx +dkl: nzn +grf: szr lpr fzj +frl: bhd +bbk: xjd kbt +tgj: plj +fsm: tzs gkc dft xgn +vcj: mcs dxc ppx qqb +ntv: klq hzs +fld: dvx bzs +mzq: xrd +qjk: fzh +tss: bgl jdh jtx gvg +xkf: gdj ntz dtr mng +kxh: qxj ptd vfq +kjh: ttt vnb cst pnt +plq: ssq dzn jsm +mbj: sls kbg slv vrv +hrt: lkb prm jff +fsq: dcr +nzn: nrf +qdv: mtk smb tlc dgr lxk +skh: kkt +dbf: mzp ptn vjn +nhj: jfn bdd rnr bxv +gcx: fkr ssc kqs cgn +cmz: vqm +jrl: cnm dfk cbz +bdm: lnn xng kbq bdj +dts: rgc dpm njj zld +nmm: llj qqd +fkx: jnc rkz +bkb: bkz +kmg: znq prc nhs cvv zmt bqg jjg +fjk: nqs xtz gxx rfg hdl +btf: cnt phc +fxq: tsm qxz fqf gmd +tft: kql jcv ghg +vtp: nsh rkz srk svc +tqx: bgl zvs +djg: rcq jfl +mqn: bsn pnh +mrm: dtv gqp rqh +dsg: ttd zhd tkf +vzx: fkr +njs: kbt zls hjp +jqs: dln vbp krh +rsb: qgf vjz gpj +xxj: ltm knc +hfg: vth kqb pms +fpl: dsh xks +ngp: jzj rkx jct +ltf: cgg nmd +blb: ghl tkm ndh xqm srf +jfq: bfr cbc bdq mfl +vst: dsr kqb nvb gpd +ccz: pll tql brg bnc +ntx: hxk gmr gkk nsv zbd +fxm: gcc mzq +gkk: mvr +glz: pcc xxt zqm +crd: pgg bgg rkh +rcj: rjs +gjg: mpn jkt cnl +jnk: stj mvr lcm tkm +rtj: flq +xjd: mtc +hrn: khv +dkh: kjx lpk hmj lgk +bgg: kdg qqd jjv +vgj: rrm hzs fpl psx +flg: czs hvx +btm: hsg ngp cgl vgx jdj +xzd: flg kxz +vcs: mqq scd srf jgs prs +npx: mxk rfr mxt ltp +vkq: ppd +gcn: fct rpf +vgh: qns srt kxk +xxz: fbp rkz +jqt: gmd mxc kjv zvc fjf hfs +ssq: cjc +lcz: nqq jst zhd qnc dvz klk ljr plq +zdp: bcn pnt mqq fbg +dvc: tql rkn +bhr: dzn mdd jhr bqc mfs dsz +qxr: lnx +jvl: bss psz brf +zsg: lzs +rfm: tnx ljv vxh +cxh: lsh dzc svc +lkb: rzz fzj +jdt: nqz rfg +rkm: btj qfx cfl +pmb: vhc +zbl: bsn mbk +vhk: qjc cfr lhs +jbr: rdl jtt jjg ffn +qsv: gzq xbz fnz mnd +sgj: gkk +xlk: lnx slm fsn +cpv: bjm kqb msg +zmm: vhh +scj: brf jcp +tpv: lgn vxh dtk rfm +lmv: crn +nvt: bgs zbc dsg +bxn: cst ckz rbb bcq +klk: vft +vsm: skd jdv ztf ttt +sjb: vpq +qrc: hmz +bdd: kjv rtp szk +vxb: gmz sdz +vhc: vth +rdv: rxs czp +htk: zvx mxk sbp vhd +sbz: fqz smt nmt gpl +fqf: gtk bsf ghg +mkn: vzn rtm +gqb: fgv skk kbg +ngq: ltn lnn vzj +rdc: xcx dfj qxm cgk +xtl: rlr fjc xbz btx +jgq: cqv fbj +krf: jtz xgf fpf +mfs: xgf csj hhv +fgb: nmd fbg hvx +svj: ntf sfb lnh dkc +brv: vjg qpd gxc bqc +mlm: qdl tgj smq +mzg: prn xqq dlj xkp srj +jrc: prv +csv: nng bvk +hvs: xsl +bxv: vgf nnp fjf +lbn: rxs rqh vss lfr +nvd: vqm vhh bjv xtp +lzs: hnh +mqv: jnq +rkx: jjv +sct: lgn tvj lfr ndh +bmt: nqq flq +rkk: xlr btj ptd +kzb: zhd +mdm: vdv mmk msc ttx +fts: brs +pvh: bcr xlv +zgr: dgq gsk +mkc: fvj pxn xrd pts +xjg: hfv hxh +mtv: qhb +kpz: fln hjs +cfk: rsn jpl mrc gcn +pdh: jsh fkd +qps: xtm +vnv: fnv rnx fqb llp xbz zqg +sdf: fxg +jpl: tbg bxv bdq +vvk: tzn smt bzs cpv +jrh: cqq lpj jqj +vcv: clp dzx gxv tkc +vrc: hgv tbs +gcc: njr +cfm: pbr mld ktz gxs +bxm: rzc cnl hdl +fjb: rxf lvl vbp +qjx: bdv zjm hbh mvv +hbc: zmt +zsx: gfg rsr dfj dbq mrc crh xbg +rcd: qxm pnf rpf +ctp: tpz vfc jcl hdl +hsd: qfh +xnc: ppx vfq +rlr: bhs +jkj: hxh +xzl: ppd zqm +sxm: hmj hqn +sdb: jqt kvv bnk +mnb: chj xkp +lzn: jzq +gft: qzq +kjn: ltf bgs jrl fnx rgz vlf +cjg: nbj krf mmk +dnk: rdv lrp +srj: mml rcq ctj +gzb: thd rgz njz lvl cgg +kmz: fsr kbn kst jpj +jff: qtr phx +kfz: mkk nmm gjl +tnx: snt lcm djg +hql: gpd pdh +mmr: tch nvd xkl fpl flh +bqg: gzq drs +ldm: tql +fmx: vkq +dlt: ppr mhz +mvv: gmv +frg: vns nlc tql fxg +kff: zhp ptg tml +jtt: rxr vfb vkq frg +skq: vqm brs +fdl: lkf +cxj: nhc hvb xlq +bss: qch rbs hps +fgd: vpq zth gfx +cpf: prc zvq xnp bhf +pjr: tdh +rvn: cnt +nmd: zvj +vhn: glc hpr +qrv: gnp kkt tkc +jrr: kjr fqk zbl vlp zhn +ndh: dvz +str: hsm qfz vdn rnx +hvb: tkf zdc hng +bfx: jrj ctf tjb +rmz: fxh zdv ncd xhl +jbn: hpr llj czj fts +nzd: zdv +hsj: bjp ccn vkp +rsr: hsm snb bfr +xqm: jbh +nng: jjv gmr +fpj: jzj zmm +cqq: qhb rkz pqz +pfc: cst phc hdb +kxb: chq rdl bng qps jzc +jmb: vfb bxm xvx +crs: rtj vnb xqk +tbs: qsc dlj +pxn: ztt dgq +bkz: kqq qsc +phb: qnc stq rzf mzv +hng: qgg cgq +njg: tkm ngq ltp gsk +rkv: pvr qhv dqx +ltg: nhv drp xvz bxm +sdz: dzc +xjl: cht kbm gfg lkf +qlk: tvj nqq +xbt: jht bjp jcp gtt +pvr: jfn mhx +drs: xbm +lsk: trj gzb jlv qbh +fnx: msj qgf +kxf: phm xlr +gtj: jmp vkp cmd rzz +gtb: hxs cmm stx +fpr: mml brf +nkf: xcs +llq: pgf rgt nfr +mjk: ssq +mgb: qkg nhg jnn vfb +cjb: pgz lzq gms pmx +xfx: czv mvb +htf: ctx dvc qgx lhm drr xnc +kvv: hfn +zbj: frl zjm gfx hpc kbn zpt +zrj: knc gmd +dfk: phh +tht: phx jhf jcj xlp dsv +fqv: ctj jtq brf fkr +lxr: dmm dlz fnv btx +xpd: hkh ncj cbc vdn knn +tbd: dqx dkl +klf: rxs +vfk: rhl zmh jqg cfq +smm: vxb bqg +xkl: rgc cts vtt +vqr: crd ppd hxs cmz +dbq: pgg +hpc: xrx jzg vzj pgz ddb hbh +tsd: cnm bjc zbl snt +cjr: rbl sxm jrh dts +gbv: zvm kzn gft +qpm: xnp xhc rkx jgf +bzs: zjg jtz +stx: tfg hxh +pcc: jkj qfh prv mkk +tnp: nhl tss cdq fxj tlz +gvg: xrr +ckv: dlz fxg +jrj: zhp ztt jpj +lqp: bjr +smt: mlm mfb +gjv: jbb gll ddb jfl smg +mhh: bgs +hqn: mnd vns +fqb: xxz vtt ptt +jrt: cnt +mxj: mst +pdj: ddx vln btb cpp +mzn: szk ghb skk rhh +xks: rxg hsd +zzx: qfz ljd +rgz: jdv +mhx: pgf +fvz: qvp lln sqp mhh +nfr: hnh lgg fts tbd +qpd: hrt sqp tvj +pxt: rsz snr znn +cfl: snp dsh svc xcx +vtd: hjs kzc dmm +xlp: fkd tnd rbb +ncj: dlz dqs xxt +sds: tml cgg gqp +bpn: lmk jqb jdk +rgk: vss tnd xdx stg +gmf: kbg rsn hsd pzt chb +trq: kzb lhn +fgv: zsg bhf fbp +kfn: dpm +xpt: fzh ngq xlv phg dkr +nqs: fts bgx kzl szk +lmz: lms +qqt: jsf ztt xrx +jdh: mbt fkr +zjv: cgn ngn +zvc: skk ktp +vmp: qhb btj dqx qmn +hzs: pjg +qhq: lkf +rtm: bgx rcx +rvb: djg gvr +cfr: dvr qqk mtk jhf +gxc: krh nqq bhd +tml: bkg klk +mld: vgf pzt bgg +nsv: vlf skv +rrg: tnd zth +qqj: gmv rts qtx fpf +kpv: pnh rxp qqt kzb +dlq: ccz cmc ldp lnx +fzr: csr +bcq: rxf rmh mzt +gdl: qsc xgf +tjb: ggb +ljd: hzs vhn rlr +ctx: jdj nng xzl +nvq: qgm xtm dpm xdk mrd +bsf: fcx +lnh: skq +qdf: mbh lmz jht +gjl: xtq drs +kzc: sxt vml +vfb: xjg klq +qtx: vft +mxh: qmb zhh zdb phh +hmk: lmk dgm +tbg: tkt phn +vsj: kfj dth zmc xgn +fht: qhq pcg +mqq: phc +srt: phh +dxv: vbj hmk +dsv: dzx zbc +sqv: zjm snv cch pvh +hfv: pkt +dvr: vnt jht +lpj: vqm +rzq: fgf tml pdt +zdc: nhl fvj rxn bpj qxq +nnc: lcb rmk cgl btj +pbb: zld ndd fmx vdz vnm +lzb: fqp dnk +bnr: bvg rkh rss +llp: dpn zmm pnf +clp: kqs hqd hvj xhl +cbz: fkd xgf +fln: hxs hrn +fqk: xsp qjk +jqg: jjt vhk pjs +ckz: zhp +dcv: fjj tql +scd: hdb +pnf: hhs ldb jfn kbr +zgz: mhf jkf jxv pxv +lxh: cmz +svc: chq vnh +cqv: rnm +pfr: jtd ndx kqk mjs +spf: kst xmh fzz pkj +djm: dss rqh snt +tjk: rfm nxj mzq djg +btb: txd xgp ldb +tgq: vqv phg rxf +mvr: cnm +fpz: ngs jnq fmp fbj +qmn: njs nqz +znq: jjs +hzl: lfr gjx fdc klf +jhf: fgf vth xvg +kjv: csv xrb +tvc: jnc +fvp: qdp kzc +mhf: prc qxm +crh: cmc xrj +kgv: bhd bcr +cnt: jjt +hxk: fkb gtt +fth: gjr hfk mkn dcv +sfb: sxt qrc +gmz: kfj khv +vhq: rmh mbk njr lnb +ldt: tfg +fbg: zgr tnd +npm: kfj sck lsh +tfg: cvv +plp: mnb fkh xzd qqk +ltn: tqx skn dzx +xlv: vth fzr +pbr: vrv rtm +svp: rcx pvv klq rnm +dtv: kxk +snv: dgq pgh jsm +qhv: cnp jzh +dhj: rbb zvs frl +jcs: hxk mlh nbj pcv +cjn: lft pls zrn rln rbq +kjx: dlz nbl +mlh: zdv vpq +lhs: lzn +cts: nnp fjc +chj: nxv rbb hps +jcv: stm +pts: nvx +xdr: mmk hzf +kzz: rcj +bhs: qgm mcs +plg: plh jrr lzn hbt +tlr: hvj dss xlp qqk +vcn: pmx ccn +qph: pbr rxr dvc sfb nmm kxf +jgf: xkf ngs vnm +nfg: kbt btx +psh: sdb slk hrr gld +rpf: szm stx dxz +jtz: qsc +dzx: rzz +dgq: srt fgf +njj: qfh mcs +nnp: llj ngs +fzx: gcc +gdk: kdg vnm slm +rtz: ntv fht mcd nhg nlc +xlt: lfb gmr +ccj: tgv qkx +ktq: xvg jsm nqf ppr vnt +qnb: hsm qqb mxd bbs +flx: szk dxc dpn nnp +zjx: pvr pls pst sqt +tpr: dvx gft psz +plj: vbh +vgp: bpj cxq hhc +cqn: pjj grd +fqq: fzr bkb +sbm: xqq hmr rmh rjs +jpj: sjs mqn fzz +xmf: qhq gkc vzn fnc +zgq: ldm hjp xbm hbb +mcg: qnc +mzt: sbp mrq skn +stg: trq mfb +khp: fjc vnn ltm dzz +njz: mff lzc +bjp: qjc +kcx: xfx flk jlv bqc sld +ltk: pnh xzd jzq +zgg: cxg jjt jgs ttx +grq: tfg mnd fbp +frs: jrc zmt xxj gjk +bng: qgm llj tfg +pxj: tnt sds ntn dgc +rbp: jjg rnm bbs +pkm: cmc ppd +tnt: kpf mrg gvg +dxb: zgb sjs drk nvx +ttt: pkr lms vjg phg sns +cmm: fln cmz frg fjj +gnp: gmg dbf mqq +kjr: zdv rcq pnt +dql: nxv stq chj +ctj: ppr +nhg: vbk vgx +ctf: xmh qvt +dtp: dlb lzq nsz gsd mhq +jbt: stm phn +tzs: lpk dpn scp +jbd: bpn vcn jtx bjr +rsn: xrb mxj blx +vlh: mpn xgp ffc dsh +fsn: kbm jqj +ddb: prs +xvs: jnc pjr rgt hfn rcx +tpf: dxm fxh +jzh: jdj xxt khk +smg: kkt +nrx: vhh hmz qxm slk +hln: fqf dvc mkn svc +pvv: tbg slk qps +cqb: kbr bhf +dlb: jbh +kfc: xcb xdr xld njb ppp +bjv: fdv qkl bbs +gjx: tvj lln hsj +rbj: kfn sdf gdj rkn jqq +czn: lcs rpb stm jcl +smb: vdv stg zjv npb +mxd: cnk +xlq: qtx kzb cvj +dlj: hdb +tkt: pgf +zjg: cgm +mxt: ngn zbd vkp +qxq: tgj vtr +vbn: fzr klf bkg +bdj: mbh zgb trq +rsz: lmk czs zxr +kql: qkg mqv +cvt: vnh qxr srl tvd +vfv: sld bnj pnh nxj +lhz: zbc +szm: sdf ckv zdt +czj: hgc rxg vml +zdb: bjc mgv +csj: zhp +ptg: fzx ljr cfq +mrd: rjs rfs cbn +rfr: hdm snt ndx +nhv: chq +btk: qfh pjg mng +tnn: sch tzn dql +bsc: blx xzp nbl kfz pjr +cdb: xgf tjb mvv +gkc: xlr zmm +jjg: hrn +pkv: cfk kzc rkk +ldb: pjg vfb +mbt: gmg dlj +pst: glc +kmp: lxh fnc hhr xrj +cvj: skn xqk lnz +rkf: hvx bmt vkp jhr +pkj: lsc pmb +trg: fnv +rkn: srl +klg: zvx rxs cnt nxj +zbf: bbk hfn rrm mhx +xld: skh spc jcp +thv: hbc dqx +szx: nsh vpc xcs +fnc: gcg +fxj: vjd phx pkp kst +cxq: mff cgg +chh: bnc qxr jkf nsh +bdv: tkm tcc dxv +cgq: kqq +lhd: fnz prv +tdn: lhg nsz pms zgr xrd qjc +vhp: khv pls fvp kxh +dqs: gtk jcv bhs nrf +nzq: qrk kql rkk nkf +xzp: lhd qfm cmz +tps: bkg kzb bmt czs +rtp: vnm pqz qgm hhr pgf +hqd: cxg rlh +zdh: kqq rlh +cbt: jfl nmd mhz ghl +xjn: cpp jcv zls rtm +ngt: nrk fqk fms jrt +xng: vtr bjt +lcr: nbj lcz sgj qrv +vkv: rjh dbq +tts: lrp rsz rlh pnq +pnh: rzz +lrp: vbp bkz +vxs: bvg ntz vgf cnp +jqq: hkv xtq rzc +gkg: glc +dnf: xks hgc bgg tbg tmj +bvk: ldt +jvs: mxj hbc +zhx: xzj qtx fzx +bpm: cnk qxj jzc fdl +gqp: ckb +dsr: xmh msg +ffc: nnp dmm +xnr: rtm jmd brz mxj +jmh: kzc xrj rjt qqd +mcs: fct +ftl: sdf dcr vkq fln +xsl: hhc +dxm: lms mhq +lfn: lhz vtr vbh +sjs: jrt xlv +nhl: hpf qnn hxl +mlk: btk +rxv: zhn ctj lgm +jsf: fzx dlb gms phx +qnc: fzh +vlp: tkc kbq +njt: mcg +fjf: phm tgv +pxg: skh vhd zpt cdb lxg +srk: rsn dmb fpj +ftd: gpj shq cst njz +mtk: jmp jjd +sdn: mkh scj fzj +gjj: pkr tpr tvz sgq dxj +dzz: vrv +gjr: rxr zqm cpb +rbb: dgq hvj +scg: jrc srl jdt chq +qmm: dbq pgg +hfk: vkv gkg +lbx: vhc zbc xvg qdl +hfs: cdk kfl cqv +tvz: mcg ncd hmr +dkr: rcq jbh ntn +hsg: gcg cmc fnc +xcb: lcm bbx lln +nvl: rkp tnn gdl jvd +rfs: vdz lxh +hjp: jdj +vng: dss mrq +kqz: qvp jff +stc: jst xqm klf ltf nvx +ctv: fqp pmb scn rkf +sgk: ckb vtm vjn pmb +fzj: xhl +fdc: rcj nxv +czm: dlt xxn +xtz: bfr dmb rbp klq ghg +jxk: ntx gsd lxk cvj +ztm: zvq xtq tvc zkg hfk +cnd: sxm dcx rkx slf mcd +vqv: zjg gvr dss xqm +bnk: sdf cbl msp rxg +lnx: bbk lpj +hbt: nsz hfc dbf +vqc: qdl +hmc: vdn slk dsh +jjf: xnk ntf gqb lft dvc +tch: dzc znq +ltm: rgc hzs +cfq: hql rcj +zjs: llq jxv tch rlr +qgf: stj +krh: bgs +ncg: gsk gkg bvk lsm +fml: jdv czp mjk +kfl: lsm skq bsf vgx +skn: hgv +fms: trq hvj +xvz: sxt nsh tql gtk +skk: dkl +ktp: ldt +gsg: cfr pcv mzv +jqb: rcj +xzj: xlv rzf +qkg: dxz +jbb: hpf mgv +xtm: fdv +xgp: ngs ppx +sdv: sld mnb xsl xsp hzn +nds: kxz bjc fnx plf fgb cfq +rlc: dks vxs vgb nqz zpr +snf: hql drk zjv jcj +bgx: nbl +zfm: djm qtr llb +xjb: hbb dzc rkm pst +cdq: rlh bcr lmv +dlr: gxc ljv dgm +pqz: vhn +mmk: zfh +fqz: kxz rdv bkb +cbg: mst fgv zvc vpc bhf qmm +chb: mms nqz bvg vgb trg xxz jjf +brs: rnm glc +lhm: vzn jjs +xbg: vfb msn +qqb: mfl +zqm: knc +lgn: brf +ssk: lpl +gkq: mzl pvh xqm npb +kbn: vtr tbs +kxz: cjg +phr: vgf sdz mtv +ndd: tmv zdt mvf +jct: jcl pll znh xjg +qxz: xjv fnv +bvp: scn kkk zpt gll +btj: jdt +nnk: nrf vbk +kft: mhf fdv lhd njs ktp +ffh: fxm cjc vfv fzx +szr: mvb qjk +hkv: bvg +pmr: khp vtv nrx zvv fvv +smq: cnt nbb snr +vss: rvn xqm +vjz: kqz dgm npb stq +kbr: dtr jcl lpl +dth: znq hrr qgx gqq +cht: nkf zrj +lnb: zfh vxh ssn +mtn: dxm ftc dln mjs +sdt: ppt mzh tjs spg +skd: njt +lfr: ltc flq jdk +vlc: gqq cqb ktz jqq +kqp: ssq hmk pgz lsc +crv: fmx szh +kqk: frl qnh bnj +thd: jqs scd dxj +gzq: srl +mzb: gft fjt +vnm: tmj -- cgit v1.2.3