Up to Day 21 (excluding day 16)

This commit is contained in:
Christian
2023-12-21 17:37:32 +01:00
parent 6ceb565e34
commit 9594c29467
34 changed files with 8103 additions and 1 deletions

238
Cargo.lock generated
View File

@@ -2,6 +2,18 @@
# It is not intended for manual editing. # It is not intended for manual editing.
version = 3 version = 3
[[package]]
name = "ahash"
version = "0.8.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a"
dependencies = [
"cfg-if",
"once_cell",
"version_check",
"zerocopy",
]
[[package]] [[package]]
name = "aho-corasick" name = "aho-corasick"
version = "1.1.2" version = "1.1.2"
@@ -11,6 +23,12 @@ dependencies = [
"memchr", "memchr",
] ]
[[package]]
name = "allocator-api2"
version = "0.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5"
[[package]] [[package]]
name = "anyhow" name = "anyhow"
version = "1.0.75" version = "1.0.75"
@@ -22,15 +40,192 @@ name = "aoc-2023"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"gcd",
"hashbrown",
"itertools",
"ndarray",
"num",
"regex", "regex",
] ]
[[package]]
name = "autocfg"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
[[package]]
name = "cfg-if"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "either"
version = "1.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
[[package]]
name = "gcd"
version = "2.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a"
[[package]]
name = "hashbrown"
version = "0.14.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604"
dependencies = [
"ahash",
"allocator-api2",
]
[[package]]
name = "itertools"
version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "25db6b064527c5d482d0423354fcd07a89a2dfe07b67892e62411946db7f07b0"
dependencies = [
"either",
]
[[package]]
name = "matrixmultiply"
version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7574c1cf36da4798ab73da5b215bbf444f50718207754cb522201d78d1cd0ff2"
dependencies = [
"autocfg",
"rawpointer",
]
[[package]] [[package]]
name = "memchr" name = "memchr"
version = "2.6.4" version = "2.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167"
[[package]]
name = "ndarray"
version = "0.15.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "adb12d4e967ec485a5f71c6311fe28158e9d6f4bc4a447b474184d0f91a8fa32"
dependencies = [
"matrixmultiply",
"num-complex",
"num-integer",
"num-traits",
"rawpointer",
]
[[package]]
name = "num"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af"
dependencies = [
"num-bigint",
"num-complex",
"num-integer",
"num-iter",
"num-rational",
"num-traits",
]
[[package]]
name = "num-bigint"
version = "0.4.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0"
dependencies = [
"autocfg",
"num-integer",
"num-traits",
]
[[package]]
name = "num-complex"
version = "0.4.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214"
dependencies = [
"num-traits",
]
[[package]]
name = "num-integer"
version = "0.1.45"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
dependencies = [
"autocfg",
"num-traits",
]
[[package]]
name = "num-iter"
version = "0.1.43"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252"
dependencies = [
"autocfg",
"num-integer",
"num-traits",
]
[[package]]
name = "num-rational"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0"
dependencies = [
"autocfg",
"num-bigint",
"num-integer",
"num-traits",
]
[[package]]
name = "num-traits"
version = "0.2.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c"
dependencies = [
"autocfg",
]
[[package]]
name = "once_cell"
version = "1.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
[[package]]
name = "proc-macro2"
version = "1.0.70"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b"
dependencies = [
"unicode-ident",
]
[[package]]
name = "quote"
version = "1.0.33"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
dependencies = [
"proc-macro2",
]
[[package]]
name = "rawpointer"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3"
[[package]] [[package]]
name = "regex" name = "regex"
version = "1.10.2" version = "1.10.2"
@@ -59,3 +254,46 @@ name = "regex-syntax"
version = "0.8.2" version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
[[package]]
name = "syn"
version = "2.0.41"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "44c8b28c477cc3bf0e7966561e3460130e1255f7a1cf71931075f1c5e7a7e269"
dependencies = [
"proc-macro2",
"quote",
"unicode-ident",
]
[[package]]
name = "unicode-ident"
version = "1.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
[[package]]
name = "version_check"
version = "0.9.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
[[package]]
name = "zerocopy"
version = "0.7.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1c4061bedbb353041c12f413700357bec76df2c7e2ca8e4df8bac24c6bf68e3d"
dependencies = [
"zerocopy-derive",
]
[[package]]
name = "zerocopy-derive"
version = "0.7.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b3c129550b3e6de3fd0ba67ba5c81818f9805e58b8d7fee80a3a59d2c9fc601a"
dependencies = [
"proc-macro2",
"quote",
"syn",
]

View File

@@ -7,4 +7,9 @@ edition = "2021"
[dependencies] [dependencies]
anyhow = "1.0.75" anyhow = "1.0.75"
gcd = "2.3.0"
hashbrown = "0.14.3"
itertools = "0.12.0"
ndarray = "0.15.6"
num = "0.4.1"
regex = "1.10.2" regex = "1.10.2"

2
data/06.in Normal file
View File

@@ -0,0 +1,2 @@
Time: 58 81 96 76
Distance: 434 1041 2219 1218

1000
data/07.in Normal file

File diff suppressed because it is too large Load Diff

748
data/08.in Normal file
View File

@@ -0,0 +1,748 @@
LLLRLRLRLLRRRLRRRLRRRLLLRLRLLRRLLRRLRLRLLRLRLRRLLRRRLRLLRRLRRRLRRLLLRRRLRRRLRRRLLLLRRLRRRLRLRRRLRRLLRLRLRRRLRRRLRRLRRRLLLLLLRLRRRLLLLRLRRRLRRRLRLRRLRLRLRLRLRRRLLRRLRLRRLRRLRRLLRLLLRRLRLLRRLRLRRLRRRLRRLLRLRLRLRRLLRLLRRLLLRLRLRRRLRRLLRRRLRLRLRRLLRLRLRLRRLRLRLRRLRRLLRRLRRRLRRRLLLRRRR
MQF = (DDG, LSH)
QJP = (PCT, XKJ)
JXF = (PMG, NBN)
JCK = (QCD, NRG)
LPD = (NTM, NTM)
DLN = (TXM, QRG)
MTG = (KGC, DMM)
KFV = (FXH, QLX)
SCJ = (HQH, XSD)
JKJ = (PMX, MHH)
SJK = (JXM, GRQ)
CJZ = (DPF, RMT)
QXM = (HGC, SMX)
XJS = (NRV, CCL)
QLB = (RCH, QVQ)
KDB = (QKT, BJB)
FCX = (DXG, SGQ)
PCT = (DXR, PTS)
MGJ = (FKF, HNG)
VBN = (RBK, JPL)
TRH = (SRT, VJV)
PGK = (SNP, QLP)
XVK = (KFK, QQC)
SXC = (XTB, DPQ)
HNG = (VXF, MVH)
QHT = (TTD, LBH)
LMK = (QQT, QTP)
DXR = (KCT, KQS)
FSA = (RXT, BLP)
GHK = (JMM, VBN)
DMM = (VQM, LTG)
FBQ = (FSV, GHJ)
KCN = (QVR, TDG)
KBF = (XNM, HBL)
KJP = (FKG, CJZ)
JLH = (CKG, XLV)
RJX = (KKN, RJH)
PFS = (BVC, SXR)
DHM = (HXV, FRV)
KFK = (PLL, GQC)
CNB = (KNS, HVP)
DDG = (QTS, VRJ)
QVT = (JCK, DJQ)
LRB = (TXD, MPR)
DMS = (QVD, MFS)
PMJ = (LNN, NPJ)
BXD = (MLL, QKQ)
DGF = (FMX, PKP)
RHQ = (RJH, KKN)
MRG = (TNN, LLX)
BBM = (VFP, VGF)
PLP = (BBK, KFX)
RSN = (SBN, DQF)
XTP = (HMT, XNV)
LLX = (KBF, TDV)
KHR = (QGL, NCM)
PFB = (SXR, BVC)
NKP = (JTF, BJH)
RPH = (RSN, VBM)
HBL = (LVT, JXF)
CBC = (LRB, QGN)
FXH = (GCH, KBD)
QTF = (KVL, DLS)
RPQ = (FJB, RMD)
SLD = (MSH, NSN)
PXF = (QXM, HDF)
QBJ = (RDQ, DJH)
QPH = (RKJ, CSC)
TVF = (JMC, MTV)
MJM = (DLM, BQS)
XQV = (LCD, QCL)
KQH = (SJK, BPR)
CSC = (BLD, PDP)
BLP = (XVK, LJB)
BBK = (DJT, LLJ)
PSH = (GQH, RBQ)
RMD = (XQV, KFT)
TJJ = (QLV, HPG)
STS = (BSB, TMP)
FPN = (TCK, GLD)
JPF = (VCS, CMQ)
NVX = (TLD, GMD)
XLV = (LKV, QNK)
GSF = (CKS, BVB)
QHR = (KTV, KPG)
JRX = (FPN, DTC)
KGC = (VQM, LTG)
SSK = (NHP, NHP)
GLN = (RMX, NGG)
NPJ = (QRV, KTB)
PCP = (XSF, BPL)
JTF = (LSL, BHB)
TDV = (HBL, XNM)
FKV = (JVF, HKK)
GSG = (QJP, CLF)
QNK = (XNQ, CGQ)
RQT = (QVQ, RCH)
XNT = (RKM, XRV)
JMM = (RBK, JPL)
LSL = (NGH, KCN)
QLQ = (TLV, KDN)
KXR = (KRH, KRH)
QLV = (GSR, BQV)
PMG = (LPH, XFB)
VNF = (LVQ, HHG)
CSS = (RKK, RQN)
HGR = (PVX, LFX)
QGN = (MPR, TXD)
XNQ = (GTJ, LXQ)
QQC = (GQC, PLL)
CKR = (KQH, HQD)
TLD = (JLJ, VFL)
XSD = (TTQ, LDQ)
FXF = (BXS, LMQ)
ZZZ = (QBJ, MJJ)
HPG = (GSR, BQV)
LJC = (RNF, FNK)
CCL = (DXF, HRM)
FQR = (QBF, CLH)
GHJ = (MPS, NRB)
LLJ = (NVX, BTR)
MCQ = (RTG, CTK)
PLL = (DJD, FTV)
BLD = (XGL, NDH)
MLL = (NHV, PPJ)
KDN = (LLS, DLN)
KKN = (DCC, CCH)
FHB = (TCJ, VLF)
HCC = (RDN, TRJ)
TGV = (TKF, CFG)
TKB = (SVJ, KHH)
QDN = (RXG, PFF)
GQN = (RKT, NKK)
FLV = (TLV, KDN)
KTV = (LKK, VGH)
XHQ = (JLX, SNS)
MHN = (DHV, KMD)
DLD = (SSQ, LDK)
DKD = (CKR, JPC)
SRD = (KPP, LFS)
LVT = (PMG, NBN)
KPP = (FLQ, XTX)
BQV = (GLN, NQG)
BSB = (KHR, FGL)
HGC = (DBX, QTF)
DSF = (RBQ, GQH)
GRQ = (MVQ, RVP)
JGT = (SFN, GQT)
HDF = (SMX, HGC)
QBF = (VKF, XHQ)
QKM = (JTV, LPP)
LJB = (QQC, KFK)
NTH = (QQV, MHS)
QTX = (FMX, PKP)
HCQ = (FFT, CBC)
XKJ = (DXR, PTS)
BHH = (KPP, LFS)
GRH = (QLQ, FLV)
FNX = (MJX, PFZ)
HQN = (CKS, BVB)
SJV = (CGF, VKD)
RDL = (QJV, MLX)
MFR = (DMF, CFD)
LPF = (SRD, BHH)
HCP = (MPV, NVL)
KNS = (VCD, LJL)
CDX = (LLX, TNN)
SGS = (KMC, RQK)
HQS = (NKP, FRN)
QVD = (VML, QHT)
NRG = (LDS, SCH)
BVB = (HCP, NVM)
RBK = (QLB, RQT)
MPV = (CGR, TSC)
VFP = (JXP, QCM)
QFS = (DFQ, FHB)
FTK = (LSH, DDG)
TJH = (KPL, KTR)
HQF = (MQF, FTK)
FGX = (HVP, KNS)
DDK = (NTM, JNC)
BJC = (SQK, RGB)
HVP = (VCD, LJL)
LTG = (RMV, CJC)
BNR = (CSS, RBN)
GQT = (LCN, DTK)
XSF = (BGT, FCN)
SSQ = (KTL, JMR)
RNH = (BXH, BXH)
FTV = (CMM, PBL)
QRK = (TSF, QFS)
CLR = (NFS, PGK)
SRJ = (PFV, SHX)
FQT = (QKT, BJB)
FRN = (BJH, JTF)
RCN = (NRV, CCL)
QTM = (CKR, JPC)
JHT = (HRC, NVR)
KVB = (KRH, KKT)
HJG = (GHN, GHN)
RNF = (QFF, CKV)
PTT = (VNT, FNX)
GRB = (SVJ, KHH)
TRJ = (PVJ, QKP)
MHS = (FCV, JXD)
VBM = (SBN, DQF)
DLM = (VNH, SCJ)
PPJ = (DMH, PHJ)
QJN = (LSX, KBN)
HXV = (SMH, BJP)
GVL = (VMV, DKF)
QCG = (FKV, NVD)
FNM = (XRV, RKM)
JQJ = (NVT, HGR)
KVX = (GRG, PMJ)
JLV = (SMG, RPH)
TXD = (MFN, HQG)
TLJ = (FHD, MHN)
RPV = (GKH, BPT)
CPR = (JLH, PLC)
FLQ = (TPR, LGG)
BTF = (HGR, NVT)
GCH = (QPT, FDV)
JCF = (GHM, NKS)
CLF = (PCT, XKJ)
RMT = (QKM, XCP)
KPL = (DJB, VLV)
RMV = (NMS, HCC)
XRV = (VPH, PHH)
HBB = (XKH, FBQ)
PXB = (QBF, CLH)
HMR = (PCP, LMJ)
KCT = (PFS, PFB)
DCC = (MBP, BJC)
VFV = (VBD, HQS)
DJB = (BQX, SLD)
MFS = (VML, QHT)
RPC = (PHR, JFD)
RDS = (LFC, RNK)
KMC = (RPR, NRL)
CJD = (VJN, GKK)
VST = (VCS, CMQ)
VMC = (RPC, MCV)
VJV = (XTP, DRK)
BXH = (RXT, BLP)
PNQ = (DSF, PSH)
RJJ = (FXH, QLX)
NKS = (QDQ, DPP)
QDQ = (SJV, MRP)
HQQ = (CJD, DVT)
LKV = (CGQ, XNQ)
KTL = (HFF, FPS)
MBP = (RGB, SQK)
MQQ = (HCQ, MDL)
BQS = (SCJ, VNH)
NRT = (FJD, HTS)
HHG = (RTC, RPQ)
VNH = (XSD, HQH)
QTS = (QTG, MHD)
DJQ = (NRG, QCD)
MDX = (BPT, GKH)
QJV = (QQP, VLJ)
HBD = (HBB, CKC)
GBF = (HJG, FPV)
VDC = (JFJ, VNF)
MPH = (PFV, SHX)
TPR = (BXD, FVX)
KFX = (DJT, LLJ)
LSX = (VKN, STS)
HJL = (KFX, BBK)
QLT = (KGC, DMM)
QFF = (BJM, QCG)
DVM = (GCD, FSC)
MHD = (JCF, JPJ)
DPQ = (JJX, GNL)
NMS = (TRJ, RDN)
VLJ = (XJB, HSJ)
JSP = (MHN, FHD)
BTR = (GMD, TLD)
TTD = (SPC, DFJ)
QKT = (XPV, BVJ)
MKK = (HCQ, MDL)
LFC = (LSS, GQN)
QGL = (RPG, HGJ)
JDT = (FPN, DTC)
NCM = (RPG, HGJ)
LCN = (QLT, MTG)
VGS = (VJV, SRT)
CGF = (FXF, STT)
KQS = (PFB, PFS)
PFF = (DLD, MRJ)
LSH = (QTS, VRJ)
FGF = (MPH, SRJ)
BJG = (TVF, BDN)
HQR = (CXG, CPR)
JVF = (RGM, NCG)
SNP = (BLN, DFD)
DQH = (GSC, CFT)
JVA = (RMT, DPF)
VPH = (CRN, CHT)
DFQ = (VLF, TCJ)
DFD = (HQR, QDF)
NJH = (RXG, PFF)
DTK = (QLT, MTG)
MJJ = (DJH, RDQ)
GGB = (CFT, GSC)
SMH = (RHQ, RJX)
NFS = (SNP, QLP)
LNV = (XLR, KQF)
LCD = (FNM, XNT)
GQH = (JDT, JRX)
JPJ = (GHM, NKS)
GMD = (VFL, JLJ)
HTS = (KXR, KVB)
KFT = (LCD, QCL)
SGH = (NVR, HRC)
QKP = (MQD, MLM)
HFF = (MGM, KSX)
HJM = (KBN, LSX)
MJX = (VHC, PXF)
TSF = (FHB, DFQ)
MSH = (GFM, JHC)
VBG = (HJM, QJN)
CKS = (HCP, NVM)
DQF = (LJC, KXM)
FVP = (FJD, HTS)
DPP = (SJV, MRP)
FKM = (CSS, RBN)
VCD = (FCH, GBX)
DJV = (VMC, HVC)
RKM = (VPH, PHH)
TMP = (KHR, FGL)
BVC = (TLJ, JSP)
SRV = (HQS, VBD)
FCN = (DHM, VDX)
DJH = (FBG, MCQ)
NGG = (RPL, DFV)
SRT = (XTP, DRK)
RMN = (QTD, JGS)
MLH = (MQJ, VDR)
KVL = (VFV, SRV)
VDX = (FRV, HXV)
RXT = (LJB, XVK)
LSS = (RKT, NKK)
LNN = (KTB, QRV)
BCC = (CHL, QXP)
GHN = (XBS, XBS)
FCK = (FKM, BNR)
QLP = (BLN, DFD)
BDN = (JMC, MTV)
MLX = (VLJ, QQP)
RDH = (VNT, VNT)
DFV = (JKJ, KDX)
DXG = (JLV, MVL)
TCF = (DSF, PSH)
JJX = (MKM, TJJ)
VFL = (GGB, DQH)
VLV = (SLD, BQX)
RBQ = (JDT, JRX)
JXP = (QXB, QVT)
PFV = (STX, XHF)
BLN = (QDF, HQR)
FVX = (QKQ, MLL)
QTP = (DJV, GMN)
JLP = (NJF, MFR)
CXG = (PLC, JLH)
VKF = (JLX, SNS)
QQT = (GMN, DJV)
KDX = (MHH, PMX)
FJD = (KXR, KXR)
XJB = (PHB, JTH)
VMV = (RCN, XJS)
MKM = (HPG, QLV)
SQK = (GBF, JCS)
PMT = (SGQ, DXG)
LXQ = (GRB, TKB)
RKK = (SSK, SSK)
QXA = (VHC, PXF)
QDP = (QTD, JGS)
VQC = (KQF, XLR)
QKQ = (PPJ, NHV)
TXM = (JLP, JCJ)
SPC = (LRR, SXC)
BHG = (KFL, BCC)
QBK = (VNF, JFJ)
BPB = (LBJ, JGT)
RNK = (LSS, GQN)
BJP = (RHQ, RJX)
VNT = (MJX, MJX)
QLX = (GCH, KBD)
DXF = (RNH, RNH)
DLS = (VFV, SRV)
SXR = (TLJ, JSP)
SGQ = (JLV, MVL)
NRL = (XPP, XGM)
JFD = (LVD, LTQ)
XNM = (JXF, LVT)
PHH = (CHT, CRN)
QTD = (CTJ, LPF)
FCV = (GTC, CKJ)
QRG = (JLP, JCJ)
DKS = (KPL, KTR)
TTQ = (BFV, LVR)
RPR = (XGM, XPP)
DVS = (FTH, FFG)
RRH = (NJH, QDN)
KTR = (DJB, VLV)
KQM = (BJV, MND)
GKS = (BXH, QCZ)
FSV = (MPS, NRB)
QXB = (DJQ, JCK)
FHX = (QFS, TSF)
FGL = (QGL, NCM)
BHB = (KCN, NGH)
KNA = (KTV, KPG)
NBN = (LPH, XFB)
NVM = (NVL, MPV)
LVR = (CNB, FGX)
QCL = (FNM, XNT)
XRR = (MTB, HMR)
LLS = (TXM, QRG)
AAA = (MJJ, QBJ)
RPL = (JKJ, KDX)
QCM = (QVT, QXB)
QVF = (BQS, DLM)
LMQ = (LMK, BVF)
BLS = (CQK, GTG)
JMC = (PLP, HJL)
KXM = (RNF, FNK)
NDH = (FHJ, GML)
SNS = (VJK, FMJ)
KFL = (QXP, CHL)
FSD = (XNH, MJF)
DTC = (GLD, TCK)
MRP = (CGF, VKD)
JHX = (CJD, DVT)
KPG = (LKK, VGH)
DJT = (NVX, BTR)
MQD = (FQT, KDB)
CKJ = (BLS, CGP)
JXD = (GTC, CKJ)
NVL = (CGR, TSC)
PKV = (DBR, PGB)
JPL = (QLB, RQT)
TSC = (FMS, KRS)
XGL = (GML, FHJ)
DJD = (PBL, CMM)
FSC = (BFG, NTH)
DMH = (PBN, HND)
KRS = (FQR, PXB)
LLM = (GMX, VLX)
FJB = (XQV, KFT)
KRH = (QHR, QHR)
RDQ = (MCQ, FBG)
GLD = (VST, JPF)
RVP = (HBD, RBC)
DHV = (RJJ, KFV)
FMX = (RFL, GSG)
SMX = (DBX, QTF)
LPP = (FSD, PHM)
TDG = (MKK, MQQ)
HPL = (BDN, TVF)
MGM = (RDH, RDH)
FHJ = (XFJ, GVL)
TQB = (VFP, VGF)
JLJ = (DQH, GGB)
FMS = (FQR, PXB)
HQD = (BPR, SJK)
VXR = (XQX, VBG)
GML = (XFJ, GVL)
GCS = (RKJ, CSC)
CTJ = (SRD, BHH)
CLH = (XHQ, VKF)
HND = (RDL, PXS)
QPT = (RRH, CKQ)
NVD = (HKK, JVF)
XGM = (VFK, MLH)
GMN = (HVC, VMC)
QDF = (CXG, CPR)
TCK = (JPF, VST)
BJH = (LSL, BHB)
JNC = (BPB, SLZ)
GSC = (QVF, MJM)
XHG = (SRJ, MPH)
CGQ = (GTJ, LXQ)
CHL = (TGV, HPX)
MRJ = (LDK, SSQ)
GKH = (VQC, LNV)
MLM = (FQT, KDB)
BPT = (LNV, VQC)
BXT = (TKD, ZZZ)
PMP = (NHP, KJP)
PLC = (XLV, CKG)
FXA = (LBJ, JGT)
PKP = (RFL, GSG)
BQX = (MSH, NSN)
LBJ = (SFN, GQT)
KMD = (KFV, RJJ)
PVJ = (MQD, MLM)
LDQ = (LVR, BFV)
SLS = (PGB, DBR)
VTP = (HQQ, JHX)
MPS = (QTX, DGF)
VRJ = (QTG, MHD)
HBH = (HNG, FKF)
RTC = (RMD, FJB)
PHB = (LPD, LPD)
CMM = (DMS, KFB)
QVR = (MKK, MQQ)
XFJ = (DKF, VMV)
TLV = (DLN, LLS)
QRV = (SCL, BSJ)
MFN = (GHK, RRL)
NVT = (LFX, PVX)
FVL = (HMR, MTB)
VCS = (TQB, BBM)
XHF = (QBK, VDC)
JTV = (FSD, PHM)
VML = (TTD, LBH)
SCL = (DKS, TJH)
VHC = (QXM, HDF)
LPV = (GMX, VLX)
CFG = (BTF, JQJ)
MCV = (PHR, JFD)
LDS = (FGF, XHG)
VGF = (QCM, JXP)
BVF = (QQT, QTP)
VKN = (TMP, BSB)
VJK = (KQM, DHQ)
CTK = (GSF, HQN)
PHM = (MJF, XNH)
PVX = (MHK, SXL)
JPC = (KQH, HQD)
JGS = (CTJ, LPF)
XNV = (CLR, BLB)
PTS = (KCT, KQS)
BXS = (BVF, LMK)
BJB = (XPV, BVJ)
MHK = (VTP, KKX)
CJC = (NMS, HCC)
RKT = (PMT, FCX)
BFG = (QQV, MHS)
LPH = (HDD, DVM)
GSR = (GLN, NQG)
MHH = (VGS, TRH)
HMT = (BLB, CLR)
JCJ = (NJF, MFR)
MDK = (RPV, MDX)
LRR = (DPQ, XTB)
RKJ = (PDP, BLD)
MJF = (RXX, SGS)
NCG = (NRT, FVP)
QQV = (JXD, FCV)
MJQ = (BCC, KFL)
TKD = (MJJ, QBJ)
MND = (MDK, KBG)
RXG = (MRJ, DLD)
BGT = (DHM, VDX)
XCP = (LPP, JTV)
TRS = (QPH, GCS)
FPS = (MGM, KSX)
MVL = (SMG, RPH)
BJM = (NVD, FKV)
BSJ = (TJH, DKS)
MTV = (PLP, HJL)
GQC = (FTV, DJD)
CQL = (FTK, MQF)
VQM = (RMV, CJC)
SLZ = (JGT, LBJ)
HVC = (MCV, RPC)
LFX = (MHK, SXL)
BJQ = (LFC, RNK)
BFV = (FGX, CNB)
DRK = (HMT, XNV)
VBD = (NKP, FRN)
KBN = (STS, VKN)
XQX = (HJM, QJN)
MPR = (HQG, MFN)
KFB = (MFS, QVD)
GHM = (QDQ, DPP)
KBD = (QPT, FDV)
MVH = (FVL, XRR)
PGB = (RVG, TRS)
RGM = (NRT, FVP)
KKT = (QHR, GNZ)
TCJ = (RDS, BJQ)
MVQ = (HBD, RBC)
CKC = (XKH, FBQ)
SHX = (XHF, STX)
NVR = (RFF, GRH)
DKF = (RCN, XJS)
KTB = (BSJ, SCL)
HSJ = (PHB, JTH)
RJH = (DCC, CCH)
FNK = (QFF, CKV)
XNH = (SGS, RXX)
NRV = (DXF, DXF)
HRM = (RNH, GKS)
LJL = (GBX, FCH)
RDN = (PVJ, QKP)
JXM = (MVQ, RVP)
XLR = (HBH, MGJ)
QXP = (HPX, TGV)
HQH = (TTQ, LDQ)
HGJ = (FCK, HGS)
JTH = (LPD, DDK)
NKK = (FCX, PMT)
DHQ = (MND, BJV)
RFF = (FLV, QLQ)
RGB = (GBF, JCS)
RMX = (DFV, RPL)
VXF = (XRR, FVL)
SMG = (RSN, VBM)
KBG = (RPV, MDX)
QCZ = (BLP, RXT)
CQK = (BJG, HPL)
FDV = (RRH, CKQ)
CKQ = (QDN, NJH)
RRL = (JMM, VBN)
RVG = (QPH, GCS)
FTT = (GRG, PMJ)
FHD = (KMD, DHV)
GFM = (MRG, CDX)
FFG = (QRK, FHX)
RTG = (GSF, HQN)
PXS = (MLX, QJV)
MQJ = (JHT, SGH)
KSX = (RDH, PTT)
VXP = (VBG, XQX)
PMX = (TRH, VGS)
BPR = (GRQ, JXM)
VKD = (STT, FXF)
SXL = (KKX, VTP)
HDD = (GCD, FSC)
GTJ = (GRB, TKB)
CHT = (VXP, VXR)
RBC = (CKC, HBB)
XBS = (TKD, TKD)
KHH = (CQL, HQF)
XTX = (TPR, LGG)
LKK = (LLM, LPV)
VFK = (VDR, MQJ)
JLX = (VJK, FMJ)
FRV = (SMH, BJP)
GTC = (CGP, BLS)
PHR = (LTQ, LVD)
GCD = (BFG, NTH)
SBN = (KXM, LJC)
STX = (QBK, VDC)
FBG = (RTG, CTK)
CKV = (BJM, QCG)
DPF = (XCP, QKM)
FKF = (MVH, VXF)
BLB = (PGK, NFS)
XPV = (MJQ, BHG)
GMX = (FTT, KVX)
LBH = (DFJ, SPC)
JHC = (CDX, MRG)
GNL = (TJJ, MKM)
DSM = (FTH, FFG)
FFT = (QGN, LRB)
GRG = (NPJ, LNN)
JFJ = (HHG, LVQ)
CGR = (FMS, KRS)
LFS = (XTX, FLQ)
DMF = (TCF, PNQ)
LVQ = (RTC, RPQ)
DFJ = (SXC, LRR)
VLF = (RDS, BJQ)
LMJ = (BPL, XSF)
BVJ = (BHG, MJQ)
NRB = (QTX, DGF)
GKK = (RMN, QDP)
CFD = (PNQ, TCF)
GBX = (DSM, DVS)
NTM = (BPB, BPB)
XKH = (GHJ, FSV)
LGG = (BXD, FVX)
DBR = (RVG, TRS)
GTG = (BJG, HPL)
HKK = (NCG, RGM)
CKG = (LKV, QNK)
FKG = (RMT, DPF)
QVQ = (DKD, QTM)
LDK = (KTL, JMR)
PHJ = (PBN, HND)
PFZ = (PXF, VHC)
VLX = (KVX, FTT)
KQF = (HBH, MGJ)
RQN = (SSK, PMP)
CMQ = (TQB, BBM)
NHP = (FKG, FKG)
DVT = (GKK, VJN)
RPG = (FCK, HGS)
RBN = (RKK, RQN)
PBN = (RDL, PXS)
RCH = (QTM, DKD)
CRN = (VXP, VXR)
TNN = (KBF, TDV)
RFL = (QJP, CLF)
NJF = (DMF, CFD)
NQG = (RMX, NGG)
VDR = (JHT, SGH)
FPV = (GHN, BRB)
PBL = (DMS, KFB)
XTB = (JJX, GNL)
HGS = (FKM, BNR)
CCH = (BJC, MBP)
STT = (LMQ, BXS)
LTQ = (SLS, PKV)
SFN = (LCN, DTK)
NGH = (QVR, TDG)
RQK = (RPR, NRL)
PDP = (NDH, XGL)
FCH = (DSM, DVS)
QCD = (SCH, LDS)
TKF = (BTF, JQJ)
BPL = (BGT, FCN)
SVJ = (CQL, HQF)
QTG = (JPJ, JCF)
NSN = (GFM, JHC)
JCS = (HJG, FPV)
HRC = (GRH, RFF)
VGH = (LLM, LPV)
BRB = (XBS, BXT)
JMR = (HFF, FPS)
VJN = (RMN, QDP)
HPX = (TKF, CFG)
CFT = (QVF, MJM)
DBX = (KVL, DLS)
NHV = (PHJ, DMH)
FTH = (QRK, FHX)
XFB = (DVM, HDD)
XPP = (MLH, VFK)
CGP = (CQK, GTG)
MDL = (FFT, CBC)
GNZ = (KPG, KTV)
BJV = (KBG, MDK)
SCH = (FGF, XHG)
RXX = (KMC, RQK)
HQG = (GHK, RRL)
KKX = (JHX, HQQ)
LVD = (SLS, PKV)
QQP = (XJB, HSJ)
MTB = (LMJ, PCP)
FMJ = (KQM, DHQ)

200
data/09.in Normal file
View File

@@ -0,0 +1,200 @@
10 37 82 150 246 389 638 1129 2122 4057 7618 13804 24006 40089 64478 100247 151210 222013 318226 446434 614326
4 11 32 93 230 496 975 1798 3150 5243 8219 11979 16093 20384 27760 52853 143831 431834 1235397 3270284 8055403
26 49 90 163 288 500 869 1531 2730 4871 8584 14799 24832 40482 64139 98903 148714 218493 314294 443467 614832
-4 4 20 51 110 210 353 506 565 334 -395 -1456 -1197 6132 35806 122961 341002 832656 1860042 3882361 7672508
-3 -11 -26 -51 -85 -123 -145 -71 358 1848 6104 16888 41913 96030 206362 420524 820437 1547812 2855682 5217834 9561853
24 46 85 148 242 385 636 1166 2420 5460 12633 28796 63504 134925 276946 552208 1075976 2059234 3884733 7237580 13323150
21 39 83 178 359 678 1219 2121 3609 6033 9915 16004 25339 39320 59787 89107 130269 186987 263811 366246 500879
10 25 44 76 151 341 784 1707 3444 6445 11272 18578 29065 43417 62204 85753 113982 146193 180820 215128 244859
-7 -12 -17 -19 -1 80 320 924 2313 5335 11696 24823 51490 104671 208280 404983 769974 1438716 2670276 5000869 9616078
11 6 11 42 130 347 846 1920 4090 8237 15798 29051 51519 88528 147959 241239 384621 600808 920981 1387296 2055920
1 9 28 54 83 111 131 124 37 -251 -937 -2140 -3223 -734 16937 82214 276484 789748 2042200 4924402 11260416
21 38 63 97 143 206 306 516 1037 2322 5261 11439 23479 45482 83576 146586 246837 401102 631707 967805 1446831
5 16 33 66 130 257 523 1090 2263 4562 8809 16230 28572 48235 78419 123286 188137 279604 405857 576826 804438
7 15 45 110 242 510 1037 2019 3752 6686 11563 19784 34327 61856 117179 231986 470861 958909 1926897 3781406 7208824
17 42 76 131 234 432 797 1439 2554 4570 8522 16908 35479 76730 166325 354352 734215 1473186 2860224 5378689 9814112
11 30 66 129 241 437 773 1348 2344 4087 7133 12386 21260 35904 59518 96799 154569 242652 375084 571759 860635
-1 -7 -11 4 83 326 938 2325 5274 11283 23158 46078 89456 170104 317453 581895 1047713 1852557 3216019 5480568 9168937
4 17 52 119 229 401 674 1132 1955 3519 6594 12758 25329 51585 108157 233992 520718 1181662 2704178 6176752 13973529
6 20 54 124 252 474 851 1491 2598 4579 8286 15587 30720 63425 135930 297947 657678 1443646 3123770 6627130 13744012
14 35 74 148 285 534 990 1841 3447 6468 12069 22245 40328 71761 125251 214444 360300 594385 963340 1534834 2405359
29 41 50 56 59 59 56 50 41 29 14 -4 -25 -49 -76 -106 -139 -175 -214 -256 -301
19 37 72 149 310 634 1280 2557 5028 9670 18147 33322 60275 108413 196008 360199 679099 1319809 2639656 5392637 11137286
26 53 88 127 170 238 405 850 1937 4334 9200 18536 35972 68651 131669 258138 521205 1081063 2283755 4866515 10379943
3 1 -9 -19 -12 33 148 413 1045 2579 6237 14715 33900 76593 170430 374402 812719 1743149 3692707 7722173 15931140
2 13 29 50 76 107 143 184 230 281 337 398 464 535 611 692 778 869 965 1066 1172
21 38 66 114 191 306 468 686 969 1326 1766 2298 2931 3674 4536 5526 6653 7926 9354 10946 12711
20 32 56 120 270 575 1132 2071 3560 5810 9080 13682 19986 28425 39500 53785 71932 94676 122840 157340 199190
-1 -1 -9 -15 17 161 537 1324 2800 5444 10148 18600 33912 61580 110876 196785 342613 583405 970325 1576163 2502147
16 22 45 102 210 392 701 1271 2420 4857 10085 21163 44142 90823 184171 369045 733382 1449608 2854917 5606422 10981452
8 23 41 67 131 298 683 1495 3144 6466 13167 26667 53639 106669 208561 398765 742000 1337993 2328717 3894571 6222067
9 8 5 0 -7 -16 -27 -40 -55 -72 -91 -112 -135 -160 -187 -216 -247 -280 -315 -352 -391
23 43 72 109 160 257 497 1116 2629 6094 13593 29059 59605 117533 223295 410138 732799 1287316 2260839 4057511 7605344
-5 10 35 80 171 359 739 1483 2901 5567 10586 20131 38441 73545 140109 264179 491771 906656 1671501 3127338 6031731
17 38 75 144 265 466 801 1397 2559 4977 10106 20863 42965 87614 176965 355122 709669 1412564 2795569 5485754 10643249
-8 -13 -6 33 137 359 783 1538 2811 4852 7961 12444 18522 26174 34892 43323 48770 46521 28972 -15493 -103905
-3 1 10 26 65 165 397 883 1825 3549 6568 11668 20021 33329 54003 85381 131989 199849 296838 433102 621529
8 18 43 85 145 231 380 709 1523 3533 8280 18922 41605 87668 176873 341682 632443 1123657 1923398 3193680 5203054
-5 3 26 78 178 342 586 968 1714 3494 7945 18606 42603 93833 199268 411681 835139 1674971 3333414 6589328 12932182
11 17 26 38 53 71 92 116 143 173 206 242 281 323 368 416 467 521 578 638 701
7 17 38 76 134 207 277 308 241 -11 -568 -1588 -3272 -5869 -9681 -15068 -22453 -32327 -45254 -61876 -82918
13 31 77 163 302 506 777 1100 1461 1929 2868 5401 12360 30160 72376 166334 364813 766067 1546895 3015503 5693514
11 26 56 118 236 441 774 1299 2147 3635 6526 12509 24983 50243 99229 190181 352951 636508 1122536 1950228 3360746
16 19 17 18 36 84 171 323 666 1633 4387 11588 28674 65874 141225 284925 545420 997695 1754317 2979862 4909448
10 19 30 43 60 90 160 348 876 2334 6145 15415 36332 80294 167019 329195 620177 1128708 2010371 3557722 6355595
4 17 47 106 214 398 691 1131 1760 2623 3767 5240 7090 9364 12107 15361 19164 23549 28543 34166 40430
18 23 20 12 17 77 269 718 1612 3219 5906 10160 16611 26057 39491 58130 83446 117199 161472 218708 291749
-3 -3 -1 3 9 17 27 39 53 69 87 107 129 153 179 207 237 269 303 339 377
13 10 17 46 106 205 359 625 1199 2651 6404 15600 36530 80834 168698 333285 626633 1127232 1949451 3254922 5265898
18 45 88 163 297 530 933 1655 3015 5658 10797 20566 38512 70257 124364 213444 355544 575859 908814 1400565 2111971
14 17 19 20 20 19 17 14 10 5 -1 -8 -16 -25 -35 -46 -58 -71 -85 -100 -116
12 10 4 10 57 188 462 963 1841 3440 6609 13344 27972 59162 123133 248525 483506 905806 1636498 2858486 4840811
1 11 49 134 295 577 1047 1800 2965 4711 7253 10858 15851 22621 31627 43404 58569 77827 101977 131918 168655
7 14 39 84 145 210 257 252 147 -122 -637 -1500 -2835 -4790 -7539 -11284 -16257 -22722 -30977 -41356 -54231
8 19 48 112 246 516 1037 1992 3648 6365 10594 16860 25726 37734 53319 72692 95688 121575 148820 174808 195510
2 1 -6 -11 10 115 426 1167 2705 5585 10553 18596 31140 50823 83887 146617 281233 592826 1331237 3065196 7038703
10 24 50 91 157 281 548 1141 2406 4940 9721 18354 33675 61406 114644 225397 472484 1045368 2383345 5466690 12403661
9 26 53 92 145 214 301 408 537 690 869 1076 1313 1582 1885 2224 2601 3018 3477 3980 4529
15 23 42 77 127 197 333 699 1738 4505 11355 27360 63198 140949 305518 646813 1342402 2739280 5510713 10957600 21587310
19 37 61 94 146 245 457 921 1909 3922 7842 15196 28676 53239 98468 183600 348119 673831 1330219 2665814 5387734
4 -3 -17 -40 -78 -141 -238 -367 -500 -563 -411 202 1658 4515 9552 17819 30692 49933 77755 116892 170674
-1 1 8 27 66 128 198 213 2 -818 -3003 -7910 -17797 -36193 -68327 -121594 -206023 -334697 -524058 -794011 -1167720
1 -1 0 11 53 181 512 1270 2872 6117 12616 25730 52480 107173 217866 437281 860403 1651755 3086264 5608725 9918151
17 31 55 111 236 482 916 1620 2691 4241 6397 9301 13110 17996 24146 31762 41061 52275 65651 81451 99952
0 10 33 89 223 518 1108 2194 4081 7279 12745 22386 39996 72865 134378 248021 453334 814504 1432481 2461735 4133061
4 -5 -14 -23 -22 37 297 1104 3202 8074 18526 39669 80531 156610 293712 533311 939276 1604957 2658166 4259557 6587732
26 49 82 125 178 241 314 397 490 593 706 829 962 1105 1258 1421 1594 1777 1970 2173 2386
14 24 37 53 80 146 325 794 1957 4702 10900 24317 52213 108112 216713 423068 810836 1540384 2930127 5629961 10984722
17 32 55 92 151 240 377 625 1165 2420 5243 11182 22835 44308 81789 144251 244297 399160 631871 972608 1460239
14 18 28 47 72 97 128 213 499 1344 3538 8745 20418 45744 99763 213822 452144 942698 1931932 3877439 7598384
16 31 57 106 193 331 522 744 942 1042 1015 1009 1514 3379 7175 10748 2592 -53483 -250583 -802088 -2159965
15 26 43 69 117 221 456 977 2090 4380 8952 17898 35184 68236 130557 245712 453081 816341 1437855 2488540 4278275
11 12 20 44 95 183 317 515 841 1512 3165 7447 18195 43613 100034 218082 452327 895860 1701610 3112686 5504559
10 20 40 72 128 251 560 1339 3198 7339 15972 32974 65017 123691 229785 422260 777466 1450816 2767623 5420691 10896672
9 24 43 65 96 169 380 953 2356 5499 12054 24946 49073 92322 166957 291464 492947 810178 1297413 2029095 3105574
15 24 48 102 200 348 534 724 887 1103 1867 4799 14114 39405 100553 235907 515279 1059778 2071066 3873260 6971428
18 41 77 129 203 311 475 728 1120 1765 3022 6012 13867 34429 85620 205451 469702 1021769 2121131 4219443 8076523
11 18 31 49 89 198 473 1110 2524 5624 12400 27107 58581 124749 261505 540357 1103485 2232434 4479569 8912417 17553909
5 5 3 9 43 135 327 675 1246 2101 3250 4554 5533 5055 1056 -8925 -23929 -26243 55221 432483 1648635
24 37 51 71 111 204 412 828 1570 2788 4753 8213 15468 33174 78947 195701 480720 1141251 2595563 5648743 11786953
9 8 3 -3 3 65 306 1017 2803 6806 15031 30809 59441 109079 191914 325757 536117 858900 1343875 2059077 3096343
8 18 43 89 164 278 443 673 984 1394 1923 2593 3428 4454 5699 7193 8968 11058 13499 16329 19588
-2 -12 -14 5 64 200 482 1036 2103 4172 8269 16559 33551 68408 139207 280648 558215 1095495 2130207 4134284 8074665
2 11 36 82 151 245 374 569 900 1499 2588 4512 7777 13093 21422 34031 52550 79035 116036 166670 234699
10 16 13 5 4 36 164 534 1456 3557 8101 17694 37848 80395 170752 362969 770150 1624734 3396021 7016083 14308004
6 22 45 84 167 355 769 1639 3400 6895 13820 27701 56003 114583 236900 492721 1025458 2125312 4369583 8885622 17831503
3 8 24 73 190 423 833 1494 2493 3930 5918 8583 12064 16513 22095 28988 37383 47484 59508 73685 90258
8 10 11 11 10 8 5 1 -4 -10 -17 -25 -34 -44 -55 -67 -80 -94 -109 -125 -142
-3 5 32 89 188 341 561 867 1304 2013 3437 6855 15647 38087 93150 221955 509247 1121997 2376078 4847429 9551590
13 26 48 91 168 293 481 748 1111 1588 2198 2961 3898 5031 6383 7978 9841 11998 14476 17303 20508
4 1 5 30 99 248 542 1119 2292 4772 10134 21754 46653 99118 207881 430492 882132 1792807 3618723 7253786 14420127
6 5 14 53 163 421 955 1959 3708 6573 11036 17705 27329 40813 59233 83851 116130 157749 210618 276893 358991
20 38 69 109 152 192 234 318 567 1292 3236 8134 19944 47459 109783 247905 549506 1202430 2608943 5624723 12044252
8 18 39 79 157 311 625 1282 2659 5514 11386 23449 48242 98951 201258 403208 791090 1513994 2820505 5111939 9017627
14 20 26 46 100 210 400 701 1158 1832 2786 4040 5476 6670 6624 3367 -6610 -29124 -73318 -152974 -288172
9 21 31 39 61 141 365 893 2053 4591 10254 23022 51549 113813 245773 517287 1061241 2126913 4178213 8075541 15413429
10 5 0 -5 -10 -15 -20 -25 -30 -35 -40 -45 -50 -55 -60 -65 -70 -75 -80 -85 -90
2 8 14 20 26 32 38 44 50 56 62 68 74 80 86 92 98 104 110 116 122
25 43 82 152 271 484 885 1649 3106 5936 11653 23709 49830 106651 228414 482512 996095 1999905 3898092 7376110 13563041
25 37 58 110 239 536 1174 2470 4995 9773 18638 34882 64481 118529 218222 405141 762261 1456041 2818722 5505066 10782955
9 9 25 72 165 319 549 870 1297 1845 2529 3364 4365 5547 6925 8514 10329 12385 14697 17280 20149
0 2 6 13 24 44 86 175 352 678 1238 2145 3544 5616 8582 12707 18304 25738 35430 47861 63576
6 30 75 162 327 623 1122 1917 3124 4884 7365 10764 15309 21261 28916 38607 50706 65626 83823 105798 132099
8 6 1 -7 -18 -32 -49 -69 -92 -118 -147 -179 -214 -252 -293 -337 -384 -434 -487 -543 -602
10 5 -1 -5 -4 5 25 59 110 181 275 395 544 725 941 1195 1490 1829 2215 2651 3140
4 13 25 51 116 268 605 1333 2875 6078 12633 25968 53154 108866 223288 457209 929642 1866383 3682349 7116701 13448156
4 0 2 13 42 113 275 610 1240 2340 4170 7146 11982 19959 33423 56695 97708 170888 302090 536811 953458
13 33 74 145 256 421 664 1027 1588 2525 4326 8374 18378 43560 105290 250237 575532 1275865 2731024 5670202 11488003
15 44 87 148 246 435 830 1634 3159 5832 10175 16746 26026 38235 53058 69260 84167 92988 87951 57224 -16410
9 22 35 48 61 74 87 100 113 126 139 152 165 178 191 204 217 230 243 256 269
3 18 49 114 243 485 923 1695 3025 5296 9266 16673 31761 64816 139895 311086 695823 1541682 3357467 7164580 14967135
28 44 59 86 152 292 552 1021 1927 3858 8218 18120 40076 87085 184046 376823 746783 1433430 2669722 4840316 8588709
18 27 47 92 192 399 804 1592 3180 6501 13512 28013 56869 111743 211525 385925 681562 1174191 1996269 3401322 5911706
20 34 55 83 118 160 209 265 328 398 475 559 650 748 853 965 1084 1210 1343 1483 1630
9 6 -5 -22 -27 36 293 995 2626 6113 13203 27072 53190 100343 181447 313295 513543 791920 1130659 1446270 1520747
9 26 59 111 177 254 363 583 1103 2307 4919 10252 20629 40081 75506 138688 250155 447262 801933 1459475 2720655
11 16 21 26 31 36 41 46 51 56 61 66 71 76 81 86 91 96 101 106 111
18 25 45 97 205 392 684 1132 1858 3127 5437 9599 16745 28150 44680 65578 86170 93909 61973 -60611 -363635
7 7 16 46 125 306 672 1338 2462 4296 7335 12657 22590 41893 79697 152519 288737 534997 965114 1692128 2884283
8 9 1 -8 16 142 491 1277 2889 6031 11937 22674 41526 73399 125094 205199 323391 489436 713718 1014627 1444769
13 19 33 74 184 433 926 1830 3455 6444 12163 23451 46018 91000 179536 350773 675489 1278617 2375429 4328080 7731708
11 24 48 94 196 426 916 1903 3839 7652 15309 30921 62746 126592 251301 487210 918739 1682552 2993078 5177568 8723304
6 27 73 154 275 442 675 1029 1623 2668 4461 7264 10904 13799 10921 -10067 -75636 -237807 -592423 -1307346 -2664647
-2 -4 -1 13 54 164 435 1047 2326 4828 9455 17609 31390 53844 89267 143571 224718 343228 512767 750821 1079462
-4 -14 -18 -1 66 242 646 1509 3256 6626 12838 23811 42446 72978 121406 196009 307956 472018 707390 1038631 1496730
16 23 40 74 123 175 208 191 99 -20 150 1648 7185 23051 62985 156232 364624 818923 1795546 3876244 8274637
2 18 40 65 98 159 305 691 1716 4348 10809 25940 59770 132095 280246 571702 1123798 2133502 3921102 6992667 12127338
20 24 25 30 65 200 583 1481 3330 6799 12878 23025 39509 66408 112572 199850 384145 805463 1799712 4135921 9498542
12 27 62 134 270 505 880 1440 2232 3303 4698 6458 8618 11205 14236 17716 21636 25971 30678 35694 40934
24 34 44 54 64 74 84 94 104 114 124 134 144 154 164 174 184 194 204 214 224
11 13 10 14 46 133 321 728 1666 3867 8856 19518 40892 81176 152849 273811 468865 773613 1247830 2017298 3388454
10 10 25 68 148 264 412 617 999 1879 3928 8359 17159 33355 61305 107002 178376 285576 441211 660526 961486
4 9 22 51 114 252 548 1148 2286 4325 7849 13904 24647 45033 86956 178824 386516 857089 1906160 4186141 8999036
1 19 50 96 162 258 401 617 943 1429 2140 3158 4584 6540 9171 12647 17165 22951 30262 39388 50654
5 12 34 77 147 250 392 579 817 1112 1470 1897 2399 2982 3652 4415 5277 6244 7322 8517 9835
29 42 59 86 129 194 287 414 581 794 1059 1382 1769 2226 2759 3374 4077 4874 5771 6774 7889
9 5 -2 -9 2 87 383 1176 2999 6773 14033 27352 51218 93869 170994 312817 576957 1070669 1987696 3667085 6684034
18 33 70 137 235 357 502 725 1255 2730 6624 15979 36608 79006 161298 313669 584864 1051519 1831290 3100989 5121217
10 21 59 154 354 736 1428 2659 4873 8969 16761 31792 60696 115426 216996 402316 738199 1352851 2509645 4779745 9436447
10 23 59 134 281 554 1036 1855 3206 5370 8713 13639 20461 29143 38854 47262 49482 36577 -6505 -103692 -291399
13 31 65 130 261 522 1016 1902 3436 6071 10672 18922 34010 61698 111857 200538 352599 604839 1009491 1637794 2583195
12 22 45 99 219 458 881 1549 2490 3654 4849 5655 5313 2586 -4411 -18415 -43256 -84138 -147963 -243701 -382809
0 5 14 28 55 121 298 761 1902 4571 10602 23944 52989 115115 245094 509913 1033788 2038793 3908662 7286044 13216899
18 37 68 116 195 335 588 1046 1899 3577 7037 14274 29154 58687 114879 217324 396720 699517 1193930 1977576 3187021
-7 2 25 70 153 298 537 910 1465 2258 3353 4822 6745 9210 12313 16158 20857 26530 33305 41318 50713
20 31 42 53 64 75 86 97 108 119 130 141 152 163 174 185 196 207 218 229 240
11 23 47 99 199 378 692 1247 2244 4058 7386 13567 25338 48605 96353 196685 408273 848345 1740857 3495859 6835425
14 22 40 82 187 438 999 2180 4547 9117 17722 33698 63175 117473 217603 402985 748977 1403173 2661589 5128171 10043916
11 34 68 113 169 236 314 403 503 614 736 869 1013 1168 1334 1511 1699 1898 2108 2329 2561
-1 -11 -12 10 69 179 354 608 955 1409 1984 2694 3553 4575 5774 7164 8759 10573 12620 14914 17469
18 30 42 54 66 78 90 102 114 126 138 150 162 174 186 198 210 222 234 246 258
18 27 56 123 259 513 959 1709 2944 4999 8599 15477 29863 61781 133810 294051 639606 1357043 2789234 5541767 10647019
14 10 2 2 43 186 525 1187 2337 4222 7325 12758 23116 44162 87942 178271 360024 714354 1382892 2605218 4775489
10 18 26 34 42 50 58 66 74 82 90 98 106 114 122 130 138 146 154 162 170
5 23 60 134 285 595 1228 2497 4970 9651 18327 34280 63777 119185 225423 433107 844696 1664968 3295303 6503971 12723886
22 39 68 128 254 500 944 1697 2916 4814 7653 11727 17457 26049 41905 79433 179556 445855 1118254 2715958 6305702
15 15 25 62 145 299 563 1002 1723 2895 4773 7726 12269 19099 29135 43562 63879 91951 130065 180990 248041
10 19 46 108 229 440 779 1291 2028 3049 4420 6214 8511 11398 14969 19325 24574 30831 38218 46864 56905
23 39 56 84 144 260 449 718 1081 1622 2660 5131 11413 27024 63986 147268 326735 698621 1442948 2886826 5608554
18 34 55 89 150 258 439 725 1154 1770 2623 3769 5270 7194 9615 12613 16274 20690 25959 32185 39478
15 29 57 115 232 456 866 1590 2829 4887 8207 13413 21358 33178 50352 74768 108795 155361 218037 301127 409764
14 20 24 23 14 -6 -40 -91 -162 -256 -376 -525 -706 -922 -1176 -1471 -1810 -2196 -2632 -3121 -3666
6 26 60 121 248 515 1050 2091 4134 8271 16880 34938 72435 148776 300874 598273 1171929 2269863 4365915 8373002 16059681
8 13 35 97 238 515 1005 1807 3044 4865 7447 10997 15754 21991 30017 40179 52864 68501 87563 110569 138086
17 25 35 55 107 241 550 1180 2337 4326 7725 13903 26226 52431 108729 226129 459109 895883 1667827 2952731 4961913
8 26 57 104 173 286 519 1076 2410 5402 11609 23592 45335 82766 144391 242052 391820 615034 939497 1400840 2044065
3 10 29 78 188 403 780 1389 2313 3648 5503 8000 11274 15473 20758 27303 35295 44934 56433 70018 85928
-5 -5 -1 18 82 253 651 1515 3345 7216 15440 32908 69721 146196 302134 613573 1222536 2389442 4585992 8663273 16166069
12 24 50 106 221 436 803 1384 2250 3480 5160 7382 10243 13844 18289 23684 30136 37752 46638 56898 68633
6 21 61 136 263 470 807 1383 2461 4663 9379 19577 41458 87954 186242 393845 832659 1759550 3710060 7785731 16219200
-2 1 1 -10 -36 -70 -88 -44 134 547 1327 2638 4676 7668 11870 17564 25054 34661 46717 61558 79516
0 2 5 14 48 146 386 934 2144 4736 10094 20763 41304 79829 150883 281126 521120 970802 1835611 3549656 7040224
5 14 23 30 40 75 201 596 1695 4475 11002 25468 56123 118821 243520 486375 952760 1841967 3534836 6765525 12956133
19 41 76 129 205 309 446 621 839 1105 1424 1801 2241 2749 3330 3989 4731 5561 6484 7505 8629
13 23 40 84 185 398 844 1803 3900 8445 18024 37522 75971 150138 291990 564885 1099058 2168489 4353507 8875046 18261740
10 19 39 70 112 165 229 304 390 487 595 714 844 985 1137 1300 1474 1659 1855 2062 2280
28 41 61 97 171 343 747 1650 3558 7410 14929 29240 55919 104715 192340 347091 616960 1084883 1898873 3332571 5905659
5 10 31 73 145 271 512 1018 2143 4669 10192 21719 44505 87118 162653 289918 494281 807692 1267173 1910797 2769849
4 24 65 144 300 615 1244 2461 4749 9003 16979 32223 61894 120239 235122 460136 896646 1732814 3310349 6234322 11546476
17 31 54 99 194 382 721 1284 2159 3449 5272 7761 11064 15344 20779 27562 35901 46019 58154 72559 89502
5 4 7 20 54 146 402 1082 2767 6686 15354 33810 71997 149271 302774 602609 1178613 2266292 4283477 7954868 14509316
14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 -1 -2 -3 -4 -5 -6
22 42 84 163 293 491 795 1302 2231 4015 7425 13728 24880 43754 74402 122349 194916 301568 454282 667929 960663
3 0 1 12 36 73 120 171 217 246 243 190 66 -153 -494 -987 -1665 -2564 -3723 -5184 -6992
20 43 88 178 348 653 1188 2134 3858 7123 13531 26473 53172 109004 226365 472214 981488 2018447 4085466 8109904 15755812
14 26 48 80 122 174 236 308 390 482 584 696 818 950 1092 1244 1406 1578 1760 1952 2154
23 29 33 35 35 33 29 23 15 5 -7 -21 -37 -55 -75 -97 -121 -147 -175 -205 -237
5 12 23 38 57 80 107 138 173 212 255 302 353 408 467 530 597 668 743 822 905
14 27 44 73 126 224 420 849 1809 3880 8109 16338 31839 60555 113439 210644 388656 711889 1290786 2309103 4063804
17 33 58 96 170 349 800 1881 4291 9297 19079 37285 69978 127287 226233 395362 681933 1162409 1956784 3246718 5296378
7 21 43 83 155 274 453 700 1015 1387 1791 2185 2507 2672 2569 2058 967 -911 -3821 -8049 -13925
12 27 45 64 92 160 339 767 1701 3625 7485 15222 30992 63876 133584 281743 592957 1232214 2509179 4987588 9674485
12 25 37 43 28 -30 -144 -283 -303 191 2130 7587 21086 52414 122509 275338 600961 1279037 2659960 5417729 10846175
0 3 22 63 141 300 650 1445 3236 7139 15273 31482 62636 121260 231241 440403 847714 1660461 3311075 6690622 13608639
5 4 8 22 48 90 174 390 963 2360 5440 11654 23302 43854 78342 133830 219969 349644 539720 811894 1193660
18 34 60 102 166 258 384 550 762 1026 1348 1734 2190 2722 3336 4038 4834 5730 6732 7846 9078
15 29 56 116 236 450 799 1331 2101 3171 4610 6494 8906 11936 15681 20245 25739 32281 39996 49016 59480
9 18 41 106 249 522 1015 1889 3418 6059 10638 18904 35049 69480 147439 327464 738904 1654857 3628600 7740039 16026822
-7 -3 9 44 136 346 781 1639 3303 6525 12785 25007 49000 96309 189672 373150 730754 1421573 2750017 5316307 10355491
17 28 58 129 284 596 1172 2157 3745 6202 9900 15351 23216 34246 49090 67879 89465 110160 121782 108773 44108
4 10 18 29 44 65 100 179 390 951 2348 5598 12758 27924 59182 122318 247584 491440 955886 1818627 3377640

140
data/10.in Normal file
View File

@@ -0,0 +1,140 @@
FF--7-|7F--7F--|7F77-.FJF7F-7-F|7.77.FF7-F7---7-FJ7.|J--FJJ-FF-.JJ7LF7.J7F-7-F77L7.7-7.7FF77FF7..F--L7JF--.FF.7F|JFL7.7FL77.-7|7.F7-7FJ.FJ.-
FL-JF-L-JJFFJJ.7-JLL.7JF-J---7JLF7|LLF--.LJ.F7.LJL7--JJLJJJ.||JF|.F7LJ7.JJL7-FJ7L|-JL..LJJF-FJJ-|7|||F.|7.F-J7|FJF-JF--7L|7L---7-FL7FJ-FJ7.|
F7.||.7--7-LJ.FJ.|7..J-J7J|F.LFFJ7F7J|LJFL7.FJ7.|FJ..J|.|.F-LL-7..|F|J|7.FF77|F77J.F-JJ-J-|-|7JLL7-FJLFLF-7J.LJ7--7-7-L|JL-J7J7L..L-J|L|-FF7
||F||FL7F7-|7|LF7|F|7|7|F7|..FJ|FJFJ.L--.FL.F.LF7J|FF.L7FLJ|.|7FJ-LJ|.|FL||.LF7JF.F||7JF--L-|7F7.-..L.7||..L7FL7|JL7L7-L77L|F-7J.7F|FL77.LL7
-7FJFJFLJJ.F-JJ|LJL--7-F--F-|L|FL-LJF7J|F77.L--7L.|F77LJ7FJJFF-J7LL-J--JJ.FF7LJ.J-FLJFF|J|L7FFJLFLF77F7-F|7FJJJ.|7L-JLLLL.|.|.|||77JFJ.J..LJ
L77-F7FJ|FJJ.|.|J.J7LL7||7L7J7|JL7|FF7-JF-77.LLLJ|J-77.JL7.7LJ|F--FFL-J|JFFF7J|7.|LF-FF7FJ7F|J.FF7|L7F-77-J7LF-FJLF---JF|7LF77.FL.JL7|F7-FF7
-F|7JLF-JJFJFLF7LFLF.|JFJ7.J.L|JFF|LLJ7.LL7FF.L|7LJJLJ7.--.F.LFL7F--.F|F-7F||LF-7J.|FLLL-7L--F--JLJFJ|FJF7J|F||.L-7FJ..J|7-L|7-FJ7-F||JF-.7|
LLJL-JL7|.|J||LL7|-77L7|--|LF||F7L|JLF|7..L-FF-|-LJ|7-LJ7-F7F77.7J-L77-L7L-J|FJFJJ.L|J.FLLJLFL7F--7L7|L7||7FJFF7JLLF--7.J77-|JJ|F|.F7L-7.-7-
J7F7J|LJ-FJ.|L7.F|7L7-F|7.7F7.L|||||F|LL-7-J..FL7|.-F7||F7|||L77JF-.|F7|L--7||FJ||F-|7-|.|.L|LLJ|||FJL7|||F7.F7|.|LLF---||F7LJ.L-|FJJLLL7LF7
LFJ|LLJ|JLJF77FL-J-F|JFJF7LJ-|-LJL7-FF.F|.F..F|.FF-JJLF7|LJLJFJF77||-||F7F-J|||.FF7JJJJ|.7J-F-7FF-|L-7||||||FJL7FF---7JLFJL7|.|-7L||.|.F7-LJ
F|LJ.|.|.|F--|LJF7|F|.|7|FJJ|J.|J.F-.JFFF-777-F7|||LFJ||L-7F-J7||77LFJ|||L-7||L-7||J7|F-7LJLL7L7LFJF-J|||||||F7L7L-7FJ77.L7---F7L-J7.L-|..JJ
F|FJ-7---LF-J.FLF.LJL7J|-L|7LFLF7-JJ-LF7L7|F77|L7-F7F7||F-JL--7|L7F7L7|||F-J||F-J|L7-FLJL.|F7|FJFJFJF7||||||||L-JLFJL7|JFFJ|L-J7.LJ|7|F7F7||
JLLJ7L.|.LL-7--JL7J.7|7---|-J|LL|77L--|L-J||L-JFJFJ|||||L-7F--JL7|||FJ|||L7FJ|L--JFJ.L7-|FFJLJL7L7|FJ||||||LJL7J7J|F-JJ7-L-J7LLF7F|FF.L.J|FJ
|.L-F.L7F..F|J.FJ|7-F77JJ.LFF-77L-L.FLL--7|L7F-J7L7LJLJ|7FJ|LF7FJ||||FJ|L7||L|F---J.-JF7JFL-7F7L7||L7|||||L7F7L7F7|L-77|.L-.|L|J.F7LJ7LFF-JL
J-F||J7LJ777|F-|.L-FJL777.F7|FJ7J.L777FF7|L-JL-7J.L--7FJFJFJFJ|L7|||||FJFJ||FJL----7.F||-JJLLJL7||L7|||||L7||L-J|LJF-J7F7J|F7-J.FFJ|.F.F|L-.
J-FFLFJ7|L77F7|LFJ-L7FJ7FFJLJL7F7-J|F--J|L-7F7FJ|F---J|FJFJJL7L7|||LJ||FJFJLJF-----J7F|L7JF7|F7||L7|||||L7|||JF7L-7|JFFJ|7FJ|-|-7LL--7.FJ-|F
FF7.JJ.LFFF7|7J-JLF-JL--7L--7FJ|L7JLL--7|JFJ|LJF7L---7LJFJJ.FJFJ||L-7LJL7L7F7L7F--77F-JFJFJ|FJLJL-J|||||F|LJL7|L7FJ|F7L7|7L7|JJ.|F7J7|F.LF77
-FJ7..F.|F7-JL-F|7L--7F-J-F-JL7L7L7LFF-JL7L7|F7||F-7FJF7L7-FJFJFJ|F7L7F-JFJ||FJ|F-JFJF-JFJFJL-----7|||||FJF--JL7|L7LJL-J|F7||-F-77.L|-FJ..|7
.F7F-J|FFJLJ|LFF-7LF7|L-7JL--7L7|FJF7L-7FJ7|LJLJ||FJL7|L7L7L7L7L7LJ|FJL7FJFJLJFJL7|L7|77|FJF7-F7F-JLJ||LJFJF7F-JL-JF7F--J|LJ|7|FJ--7JL|.F7|.
-LJ||.|-.FJL7.---|L|LJF7L7JF7|FJ||FJ|F-JL7FJF7F-J||7LLJLL7L7L7L7L7FJ|F-JL7L--7|F7L-7|L7FJ|FJL-J|L-7F-J|F-JFJ|L7F7F-J||F-7|F-JFJ|J--J.-LF--77
|LFL7..L|7J7.7.|-J.|F-JL7L7|||L7|LJFJL7F-J|FJLJF7||F7F--7L7L-JFJFJ|FJL7F7|F--JLJ|F-JL7||FJL---7|F-JL7FJL-7L7|FJ|LJF7LJL7||L7FJFJ7.F--.F|JFJ|
J.7.|77|LL.-F77|FLFLJFF7L7LJLJFJL-7|F7||F7||F7|||||||L7FJJL7F7L7L7||F-J|||L-7-F7||F7FJLJL7F7F-J|L7F7LJF-7L7||L7L7FJL7|FJLJFJL7L-7.FF|7-LJJF7
LJ7.F7FF7|77F7F7F-7J-FJL7L---7|F77|||||||||||L7|||LJL7|||F7LJ|FJFJLJL7FJ||F-JFJLJ|||L-7F-J||L-7L7LJ|F-J|L-J||||FJL-7L7L-7FJ7-|F-JF|-J-77F7--
F.L-J-J|FF--JLJLJFJF7|F7L7F7FJ|||FJ||||LJ||||FJ||L-7FJ||FJL7FJL7L--7FJL7LJL-7|F-7||L7FJ|F7|L-7L7L7FJL-7-LF7|L7||7F-JFJ-FJ|FF-JL7-7J.||-|J|FJ
-J77F-LF-|F--7F7FJFJ|LJL7||LJFJ||L7||LJF-J|||L7||F7|L7|||F7LJF-JF7||L-7|F---JLJFJ||FJ|FJ|||F-J.|FJL--7L7FJ||FJ|L7L-7|F7L7L-JF--J7|FFF7FF7|7.
|LL7JF7-.LJ|FJ||L7L7L---JLJF7L-JL-J|L7FJ-FJ||FJ||||L7|||LJL-7|F-J|FJF-J||F7FF7FJFJ|L7|L7|||L-7FJL7|F7|FJL7LJL7|FJF-J||L7L7F-JF--7-F7||7L-J-7
J-L-.LJ.FL|-L-JL7L7L------7|L7F-7F7|FJL-7L7|||||LJL-J||L7F--J|L-7||FJF7||||FJ||FJFJFJL7|||L-7|L-7|FJLJ|F-JF--J|L7L7FJ|FJFJL--JF7|FJ|||7F|7F|
JJFJ-L7|7F--||F-JFJF7F----JL7||FJ|||L7F-JFJ||L7L----7LJFJL--7|F-JLJ|FJLJLJ||FJ||FL7L--JLJ|F-JL-7||L--7||F-J.F7|FJFJL7|L-JF7F7FJLJL7|||F7F777
..LJ||F-77FF-7L-7||||L----7FJLJL-J||.||F7L7|L7L7F7F-JF-JJF7FJLJF7F-JL7F--7LJ|FJL7||F-----JL-7F7LJ|F7FJLJ|F-7||||LL7FJ|F--JLJLJ|-F7|||LJLJ|F7
FF7F7-L7|F7L7|F7|L7|L-7F--J||F----J|FJ||L7|L7L7LJ|L7FJ|F7||L--7|LJF7|LJ7FJF-JL7FJFJ|LF7F-7F7LJL7FJ||L--7||FJ||||F-JL-JL--7F77F7FJLJLJF7F7LJ|
--FJL--JLJL7|LJLJFJL-7|L---JFJF---7LJFJL7|L7|FJF-JFJL-7||||F--JL--JL7F-7|FJF7FJL7L7L7|||FJ|L-7FJL-J|F7FJLJL7|||LJF-7F----J||FJ|L7F7F7|LJ|F7|
.F|F-7F--7FJL---7||F7|L---7.L-JF7F|F-J-FJ|FJ|L7L7FJF--J||||L---7F-7FJL7||L7||L-7|FJFJ|LJL7|F-JL---7|||L-7F-J|LJF-JJLJF77F-JLJFJFJ||||L7FJ|LJ
FFLJ|LJLFJL-7FF-JL-J|L---7|F-7FJ|FJL7F-JFJ|FJ7|FJL7L-7L||||F7F-JL7LJF7|||FJ|L77|||FJJL-7FJ||F7F--7||||F7|L7J|F-JF7JF7||FJF7F7L-JFJ|||FJL7|LJ
LFJ|FLJ7L--7L7L----7L-7F-J||FJL7|L7FJL-7L7||F7||F7|F-JFJ||||||F-7L7FJ||||||L7|FJ||L-7F7|L7|LJ|L-7||||LJ||FJFJL--JL7|LJLJFJLJL--7L7|||L7F||.L
LLJ|F|7|.F-JFJF7F-7L7FJ|F7LJ|JFJL-J|JF7L7|||||||||||F7|FJ||||LJ7|FJL7|||||F7||L7||F-J||L7||F-JF7||||L7FJ||FJF-7F-7LJF---JF7F7F7L-JLJL7|-LJ7.
L7F|J.FF-JF7L7||L7|7|L7LJL-7|FJF7F7L7|L7|||||||LJ|||||||FJ||L7F7|L7FJ|||||||||FJ||L7FJ|FJ||L7FJ||LJ|FJL7|LJFJJLJFJF7L----J||LJL-----7||7||F7
F77.|F-L-7|L7LJL-JL7|FJF---J||FJLJL7LJLLJ|||||L-7|||||||L7|L7||||FJ|FJ|LJLJLJ||JLJ||L7|L7||FJL7|||FJL7.LJF-JF7F7L-J|F7F--7LJF--7F7F-J||J7LFJ
LJLF-JL|LLJJL-7F--7LJL7L---7|LJF7F7L----7LJ|||F7|||||||L7||FJ||LJ|FJL7|JF7LF-JL7F--JFJL-J|||F7|||FJF7|F--JF7|LJL--7|||L-7L-7L-7LJLJ.LLJJLFJ|
LL.7.||LF-----J|F-JF-7L7F7FJ|F7||||F---7|F7||||LJ||||||FJ||L7|L7FJ|F-JL-JL7L7F7|L7F7L---7LJLJ|||||FJLJL---JLJF7F7FJLJ|F7L7L|F7L---7-JL|F||JL
FF-L7-J-L---7F7||F7L7L7LJ|L7||||||LJF-7LJ|LJ||L-7LJLJLJL7||FJ|FJL7|L-7F---JFJ|||FJ|L7F--JJF7-LJLJ||F7F7F----7|||LJF-7LJL7L7|||F---J7FJL7J.7J
7J--F7||F|7FJ|||LJL-JF|F7L-JLJLJ|L--JFJF7L7FJ|F-J.F7F-7FJ|||FJL-7||F-JL---7L7|LJL7|FJL----J|F---7|||LJLJF--7|||L-7|FJF-7|FJLJ|L--7J-L7J||-|.
LLF7JFLLLJFJFJLJF-----J|L7F7F7F7L---7L-J|FJ|-|L---JLJFJL-JLJL7F-J||L-7F7F7|FJ|F--J|L7F7F--7|L7F7LJ||F7F-JF-JLJ|F7LJL-JFJ||JF7|F7FJJFJL----|-
7F77LJ7||LL7|.LFJF7F7F7L7LJ||LJL7F-7L-7FJL7|FJF----7FJF7F---7|L-7LJF-J|LJ||L7|L7F7|FJ||L-7LJ|LJ|F7|LJLJF7L---7LJL-----JJLJFJ|LJLJFFJJ||LJFF.
|7||FL-|J-LLJ7.L-JLJLJL-JF7LJLF7LJLL-7LJF7LJL7L---7LJFJ|L--7LJF7|F-JF7L-7|L7|L7||||L7||F7L---7FJ|LJFF--JL----JF---7F7FF7F7L7|F7F77J|L|-77FFJ
--J7JF|J|JJLLF7F7JF7FF---JL---J|F---7L-7|L--7L7F-7L-7|FJF--JF7|LJ|F7||F7||FJL-J||LJ7||LJL7F7FJL7L7F7L-7F---7F7|F--J||FJLJL-JLJLJ|F--7LLLL-J7
FJ.L.FJ.LF7F7FFJL-JL7L----7F--7|L--7L--J|F-7|FJ|FJF7LJ|FJF7FJ||F-J|LJ||LJ|L7-F7LJF7FJL-7.|||L7.L7||L-7||F--J|||L---JLJF---------J|F-J7|LJL7J
FL|7|.LL7LFJL-JF7F-7L77F-7LJF7||F7.L----JL7LJL7|L7||F7|L7||L7|||F7|F-JL-7L7L7|L--JLJF7FJFJ|L7L7||||F7LJ|L7F7|||F---7F7L7F-7F7F---JL-7-|7-LJ|
|JJLJ.FL|JL---7||L7L7L7L7|F-JLJ|||F---7F-7L-7FJL7||||LJFJ|L7|||||LJL7F7FJFJFJL---7F7|LJFJFJ.L7|FJ|LJL--J-LJLJLJL--7||L7LJFJ|LJF7F7F-JLF77J.J
F.FJ|LF.J.F---J||FJ7L7|F||L7F-7LJ|L--7|L7|F-JL7FJ||||F-JFJFJ||||L-7FJ|LJ7L-JF----J||L77L7|F-7LJL-JF7F---------7F7FJLJ-L-7L-JF-JLJ||||LL-7FJ7
L-JLFJJ|.FL-7F7|LJ.F-JL-JL-J|F|F7L---JL7|LJF-7LJJLJ||L7FJLL7|||L-7|L7L---7F7L-7F7FJL7L-7|LJFJF7F--JLJF-----7F7LJ|L--7F7|L7F-JF-7FJL7-|LF7-L7
L|.--.F|-7JFJ|||F-7L-7F---7FJFJ|L7F7F-7LJF7L7|F77F7||FJL7-FJ||L-7LJFJF-7FJ|L--J||L-7|F7|L7FJ-||L--7F7|F----J||F7L---J||F-JL--JFJL--J-|.LJ.LJ
F|7|JL-JF-JL-JLJL7L7FJL7F-JL7L-J|LJLJFJF7||FJ||L-J|LJL-7L7|FJ|F-JF-JFJFJ|FJF7F7|L7FJLJLJ7||F-JL7F7LJLJL-----JLJL-7F7-|||F7F7F-J||F777|F-L|.|
7.FJ.LLFF-7-|-F-7L7LJF-JL---JF7F----7L-JLJLJFJ|F--JF-7-L-J||7LJF7L7FJLL-JL-JLJ||FJL----7FJ|L7F7LJ|LF------7F7F7F7LJL7||LJ||||LF77|L77J|FJLF7
F-J.-7F||.L7|FL7L7L--JF7F--7L||L---7L--7F--7L-JL--7|FJF-7FJ|F--JL-J|F7|F--7F--J||F7F---JL-J-LJL-7L7L-7F--7LJ|||||F-7LJL-7LJLJFJL7|FJ|LJ77.FL
LL77FLFJF7J|L7LL7L---7|||F7L-JL---7L--7|L7.L------J|L-JFJL-JL7F-7F7LJL7L-7LJF7FJ|||L7F-7F-7F7F7L|FJF7LJF7L-7LJLJ|L7L7F-7L7F-7L7FJ||.FJL-77L|
FJJL--7-JJFJJF77|F7F7LJLJ|L7F--7F7L-7FJL7L-------7-L7F-JF----J|FJ|L7F7L7FJF7|||FJ||FJ|FJL7||LJL-JL-JL7FJL-7L---7L7L7|L7L7LJFJFJL-JL7|||.L7.F
7LF-7F7F|F|-FJL7LJLJL7F7FJLLJFFJ|L-7LJF-JF7F7F---JF7||F7L---7FJL7L7||L7||FJLJLJL-J|L-J|F-JLJF7F7F---7|L--7L--7FJ-|FJ|FJ.L-7L-JF---7L-7--7.LJ
L-7LLFLJLL|-L-7L7F-77LJLJF77F7L-JF7L-7L--JLJLJF7F7|||LJL7F-7||F7|FJ||FJ||L7JF--7F-JF-7|L7F-7|LJ||F--J||F7L--7|L-7||7|L7F-7L--7||F7|F-JJ-J-L-
7FJ.J|LJJF--JLL7LJFJF----JL-J|F7FJL--JF7|F----JLJLJLJF-7LJFJ|||LJ|JLJL-J|FJFJF7LJF7L7||FJ|FJ|F-J||F-7L-JL---JL7FJ|L7L7||FJF-7|L7||LJ7FF7..FJ
F|FFJ|7L-7JF.FJ|F7L7|F---7F-7LJ|L-----JL-JF7F--7F7F--JLL7FJ-LJL-7L7-F7|FJ|.|FJ|F7||FJLJ|FJL7|L7FJLJ-L-------77LJFJFJJ|||L-JFJL7LJ|F--7|J-7JJ
LJ-..||.J|FFF7FJ|L7|LJF-7LJFJF7L7F----7F--J|L-7|||L----7|L7|J|F-JFJFJL-JFJFJL7LJ||LJF-7LJF7LJ|LJJF----------JF-7L-JF7LJ|F--JF7|F7||F-J7|-||7
J.L7L-F7LLFFJ|L-J7||F7L7L-7L-JL7|L---7|L--7|F7||||F----JL7|F7FJF7L7L7F-7|||F7|F-JL7F|FJF-J|F----7L--7F7F-7F7F|FJF7FJ|.FJL7F-J|LJLJ||L|JL7F-7
.F7J|LJ|7.FJFJJ7LFJ|||FL-7|F7F-JL----JL---J||LJLJ|L-----7|LJ|L7|L7|LLJFJL7|||||F--JFJL7L-7||F--7|JF7LJLJFLJL7||7|||FJFJF7LJF7L7F7FJL7F77|LJ|
FL7FL7.FJ7L7L-7FFJFJ||F--JLJLJF-----------7|L-7F7L-7F---JL--JFLJ-LJ-L-L7FJLJ||LJF7F|F7L--J|LJF-JL7||F7JF7F7FJ||FJLJ|FJFJL7FJL7LJLJF7LJ|-FF-.
7L77F7JJ.F-JF7L7L7|FJLJF--7F-7L7F---------JL-7||L-7|L-----77FF77||JJ-LLLJ.|-|L7FJL-J||F7F7L-7L--7LJLJL-J||LJ7|LJF--J|FJF7|L-7|F---JL--JFF|J.
J-|J-F7L-L--JL7L-JLJF7FJF-J|-L-JL--------7F7JLJ|F-JL7F----JF7||-|..|-FJLJ-L-L7|L-7F7|LJLJL-7L-7FJF-7F7F7LJ7F-JF-JF7FJL-J||F-J|L---------7-7|
.L|JFL-7L||F-7L-7F7FJ||7L--JF7.F--7F7F7F7LJL7F-JL--7|L7F7F-JLJL7F7--.LJ-|.FLLLJF7LJ||F-----JF7LJFJ.||LJL---JF7L--JLJF-7FJ|L7LL7F-7F-7F--JF7|
7.JFJLF|LF7L7L7FJ||L7||F----JL-JF7LJLJLJL---J|F7F7FJL-J|LJF7F7FJ||LL7L7FF-----FJL7|LJL--7F7FJL7FJF-J|F7F7F7FJL7F7F--JJLJ-|FJF7|L7LJFJL-7.|JF
F.FFJFLJL|L7L7|L7||FJLJL--------JL-----7-F7F7||LJ||F7F7|F-JLJLJ-|||.L|F|7-|-|.|F7L7F7F-7LJLJ-FJ|FJF7||LJLJLJF7|||L------7LJF||L-JF7L--7|777|
LFJF-L-|FL7L-JL7LJLJF------------------JFJ||||L-7LJ|||LJL-7F7JF-J|77.|-|LF--|FLJL7|||L7L----7L-JL-JLJL------J|||L7F--7F-JJF-JL---JL-7|||7.7J
F|LJ7-FJFLL--7FJF7F7L----7F-7F7F7F--7|F7L7LJLJF7L-7|LJF---J||7L7FJJL|J-|F|..|F7F-J||L7L7F--7|F-7F-----7F7F7F-JLJFJL-7|L7-FJF7F-7F---JF|L7-7|
-JF.|-J.F7F--JL7||||F7LF-JL7LJLJLJFFJFJL-JF7F7||F-J|F7L----JL--JL77-LLFJ-.--FJ|L-7||FJFJ|F-JLJFJL----7LJLJLJF7F7L---JL-JFJFJLJ|LJ-J-L-L-J7.L
LF-7||LF||L---7LJLJLJL7L7F-J|F-----J7|F---JLJ|||L--J||F7F7F7F7F7FJ7J7|FJL77FL7|F7|||||L7|L7F-7|7F--7LL------JLJ|F7F7F7F7|FJF7|F-7F|77.L.F|7.
F||FF|-FJL7|F7L------7L-J|F-7L-------JL7F---7LJ|F-7FJLJ||LJLJLJ||JJ-L-J||F||FJLJLJ||L77LJLLJFJL7L-7|F-----7F7F-J|LJLJLJ||L7|L7|FJF77F777FF--
.J.L-J7L-7L-JL----7-FJF7FJL7L-7F-------J|F--JF7LJ7|L-77|L---7|FJ|.|F|7|FFFF7L----7||FJF7JF7FJF7|F7||L----7||||F7|F-----JL7||FJ||L|L7F7FL7L|J
FLJF--JJFL-------7|FJFJLJF7L-7LJF-------JL---JL--7|F7|FJF-7FJFL-JFFF7LF-F-JL7F---J||L7||FJLJFJ|LJLJ|F7F7FJLJLJ|||L--7F-7FJLJL-JL-JFJ|L7JJFJ.
F.L||FFFLF------7||L-JFF-J|F7L--JF---7F-7F7F7F-7FJ||LJL7L7|L7F-7-L-LJLJLL--7LJF--7|L7|||L-7FJFJF7F7LJLJ|L7-F7J|||F--J|FJ|F--------JJ|FJ.F--|
FJ-L7-F7JL-7F7F7LJL7F-7L-7LJL--7.L--7|L7||LJ|L7|L7|L-7FJFJL7|L7|.L7||-7LLF7L--JFFJL7|LJL--J|FL7|LJL7F-7L-JFJL-JLJ|-F-JL-JL---7F7F7F7||F7J-||
F-77JJF----J|||L7F7|L7|F7L----7|F---J|FJLJF7L-J|FJL7FJL7|J-LJL|L7J7FJ|-LL||F-7F7L-7LJF--7F-JF7LJJF7LJ7L---JF-7F-7L-JF7F---7F7LJLJLJLJLJ|F-J7
-7F7|.L-7F7FJLJFLJ|L-J|||F----J|L---7|L--7|L--7|L-7|L-7LJF-77L|FJ-F-7F7..||L7LJ|F-JF7|F7||LFJL7F7|L--7F---7L7|L7L--7||||F7LJL--7F------J7|||
FLF-77LLLJLJF7F7F-JF-7|||L--7F7L7F--JL7F-J|F--JL7FJL--J||L7|F7|L-7L7|||F7|L7|F7||F7|LJ|LJ|FJF7LJ|L--7LJF-7|FJL7L--7LJ|L-JL7F--7LJLF7F7||.-F-
F--JL|F7|JJFJLJLJF-JFJLJ|F7LLJL7|L---7LJ-FJL---7|L-7F---7FJ||LJF-JFJLJ||LJFJLJ||LJLJF-JF7|L-JL-7|F7JL-7|FJLJF7L---JF7|F--7LJF7L--7|LJL777L|J
|.L|7F-JJ|-L7F7F7|F-JF-7LJ|F---JL----JF-7|F----JL-7|L-7FJ|FJL7FJ.FJF--JL-7|F7FJL7FF7L--JLJFF-7FJLJL---J|L---JL--7F7||LJF7|F-JL--7LJF--JL7FL7
.JLFFF7.LFF-J|||LJL--JFL-7|L---7F--7F7|FJ|L-7F--7-LJF-J|FJL7FJL-7L7L-7LLFJ|||L7FJFJ|F--7LF7L7|L7F-7F-7FJF------7LJLJL-7||LJF7F7FL--JF-7.F--J
..F-FJL7||L--JLJFF-------JL-7F-J|F-J|LJL-JF-J|F-JF-7L-7||F-JL7F-JJ|F7L7FJFJ||FJL7|FJL7FJFJL-JL-J|FJ|FJL7L--7F7.L--7F-7LJL7FJLJL-7F7FJFJ-LJ.L
--LJL7FJF----7JF7L-7F-7F-7F7|L--JL--JF7F-7L--JL--JFJF-J||L7LFJL7F7LJ|FJL7L-J|L7FJ||F7|L-JF7F---7|L-JL--J|F7LJL---7|L7|F-7LJF---7LJLJFJF7JFJ7
|.|||||-L---7|FJL7FJ|FJL7||||F7F-----JLJFJF--7F---JLL-7|L7L-JF7|||F7||F7L--7L7|L-JLJLJF-7||||F-J|F--7F---JL-7F---JL-J|L7|F7L--7L7F7FJL||.|-7
|7.-FJL7..F7||L-7|L7||F-JLJ||||L------7.L7L-7|L---7.F7||FJF--JLJ|||LJ|||F7FJFJL---7F7FJFJ||L7|F-JL-7|L-----7|L------7|FJ|||F7FJLLJLJ||||-7||
L-7-L-7L--JLJL7FJL7LJ||F-7FJLJ|F7F---7L-7|F7||F---JFJ|||L7L7F7F-J|L-7LJ|||L7|F7F-7|||L7L7|L7|LJF---JL-7F---JL-------JLJ-LJLJLJF7F-7F7FJ|-JF7
.LLFJJL7F-7F-7LJF7L-7LJL7LJF-7LJ|L--7|F7||||||L---7L7|||FJFJ|||F-JF-JF-J||FJ||LJFJLJL-JFJ|FJ|F7L-----7|L----7F-7F7F-----------J|L7LJLJFJ7F-L
L.L.L7LLJFLJLL7FJ|F-JF7FJF-JLL-7L---JLJLJLJ|||F7F-JFJ|||L7L7|LJL-7L-7L-7||L7||F-JF7JF-7L-JL7|||LF----JL-----JL7||||F--7F-------JFJF7F-JJJLJJ
|7.FLF7F---7F7LJFJL--JLJFJJF-7FJF7F-------7|||||L-7L7LJ|7L7LJF7F7|F7L7FJ||FJLJ|F7|L7L7|F7F7LJ|L7L--7F7F7F7F---JLJLJL-7|L--------JFJ|L--7|FL7
LL-F7|LL7F7LJL-7L---7F-7L-7L7LJFJLJF------JLJLJL--JFJF7|F7|F-JLJLJ|L-JL-J||F--J|LJFJ-||||||F7L7|.F7LJLJLJLJF7F7F--7F-JL-7F7F7F--7|-L7F7|JJ-|
77--JJ-LLJ|F7F7L----J|FJF7|7L7FJJF-JF7F7F--7F7F7F7LL-J|LJLJL7|F7F7L-----7||L7F7|F-JF-J||LJLJL7||FJL--------J|||L7FJL---7LJ|||L-7|L7LLJLJ7LF-
|-7JL|.F|JLJLJL7F7F7FJL7|LJF7LJF-JF-JLJLJF-J|||LJL-7F-JF7F7FJFJLJ|F-7F--JLJFJ||||F7L7FJL--7F-J||L----------7LJ|FJL--7F7L-7|||F-JL7|.LLL-|.|J
JJF7JFLJ||F----J|LJ||F7||F-JL-7L7FJF----7L-7|||F---JL--JLJ|L-JF--JL7|L--7F-JFJ||||L-J|F-7FJ|F7||F7F7F-----7L-7||F--7LJL-7||||L7LLLJ--7|F-7L.
||L7.|7|FFL-----JF7LJ|||||F--7L7LJFL---7|F7LJLJ|F-7.F7F7F7|F-7|F7F7||F7FJL7-|FJ||L--7||FJL7|||||||||L----7L--JLJ|F-JJF-7|||||FJ77-JF|77|LJ7J
7-FJFF-LLF-------JL--J|LJLJF7L7|F7F----JLJL----JL7L7|||||||L7|LJ||LJ|||L-7|FJL7||FF7|LJ|F7||||||||||F---7L--7F7FJL---JFJLJ||||F-77.JJL|7LJ7.
L7|F-F--LL7F-7F-7F-7F7|F7JFJL-J|||L----7F7F7F-7F7L7LJ||||LJFJL--JL-7|||F7|LJF-J||FJ||F-J|||LJ||LJLJ|L--7L---J|||F---7FJ7LFJ||LJFJ7FL7L||7JL-
|FL.L|.F-|LJLLJFJ|FJ||LJL-JF--7LJL-----J|||||FJ|L7|F-J|||F-JF7F7F7FJ||LJ||F-JJFJ|L7||L--J||F7|L---7L7F7L---7-|LJL--7LJF7LL-JL7FJJ.LFFF-JL...
FJJ77LF--7F|LLLL-JL-JL-7F--JF-JF--------J||LJ|FJFJ||F7|||L-7||||||L7|L-7LJL7F7|FJ7|||F---JLJ||.F77|FJ|L---7L-JF7F-7L--JL-7-LL||L|7F-|LLL7..F
LJJ||JJLJ|F7.|F-------7LJF7FJF7|F--------JL-7|L7L7|||||||F-J|||LJ|FJL-7L-7FJ||||F7|||L7F7F7FJ|FJL7|L7|F7F7L---JLJJ|F7F---J7.F||F|LF-|7JF---7
.|LFJJFLF|-|7LL--7F7F7L--J|L-JLJL--7F7F-7F7FJL-JFJ||||||||F7||L-7|L--7|F7||FJ||LJ||||FJ||||L7LJF-J|FJLJLJL-------7LJLJ7FF---7|L7|F|-FJL|JF||
F-L|J7F--|F77-|F7LJ||L7F-7L7JF7F7F7|||L7|||L---7|FJ|||||||||||F7||F--J||||||FJL-7||LJL7|||L7L-7|F-J|F7F7F-7F-----JF7F7F7|F--JL-JF---L7|.||F7
|F7-7F|L|L-L7-FJL7-LJLLJ.L7L-JLJLJLJ||-||||F7F7||L7|||||||||||||||L-7FJ||||||F7J||L--7||||FJF7||L-7|||||L7|L------JLJLJLJ|LL|FL--.F-L-|-LJ|J
.||F-||-FJ7L--|F7L--7F--7FL7F7F-7F-7||FJ||LJ|||||FJ||LJ|||||||||||F7||FJLJ||||L7|L7F-J|||||FJ|||F7|LJ|||FJL7F------7F7F-7L7.L|F-FJ-|LLLFJ-.J
F|F--F7F|-J.|7LJL7F7|L-7|F7||||FJ|7||||-LJF7||||||FJ|F-J|||||||||||||||F7FJ|LJF||FJL-7||LJ||FJ|LJ|L7FJ||L-7LJF---7LLJLJ-L-J7|||.L7.7|..L|..|
7-J|F|F7|L|.LLF-7LJ|L-7|||LJ|||L-JFJ||L---J|||||||L7|L-7|LJ||||||LJ|||LJ|L7L7FFJ|L-7FJ|||FJ|L7L-7|FJ|FJ|F-JLFJF7FJF7F7JF7F7F--7JJ7F|-J7F|.FJ
F7L|7JLL7-77F7L7L--JF7LJLJF-JLJF-7L7|L7F---J||||LJ-||F-JL-7LJ||||JFJ|L7FJFL7L7L7|F-J|F|L7L7L7L7FJLJFJL7|L---JFJ|L-JLJL7|||LJF-J.FJLJL|7F-|--
L7F|.F|JL7|7LL.L-7F7|L-7F7L--7LL7L-J|FJL--7-LJLJ.F-J||F7F7L7FJ|LJFJFJFJ|F--JFJFJ||F7L7|FJFJFJFJL--7L-7||F7F7FJ-L------J|||F7|7-LF|7LF-JJ-F7|
7||-|F|F-JLJJL7LFJ|||F-J||F--JF7L-7FJL7F--JF7F7.FJF7|LJ|||FJL-JF-JFJJL7||F7FJ-|FJLJL7||L7L-J|L7F-7L7FJ|LJ||LJ7JF7JF7FF7||||LJJ7L|J.|L7.||L|J
L|JL7--J|7.FF7.FL-J||L7FJ|L7F-JL--J|F-JL---JLJL7L7|LJLFJ|||F-7JL7FJF7FJ||||L7FJ|F---J|L7L--7F-JL7L-JL7|F-JL7F7FJL-JL7|||LJL-7JJ|F-L-J-L7FJLF
LJJFJ-F-7F-7FL-LF--JL7|L7L-JL--7F-7|L7F-7F-7F7FJ||L7F-JFJ|LJFJF7|L-J|L7|LJ|FJ|FJL7F7FJJ|F--JL7F-JF--7LJL7F7LJLJF-7F7LJLJF7F7|7JFJF|-|JL7L7FJ
LF|7..LF|F-FF7.LL-7F7|L-J-F7F7FJL7||FJ|FJ|J||||F-JFJL-7|.L7FJ7|LJF7FJFJ|F-JL7|L77|||L-7LJF---JL-7|F7L7F-J|L7F7FJ|LJ|F-7FJLJ|L7-|7F-J|.FJ.L77
FFJ.|JFF|.--JF.7JLLJLJ7F--JLJLJF7|LJL-JL7L7|||||F7L-7FJL-7|L7FJF7|||FJFJ|F7FJ|FJFJ||F7L-7L7F7F-7LJ|L7|L-7|7|||L7F-7LJF|L-7L|FJLL7FJ-|J-JFLJJ
-J7|J|--J||LLF.|L-JF--7L----7F7|LJ|F77F7|FJLJLJLJ|F-J|F7FJ|FJL7|||LJL7L7|||L7||FJFJ||L7FJ7LJ||J|F7L7LJF-JL7||L-J|FJF7FJF7L7||.|L|.LFJJ.F7LFJ
|L-7FJ..F-777.77FJJL-7L7F7F7||||JF-JL-JLJL----7F-JL-7|||L7|||FJ||L7F7|FJ|||FJLJL7L7||FJL-7F-JL7||L7L7FJF7FJLJF7-|L-J||FJL-JLJFFF77LFJFF7J-J7
77JLJJL77L|77-|LLJ.LLL7LJLJLJ||L7L7F---7F-7F--JL-7F-JLJ|FJ|L7|FJ|FJ|LJL7|||L7F--JFJLJL7F-JL-7FJ||7|FJL-J|L---JL-JF7FJ||F7F--77L7J7LL-7F|-7-F
.7L7.FLL|-F7J.|-.|7.|-L7F7F-7||FJFJ|F--J|FJL---7FJL7F7FJL7L7|LJFJ|FL7F7||||FJL7F7|F---JL7FF-J||LJFJL-7F-JF7F-7F7FJLJF|LJLJF-J-JL7|7JF-7L-L-J
.77L-|7FL7L777J|7F-.FFFJ|LJFJ|||LL7||F7FJL7F7F7||F7LJ|L7FJFJL-7L7|F-J||||||L-7LJLJL7F7F7L7L-7L--7|F--JL7FJ|L7|||L---7|F7F7L77--7|JF7L7J|J7L-
F||7FJ.L.L7.J7-7|J-LFFJFJF7|FJ||F-J||||L-7||LJLJLJ|F-JFJL7L7F7L7|||F7|LJ|||F7|-F7F-J|LJ|FJF7L7F7||L---7|L7|FJ|S|F--7|LJ||L7L7JF-7---L|LFFJ7|
-7L-L.FJ.F77JF.|JJFLLL-JFJLJL7LJ|F7|||L7FJ|L-7JF--JL-7L7FJFJ||FJ|||||L-7|||||L-J|L-7L7FJL-J|F||||L7F--J|FJ||L|||L-7|L-7||FJFJ7F-|7L7F-F-J-J7
FL.|-L77F7LJ.L.|F-7-|F-7L-7F-JF-J||||L7|L7|F-JFJF7F7FJFJ|FJFJ|L7||LJL7FJ|||||F-7|.FJFJL7F--JFJ|||||L--7|L7|L7LJ|F-JL7FJ||L7L77L-FJF|J-L7F--7
-77||7|7J|JLJ|.LL7|F-L7L--JL-7L-7||||FJL7||L-7|FJ|||L7L-JL7|-L7|||FF7|L7|||||L7LJFJFJF-JL-7FJFJ|L7L7F-JL-JL7L7FJL--7||JLJJ|FJJ7-JFL|JL|-LJ7|
F|J|FFJ.F|.F-FJ-LJL-J.L---7F7L7-LJ||LJ.FJ||F7||L7|||FJF---JL-7||||FJLJFJ||||L-J|FJFJLL7F7FJ|FJFJFJFJL---7F-JFJL-7F-JLJF||.LJJL7.|7-|LLF7LF-J
F|-LF-7F|F-J-JF-7LFJ7FF---J||FJF--J|F--JFJ|||||FJ||||-L--7F7FJLJ||L-7FJ|LJLJF7F7L7|F7FJ|LJFJL7L7L7L-7F7FJ|F7L-7-LJJ|-J-F7JJ7.|L.FJF--FJ-.J.J
L|.LLJF|.F|J7L|J|7.|7FL-7F7|||FL7F7|L7F7L7LJ||LJFJ|||FF7FJ||L--7||F-J|F7F-7FJLJL-JLJ|L7|F7|F7L7L7|.FJ|LJ|LJ|F7L---7||7.|J|7L77.FJJL7|FJ|.|7|
FJ-7.FJ.--JF7J|7L-|-7-J.LJ|||L7|||||FJ|L7L7FJL7JL-JLJFJ|L7||F--JLJL-7LJ|L7LJF7F7F7F7|FJLJ|LJ|FJFJL7L7L--7JLLJ|F-7FJ-.-FJ.J7F--7|.F-L-|F7.F-L
|L7F7|J7.|7F77L-7LJ.F-|-||LJL-JFJ|||L-JF|FJL7FJJ|||.FL7L-J||L--7JF--JF7L7L7FJLJ||||LJL7F-J7FJL7L7FJLL---J-.LJ|L7||.|7L|LLF-7|-LL.LFJLJ-|7LJL
F-J.FJ.J.FJ7|FJ.777--7JF.JJ|J.LL-J||F---JL-7||JF--J.F-JF-7||F7FJFJF7FJ|FJFJL7F-J||L7F7|L--7L7FJ|||LF--7J|JFJLL7|LJ777-|.L|J-J.LJ7L-7-LF7FJ-7
F7F|L|-FFJJ.L---LJ-7FLFJL77F---JJLLJL-7F7F-JLJ.||.|-L7FJFJ|||LJFL7||L7||FJF-J|F-JL7||LJF7FJJ||F-JL-JF7L---77-L||J-JJ7J.77L-FL.J.|J|77.JJFJF-
FJ7L--77L--7L|77LJLL-JLFJF--7-|JJ|LL-LLJ|||||.JF|FF7LLJFJFJ|L7||J||L7|||L7|F-JL--7LJ|F7|LJJLLJ|F7F-7|L7F--J|LLLJFJJ.L..7JLF-.7LL.FFJ77||J.|.
L-|.|7LJF|F|-FF7FFJJ|J.L--FJJ.||FJ|LJ|LJ||7-LJLJ.JLJ7-LL7|LL7|J-FJ|LLJLJFLJL7F7F7||FJ|LJFLJJF-J|||-|L7||7|L|.|L7-7|F|-LJ.FLJF|7LFFLJ-777-|.|
|JL77-LJF-7L-J|LJF|-|.F77|LLF-|-LLJJ.L..LJJ.|.L|7J|L-7JL||JLLJ-LL-JJ|LJ-LLF-J|LJ|L7L-JFJJ|FFL7FJ|L7|FJLJ--LJ-JJ||---7FLJL7J||J|L7JF|F-FJ-L-L
|J|.L7|7.L|FLFLL-L.||..J7-7.L-|7L7LF|LF77.F--7|L|LFF|..LLJ7LLJJ.L-JF|J.LLLL--JJL|FJ-|---LL--.LJFJFJ|L7.L.FL|-|.LF7L--JJ|.L-J|-|-J.LJL-77|..|
|-J7LJ|FL7.F.|JL77LFL7.L|L--7LL|7|L-JF7JL-||L-7.LF|-777.|J77|J.F|J.7J-F7L|.F|..FJL-7J.|.7.LLFJ-|FJFJFJ7L-7.|.7-JJF.FFL7-LJ-F|77JF7-F|L-777.F
77JF.||77.J-.|--J77|L7.F7J7|LFLLF|7J7.|F|.J7.L|.-|J|JFFJ.||LJ7FFJ-7L7FFF.L7F-F7L-7FJ77|.LJ.FJ77LJ-L7L7.LL--J.|7F7L.FJ||.|L7-L.JFJ77|LJL--L.L
|F-|FFL7-.|F7-7.LL|-J|LLJ-F-FJ7-LJJF-7FL7.FL7F-7---J--.LLL-7F7L||.|JFLJJ.|--.|L7.LJF--J-7.FF--7.L|FL-J7.LLL-FLL--7F7LLL-JFJ7|.|FLLJ7|LLJJJ..
|JJ|LL7JF--LJ7LF7|L|||JJ|-7J|7L.LJ-7.-7FL-LJ-7JJ.LFJ.LL-|FF|LJF---JF-7.7JJ..7-.J-FL|J-J.FJ--7JJ-7||-JJ---L|.LJ|.F|L77J||LJ.FL--J.FJLF7.|F7FF
L|L|.LLL-JL|.|-777-L77J.L-LL|7L|.L7J-L.FL-J.LJL7J-7J-L.LL-77.7-JFJL--|7L|J.--J.LJL-JJ.F7LJ.LJ.L----JLJJ.FJ|...7J-L-L7L|-7L7-LFJJ-|J--|7JLL-L

140
data/11.in Normal file
View File

@@ -0,0 +1,140 @@
..................................................................................................#..................#......................
............#...............................................#.........#........................................#............................
........................#................#.........#....................................................#......................#.......#....
....#............................................................#.............#............................................................
...............................................#....................................................#.......................................
...........................#..........................#.....................................................................................
..................................#...................................................................................#............#........
...................#.....................................................#....................................................#.........#...
.......#.................................#.......#...........#...............................#.............#.....#..........................
............................................................................................................................................
....................................................................#.........#........#....................................................
.#........#.....#.......#..............................................................................#.........................#..........
............................................#...........................................................................#...................
.......................................#.......................#............................................................................
.......#....................#............................#......................................................#...........................
.............#..............................................................#.....#......................#.................#................
...........................................................................................#................................................
.........................#............................#.....#...............................................................................
...................................#...................................#....................................................................
........................................................................................#............................#................#.....
..............#......#........#.........#.........................#................#........................................................
....#...........................................................................................#........................#..................
............................................................................................................................................
............................................................#...............#...........................#........................#..........
...................................................#.............................#.................#........................................
..#......................................................................................................................................#..
...................#....................#..............................#....................#...................#.........#.................
.......................................................#....................................................................................
......#.............................#..............................................#........................................................
...........................................................................#....................#.........#.................................
....................................................................................................................#.......................
#............................#............................................................#...................................#.......#.....
...................................................#............#...........................................................................
........................#................#........................................................#......................#..................
.......#.......................................#.................................................................#..........................
...........................................................#...............................................#................................
..#.................................#................#.......................................................................#..............
.............#....................................................#.........................................................................
.........................................................................#.........#.....#..........................#...............#.......
....................#.......#..................................................................#............................................
..................................#............#...............#............................................................................
.#.......#.............................#....................................#...............................................................
.........................#...........................#.............#................................#..........#.........#..................
.....#.........................#............................................................................................................
...............#............................................#...........#...................................................................
....................................#............................................#.....#.................#..........#........#..............
............................................................................................................................................
.#................#.................................................................................................................#.......
.........................................#..............#......................................#.....#......................................
.....#.....#...............#................................................................................................................
.................................#.........................................................................#.............#.......#..........
.............................................................................#.........................................................#....
.......................................#.......................#............................................................................
.................#.................................#.....#..........#.....................#.....................#...........................
............#..................................................................................................................#............
#...................................#.......................................................................................................
........#..............#..............................#..................................................................#..................
............................................#..............#................#......................................#........................
............................................................................................................................................
...................#......#.......................#..............#..........................................................#.....#........#
................................#............................................................#..............................................
......#...................................#.......................................#...............#.........................................
.....................................#........................#.......#......................................#.................#............
...........#...........#...............................#.............................................................................#......
.#...........................................#.........................................................................#....................
............................................................................................................................................
..................................................................#...............................................#.........................
..................................................................................#.......#................#................#...............
.........................#.......#...........................................#........................................................#.....
.....#..............#......................#.........#......#.........................................#.....................................
.....................................................................................................................#......................
....................................................................................#.....................................................#.
.............#.......................#......................................................................................................
.#......................#....................#.....................#.............................................................#..........
..................................................#.........................................................#...............................
.................................#........................................#.................................................................
.....................................................................................#..............................................#.......
............................................................................................................................................
.......#..................#.............................#........................#.................#.................#....................#.
..........................................................................................#.................................................
....................................#..........................#.........................................#.....................#............
......................#...................#..................................#....................................#.........................
....#........#.............................................................................................................#................
...............................#...............#......................#...............................#.....................................
.........#.......#.......#..................................................................................................................
.#.....................................................#....................................#.............#...........................#.....
...........................................#......#......................#.....................................#............................
.............................................................#..............................................................................
.............................#......#..........................................#............................................................
....#..................#............................................#...............................#.......................................
.........#.......#.............................#.........................................#..................#........#............#.........
.......................................................................................................................................#....
#.............................................................................................#.............................................
...................................#..............................#......................................................#..................
............................#...........................#................#.............................#.......#..............#.............
................................................#.........................................................................................#.
........#.............#.....................................................................................................................
....................................................................#......................................................#................
............................................................#........................................#......................................
.............#...................#.................................................#........................................................
.............................................................................#.......................................#......................
.........#...................#........#.........#........................................................#..............................#...
.#....................................................................#..................................................#.......#..........
................#...............................................................................................#...........................
......................#....................#............#...............................#...................................................
......#.......................................................#...................................#.........................................
.........................................................................#......#............................................#..............
..........#.........................................................#.......................................................................
............................#.........#................................................................#............#.......................
.......................#......................................................................#.............#...............................
................#.......................................#...............................................................................#...
#..............................#.....................................................#......................................................
............#....................................................................................#..............#.......#...................
.....................#..............#............................#..........................................................................
....#.............................................................................#.......................................................#.
.....................................................................................................#.....#.......................#........
...............#..............#............#.............................................#................................#.................
...........................................................#.........................................................#......................
.....................................................#...........................................#..............#...........................
...........#...............#.......................................#...............#........................................................
................................#...........................................................................................................
................#.........................#...............................#.............#.......................................#.....#.....
...............................................................#.............................#........#...............#.....................
..#.........................................................................................................................................
............................#......#................................#.............#...............#.........................................
...........#.........#.............................#.........................................................#..............................
.....#...................................................#..................#..................................................#...........#
..........................................#..............................................................#..................................
.....................................#......................................................................................................
.......................#......#............................................................#.......................#........#.....#.........
.#........#.......................................#.........................................................#...............................
................#................................................................#..........................................................
.........................................#.............................................#....................................................
...............................................#.......................................................................#........#...........
............................................................................................................................................
..............................#.........................#......#....................#.......................................................
.............................................................................................................#..............................
.................#.......................................................................................................................#..
........#................................#.........................#............#.........#......#........................#.................
........................#...............................................................................#...................................

1000
data/12.in Normal file

File diff suppressed because it is too large Load Diff

1295
data/13.in Normal file

File diff suppressed because it is too large Load Diff

100
data/14.in Normal file
View File

@@ -0,0 +1,100 @@
O#O#O#O..OO....#O..........#.#OO..........#..#....O.........O#...#...OOO.O.#.##...#.#..##..O.....#..
#.#....O..O...#..O...O.##.OO....#.#.O..#.OOO.O....#..#..OO......O#...#.#.#O.O..#OO..O.....#.##O...O.
###O#O#O.O#..OOOO.........#.#.O#.OO..#.##.#..O....O....#.O.#..O..O####.#..O#...O....OO..#O.....OO..#
.##.O#.......#....O#.......O.......OO......#...OO#..#####.O.......OOOO###O............#O..#O#.....O.
....O..#.#.#...O......O........O#..O..#O.#O...#O.#O...O#.#...#.O....##.OO.#...........#O.#O#...O....
O...O..O.....#..O.#...O.OO..##..#OO...O........O.O.......O.#O.#..O......O#.......#O.....O.#....#..O#
.....O.OO..OO.....O##.....O.#........##.O.#..O..#OO...#.#..#....#O..#.OO...OO#...#..O.....#OO..#.O..
#..#OOO.O.....OO...O##..........###..##.O#...O.O...#..O#...........OO..#O..#..O#O......O#.#....#.O#O
..#O...#.#OOO..#O.O..#O..#....O......O.O...O##O.....................O..##....#...O...#..#......#....
.#...#.#.#O.O...#.O.#.#O.......#.....O.#.....OO....O.OO.#OO.#...OO..O.O#.OO.O...##...O..#...O#..O.O.
....OO#...###...##O...O.#..OO#..#.......O#....#.#.#..O..O..O......O.....OO#O..#...#....#.#O..#O.....
.OO....O..........O..##.OO#O.....O#.O..O.O...........##O..O......OO.O...O#.#.#.#O...##....#O..O..O.#
...O#.....O....#.........OO........O#.#O....O......O....#..#.##.#.#O##.#......#...OO.#....O.......#.
..#.O...#..#...O...#.#.........OO.........O#......###.#.#.O.O..O..O.#O...O#O.#....O..O...O.#......O.
..#.............#OO.....##...#O....O...#...O....#O..#O...#.#.O..O#.#.....#O#.#O#....#...O...#..###..
#..O.OO...O.......O..O.O..#...O.....O..#.O##....O#.#......#..###.......O.O..#O....O##.O......###...O
....O..O#OO.O#......OO...O#.O...##...O.###.#O.O.O..#.#O...O....OOO.O...O...#....OO.O.##.....O#O##...
#...#OO......O............#.O..#O..OO.O#.O.O...O.....O..O.OOO..O...#......O............O.#..####O...
#..#....O....O..#O.......#.OO#......##....O...#....O#...#O....#...#....O...O....O#O...O.#.O........#
...O........O#....O.#O......#.##....O#.#.O...##O.##..#.....#....OO..OO.....#.#.#####......#.O.......
.#O......#..#O#..O.##.....#.......OO###....O#..O##.O#OO.#.#.OO##.OO.#....#.#.#.....OO....#O#...O....
OO..O.#OO....#...#....#..O.OO....O...O#.....O...#.O.O....O.O...O###....O.O..O.#.O.........O#....O#O#
.O..OO..##.O.#OO.OOO#........#.OO#....O..#O...O#.#....O.O.##O..O.O...O#...........O...O.##O.##....O#
....#...O.#.....O#..#.#...O.OOO.#.....O..O.#O...#O....O.O#.O#.O....#O#......##......O.#.....O...OO#.
..#..O.....O.....#..O...O...#.....O.O.O...OO.O####..O#.##..O#...#..O#..O...O.###..#......O.O.....#..
..O..O#.......OO.#.O.O#.#O..OO..O..#O....#......O.......OO#...#.#.......OOO##....O....O.....#O#..#.O
O#..O.O.......O#.OO....O...#OOO.#O#O.O#....O####.#......#.......O....#O#..#.#.....O..O.#.#O..#.O..OO
#..#.#.O.O..O...O.........O.#.O...OO.....#..#...#...O..OO.O..#...#..O.O.O....O#..O....#O#..O#.O.##..
#.......##..O.O..###O.OO....#OO.#O..O..#.O..####O#.O......O...O#........#.#.O.O.#...##.OO..##...#O..
OOOO#O...##...#.......O....O..OO.O##..O#.O.......O#....O##.O.....O#....O..O.....#.......O#....OO#...
O..#.O#.#.OO..OO.OO..OO..O#...O#.O.....O........O.......#..#..#..O.OO.........O.O.....O.OO...O..O.#.
....OOO......OOO..#....#.O..O#...O....##...O...O##O..#O.#.OO.O.....OO.O#.#...OO..O...##......#..O.#O
.#....#.O.#...O.O.O#...OO..O.#.............OO.#..........O....#..OO#.#.O....OO.OO##.O...##....OO..O.
...OO...O#O#O......##..O.OOO..O.#..O..O#.O#O....#..##..#....O.#.O..OO.O.....#O.O..#.O..#...#.O.#....
O....O.O.....O.O....#.#..O.OOO.O..#....OO.O..O#OO..O#..#.O.O......O.O..O#O..O.#.#...O...O..###.O....
........#.O.O#O#O..#...#.O.O..#.OO.#...O.......O....O.O#....O....O.O..O#..O#....O.....#.O....#O.O.O#
...##.O##..O.......O.OO..#O......O...............#.OO.....OO#....#..OO..O...O..#OO..O..O..##....OO#O
.##.#.#O.......O..O...O...OO...O#....##.#OO..O.....#OO.#.OO.....O..#.O.#......O.O.#.O...#....#.O#...
...O.####.#O#..O..OO.O..OOO#.#O..#O.O#.#O..#.#...#O....#...#.#.#....##..##.......#.O..#OOO...O.#....
..#O..O#O.OO.O.O....O.O...O#....##..##OO.#...#...O.OO#...O..#....O#.....#.O#OO..O........O....O...#.
....#OO.O.#.#.#O.......O..O#........#.#OO.####..O#........#.O#....#..O..O#..#.O.OO.O.......#.O..O..#
.#.#..OO#.#...#.OO...#...O#...##.#......#OO....#...OOOOO#..#O.#.#..#O.....#..OO.#.#....O...O.O......
O#..#OO......#.O.#..O.......OO...O.O...OO..##....#...#.#OOO......#.#.O.O..###O.OO.O...#.O....O...#..
O...O.O..OO..#O#.O.#.O..#..O#..#...#..O.O.........O#..##.....#.O...#O.....O.#.#O.OO.O.#O.O#...O.O#OO
......O..#.....#.O#...O..OO..O....#..O.....#.#OO....O.O.O.#..#.......O...O.O...O.O.O.O.##..##.OO.O..
.....OO##.....O..O#O.#.O.O...#......#.#....OO..OOO#..##.#O..O.#.#OOO.#O...O......OO.##..O.#.O.......
#.....O.......#......O..#..O.#.##...O.O..O........OO...O#O.###...O.#.O.O........#.#O...O##OO#.....##
O.O..#....O....#.O.O#O.O.....O..##....##...O...#O...#.#...O..#..O.......#..#.......##..O...O...O.OO.
.#.#.O.....O##O...###....O.O......#O...OO......O###O.O.......#..............O.O.O#.O......#...O#....
##O....O.......#..O...........O...#...#.O......#..O#.OO..#...#...O.....#......O.O........O#.O#.OO...
O#....O.......O.OO.#..O.........##....OO....#O.#...OOO#......O.......OOO#O.O.O#.#..#..#OO..OO..O...O
.O..#.O....OO.#O....#O......#...#O..O#.O#OO#.......O.#.....#......O....O...#..O#.....#...##..#.#.#.#
.....OO#....#......O.....OO.O#O#.........#.#......O.##....O.OO....##.#O..OO...O#.#....O..OO.O..#.O..
.....#...#....OO......O...#....#OO#.##.O.OO#O.O..O.O.......O...#..O...OO....OOO......O#.....#.O.....
.##..OO##......OOO....O.#.#...O#.O...O...#....O#..#...O.....O...#.....#O....O...OO#.O.OO...O..##...O
O..#OO#O#.##.#....OO.O.....O..#..O..#.#O...#.#.O...#O...O.....O.O....OO........#.#.OO.OO....OOO.#...
O...OO.O..##O..O.....O#...O.....O..#.....#.O..#...#.O.##.O##....O.O.....O#.#.O.O..#..O.....O........
O..O#.O....O#.O#.O.O.O...#O.....#....O..O.OO#O...#.#O#........#..OO#O..#..O.#O.....O...O....#O.#....
...#O.#..#O..O#O........O..O#........O#....##......OO#.#..O.#OO..##..O..........#.......#O....O#.O.#
.O..OO...###.O........O..........O..#.##.##.##.#O...O.##...O..##.##...O###.....#..#.O#O.OOO.OOO#...O
........##.O..#O#.....#..#...O..#.O......#OOOO##......#.O.O.....#.##......OO.#...#.O....O..O.OOO.#..
#.#....#.............OO....OO#.OO#..........OO.OO.O.O.O.....O.....O....#....#.#.#...O...#..##.......
..#O#OO...#.....#.......##O..#O......O.....O.O.O...#.....#O.O...O....#.O...#O.O.#....O...#.##.O.....
.....#...#.#..O.O.O.#....O##O.....O...#O.O....#.....##.O....O...#...O.#.....##....#.O...#......OO#..
O..#......OO#.....OO#..OOO..O.OO.....O.....#....O...O....##.O#.....##.O#.#OO...#.#.......#...#......
.O......O#.....O.O........##.O.O...#.OO...#OO..O#OOOO.....#........#..#.#..O#..#....O.#...#.....##O#
#.O...O#.#.#....##..O..........#.O.OO.#..#.O#....................O.OO.O#.#O..#..O#..#..OO.#O..OO##.O
O#O..O.#..#O...O....#....O##..O.O..#OO.O..O#O...O.OO.....#..O....#.....#..#...#.........O....O.O.#..
..O..O...OO......##OO#....O...#.#.....O...........O...O.#.O.#.OO#...#...OO..O.#.O.#O...#O..OO#.O...O
O..O.#O......O.O....OO..#..#...O...O#...O.OO.....O#...O..O#..O..O..#OO.#..O#....#...##O#.........#.#
O..OO#...#.OO............#OOO....O.O...#........#..#....O........OO#O....#.......##O.O.O#.#..O#O.#.#
#....O.O##..O...#..O#..#.....O.#..O.#..O#.##....O....O......#...#..OO.O..O.#OO...........#OO...#OO..
#.#.#.O.#.O.##.O....O#.#..O#...O....##O.#.O.O...#..O..O..##.O#.......##O..#O#.#.#.....O##O...O.O....
....#.....O.O.#....#..O.........O...O.O.....O#.....#...#..O.#.....OOO..#........O#.#O.....#....O#O..
......#O##.....#O##.....OO..O.O....#.O.......O.OO....#...#.O#OO..#O..O...#........##...#.....#...O..
#O..O.O...#.O##OO#..OO..O..#.#..##.O.....OO.#....O..O#..OO.......#.......OO.#.........O..........OO.
O.......O...#O.......O...#O#.O..#...#.O.......#...#.#..#O.O..........OO##.O.O..#......O...O..O#O..#.
.#......O.#......O#O...O.O....#..#O.O..#.#....O.##O#..O....O..OOO..O....OO......OO..O#O...#....#..#.
.........###.O..O........#...#..OO#.#.....#.#....#.#....#OO.O...O..O...O...O#.......O.........OO.#.#
O#O#.#.#..O..........#O..O.#.O.O##...OO......OO.O#..#O#...O.O...O..##..#.OO##..O....OO..#.OO........
O..O.O#..O#.O......O.O..OO...O.......O......#.O.OO#..###OO...##...#O.OO...OO..##..#O..OO.O....O....#
O....O..O....O..OO..##..OO...O##O...O..#O..O..O#.#O....O.....##..#O...O#.#O##.#.##O...##.#O...O.....
........O.OO#OO.###OO....O....#....O..#....#....#...O..#......O#O#O##.#O#.......O#..#O.....OOO...O..
O.....O.O..O......O.O....O.....O.....................O#..#...O.#...O.O...#..OO###...#...O##.#O......
..#O#.#O##...O..O....O#.##..OO#.O.#.OO..O#.O..##O..#OO.O.#.O##.#OO..#...O#O.O..O..O.O...#..#....O#..
...O.....O......#.O.O...O.#...O..#.OO..O...O..#..#.#...#O.....O...##O..#.....#O.#....O..O..O..O#....
..............OO#.........#.#.O...##...OO.OO..O..O##.#..O..O....O..#...#OO.OOO....#OO..O.#.#O.O.O#..
..#..O.O.O..##O.##.OO...O..##...O.O..O#.#.#..OO..OO..O#O.#O.#.....#O...OO#..O#......#..O......OO..O.
..OOO.O.#...#.O......#..OOO.#.#...O.O.O.O..#....O..O..#....#...O............O.....O..#O...O.O.O...#.
O..O.O..O.O....###OO.#..#.O.O....#.....OO.O#.O#.#.O..OO#O..#.....#.OO..O##..OO.....#...O.#.....#....
..O.O........O..OO#...##....O..O....O.......O....#....O##.......O.#.#......#..O.....O.#.#.....O...#.
.#.O#.O#..#....O.....#.O#.....OOOO..#.O...#.#....#O...O..O...#.#.....#OO#.#.#..#.O.#O...O...O.O#..O.
.O.......OO.O...#.O.OO.O.O..........#.O#........O.#.#.O...O.#O.O....OO...#......#...###OO#.#.O.O#...
..O.......#..O...#..O..##...........#.#..#....#.....#O...O.#.##.O....O#...#..O..##..O............#..
...O....#.#.#..###..O...#O.O#.O.OO...O....O#O#OO..#O..O..#...##.O...OOO.##..O..#......O..O...O.#..#.
#.#O.OO.O.#..O..O.##O.....#O..OO.....O....#.#OO...O.O..O..#O.#OO...#....#..##.........O...#.O......O
....#O.#..O.#......O..OO.#......O.O.O.OO.OO.#OO...O..#OO.O#...#O#...O.#O..O...OO.O.#O..O.O..O......O
O..O..O##....O......#O....O.O....##.OO...O.O#...O.....#O.O....OO......#.O.....#...OO.#...#...#..#.#.
....OO#.O...O.O#..OO..#.....O...O.OO..O.#...O..O..O#.....#.O#...O...#OOOO.##.#..OO...#..........#O..
..O.O.O.O.#...O..#.#OOO.#.#.##.#..O......OO.#O..O.#....#O#.O##......#.##.OO#.O.O.#..O..#O.#..#.OOO#.

1
data/15.in Normal file

File diff suppressed because one or more lines are too long

141
data/17.in Normal file
View File

@@ -0,0 +1,141 @@
544611123131461715341411271353635151515335122158611336476148348778436382521167743275166634227758333614434221217256627554165443316443534211453
663635426335622721222454357737412226878625184546618766386221541247824481537273154322282382741846453432718776246762152515521117666462463411663
612354524523332474575331744121533755141845178365542823533635436387642174875263142884251157553531662556686473615131271611612225163317535235336
125653253617772412346542632322225684713858257336546532261172227746722747852734481581424727526866322686473642322674432414653171415763164456326
665555562351111265554372256156741557361786573468744518468511386121447874621231261811174667753431435313585128116264354732243671665166763622616
112551466667441641521735661226212327685257544662173144332236121114248833576166327232332762318163372477531353843285714526234723745445654325635
435123322133663773175521363812216162716217642441315611716841663691786314816745773276748776774278273436665468544317223164667326376216412233431
264435141335131312176146125537543886555644785428427636657738557378312663547332772116231125476646442162431458414134874622726575372237535655154
364545154252541141623316672245886523325146381175357763649635243331819291673318943757641327227431561428633314383588575423526644166765464443452
455151416331433564614231437611448651423343747325884671845826851779229198687825241364397697325511285546425585431646428627156464162517525146345
452652127777221436712252482488128141578715783711677195492925447493458959457352127938114645319484473337886685553341743438375436467744542623315
623247553511727323562453872141457243445658814137766361583468753845144841547818598571284299579739284541251875121712445181482774143162454337647
372763573336335776678528464741215587377367583821834367973355358188546555664116625221196993128375618522858525548677822564513135265717512622662
253172763757113544653645738377184234722151555365493418221952887361724733586624256861685821238582389155733584447372472561766277212512625556731
762416536512772111187686681585341144828161479815246567859968751338215615251697545999954875346418914752165553473413137816482365114725175225113
221633366173336622434334424366876432136714593567121181567313852436921219848638965181916557592384329988178846531384571134135156824426677626546
563277571323676718636266522115375773478223948397975728363944247952371265465663865465855132415728734843879644124224625114187864744321123546257
255653676375465265114652633858684623891754715837548879661727393199744398543479746842758526664626637475662715882614566723153226377573454775671
271523747172448453267258476516414781448772429621773125922756186776839272345514827945597489995294587726166681264383687375478143868624647317142
724614742641753683143546856375553332313619496763794389396784869263493834326482446622949811228336445949749685661667752315654474223635455435646
327422337665758856461854786578256686918931862895826111851211376673979332667882287868292163832972533957155231685866516363172774261252214146146
122636671216275785588533484514988819678556547243982672347983334842352899842254653443883169289684429567387252649776574438137462378871211327742
126656347544358278257538315565636527122925717263431822676543954634887523333252855945858883678267247373224194975865922244474355217753263225221
115176356227862778382344226172331768417968719572858495954374259223946598253392598383296787547174431125625938648632776152446544442711124574617
425565456682264552872662681825899689687234967157256367247859338949293395365594232347797235473245767572618114564388354442727261123347152267221
142451431653255373335777352517832925213857696683268332264487862738223883455995778223452245527357778388855559657934975878265646782136183563264
573524757765633684584741665929935317165588839947984593856543985599293325547488487276259986283497263822666183673871926262346513686617374513254
517576733855733817216733759675555955764836575534828334737686845858346989675982494665843984644757748761941143835273151592856661567753353773455
277313724278774227424585877178361315389651843423367384937249494758633342393586385835767995685493987386373929412674974493235214314332517152432
425551578474428181417313982771319341589926742292686733946526896979875257434972955565227967668768956566511268233217286591528365565612116478244
651338667675562254181784971853383789531635837346433594922782724563634987694348723638979366468585386952234622753357972435888565724237748317645
367364558635146153355759999172154168865833523369438734534597955829823269887886993232652474868342922722994432531378333681346278336527514856114
434676885812872576728157245589637598869289274924932954527368585874968988548429832723698545487928486927487537617745673849143442888318445637567
517667176172536125746257817856244356275372777455429899867594747848883745835785953277452375975564963432683277697592694482259946423851774735772
417368544537532274234311846349172772928644673896275872774578955869986759453354944458799397825325856556572557553455988861273416524787156417713
325175145877618283357272217378239462945859576233386288923548939539473957356574648485468942658453696738759985545123557599675311764877145213125
557434846623176536772168477653179956367633556738387489764574485536996966684965895843949674934797569647769946824229673198317447262285185576752
721823654713464271637949823917379232799757843367575933685875567665568357683543736767365779794884896855284298468164195227819552521861672268512
467338221147174544258444961946826362783377426473894743576976383688868984735779363588466736739779769893547327625469126646181875327774365186728
328374351871373931689332484213822638622249258493764655665833737345463494363757339465367774849668295723866222877261418632215764516728151753616
136568653257677245885185143574543742877635275933436699695583475876383887533437958979868398833986689276554949426395339222434223448488546735458
163563486432563524923438819218392927735896985455767637557744354384543555556475948768847635798599597373288627264362815181758926578131513588412
361664338741172268761671916234888288835955592495983397373566883476545965344933485586598374497334958285492533937234825229258956622366357548522
184462316433191189443123917663462287873994847359679767488944546853543489375977469659865436774944457334333937247968483141214643697596175783277
233423173535134697149982991597968355489249763747666345379687499947334948737339968467567847368545387625268244779498378346733932872897415747526
575222455666443495633692524359586979778352467744854646996668438673686855763546934366677575989696988746968224563836929257527667136748451654613
583858881359629627385957698293527726339276993475648693353867677598657569674955857634539646858485374559557562738463752749835672594717768271723
371888172228967199311393453726625797457434869938495949836795648896644856868946756459973367558345576946627335556532685532666222666283355562745
731578718871418283568249396247344572768268668969664639835555697758566648584484889545876649775478389846963356746277635599744791818858745157146
263836872437798346453346445326856962232545758388644599497696965888689859855477445799473779543469877436349226366675795672111857734956442318685
156433515746627379697383344698338344365999375736739936537957778566964454457875759647485934734465895587394533469877978578141911929473945458182
563356475157511751393332492528434565894695875369335666798869689965489474876997968757488893935753776836639762647959629294258951588349331236338
385443338914128289217188776982395852495663477866896749695646555866756977598799545779749965738949458845984492728387632279193177984888367281561
268435457166276784225564242777753344548785775994675749499795946455596664476978665699989997639436989885868644376828396898214184164829956863224
681722838887871769572498839824584566445577764634398985964587576466846758594779565986644858898768979356439539939348389586528779611281974737467
544452588665524574444444868287868424587487375583883944995889598489584489675545587997994758945788683763786769966563289564954228712118831715165
367658453135248828132438795545963774376369749767478576989644749659848858679889876759964568497884964863437373685295882289624485141158617726226
474287222464592943161289624237698657494835433854895796497476444749694946597549459665785648999546999963654498469926332843425855634471837681261
762627478662378117797727883638274838986835733873596467646789799469964595547969767576658885677574876594353378896695344939281247833594486974624
375252129153828614514787697786676297763885675958687479998878795875787678998685956756698464657844799975436999854262294323279151935851455978753
587772368922665242219724633564742948699764975586878876469575478965655859579758785589668854578774977454756573836556227789966919459135972527442
261677158161883151325979633963397658383769734395969878456959676665678687566599988989585445879869668666498996537766296688742722738417951653334
873267256111714354456564833998292763659695567645858769774489579656877966899966589654947464454589937469367459497429464373364993388127889285123
472112345415272176914525224465232489857858667874876459999959855587695998676858956594589646774786974745784863376925272487657299992422559743822
116828926796319239592667255278762766584785386454467949664464697695777757978796688988597897497456497357384364974946567963354426612329686514288
768338967427841114894755744276635466347746496595589779879664878688969886579688685568468449568894935688378876655272986234923641315523267312414
365173137549444794149393827737862877674983838679576775494966768979857586559758697669645676976789678938379995384924846856785649485237148731881
367376596777675591428335692245785836577599535657477847549759886686779968898699758559664655854598486485353893947487864839952361958348366967576
652663627789775776852623933324843646978545485854477475868478968995675577965959578876647864844764934987967333544455692652763355941618237112637
225247419981382989842532456632287598555589538495678589745947796558789998697978965569476554688587643554886638668427579249747534944671475266283
867446796216926789169837875998364446838487865989457557547959879856669575765578779777854746764548689969985985675629428553773825815464295648268
778684936279279971965947858878554434778985748598989459599958556655898986656976566859788794685555689787874868537797599577892669272195436887652
141672441882148752964798774978744594337574467947446899498995676767556655659758796689887468849698687654349546474462547286943976788983672377128
877144838339522571585886938393487746453466684869864847948979975975657658579559658875476759969459959758537786744523952384435399124826874973566
468775919737378249567883297872868538344667755974665844667956878885668696975776796588749787669966888556556496779664323836652917226432594534366
514561459118261464769799783432397346554547577684486484778475658766856565995659579789545794768759667436666655748549577647989851893141456333882
378757564863449277884647776924947375888559973848586968979647587665955996787689758959976585944959645594367595996689228377723313794282775427181
558611726339349813137773844946955485889933843775779678994789755599757679875699679598797598755686963669756688832986858842292632975871673661286
274323798857721979478362252222865333448589393686545546785564975655876599697578668879548747657578585784587933699823792868497585214446143448345
616512618311619267277397288883374397845966669768848599989595656965758897876657567774595669649845768578378594984666678935529219573558889364151
786332644488427393922295588825994633839934479468795554695566458657598599865678966856745555867644749536776537483937329492895911362343293428877
486843612732893872635484356443896437886845545584997799844889555567555985578767765497494768996846538687559463372599937849838165142815665527486
116564269859251229444927847624768553786954538388789459476684659496887985559588757667676859864675556546478975659838936489828198836555198216314
166737739444581324891996724797865255867745939495744764677466948567765978869895878697678494847744637966863545527448599444762976595585396716224
884872824463717894416423565485848363349333768486367789564496956954497797566744467998977744996535934943556699469873544788335689713877963712157
421141833629218263182855873458637648897635954665557975566446665675978664989574958666476799464457635937654788729687338776831938647668185217775
644871319744158192999539342434769324679956495593334458994479557699699887457749756969468568779983758977855848663992677778849366678539497746636
753663225236529537133586395884543644549874389764435569468974899487676698584486455495784996645646575345468985968882783292461112353445726436573
675224416543537315233262447858928396733547485669965369997788994866679864947595496565557779597738394685494883683737397462465558579651696358624
363825427222624843259638462453355326639965874883546698759546487548748885677594588899958877439383484959833576595425746288456543982222584537575
732236715274595749511837449826647395264999863453557436596584668969886654986456865844775984466479849565694989369454369258213779535374295872176
766638846645677422274135625897666384869466936693483464588884779674656499886696847478946787485644637377567334765559622926634228184917758578477
362617132378894632789375686284559692565839838785439893384449796777577889974586798689689646988693699534488238454765882591549998128125414874552
341435142265451679197272772526724677425938684489844888745965958589847786844866775454845838796573555745592247883882886786315175657336124141335
642185276386239718373371884929996766775655559569458993489944947975475557587559467964844579336478673758557852586963474793496739439934132362365
763525216254469215792621252672259574299246363675465737846573466955496688769565544898386488373647448654535992483338938939457284318829432654457
452437131625248542855445825445437239569457468435695944648367896567759666446886587377439854338586787859872547953449323482896183178661262867266
884786454717748663998436262983787753756756434798384467557463378486985995674338538638894756994675447544492268269448234347119622475763453341258
676378761886792978936273751999376925677759984783498978786947546558764557965337337776778974594958757687833229969473972411355573999188655327326
716748875413894137813222366468292877783275394675784595584696954683995854895765943494558937737744848269744577466626346315369556573138626148267
244513638122675978278395629246287296737658978583939374659679856493969668798773444874597689584748875487592486885788356463632822429487847525388
526718153765365228781725532925762569726826532454967698597344487375768534476839863553587863963649835645673822688779413387461678316285521125185
841364768431263613964285845752545367456596585846574379793653938387735576966893697555656856365334558428976537883568761334167576858855614418126
578176576734174664291488957624476799827885479432354534965983869445537654869739758639583333754477782937365865667555262424166359355283711212533
242761543162242283856164156432268248984824456587466784353935735695685387843775636634589465645646362936939977435332781387977151757374753122273
126216672855878148795918619265665523468943397537364547459464835556383438864996936965997735736637298977894495494569837631957266466418434576162
641316821176368766124495853718565876293693497597773925484586963478486667738468648688353573259243843349345463927298399516447384633647442583522
116165456245886816181925722432952396945823422589577399889897483487957984796988436757768769326368624254569982354399149724146976885152881323217
246443682546256744861527919789176999736275873549955225325535353758943384387655977833899662477888573769678553614383849996926954626837165768716
254283524317268171815525591589555841257443482999237796644774545479364353496546637952347923349734793333628226582231772748433782373758211476471
614144457711628412141465256992259535247748372888629797347744828587244879663728494497833445536577432362537559879149174242837841717887757513255
512681252736375123232886341781295562266966599896636936237423298843342944598478799322832659232693296228443132626579791599335826252353756216744
432538423856833435713464184455638263596694648445842934476734472884264683372345798279535498426243597328884668877232637334282454375238114857651
564533645388582651641394175855264586211655349989784352972425672932334275957873927468328323458978645279475712362878453218691748616877611138176
472127232452436637246189173656276981827928545948946969275223734748255946974673487554966243438287275772662819267169991635155123358432484256573
635453134656165556351824893737789125262272736493764479376996545655857268694636722677872885286358468234867648846653831776178776317854588835724
577162646237527126432751993319627916282331235974266323829885785759352274843738258673438252668993244698448564761989555781453836253854561816542
267643257487532153137211261393153588426867389776693257954987253795822242649373333725293858594924981222354677413818143921558766233265487547371
124655562846648162314383115688692834741512254349938793593688992276659693756282887586599687333298918126187129692863149617884668435383733713731
152713642564734283876641848658276124174183265981699586837552378578656327786742284658529944229513816872672266272787251137261628754776523432541
221716357643533356243722364755542957761972338579929446544968248793355576623748379488886652526452614619712443517933461838717863738457366667441
777676513574274333266715541646695763844416588753597687567894276455582737966452484899846791925874491997339918934268588115525544818517554126311
441752661127628666515445711175515346267977659371656992637217726488395924864869648998568171456622116727918933755316326561516753151625537657726
665216743346655565185788135422887292127965876171828253829777626371947774946673373178896169375624456544667656532841153642241576467637147342767
136623463222325645551271315162475958627627943534821528877697634643222925545627699243116645347813719715653426387572148171424284224472566115726
152463416355425666142218327843777671253948839262697974881165256679373197318252277164551728556657474494468438334418468674745543673442766172264
415562466777756347416814875424333552762392354264187329972437271969692482183799691881447398883939271235881335626563626633657188317466212666264
235242324523765323366415466685717623118345338581634223937792862712411313189476868739465414933792362183851713423854216645887317574331251563123
471265155575125567486423846883115121581792638362991182523544987864212716429958626234784294122381411313211447151247853248257652226552427156616
462453245361427551576372347388332865234729442784166554623755869471629833763953484143335472824494417628647614321885631247884773356775444624242
256656417224666563726343187841126311752387493976327395811493983435658726464594357675152431871916661754515622665858438347665133537362621535746
436662432622415117547141644847845211371168426573919916655313899672567864281656457263229886699834712156826168452886534331356126411745146773636
113226716356756651221462858775166738652477786277861473768843899433955837797782173198572635988278316237515878231835116571241271371633711556214
263347474731567232236428741522164251512785187548111356318461374451835997933287362647339616412432763742174536525817662363511151525564442755232
154524742213146331646273188664344244322746356335362625284462369675837644126982637342512531877218636236522318774856317327165766322616411537125
155336277264467332223434142548161682616878874532348382377651948415995947771324891518147873747676673235862437178215125615643537662312637222421
666621233315344447454132717317683737584261811251612218267827262613952166393478566556448682264128725572813535162227777633645214343514452421221
114261514712764472671716677211815577671866243352474572774685164752335284132443368755718621162364228838121778735837537355632551275324364555641
564235416611744357573166154765542476827723264521612613278441218534255586825342166276766585538426138835884134236227622235752464251252336445132
213266534424275421416277643712717313685416417288473153473567222546116827386355354748853366477754286753756528368421357651413463663737313416544
524456442222241725231454254464415783288235443253712375137166361347476518581333177436683466272263663125833231761636467272525323351245263652244

694
data/18.in Normal file
View File

@@ -0,0 +1,694 @@
L 7 (#2ac8e2)
D 5 (#14b771)
L 14 (#302602)
U 5 (#14b773)
L 4 (#55b782)
D 6 (#535223)
L 3 (#3bf082)
D 8 (#7be433)
L 9 (#4c1060)
D 12 (#3a69b3)
L 4 (#5f1760)
D 6 (#6832c3)
L 6 (#2f0d60)
U 3 (#0f6c51)
L 5 (#2a1042)
U 7 (#464ee1)
R 5 (#2a1040)
U 5 (#4ce141)
L 2 (#1261c0)
U 11 (#1a05f3)
L 3 (#22a220)
U 6 (#6f3d13)
L 6 (#677110)
D 6 (#38ccd3)
L 6 (#1a3370)
D 3 (#4f3b43)
L 12 (#0086e0)
D 3 (#68f4b1)
L 4 (#5c97f0)
D 5 (#4bee81)
R 8 (#556760)
U 5 (#447f53)
R 3 (#2a7580)
D 5 (#7063e3)
R 7 (#2c84b0)
D 9 (#193141)
L 7 (#1ae260)
D 10 (#4e32c1)
L 3 (#4f4a70)
U 10 (#356251)
L 8 (#7ea0b2)
D 4 (#580771)
R 4 (#7ea0b0)
D 10 (#002e51)
L 12 (#0f93b0)
D 5 (#024911)
L 9 (#16ca20)
U 2 (#14e323)
L 3 (#77c5d0)
U 7 (#4db283)
L 8 (#7b4722)
U 5 (#1f8db3)
R 8 (#0a5fd2)
U 3 (#3dd443)
L 11 (#5ad430)
U 11 (#33f903)
R 5 (#5ad432)
D 7 (#1f0493)
R 14 (#4e8c52)
U 7 (#28bcc3)
R 3 (#4f1792)
U 5 (#31ad71)
L 11 (#196172)
U 6 (#6707d1)
L 11 (#556db2)
U 3 (#6707d3)
L 6 (#457dc2)
U 3 (#31ad73)
L 8 (#01d4d2)
U 4 (#525cb3)
L 6 (#225382)
U 12 (#0fc663)
L 4 (#701292)
U 5 (#0fc661)
L 7 (#0398a2)
U 8 (#525cb1)
L 2 (#46ac42)
U 5 (#6c89c3)
L 8 (#320b70)
D 3 (#319c33)
L 5 (#7b0110)
D 11 (#319c31)
R 5 (#4286b0)
D 4 (#2db113)
L 8 (#806100)
U 14 (#5c7523)
L 4 (#1a96c0)
U 8 (#40b8d3)
R 8 (#5bab20)
U 6 (#43c6f3)
L 8 (#3a4b90)
U 5 (#3e3133)
L 3 (#679780)
U 9 (#584113)
L 8 (#559c02)
U 7 (#60bf53)
L 4 (#5aca62)
U 8 (#4d0163)
R 9 (#2237e2)
D 5 (#106f13)
R 12 (#5c2362)
D 8 (#80b7d3)
R 7 (#26b6b2)
D 6 (#08d3b3)
R 14 (#59afa2)
U 4 (#241333)
R 9 (#0c0eb2)
U 3 (#28a8c3)
R 4 (#47b022)
U 12 (#279703)
R 7 (#47b020)
U 5 (#4e01a3)
L 5 (#6c4722)
U 5 (#607023)
R 5 (#609b62)
U 5 (#6ec7a3)
L 9 (#152722)
U 6 (#022cf1)
L 14 (#481a02)
U 5 (#7ce951)
L 5 (#4316f2)
U 6 (#0f1061)
L 2 (#2b14e2)
U 3 (#3e10c1)
L 12 (#435d72)
U 2 (#6d75e3)
L 8 (#4a4142)
U 8 (#5ec183)
L 12 (#5a9f02)
U 8 (#390f33)
R 8 (#655e52)
U 11 (#757e23)
R 10 (#031912)
U 7 (#10ea33)
R 14 (#4a55c0)
D 6 (#1d2fc3)
R 9 (#7aa260)
D 12 (#07c993)
R 9 (#315c00)
U 8 (#88b083)
R 5 (#52fb50)
U 5 (#2b4ed3)
L 9 (#428cf0)
U 6 (#0225f3)
R 9 (#36f490)
U 6 (#0225f1)
R 7 (#595110)
D 4 (#374603)
L 4 (#44efe0)
D 6 (#2b1b03)
R 4 (#664590)
D 7 (#2b1b01)
R 5 (#1bfe40)
U 6 (#2c7a81)
R 2 (#3bc8f0)
U 9 (#416101)
R 10 (#003f10)
D 7 (#3a4a51)
R 2 (#003f12)
D 5 (#4ba511)
R 3 (#5190e0)
D 3 (#400191)
R 12 (#1a09a0)
D 8 (#3aef23)
R 11 (#0cb780)
D 10 (#6a6393)
R 9 (#561c80)
U 10 (#124da3)
R 6 (#2b0af0)
U 8 (#563841)
R 12 (#73b520)
U 3 (#199441)
R 5 (#73b522)
U 4 (#47d3d1)
R 4 (#70a9a0)
U 8 (#18f861)
L 4 (#18de92)
U 3 (#5bc8a1)
L 12 (#59e082)
U 2 (#4aacb1)
R 12 (#0b5a82)
U 6 (#708aa1)
L 5 (#3902b2)
U 5 (#171153)
R 5 (#3745f2)
U 5 (#081ad3)
R 5 (#45f1c0)
D 8 (#527f53)
R 6 (#45f1c2)
D 6 (#47e013)
L 6 (#3745f0)
D 4 (#01abd3)
R 8 (#51f1e2)
D 8 (#6aa421)
L 5 (#6114f2)
D 7 (#786041)
R 5 (#31b050)
D 3 (#4f62d1)
R 10 (#5ba7a0)
U 8 (#14c261)
R 4 (#2d27d0)
U 7 (#2cd791)
R 4 (#2db660)
U 5 (#7a4801)
R 9 (#19e300)
U 5 (#17adf1)
L 10 (#19e302)
U 10 (#63c5a1)
L 2 (#6881e0)
U 6 (#2ba711)
R 12 (#148ef0)
U 6 (#1a9ba3)
R 9 (#0597f0)
D 8 (#4f1ee3)
R 10 (#4dd080)
D 4 (#33a753)
L 4 (#3fb6d0)
D 3 (#1ebdb3)
R 10 (#0b0872)
D 8 (#0e1853)
L 10 (#3547f2)
D 5 (#21e0e3)
R 4 (#52cee2)
D 5 (#3b66c3)
L 10 (#5b91a0)
D 6 (#26bac3)
R 11 (#222710)
D 2 (#2d5211)
R 7 (#44f020)
U 12 (#505ed1)
R 3 (#358270)
D 12 (#505ed3)
R 5 (#16c910)
U 7 (#36a931)
R 12 (#849ea0)
U 6 (#36a933)
R 10 (#1e8c20)
U 10 (#55b611)
L 11 (#2cded0)
D 5 (#5f5281)
L 12 (#00e5b2)
U 5 (#4a2981)
L 3 (#379182)
U 8 (#3e19a1)
R 6 (#644222)
U 9 (#0f4fe1)
R 6 (#570b02)
U 7 (#551e33)
R 7 (#07ea32)
D 5 (#35bb93)
R 4 (#0a12d2)
D 4 (#0cb943)
L 4 (#3b7242)
D 7 (#28d521)
R 7 (#2d9d60)
U 10 (#7332e1)
R 3 (#44d090)
D 4 (#7baf51)
R 7 (#01b8e0)
U 4 (#1b4e01)
R 6 (#0b27b2)
U 3 (#642a61)
L 4 (#0b27b0)
U 6 (#21beb1)
R 4 (#64df80)
U 7 (#08c4b3)
R 10 (#626c00)
D 6 (#34e6b3)
R 5 (#06b262)
U 4 (#6e38c3)
R 5 (#06b260)
D 4 (#710243)
R 5 (#05c140)
D 4 (#1e5571)
L 15 (#54bee0)
D 6 (#0a4df1)
R 6 (#1f4bd0)
U 3 (#0a4df3)
R 13 (#4057c0)
U 11 (#701d41)
R 6 (#16f352)
U 4 (#449eb3)
L 15 (#69f132)
U 6 (#449eb1)
R 15 (#337df2)
U 6 (#2a2871)
L 6 (#3946a0)
U 6 (#112121)
R 15 (#107a70)
D 5 (#66a2e1)
R 2 (#4b4f50)
D 12 (#277781)
R 8 (#32cc40)
D 3 (#1184e1)
R 5 (#439160)
D 8 (#43e2d1)
R 3 (#496410)
D 2 (#0fb6d1)
R 9 (#12a250)
D 12 (#2abc23)
R 4 (#123e22)
D 15 (#834853)
R 4 (#123e20)
U 4 (#453473)
R 8 (#0281c0)
U 12 (#27c921)
R 7 (#543410)
U 3 (#2cd3a3)
R 5 (#3bdd30)
U 3 (#73d693)
R 13 (#2bfb40)
U 6 (#3f93d1)
L 13 (#1f66f0)
U 8 (#3e3911)
R 6 (#1f66f2)
U 10 (#137901)
L 8 (#3ea9b0)
U 3 (#0f6451)
L 10 (#2ea050)
U 8 (#450f13)
R 14 (#1758c2)
U 4 (#21cd73)
R 2 (#1758c0)
U 9 (#39b8e3)
R 14 (#0255c0)
D 4 (#290d23)
R 4 (#0ad710)
D 9 (#0a59f3)
R 8 (#3b9950)
D 4 (#7bae53)
R 11 (#3e54a0)
D 8 (#753163)
R 9 (#4dc1b0)
D 6 (#2c5541)
L 2 (#564600)
D 13 (#292593)
L 8 (#5b16b0)
D 4 (#292591)
L 4 (#21f3f0)
U 4 (#2c5543)
L 8 (#0bafd0)
D 4 (#4cda43)
L 10 (#6241a0)
D 5 (#5e31a3)
R 10 (#1c5f90)
D 3 (#4e18a1)
R 7 (#2445d0)
D 9 (#24fc71)
R 6 (#299cc0)
D 6 (#37a491)
R 7 (#299cc2)
U 6 (#43e8d1)
R 10 (#2445d2)
U 9 (#410ad1)
R 10 (#67e350)
U 8 (#5d9801)
R 9 (#12bd80)
D 8 (#30b691)
R 15 (#2ebe00)
D 2 (#6062d1)
R 5 (#113860)
D 13 (#55fa81)
R 8 (#657e80)
U 11 (#6be1c1)
R 9 (#3d83c0)
U 2 (#83eee3)
R 11 (#0755a0)
U 10 (#389d53)
R 6 (#669170)
U 10 (#246853)
R 13 (#26ef30)
D 10 (#362743)
R 6 (#0a7380)
D 8 (#0b2353)
R 8 (#370cd0)
D 10 (#2d3c43)
R 14 (#72d862)
D 8 (#5dc733)
L 5 (#72d860)
D 8 (#034b23)
L 6 (#1d5e70)
D 7 (#163871)
L 4 (#085d00)
D 9 (#5c3901)
R 3 (#5c2d00)
D 8 (#1eead1)
R 12 (#189f80)
D 4 (#12f0c1)
R 5 (#612270)
D 3 (#24db21)
R 9 (#120470)
D 12 (#645371)
R 3 (#4c8030)
D 11 (#28ed73)
R 3 (#491000)
D 10 (#3e0563)
R 8 (#181d10)
D 6 (#139513)
R 6 (#171f80)
D 3 (#467203)
R 7 (#171f82)
D 12 (#3f62a3)
R 5 (#181d12)
D 4 (#2d1f13)
L 9 (#333730)
D 2 (#2eef11)
L 10 (#84f660)
D 4 (#386021)
L 3 (#491a90)
D 7 (#849781)
R 6 (#491a92)
D 3 (#2e2731)
L 6 (#3403a0)
D 6 (#588431)
L 10 (#6dde22)
D 11 (#4b8081)
L 4 (#0770b2)
D 4 (#525a71)
R 7 (#106a92)
D 10 (#12b753)
R 4 (#06ce12)
U 10 (#2da5b3)
R 5 (#7eb4d2)
D 6 (#2da5b1)
R 3 (#21deb2)
D 8 (#12b751)
R 12 (#333f42)
D 12 (#4df5d1)
L 7 (#1e5502)
D 3 (#3b11d1)
L 8 (#2add42)
D 5 (#2a2461)
L 6 (#2add40)
D 7 (#3332c1)
L 3 (#0e2cd2)
U 7 (#756e81)
L 7 (#4756b2)
D 5 (#4d0ca1)
L 3 (#56ef42)
D 11 (#3d05a1)
L 4 (#46a2c2)
U 6 (#5bdcb3)
L 5 (#2e3fe2)
U 11 (#781b83)
R 5 (#4f8f62)
U 3 (#21dae3)
L 3 (#3e9a92)
U 2 (#1add33)
L 9 (#3732e2)
D 12 (#07f113)
L 2 (#0c88b2)
D 10 (#853513)
L 8 (#0c88b0)
D 8 (#091c53)
L 4 (#326e32)
D 3 (#2a2593)
R 4 (#642632)
D 13 (#6a4c83)
L 4 (#6a1472)
D 6 (#082b33)
L 3 (#47d362)
D 8 (#48ba61)
L 7 (#300792)
D 5 (#6148c1)
L 8 (#0100d0)
U 11 (#20efd3)
L 6 (#377920)
D 11 (#7895f3)
L 4 (#3a8d50)
D 3 (#7895f1)
L 12 (#26a8b0)
D 7 (#20efd1)
L 7 (#0e6f20)
D 4 (#6390c1)
L 9 (#03cd40)
U 8 (#0ffa71)
L 3 (#151ed2)
U 12 (#147cd3)
L 7 (#843392)
U 6 (#147cd1)
R 10 (#1299f2)
U 11 (#0736e1)
R 11 (#654672)
U 8 (#2465b3)
L 4 (#38ffb0)
D 4 (#0b0b53)
L 13 (#2a0df2)
U 4 (#72d2c3)
L 4 (#2a0df0)
U 3 (#0f7b73)
L 12 (#38ffb2)
U 2 (#2a4ba3)
L 11 (#66dd22)
D 3 (#2577b1)
L 5 (#6a82b2)
D 3 (#516653)
L 7 (#093060)
D 12 (#79ad63)
L 6 (#093062)
D 5 (#348f83)
L 4 (#83e322)
U 8 (#0da4d3)
L 4 (#251e42)
D 6 (#356721)
L 15 (#060892)
U 6 (#304a61)
L 3 (#226e72)
U 5 (#021bb3)
R 9 (#7123c2)
U 4 (#021bb1)
R 13 (#1a4822)
U 6 (#304a63)
L 3 (#157e22)
U 14 (#56fb41)
R 7 (#4a75b0)
U 7 (#4578a1)
R 6 (#7eeb50)
U 6 (#3b6d01)
L 11 (#0ba9e2)
U 5 (#8a0ba1)
R 11 (#3ac130)
U 6 (#3faf21)
R 6 (#6a9062)
D 7 (#3460e1)
R 15 (#6a9060)
D 3 (#421101)
L 15 (#3838a0)
D 7 (#58cf13)
R 6 (#715670)
D 7 (#6b3d83)
R 4 (#715672)
D 10 (#366933)
R 8 (#591620)
U 10 (#2f6453)
R 4 (#8295e0)
U 10 (#3cb3f1)
R 9 (#117f00)
U 10 (#497781)
R 5 (#1ce3c2)
U 6 (#14c9a1)
L 13 (#1ce3c0)
U 4 (#3060a1)
L 8 (#2f4880)
U 5 (#3b2431)
L 4 (#2f4882)
U 12 (#236031)
L 7 (#251ac0)
D 5 (#0052b1)
L 4 (#3d5a30)
D 4 (#372e11)
L 12 (#58bf50)
D 10 (#5db081)
L 2 (#1582a2)
D 4 (#60b921)
L 7 (#39fe02)
D 8 (#657e23)
L 3 (#291c72)
D 7 (#657e21)
L 2 (#393a72)
D 7 (#3196a1)
L 9 (#10c4f2)
D 8 (#650ba1)
L 10 (#052452)
D 4 (#0980a1)
L 13 (#301942)
D 10 (#18a341)
L 4 (#60a8f2)
D 10 (#73c9b1)
R 6 (#006630)
D 6 (#0c04c1)
R 5 (#35f0f0)
U 6 (#7db103)
R 7 (#34c280)
D 9 (#7db101)
L 6 (#25a890)
D 3 (#1bf0a1)
R 12 (#17e9c2)
D 8 (#018d01)
L 12 (#7c9bc2)
D 6 (#5e24b3)
L 4 (#0c6ce2)
U 5 (#4fa793)
L 4 (#5a26b2)
U 7 (#14b5d3)
R 4 (#330d12)
U 5 (#1b3311)
L 8 (#20c112)
D 9 (#1c8ed1)
L 10 (#0f11d2)
U 11 (#5f2d41)
R 4 (#76d4f2)
U 11 (#2b92f1)
L 4 (#184052)
U 8 (#63a4f3)
L 6 (#24fea2)
U 3 (#4fc613)
R 6 (#453b70)
U 7 (#52e7c3)
L 3 (#307370)
U 10 (#1edca3)
L 7 (#75aee2)
D 3 (#1d4c43)
L 3 (#6e3de2)
U 13 (#10edc3)
L 8 (#293ec2)
D 13 (#68f773)
L 8 (#373872)
D 6 (#6a7d73)
L 3 (#5f5212)
D 5 (#649e01)
R 6 (#53fed2)
D 6 (#6bc451)
R 4 (#04d680)
U 6 (#25e6f1)
R 8 (#1e60d0)
D 3 (#456061)
R 4 (#1e03f0)
D 6 (#398451)
L 11 (#648390)
D 2 (#15d5f1)
L 7 (#369602)
D 10 (#5054a1)
L 7 (#53bcc2)
U 15 (#5054a3)
L 5 (#0fd012)
D 15 (#2915a1)
L 4 (#0b9c02)
D 4 (#0f1fd1)
R 11 (#79edf2)
D 5 (#63a4f1)
R 7 (#011ec2)
D 5 (#3452d1)
R 8 (#2ccf12)
U 5 (#790d01)
R 8 (#3f7272)
D 8 (#06e261)
L 7 (#28e202)
D 15 (#4c0ee1)
L 3 (#1161b2)
U 15 (#433e91)
L 6 (#74d6b0)
D 5 (#45c0f1)
L 14 (#74d6b2)
D 7 (#339011)
L 3 (#038fa2)
U 2 (#2a3983)
L 10 (#06bc22)
U 3 (#10e1f3)
L 10 (#27a8d2)
U 9 (#19d373)
L 4 (#748b22)
D 6 (#65bbe3)
L 9 (#04b122)
D 4 (#3d31f1)
L 13 (#010b22)
U 10 (#05d651)
L 4 (#74a772)
D 14 (#05d653)
L 8 (#14e752)
U 3 (#4534a1)
L 9 (#8a99e0)
U 11 (#0e0ab1)
R 5 (#421542)
U 7 (#2a3981)
R 8 (#6c1e52)
U 6 (#1d91e1)
L 13 (#4a4082)
U 3 (#3e5c83)
R 6 (#0ebd62)
U 10 (#21a223)
L 5 (#153ec2)
U 6 (#502eb3)
R 5 (#1299a2)
U 13 (#461143)
L 6 (#691cb2)
U 3 (#1d6533)
L 4 (#495722)
U 2 (#3c61e3)
L 11 (#0cc8b0)
D 4 (#1fd653)
L 7 (#0cc8b2)
D 5 (#340273)
R 7 (#2c7ec2)
D 8 (#699123)
L 4 (#2c7ec0)
D 2 (#69da23)
L 6 (#39c2c2)
U 15 (#18e693)
L 5 (#3d0762)
U 4 (#043ac3)
L 8 (#49ca22)
U 7 (#057783)
L 6 (#57e6a2)
U 12 (#2d7e63)

777
data/19.in Normal file
View File

@@ -0,0 +1,777 @@
ft{m<1347:R,m<1967:A,A}
gbv{x<51:R,R}
lks{m<2978:kgl,a<680:ntb,x<577:hzp,mg}
db{a>2314:R,A}
rml{a<479:R,m>2803:A,R}
ncv{x<3567:R,a>3316:A,s>1415:R,R}
jsm{m>1434:brj,a>3142:vtk,x<2888:bpt,dl}
frt{s>210:R,a<1114:R,R}
zjq{m<195:A,R}
lv{m<1450:A,m<2105:xll,R}
kp{x>1194:A,x>1146:A,R}
nl{a>2317:A,A}
lrf{s<493:mpt,R}
cxf{x>2054:ktk,x<1860:qmg,lzk}
xb{s<1524:A,s>1602:A,R}
zz{x>3135:svb,x>2399:R,A}
ds{a>2495:R,x>924:R,pm}
zxf{m<2815:stp,a<2750:jpf,R}
fg{s>2319:A,A}
jb{a>3248:rm,s<3444:gdc,A}
trb{s<3836:A,x<1957:A,R}
nrk{x<995:bmc,R}
hk{m<968:btp,s<1545:nl,m>1092:npt,tlg}
ff{x<1733:R,s>2152:A,A}
msh{a>3446:R,A}
qt{m<1335:A,s<2757:tx,R}
ksm{a<3350:gr,R}
fsm{x>2098:R,a<360:R,R}
rff{m>312:R,A}
ddm{s<2671:R,trz}
bd{s<3121:A,R}
nr{s>2748:vmb,s<2491:xd,fbm}
fdn{a>659:cv,x>2325:xc,rt}
rcj{a<453:R,a<847:A,a>993:A,R}
brf{x<1485:A,R}
mzt{x>3019:A,m>306:R,A}
pc{x<2446:R,hc}
xf{a<3423:ln,x>1473:zjc,x>1440:R,cgx}
xn{s<3870:A,R}
qzn{m>1697:A,m>1501:A,R}
cdl{s<3605:A,s>3831:R,s<3743:dph,A}
mbq{x<3235:A,s<2567:A,s>2647:R,R}
sqt{x>2051:R,a>2036:A,s<1695:R,R}
tc{s<952:A,x>3099:R,m<3427:A,R}
kt{m<1388:jg,m>2013:mxm,xdr}
jxb{s>3521:R,x<851:A,x>1017:A,A}
qx{m>404:A,x<2423:R,a<2849:A,R}
ptj{m<3906:njh,R}
hd{s<566:R,m>1077:A,A}
bvh{s<1046:vd,x<2962:bz,m<1264:R,cqj}
zgs{m<388:A,x<1595:gqn,s<3635:R,khx}
pj{a<2319:R,a<2479:R,x<1521:llm,R}
kx{m>3616:kqd,x<1472:R,m>3298:kg,A}
mk{a<3610:R,m<2065:R,R}
jd{x<756:A,x>802:vcg,zgr}
qbq{x<1667:A,m>1173:R,x>1697:R,R}
cn{m>3371:nqj,m>3154:A,a>1170:R,sbx}
zrk{a<3201:A,m<1459:R,A}
qtz{m>517:nt,m>212:vpq,x<3049:pl,hb}
nhk{x>455:A,m<3081:A,s<3489:A,A}
rfd{m>1850:A,A}
nns{s<1799:A,A}
dm{s>95:A,R}
vz{m>3248:vb,nkr}
dcz{a>2149:km,R}
rrl{a<3198:ptk,s>3017:zgs,x>1554:hht,cht}
hs{m<673:A,R}
vf{s>1621:A,R}
qf{x>538:A,a<427:jc,lhf}
xbh{m>2071:jjb,s<582:xpc,a>3248:hpr,npd}
fz{m<1150:A,s<200:R,s<371:A,A}
gd{m>592:vt,a>1033:R,a>636:nlj,R}
znb{a<3808:A,x<3379:A,m<2068:A,A}
st{s<2677:R,a>1494:R,s>3382:A,R}
zf{m<3760:A,s<3288:A,R}
hh{s<2789:mz,jb}
tp{s<2498:R,A}
kz{a>2094:vqx,m>414:hzc,kzp}
xc{m>2388:nqp,a>432:A,x<3265:xch,A}
zgt{m<3336:A,s>2892:A,a>3062:R,A}
gtz{s>2688:tg,dp}
tf{m>3151:A,s<1440:A,R}
mxm{a<3193:A,x>816:R,a<3543:gqk,R}
fsp{a<3234:A,A}
tzf{s>2391:A,x>877:R,s>1154:A,R}
xgh{s>1188:mkk,a>2481:jm,kdc}
mjr{a>2688:zf,s>3239:gq,x<1313:R,fkc}
tvs{m<3240:gz,m<3630:clp,mjr}
zxp{a<2636:R,m<2968:R,a<2656:R,R}
kzp{a<2031:A,R}
rjl{s<592:frt,A}
vbz{a>2594:R,R}
klg{x>3362:A,s<1485:R,a>3704:R,A}
gr{m>1117:A,R}
nm{m>2633:R,A}
qkc{x>2875:R,R}
tsb{a<3865:A,x>2852:R,R}
lhm{s>3225:xs,a<2729:pj,m>3065:kx,xf}
blb{m<1562:A,R}
nsz{s<2211:jn,x<2387:nb,R}
tsj{x<3454:A,a<3740:R,x>3695:R,R}
bxk{x<487:A,m<3001:jzs,m>3535:R,zgt}
qq{a>2875:A,s<1314:A,m<982:A,R}
ksq{s<1649:R,x>2393:R,R}
hdz{x>3225:R,s>2321:A,R}
hp{m<1838:R,s<2302:A,x<588:R,A}
kf{a>748:A,A}
vb{m>3549:gvm,m>3403:R,A}
nx{s>486:R,A}
vtk{x<3172:tr,a>3353:nz,jr}
mlt{a>2987:A,s>286:A,A}
mv{s>2214:A,s<1986:A,s<2104:R,A}
fs{m<551:nll,hrj}
nh{s<3247:R,m>693:A,a>2956:A,R}
vpn{m<1447:R,gf}
bpd{a<3269:A,A}
mq{m<404:A,x>243:A,A}
jjx{x>3138:A,a>670:R,s>3088:R,A}
pn{s<1297:ds,m>1065:bj,bmf}
xp{x<1214:A,a<3436:R,m>866:R,A}
mpt{s>266:R,a>2276:A,A}
vk{m<1307:hd,tsj}
ql{a<1594:A,A}
bsb{m>2463:lks,x>626:tz,kk}
fn{a>1154:A,m<2652:R,s<1641:vtg,pzz}
knc{x<883:rfg,s<731:lv,s<1274:jkh,vdh}
kc{x<1160:jt,a>2721:qzg,m>1522:lrf,dg}
px{s<239:R,s>302:A,R}
bzf{m>3078:tln,s>575:gp,ml}
qfg{x>1167:R,x<1086:R,a>705:R,A}
ffn{a<1088:mbb,m<520:sb,vf}
jhg{m<3331:R,R}
llm{s>2346:R,a>2587:A,R}
xdr{s>3119:jxb,x>714:R,m<1724:zxl,hp}
cf{x<369:A,x<488:R,a<1340:A,A}
pvt{s>301:A,x<1488:A,a>3250:A,R}
dpm{x<3365:A,m>3696:A,R}
dhk{a>611:R,m>497:A,a<349:A,R}
dg{s>517:R,m<1250:fz,R}
ph{x<3427:R,a<2511:R,A}
hsx{x<1317:R,a<970:bzc,a<1412:cp,A}
mzb{m<2475:A,a<3151:R,s<101:A,A}
jtj{m<657:R,m<1047:R,s<1082:R,R}
xv{x>1004:A,s<1572:R,R}
cx{a<2527:A,A}
zn{m<2693:A,s>2559:R,m>3231:A,A}
nll{m<187:R,a>3715:A,R}
dh{x<1366:A,fq}
dr{a<3764:hf,a<3914:A,m<3290:A,R}
qz{s<257:R,fsp}
xfl{x>3188:A,x<2536:R,s<2342:A,A}
cz{m>3153:R,x<1136:R,x<1184:A,A}
qcf{s>2754:kmb,R}
fm{m<1085:R,a>2556:A,a>2420:R,R}
ld{s>737:A,s>489:R,a<88:A,R}
rfg{s<1129:ft,m>1514:mk,m>934:jpb,ggs}
lzh{m<1134:R,m<1308:R,A}
ckk{s>1464:lzh,s>1179:qq,R}
bvc{x>510:kt,m>1338:hh,pmm}
xtr{x>1686:A,R}
gxb{s<352:R,s<392:A,x>2751:A,R}
npd{a<3087:A,m>1379:vg,R}
hch{a>2219:R,A}
nj{m<2605:R,s<2930:R,R}
cvj{x<1520:R,qtm}
cgx{a<3678:R,s<2581:R,R}
tm{x>2596:A,A}
qtm{s>1379:A,a<2574:R,R}
ftt{s<2273:R,s>3405:A,m<609:R,A}
gqk{m<2274:R,a>3345:A,a<3279:A,R}
xqn{m<2098:R,a<1184:R,A}
qpm{x<2347:rff,x<2776:A,x>2977:A,ntz}
hvj{x<3486:R,A}
tpb{m<2448:lh,rjg}
shq{m>671:R,s>206:A,R}
htg{a>904:A,x>231:R,A}
jq{s<2890:dn,R}
gf{a<1251:A,A}
vl{m>913:ccb,a<1148:tb,s>2525:kbs,qtz}
xhl{s>399:R,a>2578:zxp,A}
ntz{m<273:A,R}
ntb{m<3543:qf,m<3783:lss,jj}
thm{a>1424:R,A}
km{m>3338:R,m>2932:A,x<3299:R,A}
fh{s>1157:xq,vk}
ljt{a>2529:R,m<1762:R,A}
hgv{s<1087:R,m<1627:A,x<1370:A,A}
brj{a>3113:gdz,a<2926:gkc,a<3040:zz,khd}
nz{x>3516:R,x<3380:A,A}
nvx{a>3182:R,x<3714:R,x>3816:A,R}
fx{a>3193:A,nhk}
spv{a>2824:vbl,m>2404:vtb,kqz}
zpn{s>2774:nj,m<2788:jmx,hvj}
cnx{s<1825:R,A}
jkl{a<2564:R,A}
lhf{s>1439:A,s<718:A,m<3252:A,A}
rm{x<225:A,A}
jxz{a<2321:A,a>2367:A,m>185:A,R}
hzq{a>651:R,x>2192:A,a>607:R,A}
jhv{a>3199:knc,s>776:pn,m>1007:kc,bx}
svj{a>3616:R,m>3421:R,m>2865:A,R}
vcg{s>2903:R,R}
vhm{m>1914:R,m<1754:R,x>1550:A,R}
ccb{s>1843:qt,bvh}
qr{x>2395:sv,A}
tlg{m<1031:A,x>2590:xfh,zp}
pt{s>435:A,a<2696:gg,s>170:mlt,xkz}
rj{x>1493:A,m<523:R,s>2867:A,R}
pr{a>2732:A,m<2650:A,A}
hzp{a>1120:kvf,m>3388:mf,hv}
btf{s<3748:xxc,A}
tr{m>717:R,A}
rv{a>672:R,R}
qg{s<2427:R,m<319:R,R}
lk{s<3170:A,A}
ksr{m>3137:gs,a<3314:hbg,s<1465:R,zk}
dbs{m>720:hk,a>2451:mvg,a<2212:kz,frl}
zdx{x<3645:R,s>849:A,A}
gvv{s>3441:R,A}
jlj{x>3003:cl,mcj}
vtb{s<2272:xgh,s>3350:ffz,vpj}
bdt{x<2027:px,x<2238:qh,R}
hbg{a<2847:R,A}
xd{x>2897:rd,a<3376:qr,nsz}
hb{m<77:R,a<1618:A,s>1205:nns,A}
lzj{m>2039:R,A}
ml{a>3118:R,s>304:R,zkv}
mt{s>2057:A,x>3358:npn,xzh}
htv{x>3422:A,a<1058:jjx,s>3318:R,mb}
lrm{x<2442:jxt,s>1388:hcm,R}
zjc{x>1530:A,a>3635:R,R}
kgl{x<688:fn,a<795:prh,dk}
pcz{m>3387:A,x<2362:A,A}
sf{a>690:A,mhf}
gqn{a<3554:A,A}
xfh{a>2277:A,s<2581:A,x<3067:R,A}
nlj{m<379:R,s<2220:A,R}
mcj{a>3825:ncb,x>2185:xjm,m>3112:R,R}
tln{s<565:pvt,a<3200:jlq,m>3598:lsx,A}
xns{m>2818:A,x>1648:R,m<2614:A,ht}
mx{s<940:R,s>1425:A,m>3518:tpn,A}
qgs{s>3234:rml,x>1876:pht,s<2763:R,tfv}
gt{s<3681:A,a<3251:R,R}
rcq{s>317:R,m<747:A,x>1403:R,R}
hzc{x<3241:A,s<1489:A,jbc}
fq{x>1398:A,s>2516:A,m>2301:R,R}
kvf{a<1562:cf,x>248:R,s>1776:qlm,A}
jfj{x<3469:A,a<2580:jz,s<2074:dbj,A}
vdh{s>1624:R,m>1500:rfd,zjn}
mg{s>1357:cn,rjl}
qnt{s<483:R,x>3442:R,A}
mp{s>3114:xqz,bq}
crp{a<3714:R,vj}
kq{m>3155:A,x>1456:R,R}
fhm{x>702:A,a<1104:rcj,zgp}
sl{x<1100:R,a<1423:A,A}
stp{s>2555:A,s>2383:A,s>2339:A,A}
pb{x<247:A,a>2834:fhp,a>2286:fm,R}
kbs{a>1536:zkr,xqb}
chf{s>2200:A,R}
bmc{x<968:A,x<982:A,A}
tjq{x<2908:btn,a<2595:dpm,mzg}
vfr{s>2143:pg,bsv}
bm{m<1791:R,m<1877:R,A}
kv{m>1866:jlj,m<870:fs,x<3127:vm,fh}
jpr{x<3038:R,a>3300:A,R}
gs{s>1177:R,R}
nhz{s>1928:R,s>1173:R,A}
hht{a<3615:msh,A}
mz{s>2285:R,s<2080:lzj,a>2672:gfp,gc}
kg{s>2590:R,R}
jr{a>3221:R,s<1664:nvx,ddv}
jpf{s<2652:A,a>2699:R,A}
cp{s>3057:A,x<1389:R,A}
tpn{m>3810:A,s<1214:A,x<2439:A,R}
vm{m>1226:tj,pc}
fr{m>557:A,a>3034:zjq,R}
gjj{m<3399:qzj,m<3784:cdl,a>2319:btf,ptj}
tjl{m<2439:A,m<3400:R,a<3075:A,R}
jkh{m<1257:jtj,qzn}
npt{s<2730:A,s>3447:R,a<2249:R,A}
xh{a<750:R,x<368:R,x>484:R,A}
sbx{s<2867:R,R}
zpj{s<1876:vpn,sf}
ln{a>3164:R,m<2847:R,m<2960:R,R}
cg{a<2409:R,s>3521:R,m>3415:R,A}
pg{x<2668:bjj,m>3516:htv,dvl}
lzk{m<3217:A,s>3712:trb,m>3591:qrz,A}
qkg{m<422:gx,x<3500:A,x<3738:zdx,R}
vkc{a>791:lnt,tzf}
ktk{s>3706:A,x>2390:R,cg}
dph{x>3090:R,a>2301:A,x<2908:R,R}
rq{x>327:R,x>164:A,R}
gl{s>487:A,a>1655:A,a<1331:R,A}
jmx{a<1052:A,s<2652:A,x>3318:R,A}
tk{s<3036:zpn,skp}
xkz{s<107:A,A}
ncb{s<760:R,s>1392:A,a>3927:R,A}
zv{s<859:R,A}
jzs{a<2665:A,s>2889:R,s>2655:A,A}
zbv{s<2370:npx,szq}
sxd{x<3268:R,a<3101:A,A}
kqd{s>2509:R,A}
fhp{m>943:R,s<3533:R,A}
jcg{a<2636:rgg,s>2865:xtr,a>3473:qbq,qtd}
fv{x>1586:sfh,s>1744:lhm,s<1005:bzf,ppd}
ppd{a>3253:prl,x<1484:zq,m>3222:cvj,mn}
zp{a<2416:A,m<1055:A,a<2598:A,A}
dl{s>1430:fr,ddt}
rvs{x<2743:jng,s<71:A,m>1651:mzb,dm}
lss{a>446:A,x>912:A,s>2317:tpj,dt}
cj{m<2996:A,m>3036:A,A}
vt{s>2338:R,a<1268:A,R}
zxl{x<637:A,R}
jng{m>2074:R,s<55:A,s<103:A,R}
gdc{s>3086:R,x>291:A,A}
jm{a<2685:xhl,rlq}
bst{m>1876:R,s>175:R,a>3154:A,A}
vtg{m>2801:A,s<673:A,m<2719:R,A}
gxs{a<2679:ljt,x>2149:A,s>2360:R,R}
tg{s>3232:gt,a>2631:xp,hfz}
xch{s<1053:R,s>1849:R,s<1395:R,R}
mvg{x<3100:qpm,s>2375:jkt,qkg}
cl{m>2802:cd,s<810:A,rfn}
ptk{s>2833:A,a>2436:sdx,s>2408:xfc,mv}
jj{x<576:A,R}
dvl{x>3429:A,a>954:R,a<621:lk,A}
jpb{m<1263:R,s>1379:A,x>568:A,A}
lsx{x>1481:R,m>3782:R,A}
nk{m>797:R,A}
qs{x<1815:A,a<208:ld,R}
jrr{x<2672:gxs,m<1958:hdz,jfj}
xs{s>3692:brf,x<1496:kq,mnl}
bh{a<1203:A,R}
gpm{m<414:A,x<3045:R,A}
xl{x>2732:kh,s<3328:jq,hzg}
lbr{s>2768:R,m>2649:mbq,jkl}
rpj{a<2149:A,x<2393:R,a<2171:A,A}
jbx{a>2843:bpd,s<571:cz,m<3351:cx,R}
gc{x>209:A,s<2192:A,R}
gp{m>2717:R,m>2542:xhq,A}
btp{m>880:A,x<2832:A,nk}
zx{a>374:R,m>2870:A,x<1136:R,A}
cqj{m<1430:A,x<3333:R,s<1454:A,R}
mzg{m<3447:A,m<3636:A,A}
pcg{a>746:mp,a<342:nsj,a<566:qgs,kck}
cjv{x>97:R,a>1081:ql,m<1933:gbv,nn}
lr{x>984:rcq,x<597:A,m<744:bpm,A}
mn{m<2758:R,R}
mbb{m>592:qfg,qg}
vqx{x<2718:rpj,m<417:fk,ftt}
zgr{m<1436:A,A}
gx{m>266:A,m<109:A,R}
zh{a>1474:A,x<1765:A,m>809:R,R}
rd{a<3284:sxd,a>3557:znb,s<2290:R,scc}
vpq{m<385:thm,s<850:gl,A}
sr{x>3148:R,s>2593:zrk,m>1611:zn,R}
btn{x>2233:A,s>2963:A,m<3546:R,R}
ddv{m<929:R,a<3189:R,R}
lj{s>720:hgv,s<311:A,m>1726:R,R}
dt{s>1007:A,m<3666:R,R}
jn{s>2145:A,A}
qtd{m<1205:A,a>3048:A,m<1281:R,A}
prl{m>3410:R,s<1367:hns,A}
mrg{x<2908:A,s<1375:R,x>3291:R,R}
pmm{s<3127:qlh,m>628:pb,xk}
sb{m>186:jbn,x>1199:R,s>1631:st,sl}
vj{x>3191:R,s<2638:A,A}
xq{x>3521:psx,klg}
trz{x>1532:R,R}
kck{m<2847:hzq,m>3005:R,m>2951:txt,dd}
jqg{x<1371:R,a<2887:R,A}
npn{x<3611:A,a>2239:R,a>2073:R,R}
xjm{s<752:R,a<3700:A,A}
bhj{s<2435:ndb,a>3069:nbp,x<1135:sjg,tvs}
mm{x<427:R,R}
vbb{s<129:rvs,x>2919:xg,x>2355:qz,bdt}
jlq{s<782:R,R}
gvm{s<2807:R,x>3086:A,a>2154:R,A}
vpj{a>2388:fbs,vz}
scc{s>2384:A,A}
bsv{a>993:tm,a>339:mx,x<2540:qs,nf}
fd{x>1200:rcv,x>1108:R,cnx}
tfv{s<2966:A,A}
qzj{s<3758:A,xn}
tz{x<939:ctb,m<1285:ffn,ch}
hv{a>827:A,s>1420:xh,R}
xpv{x<1644:R,R}
khd{x<2613:tjl,a<3080:A,A}
lz{a<2446:pz,jrr}
hfz{x<1227:R,x<1306:R,x>1351:A,A}
tj{x>2413:blb,A}
cd{a<3723:A,s>824:R,x>3620:A,A}
jkz{s<574:R,x<2957:R,s<839:A,A}
bpm{s<309:R,a<2751:R,R}
sjg{s>3133:dlk,qcf}
lnj{s>408:A,m<3185:A,s<382:R,A}
qlm{m>3399:A,m>3160:R,s<2770:A,R}
nqj{m>3601:A,s<2462:A,R}
qmk{a<218:A,m<2581:A,x<1964:R,A}
zkv{a<2439:A,a>2836:R,s>108:A,R}
dbj{a<2726:A,m>2173:A,A}
skp{a>1102:R,x<3363:ks,R}
pl{a>1567:lld,ss}
sdx{x>1582:A,a<2789:A,a>2991:R,R}
kpp{a<3749:R,a>3896:R,a>3815:R,A}
tjp{a>2329:R,R}
jsd{x<1697:R,a<2402:ff,m<3616:R,nhz}
rjg{x<955:zbv,x<1405:bhj,fv}
bpt{a>2950:lrm,m>712:ckk,kft}
rbf{s>3056:R,m>2843:A,A}
jqn{a>2437:A,x>2389:A,x<2155:R,R}
lld{a<1799:R,m>116:A,s>1201:A,R}
hm{x>1051:A,s>3482:A,x>1005:R,A}
bq{s<2735:R,a<1253:R,s>2952:A,A}
mc{m<103:A,s>2774:A,jxz}
mb{m>3733:A,a>1638:A,x<3043:R,A}
jkt{a<2628:ph,A}
xll{m>1829:A,x<1433:A,m<1592:A,R}
nnx{m<1438:gd,cjv}
nbp{x>1168:vx,x<1027:nrk,m<3404:xlh,jh}
jxt{a>3018:R,a>2989:R,x<2081:A,A}
qlh{s>2464:A,a>3258:fvc,R}
pkr{m>99:A,s<992:tjp,a>2330:R,R}
msc{m<1704:vl,m<3193:rbv,vfr}
ncx{x>3527:R,rv}
mnl{a<2870:R,s<3477:A,x>1527:A,A}
bzc{a>534:R,s>2369:R,R}
cv{m<2520:R,a>1382:A,R}
bjj{s<3237:sc,x>2020:R,A}
dxt{x>1973:R,x>1653:A,m<2147:R,A}
rbv{s<2474:fdn,m<2300:xl,x>2579:tk,pcg}
tb{x>3001:ncx,dhk}
hpr{s>740:R,A}
vg{m>1757:A,A}
zk{x>699:A,a>3640:A,A}
hns{x>1525:A,a<3550:R,a<3709:R,A}
in{a<1943:sg,x<1758:tpb,spv}
hpn{s<1880:jqn,A}
zjn{s<1412:R,A}
nhf{x<1660:A,x<1701:A,a>3374:A,R}
sc{x>1869:A,x<1591:R,R}
mkk{s<1676:tqm,x>2973:mt,hpn}
hz{a>2110:A,x>3216:R,a>2048:R,A}
ggs{s<1546:R,x>545:R,a>3613:A,R}
rgg{m>1130:A,R}
gdz{a<3255:A,a>3354:R,x<2961:ksq,ncv}
bmf{s>1655:R,a>2724:cgc,s>1420:xb,R}
khx{a>3552:R,x<1651:R,A}
qh{s>220:R,a<3157:R,R}
br{m<2805:pr,a>2750:cj,R}
jbc{a<2031:R,a<2059:A,m>600:R,R}
ddt{s>1226:A,A}
nqp{a<237:A,x<3128:A,s<1505:A,A}
nv{a<2139:rdn,s>247:gxb,m<2991:R,R}
pm{s<1106:A,A}
xhq{m>2657:R,s<856:R,A}
gkc{a<2864:A,s>1480:qkc,a>2894:R,R}
jh{x<1078:jls,A}
nf{a>157:R,R}
kft{a<2892:qx,m<461:R,R}
nkr{s<2913:A,x<2665:A,a<2197:R,R}
npx{x>520:ksr,ktf}
dn{x>2107:R,m<1969:A,a<693:A,A}
ss{a<1365:A,A}
kh{m>1995:xqn,A}
svb{m>2476:A,A}
gq{x>1247:A,x>1201:R,s<3631:A,R}
txt{s<3120:A,m>2972:R,R}
lh{s<1864:jhv,x<1112:bvc,lp}
prh{m>2745:zx,R}
sfh{a>3014:xkl,m>3147:jsd,xns}
xpc{x<2539:nx,m<990:qnt,a<3196:A,R}
ktf{a>3147:R,rq}
jls{a>3554:A,R}
bz{s>1380:R,A}
xlh{m>2973:A,a>3598:A,s<3449:R,vpb}
mf{s<2422:htg,A}
xxc{x<3193:A,s>3483:R,a>2650:A,A}
ks{x>3068:A,a>438:A,A}
kmb{a>2559:A,x>1045:A,R}
dlk{a<2513:hm,x>1045:jhg,A}
dj{s>354:xbh,vbb}
jc{m>3180:A,a>209:R,R}
pzz{m>2855:R,R}
fkc{s<2799:R,R}
rfn{x>3437:A,s<1636:A,R}
gz{x<1228:A,rbf}
rt{a<330:qmv,m>2632:A,x<2000:R,R}
clp{s<3277:R,s>3578:A,x<1236:R,A}
hrj{a>3673:tsb,s>1280:jbm,a>3584:A,R}
rcv{a<2713:A,m<3092:R,a>3295:A,R}
jg{x<847:A,nh}
rhz{m>1561:vhm,x<1609:ddm,m>1357:vnp,jcg}
gg{a<2326:R,m>232:R,R}
vbl{s>2050:nr,a>3485:kv,s>998:jsm,dj}
dk{m<2735:A,m<2834:A,R}
xzh{a<2518:A,a>2621:A,A}
jbn{a>1459:R,m>326:R,R}
szq{s<3344:bxk,s<3665:fx,a<3313:vbz,dr}
fbm{a>3537:crp,sr}
rlq{s>644:tc,R}
nrv{x>3604:A,s>180:R,m>3198:R,R}
lm{x<1301:A,x<1356:A,A}
ck{a>2781:R,s>2456:A,s>2295:R,A}
zq{x<1440:R,s<1354:A,m>3127:R,R}
pxq{x<1540:R,x<1654:R,A}
tpj{x<398:R,R}
qmg{x<1806:A,R}
qmv{s>915:A,A}
hc{s>1234:A,a<3777:A,s<543:A,R}
kdc{s<448:nv,x>2934:dcz,hch}
vmb{m>2094:gvv,s>3496:ksm,bd}
xqb{m<485:mzt,s>3300:A,hs}
hzg{a<746:fsm,m>1952:dxt,s>3756:bm,bh}
vnp{x<1675:xpv,A}
nb{x>1991:A,R}
xk{a<3000:mq,s<3447:vr,x<333:R,R}
ctb{x>831:vkc,s<1355:fhm,a<914:jd,tp}
xg{m<1340:shq,m<2708:R,s>261:A,nrv}
bj{a<2444:R,xv}
zkr{s<3365:R,A}
ndb{s>904:fd,x<1242:jbx,lm}
dd{a>665:R,R}
lnt{a<1177:A,x<901:A,x<919:R,R}
nn{m<2151:R,m>2257:A,R}
psx{x>3837:A,R}
zgp{m>1002:A,A}
rjt{s<1606:kf,R}
tqm{x<3109:pcz,tf}
xkl{m>3259:nhf,m<2733:nm,ltt}
fvc{s<2245:R,a>3610:R,a<3395:A,A}
vx{s>3405:A,s<2864:R,x<1291:svj,A}
fbs{m>3094:tjq,a<2671:lbr,s>2980:br,zxf}
sv{x<2686:A,A}
jt{s>307:mm,s>190:A,A}
ltt{m<2932:A,m>3097:R,R}
klj{a<190:R,R}
zj{a<3839:R,a<3898:R,a<3932:R,A}
qrz{a>2385:R,a<2103:A,a<2217:A,A}
dp{x>1276:fg,s>2212:ck,a>3255:kp,A}
qzg{a<2978:jqg,s>401:A,a<3083:pxq,bst}
fk{x<3153:R,R}
rdn{s<275:A,x>2619:A,s>365:A,R}
xdd{a>2338:xfl,db}
ht{s>1867:R,a<2561:R,a>2852:R,R}
ffz{x>2633:gjj,cxf}
xfc{a>2266:R,m>607:A,R}
gfp{m>1781:A,A}
ch{x<1246:rjt,m>2038:dh,s<1350:lj,hsx}
kqz{m>1171:lz,dbs}
njh{a>2157:A,m<3857:R,R}
nt{m<710:R,x>2315:mrg,s>1511:A,zh}
gv{a>2350:chf,m>516:A,gpm}
kk{x<285:nnx,zpj}
vpb{a<3293:R,a>3455:A,R}
pz{a>2276:xdd,fkl}
jbm{x<2951:A,s<1599:R,m<734:R,R}
tx{x>2805:R,R}
lp{x<1388:gtz,m>1008:rhz,rrl}
xqz{m>2687:A,s>3438:A,A}
hcm{s<1693:R,x<2623:A,R}
frl{m>274:gv,s<1923:pkr,mc}
fkl{x>2563:hz,a<2108:sqt,A}
nsj{m<2752:qmk,klj}
mhf{a>337:R,R}
cgc{s>1479:R,a>2929:R,R}
hf{a<3567:A,A}
jz{x<3661:R,R}
vr{x>269:A,x<163:A,s<3259:R,A}
jjb{a<3106:jkz,s>650:zv,s>457:jpr,lnj}
bx{m>437:lr,pt}
cht{a<3523:A,s>2630:rj,m>418:zj,kpp}
pht{x>2122:A,A}
vd{s>601:A,m>1408:A,A}
sg{x>1447:msc,bsb}
{x=238,m=232,a=127,s=30}
{x=489,m=234,a=187,s=941}
{x=2468,m=1586,a=611,s=1302}
{x=3030,m=825,a=221,s=748}
{x=1624,m=855,a=450,s=1328}
{x=2230,m=1545,a=397,s=179}
{x=115,m=98,a=233,s=353}
{x=1243,m=261,a=1160,s=301}
{x=1435,m=740,a=1442,s=16}
{x=2214,m=944,a=803,s=235}
{x=205,m=28,a=1261,s=591}
{x=1727,m=2967,a=1451,s=503}
{x=523,m=199,a=1088,s=1280}
{x=287,m=1673,a=558,s=2635}
{x=825,m=425,a=1999,s=1170}
{x=2442,m=1080,a=695,s=2139}
{x=450,m=2398,a=774,s=1790}
{x=460,m=1105,a=1617,s=2377}
{x=715,m=150,a=323,s=446}
{x=95,m=57,a=418,s=59}
{x=593,m=773,a=1205,s=1522}
{x=1305,m=365,a=2267,s=748}
{x=1882,m=698,a=649,s=1619}
{x=1438,m=58,a=366,s=317}
{x=105,m=457,a=351,s=409}
{x=2637,m=48,a=1364,s=120}
{x=546,m=1212,a=553,s=2020}
{x=289,m=1487,a=433,s=72}
{x=819,m=1468,a=1981,s=63}
{x=3224,m=304,a=2422,s=1500}
{x=1805,m=225,a=1755,s=138}
{x=1165,m=2002,a=337,s=1705}
{x=1140,m=2753,a=1535,s=491}
{x=1302,m=1637,a=228,s=1471}
{x=2472,m=293,a=1432,s=96}
{x=1950,m=298,a=573,s=492}
{x=92,m=869,a=1050,s=13}
{x=300,m=1946,a=539,s=8}
{x=2314,m=296,a=344,s=838}
{x=2344,m=261,a=809,s=3}
{x=355,m=1190,a=2970,s=74}
{x=1006,m=1092,a=825,s=2021}
{x=216,m=920,a=494,s=2965}
{x=392,m=816,a=863,s=175}
{x=2724,m=1041,a=1005,s=229}
{x=1371,m=269,a=627,s=1167}
{x=411,m=442,a=455,s=731}
{x=116,m=1840,a=2947,s=380}
{x=1958,m=383,a=960,s=897}
{x=379,m=1018,a=540,s=1312}
{x=180,m=1900,a=1999,s=437}
{x=1698,m=113,a=62,s=1213}
{x=6,m=295,a=24,s=2020}
{x=808,m=3042,a=920,s=1168}
{x=2905,m=93,a=2757,s=341}
{x=651,m=1805,a=435,s=3238}
{x=1763,m=384,a=1075,s=616}
{x=214,m=3035,a=536,s=844}
{x=775,m=43,a=353,s=413}
{x=1285,m=1315,a=429,s=1249}
{x=564,m=38,a=1534,s=268}
{x=665,m=1685,a=292,s=243}
{x=1047,m=875,a=2636,s=616}
{x=6,m=495,a=1926,s=2163}
{x=768,m=1896,a=458,s=22}
{x=163,m=741,a=451,s=796}
{x=106,m=794,a=1675,s=2563}
{x=824,m=2607,a=42,s=843}
{x=78,m=83,a=1718,s=2672}
{x=22,m=1108,a=197,s=307}
{x=160,m=190,a=3555,s=508}
{x=229,m=564,a=830,s=3129}
{x=594,m=1196,a=364,s=1703}
{x=2721,m=1009,a=872,s=3632}
{x=2893,m=564,a=282,s=536}
{x=1317,m=2746,a=427,s=602}
{x=1741,m=104,a=986,s=2976}
{x=637,m=1381,a=1037,s=255}
{x=1398,m=1991,a=682,s=1001}
{x=537,m=1433,a=148,s=773}
{x=143,m=2070,a=3859,s=358}
{x=2483,m=1234,a=779,s=361}
{x=277,m=462,a=585,s=1220}
{x=90,m=2449,a=2007,s=1234}
{x=192,m=1049,a=1542,s=1112}
{x=1907,m=13,a=105,s=3675}
{x=716,m=425,a=349,s=2780}
{x=841,m=2048,a=196,s=661}
{x=235,m=737,a=761,s=1338}
{x=337,m=29,a=2368,s=1528}
{x=346,m=2113,a=1210,s=31}
{x=325,m=1303,a=963,s=370}
{x=404,m=120,a=7,s=39}
{x=365,m=1286,a=846,s=8}
{x=985,m=338,a=724,s=731}
{x=132,m=127,a=257,s=349}
{x=752,m=5,a=1352,s=2079}
{x=923,m=513,a=861,s=1540}
{x=344,m=1492,a=432,s=2336}
{x=1598,m=13,a=848,s=1218}
{x=63,m=2897,a=825,s=781}
{x=928,m=786,a=315,s=1069}
{x=92,m=512,a=2113,s=1421}
{x=1624,m=763,a=1679,s=2171}
{x=207,m=668,a=85,s=1765}
{x=60,m=2722,a=69,s=3242}
{x=520,m=145,a=827,s=21}
{x=290,m=13,a=2511,s=1}
{x=736,m=831,a=1352,s=505}
{x=2405,m=272,a=1729,s=356}
{x=480,m=1087,a=298,s=178}
{x=764,m=56,a=637,s=484}
{x=2977,m=426,a=2928,s=261}
{x=2578,m=175,a=857,s=49}
{x=323,m=1228,a=1597,s=789}
{x=80,m=85,a=1637,s=1499}
{x=2443,m=1388,a=1084,s=105}
{x=152,m=1105,a=594,s=17}
{x=1,m=2959,a=1212,s=2164}
{x=93,m=570,a=2985,s=506}
{x=58,m=166,a=19,s=479}
{x=48,m=3218,a=534,s=927}
{x=2853,m=1521,a=628,s=38}
{x=963,m=285,a=460,s=2077}
{x=370,m=474,a=555,s=305}
{x=1440,m=8,a=751,s=856}
{x=1522,m=1839,a=3393,s=679}
{x=1501,m=850,a=117,s=1264}
{x=513,m=704,a=303,s=824}
{x=2778,m=769,a=786,s=2078}
{x=643,m=1653,a=1183,s=1101}
{x=599,m=34,a=81,s=1551}
{x=1927,m=1347,a=890,s=167}
{x=270,m=491,a=1367,s=2548}
{x=656,m=1953,a=1256,s=374}
{x=369,m=841,a=694,s=41}
{x=307,m=2036,a=5,s=210}
{x=588,m=148,a=422,s=622}
{x=1045,m=644,a=667,s=46}
{x=955,m=253,a=2044,s=1816}
{x=340,m=1166,a=70,s=1416}
{x=446,m=2736,a=185,s=1831}
{x=410,m=495,a=1996,s=1263}
{x=396,m=292,a=1697,s=178}
{x=104,m=976,a=2453,s=437}
{x=1018,m=1114,a=1377,s=89}
{x=1112,m=2070,a=611,s=389}
{x=965,m=239,a=2490,s=3543}
{x=629,m=494,a=1964,s=246}
{x=1509,m=292,a=2019,s=222}
{x=806,m=902,a=2764,s=757}
{x=452,m=2631,a=3531,s=61}
{x=976,m=959,a=247,s=771}
{x=1437,m=183,a=410,s=631}
{x=1984,m=792,a=1049,s=102}
{x=2670,m=583,a=146,s=2063}
{x=21,m=965,a=272,s=666}
{x=939,m=668,a=605,s=887}
{x=1956,m=1374,a=1251,s=1838}
{x=2159,m=1647,a=2537,s=1086}
{x=1366,m=1926,a=1117,s=385}
{x=426,m=387,a=1672,s=60}
{x=454,m=973,a=1007,s=1745}
{x=1230,m=1294,a=111,s=2851}
{x=947,m=1357,a=589,s=3}
{x=387,m=460,a=880,s=1002}
{x=409,m=886,a=1385,s=312}
{x=2082,m=219,a=3224,s=967}
{x=40,m=1073,a=2745,s=213}
{x=192,m=168,a=462,s=313}
{x=3387,m=782,a=937,s=272}
{x=2172,m=1671,a=890,s=1794}
{x=717,m=684,a=118,s=388}
{x=2392,m=26,a=108,s=1298}
{x=537,m=1924,a=241,s=2892}
{x=2531,m=1322,a=600,s=149}
{x=485,m=500,a=101,s=1}
{x=597,m=3017,a=397,s=1541}
{x=1234,m=172,a=225,s=383}
{x=337,m=3497,a=868,s=1029}
{x=1175,m=1917,a=226,s=3485}
{x=1627,m=2067,a=1210,s=2355}
{x=370,m=1609,a=3437,s=876}
{x=640,m=125,a=1038,s=216}
{x=327,m=6,a=189,s=29}
{x=3,m=1821,a=819,s=66}
{x=115,m=1831,a=662,s=970}
{x=2709,m=458,a=1189,s=1403}
{x=2202,m=731,a=858,s=913}
{x=209,m=94,a=2212,s=457}
{x=756,m=3382,a=1674,s=1311}
{x=624,m=738,a=233,s=137}
{x=1310,m=1252,a=314,s=2120}
{x=15,m=2772,a=182,s=84}
{x=549,m=785,a=69,s=923}
{x=1623,m=1888,a=457,s=24}
{x=619,m=828,a=336,s=762}
{x=573,m=101,a=217,s=2115}
{x=50,m=1103,a=230,s=1461}
{x=780,m=2290,a=339,s=3021}

58
data/20.in Normal file
View File

@@ -0,0 +1,58 @@
%fg -> nt, gt
&zp -> rx
%fh -> nt, xz
%pj -> zj, zq
%jc -> nt, nk
%mr -> vv, pz
%cl -> fp, zq
%xb -> bl, vv
%nc -> zq
%mg -> vn
%zj -> cf
&sb -> zp
%ht -> pp
%gt -> jc
%rq -> ft
&nt -> rq, fg, ft, nd, gt, xz
%ps -> xm
%fs -> ff
%nb -> dv
%qd -> xb
%kg -> mr, vv
%dv -> vv, hr
%rm -> zq, fs
%nk -> rq, nt
%hr -> dm, vv
%xm -> vn, ht
%pp -> mq
%br -> vn, jz
%gr -> ln
%bh -> qd, vv
%cf -> gr, zq
&vv -> dm, bl, sb, nb, qd, bh
%zc -> zv
%zv -> dc, vn
%jz -> qs
&nd -> zp
%rd -> nc, zq
&ds -> zp
%mq -> vn, zc
%bl -> bb
%qn -> nt
%pz -> vv
%qs -> vn, ps
%lm -> nt, qn
%xz -> dr
%bb -> nb, vv
%dm -> kg
%ft -> fh
&vn -> br, jz, ht, ps, zc, pp, ds
%xd -> nt, lm
&hf -> zp
broadcaster -> pj, fg, bh, br
%fp -> rd, zq
&zq -> fs, gr, ff, hf, ln, zj, pj
%ff -> cl
%dr -> xd, nt
%ln -> rm
%dc -> mg, vn

131
data/21.in Normal file
View File

@@ -0,0 +1,131 @@
...................................................................................................................................
...........##......#..........#.#....#....................#....................#...#....#...........#................##...#......#.
....................#..........#.#.....###.............................#.......#.....#...........##.##.....#..............#..#.....
.#........#......................#...#.#..#..........#..........................###......#.#.#.#................#.............##...
.....#...........#..........#.#.#....................#.......................#.#..##.......##........#....##....#.......#..#.......
....#.#......#.....#............#............#..#...#..#...................#......#......#.............#.......#..#.....#....#.....
..#...#............#....#......#......#......#..#....#.#..........#..............#..................#..#......#...........##.#..#..
.............##...............#............#..................#....#..........#........#...............................#...#.#.....
......#......#....#....##......#.....#.........#...................................#....#................#....#......#.......##....
.....#.....#...................#....................#.......#..#....#..................#..........................#.#.......#......
...#.#..#..#................#..............#.........................##.................#..........#............#.##...........#.#.
....#........###.#..##.......#.......#..##..#...................................#.....#...##.........#..................#.......#..
..............#.............#...........#...........................#....#..........#..#...#.............#....#...........#........
.#.#.......#..#.....#..#............#...........#.........#.....#....#.........................#.............#.#...#..........#....
.......#.....#..#..#...............#...#...................##.#..........................................##.#......................
.............#........##.....#.............................#.........#..#.......................#.....#.........................#..
........#..............#......#......................#..........#..............................#...........#...........#...........
.....#.....#........#..................#....#.............#....#.........#..........................##.............................
....................#.#.....#...#........#..............#.......#.......#..#.........................#.............#.........#.....
...##.#....#.......#..........#.#........##..........#............#...#....#...#.............#...............#.............#.......
...#........#.#...................##.............#.#.......#...........#..#..................................#................#....
.........#............................................##..........#...#..#.......#..............#.....#..##...##....#..#...........
.#.....#.............#........#.......#...........#........#.#....##............................................#..............#...
.......#....##...#.....###.#....#..#............#...#.........................#.................#..#.#...........#.................
.................##....#.........#............##..#..........#.........#.....##.##............#...#.......#.......#......#.#.......
..##..............#..#..#...#.......#.......#...#..........#..........#.......##....#..........##............#.#....#....#..#......
........#...................#.#..###..............#...#.#.#.#.....#.....##..#...###..............#.......#..........#.....#........
..........##.............#......#.#....................#.#...................#..........#.............#.#....................#..##.
.#............................#..........#.#...#.........##..#...........#.#.....#...............#.........#.....#..#..............
....................#....#...##..........................#...#....#.#.......#.#...........................#...................#..#.
..........##......###....###.#............#.................................#..#...........#.......#..#.........................#..
..#.........#......###..................................#..........................##.#.#..................#.........#.##..#.#.....
.....#...................#...#...........#..#......#...................#...#...........#...#.........#...............#.............
........#.#.#.....................................#.#.........##......#.##.....#.#...#...................#.....................#...
..###..#......#.#.#.#................#.......#.#.....................#.#..#.#...............#....................#........#.##..#..
.#........#......#.##.....#...........#.............#....#...........#................................................#............
....#.........#..#................................#...............................#............................#...................
....#...#....#..#......#.........#..........#.......#.......#..........#.........#.......#.....#.............#......#...#..........
.....#..#......................................................#...#.........#................##...........#...........#..###......
...##....#...........#..........#.........#..........#..........#....##.............#....................................#......#..
....#........#.................#...........#..........#...##...................#....##...#.....#..#..............#..#..#....#......
...#.#............#.#.......................................#..#..#..................................#...............#.#.#.........
....#............#...........#...#..........#..#......................#.#...#.....#....................#.......##..........#.......
................#...................#....#....................##.........................#........................#......#.........
..............#...............#..#.......#..#......#....#...#.................#..#....#........#..#.....#.....................#....
.......#........................#.#....#....#..#................#....#.........#..............#........#...........#...............
...#.......#................#.....#........#....##.................#...#...............##.......#...#....................#.........
........#.........................#..#...##..........................##......##....#.....#.#....#..##............................#.
..#...##................##........#.........#..#.........##................................#.............#.#.................#.....
....#.............................#.............#...............#...........#...............#....#.....#....#.#....................
..........##.............#......#..................#.........#......#....#.......#....#......#....#................................
.....#.#.#........................#..#.........#.....................#..##...#.......#......#..#.....#...#..#...#..........#.......
...................#.#..........#...............#...#.#......#....#.................#.................###.....................#....
.....................................#.......#....#................#..........................#..........#.................##...#..
....#................#..#......#....#..................#..........................................#....#....#......#.......#.......
......#..........#........#...#...#..#................#.........#.........#...#.........#.#....................#..#................
.....#................#...#.#.#....#.#............##....#...........#......##..##............#......##.......#...#...............#.
...#..........#..........................#.................................#................#..........###...##.......#............
...........................#..........#......#.....#...#.#....#.....##.........##.....#.......................##..#..#..........#..
....................#......##...#.............#.....#.#....#...........#...##..#..#............#...#...............#...............
...............#.##.....#..........#..............#......#........#...........#..#.#......................#...#..#..##.............
...................#....##...#..#..............#....................###.....#............#.........##..#.....#.##..#...............
............................#......#.##.....#....#..#...#..###............#.............#.....................##...........#.......
............#.....#.#.#.........#...#........................#......#...................#...##..#.................#........#.......
................................#.........................................#...#.......#....#.........#.........#.....#...#.........
.................................................................S.................................................................
................#.......#.............................#.#......#................#..#..#......#..........#.............#............
.............##........#.......#.#............#.......#.#.......#...#.....#...........#....#..#................#...........#.......
............................#.#....##............#.##..###..............................#....#............#..#........#............
..................#........#.........##.....#....#...##.#......................###.....#..#........#.#.......##.......#............
...................#...##..........#.#..#................##....................###...................#.....#........#.#..........#.
.................##........................#....#.#..#.....##................#...........................#......#................#.
............................#........#........#..##.....#..#.......#......#.#...#...................................#...........##.
..............#..........#............#...#...............#.........#.#...#...##..##.....#...........#...#..........#.#............
.#.............#...#.........#.....###.#...............................#.....#.....#............#..#.........#.#.#.................
....#...............#..#.....#.....#.......##....#.#........#.##.............##..#.............#.#.#...........................#...
........................#.....#..#....#......#......#..#....#...#..#..........#....#...............#.........##..#.................
....#................#.....#.#............#..................#..#................#.........#.....#.............#...................
.................#.......#.....##.##.....#..................#..#......#....#...............#............#.#.#....#.........#....#..
.......#................#..#.........#......###.....#.#........#....##......#.......#..#.#.......#.#....#.#...............#........
...#.....#.#...............#....#..............#.........#...........#............#............#..#.#..##..........................
......#...............##.............#.#...............#....................#..#..##.#.#.................#......................#..
..#.....##..#.............#...#.......#.......................#........#.#.#............#...................#...................#..
........................#..#..................#..#.#.#..............................#...#...#......#....#.#........................
...#....................#................................#...#.....#...........#........#..#........#...................##.#.....#.
......#...##...#.................#..#..#....#.....#.....#.....#...#..................#.............................#..#......#.....
....................................#..................#....#...#.........#....#......................#.............#....###..#....
.##..#..#...##..........................#..#..#...........#..............#....#.........#....#....................#......##........
.##............#.#...............##....#.....#.......#..........#......#...............#..#...#........#.................#..#......
.#..#.##.........##.#..........#...........#...#...#.....#.#..#............##.........##...#.....................#...#........#....
.......#....#.#.....#........#..................#.............##........#..........##.........#..............#.#..#...#.....#.#..#.
...#..#....#........#.......................#.......#........#....#.........#..............#...#..#.#.......##...........#.#.#..#..
................#......#......................#...#...............#.#.....#......#..........#.##.#.........#....#...#......#..#....
..............##.#..#...............#.#...........#..#......#......#..#.#..#.................#.....................#.........#.#...
..#................#..#..#..........#........#.#.........#....#...........#...#.......#.#.......#......................#..#......#.
......#............#...##..........#...#..................#.....#............##............................#...#..#........#....#..
..................#..................................###.#..........#....##......#....#.................#..........#..#............
...#..#.......#......#........................#...#......#..................#.#.#.#.#.....#...................#..#...#......##...#.
....................#.#......#.......#......#....#.......#.#.......#.............#...#..#.........................#................
.........#................#.#...........##......#..#..#..................#....#......#......#.......#.#......#.........#.....#.....
..#..........#...........#.........................#.......#..........#....#...........#.#..............................#.....##...
.....#.#..#......#....#....#.............................##.....#...#......#..#..#...#..............#..........#.................#.
.............##....##.......................#.#............#................#....#.......#...................#.....................
..#.......#.........#......................................................#..#..#..............#..#.##............................
......#.......#....#............................................#.#...................##...............##......#.......#.........#.
..............#..#..............#...........#...............................#...................................#....#......#.#....
.........#....#......#.....#.................#..............#.................................................#........##..........
......#...##..............#....#.#............#..#....#...........#.........#..........................#......#.#..........##.#....
...#....#.....#........##...#...................#.#....#...........................#...........................#..........#........
.#..........#.#.....#............#.#................#...#.#..#...............#....#..........#.........#............#.......#.#....
.........#......#.#.#.......#....#...#.#......................#........#..#...#...................#.......#.........#............#.
..........................#.....#.................................#.#.....#.................................#.#...#.###....#.......
...#.................#..#.................#..............#........#.......#.#.............#................#...#..#...........#....
....#..#....................#...............................#.#....#...........................#..#.....##..#................##..#.
....#...#...#..##........##......#...#......#................#..#.......................#....#........#...#.......#..........#.....
............#.....#................#.........#.............#...#...#.#................#...........#......#..#.......#........#.#...
......#...#...........#....#..#.#..............................#......................................................#............
................#.....#.....#....#.......#..#...#..........#.#......................#..#...#.....#...........#.............#..#....
..............#.....#.......#.#.............#.................#.........##.............#......#..............#.....................
...#......#.##...............#..........#...#....#............##................#........#.#......#.#.#............................
.#....#......................#...............###.....................#..................#..#..........#...........#.....#..........
............#..#.......#....#...........#...##..#...........##....#.............#..#.#....#............#..#.......#.#.#.....#......
......#.....##.##.#.....#.#...........#.#.#...................#..................#..#..#..#........#........................#.#....
....#.........#........................#..#....##.................#............#.......#..........................##.#.....#.......
..#..#....................#..........#..........#...........................#..............#....................#..................
..............#...#...............#...........##................#..........#........#.#....#......##.......#....#.......#...##.....
......#...............#........#...#...........#.....#......................#............#.............#..........#...........##...
..#..........#.#.#........#.#..#.#..##...........#.........................#........#.#....#.#........#.........#........#......##.
..........#.#.#...#...#.#...............................#..............#....#......##..........#.#..........#...#....#.............
.....................#............#......#.#..#....#..#..#..............#....#.#........................##......#............#.....
...................................................................................................................................

View File

@@ -20,6 +20,8 @@
devShells = forAllSystems (pkgs: with pkgs; { devShells = forAllSystems (pkgs: with pkgs; {
default = mkShell { default = mkShell {
nativeBuildInputs = [ rustc cargo ]; nativeBuildInputs = [ rustc cargo ];
buildInputs = [ hyperfine ];
RUST_SRC_PATH = "${rustPlatform.rustLibSrc}";
}; };
}); });

View File

@@ -69,7 +69,7 @@ impl Entry {
fn main() -> Result<()> { fn main() -> Result<()> {
let filename = env::args() let filename = env::args()
.nth(1) .nth(1)
.context("./day03 <path to puzzle input>")?; .context("./day05 <path to puzzle input>")?;
let input = fs::read_to_string(filename)?; let input = fs::read_to_string(filename)?;
let mut sections = input.split("\n\n"); let mut sections = input.split("\n\n");

39
src/bin/day06.rs Normal file
View File

@@ -0,0 +1,39 @@
use anyhow::{Context, Result};
use itertools::Itertools;
fn win_bounds(time: u64, record: u64) -> (u64, u64) {
let det_sq = time * time - 4 * record;
let det = (det_sq as f64).sqrt();
let mut low = ((time as f64 - det) / 2.0).ceil() as u64;
low += ((time - low) * low <= record) as u64;
let mut high = ((time as f64 + det) / 2.0).floor() as u64;
high -= ((time - low) * low <= record) as u64;
(low, high)
}
fn main() -> Result<()> {
let filename = std::env::args()
.nth(1)
.context("./day06 <path to puzzle input>")?;
let input = std::fs::read_to_string(filename)?;
let mut nums = input.lines().map(|line| {
line.split_ascii_whitespace()
.skip(1)
.map(|d| d.parse().unwrap())
.collect::<Vec<_>>()
});
let (times, records) = nums.next_tuple().unwrap();
let races = times.iter().zip(records.iter());
let range = |(low, high)| high - low + 1;
let part1: u64 = races.map(|(&t, &r)| range(win_bounds(t, r))).product();
let concat = |v: Vec<_>| v.iter().join("").parse().unwrap();
let part2 = range(win_bounds(concat(times), concat(records)));
println!("1) {}", part1);
println!("2) {}", part2);
Ok(())
}

142
src/bin/day07.rs Normal file
View File

@@ -0,0 +1,142 @@
use std::env;
use std::fs;
#[derive(PartialEq, Eq, PartialOrd, Ord, Debug)]
enum Kind {
HC,
OP,
TP,
THREE,
FH,
FOUR,
FIVE,
}
impl Kind {
fn from_sorted_frequencies(slice: &[u8]) -> Kind {
match slice {
&[5] => Kind::FIVE,
&[4, _] => Kind::FOUR,
&[3, _] => Kind::FH,
&[3, _, _] => Kind::THREE,
&[2, _, _] => Kind::TP,
&[2, _, _, _] => Kind::OP,
&[1, _, _, _, _] => Kind::HC,
_ => unreachable!(),
}
}
}
fn find_frequencies(hand: [u8; 5]) -> (u8, [u8; 5], [u8; 5]) {
let mut distinct = 0u8;
let mut cards = [0u8; 5];
let mut counts = [0u8; 5];
for c in hand {
let mut was_seen: bool = false;
for i in 0..5 {
if c == cards[i] {
counts[i] += 1;
was_seen = true;
break;
}
}
if !was_seen {
cards[distinct as usize] = c;
counts[distinct as usize] = 1;
distinct += 1;
}
}
(distinct, cards, counts)
}
fn kind(hand: [u8; 5]) -> Kind {
let (distinct, _, mut counts) = find_frequencies(hand);
counts.sort();
counts.reverse();
Kind::from_sorted_frequencies(&counts[..distinct as usize])
}
fn joker_kind(hand: [u8; 5], joker: u8) -> Kind {
let (mut distinct, cards, mut counts) = find_frequencies(hand);
let mut joker_count = 0;
for c in 0..distinct as usize {
if cards[c] == joker {
joker_count += counts[c];
distinct -= 1;
counts[c] = 0;
break;
}
}
distinct = distinct.max(1);
counts.sort();
counts.reverse();
counts[0] += joker_count;
Kind::from_sorted_frequencies(&counts[..distinct as usize])
}
fn solve(encoding: impl Fn(u8) -> u8, kind_eval: impl Fn([u8; 5]) -> Kind, input: &str) -> u64 {
let mut hand_bid_pairs: Vec<_> = input
.lines()
.map(|line| {
let mut hand: [u8; 5] = (&line.as_bytes()[..5]).try_into().unwrap();
for b in hand.iter_mut() {
*b = encoding(*b);
}
let kind = kind_eval(hand);
let bid = line
.bytes()
.skip(6)
.map(|c| (c - b'0') as u64)
.reduce(|a, b| a * 10 + b)
.unwrap();
(kind, hand, bid)
})
.collect();
hand_bid_pairs.sort();
hand_bid_pairs
.into_iter()
.zip(1..)
.map(|((_, _, bid), i)| bid * i)
.sum()
}
fn main() {
let filename = env::args().nth(1).unwrap();
let input = fs::read_to_string(filename).unwrap();
let encode_p1 = |byte| match byte {
b'T' => b'V',
b'J' => b'W',
b'Q' => b'X',
b'K' => b'Y',
b'A' => b'Z',
_ => byte,
};
let part1 = solve(encode_p1, kind, &input);
let encode_p2 = |byte| match byte {
b'T' => b'V',
b'J' => b'1',
b'Q' => b'X',
b'K' => b'Y',
b'A' => b'Z',
_ => byte,
};
let kind_eval = |hand| joker_kind(hand, encode_p2(b'J'));
let part2 = solve(encode_p2, kind_eval, &input);
println!("1) {}", part1);
println!("2) {}", part2);
}

49
src/bin/day08.rs Normal file
View File

@@ -0,0 +1,49 @@
use gcd;
use hashbrown::{HashMap, HashSet};
use anyhow::{Context, Result};
fn lcm(a: u64, b: u64) -> u64 {
(a * b) / gcd::binary_u64(a, b)
}
fn main() -> Result<()> {
let filename = std::env::args()
.nth(1)
.context("./day08 <path to puzle input>")?;
let input = std::fs::read_to_string(filename)?;
let mut lines = input.lines().map(|line| line.as_bytes());
let instructions = lines.next().unwrap();
let connections: Vec<_> = lines.skip(1).collect();
let sources = connections.iter().map(|c| &c[..3]);
let name_ids: HashMap<_, _> = sources.clone().zip(0..).collect();
let id = |name: &[u8]| name_ids[name];
let mut neighbours = vec![(0u32, 0u32); connections.len()];
for (from_id, conn) in connections.iter().enumerate() {
neighbours[from_id] = (id(&conn[7..10]), id(&conn[12..15]));
}
let cycle_len = |start: &[u8], ends: &HashSet<_>| -> u64 {
let mut step_count = 0;
let mut pos = id(start);
let mut plan = instructions.iter().cycle();
while !ends.contains(&pos) {
let (to_l, to_r) = neighbours[pos as usize];
pos = if plan.next().unwrap() == &b'L' { to_l } else { to_r };
step_count += 1;
}
step_count
};
let ends = sources.clone().filter(|s| s[2] == b'Z').map(id).collect();
let part1 = cycle_len("AAA".as_bytes(), &ends);
let starts = sources.filter(|s| s[2] == b'A');
let part2 = starts.map(|pos| cycle_len(pos, &ends)).reduce(lcm).unwrap();
println!("1) {}", part1);
println!("2) {}", part2);
Ok(())
}

48
src/bin/day09.rs Normal file
View File

@@ -0,0 +1,48 @@
use anyhow::{Context, Result};
fn extrapolate(sequence: &mut Vec<i64>) -> Option<(i64, i64)> {
let diff = |seq: &mut Vec<i64>| {
(0..seq.len() - 1).for_each(|i| seq[i] = seq[i + 1] - seq[i]);
seq.pop();
};
let mut fwd = 0;
let mut bwd = 0;
let mut f = 1;
while sequence.len() > 1 {
fwd += sequence[sequence.len() - 1];
bwd += f * sequence[0];
diff(sequence);
f *= -1;
if sequence.iter().all(|&num| num == 0) {
return Some((bwd, fwd));
}
}
None
}
fn main() -> Result<()> {
let filename = std::env::args()
.nth(1)
.context("./day09 <path to puzzle input>")?;
let input = std::fs::read_to_string(filename)?;
let mut part1 = 0;
let mut part2 = 0;
for line in input.lines() {
let parse_i64 = |str: &str| str.parse::<i64>().unwrap();
let mut initial: Vec<i64> = line.split_ascii_whitespace().map(parse_i64).collect();
let (p2, p1) = extrapolate(&mut initial).context("malformed input")?;
part1 += p1;
part2 += p2;
}
println!("1) {}", part1);
println!("2) {}", part2);
Ok(())
}

184
src/bin/day10.rs Normal file
View File

@@ -0,0 +1,184 @@
use std::env;
use std::fs;
use anyhow::{anyhow, Context, Result};
#[derive(PartialEq, Eq, Copy, Clone, PartialOrd, Ord, Debug)]
struct Point {
x: usize,
y: usize,
}
impl<T> From<(T, T)> for Point
where
T: Into<usize>,
{
fn from(p: (T, T)) -> Self {
return Point {
x: p.0.into(),
y: p.1.into(),
};
}
}
impl Point {
#[rustfmt::skip]
fn walk(&self, d: Dir) -> Self {
match d {
Dir::U => Self { x: self.x - 1, y: self.y },
Dir::D => Self { x: self.x + 1, y: self.y },
Dir::L => Self { x: self.x, y: self.y - 1 },
Dir::R => Self { x: self.x, y: self.y + 1 },
}
}
}
#[derive(PartialEq, Eq, Copy, Clone, Debug)]
enum Dir {
U,
D,
L,
R,
}
impl Dir {
fn invert(&self) -> Dir {
match self {
Dir::U => Dir::D,
Dir::D => Dir::U,
Dir::L => Dir::R,
Dir::R => Dir::L,
}
}
}
struct Pipe {
end1: Dir,
end2: Dir,
}
impl TryFrom<u8> for Pipe {
type Error = anyhow::Error;
#[rustfmt::skip]
fn try_from(byte: u8) -> Result<Self, Self::Error> {
match byte {
b'|' => Ok(Pipe { end1: Dir::D, end2: Dir::U }),
b'-' => Ok(Pipe { end1: Dir::L, end2: Dir::R }),
b'F' => Ok(Pipe { end1: Dir::D, end2: Dir::R }),
b'7' => Ok(Pipe { end1: Dir::D, end2: Dir::L }),
b'J' => Ok(Pipe { end1: Dir::U, end2: Dir::L }),
b'L' => Ok(Pipe { end1: Dir::U, end2: Dir::R }),
_ => Err(anyhow!("{} ({}) is not a pipe,", byte as char, byte)),
}
}
}
impl Pipe {
fn other_end(&self, from: &Dir) -> Option<Dir> {
if *from == self.end1 {
Some(self.end2)
} else if *from == self.end2 {
Some(self.end1)
} else {
None
}
}
}
struct Grid<T> {
grid: Vec<T>,
width: usize,
}
impl<T> std::ops::Index<Point> for Grid<T> {
type Output = T;
fn index(&self, p: Point) -> &T {
&self.grid[p.x * self.width + p.y]
}
}
impl<T> std::ops::IndexMut<Point> for Grid<T> {
fn index_mut(&mut self, p: Point) -> &mut T {
&mut self.grid[p.x * self.width + p.y]
}
}
fn main() -> Result<()> {
let filename = env::args()
.nth(1)
.context("./day10 <path to puzzle input>")?;
let input = fs::read_to_string(filename)?;
let width = input.lines().next().context("bad input")?.trim().len();
let grid: Vec<_> = input.lines().flat_map(|line| line.trim().bytes()).collect();
let height = grid.len() / width;
let grid = Grid { grid, width };
let mut all_points = (0..height).flat_map(|x| (0..width).map(move |y| (x, y).into()));
let start: Point = all_points
.find(|point: &Point| grid[point.clone()] == b'S')
.context("start not found")?;
let mut start_directions = Vec::new();
for dir in [Dir::U, Dir::D, Dir::L, Dir::R] {
let neighbour = start.walk(dir);
let byte = grid[neighbour];
if byte != b'.' {
let pipe = Pipe::try_from(byte)?;
if pipe.end1 == dir.invert() || pipe.end2 == dir.invert() {
start_directions.push(dir);
}
}
}
assert_eq!(start_directions.len(), 2);
let mut on_loop = Grid {
grid: vec![false; height * width],
width,
};
let end = start.walk(start_directions[0]);
on_loop[end] = true;
on_loop[start] = true;
let mut loop_length = 2;
let mut entry: Dir = start_directions[1].invert();
let mut position: Point = start.walk(start_directions[1]);
while position != end {
loop_length += 1;
on_loop[position] = true;
let pipe = Pipe::try_from(grid[position])?;
let exit = pipe.other_end(&entry).context("broken pipe")?;
position = position.walk(exit);
entry = exit.invert();
}
let is_vertical = |b| b == b'|' || b == b'L' || b == b'J';
let mut enclosed_count = 0;
for x in 0..height {
let mut parity: bool = false;
for y in 0..width {
let byte = grid.grid[x * width + y];
if !on_loop.grid[x * width + y] {
enclosed_count += parity as usize;
} else {
if is_vertical(byte) || byte == b'S' {
parity = !parity;
}
}
}
}
println!("1) {}", loop_length / 2);
println!("2) {}", enclosed_count);
Ok(())
}

43
src/bin/day11.rs Normal file
View File

@@ -0,0 +1,43 @@
use anyhow::{Context, Result};
use itertools::Itertools;
fn main() -> Result<()> {
let filename = std::env::args()
.nth(1)
.context("./day11 <path to puzzle input>")?;
let input = std::fs::read_to_string(filename)?;
let lines: Vec<_> = input.lines().map(|line| line.as_bytes()).collect();
let height = lines.len();
let width = lines[0].len();
let galaxies: Vec<_> = (0..height)
.cartesian_product(0..width)
.filter(|&(x, y)| lines[x][y] == b'#')
.collect();
let mut is_empty_row = vec![true; height];
let mut is_empty_col = vec![true; width];
galaxies.iter().for_each(|&(x, y)| {
is_empty_row[x] = false;
is_empty_col[y] = false;
});
let empty_rows_count = |a: usize, b| (a.min(b)..a.max(b)).filter(|&x| is_empty_row[x]).count();
let empty_cols_count = |a: usize, b| (a.min(b)..a.max(b)).filter(|&y| is_empty_col[y]).count();
let distance = |(&(x1, y1), &(x2, y2)): (&(usize, usize), &(usize, usize)), scale: usize| {
let emptiness = empty_rows_count(x1, x2) + empty_cols_count(y1, y2);
x1.abs_diff(x2) + y1.abs_diff(y2) + (scale - 1) * emptiness
};
let galaxy_pairs = galaxies.iter().tuple_combinations();
let part1: usize = galaxy_pairs.clone().map(|p| distance(p, 2)).sum();
let part2: usize = galaxy_pairs.clone().map(|p| distance(p, 1000000)).sum();
println!("1) {}", part1);
println!("2) {}", part2);
Ok(())
}

99
src/bin/day12.rs Normal file
View File

@@ -0,0 +1,99 @@
use hashbrown::HashMap;
use ndarray::Array3;
use anyhow::{Context, Result};
fn solve(str: &[u8], groups: &[usize]) -> usize {
if groups.iter().sum::<usize>() + groups.len() > str.len() + 1 {
return 0;
}
let groups_max = groups.iter().max().unwrap();
let mut dp = Array3::<usize>::zeros((str.len() + 1, groups.len() + 1, *groups_max + 1));
dp[[0, 0, 0]] = 1;
for s in 0..str.len() {
if str[s] == b'.' || str[s] == b'?' {
for g in 0..groups.len() {
dp[[s + 1, g, 0]] += dp[[s, g, 0]];
dp[[s + 1, g + 1, 0]] += dp[[s, g, groups[g]]];
}
dp[[s + 1, groups.len(), 0]] += dp[[s, groups.len(), 0]];
}
if str[s] == b'#' || str[s] == b'?' {
for g in 0..groups.len() {
for p in 0..groups[g] {
dp[[s + 1, g, p + 1]] += dp[[s, g, p]];
}
}
}
}
dp[[str.len(), groups.len(), 0]] + dp[[str.len(), groups.len() - 1, groups[groups.len() - 1]]]
}
type Cache<'a> = HashMap<(&'a [u8], &'a [usize], usize), usize>;
fn solve_rec<'a>(str: &'a [u8], groups: &'a [usize], pos: usize, cache: &mut Cache<'a>) -> usize {
let mut ans = 0;
if let Some(result) = cache.get(&(str, groups, pos)) {
return *result;
}
if str.len() == 0 {
return (groups.len() == 0 || (groups.len() == 1 && pos == groups[0])) as usize;
}
if str[0] == b'.' || str[0] == b'?' {
if groups.len() == 0 || pos == 0 {
ans += solve_rec(&str[1..], groups, pos, cache);
} else if pos == groups[0] {
ans += solve_rec(&str[1..], &groups[1..], 0, cache);
}
}
if str[0] == b'#' || str[0] == b'?' {
if groups.len() > 0 && pos < groups[0] {
ans += solve_rec(&str[1..], groups, pos + 1, cache);
}
}
cache.insert((str, groups, pos), ans);
return ans;
}
fn main() -> Result<()> {
let filename = std::env::args()
.nth(1)
.context("./day12 <path to puzzle input>")?;
let input = std::fs::read_to_string(filename)?;
let mut part1 = 0;
let mut part2 = 0;
for line in input.lines() {
let (record, groups) = line.split_once(' ').context("malformed input")?;
let groups: Vec<usize> = groups.split(',').map(|v| v.parse().unwrap()).collect();
part1 += solve_rec(record.as_bytes(), &groups, 0, &mut HashMap::new());
let mut record5 = record.to_string();
let mut groups5 = groups.clone();
record5.reserve_exact(4 * (record.len() + 1));
groups5.reserve_exact(4 * groups.len());
for _ in 0..4 {
record5.push('?');
record5.push_str(record);
groups5.extend(&groups);
}
part2 += solve(record5.as_bytes(), &groups5);
}
println!("1) {}", part1);
println!("2) {}", part2);
Ok(())
}

47
src/bin/day13.rs Normal file
View File

@@ -0,0 +1,47 @@
use anyhow::{Context, Result};
fn grid_count(x_max: usize, y_max: usize, predicate: impl Fn(usize, usize) -> bool) -> usize {
let mut count = 0;
for x in 0..x_max {
for y in 0..y_max {
count += predicate(x, y) as usize;
}
}
count
}
fn main() -> Result<()> {
let filename = std::env::args()
.nth(1)
.context("./day13 <path to puzzle input>")?;
let input = std::fs::read_to_string(filename)?;
let mut part1 = 0;
let mut part2 = 0;
for section in input.split("\n\n") {
let height = section.lines().count();
let grid: Vec<_> = section.lines().flat_map(|line| line.bytes()).collect();
let width = grid.len() / height;
let is_smudge_h = |i, x, y| grid[(i + x) * width + y] != grid[(i - x - 1) * width + y];
let is_smudge_v = |i, x, y| grid[x * width + i + y] != grid[x * width + (i - y - 1)];
for i in 1..height {
let smudge_count = grid_count(i.min(height - i), width, |x, y| is_smudge_h(i, x, y));
part1 += 100 * i * usize::from(smudge_count == 0);
part2 += 100 * i * usize::from(smudge_count == 1);
}
for i in 1..width {
let smudge_count = grid_count(height, i.min(width - i), |x, y| is_smudge_v(i, x, y));
part1 += i * usize::from(smudge_count == 0);
part2 += i * usize::from(smudge_count == 1);
}
}
println!("1) {}", part1);
println!("2) {}", part2);
Ok(())
}

104
src/bin/day14.rs Normal file
View File

@@ -0,0 +1,104 @@
use hashbrown::HashMap;
use itertools::iproduct;
fn tilt_hori<I>(mut grid: Vec<u8>, h: usize, w: usize, range: I, y_delta: i64) -> Vec<u8>
where
I: Iterator<Item = (usize, usize)>,
{
let d = if y_delta == 1 { 0 } else { w - 1 };
let mut next_free = vec![d; h];
for (x, y) in range {
if grid[x * w + y] == b'#' {
next_free[x] = (y as i64 + y_delta) as usize;
}
if grid[x * w + y] == b'O' {
grid[x * w + y] = b'.';
grid[x * w + next_free[x]] = b'O';
next_free[x] = (next_free[x] as i64 + y_delta) as usize;
}
}
grid
}
fn tilt_vert<I>(mut grid: Vec<u8>, h: usize, w: usize, range: I, x_delta: i64) -> Vec<u8>
where
I: Iterator<Item = (usize, usize)>,
{
let d = if x_delta == 1 { 0 } else { h - 1 };
let mut next_free = vec![d; w];
for (x, y) in range {
if grid[x * w + y] == b'#' {
next_free[y] = (x as i64 + x_delta) as usize;
}
if grid[x * w + y] == b'O' {
grid[x * w + y] = b'.';
grid[next_free[y] * w + y] = b'O';
next_free[y] = (next_free[y] as i64 + x_delta) as usize;
}
}
grid
}
fn spin(mut grid: Vec<u8>, h: usize, w: usize) -> Vec<u8> {
grid = tilt_vert(grid, h, w, iproduct!(0..h, 0..w), 1); // north
grid = tilt_hori(grid, h, w, iproduct!(0..h, 0..w), 1); // west
grid = tilt_vert(grid, h, w, iproduct!((0..h).rev(), (0..w).rev()), -1); // south
grid = tilt_hori(grid, h, w, iproduct!((0..h).rev(), (0..w).rev()), -1); // east
return grid;
}
fn spin_n(mut grid: Vec<u8>, h: usize, w: usize, spin_count: usize) -> Vec<u8> {
let mut past: HashMap<(usize, usize), usize> = HashMap::new();
for spins in 0..spin_count {
let mut load = (0, 0);
for (x, y) in iproduct!(0..h, 0..w) {
if grid[x * w + y] == b'O' {
load.0 += h - x;
load.1 += w - y;
}
}
if let Some(first_seen) = past.get(&load) {
let offset = (spin_count - first_seen) % (spins - first_seen);
for _ in 0..offset {
grid = spin(grid, h, w);
}
return grid;
}
past.insert(load, spins);
grid = spin(grid, h, w);
}
grid
}
fn main() {
let filename = std::env::args().nth(1).unwrap();
let input = std::fs::read_to_string(filename).unwrap();
let w = input.lines().next().unwrap().len();
let grid: Vec<_> = input.lines().flat_map(|line| line.bytes()).collect();
let h = grid.len() / w;
let tilt_north = |grid: Vec<u8>| tilt_vert(grid, h, w, iproduct!(0..h, 0..w), 1);
let boulder_load = |(x, y), grid: &Vec<u8>| {
if grid[x * w + y] == b'O' {
h - x
} else {
0
}
};
let north_load = |grid| -> usize { iproduct!(0..h, 0..w).map(|p| boulder_load(p, grid)).sum() };
let grid1 = tilt_north(grid.clone());
let part1 = north_load(&grid1);
println!("{}", part1);
let grid2 = spin_n(grid, h, w, 1_000_000_000);
let part2 = north_load(&grid2);
println!("{}", part2);
}

46
src/bin/day15.rs Normal file
View File

@@ -0,0 +1,46 @@
use std::collections::HashMap;
use anyhow::{Context, Result};
fn main() -> Result<()> {
let filename = std::env::args()
.nth(1)
.context("./day15 <path to puzzle input>")?;
let input = std::fs::read_to_string(filename)?;
let sequence: Vec<_> = input.trim().split(',').map(|s| s.as_bytes()).collect();
let update = |state, c| (state + c as usize) * 17 % 256;
let hash = |w: &[u8]| w.iter().copied().fold(0, update);
let part1: usize = sequence.iter().map(|w| hash(w)).sum();
let mut buckets = vec![HashMap::new(); 256];
for (counter, step) in sequence.into_iter().enumerate() {
if step[step.len() - 1] == b'-' {
let key = &step[..step.len() - 1];
buckets[hash(key)].remove(key);
} else {
let (key, focal) = step.split_at(step.len() - 2);
let focal = focal[1] - b'0';
buckets[hash(key)]
.entry(key)
.and_modify(|(_, old_focal)| *old_focal = focal)
.or_insert((counter, focal));
}
}
let mut part2 = 0;
for (bucket, b_id) in buckets.into_iter().zip(1..) {
let mut v: Vec<_> = bucket.into_values().collect();
v.sort();
for ((_, focal), position) in v.into_iter().zip(1..) {
part2 += b_id * position * (focal as usize);
}
}
println!("1) {}", part1);
println!("2) {}", part2);
Ok(())
}

78
src/bin/day17.rs Normal file
View File

@@ -0,0 +1,78 @@
use anyhow::{Context, Result};
fn min_heat_loss(grid: &Vec<u8>, h: i32, w: i32, min_steps: i32, max_steps: i32) -> Option<usize> {
let is_valid = |x, y| 0 <= x && x < h && 0 <= y && y < w;
let read = |x, y| (grid[(x * w + y) as usize] - b'0') as usize;
let bucket_count = ((max_steps * 9) as usize).next_power_of_two();
let mut queue = vec![Vec::new(); bucket_count];
queue[0].push(((0, 0), (0, 1)));
queue[0].push(((0, 0), (1, 0)));
let mut dist = vec![[usize::MAX, usize::MAX]; grid.len()];
let mut heat_loss = 0;
let mut queue_size = 2;
while queue_size > 0 {
while let Some(((x, y), (dx, dy))) = queue[heat_loss % bucket_count].pop() {
queue_size -= 1;
if x == h - 1 && y == w - 1 {
return Some(heat_loss);
}
if heat_loss > dist[(x * w + y) as usize][(dx == 0) as usize] {
continue;
}
for (dx, dy) in [(dy, -dx), (-dy, dx)] {
let (mut nx, mut ny) = (x, y);
let mut path_loss = 0;
for i in 1..=max_steps {
nx += dx;
ny += dy;
if !is_valid(nx, ny) {
break;
}
path_loss += read(nx, ny);
if i >= min_steps {
let is_horizontal = dx == 0;
let dist_pos = nx * w + ny;
let old_dist = dist[dist_pos as usize][is_horizontal as usize];
let new_dist = heat_loss + path_loss;
if new_dist < old_dist {
dist[dist_pos as usize][is_horizontal as usize] = new_dist;
queue[new_dist % bucket_count].push(((nx, ny), (dx, dy)));
queue_size += 1;
}
}
}
}
}
heat_loss += 1;
}
None
}
fn main() -> Result<()> {
let filename = std::env::args()
.nth(1)
.context("./day17 <path to puzzle input>")?;
let input = std::fs::read_to_string(filename)?;
let width = input.lines().next().unwrap().len();
let grid: Vec<_> = input.lines().flat_map(|l| l.bytes()).collect();
let height = grid.len() / width;
let part1 = min_heat_loss(&grid, height as i32, width as i32, 1, 3);
let part2 = min_heat_loss(&grid, height as i32, width as i32, 4, 10);
println!("1) {:?}", part1);
println!("2) {:?}", part2);
Ok(())
}

56
src/bin/day18.rs Normal file
View File

@@ -0,0 +1,56 @@
use std::str;
use anyhow::{Context, Result};
fn area(moves: impl Iterator<Item = ((i64, i64), i64)>) -> i64 {
let (mut x, mut y) = (0i64, 0i64);
let mut area = 0;
for ((dx, dy), dist) in moves {
let (nx, ny) = (dist * dx + x, dist * dy + y);
area += x * ny - y * nx;
area -= i64::abs(nx - x) + i64::abs(ny - y);
(x, y) = (nx, ny);
}
i64::abs(area / 2) + 1
}
fn main() -> Result<()> {
let filename = std::env::args()
.nth(1)
.context("./day18 <path to puzzle input>")?;
let input = std::fs::read_to_string(filename)?;
let lines = input.lines().map(|line| line.as_bytes());
let dirs = [(0, 1), (1, 0), (0, -1), (-1, 0)];
let to_dir = |c| match c {
b'R' => dirs[0],
b'L' => dirs[2],
b'U' => dirs[3],
b'D' => dirs[1],
_ => unreachable!(),
};
let read_p1 = |line: &[u8]| {
let dir = line[0];
let dist = &line[2..line.len() - 10];
let dist = str::from_utf8(dist).unwrap().parse::<i64>().unwrap();
(to_dir(dir), dist)
};
let read_p2 = |line: &[u8]| {
let dir = line[line.len() - 2] - b'0';
let dist = &line[line.len() - 7..line.len() - 2];
let dist = str::from_utf8(dist).unwrap();
let dist = i64::from_str_radix(dist, 16).unwrap();
(dirs[dir as usize], dist)
};
let part1 = area(lines.clone().map(read_p1));
let part2 = area(lines.clone().map(read_p2));
println!("1) {}", part1);
println!("2) {}", part2);
Ok(())
}

160
src/bin/day19.rs Normal file
View File

@@ -0,0 +1,160 @@
use std::cmp::Ordering;
use std::collections::HashMap;
use itertools::Itertools;
use anyhow::{Context, Result};
const MALFORMED: &str = "malformed input";
struct Rule {
property: u8,
comp: Ordering,
value: u32,
}
struct Workflow<'a> {
rules: Vec<(Rule, &'a str)>,
default: &'a str,
}
impl<'a> TryFrom<&'a str> for Workflow<'a> {
type Error = anyhow::Error;
fn try_from(str: &'a str) -> Result<Self> {
match str.rsplit_once(',') {
Some((rules_str, default)) => {
let mut rules = Vec::new();
for rule in rules_str.split(',') {
let (condition, dest) = rule.split_once(':').context("MALFORMED")?;
let property = index(condition.as_bytes()[0]);
let comp = condition.as_bytes()[1].cmp(&b'=');
let value = (&condition[2..]).parse()?;
rules.push((
Rule {
property,
comp,
value,
},
dest,
));
}
Ok(Workflow { rules, default })
}
None => Ok(Workflow {
rules: Vec::new(),
default: str,
}),
}
}
}
impl<'a> Workflow<'a> {
fn process(&self, state: &[u32; 4]) -> &'a str {
for (rule, dst) in self.rules.iter() {
if state[rule.property as usize].cmp(&rule.value) == rule.comp {
return dst;
}
}
return self.default;
}
}
fn index(b: u8) -> u8 {
match b {
b'x' => 0,
b'm' => 1,
b'a' => 2,
b's' => 3,
_ => unreachable!(),
}
}
fn main() -> Result<()> {
let filename = std::env::args()
.nth(1)
.context("./day19 <path to puzzle input>")?;
let input = std::fs::read_to_string(filename)?;
let (workflows_str, parts_str) = input.split("\n\n").next_tuple().context(MALFORMED)?;
let mut workflows = HashMap::new();
for workflow in workflows_str.lines() {
let (name, body) = workflow.split_once('{').context(MALFORMED)?;
workflows.insert(name, Workflow::try_from(&body[..body.len() - 1])?);
}
let mut parts = Vec::new();
for part_str in parts_str.lines() {
let mut part = [0, 0, 0, 0];
for (idx, property) in part_str[1..part.len() - 1].split(',').enumerate() {
part[idx] = property[2..].parse()?;
}
parts.push(part);
}
let mut part1: u64 = 0;
for part in parts.iter() {
let mut current = "in";
while (current != "A") & (current != "R") {
let workflow = workflows.get(&current).context(MALFORMED)?;
current = workflow.process(part);
}
if current == "A" {
part1 += part.iter().map(|&v| v as u64).sum::<u64>();
}
}
let split_bound = |rule: &Rule, bound: (u32, u32)| match rule.comp {
Ordering::Less => (
(bound.0, bound.1.min(rule.value)),
(bound.0.max(rule.value), bound.1),
),
Ordering::Greater => (
(bound.0.max(rule.value + 1), bound.1),
(bound.0, bound.1.min(rule.value + 1)),
),
_ => unreachable!(),
};
let mut part2 = 0;
let mut stack = Vec::new();
stack.push(("in", [(1, 4001), (1, 4001), (1, 4001), (1, 4001)]));
'outer: while let Some((current, mut bounds)) = stack.pop() {
if current == "A" {
part2 += bounds.iter().map(|(a, b)| (b - a) as u64).product::<u64>();
continue;
}
if current == "R" {
continue;
}
let workflow = workflows.get(&current).context(MALFORMED)?;
for (rule, dest) in workflow.rules.iter() {
let bound = bounds[rule.property as usize];
let (send, carry) = split_bound(rule, bound);
if send.0 < send.1 {
let mut new_bounds = bounds;
new_bounds[rule.property as usize] = send;
stack.push((dest, new_bounds));
}
if carry.0 < carry.1 {
bounds[rule.property as usize] = carry;
} else {
continue 'outer;
}
}
stack.push((workflow.default, bounds));
}
println!("1) {}", part1);
println!("2) {}", part2);
Ok(())
}

175
src/bin/day20.rs Normal file
View File

@@ -0,0 +1,175 @@
use std::collections::VecDeque;
use anyhow::{Context, Result};
use hashbrown::{HashMap, HashSet};
#[derive(Clone)]
enum Gate<'a> {
FlipFlop {
high: bool,
},
Conjugation {
memory: HashSet<&'a str>,
in_count: usize,
},
Negate,
Broadcast,
}
fn main() -> Result<()> {
let filename = std::env::args()
.nth(1)
.context("./day20 <path to puzzle input>")?;
let input = std::fs::read_to_string(filename)?;
let mut gates: HashMap<&str, Gate> = HashMap::new();
let mut outs = HashMap::new();
let mut ins = HashMap::new();
for line in input.lines() {
let (source, dsts) = line.split_once(" -> ").context("malformed input.")?;
let dsts: Vec<_> = dsts.split(", ").collect();
let name = source.trim_start_matches(['&', '%']);
for dst in dsts.iter().copied() {
ins.entry(dst).or_insert(Vec::new()).push(name);
}
outs.insert(name, dsts);
let gate = match source.chars().next().unwrap() {
'%' => Gate::FlipFlop { high: false },
'&' => Gate::Conjugation {
memory: HashSet::new(),
in_count: 0,
},
'b' => Gate::Broadcast,
_ => unreachable!(),
};
gates.insert(name, gate);
}
for (name, gate) in gates.iter_mut() {
if let Gate::Conjugation {
memory: _,
in_count,
} = gate
{
*in_count = ins[name].len();
if *in_count == 1 {
*gate = Gate::Negate;
}
}
}
let mut counts = [0, 0];
let mut queue = VecDeque::new();
for _ in 0..1000 {
queue.push_back(("broadcaster", "button", false));
while let Some((dest, source, is_high)) = queue.pop_back() {
counts[is_high as usize] += 1;
let outs = match outs.get(dest) {
Some(v) => v,
None => {
continue;
}
};
if let Some(gate) = gates.get_mut(dest) {
match gate {
Gate::Broadcast => {
for out in outs {
queue.push_back((out, dest, false));
}
}
Gate::Negate => {
for out in outs {
queue.push_back((out, dest, !is_high));
}
}
Gate::FlipFlop { high } => {
if !is_high {
*high = !(*high);
for out in outs {
queue.push_back((out, dest, *high));
}
}
}
Gate::Conjugation { memory, in_count } => {
if is_high {
memory.insert(source);
} else {
memory.remove(source);
}
let signal = memory.len() < *in_count;
for out in outs {
queue.push_back((out, dest, signal));
}
}
}
}
}
}
let part1 = counts[0] * counts[1];
// Assumed structure:
// broadcast ----> COUNTER1 ----> NEGATE -----> CONJ ----> rx
// |----------> COUNTER2 ----> NEGATE --------|
// |----------> COUNTER3 ----> NEGATE --------|
// `----------> COUNTER4 ----> NEGATE --------´
//
// Where Counter:
// IN
// |
// v
// FF <-> Core --> OUT
// | ? ^
// V | |
// FF ?----´ |
// | |
// v |
// FF--------´
//
// Counters are assumed to trigger on prime values
//
let mut part2 = 1;
for mut root in outs["broadcaster"].iter().copied() {
let core = match &gates[&outs[root][0]] {
Gate::Conjugation {
memory: _,
in_count: _,
} => outs[root][0],
_ => outs[root][1],
};
let mut period = 0u64;
let mut exp = 0u64;
loop {
if outs[root].contains(&core) {
period += 1 << exp;
}
exp += 1;
root = match outs[root].iter().find(|&&v| v != core) {
Some(v) => v,
None => {
break;
}
};
}
part2 *= period;
}
println!("1) {}", part1);
println!("2) {}", part2);
Ok(())
}

160
src/bin/day21.rs Normal file
View File

@@ -0,0 +1,160 @@
use anyhow::{Context, Result};
fn bfs(grid: &Vec<u8>, height: usize, width: usize, start: (i64, i64)) -> Vec<u64> {
let mut distances = vec![u64::MAX; grid.len()];
distances[start.0 as usize * width + start.1 as usize] = 0;
let height = height as i64;
let width = width as i64;
let mut todo = Vec::from([start]);
let mut next = Vec::new();
let mut distance = 0;
while !todo.is_empty() {
for (x, y) in todo.iter() {
for (dx, dy) in [(1, 0), (-1, 0), (0, 1), (0, -1)] {
let (nx, ny) = (x + dx, y + dy);
if 0 <= nx && nx < height && 0 <= ny && ny < width {
let index = (nx * width + ny) as usize;
if grid[index] != b'#' && distance + 1 < distances[index] {
distances[index] = distance + 1;
next.push((nx, ny));
}
}
}
}
todo.clear();
todo.append(&mut next);
distance += 1;
}
return distances;
}
fn repeat_grid(factor: usize, grid: &Vec<u8>, height: usize, width: usize) -> Vec<u8> {
let mut result = vec![0; height * width * factor * factor];
for xf in 0..factor {
for yf in 0..factor {
let base = xf * height * width * factor + yf * width;
for x in 0..height {
for y in 0..width {
result[base + x * width * factor + y] = grid[x * width + y];
}
}
}
}
return result;
}
fn main() -> Result<()> {
let filename = std::env::args()
.nth(1)
.context("./day21 <path to puzzle input>")?;
let input = std::fs::read_to_string(filename)?;
let width = input.lines().next().unwrap().len();
let grid: Vec<_> = input.lines().flat_map(|line| line.bytes()).collect();
let height = grid.len() / width;
let mut start1 = (0, 0);
for x in 0..height {
for y in 0..width {
if grid[x * width + y] == b'S' {
start1 = (x as i64, y as i64);
}
}
}
let distances = bfs(&grid, height, width, start1);
let steps_p1 = 64;
let mut part1 = 0;
for x in 0..height {
for y in 0..width {
let distance = distances[x * width + y];
if distance <= steps_p1 && distance % 2 == steps_p1 % 2 {
part1 += 1;
}
}
}
let center = (height as i64 / 2, width as i64 / 2);
let scale = 2usize;
let repeats = scale * 2 + 1;
let scale_center = (
center.0 + (scale * height) as i64,
center.1 + (scale * width) as i64,
);
let scale_grid = repeat_grid(repeats, &grid, height, width);
let distances = bfs(&scale_grid, height * repeats, width * repeats, scale_center);
let mut counts = vec![vec![0; repeats]; repeats];
let limit = (scale * height + height / 2) as u64;
for qx in 0..repeats {
for qy in 0..repeats {
let base = qx * height * width * repeats + qy * width;
for x in 0..height {
for y in 0..width {
let distance = distances[base + x * width * repeats + y];
if distance <= limit as u64 && limit as u64 % 2 == distance % 2 {
counts[qx][qy] += 1;
}
}
}
}
}
let part_2_steps = 26501365;
let part_2_scale: u64 = ((part_2_steps - height / 2) / height) as u64;
let mut part2 = 0;
for x in 0..repeats {
for y in 0..repeats {
print!("{: >6} ", counts[x][y]);
}
println!();
}
// ..*#*..
// .*'o'*.
// *'o+o'*
// #o+o+o#
// *'o+o'*
// .*'o'*.
// ..*#*..
// o Even centers
let inner_even_count = ((part_2_scale - 1) | 0x1) * ((part_2_scale - 1) | 0x1);
part2 += inner_even_count * counts[scale][scale];
let inner_odd_count = (part_2_scale & (!0x1)) * (part_2_scale & (!0x1));
// + Odd centers
part2 += inner_odd_count * counts[scale][scale + 1];
// # Pointy ends
part2 += counts[0][scale];
part2 += counts[repeats - 1][scale];
part2 += counts[scale][0];
part2 += counts[scale][repeats - 1];
// * Outer edges
part2 += part_2_scale * counts[0][scale - 1];
part2 += part_2_scale * counts[0][scale + 1];
part2 += part_2_scale * counts[repeats - 1][scale - 1];
part2 += part_2_scale * counts[repeats - 1][scale + 1];
// ' Inner edges
part2 += (part_2_scale - 1) * counts[1][scale - 1];
part2 += (part_2_scale - 1) * counts[1][scale + 1];
part2 += (part_2_scale - 1) * counts[repeats - 2][scale - 1];
part2 += (part_2_scale - 1) * counts[repeats - 2][scale + 1];
println!("1) {}", part1);
println!("2) {}", part2);
Ok(())
}