Aplenty

Advent of Code 2023 [Day 19]

19-12-2023

The Elves of Gear Island are thankful for your help and send you on your way. They even have a hang glider that someone stole from Desert Island; since you’re already going that direction, it would help them a lot if you would use it to get down there and return it to them.

As you reach the bottom of the relentless avalanche of machine parts, you discover that they’re already forming a formidable heap. Don’t worry, though - a group of Elves is already here organizing the parts, and they have a system.

To start, each part is rated in each of four categories:

Then, each part is sent through a series of workflows that will ultimately accept or reject the part. Each workflow has a name and contains a list of rules; each rule specifies a condition and where to send the part if the condition is true. The first rule that matches the part being considered is applied immediately, and the part moves on to the destination described by the rule. (The last rule in each workflow has no condition and always applies if reached.)

Consider the workflow ex{x>10:one,m<20:two,a>30:R,A}. This workflow is named ex and contains four rules. If workflow ex were considering a specific part, it would perform the following steps in order:

If a part is sent to another workflow, it immediately switches to the start of that workflow instead and never returns. If a part is accepted (sent to A) or rejected (sent to R), the part immediately stops any further processing.

The system works, but it’s not keeping up with the torrent of weird metal shapes. The Elves ask if you can help sort a few parts and give you the list of workflows and some part ratings (your puzzle input). For example:

px{a<2006:qkq,m>2090:A,rfg}
pv{a>1716:R,A}
lnx{m>1548:A,A}
rfg{s<537:gd,x>2440:R,A}
qs{s>3448:A,lnx}
qkq{x<1416:A,crn}
crn{x>2662:A,R}
in{s<1351:px,qqz}
qqz{s>2770:qs,m<1801:hdj,R}
gd{a>3333:R,R}
hdj{m>838:A,pv}

{x=787,m=2655,a=1222,s=2876}
{x=1679,m=44,a=2067,s=496}
{x=2036,m=264,a=79,s=2244}
{x=2461,m=1339,a=466,s=291}
{x=2127,m=1623,a=2188,s=1013}

The workflows are listed first, followed by a blank line, then the ratings of the parts the Elves would like you to sort. All parts begin in the workflow named in. In this example, the five listed parts go through the following workflows:

Ultimately, three parts are accepted. Adding up the x, m, a, and s rating for each of the accepted parts gives 7540 for the part with x=787, 4623 for the part with x=2036, and 6951 for the part with x=2127. Adding all of the ratings for all of the accepted parts gives the sum total of 19114.

Sort through all of the parts you’ve been given; what do you get if you add together all of the rating numbers for all of the parts that ultimately get accepted?

type Part struct {
	x, m, a, s int
}

type Rule struct {
	category    string
	operator    string
	value       int
	destination string
}

type Workflow struct {
	name  string
	rules []Rule
}

func parsePart(line string) Part {
	line = line[1 : len(line)-1]
	pairs := strings.Split(line, ",")
	part := Part{}

	for _, pair := range pairs {
		kv := strings.Split(pair, "=")
		val, _ := strconv.Atoi(kv[1])
		switch kv[0] {
		case "x":
			part.x = val
		case "m":
			part.m = val
		case "a":
			part.a = val
		case "s":
			part.s = val
		}
	}
	return part
}

func parseWorkflow(line string) Workflow {
	nameEnd := strings.Index(line, "{")
	name := line[:nameEnd]
	rulesStr := line[nameEnd+1 : len(line)-1]
	rulesArr := strings.Split(rulesStr, ",")

	workflow := Workflow{name: name}

	for _, ruleStr := range rulesArr {
		if !strings.Contains(ruleStr, ":") {
			workflow.rules = append(workflow.rules, Rule{destination: ruleStr})
			continue
		}

		parts := strings.Split(ruleStr, ":")
		condition := parts[0]
		destination := parts[1]

		category := string(condition[0])
		operator := string(condition[1])
		value, _ := strconv.Atoi(condition[2:])

		workflow.rules = append(workflow.rules, Rule{
			category:    category,
			operator:    operator,
			value:       value,
			destination: destination,
		})
	}
	return workflow
}

func evaluateRule(part Part, rule Rule) bool {
	if rule.category == "" {
		return true
	}

	var value int
	switch rule.category {
	case "x":
		value = part.x
	case "m":
		value = part.m
	case "a":
		value = part.a
	case "s":
		value = part.s
	}

	if rule.operator == ">" {
		return value > rule.value
	}
	return value < rule.value
}

func processPart(part Part, workflows map[string]Workflow) bool {
	current := "in"

	for {
		if current == "A" {
			return true
		}
		if current == "R" {
			return false
		}

		workflow := workflows[current]
		for _, rule := range workflow.rules {
			if evaluateRule(part, rule) {
				current = rule.destination
				break
			}
		}
	}
}

func main() {
	file, err := os.Open("input.txt")
	if err != nil {
		fmt.Println(err.Error())
		os.Exit(1)
	}
	defer file.Close()

	scanner := bufio.NewScanner(file)
	workflows := make(map[string]Workflow)
	var parts []Part
	parsingParts := false

	for scanner.Scan() {
		line := scanner.Text()
		if line == "" {
			parsingParts = true
			continue
		}

		if parsingParts {
			parts = append(parts, parsePart(line))
		} else {
			workflow := parseWorkflow(line)
			workflows[workflow.name] = workflow
		}
	}

	sum := 0
	for _, part := range parts {
		if processPart(part, workflows) {
			sum += part.x + part.m + part.a + part.s
		}
	}

	fmt.Printf("Sum of accepted parts: %d\n", sum)
}

Even with your help, the sorting process still isn’t fast enough.

One of the Elves comes up with a new plan: rather than sort parts individually through all of these workflows, maybe you can figure out in advance which combinations of ratings will be accepted or rejected.

Each of the four ratings (x, m, a, s) can have an integer value ranging from a minimum of 1 to a maximum of 4000. Of all possible distinct combinations of ratings, your job is to figure out which ones will be accepted.

In the above example, there are 167409079868000 distinct combinations of ratings that will be accepted.

Consider only your list of workflows; the list of part ratings that the Elves wanted you to sort is no longer relevant. How many distinct combinations of ratings will be accepted by the Elves’ workflows?

type Rule struct {
	category    string
	operator    string
	value       int
	destination string
}

type Workflow struct {
	name  string
	rules []Rule
}

type Range struct {
	min, max int
}

type RangeSet struct {
	x, m, a, s Range
}

func parseWorkflow(line string) Workflow {
	nameEnd := strings.Index(line, "{")
	name := line[:nameEnd]
	rulesStr := line[nameEnd+1 : len(line)-1]
	rulesArr := strings.Split(rulesStr, ",")

	workflow := Workflow{name: name}

	for _, ruleStr := range rulesArr {
		if !strings.Contains(ruleStr, ":") {
			workflow.rules = append(workflow.rules, Rule{destination: ruleStr})
			continue
		}

		parts := strings.Split(ruleStr, ":")
		condition := parts[0]
		destination := parts[1]

		category := string(condition[0])
		operator := string(condition[1])
		value, _ := strconv.Atoi(condition[2:])

		workflow.rules = append(workflow.rules, Rule{
			category:    category,
			operator:    operator,
			value:       value,
			destination: destination,
		})
	}
	return workflow
}

func countCombinations(r RangeSet) int64 {
	return int64(r.x.max-r.x.min+1) *
		int64(r.m.max-r.m.min+1) *
		int64(r.a.max-r.a.min+1) *
		int64(r.s.max-r.s.min+1)
}

func splitRange(r Range, op string, value int) (Range, Range) {
	if op == "<" {
		return Range{r.min, value - 1}, Range{value, r.max}
	}
	return Range{value + 1, r.max}, Range{r.min, value}
}

func processRanges(ranges RangeSet, workflows map[string]Workflow, current string) int64 {
	if current == "R" {
		return 0
	}
	if current == "A" {
		return countCombinations(ranges)
	}

	workflow := workflows[current]
	total := int64(0)
	currentRanges := ranges

	for _, rule := range workflow.rules {
		if rule.category == "" {
			total += processRanges(currentRanges, workflows, rule.destination)
			continue
		}

		var matchedRange, unmatchedRange RangeSet
		matchedRange = currentRanges
		unmatchedRange = currentRanges

		var affected *Range
		switch rule.category {
		case "x":
			affected = &matchedRange.x
		case "m":
			affected = &matchedRange.m
		case "a":
			affected = &matchedRange.a
		case "s":
			affected = &matchedRange.s
		}

		matched, unmatched := splitRange(*affected, rule.operator, rule.value)
		*affected = matched

		switch rule.category {
		case "x":
			unmatchedRange.x = unmatched
		case "m":
			unmatchedRange.m = unmatched
		case "a":
			unmatchedRange.a = unmatched
		case "s":
			unmatchedRange.s = unmatched
		}

		total += processRanges(matchedRange, workflows, rule.destination)
		currentRanges = unmatchedRange
	}

	return total
}

func main() {
	file, err := os.Open("input.txt")
	if err != nil {
		fmt.Println(err.Error())
		os.Exit(1)
	}
	defer file.Close()

	scanner := bufio.NewScanner(file)
	workflows := make(map[string]Workflow)

	for scanner.Scan() {
		line := scanner.Text()
		if line == "" {
			break
		}
		workflow := parseWorkflow(line)
		workflows[workflow.name] = workflow
	}

	initialRanges := RangeSet{
		x: Range{1, 4000},
		m: Range{1, 4000},
		a: Range{1, 4000},
		s: Range{1, 4000},
	}

	result := processRanges(initialRanges, workflows, "in")
	fmt.Printf("Total combinations: %d\n", result)
}

If you’re new to Advent of Code, it’s an annual event that takes place throughout December, featuring a series of programming puzzles that get progressively more challenging as Christmas approaches.

Click to show the input
vdm{m<3285:R,R}
vbn{m<3227:R,s<1619:R,m>3279:R,A}
zph{x>2855:qpv,s>3407:vk,s<2817:bp,bdb}
gk{a<2841:R,R}
rkz{s<1007:R,s>1491:R,R}
gt{m>2609:A,m<2381:A,x>1174:A,R}
kzg{m<2360:A,m>2480:R,s>2065:A,R}
psn{a>3249:R,a<3089:kmh,x>1856:R,A}
th{x>2086:zj,m<2607:ms,a>1005:ld,tq}
qg{x>2798:R,x<2476:R,fj}
hl{m>1226:A,m>580:R,m>345:A,R}
sp{a>1482:mlg,jn}
bv{m<2381:A,a>3624:R,x>968:A,A}
fmr{s<1351:npt,a<1770:R,s<1749:hcg,km}
zvc{x>2416:A,s<3371:R,R}
hs{s<3775:R,m<1780:A,a<1159:A,A}
jlz{m>2778:A,A}
lh{m<1043:A,x>815:R,A}
khk{m>2674:tlv,x<3040:jln,nb}
jln{x<2365:fmr,bsk}
phn{s<1966:R,a<582:A,A}
kx{s>1102:R,R}
gvt{m>2979:jl,a>753:th,kk}
dxs{s>1094:A,A}
bx{a<1606:A,m<3544:A,R}
vtg{x<559:R,A}
ctk{s>670:A,x<1658:R,x<1727:R,R}
tbx{x<1649:A,m>2128:A,A}
qph{a>1897:A,s>2954:R,A}
mzn{a>2462:A,x<3497:A,a<2364:R,A}
gp{m<3499:gl,a>887:hbv,A}
fbf{s<904:nk,a<1847:A,s<1228:A,sgn}
jh{a<1788:tkd,a<1996:A,s>1950:pjl,sh}
sd{m>3482:R,a>1619:R,m<3407:R,R}
cxk{a>3191:A,x>1247:R,R}
qpv{a>1926:xkv,a>1768:pk,pvd}
kv{a>1726:R,A}
bpl{a>2431:R,R}
sh{a<2093:A,a>2145:A,x>93:A,A}
jhb{s>206:R,s<185:A,R}
qjm{x>3457:vg,a>1957:qkk,A}
xj{x<2674:vct,vv}
ld{s>2039:djb,m<2848:sms,x>1373:qp,zt}
mn{x<3167:gcx,m<3477:dgk,std}
fpm{m>2542:R,x>2048:R,A}
dqr{s>960:lnq,s<781:pfv,R}
zb{a<3374:qsj,A}
ncb{a>1546:A,m<305:R,m>361:A,R}
vm{x>1835:R,m<2431:A,R}
cd{x>748:zxs,s<1501:hb,gkz}
jvf{s<2451:R,s<2602:A,a>206:A,A}
sbh{s>3739:qc,nx}
vz{s>2593:A,a<128:kp,m<2695:rq,A}
kq{m<3398:R,a<2549:tp,x>2630:R,qjh}
htm{a>2363:A,x<1505:A,R}
kbx{a<3853:A,m>2867:R,A}
pfp{a<2103:R,R}
hv{a<3583:R,s<760:khs,m>3321:A,A}
vjm{x<950:A,R}
ppc{s<3872:R,A}
rt{a>1820:nbb,m>2435:R,x<3412:A,bj}
vdd{x>637:pdp,s<1433:R,A}
kr{s<3273:R,m<295:R,R}
dq{s>2583:R,R}
hzl{s<2398:A,A}
tx{m>3396:R,m>3127:R,x>2701:A,R}
qnl{m>2748:R,a>3506:R,A}
trf{a>1577:A,a<1516:R,R}
tq{x<908:bbn,m>2788:cmh,vjd}
dpm{s>447:A,s>252:A,bb}
kh{x<2358:ns,m<3103:gd,hzl}
cgj{m>2472:qnl,R}
fmz{m<2821:fpm,m>2996:A,tb}
zsl{x<2039:A,s<1407:A,x<2110:A,A}
qbl{x>1914:R,s>109:A,R}
flk{a<2729:xgz,x>913:fv,m<3252:gbs,qh}
jd{a>1881:rd,x<1762:fs,s>1362:R,A}
dvh{a>2021:vl,s<1546:A,R}
khv{s<1903:A,A}
trd{m<1828:R,R}
cr{m<3795:A,R}
rrm{s>2643:R,R}
gnk{s>1086:A,m>3687:R,A}
gq{x>504:R,a>2014:A,hm}
fj{m>3438:A,A}
tg{x<1911:R,x>2728:A,A}
pk{m>3262:R,R}
tf{a<98:R,a>117:A,A}
sx{x>2400:A,mg}
zqn{a>1922:ndr,dcl}
xfv{a<1974:R,R}
lgz{a>2348:A,A}
vph{a<345:qg,zl}
pft{s<1712:cl,m>784:clx,hjz}
rbr{x>2926:vh,x<2553:jq,x<2772:kqt,zph}
xk{a<3517:A,s>479:gn,a<3828:R,A}
jg{s<3147:R,m>663:A,R}
qb{x>1909:A,x<1793:A,vm}
lf{m>3351:vrf,s<1554:ssq,s>2043:mv,cj}
vh{m>3396:kkl,x>3333:xxk,nzf}
bbn{m>2802:R,a<838:vcd,lr}
vkr{m>2286:A,a>1854:R,A}
htt{x<2997:R,s>160:A,hdg}
jp{a<2615:R,s<787:ljj,m>1879:hlp,lcq}
mqq{a>1608:A,s<3158:tct,R}
vrf{x>2996:pfp,a>2125:gnk,R}
zpt{a<3140:tnh,s<856:bv,a>3447:qq,fvh}
gbr{a>3042:R,m<454:R,m>540:A,A}
mjh{x<3163:kbx,a>3908:A,s>358:R,tpj}
blg{s<1281:A,A}
kml{x<2524:R,R}
bb{x>3453:A,x>3078:A,a<3895:A,A}
gdv{m<3881:A,A}
gd{m<2730:A,R}
hn{x<3306:R,A}
kmh{a<2957:A,x>2046:R,A}
gv{s<2655:A,x>1253:A,R}
fm{m<2945:A,A}
sr{m>1845:A,A}
dmn{a<1856:A,R}
brv{a<2860:A,x>480:A,m<3801:A,R}
mb{m<1487:A,m<1773:R,m>2089:A,R}
phc{s>1106:bpl,x<1631:pcb,s<741:vsk,nmx}
kxj{m<949:R,x>1464:R,x<1088:R,xs}
mnv{x<1482:jnv,kq}
tvl{a<989:A,m<2526:A,R}
sqb{s<232:qbl,m>3467:A,a<758:kml,A}
znm{s>1709:gzq,a<2007:zrn,R}
kgt{a<1820:A,x>388:tc,R}
zcb{x>2670:R,x>2562:R,a>1597:R,R}
jgp{m<3568:sd,x>3295:R,R}
bdb{a>1751:A,A}
gkz{s>2399:pc,m>3344:nt,m<2732:zqn,dxv}
pcb{m>2377:R,x>1560:R,R}
lj{m>3291:R,s<2036:A,m>3143:A,R}
plh{a<1800:A,x>2266:A,s>1430:A,blm}
kpg{s<1370:A,x<2968:A,s>1472:R,A}
dcl{m<2555:kzg,x>418:fsp,dqf}
std{x>3542:A,x>3369:ndc,x<3275:R,R}
qhn{s<3265:bn,df}
cs{x<3446:R,a>3652:nm,R}
jmf{a>1228:R,m>2695:R,a>1201:A,A}
bq{s>2487:bl,qjt}
gs{s<224:A,a>2846:tsv,x>2283:A,A}
np{a>132:R,m>2527:R,a>55:sc,tdf}
qp{x<1818:A,a<1249:dlr,R}
pbh{s<2998:dzl,zvc}
ln{m>2734:jlz,A}
dz{x<1000:R,a>245:R,A}
bdt{a>1961:A,m>2354:R,x<2638:vkr,jkq}
rzh{s<1005:qv,a>1847:R,s>1617:mt,kpg}
vj{m>3126:R,jfz}
xqz{m<3218:R,a<1750:R,a>1958:R,R}
km{m<2579:A,m<2613:A,x<2236:R,R}
cx{m>2851:R,m<2838:nrz,a>1735:R,R}
mff{x>2436:A,x>2348:R,a<3030:A,R}
lt{s<2885:A,R}
gnx{a>3618:sz,R}
vsk{a>2433:R,R}
dzl{s>2663:R,A}
xcc{m<1027:R,s<3547:R,a<2613:R,R}
kj{a>2901:hpt,tj}
jq{x>2238:pbh,a<1855:mqq,a<2048:slq,jlq}
zxs{m<3123:gqx,m>3677:jlk,pz}
jlk{x>1561:jd,gdv}
zv{x>332:R,x<167:vsl,A}
xkv{x<2897:A,a<2054:A,A}
qc{m>622:bdf,x>2395:R,ppc}
jl{s<1609:fh,a>519:hd,x>2166:vph,dnf}
mmh{x<541:xrk,s>1999:bmx,A}
lhk{m>2805:R,x<3278:A,A}
hg{m>569:A,dr}
bmx{m<3024:R,m<3152:A,A}
npt{x<2198:A,A}
zhs{x>2963:A,a>1972:R,x<2631:A,A}
rh{a>1741:hcm,rpz}
lpj{a<1735:pf,R}
px{s<3044:R,a<890:txm,s<3625:A,A}
ncl{s<1447:R,s>1570:R,s<1518:hc,A}
sb{a>1294:pb,s<1811:gcv,nz}
dxv{x>314:mmh,m>3048:jjv,x<150:jh,rgd}
tc{s<329:R,m<3399:A,s<362:R,A}
qs{m<2383:R,m<2471:td,x>3381:R,R}
txm{m>855:A,A}
rfg{a<3431:R,R}
pf{m>2416:R,a>1597:R,a<1523:A,R}
blm{a>1946:A,a<1853:A,A}
dnf{m<3530:bq,s>2865:cxn,bhl}
fvh{x<1006:R,R}
fh{s<675:sqb,gp}
kk{a<252:glm,lkc}
lkf{x>421:kv,pn}
xnp{a>2047:A,a>1979:R,R}
lkz{x>2366:A,a>3293:A,a>2719:R,A}
qm{m<2482:R,m<2534:R,a<1118:bh,R}
tlv{m<2815:ln,m>2874:rzh,x>3192:vpv,cx}
vrb{m<2543:A,x<1841:A,m>2828:A,A}
zm{m<280:R,s<3237:R,m<383:R,A}
dqf{m>2650:A,x>184:A,x<62:A,A}
vkm{x>3076:R,m>3365:R,x<2771:A,R}
jqv{s>3181:fb,s>3129:jg,x<792:R,R}
gl{s<1177:A,R}
lcq{x>2317:R,R}
vxv{x>1528:hk,m>1310:trd,a>557:A,zq}
tm{s<445:A,m<3113:R,A}
vgn{m>2586:A,hqz}
dlt{m>1224:hs,x>2819:R,vsj}
vg{a<1955:R,a>1994:R,R}
pvd{x>2901:R,s>3082:R,R}
kg{a>1846:R,R}
tct{s<2853:A,a>1526:A,a<1483:A,R}
vv{s>3184:R,s<2704:R,m>3298:R,A}
bg{m<3099:lp,a<2995:snd,m>3492:lv,zjm}
kc{s<853:R,A}
czn{m<1739:A,A}
rcn{m>3936:A,R}
ggr{x>1187:hsn,m>1433:R,A}
bsc{m<2630:nd,m>2855:A,R}
pjl{s<2201:R,R}
jnl{a<2814:A,x>2572:R,A}
cmn{s<2508:spt,m<713:R,x<2824:A,R}
zq{s>3253:R,s<2457:R,m<567:A,A}
qrd{s>3785:A,m<3089:A,a>1944:A,A}
mdj{s>2568:qhh,s<1489:txf,s<2171:R,tvl}
jlt{m>1022:R,m>927:R,R}
sq{s>424:rhp,kgt}
jcm{a>2406:R,s<1019:ccv,chf}
mz{a>1520:A,A}
ccv{s<852:R,s<947:A,a>2324:R,A}
pxb{a>3055:tqg,m<1303:nq,a>2545:shk,fd}
jmg{m>2347:R,A}
tb{x>1834:R,m>2922:A,x<1696:R,R}
bhl{m>3774:A,s>2205:jvf,a>219:R,A}
lkh{s>1299:jmg,zcb}
sdc{m>2844:R,x<2853:A,s<787:A,A}
qt{s<908:A,A}
nr{x<3103:R,R}
hfd{m>870:A,s>2192:A,m>832:A,R}
dl{a<1291:jmf,R}
zr{a>2786:R,x<854:A,A}
jf{m>3098:R,A}
fq{x<1778:A,R}
qnk{s>2648:sv,A}
zlb{m>2419:R,x>1405:R,s>466:R,R}
khs{a<3783:R,x>257:A,R}
tkd{m<2904:R,m>2976:R,A}
hjz{s<3045:ztr,m<485:vvh,s<3412:pzh,sbh}
zzs{x>1030:A,a<1041:R,A}
dtx{s<2338:tg,fgq}
xrk{x>454:A,x>404:R,s<2063:R,R}
qh{a>2890:A,x<391:R,a>2814:R,A}
bqf{m<177:R,s>3543:A,zm}
qzh{m<3323:vj,s>947:jgp,ttg}
hms{a<1728:fp,s>128:A,m<2494:R,fbz}
qv{a<1824:R,a>2033:R,m<2901:R,A}
dc{m<446:R,s<2207:cxk,A}
kt{m<2764:R,m>2980:xtc,A}
rtn{s<2754:lj,a>1087:jt,s<3385:A,A}
lk{a>438:R,dz}
fbz{a>1919:R,m<2793:A,A}
bh{a>909:R,R}
ztr{m<353:br,m>620:dtx,x>2211:gbr,dc}
cj{x<2730:czc,R}
zfs{s<1220:R,s<1555:A,A}
xxk{m<2748:R,x<3620:sdn,x<3757:A,A}
cb{x<357:A,R}
chf{m>2911:A,A}
df{m>606:R,s>3319:R,R}
hvq{m>3710:R,R}
fpf{m<988:A,m<1182:R,s<3267:A,R}
tl{x>1291:A,R}
fsp{s>1979:A,a>1667:A,R}
hpt{m>3794:R,a<3022:A,A}
rq{m<2422:R,A}
nbb{x<3388:R,a<1855:A,R}
bsx{m<843:chp,m>1605:jp,a<2661:xc,ccn}
gjh{s<157:R,x>523:R,A}
hd{x<1910:zzs,m<3593:rtn,x>3200:bd,ddg}
vcd{x<544:R,s>1588:A,a>809:A,A}
szv{x<2433:plh,a<1710:lkh,bdt}
bgp{a>2895:A,m>2330:A,A}
qjh{x<1892:R,R}
fc{m>969:mr,A}
gcx{x>2930:R,s>764:tx,x>2700:sqz,R}
fv{a<2870:A,A}
vct{s>3337:A,a>2044:A,A}
gzh{s>2193:R,R}
ndr{a>2092:R,R}
dlr{m>2919:A,R}
gbs{a<2845:A,x>547:R,x>358:A,A}
bf{x<1109:R,A}
vtv{m>3673:R,s<1105:A,x>685:A,A}
pv{a>2885:A,m<2511:A,x<486:R,A}
snd{m<3418:flk,a<2551:ckb,x>791:gk,vr}
pq{x>118:R,s<2846:A,a<232:A,R}
bdf{s<3864:A,m>698:R,x<2362:R,A}
dvr{x<3231:R,s<927:A,a>3715:R,A}
jzb{m<3476:A,A}
rc{a>152:R,R}
jj{s>2834:R,m<3703:R,A}
mg{x>1930:A,a<1481:A,s<2035:A,R}
tkq{s>1817:R,R}
xtc{s<1007:A,A}
br{s<2295:xx,a<2989:R,x>2612:bmc,gv}
tn{x>2389:nr,x<1385:phn,A}
khl{x>1552:vb,m<1518:R,R}
hz{a>1975:R,m<3007:R,A}
trc{a<3567:bhj,x<2549:R,dvr}
zt{s<1348:R,s<1607:vtg,A}
lqp{a>663:zf,s>431:pg,htt}
lrp{m>2834:R,m<2464:qph,A}
kjx{s>2420:rbr,m>2915:qtc,m>2528:khk,lm}
qrl{m>2199:ztq,pft}
pb{a>1761:qvv,m<1133:vx,sp}
gfd{a<2683:A,R}
bmc{x>3314:R,A}
nmx{a<2469:A,R}
nzf{a>1866:R,m>2932:dpp,A}
qgp{x>2384:R,m<725:R,x>1457:tk,lh}
xqt{a>2617:R,x<3157:R,m>2627:dk,mzn}
jvs{s<2206:mx,A}
vvh{a>3069:mml,a<2550:qck,a<2730:qx,bqf}
hp{m<2625:dxs,a>153:sdc,x<3097:tf,A}
hff{s<1965:R,A}
fb{x>1326:R,a<3108:A,R}
jnd{a<1725:dzv,a<1922:rt,a<2022:qjm,qs}
ml{s>3759:R,m>2602:R,x<129:R,A}
pvm{m<3847:A,x>660:A,m>3935:R,A}
nx{x>2437:hlz,bf}
rk{a<1089:A,a<1318:A,A}
tgb{m>3109:xh,x<283:kt,m<2695:fbf,dqr}
tgs{s<1683:qz,A}
pcn{m<1432:dmh,hn}
qvm{a>3562:cs,a<3407:vgn,cgj}
gcv{x<1855:ksf,s<1112:lqp,st}
hcm{a<1829:A,m<2611:A,A}
mf{m<169:A,R}
tfv{a>2426:A,A}
lkc{m>2646:tn,db}
dnj{a<3295:sm,a>3726:vjs,m>2988:mn,qvm}
st{m<818:qcx,x<2615:mcl,a>466:ncl,tr}
vjs{s>785:vhd,m>3387:dpm,mjh}
cfc{a<1777:A,R}
jrq{a>2905:R,s>1076:blg,R}
czc{s<1760:R,m<3105:R,m>3229:A,A}
nq{x>2604:R,x>1235:xcc,s<3566:hbg,A}
pnf{x<2128:R,m<2440:R,A}
td{s>1584:R,a>2133:A,a<2068:A,A}
bsk{m>2607:R,a<1874:R,s<1529:A,A}
bs{s<1118:xxc,s>1303:psn,s>1221:cv,fmz}
ss{x<3275:hl,s>3204:lgj,s<2949:fqx,A}
xc{m>1309:htm,A}
qhh{m<2631:A,a<928:A,R}
rdj{m>971:mmt,a<3017:A,hfd}
qsj{x>1274:A,s>647:A,m>2456:A,R}
pfv{m<2942:R,x<532:R,A}
vl{x<3816:A,m<2607:R,R}
ssz{m<2381:A,A}
gn{m>3815:A,s>634:A,x<641:R,R}
ksf{a<557:ggr,x>866:kxj,x<503:qt,kl}
jn{a>1393:R,s<1750:A,A}
clx{s>2882:pxb,cfr}
lr{x<348:R,R}
mx{x<1325:A,s>1125:R,m>2642:A,R}
nm{s<585:A,a>3682:R,m<2719:A,R}
shk{m<1889:R,m>2070:tbx,x>1902:A,zr}
vhd{s>1039:lhk,R}
nbg{s<1110:R,s>1272:R,A}
fp{a>1586:R,s<142:A,s>191:R,R}
pdp{m>2463:A,m<2340:R,A}
sgn{s>1349:R,a<1981:R,a>2079:R,R}
ms{x<1037:vdd,s<2565:mtj,x>1644:qb,qm}
bhj{x<1784:A,m<1698:A,R}
mkf{m<2830:A,a>2738:R,s>874:R,ctk}
kkl{s>3326:R,x>3293:snc,jj}
jk{x>2128:tm,m>3217:R,A}
dk{m>2893:R,R}
hm{x>451:R,R}
vjd{m>2700:pr,x<1544:R,R}
xt{s<1463:xnp,m<1468:A,gh}
bkq{a>1477:A,R}
cc{a>3527:A,x>1938:R,R}
djb{m<2769:vjm,A}
lp{m>2671:tv,x<828:fl,x>1104:zb,zpt}
vc{m<3579:jzb,m<3817:R,s<1968:A,rcn}
mt{m>2896:A,A}
tft{a>1666:A,s>225:A,s<125:A,A}
xp{x>1841:bsc,a>2600:mkf,m<2697:phc,jcm}
xdj{s>2337:R,x<2647:A,m>1373:kc,R}
bp{s<2563:A,A}
ts{s<2607:R,m<155:A,ncb}
xgz{s<906:A,x>595:R,x>323:R,R}
sqz{m<3518:A,s<337:R,x>2795:A,A}
gh{a<2053:A,R}
pz{m<3323:gf,a>1715:znm,bx}
bd{x<3647:dq,m<3744:krn,x<3798:A,A}
lgj{a<1121:A,s>3421:A,R}
hcg{a<2033:R,m>2587:A,s>1592:A,R}
bn{a<3396:A,s>3186:R,A}
zrn{m<3502:A,A}
gr{x>1220:vxv,x>578:lk,a>662:xn,lmn}
pg{a>242:mb,rc}
rj{s<539:gbq,m>3233:hcr,a>2811:bs,xp}
dxn{s<1048:R,A}
gqx{a>1731:jvs,nf}
cnm{m>3361:dkm,xkl}
vr{s<882:A,s>1204:hvq,a>2769:brv,R}
ckb{m<3658:A,s<849:pvm,m<3884:nbg,R}
pn{a<1718:R,A}
txf{s>801:R,x>2516:R,R}
ndc{s>878:A,a>3581:A,R}
hgv{s<2099:rqt,a>3174:R,A}
nz{x<2003:gr,a>809:zht,vlv}
sc{m>2434:R,m>2330:A,A}
pd{s>39:A,R}
ddp{s>2121:R,a>1635:A,A}
rpz{x<3773:R,m<2610:A,s<1705:R,R}
zpz{s>383:rbs,m<2624:tft,A}
qtc{a<1932:qzh,a<2026:cnm,lf}
mlg{s<2417:trf,kkt}
xn{a>962:cb,a>773:R,m<831:R,R}
jkq{s<1132:A,a<1808:R,R}
fmb{m<3763:A,a<1715:A,s>212:R,R}
xh{m>3503:R,a<1862:A,vdm}
qpx{a>856:A,s<1504:A,A}
jfz{x>3254:A,R}
sz{x>670:R,m>3281:R,R}
mcl{x>2231:A,a<482:zsl,a<793:kb,R}
gz{m<1155:A,a<2160:R,x>1655:A,sr}
jjv{s>1850:kg,vbn}
zjm{x>888:dx,x>457:gnx,hv}
spt{s<2071:R,a<405:R,m>658:R,A}
dgk{x>3612:A,a>3569:thn,x<3359:R,R}
bj{s<1282:A,s<1887:R,a<1786:A,A}
sdn{a>1866:A,s<2988:A,x<3477:R,R}
glm{x<1712:np,s>1662:vz,hp}
hbv{x<2633:A,m<3726:R,A}
xdv{a<2430:R,m<347:A,R}
hlz{s<3607:A,R}
qx{m<169:R,x<1978:R,R}
hlg{x<3154:A,m<340:A,A}
rs{a>954:R,a>804:A,x>2206:A,A}
bl{s<3333:R,x>1199:R,A}
lv{s>854:vtv,xk}
ssq{s>684:A,R}
hb{s>577:tgb,s<238:vzj,sq}
qq{s>1105:A,A}
ptg{m<1303:qgp,trc}
dzv{a>1565:ssz,m<2408:mz,dxn}
kl{x<625:A,m<1074:R,x<783:sj,R}
rzb{m<2938:R,m>3039:R,s>1224:A,A}
slq{x<2121:R,R}
mr{a<1154:R,s>2460:A,x>2869:R,A}
vsj{a<1161:A,A}
ds{s<3155:A,m<3905:R,R}
sm{s>732:jrq,m>3043:gfd,xqt}
cl{a<2977:bsx,ptg}
xvd{x>848:R,a<3377:R,s>481:A,A}
qvv{a<1942:xdj,a>2110:gz,xt}
tbz{x<1466:A,s>3469:A,A}
mtj{s<1165:zlb,x<1666:A,R}
pc{s<3358:lrp,x<316:vf,xqz}
jt{x>2955:A,A}
tdf{a<25:A,s<2479:R,x<1051:R,A}
szh{m>1640:R,A}
vpv{s>1156:vq,dg}
hk{x>1766:R,s<3042:R,A}
rgd{s<2075:tkq,a>1936:R,A}
lmn{m>1312:R,m>807:fpf,x<209:pq,lt}
kqt{a>1915:xj,s<3443:kdb,njz}
xkl{s<1371:pzs,m>3126:R,hz}
dr{x<740:R,x>1022:A,A}
kp{x>2914:A,a<53:R,m<2570:A,A}
hcr{a>3091:ttk,a<2531:kx,m>3655:kj,dp}
bgr{m<627:R,A}
snc{a>1884:A,A}
thn{s>872:A,R}
fqx{m<1484:A,s>2875:A,R}
vlv{s>3108:pcn,m>1372:qnk,cmn}
sv{a<345:A,A}
ddg{x>2564:bpm,s<2760:rs,s>3461:R,rk}
fgq{x>1881:A,A}
qcx{s>1536:R,x>2578:hlg,m>289:A,mf}
ttk{a>3653:A,a>3460:cc,R}
nt{a<1887:lkf,x<346:vc,gq}
cv{a<3394:fxs,m>2719:A,ljc}
tsv{s<295:R,R}
tr{m>1650:A,A}
dkm{m<3655:xfv,m<3866:bqh,zhs}
qjt{x>964:A,R}
pzs{x>2858:A,s>781:A,R}
nd{m>2362:R,A}
dp{a<2871:R,x<2142:A,R}
xx{x>1362:R,s<2092:R,a<3385:R,R}
gbq{x<1957:rrg,s<338:gs,x>2296:ddn,jk}
ztq{s>1415:ltz,x<1450:bg,x>2518:dnj,rj}
vsl{s<153:A,A}
bpm{m>3838:R,R}
vx{x<1509:hg,m>415:sx,x<2401:ts,bkq}
sms{x<881:A,m<2755:tl,zfs}
hlp{a>2758:A,a>2695:A,s>1210:A,R}
db{s>1544:A,pnf}
njz{x>2645:A,x>2604:gbc,s>3699:R,R}
mc{m<2251:sb,a<1456:gvt,x<1986:cd,kjx}
krn{a>858:A,R}
sn{a<1851:gjh,s>143:jhb,s>64:A,pd}
qck{a<2437:lgz,m<171:A,s>3443:A,kr}
fd{m<1649:A,m<1870:tbz,tfv}
rlf{x>3000:R,R}
hqz{x<3368:R,x>3789:R,A}
vb{a<3090:R,s>2713:R,a<3672:A,R}
hdg{x<3459:R,a>431:R,a>174:A,R}
cxn{s>3568:R,m<3762:R,m>3848:ds,cr}
hc{x>3465:R,s<1489:R,R}
ltz{a<3155:mnv,kh}
ccn{s<693:jnl,A}
sxn{s<1839:jlt,a>3230:khv,m<1081:R,A}
rqt{a<2959:A,A}
cfr{s>2383:khl,m>1303:hgv,s<1989:sxn,rdj}
xs{a>833:A,x>1270:R,x<1171:R,R}
mml{a>3398:R,a<3248:R,x<2479:mst,R}
hsn{a<261:A,A}
lm{x<2824:szv,jnd}
zj{x>2852:tgs,a>1185:dl,mdj}
tj{m>3837:A,R}
fxs{x>2047:A,R}
dmh{s>3563:R,m>892:A,x<2767:A,A}
ddn{m>3206:mff,x>2433:R,m>2784:dqv,lkz}
xxc{m<2789:A,A}
hbg{x>496:R,R}
ljj{m>1931:A,x<2145:R,m>1752:A,R}
dpp{m<3129:A,m>3282:A,A}
ctp{s<3319:R,A}
zl{s<2734:R,vkm}
lnq{x>515:A,m<2934:R,m<3022:A,A}
kb{m<1380:A,A}
nf{m>2720:gb,m>2501:ddp,A}
ghp{m<3185:R,A}
dg{x>3715:R,R}
tk{a>3362:A,A}
jnv{m>2920:A,x>933:gt,x>583:A,R}
nb{x<3469:rkz,a>1903:dvh,s<933:zpz,rh}
tnh{m<2412:R,s<556:A,s<950:A,A}
mv{m<3181:A,m>3290:A,m<3219:gzh,rlf}
gb{x>1455:R,a>1573:R,a<1498:A,A}
rbs{s>648:R,m>2602:R,R}
fl{a>3371:A,m<2417:bgp,s<917:pv,R}
vzj{m>2978:zv,x<308:hms,m>2537:sn,lpj}
qkk{a<1988:R,R}
dqv{m<2965:R,m>3105:A,A}
vf{a<1800:A,m>3288:A,ml}
kkt{m>1641:A,x<1517:A,m<1304:A,A}
ljc{m<2480:R,x>1834:R,R}
tv{s>922:rzb,m>2843:A,xvd}
mmt{x>1964:R,x>983:R,a<2897:R,R}
gbc{m>3110:R,R}
dx{x<1239:R,m<3357:ghp,A}
ncr{a>3208:A,s>3406:A,A}
zf{m>1081:czn,bgr}
jlq{a<2148:A,ctp}
tp{a>2357:R,A}
ttg{s>332:R,m>3609:fmb,m<3446:R,A}
pzh{x>2267:qhn,jqv}
chp{a>2505:A,a<2392:R,xdv}
sj{s>1171:R,x>725:A,R}
rhp{a<1749:A,a<1915:dmn,jf}
mst{m>243:A,x<1086:R,x<1854:R,R}
bqh{x<2726:A,A}
nrz{x<2562:R,x<2822:A,x<3027:R,A}
gf{x<1499:A,a<1937:A,hff}
qz{x>3612:A,A}
nk{x>541:R,x>376:R,m>2478:A,R}
kdb{a<1631:A,R}
tpj{m>2883:R,A}
cmh{a<909:qpx,a>964:R,A}
gzq{s<2955:A,A}
in{a<2214:mc,qrl}
rrg{m>3022:fq,x<1651:sg,vrb}
vq{m>2850:A,x>3710:R,A}
rd{m>3820:A,x<1769:R,m<3755:A,R}
vk{x<2820:cfc,x<2841:fm,qrd}
zht{a<994:px,s<2821:fc,s<3579:ss,dlt}
sg{m<2560:A,m<2762:R,m<2904:A,A}
tqg{a>3506:A,x>2080:szh,a>3286:rfg,ncr}
fs{s>2013:A,x>1691:R,m>3876:R,A}
pr{a>840:R,m>2731:A,a>789:R,A}
ns{x>836:rrm,A}

{x=356,m=225,a=1277,s=155}
{x=1490,m=2495,a=229,s=397}
{x=1824,m=467,a=87,s=470}
{x=1381,m=364,a=305,s=478}
{x=1995,m=33,a=2506,s=254}
{x=181,m=3108,a=220,s=330}
{x=638,m=3133,a=109,s=601}
{x=442,m=685,a=1002,s=161}
{x=656,m=637,a=85,s=471}
{x=91,m=20,a=1351,s=886}
{x=2111,m=1752,a=301,s=964}
{x=720,m=3136,a=1598,s=980}
{x=516,m=163,a=686,s=624}
{x=2834,m=471,a=379,s=1818}
{x=776,m=564,a=719,s=2681}
{x=58,m=1881,a=781,s=48}
{x=191,m=1398,a=721,s=1002}
{x=1323,m=1756,a=1506,s=1722}
{x=5,m=394,a=1942,s=130}
{x=432,m=305,a=484,s=222}
{x=149,m=1843,a=622,s=67}
{x=37,m=9,a=1222,s=676}
{x=99,m=1451,a=102,s=282}
{x=1195,m=1209,a=485,s=135}
{x=659,m=385,a=3008,s=1093}
{x=2679,m=1216,a=965,s=52}
{x=1757,m=1106,a=38,s=67}
{x=1164,m=658,a=3118,s=314}
{x=588,m=1136,a=575,s=37}
{x=495,m=644,a=1911,s=750}
{x=129,m=132,a=86,s=2218}
{x=129,m=1802,a=2358,s=633}
{x=1564,m=588,a=438,s=1488}
{x=144,m=155,a=797,s=212}
{x=1454,m=791,a=736,s=239}
{x=2304,m=267,a=152,s=1720}
{x=28,m=381,a=1280,s=504}
{x=1414,m=1930,a=271,s=211}
{x=2565,m=1309,a=991,s=1903}
{x=847,m=437,a=3615,s=1333}
{x=650,m=410,a=2699,s=592}
{x=769,m=223,a=2045,s=138}
{x=313,m=3316,a=174,s=1558}
{x=403,m=1744,a=119,s=24}
{x=1537,m=3591,a=1213,s=2994}
{x=1735,m=138,a=2382,s=653}
{x=440,m=1550,a=2011,s=908}
{x=1719,m=42,a=379,s=874}
{x=1468,m=1939,a=1420,s=141}
{x=1832,m=1167,a=92,s=2199}
{x=270,m=1022,a=1695,s=108}
{x=133,m=2989,a=517,s=1884}
{x=690,m=73,a=109,s=1947}
{x=1586,m=640,a=105,s=1391}
{x=893,m=847,a=501,s=19}
{x=1247,m=387,a=647,s=621}
{x=226,m=987,a=674,s=1177}
{x=881,m=1192,a=724,s=12}
{x=724,m=655,a=121,s=42}
{x=341,m=12,a=1298,s=1825}
{x=14,m=566,a=742,s=312}
{x=16,m=44,a=421,s=56}
{x=1304,m=796,a=781,s=410}
{x=1074,m=125,a=61,s=175}
{x=3278,m=630,a=2458,s=1711}
{x=158,m=336,a=1778,s=114}
{x=37,m=2386,a=1469,s=2832}
{x=1278,m=1855,a=756,s=1424}
{x=2332,m=29,a=1509,s=2041}
{x=258,m=320,a=854,s=554}
{x=154,m=2552,a=2595,s=824}
{x=385,m=276,a=1466,s=611}
{x=2613,m=1,a=1152,s=1308}
{x=296,m=1990,a=207,s=375}
{x=1091,m=1208,a=889,s=2478}
{x=1669,m=1187,a=602,s=1800}
{x=1665,m=2107,a=1,s=2346}
{x=69,m=2631,a=478,s=795}
{x=1721,m=1053,a=74,s=84}
{x=172,m=2,a=551,s=256}
{x=1863,m=2624,a=2510,s=1178}
{x=5,m=2390,a=1411,s=567}
{x=51,m=335,a=15,s=1269}
{x=310,m=1,a=1053,s=516}
{x=1491,m=453,a=170,s=2715}
{x=635,m=119,a=283,s=2179}
{x=385,m=3662,a=862,s=1376}
{x=576,m=151,a=853,s=191}
{x=436,m=559,a=2589,s=178}
{x=2983,m=1618,a=45,s=404}
{x=614,m=1733,a=953,s=1198}
{x=2205,m=1124,a=633,s=644}
{x=213,m=713,a=56,s=2917}
{x=230,m=372,a=816,s=60}
{x=165,m=1102,a=15,s=2585}
{x=3481,m=470,a=3244,s=955}
{x=13,m=37,a=1072,s=962}
{x=774,m=1024,a=2966,s=34}
{x=249,m=1309,a=1361,s=1573}
{x=997,m=1411,a=284,s=1872}
{x=691,m=1093,a=1399,s=234}
{x=221,m=1555,a=1191,s=89}
{x=860,m=1512,a=2240,s=997}
{x=63,m=2338,a=982,s=1153}
{x=854,m=302,a=577,s=1716}
{x=2852,m=119,a=116,s=774}
{x=2207,m=3246,a=1089,s=271}
{x=192,m=129,a=126,s=25}
{x=3139,m=139,a=243,s=555}
{x=454,m=528,a=3001,s=2894}
{x=76,m=1250,a=456,s=401}
{x=2949,m=1105,a=53,s=186}
{x=1120,m=166,a=139,s=1406}
{x=2473,m=341,a=758,s=247}
{x=1121,m=726,a=73,s=592}
{x=939,m=410,a=48,s=1760}
{x=1831,m=2903,a=696,s=428}
{x=251,m=5,a=8,s=1865}
{x=409,m=2553,a=695,s=1618}
{x=700,m=316,a=418,s=617}
{x=697,m=2392,a=210,s=733}
{x=645,m=1776,a=444,s=327}
{x=10,m=726,a=2,s=191}
{x=356,m=611,a=5,s=1177}
{x=1136,m=1538,a=467,s=115}
{x=830,m=920,a=103,s=628}
{x=2041,m=488,a=2479,s=1979}
{x=20,m=743,a=580,s=348}
{x=821,m=2311,a=410,s=11}
{x=919,m=1809,a=1609,s=1003}
{x=2005,m=88,a=651,s=310}
{x=68,m=170,a=2146,s=1210}
{x=3284,m=2696,a=814,s=717}
{x=218,m=1217,a=1409,s=1395}
{x=392,m=2051,a=598,s=2923}
{x=100,m=228,a=830,s=1754}
{x=589,m=947,a=364,s=1376}
{x=1602,m=991,a=1661,s=650}
{x=1468,m=550,a=497,s=2255}
{x=6,m=1084,a=2279,s=369}
{x=532,m=126,a=325,s=2347}
{x=1114,m=49,a=990,s=109}
{x=1871,m=1875,a=52,s=57}
{x=2239,m=1199,a=1593,s=1028}
{x=866,m=70,a=1564,s=462}
{x=997,m=1987,a=1690,s=1305}
{x=42,m=1854,a=1097,s=684}
{x=2446,m=2348,a=2225,s=259}
{x=837,m=2379,a=1832,s=3187}
{x=274,m=264,a=83,s=3343}
{x=489,m=740,a=369,s=1180}
{x=339,m=14,a=340,s=1642}
{x=962,m=2,a=1571,s=594}
{x=22,m=143,a=869,s=1235}
{x=263,m=1119,a=2655,s=1574}
{x=24,m=297,a=76,s=1529}
{x=169,m=974,a=611,s=482}
{x=754,m=10,a=878,s=538}
{x=2958,m=1084,a=1341,s=59}
{x=120,m=1300,a=45,s=21}
{x=2047,m=253,a=835,s=1839}
{x=2696,m=220,a=153,s=308}
{x=437,m=843,a=208,s=748}
{x=1046,m=493,a=3026,s=2508}
{x=632,m=2074,a=668,s=150}
{x=630,m=135,a=821,s=1109}
{x=3093,m=472,a=2460,s=219}
{x=295,m=724,a=2495,s=484}
{x=213,m=1465,a=595,s=597}
{x=848,m=812,a=804,s=270}
{x=221,m=1873,a=3163,s=343}
{x=1166,m=1726,a=83,s=1824}
{x=2504,m=1827,a=2017,s=1050}
{x=2325,m=1912,a=1165,s=419}
{x=2688,m=1035,a=409,s=836}
{x=691,m=1829,a=2895,s=64}
{x=1517,m=1012,a=490,s=3}
{x=810,m=405,a=1945,s=1551}
{x=1389,m=156,a=1048,s=626}
{x=1104,m=272,a=440,s=2049}
{x=3336,m=580,a=1606,s=663}
{x=81,m=129,a=557,s=1290}
{x=333,m=1193,a=2214,s=2615}
{x=1864,m=595,a=1641,s=929}
{x=245,m=168,a=193,s=585}
{x=573,m=2130,a=719,s=1786}
{x=60,m=1350,a=302,s=101}
{x=280,m=600,a=158,s=51}
{x=210,m=22,a=390,s=3413}
{x=2046,m=485,a=549,s=298}
{x=7,m=1183,a=2244,s=2205}
{x=53,m=292,a=290,s=171}
{x=233,m=1451,a=3385,s=337}
{x=814,m=1305,a=13,s=274}
{x=196,m=232,a=518,s=158}
{x=216,m=2269,a=1004,s=57}
{x=1135,m=462,a=610,s=291}
{x=141,m=401,a=444,s=170}
{x=1192,m=805,a=215,s=1281}
{x=656,m=803,a=13,s=1540}