diff --git a/docs/day23.md b/docs/day23.md new file mode 100644 index 0000000..27b6582 --- /dev/null +++ b/docs/day23.md @@ -0,0 +1,79 @@ +--- +url: "https://adventofcode.com/2024/day/23" +--- + +# Day 23: LAN Party + +As The Historians wander around a secure area at Easter Bunny HQ, you come across posters for a LAN party scheduled for today! Maybe you can find it; you connect to a nearby datalink port and download a map of the local network (your puzzle input). + +The network map provides a list of every connection between two computers. For example: + +```txt +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 +``` + +Each line of text in the network map represents a single connection; the line `kh-tc` represents a connection between the computer named `kh` and the computer named `tc`. Connections aren't directional; `tc-kh` would mean exactly the same thing. + +LAN parties typically involve multiplayer games, so maybe you can locate it by finding groups of connected computers. Start by looking for sets of three computers where each computer in the set is connected to the other two computers. + +In this example, there are `12` such sets of three inter-connected computers: + +```txt +aq,cg,yn +aq,vc,wq +co,de,ka +co,de,ta +co,ka,ta +de,ka,ta +kh,qp,ub +qp,td,wh +tb,vc,wq +tc,td,wh +td,wh,yn +ub,vc,wq +``` + +If the Chief Historian is here, and he's at the LAN party, it would be best to know that right away. You're pretty sure his computer's name starts with t, so consider only sets of three computers where at least one computer's name starts with `t`. That narrows the list down to `7` sets of three inter-connected computers: + +```txt +co,de,ta +co,ka,ta +de,ka,ta +qp,td,wh +tb,vc,wq +tc,td,wh +td,wh,yn +``` + +Find all the sets of three inter-connected computers. How many contain at least one computer with a name that starts with `t`? diff --git a/src/day23/day23.go b/src/day23/day23.go new file mode 100644 index 0000000..4b3a2b0 --- /dev/null +++ b/src/day23/day23.go @@ -0,0 +1,64 @@ +package day23 + +import ( + "strings" +) + +const FILTER_PREFIX = 't' + +type connection struct { + left, right string +} + +func Solve(input string) uint { + dict := make(map[string][]string) + isConnected := make(map[connection]bool) + connections := parseInput(input) + for _, conn := range connections { + if conn.left[0] == FILTER_PREFIX { + dict[conn.left] = append(dict[conn.left], conn.right) + } + if conn.right[0] == FILTER_PREFIX { + dict[conn.right] = append(dict[conn.right], conn.left) + } + isConnected[conn] = true + isConnected[connection{left: conn.right, right: conn.left}] = true + } + + var result, doubles, triples uint + for _, v := range dict { + if len(v) < 2 { + continue + } + + for i := 0; i < len(v)-1; i++ { + for j := i + 1; j < len(v); j++ { + x := isConnected[connection{left: v[i], right: v[j]}] + if x { + result++ + if v[i][0] == FILTER_PREFIX || v[j][0] == FILTER_PREFIX { + if v[i][0] == v[j][0] { + triples++ + } else { + doubles++ + } + } + } + } + } + } + return result - doubles/2 - 2*(triples/3) +} + +func parseInput(input string) []connection { + result := make([]connection, 0) + for _, line := range strings.Split(input, "\n") { + splits := strings.Split(line, "-") + if len(splits) != 2 { + continue + } + + result = append(result, connection{left: splits[0], right: splits[1]}) + } + return result +} diff --git a/src/day23/day23_test.go b/src/day23/day23_test.go new file mode 100644 index 0000000..0f3aa55 --- /dev/null +++ b/src/day23/day23_test.go @@ -0,0 +1,3440 @@ +package day23 + +import "testing" + +func TestSample(t *testing.T) { + input := `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` + result := Solve(input) + if result != 7 { + t.Errorf("Calculated solution (%d) was not expected", result) + } +} + +func TestWithTriples(t *testing.T) { + input := `ta-tb +ta-tc +ta-xy +tb-tc` + result := Solve(input) + if result != 1 { + t.Errorf("Calculated solution (%d) was not expected", result) + } +} + +func TestPart1(t *testing.T) { + input := `fm-rr +yx-is +sn-wd +db-vf +xr-cm +ao-xn +ky-li +vn-ae +cw-hb +hz-xz +hz-ls +ou-th +jq-xd +ar-yq +yt-ep +ac-ru +tj-dx +ur-cf +jl-ie +ue-im +mc-vl +ak-lc +to-fp +mb-or +rk-tf +ez-wv +wl-tz +qz-oc +jh-xq +kg-ma +gw-gv +qu-yv +zs-qr +up-cw +up-fh +tx-bf +od-xc +tk-bl +ep-hy +xh-de +dz-og +lz-bl +zj-ir +kt-ke +ky-cy +mu-or +zl-zf +kg-zh +om-ny +gi-sd +ni-ij +uz-ne +hm-ox +wc-if +zn-mr +jg-si +gq-iz +qn-qr +df-bd +nu-pm +bd-wx +zc-tf +xt-hm +ph-hl +ex-nt +wh-ab +bt-kt +ky-rl +fg-jg +sj-nw +xi-yv +tn-ce +xv-lq +li-ih +sb-ji +cb-cy +bv-mu +qd-lj +xo-is +ae-mr +av-ux +yp-gf +eo-xd +mj-xc +df-ok +yx-cz +ll-ep +ji-ci +yo-cj +ep-zo +xv-ih +du-so +bh-zh +zm-js +se-nf +hy-wy +hz-dz +nh-bz +ux-de +dm-sa +br-ws +ki-vh +ol-hr +ux-fk +md-qf +ci-qt +mb-ny +dx-vp +og-tt +nd-iq +gk-gv +fn-hm +qi-dj +kg-om +zu-fi +gu-jn +zm-wp +zx-dl +hf-hz +ti-gt +td-tc +qh-en +jg-ey +yf-iz +im-lt +to-qi +mu-ba +jq-vy +mh-rj +wr-yl +me-yl +lm-my +hw-bp +qj-ei +ju-mp +pe-zg +rw-hp +ca-pk +aw-ux +kz-hy +kt-bf +zu-gi +mm-ld +vh-vb +vj-zy +tz-sc +nh-zu +gz-nv +so-ur +xr-lq +hw-yz +rp-xp +ae-cw +ic-ie +at-ak +mq-kg +ps-uc +ld-sj +vs-uz +dt-sd +bz-dt +md-vp +ni-ub +en-yq +ph-go +eu-tj +lh-sx +dg-yb +ay-sb +fm-zx +uz-rs +ak-wn +yq-zc +tc-pv +sp-bf +yh-fa +tl-ib +vs-ne +cs-ic +fh-pi +wu-iq +wl-ph +nl-gq +ai-ey +cm-ff +hc-eq +ai-dh +ek-jb +da-ai +bf-gv +ft-ic +jn-ui +jy-jv +la-sv +mo-hb +wn-cu +lo-ag +td-kn +sv-dd +bo-kn +al-xn +ng-lz +sq-ro +cy-cs +kd-ja +vi-lm +qi-sa +of-my +mz-mg +pd-rb +yt-wy +mb-mu +hg-mw +ez-wy +qy-ko +sn-an +ug-fw +vl-rw +qd-fa +rr-hq +tf-yu +ol-ho +aa-ki +cc-na +ui-vj +wo-ie +ic-zf +hr-ho +eq-qk +ny-ma +ol-ij +ca-ze +xk-js +qk-jq +pf-tr +nf-dl +om-nx +qq-fd +hl-ni +dx-md +zd-jv +iz-ge +xn-bm +vh-xw +xx-pu +bz-df +ns-cb +nc-fd +so-zd +so-hg +nl-gh +yi-fd +gz-by +qt-kf +sn-aq +ow-ap +ck-fs +ev-qq +gi-df +rj-ao +lu-af +ze-ey +rw-ck +oy-vx +ut-jf +tt-td +pl-yi +er-eu +tx-pw +sy-pb +bm-sn +ju-cq +uy-cw +fx-dh +mv-sf +ku-gd +ny-jz +pj-is +gc-sq +zo-mf +oa-ab +rt-yg +tt-rh +dj-op +mm-sj +pi-bl +lm-yv +yq-lk +cu-xi +sx-de +gc-oq +lc-bx +uf-hw +az-pa +fs-vt +gx-cf +st-ql +da-jg +xd-qb +xh-eh +ut-rd +vc-fj +qi-yk +xi-kr +cu-ew +hf-ls +zo-ts +rg-xm +qj-el +rk-yq +fl-mj +mx-vl +ft-rs +xx-cl +oi-tx +rh-ef +vq-wo +uo-jf +go-sq +ac-re +oq-wv +ve-zt +el-tv +hh-id +ul-nl +rb-sh +vx-rm +ir-vg +ys-jg +sq-vt +lz-yh +zy-rm +be-zx +rb-gf +yx-xo +re-zm +oa-rp +wg-le +wo-zl +ym-sz +ju-pl +zy-ud +fd-ev +ue-qb +xv-ky +tc-pp +zf-gd +ed-gu +gh-vr +jt-sm +kz-wj +rx-tn +wj-hy +ax-hw +td-pv +ac-zm +of-pd +ae-ji +ai-pk +kw-mf +qd-bl +df-fi +vl-fs +yc-vr +sb-ae +ax-uf +wu-nd +yt-ts +sz-ak +gw-ej +mx-fs +wk-cf +ki-zj +qq-ui +up-ae +dk-kl +wa-vm +mj-vu +bx-at +cs-zl +hp-vl +qd-ko +we-rd +ax-pf +yt-mf +xo-po +te-et +os-ok +en-oh +uy-hb +ib-ap +qr-tr +to-wp +gc-lv +mk-gy +ak-eg +bf-ej +js-yo +aw-de +dq-be +xg-py +vi-ps +ns-hw +gw-tx +ex-po +jz-mq +nf-be +vh-wx +zy-ui +ko-nm +hf-uc +gc-ph +ft-uz +nx-kg +cc-py +ws-jf +fg-dh +bb-pw +nj-oq +nd-ys +gv-bt +of-rb +mg-tl +cb-ic +aw-vm +nc-mo +vj-rm +vt-nw +ip-wr +ra-yv +ki-px +zc-jx +md-zb +nh-fi +sd-zu +wl-lv +hy-ts +og-rh +zj-xw +db-xq +ix-xp +qi-th +rv-bh +az-pj +oc-eb +ke-gk +yx-zq +mm-vl +lv-bi +yg-cg +xp-lp +vf-dk +ub-fl +eu-la +jt-mz +jt-py +cw-mo +ou-dj +of-iw +st-gh +el-ht +qh-zc +nx-qo +ax-tr +ds-jz +lk-ar +sy-rp +yc-ew +ql-se +la-gs +ur-ax +yo-zm +pp-og +rm-ui +gd-vq +gf-ga +lm-ra +sr-zy +bl-ko +yx-ex +ng-yh +rm-jn +hf-xz +sm-at +vt-vl +pj-pa +sn-mh +lc-yc +lx-pu +qu-ra +ni-od +dk-db +kh-om +uc-xz +ly-ek +ue-eo +fd-pl +od-ol +lh-de +jt-cc +sz-at +ex-cz +sc-ro +pp-rh +ay-ae +lq-nz +mp-pl +jt-ow +bz-ok +uu-tk +nt-xo +zd-cf +ff-ih +bh-ny +zp-pv +nc-va +du-fp +jx-xq +ec-nk +el-dl +vi-nh +kx-wf +aq-an +ww-zy +ac-gh +bi-gc +nv-of +xq-kl +eo-kw +mr-sb +et-jx +ck-sj +ub-od +pd-wh +ar-en +hg-du +xd-qk +mn-gi +uq-gt +kt-gk +dj-lu +eb-dg +fm-dl +kl-vf +ui-ed +gt-fj +ib-py +zn-cw +fm-bb +bt-tx +yk-zo +hz-lb +yb-jw +qz-en +lr-sp +eh-fk +cl-el +lr-gw +nu-gv +yi-qq +qf-gs +ly-dt +yc-at +dx-dd +ig-nl +zk-ea +lh-si +uf-tr +tz-gc +vl-ld +zq-pj +mn-nh +sq-lv +zl-jl +ly-li +rs-mu +sz-xi +yz-ns +vg-wx +lz-ua +ij-vu +be-hq +id-ug +vq-jl +dy-iq +cr-st +uu-ju +tn-ip +qn-zk +cr-uu +vy-hc +xj-sy +ke-dg +ey-pk +ze-jg +or-vs +is-ud +cq-pl +tk-ju +vm-os +wl-gc +vg-ki +kd-rp +vn-cw +qo-bh +uo-ws +cm-nz +xu-ub +dq-pz +mk-mv +vx-gu +ns-zk +aa-fz +ox-cg +fd-va +zo-wy +st-ge +hp-ku +sc-bi +re-yo +vl-sj +gv-ej +lh-xh +mw-zd +ym-le +yb-zt +sv-qf +yz-qn +fs-mm +mn-bd +hl-ol +mx-nw +lv-ro +iy-kt +cg-hm +ki-uk +hg-qj +nw-fs +cr-cs +ev-cq +st-vr +jv-ur +pf-tj +fk-aw +xw-ir +mq-qo +sz-bx +mq-ih +mv-gy +te-jx +ez-yt +ev-ju +va-ju +ku-ic +qt-gt +ho-xc +ke-tx +sc-go +gn-ft +yq-tf +ga-ws +vt-hp +en-yu +uu-cq +fn-wh +we-kx +fx-si +wg-jq +ua-bl +ds-zh +hj-ao +kz-wv +ev-nc +to-cj +wl-nj +sn-hu +kf-gt +rj-an +jc-kx +aa-wx +ck-vt +cs-gd +yb-kl +nf-el +gf-of +ok-bd +et-iw +qj-so +oc-yb +zt-wc +ji-vn +ez-ll +ww-gu +nz-go +nh-sd +uf-qn +yi-nc +mg-ib +kn-zp +ya-rp +ef-tc +fa-pi +df-ja +gy-iy +xm-lv +sv-on +og-jw +ju-fd +oq-tz +ru-xf +xc-xu +tj-on +cl-bb +aw-wa +fp-zm +sv-zb +by-gf +ek-cm +wh-iw +fh-qd +pk-da +xj-lp +oy-zy +ug-qt +cj-ru +fk-sx +wh-gf +mx-sj +dk-yg +ud-ww +rk-zc +pt-uu +nw-vo +dh-pk +bm-lh +ej-gk +pf-hw +bq-tm +jg-ca +ux-pd +ka-sy +gx-jv +nu-ej +fn-pd +vh-zj +og-tc +ko-ua +cr-nc +vu-hr +mk-sf +du-wk +qk-wg +fh-yh +al-aq +lp-ix +dz-rz +eq-wg +sq-ph +sc-ym +wj-wv +lp-ja +rv-kh +ap-mz +ut-bq +if-xg +vq-cb +bp-dp +fj-kf +ix-kd +xc-ol +nd-gy +jc-tm +tz-ym +kz-ez +mm-ck +iw-nv +jw-dg +xy-rs +nf-pw +on-gs +ok-mn +gd-ie +mo-ae +mf-hy +cy-gd +rt-ox +ul-se +kz-kw +ke-nu +fs-rw +xv-jb +zx-ht +rr-zx +kl-jh +im-qk +wh-of +pv-pp +ip-lx +av-lh +fk-uv +la-dx +zd-pt +xr-ly +yf-vr +eu-gs +qf-er +if-dg +xp-ja +zw-ay +jd-dy +jr-gd +ru-yo +ma-kh +rn-rb +zd-wk +rj-xn +tv-cl +vg-uk +pz-pk +iz-st +cq-fd +qk-hc +ia-lo +ss-ap +ny-mq +dt-fi +sq-sc +ip-pm +jz-kh +jh-vf +bt-ca +pz-da +sc-ph +sn-al +qd-pi +wh-nv +pk-hr +sp-kt +ij-fl +wr-me +nc-mp +uz-ba +vc-ci +pv-tt +cc-ib +eh-dk +uc-yv +ld-rw +pb-ka +ie-ku +lo-yb +dh-si +wu-sf +fx-vs +rv-kg +ac-js +br-jc +jr-zl +tv-zx +sj-hp +vn-sb +tt-ou +rb-wh +ou-qi +nb-tr +lu-qi +lx-xx +js-fp +ug-vc +kh-zh +ra-ps +le-jq +ja-sy +cb-ub +tx-gv +mz-rd +sp-gv +lu-sa +tn-zg +yu-oh +ej-sp +qb-lt +ow-mg +pe-dq +eb-ep +lo-eb +xj-ja +jf-bq +yg-vf +dp-ac +gl-ql +hf-my +ab-sy +tc-tt +bd-zu +ef-dz +yh-pi +al-an +bd-nh +wx-zj +la-on +iy-nd +vq-lj +lc-xi +ig-gq +sa-af +oh-jx +om-rv +el-pw +sz-wn +lp-ya +ss-ow +xi-ew +er-gs +ag-wc +ut-ws +wg-vy +lo-if +wy-ll +mc-ck +uz-mu +zc-en +rm-sr +gd-wo +ox-kl +ws-ye +ff-ky +od-mj +bv-jy +ao-wd +bp-nt +hl-hr +cy-jr +se-yf +gn-mb +le-im +uz-xy +hf-ar +ff-xv +ec-dm +gw-bt +aw-xh +nt-pa +gh-ul +fd-uu +xy-or +dj-sa +gn-ne +mu-xy +eh-av +we-me +zb-dd +yx-po +pi-ft +vr-iz +zg-wr +rd-wf +yc-cu +ss-na +yp-iw +sr-oy +gx-so +pl-ev +bi-ph +et-yu +nk-op +qu-ls +vz-yx +xx-ip +pl-va +yu-ar +mz-nr +jx-tf +yz-zk +ug-uq +tr-ea +sx-wa +ru-dp +af-op +az-vz +ts-wj +vf-rt +ql-gh +ws-rd +nz-jb +xy-ne +lt-eo +ft-ne +fz-tg +wp-ru +uv-vm +gw-nu +jr-ic +pu-tn +qj-zd +re-ti +ya-ja +os-nh +ud-gu +rb-hj +rt-db +hq-dl +tr-yz +vc-tt +kg-bh +id-fo +sa-ou +fe-dm +bh-om +tx-ej +th-sa +un-sx +tt-pp +pu-ce +ow-nr +mx-vt +fn-of +td-av +ti-hh +mb-ft +vp-la +xf-tv +zo-wj +tz-sq +kh-ny +sp-nu +uk-tg +el-zx +pj-yx +ol-ni +uy-ji +yb-ve +pb-lp +zf-ue +dt-df +xv-ly +hc-eo +ys-iq +fx-ey +ft-ba +zx-hq +wc-eb +lh-aw +tx-lr +xq-cg +tv-pw +fp-dp +gz-fn +wk-jv +wo-jl +kh-ds +kk-ss +pf-ea +ux-un +so-cf +pw-cl +ac-xf +lc-eg +uk-wx +tz-ro +ly-wy +si-pk +lc-wn +oq-sq +rn-wh +ec-af +qf-tj +nz-xr +ga-tm +bd-bz +oq-sc +ql-gs +ep-ts +ft-bv +vg-xw +ye-xt +kz-ep +mw-ei +up-hb +yt-wv +id-yt +tt-kn +xo-pa +xh-un +xz-lb +qk-na +nv-by +wq-hu +fa-qy +rd-kx +sb-hb +ak-bx +vq-cy +hu-xn +ba-ne +zb-eu +mj-hr +zc-et +ia-xw +nz-ly +kd-sy +jf-rd +vx-sr +hq-bb +lo-gz +kk-mn +dt-gi +mc-vo +ir-wx +uy-up +xc-ni +fj-qr +pb-rp +ve-if +yi-ev +uy-yf +oi-bt +hh-gt +ec-yk +yl-lx +et-en +pw-be +og-td +zg-pm +lz-nm +rd-tm +nc-ju +fz-vh +gc-ro +jq-im +de-wa +rs-ba +ax-yz +bx-kr +if-yb +qo-ma +bi-ym +zc-yu +hm-db +hq-fm +hc-qb +ef-og +jh-xt +cb-ku +aa-uk +or-gn +ld-vo +ez-mf +fx-pk +fo-hh +fh-qy +xf-xk +oh-et +sh-pd +vm-jf +xz-vi +gi-os +xd-vy +ef-td +ez-ep +up-mr +px-zj +zj-vb +zs-pf +iz-ul +bh-ma +wk-gx +wo-cs +qb-im +ly-lq +ld-mc +ak-ew +ea-bp +ay-cw +gq-ge +kr-sm +kf-vc +dp-wp +ga-wf +hh-ug +od-hl +lk-yu +uv-wa +to-ac +eb-ag +sp-oi +ni-xu +dl-pw +pm-ce +ie-pu +ns-zs +qi-ec +eg-kr +ir-vh +ju-qq +ho-ij +va-ev +jd-sf +sn-xn +oa-ix +wh-sh +hr-ni +mb-rs +up-zw +du-cf +lx-pe +az-nt +si-ca +nj-ym +aa-vg +ny-kg +mc-nw +ss-ib +dy-sf +br-bq +ac-wp +ua-yh +sn-rj +ix-rp +oh-yq +jh-cg +nf-zx +de-vm +vg-tg +yi-uu +lt-ai +yg-xt +ya-ix +ug-ge +er-ae +ji-cw +gl-gq +yz-ea +uv-aw +pz-ey +bv-ne +wj-ez +dd-qf +gs-zb +mg-rz +hq-nf +yx-az +lo-qz +hz-my +ya-sy +bb-nf +tx-kt +wh-yp +lz-mw +gw-kt +nj-gc +ed-qf +zq-wz +pb-ix +ei-cf +mw-wk +zo-yt +ja-pb +rl-xv +hm-ye +fj-fw +ce-rx +sj-fs +mo-mr +nw-xj +pi-lj +bp-ns +cf-pt +dm-hq +ce-pe +mz-ib +we-bq +id-fw +jh-dk +lt-qk +wk-pt +uc-ra +oy-ww +yl-pu +ym-ro +nw-ld +tk-fd +dm-lu +yc-sz +oh-te +wl-ym +pt-hg +rd-ga +ue-vy +kg-vy +gx-hg +ca-ey +pp-ef +rz-ef +rt-cg +od-by +zk-tr +xj-ka +wg-ay +el-mk +ca-dh +bz-bq +ip-me +mr-cw +aq-wq +iq-jd +qt-zb +rt-dk +qi-af +lp-ag +ti-kf +to-js +up-ay +xi-wn +ef-bo +ur-hg +aa-tg +yl-ip +iy-rg +yk-lu +vc-id +lx-tn +mf-ep +xw-fz +is-az +iw-gf +mo-zw +ye-yg +nr-ao +mp-tk +jv-pt +av-wa +eu-rr +yk-fe +cz-vz +ql-nl +vu-fl +nk-dm +po-pj +ag-uo +fo-ti +hy-ll +me-xx +dy-xm +fa-nm +oi-ke +sa-yk +rj-fm +rn-fn +wl-sq +mo-ji +ec-ou +qj-du +wp-js +pz-dh +pd-gz +xn-an +zg-xx +qj-mw +zf-cs +mg-ss +th-fe +vo-sj +hb-zn +fo-gt +qz-jw +dp-cj +zw-uy +mb-xy +ww-vx +xo-vz +wq-rj +qy-pi +vc-hh +nz-rl +kz-ll +uc-hz +xr-jb +cg-xt +tm-ut +tk-pl +ht-dl +mr-uy +zh-jz +ka-ya +pa-ex +yu-rk +yl-ce +lh-ux +ga-we +bi-ds +if-eb +iw-sh +jv-qj +ih-xr +iy-mv +an-wq +jd-rg +tt-zp +qb-vy +xm-gy +nh-ok +vm-fk +wy-kw +hf-yv +ll-mf +an-hj +nz-xv +ca-da +yk-op +fx-ai +ng-nm +qz-if +iq-xm +lk-qh +ok-sd +rx-yl +ao-hu +mj-ni +kd-ab +yu-jx +jr-zf +uz-ea +fl-ho +uf-yz +kw-yt +ib-jt +vj-ud +jy-mu +zd-ur +ia-jw +jd-wu +wc-os +ir-px +zw-ae +ws-kx +qf-vp +ph-ro +lr-ej +yx-vu +ek-or +ok-sh +tg-aq +lq-iq +sz-eg +ko-pi +kl-hm +ji-zw +ng-bl +jr-ie +da-dh +rz-tc +mx-hp +xq-rt +hq-ht +qy-qd +dz-tt +vu-od +cl-zx +xq-ye +mz-de +ps-qu +zk-zs +cy-zl +wy-ts +ea-qn +ao-bm +xd-hc +my-ra +fi-ok +cs-jl +kf-ug +ax-zk +fw-qt +bb-el +hm-vf +fa-ng +mp-ev +zk-uf +pu-me +mo-ay +mm-fg +ve-ia +fm-be +jh-hm +ss-py +ve-dg +sa-nk +sj-mc +ky-xr +aq-hu +mg-cc +mm-vo +tc-bo +eh-ux +dq-pk +lz-lj +wp-re +aq-hj +sf-gy +pm-rx +ut-vg +mj-hl +ev-tk +pz-ai +de-fk +sy-ew +ls-cc +ma-zh +im-eo +vi-ra +vn-hb +gk-tx +be-bb +pp-td +bq-rd +ep-wy +mo-vn +ji-mr +an-wd +pv-og +fl-od +rg-nd +bp-qn +fp-cj +ba-or +vm-xh +pj-nt +xu-ij +ak-kr +ky-nz +lk-et +zx-pw +vz-nt +ti-fw +dg-lo +gn-bv +jg-dq +sq-nj +ar-te +nm-bl +sh-by +rx-pe +ls-uc +gd-ic +gz-rb +gq-vr +ph-ym +gl-se +ar-rk +yf-nl +rm-ww +kr-at +bx-yc +sx-aw +li-ai +zl-vb +ue-eq +eo-qk +zt-ia +ra-xz +ig-ul +zn-ae +yz-zs +xg-nr +sz-sm +mj-xu +iw-fn +aq-wd +ut-br +nw-rw +ur-du +sh-nv +lm-qu +vo-vt +db-fz +lj-qy +wu-gl +dj-ec +qy-lk +nm-pi +uk-xh +eg-cu +tv-ht +pd-by +yb-wc +rs-or +eb-zt +gz-wh +zo-wv +zh-nx +yf-ig +sh-gz +qb-wg +xq-xt +hp-vo +ax-ns +jl-cy +vu-ni +zt-jw +oh-bd +zp-rp +or-ne +sy-oa +kz-ig +ip-ce +ih-ek +bp-ax +zo-ll +rl-jb +nj-sc +en-te +av-un +fs-hp +wf-uo +ro-oq +rt-ye +yg-kl +wr-pm +tg-xw +vr-ul +zp-td +th-dj +ej-oi +pv-rz +ao-aq +re-to +jr-cb +ap-xg +fn-gf +fe-ou +bq-ga +po-sv +ex-xo +nd-xm +lb-ls +qf-zb +px-vh +gc-go +mw-ur +qy-yh +rw-vo +wq-hj +gy-wu +xu-fl +rd-br +rm-ud +zf-ku +jl-ic +et-yq +wj-wy +ol-vu +rg-gy +ap-mg +hh-op +ym-sq +zj-tg +nx-ma +uu-qq +gy-ys +my-ls +wj-ep +fi-kk +hw-tr +go-ym +ie-zf +hf-lm +mg-xg +ys-mk +ox-db +cm-ly +oy-rm +rh-td +cq-yi +dl-rr +mw-pt +ue-hc +zg-ip +dq-si +bv-or +nl-gl +kn-pv +fo-qt +vu-ub +pw-hq +eo-jq +ug-fo +vr-se +af-yk +xm-ys +ny-rw +og-zp +ff-rl +pd-iw +sr-jn +ke-bf +nb-oy +wa-fk +ox-xq +yl-zg +wp-xk +vx-nb +yi-tk +ig-gh +ye-lc +gu-nb +gy-iq +xi-ak +hu-eg +bo-rh +ui-gu +ul-pf +rz-bo +wg-eo +ug-fj +wd-al +ft-or +zm-xf +uv-av +ue-xd +kh-mq +nl-ej +jn-vj +bm-rj +sx-eh +ps-xz +zd-ei +jr-wo +lj-yh +ag-jw +ds-rv +wz-xo +eb-qz +yf-ge +vu-hl +bi-wl +jt-ss +ka-yq +ud-ui +tl-ap +jq-qb +qr-zk +vc-fo +dq-dh +da-rv +zf-cy +pe-xx +pl-qq +wf-br +mk-wu +zp-rz +ab-ix +tv-bb +rm-ua +wf-ra +jf-wf +an-tm +jy-ft +tk-qq +ak-cu +ed-nb +zq-cz +gi-ao +rs-gn +ps-yv +wu-ys +cf-mw +ok-gi +zq-po +ql-iz +cr-ju +jw-wc +my-uc +wj-rr +er-dx +oh-ar +at-ew +ye-cg +bo-zp +kd-oa +mq-ma +fg-ca +wq-mh +ca-ai +hj-al +mp-va +vn-jr +ip-mj +ig-iz +me-tn +va-cr +ag-dg +pw-fm +jy-vs +hf-ra +rp-xj +sz-cu +nc-uu +lb-hf +vr-ig +mb-jy +pz-jg +li-nz +ow-mz +po-cz +ro-nj +xx-wr +na-mz +jt-tl +lb-my +uf-pl +by-of +bo-tt +an-jx +dp-js +jy-or +po-vz +dy-xf +fw-vc +vb-wx +ur-pt +gu-fj +na-jt +cc-ow +kz-yt +lr-gv +ff-jb +hz-yv +ei-ur +zs-hb +bi-oq +xg-yo +tj-gs +ia-if +hy-ez +bd-dt +pa-yx +zu-df +fa-xu +zl-ku +ko-lj +xc-fl +un-eh +vj-gu +nv-rb +kl-cg +mk-xm +id-ci +mj-ij +vb-tg +py-ow +eu-dx +gi-nh +xc-nx +cq-cm +dj-nk +ag-yb +at-eg +hr-xc +tn-xy +pu-rx +zo-kw +tc-rh +qj-cf +mh-aq +lz-fa +sz-kr +kd-xj +dx-zb +xh-av +zo-ez +ro-ce +ke-lr +kl-db +zn-sb +nh-kk +uu-mp +uo-jc +mk-nd +bh-kh +xq-hm +ko-ng +ho-ub +zd-vx +tc-zp +nz-ih +if-oc +li-ff +kh-nd +dl-tz +md-tj +hr-ub +vi-qu +uo-bq +xt-db +qf-eu +az-po +on-md +eo-le +py-na +jy-ne +gz-rn +df-mn +eq-le +ck-mx +th-dm +xj-ab +tv-fm +zw-hb +du-gx +qu-uc +hl-ho +ud-nb +cz-cs +lk-jx +sd-bd +rr-be +dz-pv +vb-ki +yt-wj +oa-ka +dq-fg +bo-pp +rm-gu +ed-oy +rw-vt +xf-dp +fe-sa +sd-os +gw-dj +yc-ak +dd-vp +hp-mc +zc-vb +mf-wv +lt-jb +px-xw +qd-ua +gu-zy +iz-gl +wv-wy +hy-dd +xo-id +iy-iq +hj-bm +xp-sy +zf-vq +ca-fx +na-ap +bx-sm +op-ou +wn-eg +nk-ck +cl-fm +qt-id +wj-kw +on-vp +uy-vn +nu-lr +zg-ce +kw-ez +gz-iw +dk-hm +fn-by +tl-py +gx-mw +fe-af +hw-qr +uy-zn +vq-zl +qb-eq +wd-bm +zp-pp +dk-xt +th-pz +oh-rk +ud-vx +yf-gl +wl-xk +dd-on +ga-kx +pf-ns +zf-cb +ut-wf +ly-ky +ma-om +xd-le +zg-me +ix-xj +md-sv +fw-hh +bf-gk +bd-gi +ss-cc +qr-uf +pb-kd +ma-rv +ti-fj +sb-mo +pz-si +ut-jc +kh-nx +uz-jy +ko-yh +uq-cf +yl-xx +zo-hy +iw-rn +vn-zw +qf-on +ox-jh +sv-vp +xr-ff +im-eq +pe-me +kr-yc +me-lx +wo-cb +ny-qo +go-bi +xf-re +go-ro +qy-nm +dp-zm +zu-os +ws-bq +im-yk +iy-dy +fe-ec +mc-mm +is-cz +uv-ux +zn-mo +at-cu +sz-lc +ay-hb +rh-pv +lm-uc +kt-ej +gd-jl +go-wl +ja-rp +kn-ox +xx-pm +bx-xi +ep-wv +xy-vs +sx-ux +et-ar +ix-ja +ji-hb +mq-bh +mm-rw +id-kf +dz-pp +on-zb +lr-ed +rh-kn +nr-na +lp-ka +nw-vl +ye-kl +eh-wa +ku-wo +xp-ka +nc-tk +pp-kr +dz-tc +ph-oq +en-jx +vp-er +fl-hl +tl-cc +da-si +kk-bz +fe-op +df-sd +bm-hu +lk-te +mh-wd +qd-nm +sh-gf +sy-lp +xj-oa +yp-by +eq-lt +ij-hl +ba-jy +le-qb +ni-yi +ky-cm +go-nj +ma-ds +mr-vn +id-uq +ih-jb +lp-mu +uq-qt +nb-jn +tf-et +uk-vh +ai-si +se-gq +vs-gn +dm-yk +id-gt +ia-oc +pa-po +vf-ox +ax-qn +mn-sd +rv-mq +dd-eu +zc-lk +vy-im +ib-ow +px-vg +oc-ve +lt-xd +lu-fe +kz-js +iy-xm +eq-xd +os-df +ih-rl +mm-vt +sr-ed +pl-uu +sx-av +tv-dl +ho-ni +xu-ol +yc-wn +ge-gl +zp-ef +qu-my +ig-ge +hw-zs +al-hu +kg-kh +dj-yk +li-xr +wd-rj +zq-xo +xj-ya +xh-uv +th-af +hh-qt +yc-eg +on-dx +db-jh +jf-ga +nx-ds +la-er +oq-go +oy-ud +ic-wo +uv-eh +vp-fi +lx-wr +bb-dl +iy-jd +ki-fz +dt-ok +gs-sv +rl-cm +ir-ki +lr-gk +yt-ll +kk-sd +fa-fh +tf-ar +up-ji +er-dd +oc-lo +yc-sm +ay-ji +bx-wn +vp-eu +zy-ed +om-mq +dj-dm +kl-xt +ew-wn +yi-ju +up-sb +ds-kg +cq-nc +ki-xi +an-mh +du-gq +cb-jl +sb-uy +wg-ue +yo-xf +cb-zl +gh-se +zd-hg +nu-bt +zm-xk +ll-ts +bt-lr +gx-qj +te-rk +nj-tz +ey-da +lo-jw +ce-lx +xw-ki +wp-jn +qr-yz +jn-vx +sv-er +gl-ig +aw-un +qb-qk +mh-oc +sa-op +gn-jy +xt-ap +qz-ia +mv-zo +sf-iy +dq-ze +nt-wz +or-uz +xd-wg +af-zb +se-ge +wr-rx +pa-wz +fo-uq +ti-qt +sr-nb +cu-mn +nr-tl +po-wz +is-wz +zl-gd +vi-hz +on-eu +wa-ux +wz-az +br-jf +sj-vt +wv-ts +rk-qh +zn-zw +ia-wc +cu-kr +aw-av +ht-cl +ib-rk +al-wq +pe-ip +bo-og +lm-ls +im-wg +sc-gc +lo-wc +yh-vl +jt-xg +uf-bp +ij-od +jh-hw +zt-oc +ze-pz +bm-al +mv-nd +pb-ya +ax-zs +ld-mx +rn-gf +dm-qi +im-xd +xk-to +fn-rb +aa-ir +nb-ww +ku-cy +jc-rd +ce-xx +mb-ne +ua-nm +jz-bh +mx-mm +oq-wl +sv-eu +rd-uo +qq-cq +kk-zu +zj-uk +lj-ng +rs-bv +vq-jr +wc-qz +sf-gt +hj-mh +jg-pk +eb-yb +si-fg +na-ib +qo-jz +zt-ag +se-st +fx-ze +ji-zn +mn-zu +ua-ng +sx-vm +vn-up +rl-ly +nu-tx +na-xg +bh-ds +re-dp +gu-sr +ij-hr +ds-om +sh-of +zf-wo +nv-rn +ua-qy +dm-af +jt-ap +da-fx +lv-go +fw-bt +df-nh +zd-du +mj-ub +xn-aq +ci-ti +ps-lb +uo-ga +nw-mm +wp-xf +va-qq +ic-vq +ka-rp +pe-pm +nm-lj +ga-ut +xh-fk +wx-fz +at-wn +dd-md +ay-zn +pt-du +rz-td +zm-to +ib-nr +ao-sn +qn-pf +og-kn +cu-lc +xt-vf +ir-yp +so-wk +ls-ra +ar-zc +mb-ba +na-mg +hu-hj +py-nr +gx-pt +ci-hh +zm-ru +gw-bf +ex-vz +vz-pa +ff-lq +qk-le +ld-hp +xk-fp +ls-ps +pm-pu +ae-uy +rm-sn +uk-px +sn-hj +lb-qu +nw-hp +bv-vs +tl-xg +wo-cy +hb-mr +lm-ps +bt-bf +to-yo +ez-ts +fp-ru +fw-fo +jl-ku +vt-mc +zw-cw +te-yq +ol-ub +jr-cs +jn-ud +qu-oa +ts-zh +ym-oq +jx-yq +ia-yb +dp-xk +yh-bl +ey-dq +de-un +my-vi +om-ej +pf-uf +uy-ei +sy-ix +ue-jq +ci-ug +tv-nf +bm-wq +ab-ya +ke-bt +ce-me +te-bx +qo-ds +mn-fi +yu-qh +hg-wk +dk-xq +fm-nf +cc-mz +pi-lz +ck-vl +fk-un +cl-hq +va-pj +gf-gz +lb-lm +mq-nx +we-uo +oi-dx +rk-en +wx-tg +ox-xt +vo-hc +mz-ss +tn-xx +dt-zu +lv-nj +lc-kr +un-lh +zs-uf +kt-oi +pz-fg +hh-kf +an-bm +qr-ax +uv-at +bp-tr +sx-uv +ei-wk +zs-qn +pb-we +fk-lm +cz-pj +tf-en +rk-lk +of-yp +sc-wl +fz-uk +xc-ub +oa-aw +qh-jx +yv-lb +mf-wj +th-nk +lq-ky +jd-xm +xg-ss +yi-va +ih-lq +cl-rr +qj-ur +tk-va +ve-ag +ck-vo +yv-xz +ht-pw +br-sm +jv-so +lv-ph +cq-mp +fd-gn +gk-nu +wv-kw +gt-fw +jd-mv +ew-eg +jb-li +gk-gw +zy-jn +fo-fj +rs-wz +pv-bo +if-zt +bh-nx +ou-lu +vy-lt +nk-ou +fh-lj +qj-pt +vp-tj +so-mw +yc-xi +vo-mx +zf-jl +wy-mf +ut-uo +st-yf +ey-zm +ky-jb +jb-sj +mk-me +bf-lr +gl-ul +nf-rr +uq-ci +xy-ba +se-nl +eo-eq +cr-cq +ws-wf +fi-bz +bt-gk +de-eh +fp-yo +eg-bx +mv-xm +ex-ru +py-mz +ql-yf +xz-xn +hw-zk +ff-ly +zd-gx +nw-ck +bd-kk +ys-dy +ht-nf +rx-me +rx-ip +sx-zn +yi-vl +ca-dq +ac-xk +gx-ij +xu-ho +yo-xk +ay-vs +aq-bm +nv-yp +ow-aa +nt-zq +fz-zj +hy-kw +nr-jt +ut-kx +ti-vc +dg-oc +oa-ya +lv-sc +hz-ra +ia-dg +xz-lm +qf-dx +ne-fs +ht-be +sb-zw +tl-mz +ei-jv +dg-qz +ok-zu +cs-ie +sa-ec +to-ru +vs-mb +vm-av +dy-wu +qh-ar +ne-mu +jh-ye +eo-qb +az-zq +lc-at +xc-ba +ve-wc +sr-vj +dy-gy +ek-xv +se-ig +wu-xm +rg-nv +qz-yb +ka-ix +vf-sd +bm-mh +px-aa +vx-zy +xp-ab +rl-ek +jx-ar +jz-ma +fs-vo +js-ru +et-qh +lh-wa +cg-vf +gi-bz +vh-tg +ea-qr +py-ap +kf-fw +ao-mh +ab-lp +zw-mr +vy-eq +vu-ho +vi-hf +zu-bz +ap-nr +zx-yz +rn-by +fn-sh +qu-hz +bb-ht +oy-gu +le-vy +th-yk +vg-vh +jq-mp +gq-ul +nt-yx +dz-rh +ne-rs +kz-wy +uq-hh +xu-hr +yt-hy +wc-dg +mk-dy +ck-ld +ig-st +lx-pm +oi-lr +yz-pf +op-th +zn-up +xr-xv +ng-qy +cz-nt +bx-cu +ma-lx +oy-jd +kg-qo +ue-lt +ev-uu +ko-fh +ol-mc +ag-if +rs-vs +mg-nr +jy-xy +ni-fl +wh-ak +bb-zx +ew-bx +cm-xv +ei-pt +zc-te +fh-nm +bv-mb +ke-ej +fh-ng +tm-ws +ox-dk +az-ex +cr-tk +lh-uv +xi-at +ij-xc +ve-wn +jw-eb +vm-un +gk-sp +hl-xu +rb-iw +zh-rv +ed-vj +mh-xn +rw-mx +up-mo +xd-fl +fj-ci +ab-pb +bh-jl +qh-ex +fo-kf +fo-ci +rn-yp +yq-qh +ea-zs +br-tm +yg-hm +pb-oa +fh-bl +pp-kn +cq-tk +dp-yo +ts-mf +vy-qk +ff-nz +ie-cb +ru-xk +ns-qr +pj-vz +jb-cm +xo-az +tz-bi +gl-vr +fi-gi +rz-kn +tn-pm +ze-da +ho-od +nb-zy +mv-ys +gi-kk +vq-ku +cy-ie +ya-xp +tj-la +om-jz +ti-uq +nd-dy +ya-kd +ie-zl +ss-tl +la-dd +kn-dz +hz-ps +mk-rg +ex-zq +ao-al +kf-uq +gt-ug +jz-kg +se-iz +jw-if +th-lu +zn-vn +rp-ab +qt-fj +ui-vx +pa-zq +mh-al +ub-hl +pe-wr +vi-yv +ev-cr +tz-ph +fi-os +pb-xp +sr-ud +ai-ze +rt-jz +md-la +vz-wz +ja-ka +rx-lx +po-nt +fe-nk +cj-xk +kw-ts +si-ze +ss-nr +wg-hc +hg-jv +db-yg +vu-xu +jg-ai +ky-ek +xy-gn +nu-bf +sd-bz +mv-rg +ua-fa +ou-af +ld-vt +gf-pd +uo-br +eb-ia +gh-ge +wj-ll +ep-kw +bq-wf +sp-ke +br-ga +fw-ci +nk-af +jv-du +kt-lr +tm-kx +rx-xv +op-qi +tl-ow +gs-dx +gt-vc +zt-uc +ir-vb +ef-rk +yi-mp +nu-kt +yp-fn +xn-hj +kn-ef +ns-uf +tv-be +tj-dd +mu-gn +kx-br +oc-un +rp-lp +qj-wk +aw-eh +el-hq +tz-lv +vj-oy +os-dt +hu-mh +gs-dd +wa-tf +bq-kx +xg-ow +rz-rh +px-wk +gz-yp +rr-ht +wz-yx +ap-cc +oy-ui +hb-ae +py-xp +rv-ko +lu-op +ef-tt +to-xf +hm-rt +ve-eb +bz-os +rj-aq +xw-uk +ci-gt +tm-we +lu-xr +wx-ki +oa-ja +zm-cj +fj-uq +rb-by +om-qo +gq-gh +tm-uo +qn-tr +rn-tl +vh-aa +cj-xf +dm-op +zk-qd +lq-li +hw-qn +jd-ys +nk-qi +na-tl +yl-pm +ig-ql +lz-fh +qq-nc +cj-re +wg-lt +tc-kn +ef-pv +wq-yg +ul-ql +fp-wp +ps-my +ac-fp +is-hg +lk-tf +uz-mb +dg-zt +jc-ga +zq-is +hw-ea +dj-fe +re-ru +qd-ng +ew-lc +td-bo +nx-ny +qz-ve +cs-vq +de-av +rt-jh +fe-gc +eo-vy +tf-te +wq-ao +lz-qd +ai-fg +gz-of +xr-ek +jc-yu +hy-wv +lu-nk +mv-dy +cm-li +ky-ih +yp-sh +oi-gw +jr-ku +gh-gl +wd-xn +tx-sp +rl-ho +xc-vu +vj-ww +jc-we +lc-sm +uk-vb +ft-xy +kx-uo +ci-kf +wp-cj +vs-ba +aa-vb +qo-zh +nf-cl +pk-ze +nl-iz +fw-uq +ul-st +dh-nj +qy-lz +md-gs +bl-fa +vz-vo +ra-lb +cc-xg +ub-ij +jd-nd +rj-hu +ww-iz +wc-oc +ko-fa +zl-ic +gv-kt +rg-iq +uv-de +ax-ea +cw-sb +op-ec +rl-lq +ih-cm +js-cj +td-dz +oq-lv +li-xv +uc-lb +av-fk +vx-ed +cj-ac +zc-oh +be-el +fx-dq +nb-rm +re-xk +sr-ui +qf-la +la-zb +bl-lj +wa-un +hc-lt +va-cq +ca-pz +kd-al +sm-ew +ek-nz +lu-ec +gw-sp +zj-ix +pk-fg +lb-vh +ey-dh +zh-ny +vr-zq +cr-qq +ek-li +ka-kd +kr-wn +ek-ff +ym-gc +vj-nb +pa-cz +jl-jr +fn-nv +db-ya +sd-fi +ki-tg +rj-hj +cr-pl +qy-bl +wu-iy +qh-tf +zk-pf +qz-zt +sf-rg +ft-mu +mf-kz +fz-px +kk-dt +ge-ql +lq-cm +mg-jt +qz-ag +ld-pm +dz-bo +jv-mw +rb-yp +cr-fd +os-kk +tv-rr +ed-ww +lj-le +zy-mr +pj-wz +ec-th +fm-ht +ku-cs +od-xu +xw-wx +jc-ws +ze-dh +rw-mc +li-rl +ds-mq +bz-mn +pu-pe +jn-ed +wq-sn +jy-rs +pu-zg +pd-nv +xm-sf +cu-sm +kf-sc +mf-sp +yg-xq +ih-ly +js-re +ll-wv +ge-nm +ye-ox +nx-jz +tn-wr +rv-nx +qi-fe +ei-gx +gv-lv +bp-yz +vi-uc +yv-my +xy-bv +wu-mv +mc-mx +jn-ww +df-kk +zp-dz +ip-pu +oy-jn +vj-vx +el-fm +uu-va +ka-ab +bo-fz +vf-ye +gk-cj +xz-qu +kx-ev +nt-is +qn-ns +ww-sr +rn-pd +qo-rv +kl-rt +ez-wr +rz-og +pt-so +rh-zp +mp-qq +px-wx +bi-nj +hc-le +sm-wn +yq-yu +im-hc +fx-jg +xo-cz +tm-jf +sj-rw +iz-gh +ro-bi +gn-uz +ke-gw +dt-nh +ju-la +ic-cy +un-uv +cg-dk +lb-vi +ys-sf +yf-gq +ul-ge +zh-om +mp-cr +zh-mq +rh-zu +gh-yf +jc-wf +vc-qt +zs-tr +oi-gv +ol-fl +sr-ht +hp-mm +xh-wa +gq-st +pe-tn +vb-px +pa-fa +lo-zt +fj-hh +ed-ud +ye-dk +ac-yo +ba-bv +kz-ts +dl-cl +ve-lo +hl-sb +er-zb +eg-sm +sq-bi +po-is +so-ei +gd-cb +wd-hj +jv-cf +mw-du +iy-ec +my-xz +yg-jh +mj-ol +ba-gn +vf-xq +nr-cc +tr-ns +na-ow +ie-vq +ib-xg +er-md +so-wo +ux-xh +nv-gf +ua-lj +mk-iq +cg-ps +dh-jg +cz-wz +tj-sv +bd-fi +lk-en +kw-ll +yl-nk +sa-qo +jf-we +ia-ag +br-tc +iy-ys +db-cg +le-ue +cl-be +rt-xt +wd-pv +wf-tm +ro-wl +pf-qr +nu-oi +qb-bv +jf-kx +iq-sf +pw-rr +ng-ff +er-on +dm-ou +xo-pj +ze-ll +wk-ur +eq-zg +ti-ug +fp-xf +vi-ls +rl-xr +md-eu +sm-ak +si-ey +bb-rr +gd-vj +ns-ea +rz-by +vn-ay +fs-mc +jw-ve +da-dq +pp-rz +ir-tg +mn-os +te-yu +ys-rg +oi-gk +tg-px +mu-vs +tf-oh +ir-uk +rg-wu +ld-fs +hq-tv +vz-is +kd-lp +vr-ql +fg-da +gy-vp +tz-go +we-ws +xp-kd +yh-qd +ds-ny +fh-ua +wz-ex +fl-hr +bq-jc +nb-ui +bf-qn +te-qh +yk-ou +bp-qr +bt-sp +fz-ir +ut-we +st-nl +xj-pb +lh-eh +ck-hp +hf-ps +ox-yg +sz-ew +jq-lt +fg-ze +fo-bb +dx-sv +xj-xp +kr-ew +yl-pe +nm-yh +xw-aa +rx-xx +ls-yv +ur-gx +pl-nc +pd-yp +rn-sh +by-iw +uf-ea +vb-vg +ng-pi +jz-rv +nl-vr +md-ei +er-tj +ti-id +fx-fg +od-hr +is-pa +vm-ux +mk-jd +gs-vp +zq-vz +ke-gv +az-zw +wq-xn +we-wf +qu-hf +zk-bp +sx-xh +rn-of +kk-ok +fp-re +ua-pi +ge-nl +eh-vm +cz-az +al-rj +gq-ql +ui-ww +lq-ek +ls-xz +rk-et +ei-hg +cw-mx +xi-eg +wp-yo +fd-mp +hz-lm +zs-bp +jq-hc +fz-vg +py-mg +kh-qo +fx-pz +lq-jb +jd-gy +to-dp +vg-zj +xw-vb +jw-oc +rx-zg +mo-uy +ul-yf +zb-tj +wq-wd +ex-pj +hu-wd +lx-zg +hg-cf +qh-oh +pu-wr +bf-oi +wr-ce +nj-ph +an-hu +oh-lk +xp-oa +iq-mv +ab-ja +nd-sf +af-dj +vc-uq +qk-ue +aa-zj +jc-jf +ko-lz +tn-yl +be-dl +on-js +uz-bv +gl-st +jq-eq +fg-ey +lh-fk +ay-mr +mn-dt +ho-mj +rg-dy` + result := Solve(input) + if result != 1184 { + t.Errorf("Calculated solution (%d) was not expected", result) + } +}