heh
| -rw-r--r-- | src/inp.txt | 1347 | ||||
| -rw-r--r-- | src/main.rs | 236 | ||||
| -rw-r--r-- | src/util.rs | 46 |
3 files changed, 923 insertions, 706 deletions
diff --git a/src/inp.txt b/src/inp.txt index 5771cf7..8c99bee 100644 --- a/src/inp.txt +++ b/src/inp.txt @@ -1,618 +1,729 @@ -L 2 (#274630) -U 7 (#742433) -R 7 (#274632) -D 12 (#5a1523) -R 2 (#552252) -U 12 (#989093) -R 7 (#39f342) -U 8 (#989091) -L 6 (#1dae62) -U 4 (#10bf93) -L 7 (#32c3f2) -D 4 (#0892e3) -L 3 (#380422) -U 4 (#29e1f3) -L 3 (#3527b0) -D 3 (#32d823) -L 5 (#3527b2) -D 5 (#4f8123) -L 4 (#642cc0) -D 4 (#4f7e63) -L 6 (#209f50) -D 6 (#387f13) -L 5 (#821880) -D 5 (#4d80b3) -L 9 (#5e6d30) -D 9 (#553aa1) -L 4 (#0d0cf0) -U 10 (#5737f1) -L 9 (#0d0cf2) -U 3 (#2c51d1) -L 8 (#24d6f0) -U 7 (#957a93) -R 6 (#4a8310) -U 6 (#4349d3) -R 2 (#31af40) -U 6 (#5484a3) -L 8 (#377a52) -D 2 (#1edf01) -L 8 (#693b42) -D 3 (#1edf03) -L 10 (#5ec0e2) -D 3 (#656003) -L 8 (#10a770) -D 7 (#32bf93) -R 7 (#664850) -D 2 (#32db91) -R 8 (#1c7270) -D 10 (#9ccd43) -R 3 (#6ad5c0) -D 8 (#2e50e3) -L 8 (#451b80) -D 3 (#72d673) -L 6 (#606ad0) -U 4 (#1dc933) -L 4 (#7d4960) -D 4 (#425df3) -L 7 (#6c14a2) -D 4 (#193c93) -L 10 (#891d42) -D 4 (#5997a3) -L 4 (#185672) -D 5 (#2b10b3) -L 8 (#837e22) -U 7 (#371261) -L 5 (#3da452) -U 8 (#0b1d61) -L 6 (#5714f2) -D 4 (#2be861) -L 11 (#3e18a2) -D 7 (#6d9df1) -L 4 (#4f3a42) -D 4 (#269ae1) -L 3 (#330b12) -D 3 (#04d001) -L 6 (#020b02) -D 5 (#0ae901) -L 2 (#5eac70) -D 7 (#749f41) -L 6 (#5eac72) -D 4 (#39a091) -R 5 (#25e982) -D 5 (#29ed03) -R 4 (#46aac2) -U 5 (#33e203) -R 5 (#638592) -D 2 (#334443) -R 6 (#729482) -U 5 (#30c003) -R 4 (#554c32) -D 5 (#1487b3) -R 5 (#636080) -D 5 (#9945d3) -L 4 (#27d310) -D 9 (#39a143) -L 8 (#268500) -U 9 (#00fb73) -L 3 (#75c380) -D 4 (#00fb71) -L 7 (#4a94f0) -D 7 (#1707c3) -L 3 (#1a0352) -D 5 (#112b93) -L 4 (#47ff40) -D 3 (#5d5563) -R 10 (#7fabd0) -D 5 (#0054e3) -L 10 (#1ca5d2) -D 6 (#1811d3) -L 6 (#0e9a62) -U 5 (#301813) -L 3 (#471be2) -U 9 (#301811) -L 5 (#554f02) -U 12 (#56a913) -L 5 (#70b630) -U 2 (#3c7d03) -L 3 (#5334b0) -U 3 (#88eca3) -L 3 (#5e5ec0) -U 5 (#190663) -L 5 (#0727f0) -D 5 (#4bd611) -L 6 (#729bf0) -U 2 (#4519c3) -L 4 (#14a4b0) -U 2 (#5e96f3) -L 7 (#264850) -U 9 (#2e2441) -L 6 (#683450) -U 6 (#2e2443) -R 8 (#1cc7d0) -U 8 (#141153) -R 7 (#15b9c2) -U 6 (#59df73) -R 7 (#565bb2) -U 4 (#59df71) -R 4 (#53d3b2) -U 8 (#2ff203) -R 8 (#387260) -U 2 (#3f7fb3) -R 7 (#32edb0) -U 8 (#2f7463) -R 6 (#67d5b0) -U 6 (#5b3001) -L 4 (#2a24f0) -U 5 (#629821) -L 9 (#2a24f2) -D 5 (#683411) -L 3 (#18f510) -U 8 (#30abe1) -R 3 (#06a2c0) -U 2 (#4bd613) -R 13 (#60ee30) -U 5 (#6fadf3) -L 9 (#384c30) -U 6 (#30a8f3) -L 4 (#579dc0) -U 8 (#19d963) -L 4 (#3c7ce0) -U 8 (#316373) -L 9 (#25ca00) -U 4 (#429873) -L 9 (#59be70) -D 5 (#5b46e3) -L 5 (#59be72) -D 5 (#18e4b3) -L 6 (#5e1d50) -D 10 (#3e9e63) -L 3 (#459ec0) -D 11 (#44b1c1) -L 8 (#324152) -D 3 (#4c2b31) -L 5 (#324150) -D 8 (#22cf21) -L 7 (#36aeb0) -U 7 (#3b6a11) -L 7 (#1a7740) -U 5 (#518911) -L 9 (#61d4a0) -U 9 (#323d91) -L 3 (#5d5b40) -U 7 (#661041) -L 5 (#484a82) -U 8 (#087991) -L 4 (#38e512) -U 6 (#5fd7f1) -L 5 (#806972) -U 7 (#685183) -L 4 (#6671e2) -U 10 (#8f0d81) -L 6 (#2feae0) -D 10 (#201181) -L 6 (#507ba2) -U 8 (#62d101) -L 3 (#19af52) -U 11 (#4d1871) -L 8 (#6a2af0) -U 4 (#135721) -R 4 (#4260e0) -U 4 (#443a41) -R 6 (#107d40) -U 8 (#0aacb1) -R 5 (#5df350) -U 7 (#30bf53) -R 6 (#51ce90) -U 10 (#30bf51) -L 3 (#18bb20) -U 6 (#0aacb3) -L 5 (#06f190) -U 4 (#03dc91) -L 4 (#71bcb0) -U 9 (#4ce7b1) -R 7 (#81ff02) -U 3 (#6b0b11) -R 5 (#864392) -U 3 (#4bd3e3) -R 5 (#a07392) -D 6 (#3694a3) -L 7 (#16a222) -D 5 (#826881) -R 7 (#049c02) -D 3 (#2813e1) -R 5 (#7c6110) -U 14 (#40a881) -R 4 (#333260) -D 6 (#062261) -R 9 (#51ee00) -D 5 (#64b4e1) -R 2 (#2da420) -D 5 (#a4ab31) -R 10 (#38e550) -D 7 (#156261) -R 2 (#0b3aa0) -D 6 (#78a263) -R 7 (#926d10) -D 5 (#4e8ce3) -L 11 (#136420) -D 8 (#5e2713) -R 11 (#58d872) -D 4 (#772153) -R 4 (#58d870) -D 6 (#3f8e33) -R 7 (#136422) -U 6 (#2f6493) -R 4 (#851de0) -U 3 (#4b0281) -R 10 (#79ea40) -U 9 (#366871) -R 6 (#3a4780) -U 4 (#7fdd21) -R 3 (#54ed42) -U 6 (#11cd91) -R 7 (#4fae92) -U 9 (#6b0051) -R 2 (#4fae90) -U 10 (#4616d1) -R 4 (#54ed40) -U 5 (#473da1) -R 4 (#39cba0) -U 10 (#32db93) -R 5 (#7edab0) -U 2 (#1c7dc1) -R 4 (#2a7570) -D 8 (#5d0fd1) -R 7 (#5588b0) -U 5 (#48a261) -R 5 (#1bb440) -U 6 (#187c71) -L 6 (#32c080) -U 5 (#29f291) -R 6 (#1aa790) -U 5 (#54cf81) -R 3 (#7265a0) -U 5 (#4d8a91) -L 8 (#204d90) -U 7 (#4d8a93) -L 3 (#834a30) -U 3 (#09c801) -R 11 (#26e812) -U 6 (#7a9971) -R 6 (#3755c2) -D 9 (#21dba1) -R 7 (#3e8ea2) -D 8 (#2bb851) -R 6 (#345db0) -D 3 (#0c8f41) -L 3 (#28b9b2) -D 5 (#9280c1) -L 5 (#28b9b0) -D 3 (#228ac1) -L 7 (#0df740) -D 5 (#875d71) -R 11 (#4a5390) -D 5 (#8c7ac3) -R 4 (#417ff0) -D 4 (#12dc63) -R 11 (#5a6802) -U 8 (#616af3) -R 3 (#5a6800) -U 5 (#64b733) -R 3 (#99d5b0) -U 6 (#028b31) -R 9 (#0faf30) -D 4 (#6d4e01) -R 2 (#3a2e20) -D 5 (#510df1) -R 3 (#3a2e22) -U 3 (#436be1) -R 8 (#0faf32) -U 7 (#612641) -L 8 (#53daf0) -U 9 (#4e71a1) -R 5 (#303c32) -U 5 (#3f3233) -R 8 (#883082) -D 11 (#6551a1) -R 3 (#2bd002) -D 8 (#0827a1) -R 2 (#41c340) -D 5 (#6f0651) -R 7 (#53d550) -D 4 (#33aa31) -R 7 (#959892) -D 7 (#1a9fb1) -R 3 (#530212) -D 7 (#21c6e1) -L 7 (#2cccb2) -D 8 (#3904a3) -L 3 (#55d040) -U 8 (#2571f3) -L 6 (#1cd6f2) -D 2 (#a6b293) -L 5 (#1cd6f0) -D 9 (#25fc03) -R 8 (#55d042) -D 4 (#216b33) -R 3 (#4b8c82) -U 4 (#3f3231) -R 7 (#0c4122) -D 6 (#2e8ab1) -R 3 (#456be2) -D 7 (#7e5b83) -R 4 (#4c7d22) -D 2 (#7e5b81) -R 8 (#653352) -U 7 (#5fbd33) -L 3 (#045090) -U 8 (#084453) -L 3 (#5ac5f0) -U 6 (#191693) -R 6 (#0266c0) -U 5 (#2aa953) -R 4 (#849b60) -U 7 (#710533) -R 11 (#870222) -D 4 (#1a6bb3) -R 2 (#6c7bd0) -D 11 (#070a93) -R 2 (#18f422) -D 4 (#23a2c3) -R 11 (#6d8742) -D 5 (#23a2c1) -R 9 (#40c662) -D 6 (#5e1ff3) -L 6 (#045092) -D 3 (#555013) -L 5 (#1b7a52) -D 7 (#1223b3) -R 9 (#88fb52) -D 4 (#1223b1) -R 2 (#081112) -D 5 (#021341) -R 8 (#15ace2) -U 8 (#9fcf21) -R 4 (#3c2d32) -U 7 (#1d7ea1) -L 4 (#801282) -U 3 (#6e9741) -R 5 (#920a22) -U 5 (#346411) -R 9 (#565a92) -U 4 (#6835d1) -R 7 (#1beb32) -U 10 (#274661) -R 7 (#837f12) -U 6 (#151c81) -R 11 (#2e8672) -D 6 (#045641) -R 3 (#6bd070) -U 2 (#8c36f1) -R 5 (#188a00) -U 11 (#3f41b1) -L 5 (#438682) -U 4 (#811531) -L 9 (#464c82) -U 3 (#41f311) -L 7 (#89d300) -U 4 (#07c411) -L 5 (#71f5b0) -U 6 (#3c3e01) -L 5 (#824660) -D 10 (#40e461) -L 8 (#005ef0) -U 6 (#2f3c93) -L 8 (#541d20) -U 6 (#7291b1) -R 4 (#176280) -U 11 (#7291b3) -R 3 (#4c0380) -U 4 (#2f3c91) -R 13 (#447a00) -D 4 (#40e463) -R 12 (#134f60) -U 7 (#08ebc1) -R 5 (#000250) -U 4 (#2ec1e1) -R 7 (#08c350) -U 6 (#6b24b3) -R 4 (#137870) -U 6 (#0e1503) -R 11 (#96d010) -D 3 (#410e73) -R 2 (#0cfb40) -D 4 (#433481) -R 3 (#159fe0) -D 7 (#2e33d1) -R 5 (#159fe2) -D 6 (#48dfd1) -R 5 (#105850) -D 4 (#5f6db1) -L 8 (#1f2742) -D 8 (#421cc1) -L 5 (#2f0ce2) -D 5 (#24b4d3) -L 7 (#701502) -D 6 (#24b4d1) -L 4 (#121892) -D 5 (#038801) -R 3 (#055ce2) -D 3 (#0197b1) -R 5 (#09cfa2) -D 6 (#2ef9b3) -R 6 (#86b022) -D 4 (#2ef9b1) -R 2 (#18b6d2) -D 11 (#1b0c63) -R 5 (#208782) -D 3 (#377051) -R 3 (#767142) -D 13 (#377053) -L 5 (#31fba2) -D 6 (#1b0c61) -R 4 (#0b0542) -D 9 (#0197b3) -R 2 (#516d92) -D 2 (#26a151) -R 9 (#590c20) -D 8 (#59d3f1) -L 11 (#64b270) -D 8 (#9a2131) -R 10 (#34a6c0) -U 5 (#3300e1) -R 5 (#943c80) -U 2 (#45c371) -R 11 (#2904a0) -U 3 (#4f4011) -R 5 (#1045f2) -U 9 (#9f9df1) -L 5 (#1045f0) -U 5 (#03ff31) -R 7 (#48cc20) -U 3 (#174d21) -L 2 (#65e6b0) -U 9 (#360483) -L 6 (#42a0b0) -U 3 (#89d053) -L 9 (#3f0d10) -U 10 (#744613) -L 5 (#503e00) -U 3 (#9f85a3) -L 5 (#156fd0) -U 3 (#3a3a03) -L 4 (#7aa2a0) -U 8 (#690943) -L 6 (#5412a0) -U 5 (#262f51) -R 4 (#03c872) -U 6 (#521ed1) -R 6 (#193322) -U 4 (#674f11) -R 3 (#6f2462) -U 10 (#5131a1) -R 2 (#1155f2) -U 6 (#525651) -R 11 (#033872) -U 4 (#995501) -R 11 (#182650) -U 7 (#475891) -R 6 (#24df30) -D 9 (#33eb31) -R 4 (#24df32) -U 9 (#465211) -R 7 (#182652) -U 9 (#3aa201) -R 9 (#033870) -U 3 (#1a0ae1) -R 5 (#22b482) -D 6 (#56b2f1) -R 11 (#623122) -U 6 (#817c81) -R 9 (#623120) -U 4 (#38f971) -R 5 (#626642) -D 5 (#63e353) -R 2 (#0d8b02) -D 8 (#4fe853) -R 5 (#4789f2) -D 12 (#2cb943) -R 6 (#4f8292) -D 3 (#3ea3f3) -R 6 (#533a72) -D 3 (#78a803) -R 5 (#52bd42) -D 11 (#78a801) -R 3 (#075332) -D 5 (#201683) -R 6 (#1da752) -D 6 (#41e543) -R 3 (#995702) -D 5 (#0a2153) -R 6 (#4d9f32) -D 10 (#534cd3) -L 8 (#3f7340) -D 2 (#3892a3) -L 5 (#3f7342) -D 10 (#35d9a3) -L 7 (#0ee870) -U 10 (#5e8cb3) -L 7 (#0aed10) -D 9 (#5ea061) -L 6 (#388af0) -D 8 (#690071) -L 11 (#50f1b0) -D 3 (#24d793) -L 5 (#0c6f42) -D 6 (#75d573) -L 2 (#0c6f40) -D 2 (#2cf3d3) -L 10 (#43a410) -D 3 (#260e33) -R 12 (#1c47d2) -D 6 (#417d13) -L 6 (#61c132) -D 8 (#5496b1) -L 3 (#532302) -D 8 (#5496b3) -L 7 (#422062) -D 4 (#1f66c1) -L 7 (#527132) -D 9 (#393951) -L 6 (#293122) -U 4 (#58cf41) -L 6 (#2124e2) -U 9 (#49f2f1) -L 4 (#966df2) -D 9 (#033483) -L 3 (#3276c2) -D 3 (#71e053) -L 3 (#5912a2) -D 8 (#647a43) -L 8 (#58caf2) -D 5 (#74f4e3) -L 3 (#5033a2) -U 3 (#345423) -L 3 (#14f432) -U 7 (#44c9c3) -L 4 (#8c0842) -U 6 (#6cd493) -L 6 (#0ca462) -D 5 (#2dd8d3) -L 11 (#6ae062) -D 5 (#561703) -R 11 (#510c02) -D 5 (#55d0c3) -L 5 (#510c00) -D 5 (#227663) -L 4 (#26ebc2) -U 6 (#37ff33) -L 11 (#546b60) -D 4 (#3bcd93) -L 7 (#56a5b0) -D 2 (#3bcd91) -L 7 (#105310) -D 4 (#4fcbf3) -L 8 (#23b2a2) -D 5 (#a78353) -R 8 (#378f32) -D 3 (#0083b3) -R 8 (#33e382) -D 6 (#a80701) -L 3 (#2c3ed2) -D 9 (#4b8ea3) -L 6 (#7d4c12) -U 9 (#05b6a1) -L 7 (#53a692) -D 7 (#2c9d93) -L 7 (#9fd9b2) -D 4 (#2c9d91) -L 3 (#376372) -D 8 (#05b6a3) -L 6 (#15c4e2) -D 7 (#2eb9b3) -L 8 (#75eb42) -D 4 (#653fc3) -L 12 (#75eb40) -U 2 (#7f4873) -L 4 (#0286d2) -U 12 (#9fd9f3) +bvh{a>2239:lr,m>657:mqd,x>928:lz,ndn} +lvc{m<3522:R,m>3836:R,A} +tg{x<1026:R,R} +cdj{m<3527:R,x<3765:A,R} +fgz{a>3380:A,a>2932:A,A} +nhq{m>3784:R,R} +sg{x<3555:A,x<3581:R,R} +tjk{x>2771:ktf,hm} +rfh{x>603:R,R} +bdz{x>3391:A,R} +zx{m>1145:A,a>1075:A,m>529:vrz,tfb} +kf{a<3575:R,s>3595:R,A} +czz{x<172:A,a>3342:R,x<192:R,R} +sxc{a>1352:R,R} +kvt{a>989:zx,xz} +vgb{x>3255:bzd,a<3822:gsl,sh} +vt{m>1457:A,R} +nhj{a<3658:cz,qmh} +hjr{a>3504:R,x>2702:rts,s>1565:A,A} +zn{m<1304:qh,x>3016:hdl,vkz} +lkq{a<1430:jtt,jch} +glj{x<3090:cqv,x<3301:A,R} +vvz{m<2273:A,A} +dp{x<3685:R,R} +cx{s>3102:ld,a<282:R,m<872:lrh,jl} +jc{m<2153:R,R} +bn{a<873:R,R} +ss{a<2112:mqb,s<3068:qr,a<2316:A,bg} +xpn{x>1071:A,x>943:kdg,nt} +csn{m>3093:A,m>2870:jgp,x>3644:vbn,gdt} +qsq{a>1809:R,a>942:A,m<2294:rmp,A} +ckq{a>3052:xpl,R} +pz{s<2834:R,m<2267:A,A} +qhb{a>2295:zqv,x<535:rcn,x>839:cxq,xdg} +sl{s<1641:dl,m>3164:dd,jk} +lbn{s<2765:R,m<3450:xd,x<3419:fgt,R} +bdf{m>2402:A,jxs} +ktf{s>572:R,R} +mb{a<848:fn,x<3270:lrd,trh} +nn{s>2206:R,m>2243:R,R} +rm{m<3459:A,s<374:A,s>533:R,R} +sb{s<1930:R,x>2795:R,A} +zsl{m<2345:knh,m>2450:ccn,a<3043:hjx,pzh} +xlt{s<1004:A,A} +jgp{s>612:A,x<3685:A,x<3874:R,A} +lv{x<2654:A,s<373:R,s>637:A,R} +cvx{s>1902:dlc,fgz} +nlk{x<2756:rt,s>1940:R,A} +cgv{x>3786:A,R} +tkr{s>1630:R,R} +pgv{m>683:R,R} +jn{s<3024:R,m<2997:A,R} +ksm{a>3696:R,m<2016:dt,x>3653:A,kf} +gn{m<3698:A,s<689:A,R} +hfq{m>1460:zlk,s>3307:R,s>3163:R,gbh} +cp{x>1638:A,s<1846:A,A} +dq{s<3802:A,R} +pcf{s>626:A,A} +kj{m>1679:R,m>1575:R,s>3295:R,R} +hp{s>3555:zbj,s<3443:pm,m>1583:R,A} +ssf{x<2388:R,m>3241:R,A} +tgc{m>1996:R,R} +lfn{a<1593:A,x<168:R,m<3338:A,R} +mcd{a>283:A,s<1152:R,x>2925:A,R} +zxd{x>2963:A,zs} +ltz{s<3041:nqt,s>3194:R,a<3106:hv,jnk} +vkc{s<809:R,a>1247:A,a>937:R,R} +bqv{m<3558:R,a<3147:R,A} +zz{s<698:tcq,A} +gpf{m>1599:A,a<2224:A,x<3263:A,R} +ch{m>3442:A,x<2694:A,psg} +dvp{a>1685:zq,x<2914:tt,x<3416:flt,fb} +hdr{x>3352:R,s>3033:A,R} +cbs{s>2408:R,a>2448:sr,m<1263:xgz,gdq} +mfj{a<2045:R,s<3005:A,R} +gkr{m>989:R,A} +rsh{m<288:A,ktl} +xhd{m>3255:R,s>1342:A,A} +fnp{m<2834:R,m<2874:R,A} +llm{s<1554:xlt,A} +tf{m>3697:R,R} +ckg{a<3301:A,A} +zg{x>1292:qkr,m>1958:nh,x<1181:R,sdn} +npg{a<3756:A,m<1284:A,x>3508:R,R} +shq{x<3533:A,s<3302:R,s>3766:ks,qkg} +pk{a>3350:A,m<1581:fcn,A} +zv{a<1571:gft,x>3565:vcl,x>3460:vd,gd} +ns{m>1805:R,R} +dkq{s>2813:A,m>3105:A,A} +qfn{a>3519:R,R} +rrx{a<3693:A,s>764:R,a<3764:A,A} +mpp{a>380:R,s>3556:A,a>202:A,A} +vrr{m<3344:A,R} +kmt{m>1991:R,A} +mvd{x<2854:A,a>2546:A,s>3317:A,A} +kdg{a>393:R,x<1023:A,R} +pvk{m>628:A,s<856:A,R} +gl{s<3816:A,R} +msq{x>2513:R,qkp} +drd{a<2448:A,a>2626:A,A} +tfb{s>1437:R,x<2689:R,R} +ghm{a>609:A,s<913:A,R} +jzx{a<3475:rl,x<2781:R,m<886:vql,A} +vd{a>2455:vp,x<3521:sth,x>3541:jvd,shq} +xnc{s>2873:R,m<3301:R,R} +mnd{m<1188:lp,A} +cqh{x<3626:A,a>413:vft,qrv} +pf{s<1807:A,s<1965:A,a<355:R,R} +cfc{s>1715:A,x>3628:A,R} +qh{m<836:rrb,m>1045:A,xdv} +tn{x<2760:nn,x<2817:cvf,hmj} +fgt{x>3402:R,R} +xl{a<1144:R,a<1630:R,A} +nlx{a>3248:tdb,x<2881:A,x<3079:lrx,gkr} +hzs{x<2548:fnp,mhd} +fcn{s>2770:R,R} +qm{s>2880:A,x>3027:R,A} +xdg{a>1200:jhv,x>701:dkn,m>2943:rfh,qqf} +xt{x>2825:R,A} +flt{x<3118:vb,mb} +fht{m<621:vzd,gsq} +zsh{s>2543:R,a>325:A,x<2680:R,R} +jl{s<2357:A,s<2803:R,A} +dld{m<1899:xvl,m<2165:qjg,s<3363:fs,zsl} +zs{a>3396:A,m>3659:A,R} +vc{a>664:A,m>870:R,A} +qnc{x<2599:A,A} +dc{x<2762:A,R} +jvb{x>2479:R,A} +nbr{s>1019:A,x>2914:R,A} +gdt{m<2748:R,s>670:R,A} +zp{a<1263:R,jjd} +jhx{m>414:A,x<2984:A,a<1153:A,R} +nnv{s>2001:R,A} +tsz{s>2339:xb,ssn} +vkz{s>1034:bzf,s>364:vkc,a>1136:A,A} +lfz{a>1346:np,m>2295:R,s<1982:A,pz} +nhb{m<1097:R,A} +xgh{x<2794:A,jd} +rgb{s<1936:R,a>2458:A,A} +psg{a<323:R,x>2938:A,A} +mhd{x<2688:A,R} +tcq{m<1167:A,a<1907:A,x<3595:A,R} +fsk{x<2695:A,R} +pmf{x<3777:ht,a>454:A,bhc} +shh{m<3342:nb,zxc} +xgz{m>1109:R,A} +fnq{a<1688:dj,mxs} +jq{x>1016:kk,m<1055:kbz,x>633:tb,zhh} +ht{x<3549:R,A} +jvm{s<2477:A,s>3182:qp,dg} +bh{s<3164:R,A} +mdf{a>439:vmt,m>2154:A,gmg} +kzl{m<296:R,m>464:R,A} +xk{s>3761:A,a>861:A,R} +qjg{a<2969:mrl,a<3461:bgr,x>3035:ksm,kcr} +bkz{m>3278:xpz,m>2939:ngg,m<2760:qnc,hzs} +hfl{a>873:R,s<2216:nnv,s>2340:txj,lsl} +db{a>759:ffr,a<349:cp,m>3429:ct,A} +xpz{x>2686:A,m<3731:A,gzf} +xmb{a<3362:fbb,a<3622:dgx,mv} +zq{x>3004:shh,a<2969:sl,s>847:ncn,xmb} +nz{a>244:zsh,m<338:R,m<526:R,bb} +cph{a<1100:A,A} +bnp{m>3344:R,R} +jml{x>3702:R,s<1822:A,x>3684:R,R} +mfd{m>920:xkr,lj} +pth{s<3135:A,A} +fng{a>2047:prt,db} +vb{s<1084:th,x>3036:rd,s<1810:bx,hfl} +dsn{a<1829:bff,m<3342:R,m>3620:A,rmv} +xgf{x>3811:R,m<3300:jkg,R} +bg{m>1235:A,s<3234:R,R} +bs{s<3712:R,R} +qr{m>1218:A,m>1067:R,s>2909:A,A} +gzf{a>1115:R,m<3891:A,m<3954:A,A} +rgr{a<2087:R,s>3052:R,R} +hx{s<3015:R,R} +jqt{a>2803:A,s<3582:cs,R} +mk{x>3595:sd,x<3419:qrq,x<3482:xtr,lnn} +sd{x>3749:nv,a>1076:R,x>3647:jml,cfc} +sdv{m>1565:jnr,m>895:cbs,m>394:skm,fmt} +jf{m<3278:A,m<3424:R,A} +ccn{m>2523:A,x<3148:R,a<3000:R,tv} +gh{x>2628:A,m>1349:bsr,m<797:A,jvb} +kft{a>3416:A,m<1970:R,m<2081:R,A} +jxs{x<2430:A,a>1099:A,s>2137:A,R} +bcz{m>956:fzz,a>3313:R,pfj} +sh{x<2776:xr,s<852:cxt,s<1257:lbg,hs} +vzd{m>491:A,A} +bc{m>2483:R,s<2926:R,a>1764:R,R} +js{s<1655:A,m<2440:zjz,bc} +hd{a<3067:R,x>3389:kj,m>1683:pt,lbz} +jb{a>2914:A,a>2692:R,x<353:A,R} +pmc{a<3103:jdq,a>3609:vgb,x<3373:fj,kgl} +bgh{x>1677:kb,R} +cc{a>1023:dvj,s>3290:bm,qm} +tdx{x>2659:A,x<2546:R,A} +fr{m>3238:xl,a<1325:bn,x>2169:R,fgl} +jnk{s>3100:A,s>3078:R,a<3586:A,R} +qqt{m>2206:R,R} +vql{x<3126:R,R} +pjl{m<2710:R,A} +ktl{a>3299:A,A} +ssn{m<1673:R,a>1014:A,x<2800:A,xt} +lzk{s>2525:A,a<393:A,A} +zhh{s<1976:hf,pk} +ct{a>616:R,R} +gft{a<822:tm,x<3665:cfr,s<3061:cgv,xgf} +jnr{a<2376:gls,A} +fs{x>3419:zb,x<2893:dfx,glj} +hf{s<805:R,x<319:A,A} +xpg{a>3639:A,x<3156:A,s>3916:A,R} +bb{x<2802:R,s>2772:A,A} +pfj{x<2706:R,m<599:R,m<737:R,R} +vp{m>3406:tf,R} +pgg{x<3332:vn,zv} +ghc{x>2607:gn,m>3602:nhq,R} +gbh{a>380:A,x<2772:R,s<3097:A,R} +tt{s>1475:bkz,hz} +mp{a<802:ch,fsk} +vft{x<3770:A,s>1016:A,m>731:A,R} +jqs{s<2276:kn,s>3356:nxx,a>942:nhb,A} +dlx{x<2602:A,x>2784:R,s<1869:A,R} +dg{x>2712:R,a<1405:A,m<895:A,A} +lmz{x>2788:A,A} +nb{x>3660:A,m<2890:A,A} +lk{m<1416:A,A} +sbp{x>3365:A,a>2600:hdr,R} +gg{s<2388:zn,a>1194:lkq,m>939:qqd,cc} +sx{m>3504:hmz,a>2254:jxj,fr} +zqp{s<470:R,A} +skm{s>2494:R,x>3186:R,s<2079:A,A} +qc{m>2795:A,s<1753:R,A} +bgr{x>3148:kmt,s<3455:A,a<3281:A,gkl} +cg{s>3909:A,A} +jg{s<1706:cb,A} +lkg{x>3557:R,s>3305:A,R} +vnx{a<2212:R,s>3497:R,m>3416:A,R} +dd{s>2093:A,rgb} +rsm{a<3187:R,x>3774:R,A} +tdb{s<1543:R,R} +bm{m>468:R,m>264:qkf,R} +mvc{m<1938:R,x<2565:A,x>2596:A,A} +bzf{m<1960:R,a>1324:A,a>992:A,R} +gc{m<1620:R,A} +ndn{m>514:R,A} +rx{m>2233:gt,mc} +czk{s>3051:R,x>3549:R,A} +mqb{x>2689:A,x>2491:A,A} +hz{x>2704:sc,x<2525:pj,m>3351:ghc,pcf} +qp{m>699:R,a>1489:A,A} +qhq{m<1003:R,s<291:R,m<1197:R,A} +fbb{x<2694:hb,m<3356:dqr,x>2823:hbl,pq} +fmt{x>3448:A,jrm} +xkr{m>1381:xkt,jqs} +mv{m<3359:lv,m<3587:gp,R} +pzh{s<3687:R,s>3867:xpg,s>3763:gl,R} +bsr{a<526:A,A} +mnh{s<712:gqf,bt} +brh{x>1231:A,x<1214:R,m<3153:A,R} +bx{a<588:ldl,xhd} +mxs{s<1828:pmc,s<2828:ktp,m>1446:dld,vpq} +ks{a<1931:R,A} +vmt{a>568:A,m<1947:R,R} +hcj{s>3395:xk,x<3084:A,A} +nh{a<3320:R,A} +rt{x<2548:A,s>2169:R,a>3333:A,R} +sf{m<2732:A,x>1877:R,x<1818:A,R} +ng{x<3516:R,A} +rrb{x<3017:R,m<401:A,R} +vn{a<2321:mp,slz} +jdq{s>1155:gpf,x<3233:nzm,a>2272:mnh,zz} +hmj{s<1338:A,A} +pgt{a>1875:R,R} +cqv{s>3177:A,x>2993:R,x<2951:R,A} +fb{s>1503:hj,psb} +lr{s<2448:R,R} +hjx{s<3654:fkc,s<3783:mr,R} +zxc{s<1084:zqp,R} +nqt{s>2899:R,s<2861:R,a<3115:R,R} +knh{s<3734:A,x>3343:cg,R} +jxj{x<2157:jf,s<1775:A,A} +cl{m>2525:kc,m>2331:tsc,dfv} +kk{s>1682:zf,x>1833:bmn,m<1482:lhf,zg} +vg{x<856:bzr,m<1358:R,nj} +dfx{x<2661:R,x<2780:A,a<2964:A,A} +bj{x<3630:A,x>3825:A,A} +fj{s<1107:xgh,a<3377:nlx,s>1352:hjr,jzx} +zbl{a>3724:R,A} +tk{x<2233:A,A} +xv{m>3202:ghm,x>3613:R,pv} +xbz{s>3076:dc,x<2699:mjz,zt} +gsq{a>603:R,R} +pn{m<576:R,tx} +gkl{s>3784:A,s>3651:A,A} +th{x<2984:A,m<3145:R,a>978:sjl,R} +jch{s<3408:R,m>1482:bs,R} +fzz{m>1216:A,x<3019:R,R} +xz{s>2365:A,R} +rmp{a>614:A,m>2256:A,a<284:R,R} +rmv{s>2125:A,R} +fn{a<402:R,m>3238:A,A} +rl{m<1419:A,a>3438:A,s<1225:A,A} +cfr{a>1108:ng,R} +kcr{m<2028:cch,R} +rcn{s<2490:gcc,a<828:hg,m>2936:rz,bl} +zzv{m<1061:zp,x>2505:fgp,m>2066:bdf,jmt} +dj{x>3131:cxz,a<769:tjx,x<2858:pbb,gg} +fc{m<2765:R,m<2875:R,A} +fsm{a>1876:A,R} +qmh{a>3858:R,m<1407:A,x<3393:qxk,A} +dl{m>3175:lqm,m<2786:dm,x>2607:R,R} +gqf{s<423:R,m<1032:R,a>2568:R,A} +sn{x<2667:A,s>1983:A,a>268:R,R} +qxk{a>3790:A,A} +kn{a<1132:R,m>1117:A,s>1328:A,R} +lrh{s<2139:A,A} +xpl{x>870:A,a>3495:R,x>741:A,A} +gsl{m>1446:rrx,x>2695:nbr,x<2486:R,A} +lbg{m<1051:R,s<1101:A,A} +hbl{a>3105:A,m>3713:R,A} +qlh{s<988:A,x<3705:A,x<3821:gvt,gc} +xvl{x>2956:hd,m>1654:bhd,s>3297:hp,ltz} +pp{m>1828:A,a>1113:R,R} +xmx{a<763:R,m>3395:A,a<1219:A,A} +pps{x<3587:R,qhq} +gvt{m<1547:R,A} +jxt{s<3914:pgt,x<3800:R,x<3911:R,A} +jk{a>2287:tdx,R} +ld{x<3494:R,a>238:A,R} +dhp{m>2698:tpn,kjc} +px{m>1649:tn,jvm} +cv{m<1622:R,m>1794:R,a>1456:R,R} +prt{a<2869:drd,R} +dgx{x<2756:A,x>2851:qfn,x>2811:rm,lmz} +tsc{x>1964:js,s<1509:kg,bgh} +qz{x<1916:fng,sx} +fbn{x>435:A,a>1351:A,s>3219:R,R} +rd{x<3083:xmx,a>869:R,R} +dqr{x<2806:A,x>2934:R,x>2882:R,R} +tv{x>3637:R,m<2478:R,A} +jtt{s>3378:cn,R} +gdq{a>2010:R,a<1818:R,s>2201:A,R} +kgl{s>704:cdx,m<1565:pps,a<3408:grr,zsz} +ts{a>3653:A,x>2607:A,x>2449:A,ssf} +lsl{s<2298:R,R} +bmn{m<1347:rmg,R} +ncn{s<1506:ts,nlk} +dt{m>1954:R,R} +nq{m>1522:A,R} +zt{x>3010:A,a>2223:A,s<2932:R,R} +tpn{a<1472:R,m>2812:R,A} +ktd{m>861:svk,ckl} +ngg{a<567:sn,dlx} +ntf{m<2043:R,a>2432:R,m>2092:R,R} +gt{x<1439:qhb,m>2958:qz,cl} +mrl{s>3241:ntf,tgc} +sth{m>3169:rgr,a<2019:A,R} +lnn{s>2239:vt,sg} +rj{x>2631:mcd,cr} +tm{s<3119:R,m>3116:cdj,m<2921:R,mpp} +lhf{a<3420:pvk,zbl} +hdl{m>2092:R,a<1338:pp,cv} +mz{x>2186:A,m<3822:R,R} +xdv{m<945:A,A} +vgk{x<2421:A,x<2484:A,m>3387:A,A} +zqv{x>484:vrr,snc} +jvd{s>3100:fsm,a>2092:dkq,xnc} +vpq{s>3342:ssj,x>3371:ktd,xg} +xs{a<530:R,x>616:A,R} +sc{s<752:qnf,s<1016:R,A} +hs{a<3909:R,m>1706:A,a<3965:A,A} +pt{x>3152:A,A} +lrd{x>3187:gvd,m>3324:A,x>3159:A,A} +lrx{x>2995:R,A} +lp{a<362:A,A} +zjq{m<1095:R,s>3039:R,vxf} +xr{m<1531:R,A} +xd{m>3024:A,x>3428:A,A} +gcc{a<1159:R,x<344:tkr,a<1700:A,fnm} +bhd{m>1783:R,x>2709:mvd,a<2910:A,R} +vrz{m<775:R,A} +xb{s<3443:R,s<3683:A,R} +kb{s>2920:R,s>2178:A,A} +kff{a<270:lkg,a<455:qqt,R} +ldl{x>2958:A,A} +pvm{s<3011:R,a>2514:A,x<3584:R,A} +cxt{s<296:A,a<3939:R,R} +nzm{x<2673:qg,s>592:lk,qdv} +mjz{a<2191:R,m<404:A,x<2559:A,R} +jlt{x<724:A,A} +jkg{m<3005:R,s<3469:R,m>3115:A,R} +cn{a<1289:R,m>1550:A,A} +rz{x<335:lfn,m>3549:fbn,A} +lbp{s<2281:sb,a>387:gh,m>896:cf,nz} +gvp{m<1705:cx,s<2914:pb,kff} +zb{m>2371:hx,a<3166:pth,x<3643:czk,R} +bjc{a<3135:A,x>3602:A,A} +jr{s<3677:A,a<3134:R,A} +rmg{a<3171:R,A} +ds{s>3580:R,a<2024:A,m<3073:R,vnx} +cr{x>2528:R,a<498:A,A} +kc{x>1752:mx,dhp} +qqd{a>998:ns,x>3001:hcj,x<2908:bh,bq} +mqd{m<774:R,a>1934:R,A} +nnk{x>3584:A,A} +nxx{a>1011:R,s<3732:R,A} +qg{a>2512:R,A} +dlc{x<823:R,R} +dkn{a>466:R,R} +hmz{s<1437:mz,m>3748:A,A} +pq{s>294:R,a<3111:A,R} +svk{m<1197:pvm,m>1307:rsm,s>3088:A,A} +kg{m<2448:A,a>2606:R,R} +grq{x>2855:A,a<479:R,vc} +np{x<1676:A,x>1783:A,s>2424:A,R} +cxz{a>675:mk,s>1575:gvp,td} +slz{m<3069:hmh,s>3119:bqv,x>2727:zxd,msq} +dvj{s<3181:cph,a>1130:jhx,m>619:R,kzl} +hl{x<3826:dp,s<983:ttf,x<3931:jc,A} +xg{a>2686:bcz,m<892:xbz,x>3015:zjq,ss} +td{m<1331:cqh,x<3520:mdf,m>1875:hl,qlh} +jrm{x>2857:A,A} +hm{a<314:R,m<1407:R,A} +fv{x>1294:sxc,x<1251:brh,xxp} +jhv{s>2361:jn,jlt} +snc{x>224:jb,x<97:A,m>3170:R,czz} +jx{x<3462:A,m>1367:A,A} +lqm{s<898:A,m<3554:A,m>3724:R,R} +nv{s>2479:R,s>1416:R,a>1205:A,A} +sr{x<3209:A,a<2927:A,s<2170:R,A} +txj{a>526:R,m>3518:A,A} +xxp{m<3052:A,A} +lz{a<2066:R,m>563:A,R} +qdv{m<1245:R,A} +hb{s<377:R,s<680:R,R} +mx{x>2100:tk,a>2427:qc,x<1966:sf,fc} +vxf{m<1295:A,m<1391:A,R} +bz{s>941:rj,tjk} +jmt{m>1556:A,A} +vcl{s<3447:lvc,a>2420:zgp,s<3755:ds,jxt} +xkt{m>1804:A,A} +nc{x<2556:R,x>2587:A,A} +bff{m>2907:R,R} +lbz{m>1539:A,x>3110:A,x<3053:R,A} +fgl{m>3077:A,x>2072:A,m>3031:R,R} +gvd{m<3092:A,s>888:A,R} +scx{a<2488:A,R} +dfv{x<1964:lfz,x<2157:qsq,vvz} +ckl{x>3751:R,s<3110:nnk,a>3077:A,A} +bhc{a>172:R,A} +cdx{m<1618:A,m>2179:A,kft} +gls{x>3035:R,m>2141:R,m<1850:A,A} +kjc{a>1575:R,x>1633:A,x>1542:R,R} +gd{s>3236:fp,x>3386:lbn,s<2891:jdd,sbp} +hj{a>1015:bnp,pmf} +in{x<2351:rx,m>2575:dvb,fnq} +zf{x>1686:R,R} +lj{m<419:tg,a<1215:fht,a>1779:bvh,pgv} +cf{x<2711:A,R} +cs{s>3433:A,s<3377:A,A} +zbj{a<2916:A,x<2738:A,A} +qqf{m>2571:A,s>1961:A,xs} +qrq{a<1274:A,ddp} +sdn{x>1247:R,a>3428:A,R} +ttf{a>364:A,R} +gp{x>2698:A,R} +qrv{m>723:R,A} +fkc{s<3545:R,R} +ssj{x<3130:jqt,bjc} +bq{s<3307:A,x<2947:A,R} +cvf{a<1453:R,x<2786:A,s>2023:R,R} +qkr{m>1829:R,R} +psb{a>764:csn,a>489:xv,bj} +kbz{m<444:rsh,x<442:jg,m>660:cvx,pn} +vbn{s>875:A,A} +dm{s<921:R,m<2647:R,x<2754:R,A} +khc{s<3674:hfq,s<3832:mnd,grq} +hv{m>1580:R,s>3096:A,m<1509:A,A} +zlk{m<2182:R,A} +fp{x<3415:jr,R} +pj{a>602:vgk,A} +bt{x<3695:A,R} +tp{m>1231:A,a>1380:A,m>686:R,A} +ktp{a<3203:sdv,nhj} +dz{a<3459:R,x<3125:R,A} +zgp{x<3735:R,dq} +hg{s<3383:R,a>512:A,R} +cxq{x>1204:fv,a<1043:xpn,dsn} +zjz{x<2184:R,R} +fgp{m<1737:nc,m>2279:R,mvc} +pm{a>2514:A,m<1528:R,R} +qkf{x>2974:A,x<2903:R,a<916:R,R} +jd{m>1066:R,R} +tjx{s<1467:bz,s<3032:lbp,khc} +pv{x<3495:R,A} +nj{a>3474:A,A} +trh{a<1401:R,x>3354:bdz,s<1484:R,A} +qkp{s<2889:A,m>3449:R,x<2449:R,A} +cch{m>1983:R,a<3715:R,A} +xtr{x>3443:jx,x>3429:nq,a<1025:R,tp} +rts{s>1656:R,s<1455:R,A} +pbb{x<2618:zzv,a>1190:px,x>2753:tsz,kvt} +cb{a>3424:R,s<978:R,s>1461:A,R} +tb{m>1654:ckq,a>3098:vg,llm} +qkg{a<2067:A,m<3066:R,R} +mr{x>3315:R,A} +ffr{a>1577:R,A} +pb{s>2249:lzk,pf} +cz{s<2209:dz,A} +ddp{m<946:R,s>2328:R,A} +bzr{a<3464:R,x<744:A,R} +jdd{s>2693:R,scx} +mc{a<2569:mfd,jq} +gmg{a>245:R,R} +nt{x>897:R,a<564:A,R} +tx{a>3060:R,a<2896:A,x<650:A,A} +grr{m<2028:ckg,A} +dvb{s<2516:dvp,pgg} +fnm{s>961:R,R} +qnf{m>3357:R,R} +bl{a<1446:A,a>1797:mfj,A} +hmh{m>2814:A,a<3083:pjl,R} +zsz{s<272:A,x<3644:R,R} +sjl{a<1275:R,s>629:R,x>3029:A,R} +bzd{x<3693:npg,R} +jjd{x<2486:A,m>459:R,a>1413:R,A} + +{x=33,m=357,a=898,s=123} +{x=1453,m=618,a=175,s=457} +{x=1972,m=3090,a=3668,s=2207} +{x=780,m=1219,a=67,s=462} +{x=259,m=606,a=1493,s=225} +{x=920,m=190,a=381,s=1044} +{x=1082,m=2606,a=67,s=753} +{x=1790,m=1604,a=2545,s=1297} +{x=770,m=1139,a=896,s=812} +{x=250,m=2173,a=1294,s=2757} +{x=107,m=1176,a=2753,s=382} +{x=409,m=2,a=259,s=2158} +{x=1207,m=282,a=1739,s=1328} +{x=283,m=807,a=1577,s=740} +{x=420,m=978,a=1691,s=3093} +{x=616,m=1493,a=2390,s=318} +{x=245,m=111,a=841,s=21} +{x=109,m=584,a=3124,s=296} +{x=3775,m=334,a=862,s=461} +{x=870,m=1050,a=293,s=5} +{x=194,m=24,a=564,s=66} +{x=431,m=210,a=1053,s=664} +{x=40,m=320,a=497,s=614} +{x=50,m=2257,a=976,s=414} +{x=367,m=1571,a=1774,s=2559} +{x=1987,m=1832,a=2265,s=776} +{x=1132,m=553,a=192,s=320} +{x=1153,m=1951,a=2569,s=1089} +{x=174,m=239,a=576,s=704} +{x=1139,m=2918,a=2901,s=1685} +{x=1527,m=6,a=129,s=946} +{x=1279,m=921,a=110,s=1479} +{x=1517,m=1295,a=2094,s=78} +{x=1821,m=1679,a=441,s=95} +{x=169,m=504,a=559,s=2508} +{x=1904,m=2298,a=1261,s=170} +{x=851,m=888,a=2152,s=1059} +{x=2080,m=572,a=914,s=52} +{x=2278,m=2282,a=82,s=204} +{x=1232,m=2262,a=120,s=2218} +{x=60,m=1237,a=1518,s=407} +{x=2382,m=1561,a=1366,s=1330} +{x=111,m=732,a=1467,s=3850} +{x=584,m=1484,a=141,s=356} +{x=673,m=741,a=148,s=904} +{x=1617,m=243,a=1375,s=181} +{x=1818,m=1499,a=896,s=6} +{x=1578,m=1155,a=942,s=30} +{x=1315,m=360,a=548,s=1010} +{x=1019,m=2956,a=1568,s=57} +{x=1615,m=733,a=134,s=685} +{x=356,m=2178,a=3022,s=304} +{x=531,m=829,a=2076,s=218} +{x=752,m=918,a=284,s=228} +{x=137,m=2006,a=1010,s=1500} +{x=456,m=1022,a=2627,s=11} +{x=3210,m=101,a=779,s=52} +{x=1284,m=50,a=858,s=2112} +{x=1645,m=413,a=141,s=978} +{x=307,m=406,a=835,s=1663} +{x=1989,m=467,a=225,s=2764} +{x=45,m=2922,a=1346,s=628} +{x=435,m=968,a=909,s=901} +{x=1176,m=264,a=10,s=1248} +{x=1868,m=1276,a=572,s=14} +{x=298,m=801,a=271,s=2182} +{x=83,m=31,a=585,s=809} +{x=659,m=1281,a=645,s=2758} +{x=2628,m=23,a=1733,s=98} +{x=250,m=2089,a=669,s=493} +{x=426,m=3398,a=241,s=1111} +{x=1278,m=3059,a=931,s=2271} +{x=2272,m=1061,a=65,s=3471} +{x=1047,m=2577,a=912,s=951} +{x=30,m=779,a=2106,s=1509} +{x=33,m=787,a=870,s=13} +{x=311,m=88,a=463,s=449} +{x=2253,m=351,a=240,s=306} +{x=305,m=830,a=1168,s=67} +{x=267,m=2168,a=1911,s=161} +{x=44,m=1491,a=309,s=1721} +{x=533,m=33,a=2481,s=944} +{x=199,m=3230,a=1317,s=917} +{x=1216,m=266,a=969,s=15} +{x=1913,m=824,a=66,s=2265} +{x=82,m=309,a=122,s=536} +{x=11,m=164,a=1031,s=509} +{x=2639,m=812,a=16,s=519} +{x=158,m=2246,a=615,s=497} +{x=385,m=1347,a=1169,s=1482} +{x=435,m=1054,a=401,s=604} +{x=290,m=881,a=418,s=1910} +{x=187,m=353,a=752,s=613} +{x=299,m=437,a=1768,s=364} +{x=582,m=1584,a=2231,s=43} +{x=26,m=1826,a=42,s=3069} +{x=378,m=2044,a=1066,s=718} +{x=415,m=177,a=227,s=2249} +{x=2579,m=111,a=2103,s=128} +{x=381,m=1157,a=244,s=14} +{x=398,m=74,a=236,s=79} +{x=46,m=2441,a=1628,s=265} +{x=1383,m=211,a=540,s=343} +{x=154,m=2357,a=415,s=29} +{x=1754,m=3533,a=243,s=1388} +{x=2427,m=142,a=1111,s=634} +{x=173,m=2911,a=874,s=1747} +{x=1165,m=573,a=160,s=85} +{x=770,m=421,a=710,s=1131} +{x=446,m=316,a=41,s=153} +{x=999,m=514,a=233,s=525} +{x=958,m=1257,a=3276,s=34} +{x=1797,m=1404,a=376,s=213} +{x=708,m=912,a=2285,s=337} +{x=1405,m=2061,a=2656,s=2322} +{x=1870,m=1356,a=2084,s=282} +{x=27,m=1130,a=421,s=865} +{x=575,m=153,a=153,s=1204} +{x=792,m=1531,a=681,s=1596} +{x=2028,m=932,a=679,s=1097} +{x=534,m=1484,a=1589,s=2340} +{x=21,m=919,a=498,s=167} +{x=741,m=486,a=328,s=3289} +{x=16,m=820,a=3480,s=277} +{x=3038,m=31,a=1694,s=261} +{x=1598,m=886,a=374,s=1815} +{x=532,m=806,a=87,s=1452} +{x=169,m=632,a=1226,s=1476} +{x=1215,m=183,a=649,s=1033} +{x=21,m=146,a=955,s=55} +{x=598,m=45,a=2787,s=475} +{x=130,m=1341,a=230,s=269} +{x=657,m=2747,a=75,s=104} +{x=554,m=2842,a=121,s=1221} +{x=116,m=361,a=1298,s=778} +{x=1203,m=622,a=741,s=1971} +{x=1243,m=2374,a=1145,s=158} +{x=175,m=2121,a=2383,s=392} +{x=524,m=176,a=307,s=681} +{x=241,m=214,a=1906,s=745} +{x=828,m=32,a=1041,s=220} +{x=103,m=1861,a=102,s=669} +{x=173,m=639,a=1805,s=321} +{x=798,m=1205,a=47,s=225} +{x=46,m=332,a=2653,s=157} +{x=2780,m=236,a=1279,s=94} +{x=1496,m=2402,a=867,s=3020} +{x=1704,m=37,a=408,s=30} +{x=1598,m=607,a=11,s=418} +{x=141,m=1980,a=113,s=579} +{x=457,m=134,a=1748,s=81} +{x=1501,m=1593,a=2275,s=344} +{x=1453,m=347,a=82,s=1996} +{x=1124,m=1346,a=5,s=3303} +{x=734,m=1555,a=593,s=404} +{x=1615,m=2,a=58,s=424} +{x=353,m=1325,a=4,s=129} +{x=572,m=668,a=5,s=275} +{x=277,m=1778,a=635,s=611} +{x=2258,m=92,a=1550,s=70} +{x=106,m=1066,a=139,s=2387} +{x=462,m=407,a=1397,s=206} +{x=833,m=20,a=2708,s=440} +{x=490,m=2711,a=145,s=97} +{x=2125,m=2187,a=1647,s=2103} +{x=361,m=2744,a=46,s=355} +{x=189,m=1302,a=689,s=920} +{x=1811,m=1399,a=1828,s=47} +{x=1905,m=1406,a=71,s=1775} +{x=754,m=561,a=3656,s=180} +{x=517,m=1143,a=772,s=164} +{x=283,m=2697,a=493,s=1224} +{x=1149,m=987,a=736,s=149} +{x=1641,m=308,a=2931,s=49} +{x=1398,m=1135,a=1772,s=3182} +{x=283,m=444,a=1397,s=870} +{x=93,m=857,a=31,s=213} +{x=210,m=1988,a=470,s=10} +{x=697,m=2815,a=1678,s=3250} +{x=581,m=23,a=121,s=221} +{x=48,m=632,a=784,s=1} +{x=19,m=512,a=2035,s=408} +{x=793,m=524,a=2589,s=337} +{x=667,m=590,a=280,s=616} +{x=944,m=562,a=557,s=740} +{x=1946,m=1222,a=3295,s=592} +{x=1389,m=1113,a=234,s=211} +{x=109,m=1582,a=100,s=633} +{x=221,m=2427,a=55,s=450} +{x=220,m=205,a=2606,s=1328} +{x=1654,m=1259,a=2285,s=399} +{x=439,m=1227,a=204,s=622} +{x=1537,m=1443,a=281,s=912} +{x=1014,m=1216,a=2955,s=123} +{x=43,m=868,a=1713,s=280} +{x=2107,m=3147,a=1519,s=1143} +{x=2285,m=201,a=1185,s=832} +{x=139,m=604,a=3479,s=246} +{x=2111,m=613,a=29,s=1234} +{x=115,m=417,a=746,s=1991} diff --git a/src/main.rs b/src/main.rs index 3b441c2..1fa5884 100644 --- a/src/main.rs +++ b/src/main.rs @@ -18,70 +18,198 @@ extern crate test; pub mod util; pub use util::prelude::*; -pub fn p1(i: &str) -> u16 { - let mut y = 0i32; - let mut a = 0i32; - let mut b = 0u16; - let mut i = i.as_bytes(); - loop { - let d = unsafe { - rint::<_, Dir>(match i.by() { - Ok(x) => x, - Err(_) => break, - }) - }; - let c = match unsafe { i.rd::<3>().unwrap_unchecked() } { - [_, b, b' '] => { - i = C! { &i[10..] }; - b - b'0' - } - [_, a, b] => { - _ = i.read(&mut [0; 11]); - // i = C! { &i[11..] }; - (a - b'0') * 10 + (b - b'0') - } - }; - b += c as u16; - match d { - Dir::N => y += c as i32, - Dir::E => a += c as i32 * y, - Dir::S => y -= c as i32, - Dir::W => a -= c as i32 * y, +#[derive(Debug, Copy, Clone, PartialEq, Eq)] +enum When { + // m>N + Gt(What, u32), + Lt(What, u32), + Always, +} + +impl When { + fn accepts(self) -> Option<What> { + match self { + Self::Gt(y, _) | Self::Lt(y, _) => Some(y), + Self::Always => None, + } + } + + fn considers(self, w: What) -> bool { + matches!(self, Self::Gt(y, _) | Self::Lt(y, _) if w == y) | (self == Self::Always) + } + + fn test(self, w: u32) -> bool { + match self { + Self::Gt(_, x) => w > x, + Self::Lt(_, x) => w < x, + Self::Always => true, } } +} - // use shoelace formula to get the area, then use picks formula to count the number of inner points - a.abs() as u16 + (1 + b / 2) +#[repr(u8)] +#[derive(Debug, Copy, Clone)] +enum Then<'a> { + Go(&'a [u8]), + Accept = b'A', + Reject = b'R', } -pub fn p2(i: &str) -> u64 { - let mut y = 0; - let mut a = 0; - let mut b = 0; - let mut i = i.as_bytes(); - loop { - let Ok(_) = i.by() else { break }; - i.skip(2); - if unsafe { i.by().unwrap_unchecked() == b' ' } { - i.skip(2); +impl<'a> Then<'a> { + pub fn from(x: u8) -> Self { + mat!(x { + b'A' => Self::Accept, + b'R' => Self::Reject, + }) + } + + pub fn from2(x: &'a [u8]) -> Self { + if let &[x] = x { + Self::from(x) } else { - i.skip(3); + Self::Go(x) } - let dat = unsafe { i.rd::<6>().unwrap_unchecked() }; - _ = i.read(&mut [0; 2]); - let c = 読む::hex5(dat[0..5].try_into().unwrap()); - const A: [i64; 4] = [1, 0, -1, 0]; - const Y: [i64; 4] = [0, -1, 0, 1]; - let d = dat[5] - b'0'; - a += C! { A[d.nat()] } * c as i64 * y; - y += C! { Y[d.nat()] } * c as i64; - b += c as u64; } - a.abs() as u64 + (1 + b / 2) } -pub fn run(i: &str) -> impl Display { - p2(i) +#[repr(u8)] +#[derive(Debug, Copy, Clone, PartialEq, Eq)] +#[allow(non_camel_case_types)] +enum What { + x = b'x', + m = b'm', + a = b'a', + s = b's', +} + +impl What { + pub fn select(self, [x, m, a, s]: [u32; 4]) -> u32 { + match self { + What::x => x, + What::m => m, + What::a => a, + What::s => s, + } + } + + pub fn from(x: u8) -> Self { + unsafe { rint(x) } + } +} + +#[derive(Debug, Copy, Clone)] +struct Rule<'a> { + condition: When, + then: Then<'a>, +} + +impl<'a> Rule<'a> { + fn takes(self) -> Option<What> { + self.condition.accepts() + } + + fn consider(self, x: u32) -> Option<Then<'a>> { + self.condition.test(x).then_some(self.then) + } +} + +struct Workflow<'a> { + name: &'a [u8], + rules: Box<[Rule<'a>]>, +} + +impl<'a> Workflow<'a> { + fn test(&self, x: [u32; 4]) -> Option<Then> { + for rule in &*self.rules { + if let Some(x) = rule.takes().map(|y| y.select(x)) { + if let Some(x) = rule.consider(x) { + return Some(x); + } + } else { + return Some(rule.then); + } + } + dang!() + } + + fn new(name: &'a [u8], from: impl Iterator<Item = &'a [u8]>) -> Self { + let mut rules = vec![]; + for rule in from { + if let &[b] = rule { + rules.push(Rule { + condition: When::Always, + then: Then::from(b), + }) + } else { + let Some((cond, then)) = rule.split_once(|&x| x == b':') else { + rules.push(Rule { + condition: When::Always, + then: Then::from2(rule), + }); + continue; + }; + + if let Some((&[x], y)) = cond.split_once(|&x| x == b'<') { + rules.push(Rule { + condition: When::Lt(What::from(x), y.λ::<u32>()), + then: Then::from2(then), + }) + } else if let Some((&[x], y)) = cond.split_once(|&x| x == b'>') { + rules.push(Rule { + condition: When::Gt(What::from(x), y.λ::<u32>()), + then: Then::from2(then), + }) + } else { + shucks!() + } + } + } + Self { + rules: rules.into_boxed_slice(), + name, + } + } +} + +pub fn run(i: &str) -> u32 { + let mut workflows = vec![]; + let mut first = None; + let mut i = i.行(); + for x in i.by_ref() { + if x == b"" { + break; + } + let (work, rules) = x.μ('{').mr(|x| x.μ0('}').split(|&x| x == b',')); + let flow = Workflow::new(work, rules); + if work == b"in" { + first = Some(flow) + } else { + workflows.push(flow); + } + } + let first = first.unwrap(); + let mut acc = 0; + for x in i { + let mut w = &first; + let a = x + .between('{', '}') + .split(|&x| x == b',') + .map(|x| x.μ1('=').λ()) + .Ν(); + loop { + if let Some(x) = w.test(a) { + match x { + Then::Accept => { + acc += a.iter().copied().sum::<u32>(); + break; + } + Then::Go(y) => w = workflows.iter().find(|x| x.name == y).α(), + Then::Reject => break, + } + } + } + } + acc } fn main() { diff --git a/src/util.rs b/src/util.rs index b5e0bbc..8f2de97 100644 --- a/src/util.rs +++ b/src/util.rs @@ -474,12 +474,18 @@ pub trait Μ where fn μκ<T: FromStr>(self, d: char) -> impl Iterator<Item = (T, T)> where <T as FromStr>::Err: std::fmt::Display; - fn μ1<T: FromStr>(self, d: char) -> impl Iterator<Item = T> - where - <T as FromStr>::Err: std::fmt::Display; - fn μ0<T: FromStr>(self, d: char) -> impl Iterator<Item = T> - where - <T as FromStr>::Err: std::fmt::Display; + + fn μ1(self, d: char) -> Self { + self.μ(d).1 + } + + fn μ0(self, d: char) -> Self { + self.μ(d).0 + } + + fn between(self, a: char, b: char) -> Self { + self.μ1(a).μ0(b) + } } impl Μ for &[u8] { @@ -498,20 +504,6 @@ impl Μ for &[u8] { let (α, β) = self.μ(d); α.κ::<T>().zip(β.κ::<T>()) } - - fn μ1<T: FromStr>(self, d: char) -> impl Iterator<Item = T> - where - <T as FromStr>::Err: std::fmt::Display, - { - self.μ(d).1.κ() - } - - fn μ0<T: FromStr>(self, d: char) -> impl Iterator<Item = T> - where - <T as FromStr>::Err: std::fmt::Display, - { - self.μ(d).0.κ() - } } impl Μ for &str { @@ -527,20 +519,6 @@ impl Μ for &str { let (α, β) = self.μ(d); α.κ::<T>().zip(β.κ::<T>()) } - - fn μ1<T: FromStr>(self, d: char) -> impl Iterator<Item = T> - where - <T as FromStr>::Err: std::fmt::Display, - { - self.μ(d).1.κ() - } - - fn μ0<T: FromStr>(self, d: char) -> impl Iterator<Item = T> - where - <T as FromStr>::Err: std::fmt::Display, - { - self.μ(d).0.κ() - } } pub trait IterͶ: Iterator { |