Day 8
This commit is contained in:
parent
1d793e8ac3
commit
a45c29983e
118
Day8.scala
Normal file
118
Day8.scala
Normal file
|
@ -0,0 +1,118 @@
|
|||
package aoc.day8
|
||||
|
||||
import aoc._
|
||||
import scala.collection.mutable
|
||||
import scala.collection.immutable.NumericRange.Exclusive
|
||||
|
||||
enum Instruction { case Left, Right }
|
||||
|
||||
case class Node(name: String, edges: Array[String]):
|
||||
assert(edges.length == 2)
|
||||
def go(i: Instruction) = edges(i.ordinal)
|
||||
|
||||
object Parser extends CommonParser:
|
||||
import Instruction._
|
||||
val instruction = ("R" ^^ { _ => Right }) | ("L" ^^ { _ => Left })
|
||||
val instructions = rep(instruction)
|
||||
|
||||
val name = """[\dA-Z]{3}""".r
|
||||
val node = name ~ "= (" ~ name ~ "," ~ name ~ ")" ^^ {
|
||||
case (name ~ _ ~ a ~ _ ~ b ~ _) => Node(name, Array(a, b))
|
||||
}
|
||||
|
||||
// part 1
|
||||
|
||||
val instructions = Parser.parse(Parser.instructions, lines.next()).get.toArray
|
||||
def nextOf(i: Int) = if i + 1 == instructions.length then 0 else i + 1
|
||||
val map = lines
|
||||
.drop(1) // empty line
|
||||
.map(Parser.parse(Parser.node, _).get)
|
||||
.map(n => n.name -> n)
|
||||
.toMap
|
||||
|
||||
def part1 =
|
||||
val insRep =
|
||||
Iterator.unfold(0)(i => Some(instructions(i), nextOf(i)))
|
||||
val steps = insRep
|
||||
.scanLeft("AAA")((pos, ins) => map(pos).go(ins))
|
||||
.zipWithIndex
|
||||
.find(_._1 == "ZZZ")
|
||||
.map(_._2)
|
||||
println(steps.get)
|
||||
|
||||
// part 2
|
||||
case class State(node: String, insPos: Int):
|
||||
def isGood = node.endsWith("Z")
|
||||
def next = State(map(node).go(instructions(insPos)), nextOf(insPos))
|
||||
|
||||
case class Loop(loopSize: Long, goodPositions: Set[Long]):
|
||||
def shiftBy(stepsTaken: Long) =
|
||||
val inLoop = stepsTaken % loopSize
|
||||
Loop(loopSize, goodPositions.map(v => (v + loopSize - inLoop) % loopSize))
|
||||
|
||||
def scaleTo(newSize: Long) =
|
||||
assert(newSize % loopSize == 0)
|
||||
val range = Exclusive(0L, newSize, loopSize)
|
||||
Loop(newSize, goodPositions.flatMap(v => range.map(r => r + v)))
|
||||
|
||||
def getLoop(from: State) =
|
||||
val visited = mutable.Map[State, Long]()
|
||||
@scala.annotation.tailrec
|
||||
def visit(
|
||||
s: State,
|
||||
idx: Long
|
||||
): (Long, Long) = // returns loop size and steps before loop
|
||||
visited.get(s) match
|
||||
case None =>
|
||||
visited += (s -> idx)
|
||||
visit(s.next, idx + 1)
|
||||
case Some(value) => (idx - value, value)
|
||||
val (loopSize, beforeLoop) = visit(from, 0)
|
||||
val goodPos = visited.toIterator
|
||||
.filter(_._2 >= beforeLoop)
|
||||
.filter(_._1.isGood)
|
||||
.map(_._2 - beforeLoop)
|
||||
.toSet
|
||||
(beforeLoop, Loop(loopSize, goodPos))
|
||||
|
||||
def part2 =
|
||||
val start =
|
||||
map.values.filter(_.name.endsWith("A")).map(n => State(n.name, 0)).toSeq
|
||||
val loopInfos = start.map(getLoop)
|
||||
val toManuallySimulate = loopInfos.map(_._1).max
|
||||
traverse(start, toManuallySimulate) match
|
||||
case Right(v) => println(v)
|
||||
case Left(states) =>
|
||||
val loops = loopInfos.map((before, loop) =>
|
||||
loop.shiftBy(toManuallySimulate - before)
|
||||
)
|
||||
val size = loops.foldLeft(1L)((v, loop) => lcm(v, loop.loopSize))
|
||||
if loops.forall(l => l.goodPositions == Set(l.loopSize - 3))
|
||||
then // dirty hack from input
|
||||
println(toManuallySimulate + size - 3)
|
||||
else
|
||||
val scaled = loops.map(_.scaleTo(size))
|
||||
val res = scaled
|
||||
.map(_.goodPositions)
|
||||
.foldLeft(scaled.head.goodPositions)((s, pos) => s.intersect(pos))
|
||||
.min + toManuallySimulate
|
||||
println(res)
|
||||
|
||||
def lcm(a: Long, b: Long) =
|
||||
@scala.annotation.tailrec
|
||||
def gcd(a: Long, b: Long): Long =
|
||||
if b == 0 then a
|
||||
else gcd(b, a % b)
|
||||
a / gcd(a, b) * b
|
||||
|
||||
def traverse(states: Seq[State], toSimulate: Long): Either[Seq[State], Long] =
|
||||
@scala.annotation.tailrec
|
||||
def go(states: Seq[State], steps: Long): Either[Seq[State], Long] =
|
||||
if states.forall(_.isGood) then Right(steps)
|
||||
else if steps == toSimulate then Left(states)
|
||||
else go(states.map(_.next), steps + 1)
|
||||
go(states, 0)
|
||||
|
||||
@main def Day8(part: Int) = part match
|
||||
case 1 => part1
|
||||
case 2 => part2
|
716
inputs/day8.input
Normal file
716
inputs/day8.input
Normal file
|
@ -0,0 +1,716 @@
|
|||
LRLRRLLRRLRLRRLLRRLRRLLRRLRRRLRRLRRLRRRLRRLRLRLRLLLRRRLRLLRRLRLRRRLRRLLRRLRRRLRRLRLRLRRRLRLRRRLLRLLRRLRRRLLRRLRLLLRRLRLRLLRRLRLRRRLLRLLRRRLRLLRRRLRRLRRLRRRLRRRLLRLLRRRLRRRLRRLRRRLLRRRLRLRRLLRRLRLRLRRLRRLRLLRRRLRRRLLLRLRLRRRLLRRLRRRLRLRRLLRRLRRLLRLRLRRRLRLRLRLRRRLRLLRRRLRRRLRRLLLRRRR
|
||||
|
||||
LCP = (FQJ, JGH)
|
||||
FFQ = (PJQ, GPP)
|
||||
NQP = (LFH, SCS)
|
||||
BMS = (RMX, JCT)
|
||||
VHP = (GJC, SRK)
|
||||
TBP = (RQG, RLP)
|
||||
VMF = (KJL, QSR)
|
||||
QLQ = (DVJ, RQK)
|
||||
GNA = (VSL, QGP)
|
||||
KFP = (RRM, CLR)
|
||||
MRV = (DNB, QLR)
|
||||
CCX = (PLC, RQD)
|
||||
MHS = (HHB, MFG)
|
||||
FFX = (HQG, VFQ)
|
||||
NTM = (TDB, GRX)
|
||||
FMT = (SVR, PKN)
|
||||
HCT = (DLB, RQF)
|
||||
SJR = (NXV, TXT)
|
||||
XNS = (KNC, SJN)
|
||||
HPL = (XBG, XBG)
|
||||
HTG = (XVG, QLN)
|
||||
TCL = (BSB, FHJ)
|
||||
JMK = (XRK, DVL)
|
||||
GSL = (JBM, PPG)
|
||||
QLK = (GQP, TTM)
|
||||
HVR = (VHP, VKC)
|
||||
BPG = (GNX, GJJ)
|
||||
GLM = (PXJ, MKB)
|
||||
GRS = (NDC, KSG)
|
||||
KPF = (QCN, MRV)
|
||||
JTP = (GQD, XHK)
|
||||
RJG = (HCC, XMN)
|
||||
KKG = (RBC, PDJ)
|
||||
FPD = (NPJ, LLK)
|
||||
VSM = (RLB, BMS)
|
||||
JSB = (SGV, FMP)
|
||||
GJL = (DVF, BPR)
|
||||
VLH = (XXV, GSM)
|
||||
JLQ = (GKB, GVM)
|
||||
HHH = (PHG, XMR)
|
||||
KQS = (FTH, BBG)
|
||||
FCA = (QHT, STM)
|
||||
LKK = (XRL, CRP)
|
||||
MPP = (VLT, TCT)
|
||||
RQK = (JNK, KMB)
|
||||
TDG = (CHP, QHR)
|
||||
LXH = (TQG, FKX)
|
||||
LPG = (FGX, LSG)
|
||||
RLS = (LDF, DSD)
|
||||
DJH = (SGV, FMP)
|
||||
BXS = (PDG, RVN)
|
||||
FDC = (RDF, FNR)
|
||||
DTX = (MTT, HHH)
|
||||
FDD = (FDC, VBJ)
|
||||
BVN = (BGN, SBD)
|
||||
JCJ = (VDH, KXG)
|
||||
SJS = (JLQ, PDL)
|
||||
KXB = (TDB, GRX)
|
||||
MQJ = (XPN, VRR)
|
||||
BPR = (MHV, TVL)
|
||||
SQB = (DSF, GSG)
|
||||
QPC = (JTR, VSF)
|
||||
DQC = (GCQ, BFG)
|
||||
BHB = (DJV, CCN)
|
||||
PKR = (BSJ, GLH)
|
||||
RVC = (PHK, MDT)
|
||||
DHQ = (LVH, NRL)
|
||||
CQC = (XVC, DKS)
|
||||
JSX = (PXJ, MKB)
|
||||
CTL = (CQG, RLS)
|
||||
PHF = (RCC, SFR)
|
||||
CGC = (MNN, RBF)
|
||||
NDV = (LRN, GSJ)
|
||||
CFV = (PVL, JCJ)
|
||||
MKT = (SGJ, KPM)
|
||||
RBH = (FXT, VCM)
|
||||
TLL = (VLV, XGC)
|
||||
XDZ = (STM, QHT)
|
||||
JBR = (RCB, JLB)
|
||||
XHS = (LDL, KHL)
|
||||
CCC = (FVR, XQR)
|
||||
JVZ = (DJH, JSB)
|
||||
CCN = (HSB, KTT)
|
||||
MDT = (MPP, TKK)
|
||||
PCQ = (RBC, PDJ)
|
||||
PCD = (CFV, SKD)
|
||||
SQQ = (PLC, RQD)
|
||||
GSJ = (CQC, HLL)
|
||||
QLG = (BGG, FJF)
|
||||
MCG = (VSM, BBB)
|
||||
TCH = (PCQ, KKG)
|
||||
LML = (FDX, DDZ)
|
||||
KLD = (GGP, NNQ)
|
||||
RCL = (KPN, BFR)
|
||||
XLJ = (PKN, SVR)
|
||||
MTT = (XMR, PHG)
|
||||
HFL = (QGS, HJN)
|
||||
FRS = (VDK, CGC)
|
||||
KTT = (HXR, NRM)
|
||||
RTQ = (BKN, GPS)
|
||||
SBD = (GDP, CKK)
|
||||
FGG = (CGV, GJV)
|
||||
NGN = (FRS, NHT)
|
||||
HSK = (JTP, QNN)
|
||||
RVK = (TMV, TMV)
|
||||
VDD = (KSG, NDC)
|
||||
RQF = (VJS, HHK)
|
||||
TJK = (LBJ, XHC)
|
||||
RDQ = (SGB, VQJ)
|
||||
LRN = (CQC, HLL)
|
||||
HSS = (BKG, XKG)
|
||||
CGV = (XBR, JRN)
|
||||
RJV = (TQH, TGT)
|
||||
NLB = (SJS, QMR)
|
||||
TGD = (SXT, GFS)
|
||||
LLK = (FHS, CPB)
|
||||
BFM = (GMC, TKL)
|
||||
BDH = (BCS, SDD)
|
||||
AAA = (SGB, VQJ)
|
||||
CNN = (FPC, GBN)
|
||||
NBQ = (KTV, FTV)
|
||||
HXH = (MHL, FSV)
|
||||
SBX = (VPP, TCL)
|
||||
GPS = (RTC, THZ)
|
||||
MHV = (MPK, CML)
|
||||
JQV = (KGJ, PBF)
|
||||
TTL = (DLQ, RJV)
|
||||
QLC = (BVG, RBH)
|
||||
CTS = (DKN, NQP)
|
||||
FNP = (BSG, BDS)
|
||||
CXJ = (SKD, CFV)
|
||||
CSH = (HQB, VVJ)
|
||||
VLV = (JSX, GLM)
|
||||
TQT = (FTK, DCS)
|
||||
BNV = (XJR, CNM)
|
||||
SXK = (GJH, BQG)
|
||||
KLT = (RCL, RKP)
|
||||
RFX = (CTL, JNH)
|
||||
LDL = (CTS, KGK)
|
||||
SVR = (CVX, FFQ)
|
||||
PRK = (DXK, JFR)
|
||||
FST = (SXM, LPX)
|
||||
LNJ = (CCK, VMR)
|
||||
DJL = (KLT, SQP)
|
||||
QSR = (DVQ, QQF)
|
||||
DVF = (TVL, MHV)
|
||||
HFB = (STN, BQF)
|
||||
JJL = (FDC, VBJ)
|
||||
KBF = (MTM, NHK)
|
||||
KMB = (BNV, LMF)
|
||||
NSD = (XCN, VBL)
|
||||
BNG = (VTB, FTQ)
|
||||
VNF = (JFT, STT)
|
||||
GRX = (HJR, RSQ)
|
||||
LRB = (KXB, NTM)
|
||||
VMR = (VJP, LSR)
|
||||
KNC = (MSP, HSK)
|
||||
XKG = (MCG, PCX)
|
||||
VFQ = (BLL, JQF)
|
||||
BVG = (VCM, FXT)
|
||||
TJH = (TTX, BXT)
|
||||
LSG = (RKT, GHC)
|
||||
FCX = (HQQ, VJH)
|
||||
DQG = (CSH, QQX)
|
||||
STN = (FCX, CBR)
|
||||
RVN = (BXB, VJV)
|
||||
CVX = (GPP, PJQ)
|
||||
GFS = (HDV, JMF)
|
||||
KBH = (FST, FKL)
|
||||
SKD = (JCJ, PVL)
|
||||
QPM = (SRQ, CXD)
|
||||
RKT = (HVR, DCG)
|
||||
SBK = (TLL, FQR)
|
||||
VVS = (GHB, LHG)
|
||||
CXD = (RVC, RKN)
|
||||
CCK = (LSR, VJP)
|
||||
GHH = (FDR, SDR)
|
||||
GJV = (XBR, JRN)
|
||||
PDG = (BXB, VJV)
|
||||
CLB = (TSS, SFP)
|
||||
TFK = (QLN, XVG)
|
||||
SXM = (MDR, BFM)
|
||||
GLH = (BCN, RFX)
|
||||
BNJ = (DSV, BNG)
|
||||
SGJ = (CVR, DQC)
|
||||
KLS = (PHF, MRT)
|
||||
QQP = (BDM, XDZ)
|
||||
MHL = (TPK, BRB)
|
||||
BSJ = (BCN, RFX)
|
||||
XHR = (PXV, QLK)
|
||||
BDS = (KDH, CLB)
|
||||
NVP = (XNC, VTN)
|
||||
BKK = (XMJ, SRL)
|
||||
FXF = (QLC, CRG)
|
||||
DSV = (VTB, FTQ)
|
||||
LPS = (GTQ, TQT)
|
||||
JRN = (QSN, MRX)
|
||||
RKN = (PHK, MDT)
|
||||
DNM = (VFQ, HQG)
|
||||
TXF = (SQP, KLT)
|
||||
FCD = (JTR, VSF)
|
||||
FGF = (KQR, XHS)
|
||||
CKN = (CDL, JNV)
|
||||
FNR = (SQL, SXK)
|
||||
FTK = (LCD, NLB)
|
||||
KXC = (HMB, BSL)
|
||||
JNH = (RLS, CQG)
|
||||
RLB = (JCT, RMX)
|
||||
TBB = (TNQ, TDG)
|
||||
MNB = (DHQ, TCN)
|
||||
HLR = (RQK, DVJ)
|
||||
NPJ = (CPB, FHS)
|
||||
LXF = (NGN, RRF)
|
||||
SMV = (LXF, BLS)
|
||||
RFH = (FQJ, JGH)
|
||||
QNG = (BGG, FJF)
|
||||
CNM = (DJL, TXF)
|
||||
FQR = (VLV, XGC)
|
||||
XBG = (JCX, JCX)
|
||||
BQG = (DTX, LJC)
|
||||
QLN = (PRK, CBH)
|
||||
RRF = (NHT, FRS)
|
||||
NLX = (KBF, RLM)
|
||||
PLC = (HNR, BLC)
|
||||
HQQ = (GBF, LTL)
|
||||
RNS = (LXF, BLS)
|
||||
QMR = (PDL, JLQ)
|
||||
SJN = (MSP, HSK)
|
||||
GVV = (CCD, PLK)
|
||||
GGJ = (QQG, LNH)
|
||||
SRX = (RXP, QBB)
|
||||
LMF = (XJR, CNM)
|
||||
HVB = (RPM, QNH)
|
||||
TNQ = (QHR, CHP)
|
||||
BFR = (GRS, VDD)
|
||||
FTH = (SJB, MHG)
|
||||
QLR = (SGT, DXD)
|
||||
TKL = (VLH, NDQ)
|
||||
TPB = (SCV, NBX)
|
||||
BSL = (PKC, CTJ)
|
||||
HMF = (DRJ, CBJ)
|
||||
CCD = (LGN, RSM)
|
||||
HJR = (CKN, NPR)
|
||||
FDR = (KLS, DBB)
|
||||
SFP = (CXJ, PCD)
|
||||
TTM = (DSM, TXL)
|
||||
DVL = (TBB, VSX)
|
||||
JNK = (LMF, BNV)
|
||||
XNC = (KHC, MQJ)
|
||||
LBR = (MLJ, VVS)
|
||||
FXL = (MKR, CGH)
|
||||
BLC = (LBK, BNJ)
|
||||
HHK = (GVV, MGS)
|
||||
GNG = (TQG, TQG)
|
||||
MNN = (XVF, QFL)
|
||||
XVF = (JMK, SPL)
|
||||
SLL = (QPK, BVN)
|
||||
MHH = (XQK, BHB)
|
||||
CDL = (VMF, SMJ)
|
||||
LGN = (MGD, LFV)
|
||||
TSS = (CXJ, PCD)
|
||||
DCG = (VHP, VKC)
|
||||
HQL = (BKN, BKN)
|
||||
TXT = (GSL, CFQ)
|
||||
GJJ = (GNG, LXH)
|
||||
FJL = (DDL, KLF)
|
||||
LBJ = (HFL, HCX)
|
||||
SFL = (RVN, PDG)
|
||||
HHB = (CKC, SRX)
|
||||
VVJ = (TQN, CDM)
|
||||
MRL = (QKN, HCT)
|
||||
XQK = (DJV, CCN)
|
||||
BPH = (BPR, DVF)
|
||||
GJB = (DFM, XPK)
|
||||
DQJ = (JBR, BTS)
|
||||
HCX = (HJN, QGS)
|
||||
HQB = (CDM, TQN)
|
||||
QVP = (XCN, VBL)
|
||||
BSG = (KDH, CLB)
|
||||
VXM = (GJB, LTR)
|
||||
LRK = (GFS, SXT)
|
||||
GQD = (VDR, NDV)
|
||||
KFH = (BRR, BRR)
|
||||
KLV = (SCV, NBX)
|
||||
TFN = (VMX, XNS)
|
||||
GQP = (DSM, TXL)
|
||||
LJC = (HHH, MTT)
|
||||
BGG = (KLV, TPB)
|
||||
KLM = (SRL, XMJ)
|
||||
VSX = (TNQ, TDG)
|
||||
MGS = (CCD, PLK)
|
||||
DKX = (CFF, CCC)
|
||||
CDM = (DTB, MHJ)
|
||||
MJN = (KTV, FTV)
|
||||
VFC = (HMB, BSL)
|
||||
STT = (TLS, DQK)
|
||||
LFV = (MKN, TCH)
|
||||
VLT = (VNF, FCS)
|
||||
TCT = (VNF, FCS)
|
||||
QSK = (GTQ, TQT)
|
||||
XLV = (HQL, HQL)
|
||||
RCG = (TJH, VBH)
|
||||
SRQ = (RVC, RKN)
|
||||
HCC = (VKG, NJR)
|
||||
MLM = (PRB, XTB)
|
||||
QCN = (DNB, QLR)
|
||||
LVG = (XXD, HFB)
|
||||
FDB = (HPN, LMS)
|
||||
QKN = (DLB, RQF)
|
||||
QNN = (GQD, XHK)
|
||||
LLL = (XLJ, FMT)
|
||||
GPP = (MMF, KFP)
|
||||
JGV = (BKG, XKG)
|
||||
JCT = (FDS, MLM)
|
||||
TKT = (PBF, KGJ)
|
||||
CRP = (FPD, MTX)
|
||||
KLF = (XKX, JVZ)
|
||||
QGS = (NSD, QVP)
|
||||
GGP = (LQT, VFG)
|
||||
PXV = (TTM, GQP)
|
||||
GBG = (TXT, NXV)
|
||||
QNH = (FKC, LNJ)
|
||||
KHL = (KGK, CTS)
|
||||
BPC = (FCD, QPC)
|
||||
TQN = (MHJ, DTB)
|
||||
BBG = (SJB, MHG)
|
||||
HJN = (NSD, QVP)
|
||||
PVF = (GNX, GJJ)
|
||||
DQK = (NBQ, MJN)
|
||||
JCX = (VLS, FNP)
|
||||
NMG = (LSG, FGX)
|
||||
GDP = (SNK, CTG)
|
||||
TPK = (VQL, DQJ)
|
||||
VKG = (DQG, PRR)
|
||||
LDF = (XRB, HXH)
|
||||
DDZ = (QGP, VSL)
|
||||
DBX = (SDD, BCS)
|
||||
RSQ = (NPR, CKN)
|
||||
THZ = (SBX, HKR)
|
||||
VFG = (XXX, TFR)
|
||||
XMJ = (TFK, HTG)
|
||||
TVL = (MPK, CML)
|
||||
KQR = (LDL, KHL)
|
||||
XPP = (SQQ, CCX)
|
||||
BRB = (VQL, DQJ)
|
||||
BKG = (MCG, PCX)
|
||||
XPK = (XLV, MLX)
|
||||
DNB = (SGT, DXD)
|
||||
XVC = (JSH, MRL)
|
||||
BKN = (RTC, RTC)
|
||||
DVQ = (LRR, HMF)
|
||||
LNG = (VRM, QQP)
|
||||
NDC = (VRC, FGF)
|
||||
SNK = (QNG, QLG)
|
||||
XRK = (VSX, TBB)
|
||||
MHQ = (MKR, CGH)
|
||||
MXA = (VLS, FNP)
|
||||
CRM = (FDX, FDX)
|
||||
JGH = (KDL, PFN)
|
||||
VDH = (TLR, TFN)
|
||||
CVR = (GCQ, GCQ)
|
||||
DSD = (HXH, XRB)
|
||||
SDD = (TVB, KPF)
|
||||
RCB = (LCP, RFH)
|
||||
BLS = (RRF, NGN)
|
||||
DKS = (JSH, MRL)
|
||||
NBX = (QVQ, MNB)
|
||||
FKX = (RDQ, ZZZ)
|
||||
FCS = (JFT, STT)
|
||||
FQJ = (PFN, KDL)
|
||||
VLM = (VFC, KXC)
|
||||
BDM = (QHT, STM)
|
||||
VBJ = (RDF, FNR)
|
||||
LPX = (BFM, MDR)
|
||||
FDS = (PRB, XTB)
|
||||
TMM = (FCD, QPC)
|
||||
FJH = (XMN, HCC)
|
||||
XQD = (VTN, XNC)
|
||||
SCS = (PTK, LFB)
|
||||
GSM = (JRD, XCS)
|
||||
VCJ = (KQS, NMX)
|
||||
RDF = (SXK, SQL)
|
||||
BCS = (KPF, TVB)
|
||||
VPP = (FHJ, BSB)
|
||||
BKC = (TML, FGR)
|
||||
CTJ = (FDB, PMH)
|
||||
SRK = (QRP, MHS)
|
||||
TLR = (XNS, VMX)
|
||||
CQG = (LDF, DSD)
|
||||
GJC = (MHS, QRP)
|
||||
FHH = (VCJ, NPD)
|
||||
BGN = (GDP, CKK)
|
||||
VJH = (LTL, GBF)
|
||||
CRR = (FFX, DNM)
|
||||
XMR = (TMM, BPC)
|
||||
TFR = (QMB, SBK)
|
||||
PRB = (KQB, TBP)
|
||||
XMN = (VKG, NJR)
|
||||
SRL = (TFK, HTG)
|
||||
CBR = (HQQ, VJH)
|
||||
DXD = (LXL, FFC)
|
||||
SMJ = (KJL, QSR)
|
||||
VLK = (GLH, BSJ)
|
||||
TQG = (RDQ, RDQ)
|
||||
DFP = (FFX, DNM)
|
||||
SHQ = (NTM, KXB)
|
||||
GDS = (MHQ, FXL)
|
||||
QBB = (FGG, XKL)
|
||||
NNQ = (VFG, LQT)
|
||||
PBF = (CBS, PLV)
|
||||
HPN = (TJK, TRG)
|
||||
RQD = (BLC, HNR)
|
||||
TXL = (JJL, FDD)
|
||||
BBQ = (TMV, FJL)
|
||||
GNX = (GNG, GNG)
|
||||
VTB = (NRD, XPS)
|
||||
FGX = (GHC, RKT)
|
||||
NHT = (VDK, CGC)
|
||||
LTR = (DFM, XPK)
|
||||
DLQ = (TGT, TQH)
|
||||
DXK = (QLQ, HLR)
|
||||
FKC = (VMR, CCK)
|
||||
GHB = (JQV, TKT)
|
||||
XRL = (MTX, FPD)
|
||||
VHK = (XTC, QPM)
|
||||
XTB = (TBP, KQB)
|
||||
BTS = (JLB, RCB)
|
||||
QHR = (MHH, LHD)
|
||||
VJV = (CPS, NXL)
|
||||
QQX = (VVJ, HQB)
|
||||
LCD = (SJS, QMR)
|
||||
NXL = (KLM, BKK)
|
||||
JQF = (VXM, RJD)
|
||||
PKN = (CVX, FFQ)
|
||||
DBS = (RCS, PHP)
|
||||
DRJ = (CRR, DFP)
|
||||
VQL = (JBR, BTS)
|
||||
XXD = (BQF, STN)
|
||||
SGT = (LXL, FFC)
|
||||
HSB = (HXR, NRM)
|
||||
SGB = (KQV, VLM)
|
||||
GTQ = (FTK, DCS)
|
||||
MMF = (CLR, RRM)
|
||||
DKN = (LFH, SCS)
|
||||
QMB = (FQR, TLL)
|
||||
GJH = (LJC, DTX)
|
||||
JRD = (KFH, PXX)
|
||||
DLB = (HHK, VJS)
|
||||
VTN = (MQJ, KHC)
|
||||
XXV = (JRD, XCS)
|
||||
VVA = (JSB, DJH)
|
||||
DSF = (LJF, HVB)
|
||||
XTC = (CXD, SRQ)
|
||||
TQH = (GHH, TND)
|
||||
PPG = (FKG, RCG)
|
||||
VBL = (LLL, DDM)
|
||||
MPK = (DKR, MKT)
|
||||
HKR = (VPP, TCL)
|
||||
SQL = (BQG, GJH)
|
||||
TKK = (VLT, TCT)
|
||||
KHC = (XPN, VRR)
|
||||
LQH = (DLQ, RJV)
|
||||
BQF = (FCX, CBR)
|
||||
MHG = (HPL, SFH)
|
||||
HMB = (PKC, CTJ)
|
||||
NRM = (DSB, LVG)
|
||||
LHG = (TKT, JQV)
|
||||
FDX = (VSL, QGP)
|
||||
LRR = (DRJ, CBJ)
|
||||
CFF = (FVR, XQR)
|
||||
JFT = (TLS, DQK)
|
||||
JFR = (QLQ, HLR)
|
||||
BFG = (CRM, LML)
|
||||
RKP = (KPN, BFR)
|
||||
FTV = (MTQ, XRS)
|
||||
XMB = (BPH, GJL)
|
||||
RXP = (FGG, XKL)
|
||||
KGJ = (PLV, CBS)
|
||||
DSB = (HFB, XXD)
|
||||
FJF = (TPB, KLV)
|
||||
NJR = (DQG, PRR)
|
||||
JMF = (VHK, JLK)
|
||||
KJL = (QQF, DVQ)
|
||||
TCN = (LVH, NRL)
|
||||
TML = (GPM, SLL)
|
||||
XJR = (DJL, TXF)
|
||||
SRZ = (FNP, VLS)
|
||||
DFM = (XLV, MLX)
|
||||
NPR = (CDL, JNV)
|
||||
LHB = (LNH, QQG)
|
||||
VSF = (TFQ, LKK)
|
||||
CHP = (LHD, MHH)
|
||||
KPM = (CVR, DQC)
|
||||
CVL = (DSF, GSG)
|
||||
TMV = (DDL, DDL)
|
||||
PRR = (QQX, CSH)
|
||||
QRP = (MFG, HHB)
|
||||
ZZZ = (VQJ, SGB)
|
||||
QSN = (RJG, FJH)
|
||||
FKL = (LPX, SXM)
|
||||
GHC = (DCG, HVR)
|
||||
TND = (FDR, SDR)
|
||||
LVH = (XQD, NVP)
|
||||
RBF = (QFL, XVF)
|
||||
TDB = (RSQ, HJR)
|
||||
JBM = (FKG, RCG)
|
||||
GVM = (FVK, HTQ)
|
||||
QPK = (BGN, SBD)
|
||||
CFQ = (JBM, PPG)
|
||||
PVL = (VDH, KXG)
|
||||
VRM = (BDM, BDM)
|
||||
HXR = (LVG, DSB)
|
||||
JLB = (LCP, RFH)
|
||||
FHJ = (LGS, DBS)
|
||||
DSM = (JJL, FDD)
|
||||
CBH = (DXK, JFR)
|
||||
GBK = (NNQ, GGP)
|
||||
SQP = (RCL, RKP)
|
||||
PLV = (MTP, HLX)
|
||||
FKG = (VBH, TJH)
|
||||
LJF = (QNH, RPM)
|
||||
PDJ = (SRN, XPP)
|
||||
VRR = (CSF, GDS)
|
||||
KDL = (CNN, TGM)
|
||||
LXL = (KLD, GBK)
|
||||
XGC = (GLM, JSX)
|
||||
MLX = (HQL, RTQ)
|
||||
FSV = (TPK, BRB)
|
||||
PHK = (MPP, TKK)
|
||||
KDH = (SFP, TSS)
|
||||
MLJ = (LHG, GHB)
|
||||
CSF = (MHQ, FXL)
|
||||
FPC = (RVK, BBQ)
|
||||
MHJ = (QKC, VVQ)
|
||||
PKC = (FDB, PMH)
|
||||
NMX = (FTH, BBG)
|
||||
QQF = (LRR, HMF)
|
||||
PHG = (TMM, BPC)
|
||||
QVQ = (TCN, DHQ)
|
||||
FXT = (DKC, LLV)
|
||||
VRC = (KQR, XHS)
|
||||
MTX = (NPJ, LLK)
|
||||
RSM = (LFV, MGD)
|
||||
PXJ = (SFL, BXS)
|
||||
GBN = (RVK, BBQ)
|
||||
SRN = (SQQ, CCX)
|
||||
MKN = (KKG, PCQ)
|
||||
LNH = (CDB, KBH)
|
||||
FHS = (TTL, LQH)
|
||||
VLS = (BSG, BDS)
|
||||
QGP = (NMG, LPG)
|
||||
LMS = (TJK, TRG)
|
||||
XHC = (HFL, HCX)
|
||||
MFG = (SRX, CKC)
|
||||
CPS = (KLM, BKK)
|
||||
VMX = (KNC, SJN)
|
||||
XKX = (JSB, DJH)
|
||||
MKB = (SFL, BXS)
|
||||
HTQ = (VLK, PKR)
|
||||
LTL = (VHC, DKX)
|
||||
LQT = (XXX, TFR)
|
||||
QKC = (XHR, NGS)
|
||||
TPS = (SJR, GBG)
|
||||
MTP = (LHB, GGJ)
|
||||
CBS = (MTP, HLX)
|
||||
SJB = (HPL, HPL)
|
||||
VHC = (CFF, CCC)
|
||||
QFL = (JMK, SPL)
|
||||
XCN = (LLL, DDM)
|
||||
DVJ = (JNK, KMB)
|
||||
FMP = (LRK, TGD)
|
||||
CPB = (LQH, TTL)
|
||||
CTG = (QNG, QLG)
|
||||
DDM = (XLJ, FMT)
|
||||
JLK = (QPM, XTC)
|
||||
KQB = (RLP, RQG)
|
||||
MTQ = (LPS, QSK)
|
||||
KQV = (VFC, KXC)
|
||||
CKC = (QBB, RXP)
|
||||
XXX = (SBK, QMB)
|
||||
DBB = (MRT, PHF)
|
||||
LSR = (JMD, MSX)
|
||||
RCC = (CVL, SQB)
|
||||
MSP = (JTP, QNN)
|
||||
RQG = (BPG, PVF)
|
||||
KGK = (NQP, DKN)
|
||||
CML = (DKR, MKT)
|
||||
GSG = (LJF, HVB)
|
||||
DKC = (SHQ, LRB)
|
||||
MGD = (TCH, MKN)
|
||||
XHK = (VDR, NDV)
|
||||
KTV = (XRS, MTQ)
|
||||
VCM = (DKC, LLV)
|
||||
BXB = (NXL, CPS)
|
||||
LBK = (DSV, BNG)
|
||||
BXT = (FHH, LGP)
|
||||
RCS = (JBG, NLX)
|
||||
XPS = (VNS, TPS)
|
||||
DCS = (LCD, NLB)
|
||||
XQR = (FXF, GPT)
|
||||
QHT = (BKC, LHC)
|
||||
FVK = (VLK, PKR)
|
||||
CHH = (BPH, GJL)
|
||||
VDR = (GSJ, LRN)
|
||||
XBR = (QSN, MRX)
|
||||
HDV = (JLK, VHK)
|
||||
HTN = (MLJ, VVS)
|
||||
MDR = (TKL, GMC)
|
||||
JSH = (HCT, QKN)
|
||||
HMG = (JCX, SRZ)
|
||||
TRG = (XHC, LBJ)
|
||||
RLP = (BPG, PVF)
|
||||
TVB = (MRV, QCN)
|
||||
LFB = (HSS, JGV)
|
||||
PXX = (BRR, LNG)
|
||||
PMH = (LMS, HPN)
|
||||
RRM = (DBX, BDH)
|
||||
JMD = (XMB, CHH)
|
||||
GPT = (CRG, QLC)
|
||||
VSL = (NMG, LPG)
|
||||
FTQ = (NRD, XPS)
|
||||
LLV = (SHQ, LRB)
|
||||
VVQ = (XHR, NGS)
|
||||
PHP = (JBG, NLX)
|
||||
HNR = (LBK, BNJ)
|
||||
LHD = (BHB, XQK)
|
||||
CKK = (CTG, SNK)
|
||||
TGT = (TND, GHH)
|
||||
MSX = (CHH, XMB)
|
||||
VNS = (SJR, GBG)
|
||||
XRB = (MHL, FSV)
|
||||
NGS = (PXV, QLK)
|
||||
TGM = (FPC, GBN)
|
||||
XRS = (QSK, LPS)
|
||||
NXV = (CFQ, GSL)
|
||||
JBG = (RLM, KBF)
|
||||
SGV = (TGD, LRK)
|
||||
XPN = (GDS, CSF)
|
||||
RLM = (NHK, MTM)
|
||||
NPD = (NMX, KQS)
|
||||
DDL = (XKX, XKX)
|
||||
NRL = (NVP, XQD)
|
||||
XCS = (KFH, PXX)
|
||||
BCN = (CTL, JNH)
|
||||
DJV = (KTT, HSB)
|
||||
CDB = (FST, FKL)
|
||||
SFR = (CVL, SQB)
|
||||
CBJ = (CRR, DFP)
|
||||
QQG = (KBH, CDB)
|
||||
VDK = (RBF, MNN)
|
||||
PJQ = (KFP, MMF)
|
||||
VJP = (JMD, MSX)
|
||||
RTC = (HKR, SBX)
|
||||
HLL = (DKS, XVC)
|
||||
MRX = (FJH, RJG)
|
||||
KSG = (VRC, FGF)
|
||||
TFQ = (XRL, CRP)
|
||||
CGH = (LBR, HTN)
|
||||
XHA = (HKR, SBX)
|
||||
PCX = (VSM, BBB)
|
||||
VJS = (MGS, GVV)
|
||||
BSB = (LGS, DBS)
|
||||
RMX = (FDS, MLM)
|
||||
FFC = (KLD, GBK)
|
||||
FGR = (SLL, GPM)
|
||||
LHC = (TML, FGR)
|
||||
BLL = (RJD, VXM)
|
||||
SCV = (QVQ, MNB)
|
||||
TLS = (MJN, NBQ)
|
||||
PLK = (RSM, LGN)
|
||||
PTK = (JGV, HSS)
|
||||
HLX = (GGJ, LHB)
|
||||
GKB = (HTQ, FVK)
|
||||
LGS = (RCS, PHP)
|
||||
KXG = (TFN, TLR)
|
||||
MTM = (SMV, RNS)
|
||||
RBC = (XPP, SRN)
|
||||
VQJ = (KQV, VLM)
|
||||
RPM = (LNJ, FKC)
|
||||
DTB = (VVQ, QKC)
|
||||
SFH = (XBG, HMG)
|
||||
HQG = (JQF, BLL)
|
||||
DKR = (SGJ, KPM)
|
||||
SDR = (KLS, DBB)
|
||||
VKC = (GJC, SRK)
|
||||
GPM = (BVN, QPK)
|
||||
SXT = (HDV, JMF)
|
||||
MKR = (HTN, LBR)
|
||||
CLR = (DBX, BDH)
|
||||
JTR = (LKK, TFQ)
|
||||
LGP = (NPD, VCJ)
|
||||
STM = (LHC, BKC)
|
||||
TTX = (LGP, FHH)
|
||||
NRD = (TPS, VNS)
|
||||
KPN = (GRS, VDD)
|
||||
CRG = (RBH, BVG)
|
||||
BBB = (RLB, BMS)
|
||||
XVG = (CBH, PRK)
|
||||
MRT = (RCC, SFR)
|
||||
PFN = (TGM, CNN)
|
||||
JNV = (SMJ, VMF)
|
||||
FVR = (GPT, FXF)
|
||||
XKL = (CGV, GJV)
|
||||
GBF = (VHC, DKX)
|
||||
GMC = (NDQ, VLH)
|
||||
LFH = (PTK, LFB)
|
||||
GCQ = (CRM, CRM)
|
||||
SPL = (DVL, XRK)
|
||||
PDL = (GKB, GVM)
|
||||
NDQ = (XXV, GSM)
|
||||
RJD = (GJB, LTR)
|
||||
BRR = (VRM, VRM)
|
||||
NHK = (RNS, SMV)
|
||||
VBH = (TTX, BXT)
|
Loading…
Reference in a new issue