diff --git a/day23/c/day23 b/day23/c/day23 new file mode 100755 index 0000000..539cc96 Binary files /dev/null and b/day23/c/day23 differ diff --git a/day23/c/day23.c b/day23/c/day23.c new file mode 100644 index 0000000..a813807 --- /dev/null +++ b/day23/c/day23.c @@ -0,0 +1,199 @@ +#include +#include +#include +#include + +#define CHARS_MAX 6 +#define MAX_LINKS 16*1024 +#define MAX_NODES 8*1024 + +typedef struct link { + char left[2]; + char right[2]; +} link_t; + +int cmp(const void* a, const void* b) { + const char (*pa)[2] = a; + const char (*pb)[2] = b; + + if ((*pa)[0] != (*pb)[0]) { + return (*pa)[0] - (*pb)[0]; + } + + return (*pa)[1] - (*pb)[1]; +} + +int main() { + char *p, *buf, c; + + buf = calloc(CHARS_MAX, sizeof(char)); + p = buf; + + link_t *links = calloc(MAX_LINKS, sizeof(link_t)); + int link_count = 0; + + while ((c = getchar()) != EOF) { + *p++ = c; + if (c != '\n') { + continue; + } + + links[link_count].left[0] = buf[0]; + links[link_count].left[1] = buf[1]; + links[link_count].right[0] = buf[3]; + links[link_count].right[1] = buf[4]; + link_count++; + + memset(buf, 0, CHARS_MAX); + p = buf; + } + + free(buf); + + // Find unique nodes + char (*nodes)[2] = calloc(MAX_NODES, sizeof(nodes[0])); + int node_count = 0; + + for (int i = 0; i < link_count; i++) { + // Add left + int found = 0; + for (int j = 0; j < node_count; j++) { + if (!memcmp(nodes[j], links[i].left, sizeof(nodes[0]))) { + found = 1; + break; + } + } + if (!found) { + memcpy(nodes[node_count++], links[i].left, sizeof(nodes[0])); + } + // Right + found = 0; + for (int j = 0; j < node_count; j++) { + if (!memcmp(nodes[j], links[i].right, sizeof(nodes[0]))) { + found = 1; + break; + } + } + if (!found) { + memcpy(nodes[node_count++], links[i].right, sizeof(nodes[0])); + } + } + + // Create adjacency matrix + uint8_t **adjacency = calloc(node_count, sizeof(adjacency[0])); + for (int i = 0; i < node_count; i++) { + adjacency[i] = calloc(node_count, sizeof(adjacency[0][0])); + } + + for (int i = 0; i < node_count; i++) { + for (int j = 0; j < node_count; j++) { + if (i == j) { + adjacency[i][j] = 1; + } + // Check if there's a link from i to j + for (int k = 0; k < link_count; k++) { + if (!memcmp(links[k].left, nodes[i], sizeof(nodes[0])) && !memcmp(links[k].right, nodes[j], sizeof(nodes[0]))) { + adjacency[i][j] = 1; + break; + } + if (!memcmp(links[k].right, nodes[i], sizeof(nodes[0])) && !memcmp(links[k].left, nodes[j], sizeof(nodes[0]))) { + adjacency[i][j] = 1; + break; + } + } + } + } + free(links); + + uint64_t groups = 0; + // Check each node that starts with 't' + for (int i = 0; i < node_count; i++) { + for (int j = i; j < node_count; j++) { + if (i == j || adjacency[i][j] == 0) { + continue; + } + + // We have a link from i to j + // Check if there's a k in j's neighbors that has a link to i + for (int k = j; k < node_count; k++) { + if (k == j || k == i || adjacency[j][k] == 0 || adjacency[k][i] == 0) { + continue; + } + + // At least one 't' + if (nodes[i][0] != 't' && nodes[j][0] != 't' && nodes[k][0] != 't') { + continue; + } + groups++; + } + } + } + + printf("%lu\n", groups); + + uint64_t largest_conn_count = 0; + for (int i = 0; i < node_count; i++) { + uint64_t connections = 0; + for (int j = 0; j < node_count; j++) { + if (adjacency[i][j] == 1) { + connections++; + } + } + if (connections > largest_conn_count) { + largest_conn_count = connections; + } + } + + for (int i = 0; i < node_count; i++) { + // Get connected node idxs + int *connected = calloc(largest_conn_count, sizeof(connected[0])); + int count = 0; + for (int j = 0; j < node_count; j++) { + if (adjacency[i][j]) { + connected[count++] = j; + } + } + + // Check whether everyone is connected with everyone + int good = 1; + for (int l = 0; l < count; l++) { + for (int j = 0; j < count; j++) { + for (int k = 0; k < count; k++) { + if (adjacency[connected[j]][connected[k]] == 0 && l != j && l != k) { + good = 0; + break; + } + } + if (!good) { + break; + } + } + if (good) { + char (*formatted)[2] = calloc(count - 1, sizeof(formatted[0])); + int formatted_count = 0; + for (int j = 0; j < count; j++) { + if (j != l) { + memcpy(formatted[formatted_count++], nodes[connected[j]], sizeof(nodes[0])); + } + } + qsort(formatted, count - 1, sizeof(char[2]), cmp); + for (int j = 0; j < count - 1; j++) { + printf("%c%c", formatted[j][0], formatted[j][1]); + if (j != count - 2) { + printf(","); + } + } + printf("\n"); + } + } + + free(connected); + } + + + for (int i = 0; i < node_count; i++) { + free(adjacency[i]); + } + free(adjacency); + free(nodes); +} diff --git a/day23/input.txt b/day23/input.txt new file mode 100644 index 0000000..9dce6bc --- /dev/null +++ b/day23/input.txt @@ -0,0 +1,3380 @@ +ht-nz +pt-uj +nr-me +qq-up +zr-pa +ly-wv +ei-ry +sm-md +rr-rw +rq-ma +gw-lk +hq-td +ri-mt +lt-oi +fc-ub +yh-ob +dj-va +bf-rl +yx-ol +md-od +so-dv +ks-nw +mv-fh +sr-fs +qy-ne +tz-tl +kr-kq +xi-nn +pg-ix +eg-st +ah-jv +fk-ki +hn-bu +pr-xq +op-ky +fa-rb +de-vc +kh-ml +mi-og +gn-yf +tw-jm +hu-mf +rh-ut +pa-nd +gn-sl +yj-of +vg-tk +to-rd +fq-vi +nr-ru +gv-it +pi-pm +ws-hl +vv-ku +xj-if +ax-ii +lf-ax +lp-ed +so-oj +oi-ww +je-jg +hb-cr +fr-oj +ml-sl +ip-du +rx-vh +vl-is +ky-ot +po-hq +js-jj +ib-bt +bs-fl +ad-vv +ij-um +yw-ms +kt-ip +vg-jx +mz-ob +ja-pj +fz-iq +ot-vb +ov-sf +dv-zi +fw-my +ks-gy +nz-qd +bm-kb +aq-lv +tf-kh +ut-ov +qp-my +cc-le +vb-dw +dx-ex +lc-wy +xm-vt +zc-jt +wp-be +wz-ry +xx-le +qa-oi +be-vc +zj-yk +pg-nn +gf-gd +sm-zs +fe-lg +jt-qq +rk-jx +dt-xm +nh-ll +uf-nq +dg-ul +wp-ni +vg-ye +vo-bv +ot-rl +lb-tn +vh-jc +cy-sr +xn-uu +gg-fw +zu-hu +ff-rw +tx-ij +wb-ma +yt-vt +tw-kz +eg-bc +aq-tq +da-gc +gp-jx +st-qz +qe-dt +xm-sf +gz-ws +pd-mq +si-nc +yx-vp +fl-gj +xu-ah +ke-cw +zo-fh +vo-ij +qc-kt +gg-il +hp-ve +kk-rq +ly-dn +ex-fl +qh-ve +xg-aw +jx-om +dt-hf +nh-xl +pu-ag +cc-qp +wq-fz +rj-sz +hk-qy +km-ye +bz-ff +ix-zc +eu-ol +if-df +lg-rq +sx-gi +tg-ws +yn-ty +jt-zq +ah-mq +rm-mb +kb-bl +vn-ld +ix-wq +vq-hi +cc-th +lo-rw +nw-nq +wz-kv +ul-ty +sm-fj +ev-rb +zt-nl +al-mg +pj-cd +rn-na +ya-nv +qg-ms +fo-yq +dq-ei +qh-gz +hm-nk +bn-fk +ue-dn +sy-up +ed-ss +dw-rl +dh-df +aw-es +oe-ah +ow-eu +nj-ul +mv-yj +zn-ox +kb-xh +pu-ja +st-uj +du-cn +qb-xd +yc-dw +jr-qi +vj-ii +lt-us +ea-xb +nm-tf +xk-nv +wu-fo +pp-hy +rn-of +bu-bi +qw-jf +tc-mk +jz-fa +cq-wc +ar-fk +ry-ef +uo-ua +yd-fl +bs-ib +cx-nf +bx-nj +dt-xn +bu-nz +aq-so +zz-ex +om-ye +hs-vk +fo-ic +fa-bc +uc-vj +yc-cn +jn-ca +jr-pz +tk-se +wu-pp +nq-ox +gj-pk +jj-sn +wy-da +ng-kd +uz-mt +cl-ld +bi-fx +um-nn +wi-yp +bu-hz +bt-of +ju-ww +ib-na +fn-sz +ar-nf +ji-gd +fa-qz +cb-kv +dk-nc +yn-ho +le-fw +sr-uz +gy-al +td-mc +hq-vk +kk-lx +vb-he +vq-dp +ex-rq +ot-wa +bs-yj +vz-sr +wu-ow +li-fb +jz-pt +sr-is +ca-im +mh-kb +mk-va +jf-ax +ww-ml +ws-wc +ct-qa +ng-wv +tn-kh +fz-no +qd-ht +bv-nn +ws-yb +sj-dw +iy-pa +mb-mg +jm-kz +hq-pz +ab-cp +mg-nq +ik-lu +nm-az +ag-kl +du-sz +ll-nm +at-af +pz-wt +sx-nl +cq-xb +ro-rw +hm-ca +vg-se +df-at +qx-nk +zz-wb +fr-zu +gn-az +jn-ae +ab-el +fm-zl +ey-mq +aa-cu +pz-bf +vu-vz +fb-ey +bn-zb +ai-mt +as-jc +si-jo +qf-bf +pn-kl +du-pd +ca-xz +pr-ns +me-rz +aw-aj +go-zl +hm-cp +el-ne +fc-qg +fc-bz +yw-vj +ll-az +qa-su +qy-qx +sn-tt +lb-od +gm-qf +ze-am +ea-wc +uv-bz +xs-cy +wx-rw +yb-dy +hz-ht +py-jf +qw-yw +ja-cd +gg-qp +op-wa +qw-vj +im-hm +le-vc +mi-bx +ik-ph +tq-xo +ze-pa +fu-ta +lb-sm +lr-iu +zg-ul +sa-wu +cy-bk +xx-th +rn-gj +jj-ah +jr-mc +ot-qf +ur-ly +nt-fa +bd-gi +ca-ui +ql-si +ve-cf +gt-jm +ll-pc +rd-jb +ki-vi +ca-qy +hs-pi +nm-kh +cn-yi +ad-qz +jn-tf +bz-ls +gi-af +ge-gy +hl-dy +ca-ab +tr-sp +rx-ty +mz-wv +th-gg +hu-kv +hl-yk +jc-ra +vl-gh +ss-gm +ov-vt +vc-es +vo-av +xl-bg +pu-qq +xo-so +sx-af +ap-si +if-gi +ls-uv +jl-vq +nb-cc +md-gv +gn-tf +yx-uq +ic-vh +ja-ag +nu-wb +nj-ai +cq-vj +pk-an +kg-qk +ea-ht +zz-ho +xi-jv +aq-aa +ne-ca +uq-ya +nz-lr +kr-uv +of-na +ga-jk +zs-cw +rq-zz +hr-nl +fx-hz +bj-dk +vz-bk +zj-ko +xl-rz +lf-jf +yn-ul +vk-pi +ew-go +wu-jo +hl-cq +lr-ht +jm-mn +ry-ji +kp-zt +tq-oj +ef-tc +nu-mx +yu-qq +sz-mz +mb-dx +od-gp +kl-ru +wy-bz +sy-cd +vu-vl +ye-dl +mf-gd +ya-yi +tk-qj +jt-up +mn-sj +rd-kg +jo-bc +ww-cr +td-pm +nj-cl +xy-kz +mj-ew +hg-kg +ic-ra +md-ag +yn-or +sl-nm +lo-pa +go-gw +sa-jo +dp-fu +iu-un +zs-sv +gj-bs +rd-jg +jk-cy +hm-xz +sf-cc +no-zl +je-qk +dg-rx +ze-ez +vj-ms +cl-ri +uu-yt +ef-mx +in-ol +ey-tt +kq-ff +jl-vn +wm-sp +ma-zz +zo-of +ut-mc +um-cx +ad-bc +bd-zt +xl-cv +nl-if +ki-qb +tz-xh +ll-tf +ik-dd +ad-nt +wz-gf +yu-ja +yn-zg +es-xo +gc-nu +sv-xy +sr-gh +nf-eo +gm-ot +ye-jh +ai-ef +nh-me +es-de +bm-bn +xu-li +fr-cu +ga-sr +yi-ih +yi-ip +sf-dt +ap-ow +hb-an +tq-aa +qg-py +lc-kq +io-lg +tw-ej +wt-dp +dv-aq +il-my +yj-rn +jj-fb +hk-ab +ga-cy +ks-rm +tx-zc +ku-il +ut-xn +hp-pa +nz-yp +tb-tg +ex-io +my-cc +vg-dl +hm-ui +pu-sy +xy-md +ym-je +fw-cw +uz-cy +jt-sc +cv-rz +be-xf +cu-dv +jv-vo +me-oo +fe-rq +hr-dh +vl-uz +xu-xw +qy-im +qg-xe +kb-kz +bz-et +yf-az +ju-su +km-jh +tz-ej +vv-kl +av-pg +al-zn +ix-xi +pi-hq +cu-zi +sh-hi +tq-so +sv-zw +qa-ww +kb-tl +df-ie +hb-pk +xz-qx +jc-rx +to-gs +lx-rq +bg-rz +co-px +wp-ns +xw-jj +vp-ya +qi-pm +xg-ns +vf-es +lq-jn +mi-cl +qi-hq +mt-mx +wp-aj +il-bi +ec-lb +wz-cb +cq-ea +pn-nz +md-fj +fp-xe +jr-po +aa-zi +jg-jb +mb-zn +gx-wt +ks-nq +rr-eq +cw-th +nr-bg +cl-mt +mt-og +ag-pj +xm-by +bk-jk +el-nk +ql-nc +xj-gs +tv-eg +sb-mk +mg-nw +fn-mz +aa-yx +xh-gt +tb-ea +go-ua +wb-rh +dd-wx +cx-js +wy-fc +sf-hf +dw-qf +yj-yd +jn-nm +al-gv +ij-zc +ld-sh +cr-us +zu-tq +gc-ri +vy-gf +vb-rl +mq-jj +am-ji +nt-rb +uq-zf +cx-zb +xi-wq +xr-va +wc-hl +wu-ap +pz-hs +wj-ry +qb-qc +qq-ja +rb-pt +ze-qh +ql-ow +cf-nd +fy-zr +cq-yk +pp-ap +bc-jz +fn-wv +nl-gi +tc-nu +wy-uv +bu-un +wt-td +me-pn +tw-kb +xd-xi +tx-xi +ei-wj +sh-fu +gt-tw +qk-bw +ga-or +dd-lo +jn-kh +sc-ja +lq-az +av-wq +ds-rn +lg-wh +fb-tt +ko-xb +dh-fp +oo-cv +ed-vp +mh-tw +jb-os +im-jc +go-iq +am-gz +in-ss +bg-cv +fr-lt +ns-xf +xi-zc +ko-tg +fq-sx +bk-is +rw-bo +co-rf +ec-sv +sq-dl +rl-op +zw-lb +sd-dj +xq-xg +ie-zt +at-gi +st-rb +fh-ib +dy-xb +li-oe +an-ju +so-cu +un-wi +aa-dv +ke-fw +eu-nv +tt-ii +vk-qi +fz-en +tv-fe +fp-vj +cp-im +qp-th +bs-mv +dp-ae +iy-ze +et-ki +si-sa +sy-ja +no-ew +ev-nt +zj-xb +qe-rh +ls-fn +to-zl +nz-un +mb-nq +bg-bl +ut-xk +rn-fh +xj-hg +ax-py +eo-bm +nb-qp +ov-xn +yh-dn +ll-yf +fj-zw +fl-yj +nw-gy +in-ya +ub-ff +xi-ij +nf-bm +it-fj +re-kt +rf-mk +ot-bf +pi-pp +nn-cq +sd-rp +je-bw +kk-ex +wi-bu +ca-nk +zf-ya +cr-oi +gb-wc +wh-zz +zb-eo +be-es +ta-dp +be-vf +uo-ro +rk-jh +hy-xh +yp-lr +bm-fq +nw-xs +ye-tk +eo-bn +ai-ri +pt-nt +vt-ut +ar-qg +rx-ic +rb-tv +gd-wz +bn-ar +fa-tv +eg-fa +mi-nu +uu-rh +gg-cw +gv-fj +it-gp +re-mj +xf-pr +gj-uj +tb-jb +en-ua +hy-mh +lg-ex +pi-qi +ab-fm +bn-fq +gx-td +th-il +hk-qx +ly-mz +ru-oo +tn-az +md-zs +xw-ey +jt-sy +fc-kq +nc-ow +ey-ah +qx-ne +hk-hm +fh-bs +uq-ol +bw-jg +ez-zr +zb-vi +nn-zc +px-aw +us-pk +cj-qf +ss-ol +ri-od +xz-ne +du-yc +vy-hu +hm-qx +sf-uu +qy-wv +vp-zf +tf-lq +sy-qq +nh-nr +gp-sm +hi-km +tl-mn +hg-rd +yn-as +lr-bi +vb-sj +dq-cb +by-dt +bd-av +ef-gc +xq-vf +nb-ej +od-gv +pt-bc +js-fq +iy-hp +yx-xk +hb-vd +io-wb +iu-nz +pt-tv +kb-hy +xx-my +if-hr +je-rd +ve-nd +ji-kv +zf-in +at-if +pn-rz +cu-aq +iy-fy +jh-qj +tq-fr +cc-xx +gu-ag +vq-ni +ob-kd +dx-io +cn-kr +wb-wh +pn-oo +kr-bz +ic-yn +gt-st +oz-zi +da-fc +mj-lk +zz-kk +ly-sz +vj-xe +kp-if +kk-hq +bo-dd +ui-im +tv-ev +pg-wq +da-ub +lk-no +cp-ui +il-qp +um-xi +ul-ho +lv-tq +nd-fy +ef-nj +jc-ty +hl-bn +nu-ef +lc-ls +os-bw +ic-ul +ab-im +mq-wx +gj-yd +gt-ej +vd-an +wt-qi +kb-gt +pa-am +lp-ol +ot-dw +jj-ey +nk-qy +es-pr +tg-yk +zn-uf +nw-ox +ph-yg +io-ma +yw-uc +bf-vb +gj-ib +wv-dn +mv-ib +am-cf +ei-wz +um-vo +oe-vq +rr-dd +bw-hg +ge-nw +vn-gf +ry-gd +pp-ql +pm-pz +zz-dx +go-et +hk-ca +lo-bo +cn-qc +lr-hz +kq-ha +yb-tb +cy-yx +if-sx +mj-fz +yg-bo +wq-tx +ng-ue +fw-qp +yb-wc +xe-ii +oe-er +uo-lu +uc-ax +vt-by +vt-qe +df-bd +sa-my +hb-qa +gw-zl +zw-zs +zt-sx +ni-vn +tt-jj +cj-gm +dx-zy +fc-kr +yn-vh +nb-ku +oq-fu +rk-ke +jo-yq +zq-ag +hk-el +ag-cd +dp-ld +pc-nm +cv-nh +gx-mc +ly-yh +ni-ld +it-xy +kv-gf +fw-kh +lp-uq +uf-al +ik-yk +gx-vk +yf-sl +bw-to +zw-gp +am-hp +ah-tt +dk-yq +lg-zz +hk-ui +ue-kd +ej-mn +jb-to +el-im +mo-no +hf-ut +xf-vf +kr-ff +dv-oz +qw-uc +us-an +fx-nz +ds-sb +zl-ua +lg-zf +rh-sf +mg-vy +xf-bx +zu-dv +vv-ru +ua-fz +sj-gm +iy-ez +gd-hu +px-wl +vu-qd +ie-at +ip-qb +vy-dq +wh-lx +jv-um +bx-ai +fs-uz +re-ih +hw-nw +nu-nj +fr-xo +tb-dy +yu-zq +ax-qw +nl-df +go-fz +bf-op +sn-ah +gy-nq +ur-ng +yd-fh +at-sx +hf-vt +of-mv +xy-gv +va-sb +cj-dk +az-kh +fm-lk +li-jj +ob-wv +zo-ib +ro-wx +iu-hn +os-xj +dd-rw +sp-dj +md-zw +sf-qe +xx-cw +yh-rj +lb-yh +ws-ko +kk-dx +fa-pt +nk-ne +qf-he +cd-ge +od-fj +mo-en +qx-ca +tz-tw +mx-ri +mc-pz +po-gx +tg-xb +xj-gy +fq-ki +ji-wz +uo-lo +mv-gj +vf-vc +yp-ht +kv-gd +oe-ey +tl-tw +hp-fy +kk-ma +tk-sq +dl-jh +en-lk +kh-lq +zj-ws +ym-kg +ej-jm +hp-gz +yt-sf +kr-et +co-wl +uj-fa +fm-iq +pc-lq +ef-cl +nl-ie +mb-gy +jr-td +ae-ni +gg-us +to-os +sq-jh +bd-ie +jg-qk +na-bt +bt-fl +tg-rf +pz-pi +dl-jx +is-gh +bj-si +hq-pm +vl-bk +pp-sa +yd-bs +ik-eq +dd-ro +ub-wy +yw-ax +ks-mg +eg-rb +ks-zn +lk-ua +vt-uu +ha-da +mn-kb +nc-jo +rd-hm +md-lb +yw-xe +zu-cu +ez-py +vt-jk +rl-he +fs-jk +hg-jg +nf-js +op-cj +yt-dt +il-xx +qp-le +pk-cr +ks-al +mq-tt +es-xq +xu-vs +wq-bv +wp-vf +sb-xr +us-hb +oj-aq +ye-ji +ef-ri +hn-lr +qa-ju +mj-fm +wj-mf +ta-jl +ym-xj +xd-ip +qw-ms +ab-hm +tn-ll +rb-jz +zr-ve +kt-gb +qb-yi +me-si +dj-ru +nb-il +mn-bl +dp-sh +xw-fb +jr-pi +tn-tf +oi-hb +et-wy +rd-os +of-gj +rr-ro +vg-km +nu-og +wj-dq +oz-wh +ej-kb +mn-tw +in-lp +hs-td +wt-hs +kb-tz +bs-bt +cf-pa +sz-dn +ob-fn +hl-tg +qz-jz +pn-cv +zw-oq +rk-km +gu-up +sc-gu +ds-px +uc-lf +sx-bd +qq-gu +nb-cw +bj-sa +ym-rd +pp-jo +ku-ke +et-ha +ws-xb +mh-xh +jl-oq +mg-gy +xz-nk +mx-cl +hs-hq +wm-sq +fp-lf +qc-ih +fn-dn +nz-hn +pr-wp +zn-gy +pk-qa +hb-ct +lg-zy +ij-wq +ad-rb +xd-yi +yc-gb +ru-me +fw-nb +iq-no +gd-cb +ma-wh +fe-wb +vi-ar +py-yw +aa-kd +er-sn +sm-gv +bf-dw +rz-nh +an-lt +bv-um +sq-ye +uj-sv +ie-sx +og-oj +vo-pg +kg-to +it-od +cf-gz +gx-ra +us-su +ja-ai +hb-lt +xy-rz +yu-pj +gc-tc +nl-bd +cw-cc +wa-gm +vs-li +sp-ds +ff-fc +ar-fq +bv-jv +so-lv +yj-na +io-rq +ey-er +ij-bv +kz-hy +ub-et +ha-bz +ue-sz +ie-kp +ho-ty +mh-sl +ew-lk +lv-bk +uq-xk +pn-ru +vy-wz +ip-qc +ua-iq +uv-ub +wm-jh +xl-pn +yg-wx +df-zt +sa-fo +ss-eu +tz-gt +nq-rm +ow-fo +fm-mo +ep-bg +ha-ub +kp-gi +jm-kb +hm-el +lq-tn +yt-ju +gc-mi +jl-ld +jz-ad +ah-er +uf-mg +kl-nr +rp-va +po-wt +yq-pp +lx-ma +ng-dn +dy-wc +sm-xy +yw-ii +wz-dq +al-nw +vp-in +cb-gf +vh-ra +na-bs +kv-wj +qa-lt +jb-qk +jk-vu +nh-kl +he-bf +xv-bn +fa-ev +ql-fo +li-xw +zf-lp +al-nv +ii-qw +vp-xk +hu-cb +bt-fh +pd-re +ox-ge +tf-pc +nn-wq +km-qj +tr-vn +og-tc +vp-hs +mk-dj +fz-lk +mz-rj +xs-is +fn-dy +ef-og +bd-dh +oi-vd +ms-fp +zg-dq +pj-zq +cd-yu +lg-kk +md-it +us-ju +wm-se +ef-bx +dk-sa +uf-ks +cw-my +kr-ub +ky-gm +nf-xv +ua-no +wj-vk +ar-bm +bl-tz +zo-fl +fx-hn +fx-wi +vc-ns +tx-nn +fx-lr +il-ke +ga-vz +nk-zb +my-gg +pp-si +pu-pj +av-bv +gw-mj +xj-kg +hp-zr +gv-lb +td-qi +ze-ve +ew-zl +jc-yn +cn-qb +fk-bm +rr-wx +fu-tr +zj-wc +zj-yb +qe-xm +od-zw +xs-jk +jk-sr +km-wm +pd-yc +oo-nh +hi-ld +bm-cx +ng-ob +jz-tv +fu-ld +ey-qx +kz-tl +iq-zr +pc-ml +lu-eo +be-aw +ya-ol +al-ox +jn-tn +bu-sd +cw-qp +ih-kt +mv-bt +zs-gv +lf-ii +rz-oo +ji-cb +om-se +jc-ho +bj-ap +yf-lq +lf-qw +fy-dn +dq-hu +cb-ry +fk-vi +by-qe +aw-pr +lx-dx +jt-pu +xl-oo +sx-kp +wc-tg +zs-lb +rz-ru +df-hr +bw-gs +xm-ut +wc-tb +qc-re +pz-td +wc-xb +os-je +lc-ff +mh-gt +uj-ev +df-hk +tk-dl +sy-yd +xf-aw +bd-rk +um-ix +or-ul +sj-he +tz-hy +cj-vb +kh-yf +az-ml +cp-ca +ma-kv +ls-ub +sz-yh +zy-io +bj-ow +ar-eo +qw-rr +dh-kp +kl-rz +lc-bz +gv-zw +wp-aw +ct-an +ze-cf +tw-hy +wx-lo +vp-ol +vv-oo +jf-rj +et-ls +xv-eo +zn-nw +hl-tb +uf-fu +ue-yh +fa-op +ki-bn +so-zi +dw-op +hp-vo +jn-pc +mo-iq +wv-sz +xe-jf +qh-am +rw-ik +kz-mh +gs-kg +cb-ei +ne-hm +ph-lu +dg-ty +cd-jt +ar-cx +rx-or +tr-jl +hq-wt +vy-kv +bx-mx +zy-ex +ww-lt +ei-ji +ze-hp +rf-gn +ai-cl +hg-gs +kk-wh +yn-rx +my-th +ul-ra +zl-en +ja-up +ns-aw +as-ks +vg-wm +gv-gp +kk-wb +er-xu +yq-nc +rk-tk +tk-km +en-oi +af-nl +mf-dq +zf-xk +bf-sj +xh-ej +pt-gg +nd-gz +gf-hu +bg-pn +ih-pd +sv-md +wm-qj +rk-dl +zl-mj +ld-ae +xf-de +uo-rr +ct-vd +xh-mn +pd-gb +na-fl +sc-yu +yb-cq +sy-yu +se-ye +dh-if +xv-fk +cv-kl +iu-ht +kl-xl +ju-ct +cx-eo +ve-fy +xz-ab +zr-cf +ua-mo +wl-sb +pp-dk +lf-xe +ra-as +yn-dg +uc-ii +sd-co +il-le +cu-lv +us-qa +et-kq +bj-ql +ym-bw +vd-us +gi-ie +ae-oq +cp-qy +wc-yk +yb-hl +wl-va +xo-aq +om-sq +zq-sy +zb-fq +wa-cj +xq-aj +bk-ga +tv-bc +gp-ec +xg-xf +ly-ro +ks-mb +vc-wp +wl-th +ev-bc +fh-gj +le-cw +bl-xh +av-um +uj-ad +lb-sv +yb-ko +oq-sh +zy-kk +ov-dt +xb-ub +ss-zf +rx-ho +dq-ry +sf-xn +rn-zo +rh-xn +or-ty +gz-iy +wq-zc +rd-qk +ll-ml +ev-eg +qz-uj +hp-nd +lg-lx +bg-oo +px-rf +yp-hz +th-ke +cp-qx +zu-zi +up-pu +yj-bt +ii-py +ge-zn +ph-dd +bu-iu +xe-qw +xk-lp +ic-dg +da-lc +cv-ep +rh-ov +lt-pk +gx-qi +jb-xj +yt-xm +ec-sm +mt-bx +ep-kl +kg-bw +uf-ox +ur-kd +ec-zw +oq-qq +li-tt +at-bd +be-mo +ho-or +bv-ix +nc-ap +tt-xw +ve-ez +hn-hz +jb-bw +co-rp +un-yp +ww-su +xw-ym +wl-xr +rp-dj +yg-rr +ed-fh +eu-lp +jm-tz +nt-tv +fj-ec +dp-tr +ct-pk +rl-cj +uo-wx +zg-ic +vv-cv +jr-hs +tl-ej +ym-jb +ez-qh +sr-vu +fc-ha +sb-sp +pg-um +ty-zg +sp-mk +zj-cq +ax-bw +ad-eg +tn-sl +zr-qh +st-ad +kd-sz +ox-ks +bt-rn +kg-jg +bz-pa +ds-dj +qy-ui +bx-gc +sq-vg +fe-wh +zg-or +xe-ms +jv-pg +xq-wp +ut-by +ur-qk +ov-ax +jt-vg +jn-yf +uc-ua +gz-ez +su-vd +xg-pr +gh-ga +an-oi +pt-st +av-zc +ru-bg +zy-wh +ae-vq +fc-lc +hn-wi +un-nq +sc-up +iu-gu +bo-ik +hz-iu +in-ed +kk-io +lq-de +hi-ni +zr-ze +bl-gt +ly-ue +me-cv +bx-ri +nl-lk +ql-yq +ss-xk +be-xg +ur-wv +se-jm +sn-ep +zq-pu +qk-ym +st-tv +gw-en +jl-fu +hs-gx +uf-hw +ns-xq +sl-jn +lv-zu +uj-bc +in-eu +ae-fu +va-ds +ex-wh +bj-nc +fz-fm +oz-tq +jn-ll +iy-nd +fl-mv +ya-lp +he-oo +xn-hf +pa-fy +fl-of +mh-ej +ob-sz +qj-sq +vc-xq +fw-il +lc-et +ad-ev +zl-mo +ei-vy +lu-dd +yi-du +ae-tr +cp-bv +mf-vf +ei-gd +xn-bs +rj-ob +hk-nk +pm-wt +qa-an +vq-ic +bk-gh +ad-fa +xr-mk +gy-ox +kh-gn +xv-js +pd-yi +wy-kr +iy-cf +xj-bw +gh-fs +px-va +ne-yw +ai-mi +om-vg +mx-hz +rf-sd +it-sm +er-tt +pt-ad +lp-cb +aj-xg +wj-gd +nq-al +gt-kz +na-fh +wx-ik +eq-dd +cd-qq +ro-eq +ol-ed +ei-gf +os-ym +dv-tq +xq-aw +je-xi +yc-yi +uv-et +xq-xf +cr-lt +rl-dv +mt-tc +ax-fp +pp-fo +nj-ri +yg-ro +rr-ph +ni-oq +ie-ha +mf-ry +bc-nt +hi-jl +ld-oq +go-fm +px-xr +bt-cc +lf-qg +pn-ep +es-xg +jb-kg +cx-vi +tl-hy +jg-xj +sc-pj +gd-dq +fw-xx +ku-th +wb-lx +kz-tz +nm-gn +yx-ya +ta-ld +dg-jc +pz-qi +ns-sm +ky-rl +tw-xh +nd-zr +nm-yf +gm-bf +ai-nu +bo-eq +ji-gf +om-qj +uj-jz +uu-hf +zo-bs +av-tx +nr-rz +vz-vl +fy-ze +px-sp +xm-xn +lf-yw +qc-yi +fl-rn +zg-dg +zq-sc +ax-vj +ur-yh +fe-lx +fo-ap +mt-tk +is-vz +bl-hy +hf-by +ag-up +ox-mi +gb-yi +gj-zo +tn-nm +aq-zi +um-wq +ew-yb +ij-jv +fq-fk +nt-st +ga-vl +xs-uz +mt-gc +hu-ji +yx-lp +uz-vz +su-oi +xw-er +rx-zg +fj-lb +tr-sh +lr-qd +zo-yj +vy-gd +zu-aq +ju-vd +is-ei +wb-zy +gg-xx +ph-lo +eq-yg +mi-ef +is-vu +zj-tg +ff-ls +it-lb +az-tf +sb-rf +yq-wu +pr-de +gh-cy +ni-tr +up-cd +sv-sm +am-ve +as-ul +jm-hy +qf-op +sy-sc +ry-hu +qy-hm +kt-cn +yt-ut +ii-qg +og-mx +sd-sp +ui-ne +wv-ue +sl-tf +dy-tg +hn-un +sl-ll +sh-vn +wm-jx +hz-qd +jf-qg +tr-hi +li-er +yh-fn +dj-co +mh-jm +qd-yp +pg-io +lp-vp +jf-ms +uj-rb +ks-hw +hu-wj +pk-oi +gh-jk +fc-uv +fj-sv +ui-el +ij-pg +bk-sr +sd-va +ze-nd +vq-tr +ge-hw +pu-sc +vv-pn +xj-qk +od-sv +de-vf +pn-nh +es-aj +vv-rz +vz-pi +iu-qd +bi-hn +be-ns +qi-po +os-hg +hb-yq +da-kq +po-vk +om-dl +mb-hw +nt-uj +mf-vy +zj-ea +ol-zf +mq-xw +az-sl +lf-py +un-fx +ty-ra +vf-ns +yn-ky +tr-oq +rr-lu +fk-nf +lt-vd +ss-nv +wz-wj +hn-fj +de-xg +fx-yp +ff-uv +zf-nv +uc-jf +wp-xg +zc-um +vi-bn +px-mk +sh-ta +py-vj +qg-yw +or-zo +av-jv +ip-kg +yt-ov +zu-aa +qc-gb +vg-rk +fb-oe +jh-jx +gf-wj +co-xr +pt-qz +jx-sq +es-wp +qb-kt +fq-cx +rj-ue +pr-hw +ra-dg +li-da +me-xl +ym-to +kz-xh +ta-ni +tv-qz +ap-nm +dt-uu +ds-rp +ra-yn +re-yc +ey-xu +yc-qc +xo-oz +he-dw +zt-hr +jn-ml +xs-vz +yc-qb +lf-ms +ng-kp +qh-hp +rm-al +dy-zj +xs-fs +mf-wz +ez-pa +wi-hz +oe-xu +an-ww +by-uu +kr-ha +mb-al +no-gw +sf-ut +ct-us +vc-aw +lk-iq +lv-oj +mh-bl +lx-zy +sh-cy +hr-gz +uv-ha +hp-cf +fy-am +cj-dw +ez-hp +ye-rk +yg-lo +ql-sb +mg-ge +ea-ws +hw-nq +ot-sj +dx-lg +fm-ew +kp-nl +ve-rd +xo-oj +my-nb +qe-uu +mf-ei +ku-le +zi-fr +ed-nv +na-gj +bw-rd +fz-gw +ww-us +ui-nk +se-dl +xr-dj +gu-sy +uq-vp +gw-fm +hr-sx +zn-rm +vd-qa +og-bx +ae-sh +lu-yg +ro-lu +ss-vh +dk-ap +js-eo +gs-je +wa-rl +bz-kq +zr-am +rm-gy +dy-ws +jx-qj +zw-it +mv-zo +dx-ma +gb-du +zs-ec +yq-ap +by-ov +wp-de +cb-vy +ct-cr +qf-wa +jt-gu +gn-lq +ut-dt +up-xx +fp-qg +af-zt +ho-ra +jm-bl +ap-sa +zs-xy +hl-ko +oz-lv +qa-cr +ur-xu +nc-pp +bl-tl +nt-qz +aj-vc +an-gm +in-xk +nt-va +ls-kr +ng-fn +vh-or +ix-nn +hq-gx +qp-ke +vu-bk +js-mz +pc-eg +eu-yx +yc-kt +aj-ns +by-yt +fm-en +it-zs +fs-cy +fy-ez +dx-wb +ml-yf +hy-gt +pc-sl +zb-fk +qc-pd +ct-oi +ja-gu +if-zt +hu-wz +je-kg +wt-mc +vk-pm +ej-hy +lo-ro +da-bz +qa-xl +vg-jh +dl-qj +hr-yg +uc-xe +ku-cw +mv-na +rh-yt +xd-gb +dp-oq +uq-ed +st-jz +ls-kq +ko-ea +xw-oe +xi-pg +ev-st +sy-pj +tf-yf +vd-zy +se-qj +cx-ki +rf-wl +vj-lf +el-xz +rf-ds +qw-py +xd-qc +zy-fe +mq-oe +ht-bu +jt-yu +qw-fp +fp-py +os-gs +gh-xs +sp-wl +hb-su +gz-ze +zc-vo +gu-pj +gx-pm +cr-su +zi-xo +wj-ji +vk-pz +pz-gx +cn-re +yd-bt +gy-uf +eo-fq +ct-kz +be-pr +ue-ob +fh-yj +tr-ta +ep-by +ed-xk +dv-xo +qh-nd +of-nr +pu-co +sd-wl +ph-uo +fp-uc +ll-gn +ij-av +tx-jv +pj-up +os-jg +ex-wb +yt-hf +vn-vq +ja-jt +xb-yk +rm-uf +qd-hn +eu-ed +ne-ab +lr-sq +sv-gp +zz-fe +is-uz +jz-nt +kd-fn +cn-ph +ax-ms +ri-mi +rk-om +wa-fs +wm-rk +vz-jk +yi-re +eo-vi +pg-bv +qj-is +eu-vp +ng-ly +xz-uv +ls-ha +ag-yu +jl-ni +at-dh +mc-pm +qf-sj +gg-ke +pc-kh +pt-ev +en-no +at-zt +rp-rf +wy-kq +ov-hf +nr-oo +ta-hi +xr-rf +tg-cq +ot-yj +lv-xo +nn-jv +wq-jv +ib-yd +se-sq +le-th +ls-fc +pi-po +wa-ky +bi-hz +hb-ww +dw-gm +qz-eg +or-as +az-jn +ot-op +si-wu +gf-ry +ho-zg +as-ty +el-qy +vu-cy +nj-tc +xv-yj +jr-vk +sx-df +wm-om +ss-ya +mq-xu +je-to +at-nl +yc-xd +dv-oj +mz-ng +vi-bm +uo-yg +ml-gn +rn-bs +qc-lf +in-uq +uj-tv +ui-qx +yd-of +go-mj +xo-zu +sc-ag +kv-ry +xu-tt +lt-rx +lc-uv +qx-ab +lr-bu +ap-ql +fq-xv +zc-bv +ky-dw +hq-jr +ii-ms +ku-xx +fm-no +ot-cj +jl-wi +xg-vf +af-ie +mg-rm +yp-hn +aj-vf +tx-bv +zn-td +to-qk +xs-ga +ya-xk +er-vs +ni-sh +fr-dv +iq-mj +xz-cp +me-kl +le-ke +kp-af +ep-nr +ov-uu +qk-os +he-cj +lu-rw +om-tk +yt-qe +mf-kv +jr-wt +in-nv +rl-sj +ty-ic +lx-vl +hz-un +ga-uz +je-jb +jv-ix +zr-gz +tf-zq +vs-mq +zu-oj +rm-nw +ro-ph +zw-sm +px-sd +lo-lu +cy-vz +ht-bi +si-yq +bs-of +oq-vn +ld-tr +dd-ij +ww-ct +eg-jz +cu-oz +rj-wv +ip-yc +tf-ml +as-ho +dh-ie +nb-ke +gs-ym +hs-po +hi-oq +wl-mk +zf-ed +mf-cb +it-sv +gp-zs +aa-fr +vs-sn +kt-pd +gt-mn +xz-im +pc-gn +sp-rp +qb-gb +wt-pi +po-mc +rz-ep +xf-wp +vv-nr +vy-wj +ju-pk +rr-ik +en-go +su-pk +zl-lk +hf-rh +eq-rw +er-fb +qe-xn +fw-th +cc-il +xk-eu +lo-ik +pd-el +yi-kt +ma-ex +oj-oz +cr-an +zq-qq +yq-ow +zl-fz +jo-dk +mb-nw +mh-mn +tl-jm +td-po +rh-vt +du-qc +wi-nz +ph-eq +cd-sc +ua-fm +vl-fs +nh-bg +nh-vv +uz-gh +kk-fe +ip-ih +iy-am +nb-le +qd-wi +xr-ds +op-vb +xv-ki +jj-oe +ct-su +ge-al +bu-qd +hi-ae +in-rb +re-qb +pg-tx +qq-ag +dj-wl +ua-mj +qe-ty +rw-yg +ng-yh +nu-ri +kt-at +ht-fx +hk-ne +ex-fe +sd-xr +gn-tn +tb-yk +ec-it +tb-zj +ez-cf +so-aa +tx-ix +my-ku +vu-uz +bj-wu +od-zs +nc-fo +gu-zq +hq-mc +lu-wx +to-jg +as-dg +of-ib +vz-gh +hg-je +ec-xy +pu-gu +xh-jm +ra-zg +kt-du +pr-vc +qz-rb +ar-zb +ec-gv +zz-zy +vj-qg +ov-xm +oe-vs +gz-fy +xi-av +qp-af +fq-nf +ed-yx +tn-pc +hi-fu +xy-gp +sz-ur +re-ip +pj-eg +aa-oj +kq-ub +gv-sv +xv-bm +li-ey +jl-ae +dd-yg +ya-ed +mk-ds +kv-dq +ei-hu +vi-nf +hk-xz +hi-vn +le-gg +om-cv +xr-sp +ya-eu +xs-bk +yd-zo +vv-xl +sh-vq +ib-yj +zz-lx +lo-eq +js-bn +ox-rm +iy-ve +fs-ga +sf-vt +fl-ib +vu-ga +yp-bi +bu-fx +hz-nz +zb-bm +km-om +yu-pu +ea-tg +bg-me +zw-xy +fb-ah +zu-oz +va-sp +ml-tn +dx-wh +fn-ly +dh-zt +gf-dq +lp-nv +cx-xv +fo-jo +ns-es +yb-xb +tx-xe +gi-zt +vs-jj +zi-lv +el-ca +ru-cv +jb-gs +qq-pj +jh-tk +tc-cl +nf-bn +ss-lp +im-bo +dt-rh +xm-tz +tl-sc +xq-se +xk-ol +yw-fp +gt-tl +lc-kr +hb-ju +qx-im +bm-ki +xz-qy +ei-kv +mz-ue +xm-uu +jt-pj +rq-zy +fn-ue +vn-fu +mk-rp +fp-ii +nk-ab +dy-ea +fp-jf +xf-es +qp-xx +dd-uo +ds-wl +ph-rw +nc-kq +qb-ih +yf-tn +yk-yb +jo-ow +st-bc +nb-gg +fb-ze +fw-cc +lr-wi +ol-nv +wh-io +bi-un +ik-uo +ff-ha +qk-hg +sa-ql +si-dk +he-op +uq-eu +de-aj +fk-cf +yk-dy +jr-tq +af-hr +vt-xn +od-xy +ro-ik +up-zq +da-ff +bj-yq +dw-wa +qh-iy +th-nb +mc-vk +qk-gs +oo-ep +ni-dp +df-gi +kd-ly +zq-cd +ll-lq +ks-ge +hl-zj +ht-wi +js-vi +zo-na +wm-ye +mv-bj +dy-cq +zb-ki +jl-dp +dh-sx +av-ix +iq-ew +dl-km +df-af +cp-ne +od-sm +jo-ap +by-sf +ea-yb +ep-nh +co-mk +xd-ih +be-aj +so-fr +cu-oj +pi-mc +ll-kh +qz-jg +nj-gx +gb-re +mo-go +he-ot +qf-rl +mv-yd +xz-ui +eo-fk +aj-xf +vq-ld +mi-mt +aj-pr +ab-qy +hi-dp +fy-cf +tt-oe +zt-vs +oe-sn +da-kr +fc-et +vf-pm +cj-sj +ff-et +ql-dk +cc-ku +bx-nu +zq-ja +op-gm +ix-ue +yt-xn +mk-sd +pt-eg +er-ws +ra-or +up-yu +su-po +lg-vb +as-zg +gc-og +xw-ah +ky-cj +dv-lv +ew-ob +aa-oz +rh-xm +xo-un +tc-bx +cq-tb +fh-of +zz-io +dj-px +jo-ql +oo-kl +uo-rw +zb-js +sr-ms +mj-no +py-uc +bd-af +im-hk +ko-gi +ur-mz +jk-uz +ta-ae +nz-bi +ly-rj +zs-fj +rj-kd +qh-pa +ge-rm +er-no +tc-ri +gx-jr +du-xd +ai-gc +yf-jh +ta-vn +jk-vl +am-nd +gm-rl +yu-aj +gn-fx +as-ic +uc-ms +qd-bi +cp-nk +ms-py +vu-gh +ow-dk +fs-vu +il-cw +nu-mt +rp-wl +ox-mg +rn-ib +lx-io +nj-og +nm-lq +ox-hw +me-vv +kd-dn +mz-kd +xv-zb +mx-gc +hk-cp +rn-yd +dn-ur +ma-lg +rb-bc +eq-uo +kl-bg +xy-fj +se-jh +ls-da +gd-ec +bo-ph +na-yd +ng-rj +vh-as +sn-ey +vl-sr +nk-im +kz-mn +nq-zn +xl-ru +so-ta +xd-pd +gc-nj +fj-gp +rm-hw +cn-xd +po-pm +vc-xf +yg-ik +my-ke +uu-cu +jb-hg +bd-kp +ip-pd +fb-xu +nh-ru +jx-tk +tb-ko +sn-mq +fs-is +zn-mg +oj-zi +ip-gb +ul-rx +no-go +xq-be +eg-nt +ki-eo +fz-ew +km-se +zb-nf +km-sq +gw-ew +xb-tb +ro-bo +vc-xg +he-ky +ec-md +fo-dk +ge-nq +bn-cx +pk-vd +zf-eu +bf-ky +mi-tc +xr-tw +vv-bg +qb-pd +sb-sd +eq-lu +lk-go +wu-ql +qd-fx +od-ec +va-co +yc-ih +pu-cd +dk-wu +mo-lk +dx-fe +ai-og +ke-xx +wv-kd +yh-mz +xq-de +hg-ym +yx-nv +cq-ko +fb-vs +ls-wy +gu-cd +sa-ow +ef-mt +ul-vh +vb-gm +nc-wu +qb-du +kq-uv +gw-mo +hf-qe +wi-iu +hs-qi +to-hg +qw-qg +fr-oz +xo-cu +jf-ii +mh-tz +ff-wy +ix-ij +hg-eq +ev-jz +tl-xh +xl-ep +zj-ne +ph-wx +se-jx +sn-fb +ju-lt +wa-bf +iq-gw +rq-bj +zi-hw +lo-rr +vn-dp +rp-xr +jx-ye +ow-pp +oi-ju +ar-ki +aq-oz +ez-nd +ex-lx +yx-in +jl-sh +uf-ge +vo-tx +bi-iu +vq-fu +en-iq +ji-mf +bv-wy +pr-gh +ha-wy +js-ar +pc-az +vs-xw +gw-vi +cc-ke +xx-nb +vl-xs +qp-ku +nf-ki +ta-vq +ju-cr +uo-bo +rj-fn +ag-sy +ss-uq +om-jh +dn-mz +jg-gs +ix-vo +js-fk +px-sb +an-su +dh-nl +ue-ur +dl-wm +oi-us +el-qx +re-du +ew-mo +ma-fe +vh-ho +pi-td +vs-ey +rk-qj +dh-gi +gs-rd +ih-qh +px-rp +lr-un +jj-xu +or-jc +hy-mn +vg-qj +ev-cr +is-ga +ie-hr +sj-ky +hr-gi +ae-vn +dg-aq +kp-at +cj-bf +ep-me +hr-kp +qj-ye +mo-mj +je-xj +cn-gb +tc-mx +vh-zg +km-jx +pz-po +cx-fk +wa-sj +ej-kz +ax-xe +hs-pm +xw-sn +wz-he +ad-tv +mh-tl +dl-rm +vf-aw +sq-rk +tq-cu +ry-vy +en-ew +ds-co +cp-el +jc-ul +sn-xu +tz-mn +sa-yq +xn-by +ky-qf +rq-wb +sa-nc +iy-zr +fa-st +dx-rq +cl-bx +op-sj +xd-re +xb-hl +ri-og +xg-qd +af-dh +az-na +yf-pc +ai-mx +hl-ea +lt-su +qf-uu +gs-nf +zc-pg +ep-ru +dg-ho +wm-tk +ku-gg +ko-yk +qg-uc +wh-rq +dt-wu +nr-pn +qi-mc +xs-vu +vb-wa +vk-wt +qh-fy +cv-nr +so-oz +mx-nj +rj-ur +zu-so +vt-dt +yk-ea +qi-nd +it-rp +am-ez +bj-fo +at-hr +fs-bk +ob-ur +uv-da +yw-jf +jf-vj +lc-os +jg-ym +cb-wj +ve-pa +ml-lq +ty-vh +vp-nv +qz-bc +sl-lq +zy-ma +wx-eq +mq-fb +md-gp +or-dg +bl-tw +tc-ai +jc-ic +ol-ct +rj-dn +wv-yh +sz-ng +vd-ww +ra-rx +ib-xh +vo-wq +td-vk +er-jj +ht-un +sl-kh +ie-if +xe-py +ah-vs +nn-vo +oq-ta +ns-de +jc-zg +ov-qe +ip-cn +xv-ar +mb-uf +ow-si +yp-iu +ub-bz +qz-ev +kt-xd +lc-ha +lu-bo +yu-gu +mx-mi +yx-zf +ly-ob +nn-ij +ve-gz +jo-bj +pk-ww +dj-sb +gf-mf +fo-si +tg-yb +ab-ui +bd-if +fl-fh +wi-bi +ub-lc +zi-tq +xv-vi +my-le +kd-yh +kg-os +hw-zn +va-rf +aa-lv +bu-yp +gy-hw +nn-av +rx-as +gc-cl +ob-dn +pm-jr +yp-vy +zo-bt +co-sp +qq-sc +en-mj +to-xj +xl-nr +cl-og +rf-dj +li-ah +tx-um +bo-rr +bt-gj +rn-mv +mb-ox +jv-zc +jk-is +gw-ua +tt-vs +xi-vo +aq-fr +jz-hf +ht-hn +li-sn +cf-qh +ml-nm +wa-he +vz-fs +ds-sd +qe-ut +fx-iu +li-mq +du-ih +vh-dg +bl-uq +dq-ji +ej-bl +ws-tb +vl-cy +uz-bk +de-be +xs-sr +ih-cn +ic-ho +ih-gb +hw-mg +mi-nj +vp-ss +qf-vb +fr-lv +wx-bo +sb-co +fz-mo +iq-zl +sb-rp +yk-ws +ko-wc +js-bm +ui-iy +uq-nv +ky-vb +de-aw +hf-xm +if-af +hs-mc +mb-ge +dy-ko +ku-fw +by-rh +uf-nw +gp-lb +ni-fu +kp-df +cl-nu +cr-vd +io-fe diff --git a/day23/sample.txt b/day23/sample.txt new file mode 100644 index 0000000..3d49766 --- /dev/null +++ b/day23/sample.txt @@ -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