commit 3f8c80cc32bc25d5c29ebc72161d691787677ef1
parent 4d4d84bbd2fb37d6a9ecb015760dc3562c4ec00c
Author: Sebastiano Tronto <sebastiano@tronto.net>
Date: Mon, 23 Dec 2024 07:55:11 +0100
Day 23 2024
Diffstat:
6 files changed, 3530 insertions(+), 0 deletions(-)
diff --git a/2024/23/Makefile b/2024/23/Makefile
@@ -0,0 +1,11 @@
+CC=g++ -std=c++20 -g -Wall
+
+a:
+ ${CC} -o a.out day23a.cpp
+ ./a.out
+
+b:
+ ${CC} -o b.out day23b.cpp
+ ./b.out
+
+.PHONY: a b
diff --git a/2024/23/day23a.cpp b/2024/23/day23a.cpp
@@ -0,0 +1,40 @@
+#include <algorithm>
+#include <cstdint>
+#include <iostream>
+#include <map>
+#include <queue>
+#include <ranges>
+#include <set>
+#include <sstream>
+#include <string>
+#include <string_view>
+#include <vector>
+using namespace std;
+
+set<int> computers;
+bool m[26*26][26*26];
+
+int index(char a, char b) { return (int)(a-'a') + 26*(int)(b-'a'); }
+bool t(int i) { return i % 26 == 't' - 'a'; }
+
+int main() {
+ string line;
+ while (getline(cin, line)) {
+ int i = index(line[0], line[1]);
+ int j = index(line[3], line[4]);
+ computers.insert(i);
+ computers.insert(j);
+ m[i][j] = m[j][i] = true;
+ }
+
+ vector cv(computers.begin(), computers.end());
+ int tot = 0;
+ for (unsigned i = 0; i < cv.size(); i++)
+ for (unsigned j = i+1; j < cv.size(); j++)
+ for (unsigned k = j+1; k < cv.size(); k++)
+ tot += m[cv[i]][cv[j]] && m[cv[j]][cv[k]] && m[cv[k]][cv[i]] &&
+ (t(cv[i]) || t(cv[j]) || t(cv[k]));
+
+ cout << tot << endl;
+ return 0;
+}
diff --git a/2024/23/day23b.cpp b/2024/23/day23b.cpp
@@ -0,0 +1,66 @@
+#include <algorithm>
+#include <cstdint>
+#include <iostream>
+#include <map>
+#include <queue>
+#include <ranges>
+#include <set>
+#include <sstream>
+#include <string>
+#include <string_view>
+#include <vector>
+using namespace std;
+
+set<int> computers;
+bool m[26*26][26*26];
+
+int index(char a, char b) { return (int)(b-'a') + 26*(int)(a-'a'); }
+void printnode(int i) { cout << (char)('a'+i/26) << (char)('a'+i%26); }
+bool t(int i) { return i % 26 == 't' - 'a'; }
+
+bool all(int i, const set<int>& v) {
+ for (auto j : v)
+ if (!m[i][j])
+ return false;
+ return true;
+}
+
+int main() {
+ string line;
+ while (getline(cin, line)) {
+ int i = index(line[0], line[1]);
+ int j = index(line[3], line[4]);
+ computers.insert(i);
+ computers.insert(j);
+ m[i][j] = m[j][i] = true;
+ }
+
+ vector<set<int>> cliques[15];
+ cliques[0].push_back(set<int>());
+ for (int i = 1; ; i++) {
+ for (auto& c : cliques[i-1]) {
+ int mm = *max_element(c.begin(), c.end());
+ for (auto j : computers) {
+ if (j <= mm) continue;
+ if (all(j, c)) {
+ set nw = c;
+ nw.insert(j);
+ cliques[i].push_back(nw);
+ }
+ }
+ }
+ auto n = cliques[i].size();
+ cout << "Found " << n << " cliques of size " << i << endl;
+ if (n == 0) break;
+ auto cc = *cliques[i].begin();
+ vector<int> cv(cc.begin(), cc.end());
+ sort(cv.begin(), cv.end());
+ for (auto j : cv) {
+ printnode(j);
+ cout << ",";
+ }
+ cout << endl;
+ }
+
+ return 0;
+}
diff --git a/2024/23/input b/2024/23/input
@@ -0,0 +1,3380 @@
+lc-yb
+er-nh
+za-br
+gp-hv
+pm-zp
+jd-ac
+yb-pv
+mb-jo
+hn-yj
+ji-oi
+if-av
+ni-tc
+go-ro
+ik-er
+ub-pz
+wo-lh
+tg-dt
+uv-xs
+yt-uw
+vk-kh
+mm-sy
+ds-pe
+bq-mp
+xn-mm
+ty-gm
+zx-hs
+ig-iq
+nt-dh
+oh-ba
+wz-ao
+af-gd
+hb-xc
+rr-ad
+ez-el
+dt-zm
+bt-fr
+ui-mh
+rr-cr
+kp-ah
+mk-sl
+zu-ql
+qg-mw
+hb-ng
+am-hk
+kd-go
+lh-cs
+qg-fi
+ow-fm
+bo-wh
+ho-yo
+yv-jp
+ae-hy
+ty-sv
+mr-co
+ss-tb
+yh-xa
+im-lt
+kv-ln
+wt-vi
+ar-zv
+jo-vn
+ai-dg
+bs-fm
+fh-qx
+ry-je
+ca-cg
+ma-ux
+ar-es
+pj-qk
+qn-nr
+lc-vz
+lw-uy
+fh-mq
+er-pp
+ht-fw
+za-rn
+et-kd
+nc-ah
+cx-zr
+yw-ro
+ak-wp
+se-lr
+ey-ig
+ir-te
+tm-qr
+ry-ps
+oz-oq
+xg-mh
+av-xy
+et-ro
+mo-yg
+zf-nf
+lg-ed
+bt-zh
+ma-xl
+dt-vj
+in-ze
+ze-xy
+mj-yf
+zc-xc
+lz-by
+hb-fb
+qb-xn
+fq-cl
+dz-an
+dj-ik
+qb-nt
+ja-qv
+lu-gy
+qb-bk
+sn-zx
+zv-ij
+yf-va
+kf-fy
+ir-pt
+rm-rl
+un-zs
+up-jp
+ew-rq
+ch-fc
+gn-cl
+mo-yh
+zf-tw
+cx-ah
+tp-uf
+ub-qa
+sn-fr
+vr-to
+ov-qq
+nz-ha
+sk-sh
+cv-cp
+ho-br
+wg-lf
+eb-wt
+bv-pk
+uq-my
+da-hy
+nb-qn
+xb-vk
+qi-lh
+mk-gm
+lz-rm
+cx-at
+xb-dy
+dr-uz
+mr-yp
+jj-li
+nr-ek
+ks-rn
+ei-yu
+qq-gh
+ku-gn
+xg-vx
+ni-jc
+gf-gh
+sr-ym
+ya-ty
+eo-cx
+ps-yf
+vu-lo
+hf-dj
+jm-pp
+it-zm
+za-lq
+ec-im
+jj-gk
+tm-ms
+xr-tk
+bn-fz
+mx-jt
+gy-af
+hg-jm
+nk-ae
+qa-jr
+ky-og
+ut-re
+xa-mo
+nb-up
+sk-cg
+px-hc
+vx-hv
+eo-tx
+pt-te
+ed-iv
+ii-vp
+et-yw
+oh-do
+oz-oy
+nz-fp
+ok-ms
+wy-yw
+vg-sr
+tl-bd
+yx-bk
+qy-vq
+uk-zw
+og-gc
+mf-wk
+zt-rr
+zc-nk
+ra-ke
+yo-rn
+ob-yl
+du-yc
+jb-bo
+zn-vb
+yi-ke
+sp-nm
+fe-cs
+pe-gc
+go-td
+ti-xw
+oy-ks
+mk-gn
+qj-wn
+fr-io
+lg-nb
+iw-rw
+lh-hd
+xc-fb
+wg-yo
+yc-sl
+ro-sz
+im-cp
+eb-vi
+bd-te
+nn-xu
+xt-un
+lh-bx
+tw-es
+fi-mw
+kn-xx
+ux-dt
+sg-pn
+lw-uo
+ct-yq
+gu-on
+su-ai
+pu-il
+iu-ma
+qp-cp
+tp-ii
+bt-xw
+xg-aj
+kp-eg
+ql-va
+ca-ik
+an-th
+wq-fh
+gg-pd
+zu-bv
+mp-lf
+ny-zv
+zl-tj
+mp-ib
+vw-dj
+at-kp
+yc-mk
+di-vp
+ml-ep
+jr-az
+cz-tp
+bo-yu
+nt-wm
+oy-ka
+ny-cc
+gy-es
+eo-eg
+yd-ua
+yu-zn
+oh-kt
+da-xc
+lj-gr
+cv-am
+az-qa
+hr-ch
+ai-de
+md-wf
+kq-un
+ma-tg
+zm-ye
+ya-xi
+ub-no
+jc-mf
+vj-zm
+lg-nd
+ko-yl
+pv-uk
+ps-xu
+tj-ov
+ij-gd
+uv-mg
+gp-kh
+xm-eq
+zc-ng
+dg-do
+xu-od
+zt-ad
+od-eo
+ur-oc
+ym-eq
+bz-rj
+bx-cs
+pm-pj
+yv-on
+un-sv
+ux-it
+hb-zc
+mp-mw
+zh-io
+jc-bm
+qx-uw
+wi-wp
+ob-te
+ns-ou
+ak-yh
+zx-vv
+uf-oc
+ui-gp
+by-jj
+ub-tu
+vj-rx
+az-ub
+qw-ao
+du-mk
+up-oc
+rh-xf
+fc-ns
+sg-ok
+mh-sc
+ny-qj
+hs-tz
+uy-ss
+dd-ew
+ny-pb
+tt-ix
+zn-ei
+bq-zq
+wp-fm
+pt-tl
+ap-ge
+gk-un
+nq-fh
+wp-zi
+vb-rq
+lx-ig
+qc-im
+zl-sr
+ia-wp
+fb-hy
+be-wl
+lp-tp
+ym-pk
+kw-gm
+nq-xz
+bs-uj
+dc-bu
+nv-cf
+jv-xs
+sg-vs
+zs-th
+cp-dn
+go-km
+km-mi
+bg-do
+bf-il
+vz-wt
+uo-wf
+pe-dc
+rr-vu
+uv-kx
+en-xx
+or-oz
+kp-eo
+ii-di
+es-ea
+np-hb
+va-rd
+ad-sp
+by-an
+up-gi
+pj-zp
+yo-hh
+hw-vg
+jw-fc
+en-qv
+le-rr
+ak-xj
+bq-hq
+md-tb
+tm-ka
+yj-xw
+nz-pe
+rn-br
+fd-xz
+vg-tj
+wd-cw
+kw-ge
+xy-if
+mw-lf
+zh-fr
+ms-vs
+ix-bs
+vs-gl
+am-lh
+wh-wr
+uo-ky
+gc-nz
+or-il
+jv-rw
+dq-wn
+wi-io
+sz-et
+lx-vl
+ly-ug
+ea-gy
+vn-cl
+bu-gc
+ux-vj
+yl-tl
+sd-ox
+pb-dr
+xj-to
+da-hb
+il-ol
+vj-it
+zr-nc
+dy-hv
+ui-hv
+qa-tu
+bj-yv
+am-bx
+vl-ga
+ow-wi
+rz-iu
+mf-cf
+gf-pk
+du-ty
+hl-wn
+yj-fr
+ok-tm
+lr-eu
+ej-ro
+ps-mj
+mk-ge
+il-mc
+cx-lb
+ur-rz
+wd-az
+lp-lj
+lx-js
+lw-ky
+bh-no
+ns-qr
+sk-hg
+sg-qr
+mr-gk
+nv-yh
+yb-wt
+cf-bm
+dn-yi
+xu-yn
+wp-vr
+ja-eh
+bf-ol
+eh-ve
+oi-ct
+an-zs
+oq-ww
+bz-ii
+po-qj
+ko-ir
+fy-qp
+qx-nq
+xr-rw
+sy-rh
+nv-tc
+gn-ql
+yf-od
+my-yn
+ob-bd
+hk-hx
+gc-dc
+wc-oj
+cf-yg
+rc-yb
+tx-ah
+pt-bd
+hz-ck
+it-xl
+jf-rd
+cv-lh
+tb-uy
+kn-bj
+nl-cx
+xg-hv
+ip-ae
+xl-iu
+pj-pq
+oq-bi
+cm-iq
+sg-ou
+dh-bk
+hk-cs
+te-lk
+tw-wv
+tt-eb
+jp-nd
+al-uv
+bh-mx
+qk-wl
+vx-ci
+wd-mn
+ur-cz
+ku-ac
+on-vv
+wl-pq
+ja-vq
+vu-le
+kn-ja
+wm-cy
+km-td
+ye-bk
+kh-sc
+lx-ga
+wv-nf
+hz-qc
+rl-qt
+fp-av
+xj-ga
+qi-jx
+il-pw
+el-aq
+oc-gb
+vg-xm
+qv-kn
+ou-fc
+xt-gk
+in-by
+fc-qr
+gi-jp
+lz-qt
+do-su
+xs-fw
+sk-pp
+ht-xs
+yg-ex
+zq-mw
+ua-px
+cv-cs
+lq-ka
+zs-li
+pm-lj
+qc-ey
+dd-yu
+dl-sq
+bg-kt
+ao-ai
+fy-mg
+lu-ea
+ua-rl
+uk-tf
+fi-ib
+cw-no
+ym-hw
+ha-ds
+fr-lq
+rh-dh
+xz-my
+co-dc
+ky-pf
+cf-jc
+bi-mc
+vp-bz
+tp-vp
+bh-cw
+mi-ro
+gc-ha
+zc-ef
+ok-ch
+cq-uy
+hg-er
+rq-yu
+nk-sg
+qx-yt
+bn-xn
+zl-ov
+fq-mb
+ni-ex
+ij-gy
+cs-qo
+gh-zl
+pj-wl
+yj-vv
+xb-ui
+vl-qc
+ba-de
+al-xr
+yv-nb
+lh-jx
+kp-lb
+ml-xw
+bj-xx
+cd-pw
+so-wh
+bn-jq
+km-ro
+de-pn
+ha-bu
+sc-vx
+ca-hg
+my-ly
+xw-ep
+uh-bd
+fm-be
+hr-ua
+ov-sr
+lw-sr
+oy-yo
+ct-qk
+rr-sp
+ex-mf
+qt-dw
+ec-ra
+xt-ze
+sv-ap
+nc-at
+ka-yo
+yc-ge
+un-an
+ac-cl
+ku-jd
+qo-ev
+ae-da
+nm-cr
+nq-ox
+cs-ev
+ae-zc
+sn-vv
+rx-it
+kf-dn
+qn-iv
+hb-ip
+qk-ji
+lp-rj
+lf-cu
+yq-dd
+zq-mp
+ro-fx
+io-sn
+ue-fx
+zy-ai
+vq-ve
+az-mn
+mk-ty
+dq-hl
+kf-ra
+ip-zc
+wm-lq
+ms-jw
+on-jp
+gy-nf
+fy-im
+be-gr
+ez-uw
+fi-hq
+oi-lj
+fx-km
+qe-yn
+vf-oq
+fw-kx
+al-tk
+sp-le
+yi-wt
+po-pb
+ac-mb
+dn-qp
+wt-uk
+jm-er
+jv-kx
+yx-bn
+qb-sy
+qg-ib
+lk-wj
+qw-ba
+ht-tk
+ur-pu
+jc-tc
+pm-wl
+sp-eu
+bs-wp
+la-ga
+ow-ia
+nr-eb
+tx-cx
+ig-cm
+gf-vg
+xi-jt
+sd-yt
+bf-ww
+xi-ap
+ck-ga
+if-ps
+fy-dn
+cs-am
+xi-du
+yc-sv
+en-ve
+ur-lp
+ld-px
+jt-wd
+sq-lr
+pm-ji
+ap-du
+do-qw
+up-ed
+ut-vj
+at-kc
+sg-ms
+ht-al
+xy-mj
+wt-ek
+ee-zq
+kp-tx
+rh-qb
+ou-ii
+qj-hl
+mf-bm
+od-av
+mm-ep
+mn-mx
+sw-ly
+ma-ut
+rq-yq
+az-bh
+vf-ww
+dz-xt
+bu-tn
+wu-am
+lb-at
+sr-pk
+sd-ea
+ed-yv
+ea-af
+ux-ye
+ma-rx
+hq-mp
+nm-lr
+cv-ev
+tb-ri
+ac-gn
+jm-qn
+tc-wk
+wa-yn
+pt-uh
+pz-fy
+ww-il
+tt-vi
+cm-ck
+kk-rw
+ik-sk
+eo-jz
+bg-qw
+ni-mo
+ge-sl
+sn-yj
+so-wr
+ca-hd
+es-lu
+xj-wp
+yx-dh
+ku-ds
+da-ng
+bm-yh
+dc-pd
+qx-oo
+gd-zv
+pv-zw
+wu-qk
+aj-ci
+eh-kv
+dt-re
+zl-ym
+ut-ye
+le-lr
+jb-ew
+ey-hz
+qi-cs
+za-ks
+dh-qb
+qk-pq
+xl-ye
+hz-cm
+mw-wg
+yn-op
+ns-to
+fc-sg
+kt-de
+ew-yq
+yf-jf
+uo-tb
+cx-jz
+pz-yi
+sk-ca
+vl-iq
+yv-up
+gh-ov
+re-ux
+dg-oh
+ci-kh
+hr-rl
+ej-kd
+ky-hi
+rd-ps
+at-ah
+qt-ua
+wz-oh
+ae-hb
+if-ry
+yp-my
+pu-or
+fr-ep
+pz-qp
+xp-fh
+ii-uf
+jx-hk
+oq-ol
+uh-nn
+zs-by
+jt-bh
+oh-ao
+cv-qo
+nq-wq
+in-an
+vm-ip
+tz-fz
+pk-vg
+yj-ep
+wc-hr
+wa-xz
+pp-mf
+sv-sl
+td-sz
+ss-md
+rq-so
+mq-ss
+lu-gf
+al-rw
+vn-bv
+dw-hc
+bv-fq
+li-in
+wg-cu
+hl-dy
+pp-vw
+dq-qj
+xz-qe
+uv-fw
+fi-cu
+dj-sk
+fp-gc
+ka-cy
+wh-zn
+hg-sh
+xk-sv
+lg-up
+ea-wv
+wt-pv
+ub-cw
+yg-nv
+jc-wk
+jx-ev
+mg-cp
+wa-op
+jm-sk
+bz-wh
+sq-ge
+bq-um
+ii-lp
+uq-sw
+mh-xb
+bd-wj
+ed-gu
+sp-zt
+pe-gg
+lc-tt
+mg-pz
+il-cd
+co-tn
+hw-gh
+tx-jz
+bo-zn
+xw-zh
+fe-hd
+kq-an
+yc-ij
+su-dg
+js-la
+aq-dr
+tx-kc
+ah-eg
+hx-ig
+or-oq
+ko-bd
+at-eg
+ct-pj
+sn-hs
+gg-dc
+lg-yv
+qe-fd
+sv-ya
+hh-rn
+tu-no
+hv-vk
+th-kq
+so-ti
+mx-wo
+kk-xs
+ec-yw
+cl-po
+ym-tj
+es-gd
+qn-lg
+wq-cb
+nb-nd
+kt-zi
+wh-vb
+vw-ca
+aq-qj
+jw-ch
+pn-ch
+kh-xb
+qw-zy
+ry-av
+sq-se
+ia-uj
+xk-du
+xi-xk
+ub-jt
+ql-tl
+uz-pf
+eb-ek
+pb-cc
+zm-ux
+an-ss
+uy-uo
+oi-wl
+wo-ub
+ge-sv
+lg-jp
+kf-lt
+eu-dl
+zy-pm
+sq-ad
+qp-pp
+pb-ot
+cu-fo
+wv-gy
+mf-yh
+gk-zv
+zw-qi
+pm-be
+op-qe
+kv-ja
+yv-gu
+mj-if
+ln-qv
+dr-wn
+ef-np
+wf-cq
+li-un
+fo-ib
+te-tl
+hh-wm
+ks-hh
+fm-vr
+ky-md
+qi-cv
+co-nz
+ez-ox
+xy-rd
+tm-ou
+qc-ig
+bo-so
+yt-xp
+fz-rh
+fw-rw
+by-gk
+wo-cw
+on-ed
+kx-xs
+nr-zw
+vb-bo
+rl-ld
+wf-mq
+re-ye
+tb-hi
+pb-aq
+tl-nn
+ld-yd
+sd-nq
+di-uf
+sk-vw
+rd-if
+jo-fq
+am-qo
+ln-qy
+hy-hb
+mc-pw
+ar-ea
+er-nc
+bz-gb
+qy-ik
+xj-wi
+av-xu
+cg-jm
+lz-hr
+ze-zs
+qc-ga
+nd-iv
+dd-vb
+qb-mn
+es-zf
+mp-wg
+xs-al
+ea-zf
+rd-xu
+ew-zn
+ux-ut
+ed-nd
+mg-yi
+zl-vg
+bk-mm
+dj-nh
+pn-ns
+rm-ld
+hi-uo
+la-ig
+yu-yq
+bf-mc
+nm-rr
+wa-yp
+bj-qv
+dw-ld
+kd-td
+cw-nd
+uq-qe
+kv-wh
+kn-kv
+ve-qy
+dq-po
+fd-ly
+bn-sy
+kk-ht
+hd-ev
+aq-hl
+ow-wp
+ze-un
+wr-zn
+sn-xw
+cf-tc
+xs-rw
+ck-lx
+sy-nt
+zn-rq
+wh-jb
+hb-ef
+xp-cb
+wu-hd
+vg-ot
+jx-ld
+qv-dc
+sc-xg
+ej-sz
+kx-iw
+zy-dg
+am-jx
+ui-xg
+wi-fm
+ib-mw
+eo-at
+hq-ke
+vj-tb
+nr-vz
+cy-br
+ko-wj
+nf-ea
+ba-ao
+ot-dr
+bt-io
+dl-ad
+xi-yc
+zv-af
+wz-zy
+jd-mb
+kk-tk
+yh-tc
+wu-ev
+lr-sp
+ar-gd
+uz-dq
+wc-at
+wz-kt
+dq-ny
+dl-sp
+iu-vj
+mq-tb
+fw-al
+cc-ot
+cm-nh
+uw-ox
+wo-no
+vn-jd
+lx-ey
+xf-vw
+xw-fr
+ya-hi
+ry-mj
+xx-ja
+no-az
+iu-dt
+ao-do
+zv-es
+bo-ew
+ee-bq
+gy-tw
+mi-et
+eg-cx
+fb-nk
+zp-ji
+eb-tf
+lz-rl
+bv-mb
+ux-rx
+rz-gb
+uy-xz
+se-nm
+kw-ya
+vi-zw
+jq-nt
+ow-ix
+eh-dn
+cg-dj
+bh-jr
+hr-px
+md-hi
+nr-yb
+wl-lj
+xn-dh
+br-rm
+vx-sk
+vw-jm
+za-ka
+ww-et
+el-pb
+re-zm
+nf-af
+gh-pk
+tb-wf
+wi-bs
+qc-hx
+eg-kc
+bd-dk
+ml-vs
+xa-wk
+by-li
+jz-at
+lo-my
+od-jf
+jb-rq
+kt-dg
+re-ma
+nt-gl
+kd-ro
+dt-rx
+hc-wy
+ry-jf
+ml-fr
+ev-qi
+dn-im
+xp-ez
+ko-dk
+ez-sd
+vv-ti
+vl-hx
+ai-qw
+gm-du
+ga-ey
+jz-kc
+wt-nr
+ee-ib
+wo-jt
+cy-ba
+xj-fm
+fq-ac
+am-nc
+fo-lf
+iq-js
+rz-ii
+bs-vr
+vz-uk
+ec-mg
+dg-bg
+ev-hk
+sy-yx
+gy-ar
+kv-vq
+wc-vq
+gl-pj
+hb-vm
+ee-hq
+ue-wy
+md-cq
+ig-vl
+hd-qo
+ja-qy
+qa-wd
+ef-vm
+hc-qt
+pz-dn
+tc-vi
+ma-zm
+xr-kk
+xf-sy
+mh-vx
+jw-ok
+zx-tg
+be-pj
+ok-vs
+ai-oh
+ez-oo
+wa-mr
+fg-wm
+uk-lc
+ir-dk
+lf-qg
+rj-oc
+bi-ol
+dk-tl
+ln-ve
+gf-eq
+du-ya
+dz-kq
+yw-go
+dr-qj
+jd-jo
+xm-pk
+ew-so
+bv-cl
+nd-up
+fh-ox
+nd-gi
+az-wo
+lp-rz
+hz-hx
+mj-va
+ob-wj
+px-dw
+kw-yc
+it-iu
+lc-eb
+ji-hn
+jo-lg
+vf-cd
+dl-le
+ol-cd
+fo-wg
+nn-pt
+zi-vr
+kx-rw
+br-oy
+qk-be
+wh-yq
+xj-ia
+ig-js
+at-zr
+ti-zx
+tl-ir
+ok-kp
+dl-lr
+fx-ej
+cp-fy
+lc-nr
+rq-lx
+le-cr
+jf-if
+ar-wv
+oq-bf
+sz-fx
+mn-ub
+hn-pq
+ea-ij
+iw-xr
+zp-qk
+ek-da
+vr-ak
+hk-bx
+ux-tg
+gg-fp
+qy-qv
+td-ej
+rx-xl
+yi-im
+wr-rq
+pe-co
+zf-wv
+xk-yc
+gm-ya
+co-pd
+qj-cc
+li-dz
+wz-zh
+ix-xj
+eh-qv
+rc-ve
+cm-vl
+jj-dz
+ev-bx
+wi-ix
+mq-ky
+nh-vw
+qi-am
+rh-jq
+gp-dy
+bj-qy
+ec-qp
+kt-ao
+ik-vw
+qc-cm
+nk-xc
+wo-mn
+wv-af
+tn-fp
+eq-zl
+el-wn
+nb-gu
+dd-ei
+et-go
+cp-yi
+bo-dd
+ct-be
+od-va
+ou-vs
+aj-dy
+rj-uf
+ye-dt
+fc-gl
+tt-zw
+bn-nt
+yd-mw
+mo-cf
+se-cr
+go-ej
+ez-fh
+jp-um
+kc-eo
+wa-fd
+wk-bm
+be-oi
+vr-xj
+lz-yd
+ix-ia
+ln-en
+bt-ml
+uo-mq
+tm-sg
+ut-it
+xf-dh
+td-ro
+fg-no
+ig-ga
+ji-pq
+pf-md
+fi-fo
+sw-yp
+hy-vm
+yb-tt
+zi-ia
+jr-no
+dz-gk
+wz-su
+rw-ht
+oy-wm
+jm-ca
+zy-oh
+cy-yo
+fd-my
+or-ol
+yu-wh
+wv-gd
+nl-qw
+hq-xn
+qx-yy
+ur-rj
+up-um
+pt-ob
+hy-xc
+ey-la
+cq-ss
+cq-uo
+pn-ms
+ni-nv
+uv-tk
+hi-pf
+ut-bg
+mi-ue
+zh-ti
+eg-lb
+bj-en
+qj-bx
+cw-jt
+wt-tf
+gl-ms
+ri-uy
+jv-xr
+mm-xf
+uh-dk
+tu-az
+zu-gn
+tn-pe
+oz-pu
+ks-yo
+sh-hf
+le-eu
+hl-pb
+ck-qc
+oz-pw
+ch-tm
+zv-ea
+gn-jd
+vg-ym
+ec-cp
+xj-uj
+kc-cx
+qx-jd
+br-wm
+dk-pt
+mm-nt
+vp-uf
+np-ng
+fy-lt
+yh-wk
+cd-bf
+kd-fx
+ei-ew
+ld-lz
+vx-xb
+lt-pz
+jw-ou
+ak-zi
+hl-ny
+jw-sg
+pt-wj
+gp-ci
+fi-lf
+nh-ca
+kw-sl
+fw-ms
+ln-ja
+hz-ig
+ky-cq
+xj-bs
+ue-ej
+gy-rd
+or-pw
+bs-zi
+sl-ya
+xa-ni
+ac-bv
+ri-ci
+ve-cu
+wu-lh
+td-fx
+xz-op
+re-xl
+ca-sh
+ap-sl
+pp-sh
+ek-lc
+se-uh
+xy-je
+rx-ut
+tt-ek
+jb-so
+wk-cf
+yt-cb
+za-yo
+dq-yp
+zu-mb
+vk-ci
+iw-fw
+vf-ol
+fm-ak
+wy-et
+nt-yx
+xr-tu
+zp-gr
+cr-sp
+ly-yp
+bm-yg
+kw-mk
+bn-qb
+xb-aj
+cp-kf
+dy-kh
+um-iv
+um-qn
+hv-ci
+kq-zs
+zl-xm
+rc-qy
+jv-iw
+cy-fg
+xp-wq
+uy-wf
+ga-iq
+nz-pd
+zq-hq
+yp-lo
+io-yj
+xj-ow
+tt-hg
+fg-lq
+bm-tc
+zw-yb
+ky-tb
+ad-se
+li-ze
+ee-cu
+kx-tk
+if-je
+dq-aq
+nh-ik
+fb-ip
+bm-ex
+gn-ug
+ec-kf
+ga-hz
+ny-el
+fe-hk
+jr-wo
+nd-qn
+kc-fo
+xi-gm
+rh-mm
+af-lu
+um-ed
+ti-io
+ya-mk
+hq-mw
+jx-hd
+xp-ao
+mn-tu
+ky-uy
+yd-px
+ur-bz
+ji-ct
+mi-wy
+xf-xn
+jv-vr
+gm-sl
+ek-uk
+ei-ev
+gr-hn
+hk-cv
+lo-op
+cb-li
+rr-ym
+aj-vx
+uv-jv
+dh-kf
+bf-bi
+kd-wy
+jd-ql
+mg-ke
+xw-zx
+bv-ug
+zs-gk
+di-rz
+ok-fc
+lj-zp
+tm-ns
+qc-iq
+vk-zu
+sh-vw
+cl-zu
+pm-qk
+oc-cz
+nb-gi
+qp-ke
+nl-kp
+od-if
+ik-hg
+kn-qy
+qq-xm
+lb-jz
+de-zy
+co-ds
+nk-hb
+xp-yy
+nk-da
+xf-bn
+jb-ei
+yx-fz
+do-ba
+oo-wq
+de-bg
+gd-ea
+br-ka
+xt-th
+jw-qr
+kp-jz
+my-sw
+aq-jf
+br-lq
+eb-mx
+cm-ga
+ly-op
+kv-rc
+nc-jz
+en-kv
+ak-ia
+or-bi
+mc-ww
+ve-xx
+lr-fc
+tk-fw
+ci-ui
+yt-nq
+vx-vk
+al-tz
+tz-kx
+sv-mk
+oy-ho
+yh-ni
+cg-sh
+dq-cc
+qc-js
+eu-cr
+ik-cg
+ry-rd
+yq-jb
+zw-eb
+wh-dd
+pb-qj
+fz-jq
+wa-my
+vr-ow
+qk-lj
+sc-aj
+mr-op
+hc-oj
+sw-xz
+ko-tl
+re-tg
+op-tj
+go-wy
+wd-qc
+wy-sz
+tu-wd
+wj-te
+mx-no
+zx-ep
+ti-ml
+ij-af
+lk-ob
+ld-wc
+wq-yy
+ov-ym
+bf-vf
+zl-hw
+ld-oj
+ti-fr
+mi-td
+gb-uf
+gi-iv
+im-ke
+wk-ex
+qg-fo
+aj-mh
+xt-li
+rc-ln
+pk-ov
+tf-pv
+my-op
+uh-ko
+ks-fg
+cm-la
+yb-ek
+lu-nf
+kk-kx
+mo-zn
+il-yx
+dq-pb
+cq-hi
+mf-tc
+nk-ef
+hw-dz
+qq-eq
+ww-oz
+vk-ui
+oi-qk
+zt-lr
+bu-mp
+wu-cv
+in-jj
+dl-se
+se-vu
+lq-cy
+rl-oj
+pf-ri
+qv-xx
+pd-fp
+fg-ho
+oz-vf
+ip-da
+oo-cb
+in-xt
+mw-ee
+iw-rj
+kt-zy
+oz-cd
+gr-oi
+pv-lc
+lq-ks
+xm-gf
+jo-ug
+ja-bj
+qb-jq
+yw-km
+zr-kp
+hv-xb
+vw-er
+zc-da
+eb-pv
+jq-xn
+sd-xp
+nn-dk
+vv-ep
+uz-aq
+ob-gg
+tu-jr
+mc-cd
+mg-im
+uq-ly
+wd-no
+xu-je
+ux-xl
+hc-lz
+dy-ui
+rz-cz
+kv-ve
+mx-cw
+xa-ex
+qn-ed
+lf-zq
+yh-yg
+yv-vb
+kk-fw
+gb-di
+oz-bi
+ut-tg
+tf-yb
+du-sv
+ai-do
+lu-ar
+fm-uj
+oi-pm
+nm-sq
+kf-pz
+cq-tb
+zp-be
+ty-yl
+bz-tp
+ln-xx
+je-mj
+uz-ny
+gg-tn
+zq-ib
+ze-th
+oq-pu
+bu-pe
+cq-vn
+ss-ky
+xn-yx
+ir-yl
+zr-jz
+tz-xs
+da-ef
+np-nk
+ej-ib
+nv-mo
+ak-to
+sr-qq
+bs-to
+at-nl
+rz-rj
+og-nz
+ox-yt
+tc-ex
+ca-hf
+oj-dw
+cg-hg
+nl-lb
+xp-qx
+ba-bg
+gl-qr
+rr-sq
+iq-hx
+ya-ge
+wt-zw
+yg-jc
+cu-zq
+pz-im
+to-zi
+lt-yi
+ge-xk
+wm-yo
+qr-ok
+mp-fi
+ol-oz
+cz-uf
+uz-pb
+it-pw
+en-eh
+ml-zx
+jq-uo
+qk-gr
+oc-tp
+cz-di
+bd-lk
+jf-va
+kh-mh
+ix-to
+hk-wu
+zc-hy
+gr-ji
+ij-es
+hw-gf
+ld-ua
+qb-yx
+yl-nn
+rq-ei
+fq-zu
+jo-gn
+jc-yh
+yl-pt
+yi-fy
+ib-bq
+ue-kn
+px-rl
+nh-jm
+nc-eg
+jw-vs
+pz-ke
+aj-gp
+xk-mk
+uz-po
+cr-sq
+hs-io
+uk-tt
+yy-oo
+zr-ah
+ii-cz
+rj-vp
+lo-uq
+qp-lt
+se-eu
+zt-se
+ri-ss
+lq-hh
+dw-yd
+mk-ap
+ek-pv
+qo-hk
+ig-vz
+hh-zs
+lp-oc
+gr-wl
+el-dq
+hy-ng
+um-yv
+km-kt
+hq-qg
+vx-dy
+fx-yw
+vv-xw
+mi-ej
+bi-il
+wa-cd
+kw-du
+tw-nm
+vm-ng
+ue-km
+bu-pd
+ga-hx
+bt-ti
+bd-ir
+yu-jb
+ub-mx
+xl-tg
+kq-in
+ba-ai
+tp-dg
+el-uz
+pu-cd
+ss-lw
+qg-wg
+ej-km
+ty-xi
+uh-ob
+ub-bh
+ck-hx
+ni-cf
+ze-gk
+no-mn
+ed-jp
+kx-kd
+rn-lq
+oi-hn
+su-de
+mg-ra
+oo-uw
+uw-eq
+xa-tc
+qp-kf
+tf-ek
+vi-uk
+fw-tz
+fp-bu
+rn-cy
+yf-av
+fh-yt
+xc-ip
+je-ps
+lt-cp
+co-gg
+ii-oc
+wl-ji
+vz-zw
+tj-sr
+bt-zx
+vg-eq
+ha-tn
+tu-mx
+zr-td
+ka-ho
+mp-qg
+wh-ew
+pt-ov
+pj-ji
+ue-td
+cs-hd
+er-ca
+ah-lb
+ps-va
+cc-hl
+pf-mq
+gp-gh
+hy-ef
+tz-xr
+ei-wr
+en-kn
+ej-wy
+vb-yu
+sl-kh
+fy-ec
+hn-pj
+um-gu
+ku-sq
+eq-gh
+dh-sy
+pz-cp
+az-jt
+it-dt
+qr-ol
+gp-xg
+ms-fc
+kw-xk
+ri-cq
+hv-sc
+gl-jw
+lw-wf
+ka-wm
+ds-tn
+dh-fz
+oy-hh
+ef-xc
+or-ww
+sr-gf
+vk-dy
+yn-mr
+ec-pz
+ss-hi
+gi-ed
+uj-to
+je-av
+wo-tu
+cc-wn
+vp-bt
+ee-dj
+da-np
+bz-rz
+ty-ge
+yg-ni
+vp-ur
+hz-iq
+nn-bd
+sp-vu
+ir-ob
+hh-ho
+km-hf
+px-rm
+wr-dd
+ly-yn
+bq-lf
+gl-pn
+ry-yf
+wc-ua
+lj-pq
+wd-bh
+du-ge
+ar-tw
+hf-cg
+sz-km
+zc-vm
+og-pd
+bk-xn
+ha-pd
+af-uq
+ib-wg
+fg-oy
+lp-cz
+ja-rc
+cm-lx
+ox-cb
+de-dg
+sy-jq
+bk-xf
+dn-ra
+mo-jc
+mm-fz
+wn-yu
+vs-fc
+di-ur
+zc-np
+gm-ry
+lk-dk
+jv-tz
+my-xb
+gc-gg
+zf-af
+lp-vp
+hh-cy
+cb-fh
+wy-ro
+ua-hc
+ik-sh
+ly-mr
+oh-uv
+ri-mq
+ec-qt
+kc-kp
+mb-ql
+nl-jz
+to-ia
+ma-vj
+vf-pw
+ns-ch
+uw-if
+wu-bx
+ho-ht
+vl-ck
+zy-do
+tp-di
+hr-rm
+js-cm
+qp-ra
+gi-nv
+lg-um
+vk-aj
+tc-yg
+jt-mn
+pm-ct
+qq-pk
+be-pq
+jo-ku
+vi-nr
+nv-wk
+rx-iu
+co-xm
+qc-lx
+gb-ii
+xx-eh
+yd-oj
+pn-vs
+bf-or
+bi-vf
+qg-cu
+pu-ww
+la-lx
+ir-es
+tm-pn
+tz-rw
+xf-qb
+er-dj
+xt-zs
+xc-fe
+lc-di
+lh-ev
+ku-mb
+jm-ik
+mj-eu
+hw-ov
+wp-ix
+np-pq
+ka-hh
+wr-vz
+vw-hg
+xg-kh
+bq-fi
+bn-mm
+mm-jq
+tt-nr
+ra-lt
+hr-ld
+ku-zu
+tf-lc
+jm-sh
+xc-ng
+gl-ns
+yx-jq
+bg-su
+uf-ow
+ck-js
+av-ps
+fz-qt
+ar-af
+ga-js
+fg-yo
+to-ow
+hv-ko
+al-ww
+yj-ti
+ez-cb
+tp-rz
+kp-nc
+uh-lk
+tm-vs
+ol-pu
+cr-md
+kn-ve
+il-oq
+kq-fq
+po-hl
+ah-nl
+vn-mb
+xp-nq
+za-hh
+bg-zy
+nq-oo
+or-cd
+fq-ug
+qq-zl
+ja-en
+la-iq
+rl-tk
+lk-tl
+kf-im
+eg-jz
+jq-xf
+lk-nn
+gb-cz
+mc-rq
+ar-nf
+oq-ip
+lg-iv
+sw-yn
+lr-vu
+jt-jr
+zc-fb
+dr-ha
+qv-ve
+rc-vq
+an-jj
+lf-jr
+vg-qq
+ek-vz
+sc-xb
+zu-vn
+jx-cs
+nn-ir
+vm-np
+ns-ok
+bs-ow
+ro-ue
+sc-dy
+gc-ar
+fz-sy
+zs-jj
+oq-pw
+jp-gu
+tu-cw
+gl-ch
+mx-wd
+ug-ac
+sp-se
+yn-fd
+qo-bx
+ko-nn
+ks-cx
+ad-pd
+nb-la
+gu-iv
+nm-zt
+il-oz
+yj-bt
+vr-uj
+pw-bi
+ux-ji
+pm-gr
+ug-jd
+dq-dr
+ky-wf
+tm-gl
+pf-lw
+if-xu
+vg-gh
+lk-yl
+jf-mj
+go-fx
+ar-zf
+mf-mo
+in-th
+cc-aq
+uj-ix
+zl-gf
+so-zn
+co-fp
+yh-cf
+mq-hi
+cy-ho
+oo-yt
+pf-ss
+za-fg
+vs-ch
+ak-ew
+oo-pe
+lp-di
+gi-yv
+vp-gb
+ch-ou
+um-nb
+rw-yf
+ev-fe
+er-sk
+ky-ri
+ae-xx
+xi-mk
+mn-qa
+rr-lr
+ua-rm
+oi-zp
+fo-hq
+go-sz
+xx-rc
+ox-xp
+wi-ia
+bv-jo
+sg-gl
+at-tx
+kd-ue
+dz-th
+iq-ck
+bf-pw
+cb-sd
+js-vl
+vw-cg
+xm-tj
+ho-za
+zy-ba
+cd-ww
+no-jt
+or-vf
+vu-sq
+ct-zp
+zn-dd
+tg-vj
+eq-tj
+pm-pq
+nr-tf
+uv-kk
+hn-be
+wg-bq
+bh-tu
+mb-gn
+mf-xa
+pb-ya
+ps-od
+ue-sz
+sg-ns
+yd-wc
+fd-yp
+op-uq
+vu-ad
+hg-nh
+mn-bh
+in-zs
+fo-zq
+nv-ex
+tj-hw
+og-pe
+xa-bm
+ha-gg
+qy-en
+yn-yp
+ia-bs
+be-lj
+xs-eg
+ov-eq
+cz-bz
+je-yf
+pe-fp
+wv-ij
+go-yy
+zw-lc
+xc-ae
+ux-iu
+wj-tl
+xy-od
+kq-bu
+yi-wv
+jt-qa
+cm-hx
+ii-ur
+kw-xi
+ha-fp
+kd-mi
+pp-cg
+le-gb
+nq-yy
+ty-kw
+rr-se
+so-ei
+mg-dn
+nc-lb
+by-dz
+dr-cc
+rc-eh
+ac-vn
+ee-fi
+bk-bn
+rj-cz
+vi-pv
+kv-qy
+ml-zh
+oh-qw
+vq-en
+tf-tt
+cq-pf
+pk-eq
+eb-vz
+ui-kh
+wa-qe
+wy-km
+bi-ww
+lt-dn
+zv-nf
+qy-eh
+jo-cl
+zi-uj
+zf-zv
+di-oc
+zc-wk
+mo-bm
+qe-sw
+po-aq
+dl-vu
+ef-ip
+wm-za
+km-et
+yd-hr
+tw-ea
+fb-gu
+sn-du
+fg-rn
+ke-lt
+jx-qg
+gg-og
+nl-eo
+md-ri
+ty-ap
+bt-sn
+cr-zt
+uv-rw
+dr-hl
+td-yw
+ot-ny
+xy-jf
+yv-iv
+ya-xk
+hn-lj
+hc-rm
+ln-bj
+by-un
+ds-dc
+am-ev
+fp-dc
+bx-qi
+ds-nz
+uq-xz
+rh-xn
+co-og
+ke-ec
+vb-so
+ng-bo
+lz-dw
+um-on
+sw-wa
+ey-cm
+iq-ja
+de-oh
+an-gk
+gk-in
+xy-yf
+wv-zv
+re-kk
+ka-fg
+kh-vx
+it-re
+vr-ix
+zh-sn
+pn-ok
+ti-ep
+hh-br
+ip-hy
+wq-uw
+ox-qx
+vn-ug
+yx-xf
+uo-ri
+uj-wi
+fd-op
+wi-zi
+cq-lw
+ek-zw
+va-ry
+vm-fb
+kv-qv
+ym-xm
+dy-ci
+vz-pv
+ty-xk
+co-ha
+wg-ee
+qw-wz
+ku-ug
+ri-hi
+bq-qg
+mq-md
+fm-to
+cv-fe
+bt-hs
+io-vv
+vn-fq
+zf-gd
+wa-lo
+ms-ch
+mq-lw
+ua-lz
+jb-wr
+jc-ex
+nb-jp
+wc-px
+gd-gy
+nf-ij
+pw-ww
+ng-ae
+cl-ql
+pf-uo
+pd-tn
+ds-bu
+ae-fb
+cf-or
+re-iu
+lu-gd
+ap-xk
+pn-ou
+vr-ia
+zn-yq
+ly-lo
+cp-ke
+ci-xg
+sd-fh
+nb-on
+lc-wt
+oh-bg
+ik-pp
+dy-mh
+uq-yp
+hc-wc
+xn-fz
+cr-lr
+so-yu
+rj-ii
+ix-ak
+yf-rd
+wr-yu
+ob-nn
+bf-oz
+ug-ql
+ox-xg
+oz-mc
+la-ck
+gi-um
+ez-yt
+vv-fr
+rd-mj
+gp-vk
+do-kt
+xg-nz
+yc-ty
+sy-bk
+lc-vi
+kq-jj
+vx-ui
+li-an
+gm-sv
+dd-nh
+vi-yb
+ir-uh
+zm-sz
+tz-ht
+wj-ir
+mc-oq
+ui-aj
+lt-ec
+qq-gf
+ya-ap
+zr-tx
+jz-rh
+jf-av
+yq-bo
+yi-ra
+bs-ak
+su-ba
+za-cy
+zm-iu
+ke-dn
+pt-ko
+wl-bi
+iu-ut
+pb-wn
+fi-wg
+ym-gf
+tg-it
+jv-al
+dw-wc
+fq-ku
+tx-nl
+nb-ed
+kf-yi
+xr-uv
+zx-io
+zt-dl
+za-oy
+en-rc
+oo-xp
+ro-rn
+qt-px
+oy-rn
+tm-fc
+xb-gp
+hf-nh
+xw-hs
+ny-aq
+br-fg
+ub-jr
+zn-jb
+eo-vl
+mb-cl
+oy-vp
+gm-ap
+wj-yl
+sl-ty
+if-yf
+xl-vj
+di-rj
+ol-mc
+zm-xl
+el-qj
+pu-bi
+lh-fe
+tw-zv
+dl-nm
+hk-lh
+uh-wj
+hb-ma
+tx-eg
+kc-nl
+ug-cl
+un-jj
+up-gu
+qq-ym
+vl-la
+wj-nn
+xa-nv
+ij-lu
+ac-jo
+gy-zv
+nz-bu
+bq-cu
+tx-en
+nt-bk
+og-tn
+sc-ci
+kk-al
+ni-hz
+wi-vr
+pp-hf
+ci-mh
+uj-iv
+nr-pv
+ry-xy
+er-cg
+qq-hw
+am-fe
+lo-mr
+ak-ow
+ze-an
+ou-ms
+cc-uz
+wm-ks
+xm-sr
+ch-qr
+nf-es
+ks-ka
+lo-sw
+xz-yn
+ej-yw
+yt-yy
+xr-xs
+oy-cy
+zy-su
+im-qp
+aq-ot
+se-le
+zx-fr
+xt-by
+hy-np
+eu-sq
+an-xt
+lb-kc
+be-ji
+zq-wg
+vv-ml
+jw-tm
+by-th
+pt-lk
+ou-qr
+qa-lb
+fq-jd
+td-wy
+fy-ai
+ua-dw
+mf-yg
+rx-tg
+rn-ho
+wd-vq
+wj-wf
+fh-uw
+pd-pe
+jj-xt
+bm-ni
+iu-tg
+xl-dt
+ip-np
+mf-nv
+gh-tj
+tw-lu
+ry-od
+lg-on
+gc-tn
+pu-vf
+zp-hn
+vx-gp
+ql-ac
+tw-gd
+xx-kv
+su-ol
+bx-fe
+xi-ge
+nm-vu
+yw-sz
+zi-ix
+cl-jd
+yq-so
+ds-gc
+gh-sr
+kq-li
+te-nn
+pd-ds
+wr-ew
+fd-sw
+nc-tx
+sd-yy
+zh-ep
+eq-hw
+pj-gr
+go-ue
+fc-pn
+lo-fd
+ua-az
+qo-xa
+nr-uk
+wz-do
+mw-fo
+hn-ct
+oi-pj
+iv-jp
+dr-po
+va-if
+sn-ep
+ug-mb
+up-iv
+uy-mq
+og-ds
+rq-dd
+uo-ss
+yu-ew
+ml-hs
+jw-mi
+ly-wa
+iw-ht
+wv-lu
+in-bd
+zm-rx
+eh-kn
+ex-mo
+bg-ai
+zx-yj
+fo-ee
+xa-ln
+kq-by
+do-oj
+ib-lf
+sz-mi
+bf-pu
+vl-hz
+bv-jd
+js-ac
+op-sw
+rr-dl
+sd-uw
+ba-dg
+qn-gu
+cu-mw
+pp-dj
+tf-vz
+sw-mr
+yp-xz
+wl-zp
+wn-aq
+yl-dk
+hf-hg
+rz-oc
+it-ye
+ja-ve
+tw-ij
+lk-cc
+ai-kt
+jm-dj
+nl-eg
+ho-wm
+et-td
+ns-ms
+ee-lf
+lw-ri
+nm-eu
+ad-le
+uq-fd
+fx-wy
+cz-ex
+gn-fq
+kk-tz
+ma-ye
+sp-th
+hy-nk
+za-ye
+fh-yy
+so-dd
+pn-jw
+nt-xn
+lt-mg
+it-ma
+et-ej
+bo-rq
+lr-ad
+ei-yq
+lp-gb
+po-wn
+re-vj
+ho-ks
+uv-ht
+yl-bd
+wu-qi
+og-bu
+su-qw
+kd-bn
+dk-ob
+pf-tb
+qr-vs
+ij-ar
+gc-co
+qi-hd
+cp-ra
+tb-lw
+dr-el
+gd-nf
+ey-js
+el-cc
+la-hz
+ha-og
+cs-jp
+uf-rz
+gy-zf
+kx-ht
+ym-gh
+fm-ia
+ml-yj
+hw-pk
+jc-xw
+cv-hd
+dz-un
+xm-gh
+hc-rl
+vq-kn
+th-li
+gn-bv
+ur-gb
+gn-vn
+hq-ib
+cr-ad
+su-ao
+qn-on
+ps-jf
+ct-pq
+xz-ly
+sn-ml
+ra-ah
+fq-ql
+wc-rm
+iw-tz
+oo-sd
+ze-by
+zu-ac
+er-hf
+wq-yt
+dc-ha
+jx-wu
+mj-xu
+br-yo
+wg-la
+qj-uz
+sn-ti
+xu-jf
+yp-qe
+mm-dh
+ez-qx
+bx-hd
+lx-hx
+cw-qa
+rd-od
+jx-bx
+fr-hs
+jx-fe
+ny-po
+nz-gg
+ex-cf
+vz-yb
+mr-my
+bj-kv
+ra-pz
+do-de
+zm-tg
+cz-ae
+jb-dd
+bj-ve
+jf-je
+zx-zh
+xr-ht
+ez-wq
+ct-gr
+eu-rr
+iq-lx
+hi-wf
+rm-oj
+zh-yj
+lw-hi
+nm-ad
+in-dz
+ql-jo
+ns-vs
+gk-th
+rm-qt
+bh-qa
+dg-qw
+ob-tl
+mi-yw
+ha-pe
+lz-px
+sv-xi
+gg-bu
+gr-pq
+rc-qv
+mn-cw
+dc-tn
+cl-ku
+vm-nk
+gb-tp
+io-xw
+ef-ey
+gi-gu
+ok-gl
+vk-mh
+ue-et
+jr-cw
+kw-sv
+wc-rl
+lo-qe
+yy-uw
+mh-gp
+bn-rh
+nh-cg
+qq-ia
+ck-ey
+eu-zt
+hr-oj
+rd-je
+js-hx
+fm-ix
+mi-fx
+uw-nq
+ds-fp
+ao-bg
+ir-lk
+hn-qk
+cx-kp
+hf-sk
+wu-fe
+ca-pp
+io-ml
+xr-kx
+wf-ri
+mq-cq
+wz-ba
+sw-pv
+jv-ht
+pq-bm
+ed-zp
+ss-wf
+ao-de
+vi-ek
+mx-az
+bj-vq
+np-ti
+fx-wo
+ib-cu
+kf-mg
+wc-lz
+wq-sd
+te-dk
+xt-po
+md-je
+tk-rw
+rj-gb
+ap-yc
+ur-uf
+qi-hk
+up-qn
+yd-rl
+bh-wo
+ui-sc
+lj-pj
+vq-ln
+ka-rn
+pw-ol
+cv-bx
+qb-mm
+zu-jo
+ho-lq
+hs-yj
+uh-yl
+fz-xf
+wm-rn
+qw-de
+le-nm
+no-qa
+rh-yx
+dw-rm
+kn-rc
+uk-zq
+ov-xm
+hq-lf
+iq-ey
+dw-hr
+eo-ah
+jr-wd
+jx-qo
+nv-jc
+cd-oq
+cr-dl
+bq-fo
+ei-vb
+jt-tu
+jm-hf
+wp-vm
+ao-dg
+ei-wh
+wk-mo
+np-xc
+sz-kd
+qo-wu
+yh-ex
+eb-yb
+tj-gf
+fd-mr
+fx-et
+zi-xj
+vj-ye
+ng-ip
+oc-bz
+gp-sc
+te-yl
+ni-mf
+xt-kq
+iw-tk
+wn-ot
+mi-go
+te-qe
+cu-hq
+bm-nv
+jw-ns
+sg-ch
+ez-nq
+jj-ze
+mg-qp
+np-fb
+ef-ae
+yo-lq
+nz-tn
+ue-yw
+io-ep
+tk-jv
+tk-tz
+qt-ld
+xy-va
+nl-zr
+dk-wj
+fe-qi
+un-th
+dw-rl
+fw-xr
+uw-xp
+yy-cb
+ow-zi
+iv-nb
+tt-pv
+ot-hl
+hv-mh
+md-uo
+dz-ze
+zf-mb
+qt-hr
+uq-yn
+xl-uj
+ut-dt
+xs-iw
+lk-ko
+hc-hr
+hd-am
+rx-re
+iw-uv
+kc-ah
+tj-pk
+lb-zr
+bk-jq
+hx-la
+fb-ng
+im-ra
+lz-oj
+sh-px
+vp-rz
+ig-ck
+wq-qx
+tk-xs
+kc-zr
+nl-nc
+yp-op
+yy-ez
+hc-ld
+wl-ct
+sl-du
+rh-nt
+lb-tx
+yc-cb
+ub-wd
+kk-jv
+ln-eh
+yg-wk
+vg-ov
+fd-ap
+wa-uq
+av-mj
+uj-wp
+md-uy
+ei-bo
+xx-vq
+te-ko
+yt-dl
+ku-bv
+on-up
+fe-qo
+vz-vi
+kf-ke
+xu-va
+af-tw
+cf-xa
+rj-tp
+gg-ds
+gm-xk
+ob-ko
+qa-mx
+bt-ep
+xg-xb
+fm-zi
+ut-xl
+cg-bh
+zt-le
+aj-hv
+de-wz
+ku-vn
+tc-mo
+zt-sc
+jv-fw
+to-wp
+bz-uf
+mc-vf
+oc-vp
+eh-vq
+ny-wn
+fp-og
+wo-qa
+xm-hw
+ql-bv
+zw-tf
+eq-jc
+pn-qr
+lx-hz
+gm-ge
+tl-uh
+qe-ly
+hi-uy
+hn-pm
+iv-on
+ng-ef
+xc-vm
+xz-lo
+hl-el
+qy-xx
+lu-zf
+mc-or
+ee-qg
+hd-hk
+ak-wi
+pd-gc
+sq-le
+fz-qb
+hg-dj
+tj-qq
+nd-um
+lo-yn
+vm-ae
+on-gi
+fo-mp
+el-po
+bz-lp
+ot-el
+wk-ni
+ye-tg
+vw-hf
+zh-hs
+un-in
+zt-sq
+zq-fi
+ox-yy
+my-qe
+sh-er
+az-cw
+qt-oj
+rh-bk
+nz-dc
+gu-nd
+sh-dj
+bs-bf
+xi-sl
+ov-gf
+aj-kh
+kw-tn
+kk-iw
+qv-cv
+yd-hc
+vb-jb
+og-dc
+jj-th
+kq-ze
+il-vf
+av-va
+br-ks
+mx-jr
+wf-pf
+wz-dg
+sk-nh
+vk-sc
+kx-al
+gd-lw
+bj-rc
+jp-qn
+qn-gi
+kn-ln
+mc-pu
+qi-qo
+hf-ik
+dt-ou
+ps-xy
+oo-fh
+eb-uk
+wu-cs
+cd-bi
+oo-ox
+kw-ap
+ep-hs
+zf-ij
+mn-jr
+vu-eu
+kh-hv
+lt-lq
+sr-hw
+iw-al
+ot-dq
+ms-qr
+pk-zl
+wv-es
+qo-lh
+ot-qj
+ut-zm
+nd-on
+wz-bg
+kc-nc
+ai-wz
+xk-sl
+vv-bt
+va-je
+cx-nc
+oj-ua
+qx-sd
+dz-zs
+jz-ah
+wl-hn
+nq-cb
+oi-pq
+da-vm
+uk-yb
+uq-mr
+yq-wr
+mj-od
+po-ot
+ng-nk
+yw-kd
+wq-dk
+bq-mw
+yq-vb
+sy-su
+xa-yg
+hl-uz
+ip-nk
+nf-tw
+qe-mr
+ot-uz
+ox-wq
+rd-av
+fb-da
+uy-pf
+ba-kt
+xu-yf
+hz-js
+dw-rx
+bk-fz
+od-je
+gr-nf
+gm-yc
+te-uh
+ur-tp
+dr-ny
+eg-zr
+mh-hy
+yi-qp
+aj-jj
+ui-lu
+rm-yd
+ec-dn
+yx-mm
+zq-qg
+vk-ry
+ey-hx
+ok-ou
+zy-ao
+vn-ql
+xg-dy
+eo-zr
+ey-vl
+tf-vi
+sp-cc
+ck-oi
+hg-pp
+bn-dh
+sr-xk
+uf-lp
+wi-to
+xn-sy
+xb-ci
+qx-cb
+ra-fy
+tf-zp
+mp-cu
+vb-ew
+xy-xu
+ad-eu
+fy-ke
+vb-wr
+oh-su
+dj-ca
+dh-jq
+zl-ps
+vv-zh
+oj-px
+eo-lb
+mp-ee
+fb-ef
+lj-ji
+bo-wr
+di-bz
+fi-jb
+zu-ug
+vf-hs
+iu-yg
+gu-lg
+eh-bj
+nd-yv
+dt-ma
+hs-vv
+fg-hh
+ye-rx
+wt-tt
+yd-qt
+zt-vu
+lj-ct
+ow-uj
+af-es
+cy-ks
+lg-gi
+sh-nh
+zu-jd
+vu-cr
+nt-xf
+pu-pw
+wn-uz
+gk-li
+kt-qw
diff --git a/2024/23/test b/2024/23/test
@@ -0,0 +1,32 @@
+kh-tc
+qp-kh
+de-cg
+ka-co
+yn-aq
+qp-ub
+cg-tb
+vc-aq
+tb-ka
+wh-tc
+yn-cg
+kh-ub
+ta-co
+de-co
+tc-td
+tb-wq
+wh-td
+ta-ka
+td-qp
+aq-cg
+wq-ub
+ub-vc
+de-ta
+wq-aq
+wq-vc
+wh-yn
+ka-de
+kh-ta
+co-tc
+wh-qp
+tb-vc
+td-yn
diff --git a/2024/learned.txt b/2024/learned.txt
@@ -10,3 +10,4 @@ List of things I learned (or refreshed) with this year's AoC.
* Day 9: std::views
* Day 11: if(init; cond)
* Day 19: more practice with std::string_view for constant string
+* Day 22: std::views::values for map (and keys)