Commit d91e0b5

bryfry <bryon@fryer.io>
2025-01-19 17:03:11
2024 master
1 parent 75afdba
2024/go/02/main.go
@@ -0,0 +1,110 @@
+package main
+
+import (
+	"advent/internal/aoc"
+	"log"
+	"strconv"
+	"strings"
+)
+
+type direction int
+
+const (
+	unknown    direction = iota
+	increasing direction = iota
+	decreasing direction = iota
+	volitile   direction = iota
+)
+
+type report struct {
+	levels     []int
+	direction  direction
+	safe       bool
+	violations int
+}
+
+func parse(line string) report {
+	sl := strings.Split(line, " ")
+
+	r := report{
+		levels:     make([]int, len(sl), len(sl)),
+		direction:  unknown,
+		safe:       true,
+		violations: 0,
+	}
+
+	previousLevel := -1
+	for i, s := range sl {
+
+		level, err := strconv.Atoi(s)
+		if err != nil {
+			log.Fatalf("failed to parse level=%q: %s\n", s, err)
+		}
+		r.levels[i] = level
+
+		if previousLevel == -1 {
+			previousLevel = level
+			continue
+		}
+
+		direction := unknown
+		if level > previousLevel {
+			direction = increasing
+		}
+		if level < previousLevel {
+			direction = decreasing
+		}
+		if r.direction == unknown {
+			r.direction = direction
+		}
+		if (r.direction == increasing && direction == decreasing) ||
+			(r.direction == decreasing && direction == increasing) {
+			r.direction = volitile
+			r.safe = false
+			r.violations += 1
+		}
+
+		diff := level - previousLevel
+		if diff < 0 {
+			diff = -diff
+		}
+		if diff < 1 || diff > 3 {
+			r.safe = false
+			r.violations += 1
+		}
+
+		previousLevel = level
+	}
+	//fmt.Printf("%+v\n", r)
+	return r
+}
+
+func solvePart1(input []string) (solution int) {
+	safeReportSum := 0
+	for _, l := range input {
+		r := parse(l)
+		if r.safe {
+			safeReportSum += 1
+		}
+	}
+	return safeReportSum
+}
+
+func solvePart2(input []string) (solution int) {
+	safeReportSum := 0
+	for _, l := range input {
+		r := parse(l)
+		if r.safe || r.violations == 1 {
+			safeReportSum += 1
+		}
+	}
+	return safeReportSum
+}
+
+func main() {
+	day := aoc.Day2
+	aoc.SolveExample(day, aoc.Part1, solvePart1, 2)
+	aoc.SolvePuzzle(day, aoc.Part1, solvePart1, 564)
+	aoc.SolveExample(day, aoc.Part2, solvePart2, 4)
+	aoc.SolvePuzzle(day, aoc.Part2, solvePart2, aoc.UnknownExpected)
+}
2024/go/03/main.go
@@ -0,0 +1,66 @@
+package main
+
+import (
+	"advent/internal/aoc"
+	"regexp"
+	"strconv"
+	"strings"
+)
+
+const (
+	dontRegex = `don't\(\).*?(do\(\)|$)`
+	mulRegex  = `mul\([0-9]+,[0-9]+\)`
+	mulPrefix = "mul("
+	mulSuffix = ")"
+	mulSep    = ","
+	findAll   = -1
+)
+
+func mul(s string) int {
+	s = strings.TrimPrefix(s, mulPrefix)
+	s = strings.TrimSuffix(s, mulSuffix)
+	numbers := strings.Split(s, mulSep)
+	// TODO assert length, check errors
+	l, _ := strconv.Atoi(numbers[0])
+	r, _ := strconv.Atoi(numbers[1])
+	return l * r
+}
+
+func solvePart1(input []string) (solution int) {
+	r := regexp.MustCompile(mulRegex)
+
+	sum := 0
+	for _, line := range input {
+		matches := r.FindAllString(line, findAll)
+		for _, m := range matches {
+			v := mul(m)
+			sum += v
+			//fmt.Printf("%s=%d\n", m, v)
+		}
+	}
+	return sum
+}
+
+func solvePart2(input []string) (solution int) {
+	d := regexp.MustCompile(dontRegex)
+	r := regexp.MustCompile(mulRegex)
+
+	sum := 0
+	for _, line := range input {
+		line = d.ReplaceAllString(line, "")
+		matches := r.FindAllString(line, findAll)
+		for _, m := range matches {
+			v := mul(m)
+			sum += v
+		}
+	}
+	return sum
+}
+
+func main() {
+	day := aoc.Day3
+	aoc.SolveExample(day, aoc.Part1, solvePart1, 161)
+	aoc.SolvePuzzle(day, aoc.Part1, solvePart1, 189600467)
+	aoc.SolveExample(day, aoc.Part2, solvePart2, 48)
+	aoc.SolvePuzzle(day, aoc.Part2, solvePart2, 107069718)
+}
2024/go/internal/aoc/aoc.go
@@ -90,14 +90,14 @@ func (i Input) Calculate() (err error) {
 
 	solution := i.Solve(input)
 	if i.Expected == UnknownExpected {
-		fmt.Printf("%8d\n", solution)
+		fmt.Printf("%12d\n", solution)
 		return nil
 	}
 	if solution != i.Expected {
-		fmt.Printf("%8d ❌\n", solution)
+		fmt.Printf("%12d ❌\n", solution)
 		return nil
 	}
-	fmt.Printf("%8d ✅\n", solution)
+	fmt.Printf("%12d ✅\n", solution)
 	return nil
 }
 
2024/go/template/main.go
@@ -1,7 +1,7 @@
 package main
 
 import (
-	"advent2024/internal/aoc"
+	"advent/internal/aoc"
 )
 
 func solvePart1(input []string) (solution int) {
2024/go/Justfile
@@ -6,9 +6,13 @@ clean:
 
 build-all:
 	just build 01
+	just build 02
+	just build 03
 
 run-all: clean build-all 
 	bin/01
+	bin/02
+	bin/03
 
 template day:
 	cp -r template {{day}}
2024/input/01-e1.txt
@@ -0,0 +1,6 @@
+3   4
+4   3
+2   5
+1   3
+3   9
+3   3
2024/input/01-e2.txt
@@ -0,0 +1,1 @@
+01-e1.txt
\ No newline at end of file
2024/input/01-p1.txt
@@ -0,0 +1,1000 @@
+62619   25903
+30326   94750
+84092   60901
+37915   71402
+15035   84878
+18777   73294
+95618   11556
+40228   14340
+64337   95628
+74895   95628
+60933   57743
+63659   71402
+96094   71097
+83473   16153
+37963   81398
+28922   62792
+33312   56198
+33041   32752
+42401   98096
+91919   15189
+90401   91974
+59102   81363
+36684   83913
+77675   26541
+20021   57743
+60735   67798
+23105   29010
+86145   20180
+34121   42958
+45549   94750
+21335   97630
+30251   83564
+98372   27653
+60916   15189
+81588   93448
+31108   43699
+57324   77707
+62333   95456
+63344   70149
+18409   84619
+39611   51457
+60844   56450
+24661   20851
+83216   54572
+26451   13071
+40779   25903
+69948   80817
+80307   79233
+74779   15189
+51254   25615
+78563   21903
+44445   11964
+19525   66306
+59383   24932
+51882   27120
+15214   94897
+25903   62440
+19142   37258
+89958   55770
+93819   95582
+92302   60901
+92207   21547
+46605   72682
+47019   87607
+91181   18344
+33427   58733
+63738   67384
+58722   92349
+68791   62680
+37498   71342
+42522   37702
+36868   17661
+93701   66457
+59077   81363
+29985   32727
+97380   39888
+91074   51996
+34578   43591
+36474   76040
+83694   30713
+23025   21910
+65352   18691
+26765   46401
+29699   58503
+22892   42958
+33183   14340
+93681   94750
+87781   44627
+73912   61890
+69862   47551
+83666   50441
+14505   93279
+76546   60901
+85046   15189
+96647   63933
+20361   60901
+54414   74008
+73807   42958
+88028   37620
+47837   67798
+39975   79734
+59258   37388
+30532   95336
+63303   99491
+29900   77971
+18886   30672
+69149   16262
+71315   12428
+92786   77707
+81870   71402
+28377   80029
+38482   83084
+42311   43457
+40133   67348
+47350   58722
+94899   39437
+80383   73056
+50777   29099
+82097   66680
+57866   94991
+93259   95336
+83163   66970
+12322   68796
+86718   60901
+62860   16276
+61538   74693
+78862   71402
+71051   79270
+65274   94750
+95081   95454
+35994   69752
+23142   21903
+41794   28870
+81143   82713
+98552   53936
+42716   27120
+31949   81363
+24961   69060
+37205   12866
+53468   93380
+56879   73099
+68473   63243
+25609   86891
+63903   58722
+42541   42958
+95908   40858
+80056   74693
+23919   68796
+88345   37620
+47504   51825
+63031   43591
+83304   92302
+44174   18382
+53110   27120
+92382   57743
+95060   74693
+20870   31509
+38624   73935
+23048   21277
+71387   51004
+94750   71744
+86172   42002
+66293   20509
+17059   42958
+67035   10373
+75394   37620
+41855   43093
+23490   70386
+14833   60901
+17857   59270
+48666   62028
+19457   15189
+97382   74244
+59739   52959
+45275   92302
+15577   57743
+87651   18920
+98358   58538
+56785   68796
+17775   94456
+68554   36320
+85702   54050
+12351   64531
+75012   73099
+24159   72040
+14167   95347
+90037   27340
+57691   43591
+47008   18691
+10950   69642
+57987   23221
+77285   25903
+54353   19109
+75869   79832
+50446   46147
+84638   42958
+17751   60901
+67211   58733
+44169   48158
+91044   38933
+79885   11964
+78386   67798
+69398   72938
+21600   84819
+50224   81272
+78056   88646
+56837   31411
+39171   61608
+78080   43591
+54257   92150
+82021   15189
+19615   98246
+24648   76873
+45477   11964
+59179   59232
+66194   25903
+40847   58733
+34375   33041
+11740   67798
+94666   55770
+68611   91621
+91769   13515
+35492   58722
+84448   92302
+56613   62766
+99254   74693
+96650   10088
+39437   51388
+33069   91054
+52418   71402
+75251   80449
+31445   36392
+71195   53910
+72666   41650
+17608   95908
+12078   45665
+17604   64904
+78291   34090
+57437   57743
+91805   96758
+99250   95908
+64757   58722
+87843   64996
+88951   45003
+74539   77911
+58846   18920
+16307   94750
+69837   95908
+76898   40815
+16205   71402
+98688   46854
+69901   42958
+53438   34139
+19832   60901
+71402   55957
+38182   59508
+75973   52291
+63146   58733
+38891   52963
+83937   42855
+13073   58733
+25736   58733
+25961   91001
+98087   36622
+62673   45577
+81720   30395
+42981   58722
+99960   94750
+89819   73483
+46042   93254
+94494   58722
+90404   16308
+88078   95908
+59505   94750
+94839   18691
+51439   60901
+45408   94213
+46301   96771
+82342   95336
+87415   50494
+68995   18920
+69097   57463
+52090   76541
+57743   71402
+92558   26149
+33393   14340
+17956   77707
+93740   44925
+84324   81363
+99452   11104
+77578   58733
+23972   67830
+95336   94750
+96712   98246
+41647   76926
+74996   47307
+31798   81363
+84956   55640
+33185   57743
+74028   83220
+12168   40375
+27300   95908
+73132   82757
+11593   37620
+76794   99477
+53045   67798
+16203   67839
+43013   30796
+21653   66822
+99785   60901
+41534   99505
+34746   98777
+91326   15189
+41238   10056
+27120   89435
+61455   55770
+32332   12560
+74212   58722
+79815   43591
+51266   24297
+29290   42582
+32564   81503
+33451   58722
+74693   44992
+90825   95908
+18434   37620
+51381   69567
+51357   80756
+41367   42958
+18034   87111
+35090   48309
+52050   19848
+31615   18691
+26163   55382
+54155   98380
+32766   95628
+66811   70762
+56835   74954
+68966   98773
+64000   80941
+17133   28149
+46113   11964
+44129   95908
+75450   11493
+33226   67397
+61957   64071
+75928   43095
+93920   67730
+65403   24083
+43381   95908
+81291   46446
+41878   68263
+92914   41085
+34436   57743
+79389   40570
+56226   23464
+79465   94750
+30601   22367
+74416   85052
+69119   20905
+78029   31117
+56600   20434
+88792   76040
+70653   15946
+26166   44783
+29517   60996
+85852   80100
+39106   11294
+77438   83568
+37856   46541
+58097   37572
+83261   77394
+71449   21903
+15327   71144
+66853   18920
+76787   51780
+62338   39437
+97231   72705
+93048   20279
+45014   58733
+48454   25802
+16977   52014
+24139   15189
+97186   68796
+63132   55770
+28951   95908
+52068   94750
+92193   25450
+94762   68225
+94439   75090
+49183   76040
+15650   72780
+43617   25654
+48000   57743
+44802   20665
+69533   40698
+99506   71402
+10188   81093
+45642   12405
+41525   95628
+63406   58722
+38086   82686
+78248   92302
+35534   25903
+40908   60096
+34570   54450
+50290   20272
+49022   76863
+69525   15189
+77707   77671
+72455   71402
+26834   55770
+68910   42924
+54344   16132
+67895   92302
+74034   55770
+29963   11964
+28687   48072
+47125   58722
+15698   23211
+25279   33041
+35856   58733
+29506   92630
+83164   58503
+25652   43591
+10150   60901
+68681   75492
+25928   62173
+90996   60901
+34150   25903
+45505   24919
+32302   16979
+70135   60901
+47220   38697
+66939   18691
+60367   74693
+46402   54059
+37333   38708
+15675   56777
+94947   64270
+92421   64575
+18644   18920
+85453   55949
+24398   25465
+51537   60901
+73029   18691
+10372   21582
+13221   60772
+96312   48448
+41962   18894
+95628   25903
+86774   67798
+97328   94768
+12739   83965
+35805   55770
+71377   51057
+27624   21704
+47608   15189
+33867   40404
+97161   68446
+20645   11768
+14224   78983
+62080   95908
+19102   75534
+63525   59254
+17179   68796
+98286   45885
+34018   97839
+99672   15422
+76115   25674
+51884   85901
+34047   27120
+29743   21903
+93768   76389
+97460   34263
+19836   94750
+83921   86722
+65076   81363
+79604   45182
+73999   95908
+51995   44729
+46824   23356
+76384   95908
+45206   95435
+48366   72348
+37898   82291
+31126   58733
+22018   83516
+12071   67798
+83202   27120
+56135   58733
+75630   37620
+14382   65093
+45237   50541
+25430   29954
+28105   70054
+67794   58722
+35237   21506
+38802   62056
+60276   31607
+35441   47957
+16202   21963
+86355   16631
+73689   21903
+69007   30198
+45510   98246
+85154   11881
+62930   58733
+70284   37620
+49335   84284
+81363   88599
+59481   25903
+45212   47786
+15302   95908
+45855   37620
+88386   92865
+11859   37620
+73264   60901
+83068   42996
+84915   76266
+17696   95628
+14367   52703
+30852   76040
+71184   78571
+42578   22158
+41197   33041
+96461   98246
+97118   60120
+77919   13391
+11964   71571
+75993   93850
+76867   23238
+22690   95908
+23262   37620
+25242   25903
+73440   44034
+98379   41045
+15645   53820
+55979   45441
+98508   64885
+34278   91871
+92424   21903
+99804   27550
+98275   39480
+77311   66522
+71457   71402
+45125   58722
+46725   31005
+11667   35829
+88568   38127
+84705   93869
+49426   58722
+95141   37826
+60901   17434
+51036   13775
+66121   55476
+99712   76291
+64183   76040
+14340   42364
+41256   42609
+88529   38809
+24137   86477
+50030   84350
+28692   39437
+76103   18691
+55768   95504
+81529   82684
+32989   68796
+62430   57117
+47161   95628
+98041   77707
+17293   60901
+26322   25201
+18691   68796
+53748   27211
+79920   61870
+13414   98246
+37753   42958
+99192   43795
+47951   78295
+65705   80132
+93270   18691
+49617   22313
+58116   68802
+41599   77917
+88070   73053
+57636   74708
+61320   55770
+28126   68211
+45326   68796
+83242   78622
+64432   95336
+66184   14776
+79662   78288
+31559   31202
+55770   37957
+23887   14766
+42104   12084
+86533   73495
+66370   77751
+90530   95628
+95401   43591
+43376   95257
+70768   58733
+12478   71571
+15957   17223
+81250   57743
+60475   10079
+40232   74136
+19774   97772
+18621   16958
+14875   76440
+90673   30928
+23096   58503
+97595   45435
+73191   42958
+81767   97406
+54334   56241
+27617   47748
+74196   73890
+83232   16958
+75027   74693
+80951   58733
+34912   42958
+85763   46782
+46474   94750
+66031   90078
+84048   71118
+94904   37620
+65760   66261
+85805   41397
+71175   16972
+48344   75703
+13102   88952
+42495   95358
+26249   18691
+19568   58733
+31959   55770
+55075   71571
+32241   88856
+94349   14340
+15189   16227
+28021   74374
+13676   33041
+59997   24406
+54305   41257
+37110   55770
+35881   32739
+21529   12177
+79138   42450
+29787   24438
+34894   68796
+21203   81363
+56933   66257
+95760   97152
+60050   94750
+41753   34287
+39341   95186
+49927   42958
+74695   31124
+57847   92741
+20288   98129
+51699   52019
+19072   68796
+82231   43640
+60534   20761
+10461   58503
+36149   27120
+96959   79965
+77827   60351
+91876   56195
+25787   60363
+86997   67798
+68922   46729
+19622   81363
+66080   91186
+27682   55770
+25942   65557
+89459   14340
+79797   74254
+96138   98246
+33238   59314
+30173   67798
+95078   68796
+54586   39437
+75238   37620
+39202   29637
+16867   19899
+82302   53887
+45302   27732
+30954   95908
+83543   98246
+54381   95336
+34144   12236
+17402   90976
+92020   71571
+62781   15189
+29546   99770
+11926   90890
+69879   68796
+76480   16106
+33328   50342
+58455   58733
+86164   14225
+33489   92807
+76961   26383
+77335   89466
+26454   94750
+67798   52555
+92671   42002
+23218   60901
+58564   34904
+19943   11014
+16341   11964
+35741   37620
+25711   95628
+70338   23595
+73099   14679
+40606   57743
+79029   84965
+40776   84207
+57543   57743
+55122   67798
+54036   89387
+34686   95336
+78969   19676
+93072   27772
+81688   14502
+18807   15639
+70774   57743
+87430   74693
+91599   26911
+37620   39437
+61886   71402
+58325   62504
+42822   33723
+67981   95908
+48046   77843
+45220   45628
+78085   33041
+46449   58722
+98918   59087
+32267   76647
+31728   27120
+15735   10521
+57336   58733
+86936   74693
+73719   50149
+84110   74693
+31202   27513
+68796   77160
+58416   69672
+57865   37620
+71850   50968
+53522   77707
+21173   42834
+92464   92615
+29744   37620
+52306   22486
+98899   16166
+22476   91919
+59967   19305
+43591   36485
+31809   63171
+79033   56343
+67656   98246
+13587   95822
+27782   42530
+19352   22300
+96569   42958
+95188   73716
+85777   27120
+76336   25264
+11596   51174
+62131   35355
+32737   87896
+21792   94314
+97535   42958
+67772   30847
+23372   10581
+91532   33811
+55873   74693
+36678   12576
+45099   73044
+43192   55240
+21903   55521
+88321   67798
+24368   39437
+79046   21903
+22881   95336
+41519   18920
+33709   68796
+72476   25903
+58512   27120
+86413   14340
+72964   16152
+96531   19099
+98791   73099
+17155   90626
+42612   27830
+55602   12838
+25290   30145
+59246   42958
+66301   29947
+36333   96445
+24171   58722
+87662   10983
+42958   71773
+58636   68421
+98695   25903
+87852   33041
+74343   57743
+39643   33041
+85380   27500
+48388   42958
+37761   77707
+97130   37620
+43580   38826
+47926   98004
+90396   18691
+45920   71402
+81997   71402
+94726   94750
+48358   27344
+71254   22993
+80275   34237
+72241   72611
+34532   68796
+55121   34876
+29318   57743
+75556   21903
+91485   21903
+58503   37620
+76040   58722
+64723   58001
+66467   95336
+53823   12613
+48859   61366
+76368   18920
+26043   94750
+60819   43935
+49793   74693
+49787   20795
+23373   58699
+69380   73099
+75462   63798
+45493   77707
+33090   98246
+40903   27639
+96473   76040
+89947   55467
+97538   76040
+94950   97842
+83847   64791
+51408   85287
+90641   25175
+59205   68796
+37106   21903
+31891   69062
+52732   21031
+16958   21903
+12830   12782
+88886   21500
+96198   96776
+10176   25136
+71571   42958
+16588   60751
+49639   94413
+94373   37620
+57909   42958
+23337   70169
+40204   10854
+51290   89920
+57936   61689
+52963   95336
+78553   55770
+28898   94685
+56962   20975
+98246   27120
+13251   31202
+12386   16958
+44211   44328
+51354   95336
+51903   84162
+74681   67073
+78792   46321
+47448   76040
+54001   41269
+83049   71402
+18666   88848
+91604   77707
+18218   74693
+70012   74693
+64340   15653
+61733   94750
+53459   25903
+89495   48179
+50543   14337
+53778   68796
+19573   76040
+48966   37491
+79009   65520
+75853   64389
+72020   55770
+85683   36279
+14091   95628
+81225   85177
+20253   99653
+83272   12892
+80793   74693
+60228   51271
+25762   30744
+45133   41216
+20563   87233
+58733   68796
+18187   58733
+27577   74693
+19450   72555
+54043   43176
+48494   42958
+88375   99208
+72864   49040
+23351   45233
+89758   20480
+11846   71402
+71123   37789
+85916   73099
+26278   42958
+45147   40390
+47700   94750
+71287   43591
+21893   95628
+30860   91205
+88771   25107
+63695   15189
+54022   78028
+18920   18691
+54215   53466
+37444   55606
+33508   79502
+51867   25903
+11633   73099
+95809   57743
+59336   58775
+92131   73399
+80096   28127
+92889   37549
+58711   16441
+56446   95908
+78562   16751
+87872   94750
+81757   64583
+94079   25109
+57657   60516
+87129   85261
+24276   41375
+58930   42002
+99351   74693
+49268   42002
+42002   64504
+81164   30052
+33506   60901
+54186   99255
+84054   85285
+63793   71402
+84019   21903
+12310   27120
+37386   33041
+72232   52481
+50872   43591
+88150   39972
+36699   31090
+11657   88797
+66278   81363
+20963   61397
+12046   55357
+81706   82079
+39853   71402
+59229   21903
+29455   80276
+14789   15466
+51944   81395
+26965   60546
+74750   55770
+80093   74559
+40585   65129
+79995   14340
+91325   69036
+36866   32940
+96216   67016
+45649   43967
+63836   21903
+57153   67798
+65895   27120
+41014   58733
+81492   95336
+55192   94646
+74304   65351
+91142   74386
+61587   43591
2024/input/01-p2.txt
@@ -0,0 +1,1 @@
+01-p1.txt
\ No newline at end of file
2024/input/02-e1.txt
@@ -0,0 +1,6 @@
+7 6 4 2 1
+1 2 7 8 9
+9 7 6 2 1
+1 3 2 4 5
+8 6 4 4 1
+1 3 6 7 9
2024/input/02-e2.txt
@@ -0,0 +1,1 @@
+02-e1.txt
\ No newline at end of file
2024/input/02-p1.txt
@@ -0,0 +1,1000 @@
+85 86 87 88 85
+30 32 35 36 36
+75 77 79 81 84 87 91
+9 11 13 15 16 18 21 27
+72 73 76 75 77 80 81
+7 9 8 11 12 10
+95 97 98 95 95
+64 67 68 69 70 67 68 72
+5 7 5 8 14
+33 35 35 38 39 41 43
+88 89 92 93 96 96 98 96
+62 65 67 70 72 72 72
+83 86 89 92 93 93 95 99
+27 28 30 31 31 38
+31 33 34 38 40 42
+32 34 36 40 38
+12 13 14 16 20 22 22
+31 32 34 38 39 43
+44 47 48 50 53 57 60 65
+22 25 26 33 35
+6 8 15 18 15
+49 52 55 62 62
+39 41 42 48 50 51 53 57
+41 42 44 47 53 54 59
+48 47 50 51 52 54 57 58
+24 22 23 24 26 23
+33 30 32 33 33
+49 47 50 53 55 59
+15 12 14 16 23
+87 85 82 83 85 87
+48 47 49 46 47 45
+13 11 8 10 10
+50 47 44 47 51
+78 77 79 81 83 86 84 91
+41 39 41 41 44
+15 12 15 15 16 17 15
+60 57 60 60 63 63
+22 20 21 21 24 28
+87 86 88 88 90 93 98
+13 12 14 18 20
+72 70 74 75 78 79 77
+51 50 53 54 58 58
+69 67 68 71 72 75 79 83
+7 5 7 9 13 15 18 24
+34 32 34 40 41
+6 4 7 9 11 18 16
+31 29 32 35 40 42 42
+64 63 65 71 73 76 79 83
+63 60 63 65 70 76
+22 22 23 26 29 31 34
+34 34 35 37 34
+66 66 68 70 71 71
+16 16 18 21 24 26 30
+55 55 56 58 59 60 67
+76 76 77 78 77 80
+19 19 16 18 17
+37 37 40 43 44 47 46 46
+17 17 16 18 20 22 26
+10 10 12 9 12 18
+3 3 3 6 9
+34 34 36 39 40 40 39
+19 19 20 23 23 26 26
+28 28 31 31 35
+36 36 37 37 39 44
+75 75 78 79 80 82 86 89
+23 23 24 28 29 31 30
+30 30 34 36 37 38 41 41
+10 10 12 13 17 18 22
+25 25 27 31 33 34 40
+1 1 8 10 11 12
+11 11 14 15 20 19
+76 76 79 86 86
+79 79 86 88 92
+64 64 67 68 70 73 80 87
+4 8 10 11 12
+46 50 52 54 55 57 59 58
+46 50 51 52 55 58 60 60
+22 26 29 32 36
+62 66 67 68 71 73 79
+56 60 63 64 63 66 67
+49 53 55 58 57 56
+27 31 34 31 31
+73 77 75 78 81 85
+10 14 16 17 16 23
+64 68 71 71 72 75 77 78
+38 42 43 43 42
+12 16 16 19 20 20
+65 69 71 73 76 77 77 81
+47 51 52 53 53 56 58 64
+25 29 31 34 36 39 43 44
+13 17 18 22 23 25 22
+30 34 38 39 41 41
+28 32 36 39 42 43 47
+32 36 39 41 45 46 53
+77 81 88 91 94
+63 67 68 69 76 74
+25 29 34 37 39 39
+74 78 79 84 85 86 90
+14 18 23 24 26 31
+35 41 44 47 48 50 51
+47 53 56 57 59 61 64 62
+13 19 22 25 28 31 34 34
+56 63 64 66 70
+65 70 71 74 79
+41 46 44 45 46 48
+13 19 16 18 16
+74 80 77 78 78
+41 46 47 46 48 52
+31 37 36 39 44
+42 48 48 51 53
+7 14 15 15 17 15
+60 67 67 69 69
+21 28 28 29 33
+59 65 68 70 73 73 79
+40 45 49 50 53 56 58 59
+83 88 92 95 93
+35 40 42 43 46 48 52 52
+72 79 80 84 85 89
+37 44 47 51 53 54 57 63
+37 42 43 44 51 54
+75 82 83 89 90 92 90
+48 53 60 62 65 68 71 71
+4 11 14 19 23
+72 79 80 85 86 88 89 96
+65 62 61 60 63
+55 54 53 50 49 48 48
+14 11 10 8 4
+24 22 20 19 18 16 15 9
+78 75 77 75 73 70 69 68
+74 73 70 73 72 74
+23 21 18 19 19
+80 77 79 77 76 72
+78 75 76 74 71 68 63
+88 85 83 83 81
+44 42 42 39 38 41
+34 31 31 29 29
+76 73 72 72 69 65
+78 77 74 72 72 67
+76 74 70 69 66
+84 82 79 76 72 70 69 71
+21 18 14 13 11 11
+67 66 62 61 58 55 53 49
+66 64 61 57 54 51 46
+77 74 73 71 69 67 61 60
+28 25 19 17 15 13 12 14
+16 14 8 6 6
+90 88 85 84 78 74
+79 77 72 69 66 65 62 57
+83 86 85 82 80
+31 34 31 30 31
+9 11 8 7 5 5
+65 68 65 63 59
+74 77 75 74 71 70 63
+32 33 30 28 27 29 26
+9 11 9 7 4 7 5 6
+92 95 94 93 90 91 91
+26 28 31 28 25 24 20
+18 19 18 15 17 11
+18 21 21 19 16 15
+10 11 8 7 6 6 4 6
+51 53 53 50 49 49
+72 73 72 71 71 70 67 63
+91 93 90 88 87 87 86 81
+58 60 56 53 51
+12 13 9 8 10
+5 6 2 1 1
+47 49 47 45 44 43 39 35
+52 53 52 51 50 46 41
+88 89 87 80 79
+17 19 18 11 13
+57 58 55 50 47 46 46
+30 31 29 27 25 23 16 12
+56 59 58 56 50 43
+29 29 26 24 23 22 20
+64 64 62 61 60 58 60
+62 62 60 57 57
+63 63 62 60 57 55 52 48
+19 19 18 17 15 14 9
+25 25 28 26 24 21 18 16
+41 41 39 38 37 39 41
+68 68 71 70 69 68 67 67
+68 68 65 68 65 61
+51 51 52 50 44
+92 92 89 89 86
+48 48 46 46 47
+92 92 91 88 88 88
+10 10 10 8 7 3
+50 50 48 47 45 45 43 37
+85 85 84 82 81 80 76 75
+60 60 58 54 51 48 50
+83 83 79 76 76
+62 62 61 57 53
+75 75 72 69 65 59
+96 96 93 92 90 89 83 82
+94 94 91 90 85 84 83 85
+44 44 37 34 31 31
+28 28 26 25 22 21 14 10
+71 71 69 66 61 55
+82 78 75 73 70
+60 56 54 52 51 50 51
+69 65 62 60 58 55 52 52
+23 19 16 14 11 10 6
+81 77 75 73 71 66
+10 6 8 7 5
+65 61 59 60 63
+76 72 70 68 69 68 65 65
+57 53 50 52 48
+87 83 82 79 81 78 73
+39 35 33 32 32 29 27 24
+98 94 93 92 92 89 87 90
+63 59 58 58 58
+30 26 26 23 19
+42 38 37 36 34 34 33 27
+44 40 39 35 34
+16 12 8 7 4 1 2
+93 89 85 82 81 80 77 77
+43 39 37 33 31 27
+52 48 44 42 35
+21 17 16 10 7 4 2 1
+71 67 62 61 58 57 54 57
+21 17 15 10 8 8
+54 50 47 44 39 35
+62 58 53 51 44
+66 59 56 53 52
+41 35 32 31 30 29 31
+44 37 35 34 32 31 30 30
+30 24 21 20 17 13
+35 30 27 26 20
+33 27 25 27 25
+55 48 45 42 45 47
+8 3 1 4 1 1
+82 77 74 75 71
+93 86 85 87 86 85 83 78
+80 74 72 71 71 69 68 65
+51 44 43 43 44
+73 68 65 64 62 62 59 59
+77 70 69 68 65 65 64 60
+91 85 82 82 79 72
+37 30 27 23 22 19 17
+91 85 83 80 76 75 74 76
+58 51 47 44 44
+45 39 37 35 31 28 24
+42 35 32 29 25 18
+67 61 59 54 53 52
+23 17 16 9 6 8
+39 34 29 26 24 23 21 21
+24 17 15 14 9 5
+97 92 90 87 81 79 78 71
+52 52 52 54 55 57 59 64
+83 87 88 89 93 93
+79 85 88 87 84
+41 41 43 43 41
+77 75 74 73 74 74
+12 19 19 22 24 24
+33 33 40 42 46
+92 86 82 80 74
+17 18 16 13 12 10 7 2
+63 68 71 72 70 71 72 72
+78 83 90 93 93
+27 28 28 29 31 33 35 38
+48 47 50 51 55
+53 53 51 48 45
+25 21 18 15 14 11 11 7
+28 33 36 38 41 39 43
+40 46 53 56 61
+70 69 70 75 73
+38 42 43 45 47 48 53
+35 38 37 34 33 30 28
+73 72 77 80 81
+92 88 85 82 82 81 78 76
+44 48 50 51 52 52 55 52
+59 64 64 67 71
+29 34 36 42 44 47 46
+53 52 53 60 63 70
+51 53 56 58 58 58
+83 80 76 74 71 65
+58 62 63 65 67 70
+87 87 84 77 77
+25 29 32 32 39
+68 70 73 75 75 78 79 78
+53 48 44 41 39 35
+73 72 75 72 79
+62 63 65 68 71 74 79
+35 39 46 48 50 52 53 57
+48 46 49 51 52 52 50
+50 50 51 53 56 56 56
+96 93 91 90 84
+27 23 20 13 11 6
+77 82 83 81 84
+91 91 87 84 86
+77 77 79 79 83
+18 18 19 23 24 28
+65 65 63 62 60 53
+85 87 88 87 86 85 84 80
+35 31 29 25 22 15
+6 7 4 1 2
+77 82 85 88 89 92 93 97
+35 36 35 34 31 24 18
+48 50 53 56 62 64
+75 71 70 73 72 71 68 66
+56 55 58 59 62 63 67 71
+22 22 26 27 29 31 32 32
+70 74 75 73 75 76 77 77
+29 30 32 35 33 36 37 43
+71 67 64 64 59
+95 97 96 95 95 93 91 87
+88 91 93 94 91 90
+92 88 87 83 81 80 76
+4 7 9 10 11 13 10
+19 18 21 25 27 30 30
+32 31 28 23 22 20 13
+31 35 38 41 45 48 49
+72 71 72 71 65
+72 72 70 65 67
+33 30 28 24 27
+73 70 67 64 63 61 61
+58 58 59 58 56 58
+71 77 78 81 83 86 86
+64 66 63 63 61
+47 51 51 53 54 55 55
+46 42 39 36 35 33 35 31
+84 86 85 79 79
+66 63 61 59 55 51
+67 69 72 74 75 81 88
+44 47 48 51 52 56 57 61
+94 94 96 94 89
+46 46 46 43 37
+73 72 74 77 79 82 84 89
+61 56 50 49 48 47 47
+31 27 25 24 22 23 22 22
+48 43 41 39 32
+40 33 30 28 25 25 21
+44 50 54 57 58 61 67
+49 51 45 44 41 44
+26 26 22 19 16 14 13
+46 52 52 54 56 53
+59 61 58 56 56 53 51 45
+27 28 33 36 39 43
+73 71 72 74 76 81 84 88
+48 43 42 40 40 38
+17 23 25 25 27 32
+96 91 88 90 88 84
+20 25 26 31 34
+19 16 16 18 21 23 26 32
+65 69 72 74 75 79
+57 53 53 51 48 49
+29 29 28 28 27 26 24 25
+91 92 89 86 82 76
+22 21 22 24 25 26 27
+91 92 94 96 97 97
+43 47 50 55 61
+22 15 13 10 6 4 5
+37 36 33 30 28 24 21
+19 19 16 14 11 11 7
+45 45 48 49 50 48 48
+28 28 27 25 25
+60 62 60 59 56 52 49 49
+14 14 17 15 16 17 22
+14 17 14 11 10 6
+9 9 11 10 14
+27 23 21 18 15 15
+54 56 63 65 67 70 70
+15 15 17 18 20 23 27
+37 36 37 41 44 45
+55 62 64 66 69 70 72 73
+72 67 65 58 56 50
+5 11 13 16 20 19
+66 73 75 75 76 79 80 82
+18 21 25 27 28
+55 55 59 62 63 62
+48 48 42 41 39 32
+67 69 66 64 63 56 54
+42 42 43 46 45 44
+43 47 49 53 54 55 57 63
+14 13 7 5 1
+59 56 57 55 56 56
+97 97 98 99 97
+33 33 31 28 26 23 19
+25 25 27 29 30
+85 81 84 82 84
+81 80 81 84 87 89 91 90
+77 78 79 82 82 84 87 91
+34 30 29 27 25 22 24
+24 24 25 26 27 30 37
+77 81 85 87 84
+28 25 26 28 26 24
+96 90 86 85 83 82 80
+9 8 5 5 5
+55 52 53 53 54 54
+73 72 73 74 81 81
+96 93 95 93 89
+48 47 46 43 37 37
+53 57 59 60 62 60 62 61
+68 70 68 66 62 61 59 61
+82 81 81 83 87
+17 17 14 10 9 2
+73 78 80 84 86
+20 13 14 11 11
+75 79 80 77 80 84
+94 91 92 95 97 97
+89 89 88 85 84 85 82 82
+79 78 80 77 79 83
+7 8 9 13 14 17 16
+70 73 74 71 69 68
+69 63 60 59 56 58 55 57
+35 31 30 23 20 17 13
+45 40 36 35 35
+32 28 26 21 19 17 17
+56 53 50 44 43 46
+60 59 58 56 52
+74 74 80 82 83 86
+84 84 87 90 93 95 95
+25 30 33 35 36 39 41 48
+12 10 13 13 14 16 19
+72 66 64 62 59 55
+90 91 89 91 92 93 97
+71 70 70 68 64
+36 32 25 24 27
+36 36 34 30 29 26 22
+26 19 18 17 14 11
+28 21 19 17 17
+20 20 18 16 14 13 16
+81 78 79 81 85 91
+38 34 31 28 27 26 25 20
+71 71 64 61 59 57
+20 20 22 20 19
+57 55 52 55 53 52
+71 72 70 71 73 76 78 78
+1 3 6 8 9 13 13
+19 18 16 12 12
+48 50 53 53 58
+90 91 88 84 83 82 80 78
+45 49 51 52 53 55 54
+15 13 10 10 9 7
+29 33 34 36 37 38 39 39
+15 21 24 25 26 30 30
+49 48 46 44 41 40 38 36
+82 85 88 91 93 95 96 97
+70 73 75 78 81 84 87 88
+71 72 73 75 78 80
+65 62 61 60 58 57 54 53
+89 91 94 95 98
+83 85 86 87 89 90
+13 11 10 9 6
+69 70 71 73 76
+86 87 90 91 93 94
+81 78 75 72 70
+75 78 79 82 84
+88 85 84 81 79 76
+65 62 60 59 56 55 52 51
+90 88 87 85 82
+36 35 33 30 28 25 23
+70 69 66 63 62
+4 5 7 8 11
+44 43 42 41 39
+6 7 8 11 14 16
+27 28 30 31 32 33
+84 82 81 80 78 77 74
+74 71 70 67 65 62 59 58
+53 56 59 61 63 65
+85 86 87 89 92 93 95 96
+49 50 53 56 58 59 61 63
+72 69 66 65 63
+57 55 54 51 50 48
+55 57 58 61 63 64 66 68
+19 21 24 26 27
+60 59 58 55 53 50 48 47
+77 76 74 71 70 68 66 63
+3 4 7 10 11 14 15 17
+58 57 54 52 49
+77 75 74 72 70
+80 77 74 72 70 68 67
+33 30 27 24 21 20 17
+44 45 46 48 50 52 54 57
+72 73 76 78 81 82 85
+88 91 92 93 94 97 98 99
+23 20 19 18 15 12 11
+39 40 43 44 45 48
+84 87 88 91 94 95
+38 35 32 30 27 26 23 22
+34 35 36 38 41 42 43
+61 63 66 68 69
+51 54 56 57 59 60
+63 66 67 70 71 74 77
+17 16 13 12 9 8
+63 61 59 57 55 52 50
+61 64 65 67 70 72 74 76
+74 72 69 68 65 64
+12 15 16 18 20
+97 95 94 91 88
+67 68 69 70 73 76 78
+51 54 57 58 61 63 65
+45 44 41 38 36 35 32
+70 73 76 78 79 81 82
+18 15 14 13 11 9 6
+44 41 40 39 36 35
+33 34 37 38 40
+30 29 26 24 21 19
+29 30 31 32 33 36 38
+48 46 45 43 41 40
+83 84 87 88 90
+48 49 51 52 53 54 57
+68 71 73 74 76 78 81 83
+79 81 84 86 87 90
+63 64 67 68 71 73
+47 49 50 51 52 53 54 56
+95 93 90 89 88 85 83 81
+46 44 42 41 40 38 35 34
+87 86 84 81 78 75 73
+84 87 90 91 92 94
+87 86 83 81 80
+11 9 6 5 3 2
+10 8 5 4 3
+49 46 44 43 40 38
+34 37 38 39 41 43 44 46
+47 50 52 54 57
+87 86 84 81 78 75
+81 84 85 87 88 91 92 94
+32 35 38 39 42 45 48 50
+74 73 71 70 69 68
+41 40 37 36 34 32 29 27
+13 15 16 19 21 23
+17 16 14 12 10 7 4
+66 69 72 73 74 75 77
+13 11 8 7 6 3 1
+13 16 17 20 21 23
+32 30 28 25 23 21
+75 73 70 67 64
+22 23 26 27 30
+67 70 72 74 75 76 79
+52 51 50 49 46 44 41 38
+64 62 59 57 55 54 52
+34 37 38 39 40 42 45
+14 11 10 7 5
+1 4 6 9 11
+75 72 70 69 67 65 64
+22 19 16 15 14
+86 85 84 83 82 79 77
+88 85 84 81 78 77 76 73
+15 14 12 10 8 7 4
+53 54 57 60 63 64 66
+72 70 67 66 63 61
+21 24 27 29 30 32 34
+21 19 18 17 15 14
+16 13 11 9 6
+49 52 53 56 58 61 64 67
+57 56 54 51 48 46 43 41
+90 91 94 95 96 97 98
+59 62 64 65 67
+33 30 27 24 21 18
+25 23 22 20 19 17
+3 4 5 7 9 11
+57 54 52 50 47 44 43 41
+86 88 91 93 94
+54 55 58 59 62 63
+91 94 95 96 99
+86 89 92 94 96
+69 70 73 74 76 77
+3 6 7 8 10 13
+65 63 60 57 56 55 53
+13 15 18 20 22
+14 13 11 10 7 6 3
+5 6 9 11 14 15
+59 62 63 65 66
+62 65 67 69 70 71 74 75
+70 69 67 64 61 59
+70 68 66 64 61 58 55 52
+3 6 7 8 9
+11 13 15 16 18 20 23
+95 93 91 89 86 83 81 79
+25 23 22 21 18 17
+63 64 67 70 71 73
+94 93 90 88 86 83
+86 84 83 80 78
+17 16 13 11 8 5 2 1
+78 79 82 84 86 88 91
+69 68 67 65 63
+77 78 79 81 83 85 87 90
+77 75 72 71 69 66
+76 77 80 81 83 85
+82 81 79 76 74 72
+63 61 58 56 53 52
+65 66 69 71 74 77 78
+37 40 41 44 47
+90 89 87 84 82
+69 72 73 76 78 81
+10 11 13 14 16 19 22
+52 51 48 47 44
+75 76 79 81 84
+82 80 77 76 75 74
+78 77 75 74 72 70 68
+12 13 15 16 17 20 22 25
+12 9 7 5 3 2
+44 42 40 37 36
+65 67 69 70 73 75 78
+92 91 89 86 83 82
+98 96 93 92 90 88
+77 74 72 71 70 69 68
+74 73 71 69 68
+85 88 91 93 95
+12 10 9 6 5 3 1
+88 87 84 82 81 80
+5 6 9 10 11 14
+20 19 17 16 14 12
+50 47 45 43 40 39
+57 54 52 49 48 46
+79 80 81 82 85
+93 90 89 88 86
+6 9 10 11 12 14 17 19
+4 7 9 10 12
+45 44 42 40 39
+1 3 6 7 9 10 13
+37 36 33 31 28 26 25 22
+25 24 23 21 19
+78 81 84 86 89
+23 21 19 16 13 10 9 7
+82 81 78 75 74 72 71 69
+94 93 90 87 84 81
+90 89 87 84 82 81 78 76
+86 83 82 80 79 76 75 72
+65 62 59 57 55 53
+41 44 47 50 53
+99 96 93 91 88 85 83 81
+94 91 90 87 85 82 81 79
+50 47 45 44 42 40 39
+79 82 84 85 86 89 91
+28 26 24 21 20 19
+22 23 25 26 27 29 30
+42 45 48 49 50 51
+90 88 87 86 84 83
+14 15 16 18 21 24
+91 89 88 87 84 83
+7 10 11 14 15 16 17
+60 58 56 55 52 51 48 47
+88 91 93 94 96
+91 88 85 83 81 78 76 74
+54 51 50 48 45 42 41 40
+84 86 89 90 92 94 96
+16 13 12 10 7
+47 49 51 53 54 55
+43 45 47 49 50 53
+97 94 92 89 86 83 81
+85 88 89 90 92 93 94
+51 53 55 58 60 61 63 65
+61 63 64 66 69 71 73
+60 58 57 56 54
+56 54 53 52 50
+89 87 84 81 78 76 73 70
+15 16 17 20 21
+34 36 37 38 41 44
+41 40 39 36 33 32 30 27
+91 92 94 96 97 98 99
+12 14 17 20 21
+40 43 44 47 50 52 54 55
+49 52 53 54 56 59 61
+91 89 86 84 82 79 78 75
+43 45 47 50 51 54 57
+51 48 45 42 41
+34 33 32 30 29
+55 57 58 60 61 64
+62 59 58 55 54
+61 63 66 69 72 74
+55 53 52 49 48 47
+20 22 25 27 30 32 34 35
+71 73 76 78 79 81
+35 36 38 39 41 44 47 48
+60 63 66 69 71 73 76 79
+90 89 86 84 82 80
+71 73 76 77 80 82 84 87
+81 82 83 86 87 89
+42 40 38 37 34
+97 96 93 91 89 86
+11 12 15 16 18
+1 2 5 8 10 12
+8 7 6 3 2 1
+71 70 67 65 64
+91 89 88 85 82 79
+69 67 65 63 61 60 58
+53 52 50 49 46 44 42 41
+21 19 18 17 14 13 11
+93 92 91 90 87 84
+34 31 29 27 26 24 23 20
+86 84 82 81 78 77
+71 73 74 75 76 79 81 82
+28 31 32 33 34 36 39
+53 56 58 60 62 65 68 69
+50 51 54 55 58
+59 61 64 65 66
+81 83 86 87 89
+65 64 62 61 60
+75 74 72 71 68 67 64 63
+29 31 34 37 39 41 43 46
+51 48 46 43 42 39 36
+34 35 38 39 42 45 48
+34 32 31 29 27 24 22 20
+28 27 26 24 21 20 17 15
+27 30 31 33 35 37 39
+47 44 41 39 36 35
+60 62 63 65 67 68 70 71
+28 31 32 34 37
+38 41 42 43 45
+65 64 61 60 59
+78 81 84 86 87 90 91 93
+45 42 41 38 37 36
+72 75 76 79 81 82 84 86
+81 78 77 74 73 72 69 66
+70 71 74 76 77 80 82 83
+17 15 12 9 8 7 6
+42 44 45 48 51 53 55
+60 58 57 55 54
+36 33 32 31 29
+49 50 53 54 56 58 60
+71 72 75 76 78 80 82 85
+38 35 32 29 26
+30 33 36 37 40
+65 62 61 58 56 54 52
+28 31 33 36 38 41 43 45
+85 83 81 80 79 77 74 71
+72 69 68 66 64 61
+48 50 52 53 54 56 58
+78 80 81 83 86 88
+57 55 52 50 49 46 45 42
+85 88 90 91 93 94
+91 89 87 86 83 82 80 77
+77 78 81 84 87 88 90 93
+67 68 69 71 74 77 78
+65 64 61 59 58 57
+24 26 29 32 35 38
+64 67 68 69 72 74 76
+82 80 77 75 73 70
+12 15 16 19 21 23 26 28
+90 88 85 84 81 80 78 75
+18 20 22 23 25 28
+79 78 77 75 73
+69 68 67 64 61
+58 60 62 64 66
+35 36 38 41 44 45
+81 84 86 87 90 91 93 96
+78 75 72 70 67 64 61 60
+5 6 9 11 13 15 17
+51 53 54 55 57 60 61
+41 38 36 34 31 29 28
+47 50 52 53 56 59 60
+27 25 22 20 18 16 13 10
+46 48 50 51 52
+93 92 90 89 88
+63 62 60 57 54 53 50 48
+82 84 86 87 90 91
+26 29 30 31 34 35 38 40
+79 77 76 74 72 70
+25 27 28 30 31
+84 85 86 88 90 92
+26 29 30 31 33 36 38
+59 62 65 66 69 70 71
+4 5 7 9 12
+10 12 14 15 16 19 22
+44 47 50 53 56 59 62 63
+85 87 89 90 91 93
+31 34 37 39 42 45 46
+32 33 34 35 36 37 39 40
+78 77 76 74 72
+37 40 42 44 47 49 52
+11 9 8 6 4 3 2
+24 22 19 18 16 13
+36 34 32 29 28 25 23 21
+87 84 81 79 76 75 73
+83 85 87 88 91 94 97 99
+36 33 32 30 29 27 24
+86 85 83 82 79 77 74
+59 56 54 52 49 48 47
+78 79 82 83 85 87 88
+36 39 42 45 47 50
+87 89 90 93 94 96 99
+93 94 95 97 98
+20 17 15 14 11 9 6 3
+73 70 67 66 64
+84 85 87 90 92 94 97
+49 46 45 43 40
+4 7 8 9 12
+28 26 24 21 18 16
+15 16 19 20 23
+14 15 16 17 20 22
+45 46 49 50 53 54 56 58
+58 57 55 54 51 49
+52 55 58 61 62 65 67 70
+28 30 31 34 35 38
+40 38 35 32 30 29 26 24
+91 88 85 84 82 79 77
+35 34 32 29 27 26 25
+60 57 55 52 51
+85 88 90 91 94 97
+13 16 18 19 22 24 25
+41 42 43 44 45 48 49
+32 34 36 38 41 42
+13 14 17 20 22 25
+51 48 46 44 43
+60 63 65 66 68 71 72 74
+17 20 22 25 27 30
+75 77 80 82 85 87
+73 74 77 80 82 85
+78 77 74 72 69 67
+21 19 17 15 13 11
+43 46 47 50 52
+79 80 82 85 86
+74 76 78 80 82 84 87 90
+92 90 88 86 84 82 79
+12 10 9 7 6 3
+11 9 8 7 6
+29 28 27 24 22 20
+75 76 78 80 82
+66 64 62 60 57 56 55
+58 56 54 53 52 50 47 45
+13 14 17 19 21 24 25 26
+14 17 19 22 25 27 30 32
+90 89 86 84 83 81 80
+52 49 46 45 42 41
+39 40 41 43 46
+53 56 58 61 62
+83 81 79 77 75 72 70
+59 60 62 65 66
+34 35 36 39 40 41 43 45
+80 81 82 83 86 89 90 92
+17 16 14 11 10 8 5
+20 18 16 14 12 11 8 5
+54 51 50 47 45 42 40 39
+96 93 92 90 89 87 85
+85 87 90 91 93 95 96 99
+49 50 53 55 57
+16 19 21 24 25
+64 65 68 69 71 73
+23 26 29 32 34 37 38 41
+79 82 85 87 90
+88 89 92 94 95 98
+22 20 19 17 14 11
+74 72 71 69 66 64 61
+29 26 25 24 22 19
+56 54 53 52 49 48 45
+28 31 34 36 37 38 40
+23 22 21 18 16 15 12
+43 44 47 50 52 53 55 58
+92 91 88 85 82 80
+41 43 44 47 48 51 53
+18 16 13 11 9 7 6 4
+84 85 88 90 91 92 93 96
+57 58 61 62 64 67 70 73
+57 58 59 62 63
+26 24 23 21 18 17
+95 93 92 91 88 85 82
+63 65 67 68 71 72 75
+85 86 89 92 95 97 99
+29 27 26 25 22 21 18
+40 42 45 46 47 49
+43 45 47 49 50 53 55
+94 92 89 88 86 83 82 80
+28 27 26 23 21
+85 88 90 92 94 96 97
+58 56 54 52 49 46 45 42
+64 67 69 72 74 75 76 78
+8 10 11 13 16 19 20
+97 96 94 92 90
+59 61 62 64 66 69 71
+74 73 70 68 66
+20 23 25 27 28 30 32
+34 31 30 29 27 25 22 19
+44 42 40 39 38 36 34
+93 90 88 85 82 79 76 73
+69 68 66 64 63 60 58 56
+13 12 10 8 7 6 5 3
+68 71 74 75 76
+40 39 36 34 31 28 27 25
+48 45 44 42 39 38 37
+68 70 72 75 78 80 83
+84 87 88 91 93 96 99
+45 44 41 39 37 35
+16 14 11 9 8 6 3 2
+77 80 81 83 86 87
+18 21 23 26 27 28 30 31
+12 15 16 19 21 24
+27 29 31 32 33 35
+77 76 74 73 70 67 64 63
+28 30 33 35 36 37 38
+49 48 46 43 40 37 34 32
+75 77 80 82 83 85 88 91
+20 17 14 13 12 10 9 6
+63 60 57 55 54
+18 21 24 25 26
+63 65 68 70 73
+88 87 85 84 83 80
+61 64 67 68 70
+21 22 24 27 29 32 34
+52 51 49 48 46 43
+82 81 78 76 74 73 71
+24 21 20 19 17
+66 63 62 61 58 57 54 51
+69 66 64 62 61 59 57 56
+14 17 19 20 21 24
+3 4 5 8 9 11 13 15
+81 79 78 75 74 73
+30 31 33 34 36 37 40
+66 63 62 60 58 56 55 52
+15 16 18 20 21
+77 79 81 82 83 84 87
+7 8 9 11 12 15 17
+19 16 14 12 10 8 7 6
+42 45 47 49 52
+42 39 36 33 30 28 26
+32 30 28 25 22 21 20
+73 70 69 67 65 64
+10 12 13 14 15 18
+72 69 66 64 63
+75 76 79 81 82 85 87
+63 66 69 71 74
+17 14 13 10 8 7 5 2
+52 55 57 58 60 62
+41 42 45 48 50 51
+61 60 58 56 55 54 51
+56 57 59 60 63 64 66
+79 78 77 76 75 73 70 68
+93 91 89 87 85 84
+39 38 37 36 33 31 29 28
+32 35 38 39 42 44 45
+12 15 18 19 22 25
+88 90 91 92 95 96 98
+45 43 41 38 35 33
+22 20 17 16 14
+52 50 49 47 45 42
+98 95 94 93 91
+6 7 9 10 11 12 15 18
+55 58 61 62 64 66 68
+67 69 72 75 76 78
+96 93 90 87 84
+58 60 63 66 69
+51 52 53 56 57 58 59
+24 26 29 32 35 36
+35 32 29 27 25 22 19 16
+34 33 31 28 27 26
+45 44 41 38 37 34
+32 31 30 29 27 24 23
+59 60 63 65 66 69
+61 59 58 55 53 51 48
+80 81 84 87 90 92
+67 64 63 61 58 56
+58 61 64 65 67 68 69
+52 55 56 58 59 60
+76 75 72 69 67 64 62
+78 81 82 83 85 88
+48 46 44 42 41 39 36 33
+65 64 63 60 59 57 54 51
+56 58 59 60 61 63
+64 66 69 72 74 77 79 81
+36 34 32 30 28 26 23
+82 80 79 77 76 74 72
+22 24 27 28 31
+67 66 63 61 59 58 55
+55 57 59 62 63 64
+4 5 7 9 10 12 14
+57 58 59 62 64 65 67 68
+21 19 16 14 11 10 8 5
+33 31 29 26 24 22 19
+66 63 60 59 57
+54 51 50 47 46 44 43
+97 94 93 92 89 86
+16 19 22 23 25 27
+46 44 43 41 40 39
+74 72 70 68 66 65 63 60
+55 54 51 50 48 45
+17 18 21 22 23 26 28 30
+61 62 65 66 67
+77 75 73 70 67 64 61 60
+48 50 53 56 59 61 64 65
+75 78 79 81 83 86
+52 54 56 59 61 63 66 68
+45 42 40 39 36 35 32 31
+77 75 73 71 70
+60 57 55 52 51 50 48 47
+70 73 75 77 79 82 84 85
+75 77 79 81 84 86 88
+49 52 53 55 57 60
+80 81 83 84 85 87 90 93
+16 17 19 21 22 24
+61 58 55 53 51 48 47 46
+70 68 65 63 61 58 55 54
+3 6 8 10 11
+89 87 86 84 82 81 79
+27 29 32 33 36 38 41 43
+47 49 50 51 52 55 56
+28 29 31 32 35 38
+90 89 88 87 85 84
+38 37 34 33 32 29 26 23
+67 66 65 62 59
+66 63 61 60 59 58 57
+21 20 19 17 15 12 9 8
+18 21 23 24 27
+8 10 13 15 16
+29 28 25 23 20
+63 61 58 57 55 54
+53 54 55 58 60 63 64
+13 12 10 7 6 4
+35 33 32 30 27 24 21 18
+69 67 64 63 61 60 58 55
2024/input/02-p2.txt
@@ -0,0 +1,1 @@
+02-p1.txt
\ No newline at end of file
2024/input/03-e1.txt
@@ -0,0 +1,1 @@
+xmul(2,4)&mul[3,7]!^don't()_mul(5,5)+mul(32,64](mul(11,8)undo()?mul(8,5))
2024/input/03-e2.txt
@@ -0,0 +1,1 @@
+03-e1.txt
\ No newline at end of file
2024/input/03-e3.txt
@@ -0,0 +1,12 @@
+mul(498,303);when()}!(%mul(846,233)-,what()($where()how():}mul(334,117)]~>?,<,%^,mul(886,213)/:from()?-how()~}mul(343,197) mul(33,616)~%*~why()^*-from()mul(757,847){{who()why()#mul(927,553)>-?&!-@[mul(589,387)what():[?mul(865,934)#/ (why()+from()when();mul(804,792)-where(144,652)(mul(620,348);];]$mul(584,827):who()^%from()mul(381,633)why()@ when()where()?<;@#do()'< mul(643,715)@@#/>&-@?when(295,120)mul(465,37))]#mul(742,669)?mul(519,650)mul(546,337)@what(),{'^mul(769,202)^mul(808,254)/#why()@~mul(71,204)from();mul(150,335)[mul(302,220)>[$*~
+
+don't()mul(385,231)what()?*mul(852,324)#$}<{mul(838,178)<;+}@/*mul(579,121)select()why()*{{:mul(810,214)don't(){what()/)who()*%mul(273,606)&]from()@:why()@mul(788,896) }& don't()select()mul(568,713)$$'<who();[[+what()mul(404,402)+<what()why()mul(931,692)*;when()^where()who()what():<mul(815,388)where(),%~select()/select()what()!mul(492,448)+$)mul(962,335)who()}[<)where()>from()@+mul(390,36):@who();&from()mul(984,787)/mul(209,744)why()%[:what()mul(929,15)+how() who()@what()$!mul(751,670)$]from()mul(821,742)why()}:/why()>mul(445,950)>:mul(174,953)-where()how()+:mul(529,661)+{+@@why()##mul(513,442)how(827,318)}~}where()#@-:mul(941,152)~[,+{&@why()+mul(468,787)how()!$from()^^>%~from()mul(497,717)mul(930,672)mul(313,480)^%where()~-))#^select()mul(407,85)<#who()mul(776,808)~select()$?@,<mul(373,713)?')who()$?[>@mul(420,163)mul(666,491)$:+
+
+do()mul(823,835){who()?,mul(728,808))[who()/^<;select()~:mul(38,577)+>mul(985,224):/what()where()[%*what()mul(31,270)<><from()@$;mul(233,598)why()/&}mul(326,395)from(),-;-*:
+
+don't() &[who()[mul(730,832)%who()who()@how()(,mul(628,729)mul(332,18){-mul(908,439))<}mul(185,715)what()~!>when()[?!!mul(895,903)%who()select()>/when()!mul(367,623)'#+mul(362,189)&from()'#$':$?{mul(571,203)what()mul(615,719)what(),what() )^mul(663,163)$@;&'select()mul(93,614)~(from()mul(490,261)#mul(530,933)}[from()];don't()$%what()%~'&'what()mul(134,307)}from()%;&why(65,575)?/mul(657,957)where()mul(969,590))how()when()how(){mul(534,951)@},mul(141,80<'mul(573,576)why()mul(952,460from()+<?$;where(),mul(810,772)+:${?mul(334,140)~<)select()%>#;;mul(36,336)&don't()&}how()why()select()^mul(267:+(+#'~<mul(894,946)^))mul(633,59)when()mul(335,809)$mul(680[>mul(654,481)--mul(17,334)'!*why())how();-$mul(886,695)mul(954,476)where()!mul(73,181)?@mul(326,125)!@{)*mul(945,965)what()-select()~^who(884,691)how(846,544)mul(346,328)!<^~+-when(871,168):-mul(653,891why()when()how()why()mul(603,626)~+when()where(639,311),#mul(527,536)how()]%{/!-
+
+do()'<when()mul(914,232){:~]&why(937,467)mul(116,640)where()mul(391,784~mul(44,854),+<where();/;@^when()mul(919,687)#))mul(70,882)<how()who()+what()(*/:mul(96,388){^-$why(625,585)-mul(240,319);$:where()how()<$[]mul(524,524)]&*&%&mul(124,571)<,}&{#where()@mul(727,591)how()}&#[:?:mul(481,435),when()who()$[:mul(245,145)where() [/-who()what()how()^mul(943,836)%!'when()mul(703,555)$)[mul(227why()mul(923,88)/}& select()mul(908,970)'+how()<who(628,728)/select()%
+
+don't()mul&<{/who()mul(199,227)[),how()[~select()mul(540,629)select()mul(167,775)&;}mul(275,320)^mul(911,818)from()when()+-,*,>@mul(368,63)
+
2024/input/03-p1.txt
@@ -0,0 +1,6 @@
+mul(498,303);when()}!(%mul(846,233)-,what()($where()how():}mul(334,117)]~>?,<,%^,mul(886,213)/:from()?-how()~}mul(343,197) mul(33,616)~%*~why()^*-from()mul(757,847){{who()why()#mul(927,553)>-?&!-@[mul(589,387)what():[?mul(865,934)#/ (why()+from()when();mul(804,792)-where(144,652)(mul(620,348);];]$mul(584,827):who()^%from()mul(381,633)why()@ when()where()?<;@#do()'< mul(643,715)@@#/>&-@?when(295,120)mul(465,37))]#mul(742,669)?mul(519,650)mul(546,337)@what(),{'^mul(769,202)^mul(808,254)/#why()@~mul(71,204)from();mul(150,335)[mul(302,220)>[$*~don't()mul(385,231)what()?*mul(852,324)#$}<{mul(838,178)<;+}@/*mul(579,121)select()why()*{{:mul(810,214)don't(){what()/)who()*%mul(273,606)&]from()@:why()@mul(788,896) }& don't()select()mul(568,713)$$'<who();[[+what()mul(404,402)+<what()why()mul(931,692)*;when()^where()who()what():<mul(815,388)where(),%~select()/select()what()!mul(492,448)+$)mul(962,335)who()}[<)where()>from()@+mul(390,36):@who();&from()mul(984,787)/mul(209,744)why()%[:what()mul(929,15)+how() who()@what()$!mul(751,670)$]from()mul(821,742)why()}:/why()>mul(445,950)>:mul(174,953)-where()how()+:mul(529,661)+{+@@why()##mul(513,442)how(827,318)}~}where()#@-:mul(941,152)~[,+{&@why()+mul(468,787)how()!$from()^^>%~from()mul(497,717)mul(930,672)mul(313,480)^%where()~-))#^select()mul(407,85)<#who()mul(776,808)~select()$?@,<mul(373,713)?')who()$?[>@mul(420,163)mul(666,491)$:+do()mul(823,835){who()?,mul(728,808))[who()/^<;select()~:mul(38,577)+>mul(985,224):/what()where()[%*what()mul(31,270)<><from()@$;mul(233,598)why()/&}mul(326,395)from(),-;-*:don't() &[who()[mul(730,832)%who()who()@how()(,mul(628,729)mul(332,18){-mul(908,439))<}mul(185,715)what()~!>when()[?!!mul(895,903)%who()select()>/when()!mul(367,623)'#+mul(362,189)&from()'#$':$?{mul(571,203)what()mul(615,719)what(),what() )^mul(663,163)$@;&'select()mul(93,614)~(from()mul(490,261)#mul(530,933)}[from()];don't()$%what()%~'&'what()mul(134,307)}from()%;&why(65,575)?/mul(657,957)where()mul(969,590))how()when()how(){mul(534,951)@},mul(141,80<'mul(573,576)why()mul(952,460from()+<?$;where(),mul(810,772)+:${?mul(334,140)~<)select()%>#;;mul(36,336)&don't()&}how()why()select()^mul(267:+(+#'~<mul(894,946)^))mul(633,59)when()mul(335,809)$mul(680[>mul(654,481)--mul(17,334)'!*why())how();-$mul(886,695)mul(954,476)where()!mul(73,181)?@mul(326,125)!@{)*mul(945,965)what()-select()~^who(884,691)how(846,544)mul(346,328)!<^~+-when(871,168):-mul(653,891why()when()how()why()mul(603,626)~+when()where(639,311),#mul(527,536)how()]%{/!-do()'<when()mul(914,232){:~]&why(937,467)mul(116,640)where()mul(391,784~mul(44,854),+<where();/;@^when()mul(919,687)#))mul(70,882)<how()who()+what()(*/:mul(96,388){^-$why(625,585)-mul(240,319);$:where()how()<$[]mul(524,524)]&*&%&mul(124,571)<,}&{#where()@mul(727,591)how()}&#[:?:mul(481,435),when()who()$[:mul(245,145)where() [/-who()what()how()^mul(943,836)%!'when()mul(703,555)$)[mul(227why()mul(923,88)/}& select()mul(908,970)'+how()<who(628,728)/select()%don't()mul&<{/who()mul(199,227)[),how()[~select()mul(540,629)select()mul(167,775)&;}mul(275,320)^mul(911,818)from()when()+-,*,>@mul(368,63)
+how()@]]from()select(976,708)?;what())mul(649,499)}&?how(792,889)~who()why(){do()mul(569,139)^[mul(701,8)why()!#[>'who()from()%mul(288,867)mul(706&*~>?select()@mul(819,789)(@%mul(180,466)from()[why()}&}mul(766,269)</how(){/mul(883,183)#-'>}@mul(827,216);???!mul(670,899)!-[%(<@^do()*}mul(475*mul(462,887)'@[])[?&mul(754,83)%]%(<who()mul(712,726)(/~mul(591,638)when(737,732)] mul(205,289){[{why():{where() ~where(736,522)mul(611,153)[)where()[{+how()mul(256^-*(when()~^mul(996,964){;/*-who()?mul(359,517)from();(when()don't()~]]!mul(716,400){{^:when();*mul(359,667)<]mul(361,744),mul(83,482){)how()mul(612,903)?select()@mul(273,252)#^/ @?+mul(656,57)mul(20,332)-who()from()from()([-where()#mul(701,637)from(19,111)^,when()where(913,373)what()how()why()select()mul(648,774)mul(313,368)@^!<!from()?*select()-mul(576,9)}where()mul(745,88!/[):mul(659,543)]:who()~[+select()mul(669,630what()]~*why()mul(15,604)^*? %#%,-don't()select()/#mul(959,4)+~,%}how()#select(289,441)why();mul(787,874)why()select()]]%~mul(133,880)?mul(898,168)~select()(mul(843,146)(%where()&<select()%$who()mul(870,481);*when()^mul>~from()}when()?mul(379,965)@why()mul(63,665)+[-{mul(543,711);>?/)(&mul(535,403)?')(mul(603,306)* when())what()-*mul(22,75)#who()<:{where(780,74)]mulwho()'#from()~?how() ,{<mul(715,646)who()}:/:%who()mul(56,345)-select()!^where()&?mul(281,647)(&select()mul(690,172))?who()]*mul(512,128)'&,[why()mul(509,250)#;how() how()<<>{+mul(576,621)why()why();mul^;+^'mul(977,718)}why()>'[~  mul(179,326)#[mul(735,639)where() when()<mul(971,82)^~(;select()why()how()what()where()when()don't()^[]]$mul(285,677);where(523,328)when()#-!,(<mul(891,918)- $mul(746,775)] ?@}select()select(103,294)@mul(651,55)[from()@+why()$#mul(425$}#[when():+@[when()@do()select() +;%how()+~'mul(653,737)-[)mul(450,954)don't()what()mul(82,395)from()who(){{ why()who()from()mul(757,278)from()<[{&^mul(812,129)why()(#select()when()what()what()mul(153,205)+where()$mul(844,143)'where()don't()-what()where()@,'>/from()$mul(779,50)don't()<mul(819,958)]select()@mul(138,940from()from()do(),@'(#from()]^mul(382,411)mul(262,685)from()>'<:)'>:}mul(232,847){where()mul(63,282)>mul(737,540)why()+!>don't()when() ']what()#,mul(778,85)how()[mul(809,798)![ $where()%<who()how()/mul(551,122)what()mul(346,544)why()#mul(424,338)!$don't()how()how():{>>' }]mul(587,975)-?# }-]mul(800,437)$mul{[mul(603,103)>-/#why()mul(285,453)who();+{@ when()]don't()+[what(730,765) mul(399,137)%]select()#<[^>mul(146,316)~][from() mul(687,295)mul(347,287)when()>!from()&mul);<<from()mul(400,956)#;why()}<who();mul(743,166)}>when()+;{^mul(267,700){~,!]?<mul(888,527)$~> how()mul(779,914)select()&>^/%?<why()mul(337,111)where()how()<-mul(457,594)*/how()mul(328,728)>}>-$*^mul(387,58)^who()&mul(157,49)#?/mul(35,606)when()')from()?%mul(451,146)'(where()mul(977,491)mul(916,789))&#how()how()>don't()^*mul(437,605)[how() mul(626,940)^*%/mul(884,929)select()mul(84,192)mul(111,274)what()mul(95where()![[(who()[mul(593,249)]]@#when()why()-/mul(230,390)#~],(:mul(840,931)mul(421,658)from(653,680)>&mul(34,90)>when()&}:why()mul(956,881)!when())$^]@who()select()where()mul(94,737)from()who()mul(816,357)')^<when(97,556)}/)select(167,991)mul(888,358);what()]{-when()%>^mul(454,208)$&mul(136,496){$what()mul(897,490)>'mul(376,325){why(),%]#<mul(219,353)(mul(659,921)who(){what())mul(224,414)
+&&^(?when()^why() mul(91,818)what()what()*do()-mul(217,631)mul(28,181)'!from()mul(949,185)/,&what(964,586)what()who()mul(353,335(what() where()!select():mul(736,902);who()who()mul(877,853)&<%from()^($>what()mul(953,618)+from()mul(378,46)mul(138,440)who()#where() ><mul(554~what()~how()!select()%mul(387,205)&mul(285,757)~<{<)>(from()#mul(708,59)&why()mul(830,439)mul(468,479)why()<$,~},mul(279,437)<why()^}>%([mul(276,252)-#$mul(596,842)from()mul(873,817)*{{from()#(%^mul(765,528)!<< what())^mul$how()<select()why()mul(592,403)mul(647,574)-$how()??<,,mul(423,736)< when()?(mul(666,851) ]mul(410,586):mul(519,320),how())(?@mul(531,672)>}/what() +:mul(411,270,,({(]!mul(627,262)/how()**how()$''+mul(791,814);-;;:mul(990,764)}where())))&((!mul(5,111)~how()from()&,how()mul(492,492)from()[$,+) @(mul(999,416)$&who(959,257)&mul(722,457)@how()) ^>;)@{mul(221,679)?who()$+{-^*{mul(241,314)how()][!mul(940,32){$(~@'+>mul(453,515*;mul(215,275)~/[,why(21,55)(who()',>mul(567,83)mul(330,717)>#!mul(611,308)+&select()(})/mul(744what(424,184)?mul(377,16)):(<[@mul(757,897)#^mul(404,155)%don't()}what(573,178)what()+mul(204,894)%mul(34,307))mul(794,115) +)from()}mul(515,433)^mul(529,684)from()why()where()?mul(956,914)(])?[mul(645,179)+mul(400,263)from()select()&^*mul(422,526){~;what()/)#don't()*%!/(mul(326,211)*%@select()from()[~&mul(456{why()from(138,423)-^(&!?mul(995,210):;when()why()how()!mul(394,185)how()!~who() ^how()'where():mul(348,18)mul(194who()&~*~&{/%mul(505,325) *%mul(459,604)>)) ~ -where()~{mul(579,481)mul(135,794)-*mul(453,355)~/](![from()mul(443,346)mul*[,~%why()-{do()/when(43,713)mul(136,26){^when()why()'mul(108,341)[@?!',+@who()mul(195]{&@{?:how()what()select()don't():]]#mul;what()&?:mul(541,941),&;-what(75,560)who()what()?how()mul(314,260)!)mul(250,620)>#mul(612,209),#?;mul(661,597)/mul(563,594)when()!:!mul(683,595)*what()when())'how();@mul(287,255)how()/^mul(345,555) who()/when()mul(681,924) 'mul(189,542)'mul(102,360)why()!'how()-?;,mul(874,55)+:!>what()mul(538,354)**]~how()who()mul(277,851),where(802,203)<{(];'?mul(268,251)~{:]mul(139,820){^^[ /;when() what()mul(775,595)/,)^;&where(),mul(644,487)?(mul(590,599what()%-who(){mul(112,571){$mul'/#mul(835,137)$&(mul(201,460)how()from()*@where()mul(934,320),[what()where())? :don't()&+'mul(66,8)~ mul(465,911)]?how()what(),;/:*-don't()#:?where()$mul(951,775)from()%@{who()who()!mul(78,456)^[from(),mul(144,347)']where()#([ @[]mul(660,565)}}~mul(738,761)-mul(514,849)mul(648,439who()+<,*/when()!why()mul(904,440)^ select())!@-mul(442,126% #?{mul(47,20)%mul(113,81)/;&+{@mul(504,712);select() mul(720,642)when()*#who()<-'];;mul(821,613)?select()!>when(){mul ,mul(597,943)$-what()*when()where()-}select(){mul(999,17)select(230,593),% mul(920,227)>where()@!~(select()!*mul(301,278)mul(538,232*!/when()mul(283,204)'who() ]mul(861,903)what()? %{* <-mul(112,180)'?(!mul(121,398)']<~/mul(363,850)])from()mul<>?!!from()when()select()!mul(551,325)[where())-:{#)mul(114}}:,,mul(341,114)from()?why() from()# mul(611,400))what()% from()}/when()'mul(874,416)'@&~+]mul(916,295what()@why()how()>where()-^mul(988,626)select()#!)who()why()mul(597,791)};mul(160,184) from()~{;!where()mul(332,928)where()(#!/usr/bin/perl+^who()]:,~}select():mul(810,730)when()mul(312;&what(415,542)who(560,710)who()from()^mul(828,831)> }how(595,281)!why()*/:mul(70,967)
+(do(){,-how()<(how()[{why()mul(16,675))+don't()!>-((&what()!mulwhere()+( mul(446,260)#+&how()}}when()<mul(517,657)how()$)' ?>who()/do()[,who()]>-~<mul(370,491)*]*}/'&mul(451,243)mul(459,272)^]' >from(),mul(200,312);$mul(997,25);?where(203,706)&?}select(),mul(553,783)@^~mul(779,661)%)mul(252,997)what()from();%mul(439,801)select()#?')~;%}mul?why()+!mul(385,635)@)^):!*)how()mul(563,131)#&mul(720,10)~#<+]^!:@how()mul(24,633)~mul(103,646)mul(331,217)~#mulwhy()@-$> mul(288,357)how() when();;why()<+mul(513,580)?when(299,618)!<^-mul(318,287) }mul(88,924)mul(220,403<what()mul(180,327)where()? @mul(766,852),mul(758,342)#&<when()select()^]}mul(354,76)select()^(+don't()mul(371,236)!where(){mul(679,524$}];do()%mul(334,640)#]*how()}&@from()+mul(927when();':when()who()when(90,761)why()why()&mul(894,120)&-?'^^do()}^;from()&,]:<%mul(433,887)?$when()from()select())when(){'mul(84,915)[  <>mul(264,790)mul(78,811),,(<why()}:}~mul(407,891)-~;who(){/when()what()what()mul(56,769)how()}>/who()who()mul(978,770)[what()$)]#:%mul <when()}mul(970,37):select()why()(?<^ ?<mul(357,272)>mul(57,890)'(mul(146,967)[<#%)^;how()]>mul(166,279)]mul(24,319)%;select()-!/don't()>:mul(858,696)mul(622,496)*{{-~why()how()what()-mul(973%}+> mul(904,891)*(:{%mul(618,932)&!~*mul(77,889)}%~{mul(206,797)select()what() who()+*what(499,999)?@@mul(114,405)(()where()}/){]}mul(841,73)@!where(581,676)]#from(879,459)}^mulhow()do()}select()~!~)[why(364,979)who(533,785)mul(839,475)[{;>)(@what()mul(597,209)-$-^select()mul(453+;:#:?&mul(972,784)what()#select()%/[select()[,how()mul(436,10)]!~)select() mul(982,995select()~/<why()]~select(409,236)do();:+-where()';)mul(580,7)%mul(844,208) #^mul(353,253)?from()where()mulwhat(){select()why()mul(698,22)&?how():,from()what()]where()mul(260,416)who()when()+select(632,146)}mul(214,946)&how(860,45)!mul[from()>%(,do()#who()]!,/*mul(718,383)when()>^*mul(803,383)when(); mul(568,612)/from()from()}what(219,960)from()*don't()@@why();who()where()mul(222,279){ mul(758,766)what()who()!how(38,972)~;],select()/mul(974,879)!don't()mul(368,975)where()^$[^&] -{mul(153,172)what()&+)[mul(97,652)when(534,157)~,:where()do()%%@]?&when(435,925)what(){mul(155,627)?{;@#mul(466,775)(;mul(834,395)//>()-don't() $mul(329,300)<+&'@^mul(469,14)*&why(99,525)',mul(427who()*@< ?do()[>from()when()?#,'&:mul(585,898)mul(128,392)-(?[,where()'^where(575,788)+mul(378,473how() '$'#@who()from()<mul(979,827)what()^mul(637,26)&what()*why()!how()mul(643<{}who()where()mul(443,856)>how()?(//mul(768,590)when()-: ](where()who()(mul(716,399)/~)@mul(754,670)what()mul(656,266):(;%!]mul(595,874)why()%@<^?mul(702,835)(![&&/+%mul(421,278)}where()-%^'+mul(842,496)/?@:]mul(282,851)~@)how())mul(543,112))]+^)mul(133,862);#)when()who()why()when(58,966),,mul(513,202)@mul(716,648)(mul(793,735)what()]where()%+-/mul(359,127)-+}/mul(116,988)when()mul(153,16):'@$who():~-mul(441,603)'how(){ #why()%{{mul(877,856)select()who(777,457)select()from())how(345,367)from()mul(447,557)%/$-select(),when()+what()mul(189,616)what()}mul(822,616)mul(454,622)how()&who()&#do():> mul(353,679)^(@select()<;mul(414,440)why()+how()&,]#-&mul(402,532)-})~#$-!<mul(895,294)/;( }>mul(883,415):<@]*from() mul(28,253){where()? <!&,why()?mul(633,240)]--+^{how()%]mul(649,701)]:!why()+who())mul(126,903)]what()@select()$from()mul(587,84)mul(911,475)do()!];when()*;[where(),mul(370,958)what()/>what()select()~mul(259,972)-(]<}>when()from()$mul(650,381)~from()}from()who()>mul(72,307),who()where()?@<when()@why()mul(585,731)mul(272,301)-%who()when(202,213)*mul(884,335)]@@why()$do()~#mul(786,141)
+where()}/what(611,646)!mul(470,537)}who()what()]-$[what()mul(341,864)<(+from()}>{where()mul(706,447)from(671,711))~mul(601,925)} ;what()[mul(533,851~{&what()(@{<'where()mul(799,568)%<why()~]'+$mul(169,116)~<why()from()-^;mul(447,48);from()'how()mul(643,718)select()+ ?<,$mul(622,397):*>where()<when()&))mul(410,76)/[mul(951,998)% #'~}-mul(954,766)-when():do()when()where())^:?mul(460,200]how()$&$/;&who()mul(126,104)when()}$when()+$why()%what()who()mul(777,781)-$@,+(^mul(138,32) /;mul(604,605)':*mul(457,205)from()mul(968,111);+?)!mul(185,427)/#mul(589,783)?#who(284,112)@<'[->mul$>select()[)#^:mul(414,93)]mul(16,757)&[who(),/mul(629,760)&''how(),from()mul(951,329)^mul(781,711):/',+'{%when();mul(661,844)/why()<^}#mul(337,134)!)mul(339,829)([how()+&~how(512,132)!;:mul(696,374))}/what()from()mul(640,944)'{*how()what(279,739)why(843,673)?<mul(930,104)from(71,501)> &!where()mul(347,404)^?>!$&mul(316,524) when()]mul(875,937)$(@]$don't()/who():/]mul(833,846)who()mul(190,362))mul(183,740)how()}mul(14,502):why();why()<mul(752,588),who()where(877,731)&*,%who()where()mul(817,369)+?how(166,381)}mul(787,226)from()>'mul(341,888)mul(668,734)]/what())**&(do()how()*:select()}*:]mul(604{mul(123,983)#&why()mul(159,440)mul(437,830)~};'])[?mul(36,75)mul(836,766),?*select()who()mul(548,488)%--where(521,841))$]do():-from()*mul(355]<+>:mul(58,505)what()from(49,769)mul(108*]~>mul(131,644)?!from()mul(11,884):where()!;select();+[select()mul(358,741)<mul(788,402what()?who()mul(232,817){;from(); mul(452,48)(>(*?]do()(?{@^mul(117,14)^+;what()from()}mul(847,203)/who()where()from(567,960)when()</:~mul(592,204)[}where()*don't()?mul(212,912)who()mul(73,318)how()*who(597,691)){&-mul(971,304)where()mul(64,983)#who()mul(662,2!when()@where(522,361)select(63,12)&+what()!$mul(678,247)when()mul(878,222)]>how()%~'}mul(677,415)mul(91,507)when()*when()from()*(mul(935,477)  from()@ mul(556,85)?)@mul(196,674)^;*+#$mul(531,124)!what()%select(){who()}';~mul(67,663)when()'?mul(205,527)@:+ ?:why() %mul(513,956/}:,'@+$who()-mul(963,914)@from()why()how(292,305)!from(980,892)mul(456,909)!who()<(*@select()&why()mul(947,805)who()how()^}mul(154,935)+?when()('};]>^mul(855,799){who()]+*{mul(823,352)*<$when()+)^&(do()mul(623,916)(['])^what(){select()mul(815,135)}mul(464,34)' <what()@&how()] mul(223,241)mul(595,176):!select()?~)</mul(707,895) how()>^)-^~where()where()mul(50,471)*{select()from() mul~:why()when()<when()?mul(131,929) [mul(45,134)'+:how()]select()@when()%<mul(755,746)who()why(){^mul(592,378)%}mul(88,624)where(901,919)?(how()how()]mul(533,3^where()who()]-mul(394,600)?)~from():mul(139,515),mul(531,61);$$how()mul>[why();%, }-where()#mul(184,632)~]+'select()}what()mul(675,164)mul(360,852)mul(875,801):where(811,851)mul(702,746)mul(29,632)[{^]-:!{ who(719,324)mul(720,687);:/[#*mul(431,415)mul(123,914]&?%$how()mul(655,184)]@?how()*$(-what()mul(323,687)mul(474,75);mul(846,335):%;do()~?where()~mul{}?%mul(446,300)^how(),<&from()#!#from()mul(423,746)how()what()don't()what()+*<mul(231,901)}from()mul(580,914)why()#%{}@^<mul(325,335)~mul(97,85)how() select()how()*]{{mul(138,378)mul(232,238)how(816,837)who()mul(855,527)!$}%[who()select(222,409)do()+) mul(853,840)#mul(974,262)*when()/<mul(85,995):]how()when() mul(883,291)?))select()}mul(218,597)when()!why())+mul(920,414)mul(263,33)
+~-$'&&^!<mul(959,544)@where()#:?%)/)-mul(730,399)::mul(799,976)<mul(83%*/who(215,306)do()% '~mul(47,623):) <select())?mul(36,132)~don't()+,+,'#],(mul(479,758];select()<~?[,when():mul(433,783)],where()/do()'who()$+what()-^mul(620,968)?/]-}why()!]#mul(826,251)&?mul(953,890)$~{where()$}}[+mul(671%{why()!$]}^mul(651,483)how()[[(do()*:;$*mul(818,404)~where()}what()[} mul(750,606)mul(909,386)why()how()&how(){{how()mul(208,481)mul(793,351)}-['}:}who()mul(42,668)[do()}select()??from():&?)mul(85,533):~?$+when()^how()&do())<when()mul(831';,'where()when()'+from()^mul(952,914))mul(960,931)who()from()<what()*%why()when()-@mul(829,638);when(){ mul(661,694)>#:mul(268,185)@do()!>?~;@]mul(657,833) ,(who()-who()mul(415,876)]&#?@'!/&mul(437,971)^,+mul(884,392):mul(183,497)^from()mul(204,743)^'>}who()$;}mul(892,574)+ from()?$mul(922,854))select()#,+>where(),*mul(551,303)?}mul(261,657)?why()}why()when()%-mul(124,265!mul(979,380)/@select()}>why()+#mul(384,303)$,@@-mul[mul(479,548)-]#> ?:!do()how()@&mul(917,657{:$&mul(966,387)}what())[-]mul(183,849)^^who()&<,mul(669,375)mul(323,459)$%/from()~+}when()mul(789,390)'+mul(804,927)#who()mul(102,842)$$)how()from()select()][mul(380,252) )>when()where()how()who():#where(184,552)mul(244,943)$&$*}*-mul(727,613)(#why()}>mul(807,274)mul(577,489)mul(731,223)>where()/!]? %where()mul(359,604)/$;$+}mul(182,17)why()-how()mul(792,962)why()/{-(how()%'select()mul(997,718)/{mul(7,739)select();:mul(800,703)[when()' #~why()where()*mul(345,374)mul(308,927)how()%@how()mul(233,785)#{!select()mul(208,457)#from()}what()mul(347,911)where()from()@;(mul(492,896)&;?+<![:!<mul(211,499))!%]mul(12,519)'?--/,mul(158,834)::$why()who(171,915),#mul(807,360)?}}}do(){~] <'>, mul(948,682)+~when()}from()mul(930,691)[&]*((#mul(600,425){what()'{)@,where();:mul(844,671)~+)#<where()when():{mul(124,928)where()*: -@mul(194,634)why(466,842)'-mul(402,954)!why()?mul(256,694)don't()&mul(797,748)from()<why()<don't():~why()when()who(){mul(44,366)&{^mul(957,373)*select()$%why()~mul(956,708)'/}how()do()%from()+select()]+when()mul(381,888)(!?#{ from()mul(423,132) ($~$@?mul(225,981);;+who():<)%^mul(840,611)!)mul(763,490)&why()@{where()mul(852,987)*!what()(mul(680,776)mul(436,532)from(52,270);) ^mul(28,580)how()>,(mul(446,155)$%@/:mul(749,494)mul(24,97)where(6,997)&where()?why(449,637)mul(631,323))mul(192,700));/$]what()mul(820,765)who()(>%>mul(702,770)*-[;}(mul(438,245)@)]^/'#mul(554,294)!mul(34,410)where()$<#how(360,499)@#mul(585,680)<^};mul(295,437)where()] {+mul(607,28)why()#% do();mul(96,932)]why()+who(){<,[where()mul(271,645);^:{mul(411,161)]<>do()@';when() (mul(41,299)(!what()*select(387,698)$]mul(942,465)^?~what(),*?-'from()mul(70,415)why()'from()how()mul(682,699)!^-when()?when()#mul(473,999)  {<mul(676,919)+??<#?mul(119,628)<&~from()}:mul(740,385)mul(444,907)@~,*$<, $@don't()~:+@how()select()what()%$mul(389,212);;what()%[how()mul(210,340):how()'-mul(80,124)&-how()>(~>^why()}mul(240,258)+why()&%mul(579,916)!(]((select(112,996)#($,mul(584,139)%
2024/input/03-p2-oneline.txt
@@ -0,0 +1,1 @@
+mul(498,303);when()}!(%mul(846,233)-,what()($where()how():}mul(334,117)]~>?,<,%^,mul(886,213)/:from()?-how()~}mul(343,197) mul(33,616)~%*~why()^*-from()mul(757,847){{who()why()#mul(927,553)>-?&!-@[mul(589,387)what():[?mul(865,934)#/ (why()+from()when();mul(804,792)-where(144,652)(mul(620,348);];]$mul(584,827):who()^%from()mul(381,633)why()@ when()where()?<;@#do()'< mul(643,715)@@#/>&-@?when(295,120)mul(465,37))]#mul(742,669)?mul(519,650)mul(546,337)@what(),{'^mul(769,202)^mul(808,254)/#why()@~mul(71,204)from();mul(150,335)[mul(302,220)>[$*~don't()mul(385,231)what()?*mul(852,324)#$}<{mul(838,178)<;+}@/*mul(579,121)select()why()*{{:mul(810,214)don't(){what()/)who()*%mul(273,606)&]from()@:why()@mul(788,896) }& don't()select()mul(568,713)$$'<who();[[+what()mul(404,402)+<what()why()mul(931,692)*;when()^where()who()what():<mul(815,388)where(),%~select()/select()what()!mul(492,448)+$)mul(962,335)who()}[<)where()>from()@+mul(390,36):@who();&from()mul(984,787)/mul(209,744)why()%[:what()mul(929,15)+how() who()@what()$!mul(751,670)$]from()mul(821,742)why()}:/why()>mul(445,950)>:mul(174,953)-where()how()+:mul(529,661)+{+@@why()##mul(513,442)how(827,318)}~}where()#@-:mul(941,152)~[,+{&@why()+mul(468,787)how()!$from()^^>%~from()mul(497,717)mul(930,672)mul(313,480)^%where()~-))#^select()mul(407,85)<#who()mul(776,808)~select()$?@,<mul(373,713)?')who()$?[>@mul(420,163)mul(666,491)$:+do()mul(823,835){who()?,mul(728,808))[who()/^<;select()~:mul(38,577)+>mul(985,224):/what()where()[%*what()mul(31,270)<><from()@$;mul(233,598)why()/&}mul(326,395)from(),-;-*:don't() &[who()[mul(730,832)%who()who()@how()(,mul(628,729)mul(332,18){-mul(908,439))<}mul(185,715)what()~!>when()[?!!mul(895,903)%who()select()>/when()!mul(367,623)'#+mul(362,189)&from()'#$':$?{mul(571,203)what()mul(615,719)what(),what() )^mul(663,163)$@;&'select()mul(93,614)~(from()mul(490,261)#mul(530,933)}[from()];don't()$%what()%~'&'what()mul(134,307)}from()%;&why(65,575)?/mul(657,957)where()mul(969,590))how()when()how(){mul(534,951)@},mul(141,80<'mul(573,576)why()mul(952,460from()+<?$;where(),mul(810,772)+:${?mul(334,140)~<)select()%>#;;mul(36,336)&don't()&}how()why()select()^mul(267:+(+#'~<mul(894,946)^))mul(633,59)when()mul(335,809)$mul(680[>mul(654,481)--mul(17,334)'!*why())how();-$mul(886,695)mul(954,476)where()!mul(73,181)?@mul(326,125)!@{)*mul(945,965)what()-select()~^who(884,691)how(846,544)mul(346,328)!<^~+-when(871,168):-mul(653,891why()when()how()why()mul(603,626)~+when()where(639,311),#mul(527,536)how()]%{/!-do()'<when()mul(914,232){:~]&why(937,467)mul(116,640)where()mul(391,784~mul(44,854),+<where();/;@^when()mul(919,687)#))mul(70,882)<how()who()+what()(*/:mul(96,388){^-$why(625,585)-mul(240,319);$:where()how()<$[]mul(524,524)]&*&%&mul(124,571)<,}&{#where()@mul(727,591)how()}&#[:?:mul(481,435),when()who()$[:mul(245,145)where() [/-who()what()how()^mul(943,836)%!'when()mul(703,555)$)[mul(227why()mul(923,88)/}& select()mul(908,970)'+how()<who(628,728)/select()%don't()mul&<{/who()mul(199,227)[),how()[~select()mul(540,629)select()mul(167,775)&;}mul(275,320)^mul(911,818)from()when()+-,*,>@mul(368,63)NEWLINEhow()@]]from()select(976,708)?;what())mul(649,499)}&?how(792,889)~who()why(){do()mul(569,139)^[mul(701,8)why()!#[>'who()from()%mul(288,867)mul(706&*~>?select()@mul(819,789)(@%mul(180,466)from()[why()}&}mul(766,269)</how(){/mul(883,183)#-'>}@mul(827,216);???!mul(670,899)!-[%(<@^do()*}mul(475*mul(462,887)'@[])[?&mul(754,83)%]%(<who()mul(712,726)(/~mul(591,638)when(737,732)] mul(205,289){[{why():{where() ~where(736,522)mul(611,153)[)where()[{+how()mul(256^-*(when()~^mul(996,964){;/*-who()?mul(359,517)from();(when()don't()~]]!mul(716,400){{^:when();*mul(359,667)<]mul(361,744),mul(83,482){)how()mul(612,903)?select()@mul(273,252)#^/ @?+mul(656,57)mul(20,332)-who()from()from()([-where()#mul(701,637)from(19,111)^,when()where(913,373)what()how()why()select()mul(648,774)mul(313,368)@^!<!from()?*select()-mul(576,9)}where()mul(745,88!/[):mul(659,543)]:who()~[+select()mul(669,630what()]~*why()mul(15,604)^*? %#%,-don't()select()/#mul(959,4)+~,%}how()#select(289,441)why();mul(787,874)why()select()]]%~mul(133,880)?mul(898,168)~select()(mul(843,146)(%where()&<select()%$who()mul(870,481);*when()^mul>~from()}when()?mul(379,965)@why()mul(63,665)+[-{mul(543,711);>?/)(&mul(535,403)?')(mul(603,306)* when())what()-*mul(22,75)#who()<:{where(780,74)]mulwho()'#from()~?how() ,{<mul(715,646)who()}:/:%who()mul(56,345)-select()!^where()&?mul(281,647)(&select()mul(690,172))?who()]*mul(512,128)'&,[why()mul(509,250)#;how() how()<<>{+mul(576,621)why()why();mul^;+^'mul(977,718)}why()>'[~  mul(179,326)#[mul(735,639)where() when()<mul(971,82)^~(;select()why()how()what()where()when()don't()^[]]$mul(285,677);where(523,328)when()#-!,(<mul(891,918)- $mul(746,775)] ?@}select()select(103,294)@mul(651,55)[from()@+why()$#mul(425$}#[when():+@[when()@do()select() +;%how()+~'mul(653,737)-[)mul(450,954)don't()what()mul(82,395)from()who(){{ why()who()from()mul(757,278)from()<[{&^mul(812,129)why()(#select()when()what()what()mul(153,205)+where()$mul(844,143)'where()don't()-what()where()@,'>/from()$mul(779,50)don't()<mul(819,958)]select()@mul(138,940from()from()do(),@'(#from()]^mul(382,411)mul(262,685)from()>'<:)'>:}mul(232,847){where()mul(63,282)>mul(737,540)why()+!>don't()when() ']what()#,mul(778,85)how()[mul(809,798)![ $where()%<who()how()/mul(551,122)what()mul(346,544)why()#mul(424,338)!$don't()how()how():{>>' }]mul(587,975)-?# }-]mul(800,437)$mul{[mul(603,103)>-/#why()mul(285,453)who();+{@ when()]don't()+[what(730,765) mul(399,137)%]select()#<[^>mul(146,316)~][from() mul(687,295)mul(347,287)when()>!from()&mul);<<from()mul(400,956)#;why()}<who();mul(743,166)}>when()+;{^mul(267,700){~,!]?<mul(888,527)$~> how()mul(779,914)select()&>^/%?<why()mul(337,111)where()how()<-mul(457,594)*/how()mul(328,728)>}>-$*^mul(387,58)^who()&mul(157,49)#?/mul(35,606)when()')from()?%mul(451,146)'(where()mul(977,491)mul(916,789))&#how()how()>don't()^*mul(437,605)[how() mul(626,940)^*%/mul(884,929)select()mul(84,192)mul(111,274)what()mul(95where()![[(who()[mul(593,249)]]@#when()why()-/mul(230,390)#~],(:mul(840,931)mul(421,658)from(653,680)>&mul(34,90)>when()&}:why()mul(956,881)!when())$^]@who()select()where()mul(94,737)from()who()mul(816,357)')^<when(97,556)}/)select(167,991)mul(888,358);what()]{-when()%>^mul(454,208)$&mul(136,496){$what()mul(897,490)>'mul(376,325){why(),%]#<mul(219,353)(mul(659,921)who(){what())mul(224,414)NEWLINE&&^(?when()^why() mul(91,818)what()what()*do()-mul(217,631)mul(28,181)'!from()mul(949,185)/,&what(964,586)what()who()mul(353,335(what() where()!select():mul(736,902);who()who()mul(877,853)&<%from()^($>what()mul(953,618)+from()mul(378,46)mul(138,440)who()#where() ><mul(554~what()~how()!select()%mul(387,205)&mul(285,757)~<{<)>(from()#mul(708,59)&why()mul(830,439)mul(468,479)why()<$,~},mul(279,437)<why()^}>%([mul(276,252)-#$mul(596,842)from()mul(873,817)*{{from()#(%^mul(765,528)!<< what())^mul$how()<select()why()mul(592,403)mul(647,574)-$how()??<,,mul(423,736)< when()?(mul(666,851) ]mul(410,586):mul(519,320),how())(?@mul(531,672)>}/what() +:mul(411,270,,({(]!mul(627,262)/how()**how()$''+mul(791,814);-;;:mul(990,764)}where())))&((!mul(5,111)~how()from()&,how()mul(492,492)from()[$,+) @(mul(999,416)$&who(959,257)&mul(722,457)@how()) ^>;)@{mul(221,679)?who()$+{-^*{mul(241,314)how()][!mul(940,32){$(~@'+>mul(453,515*;mul(215,275)~/[,why(21,55)(who()',>mul(567,83)mul(330,717)>#!mul(611,308)+&select()(})/mul(744what(424,184)?mul(377,16)):(<[@mul(757,897)#^mul(404,155)%don't()}what(573,178)what()+mul(204,894)%mul(34,307))mul(794,115) +)from()}mul(515,433)^mul(529,684)from()why()where()?mul(956,914)(])?[mul(645,179)+mul(400,263)from()select()&^*mul(422,526){~;what()/)#don't()*%!/(mul(326,211)*%@select()from()[~&mul(456{why()from(138,423)-^(&!?mul(995,210):;when()why()how()!mul(394,185)how()!~who() ^how()'where():mul(348,18)mul(194who()&~*~&{/%mul(505,325) *%mul(459,604)>)) ~ -where()~{mul(579,481)mul(135,794)-*mul(453,355)~/](![from()mul(443,346)mul*[,~%why()-{do()/when(43,713)mul(136,26){^when()why()'mul(108,341)[@?!',+@who()mul(195]{&@{?:how()what()select()don't():]]#mul;what()&?:mul(541,941),&;-what(75,560)who()what()?how()mul(314,260)!)mul(250,620)>#mul(612,209),#?;mul(661,597)/mul(563,594)when()!:!mul(683,595)*what()when())'how();@mul(287,255)how()/^mul(345,555) who()/when()mul(681,924) 'mul(189,542)'mul(102,360)why()!'how()-?;,mul(874,55)+:!>what()mul(538,354)**]~how()who()mul(277,851),where(802,203)<{(];'?mul(268,251)~{:]mul(139,820){^^[ /;when() what()mul(775,595)/,)^;&where(),mul(644,487)?(mul(590,599what()%-who(){mul(112,571){$mul'/#mul(835,137)$&(mul(201,460)how()from()*@where()mul(934,320),[what()where())? :don't()&+'mul(66,8)~ mul(465,911)]?how()what(),;/:*-don't()#:?where()$mul(951,775)from()%@{who()who()!mul(78,456)^[from(),mul(144,347)']where()#([ @[]mul(660,565)}}~mul(738,761)-mul(514,849)mul(648,439who()+<,*/when()!why()mul(904,440)^ select())!@-mul(442,126% #?{mul(47,20)%mul(113,81)/;&+{@mul(504,712);select() mul(720,642)when()*#who()<-'];;mul(821,613)?select()!>when(){mul ,mul(597,943)$-what()*when()where()-}select(){mul(999,17)select(230,593),% mul(920,227)>where()@!~(select()!*mul(301,278)mul(538,232*!/when()mul(283,204)'who() ]mul(861,903)what()? %{* <-mul(112,180)'?(!mul(121,398)']<~/mul(363,850)])from()mul<>?!!from()when()select()!mul(551,325)[where())-:{#)mul(114}}:,,mul(341,114)from()?why() from()# mul(611,400))what()% from()}/when()'mul(874,416)'@&~+]mul(916,295what()@why()how()>where()-^mul(988,626)select()#!)who()why()mul(597,791)};mul(160,184) from()~{;!where()mul(332,928)where()(#!/usr/bin/perl+^who()]:,~}select():mul(810,730)when()mul(312;&what(415,542)who(560,710)who()from()^mul(828,831)> }how(595,281)!why()*/:mul(70,967)NEWLINE(do(){,-how()<(how()[{why()mul(16,675))+don't()!>-((&what()!mulwhere()+( mul(446,260)#+&how()}}when()<mul(517,657)how()$)' ?>who()/do()[,who()]>-~<mul(370,491)*]*}/'&mul(451,243)mul(459,272)^]' >from(),mul(200,312);$mul(997,25);?where(203,706)&?}select(),mul(553,783)@^~mul(779,661)%)mul(252,997)what()from();%mul(439,801)select()#?')~;%}mul?why()+!mul(385,635)@)^):!*)how()mul(563,131)#&mul(720,10)~#<+]^!:@how()mul(24,633)~mul(103,646)mul(331,217)~#mulwhy()@-$> mul(288,357)how() when();;why()<+mul(513,580)?when(299,618)!<^-mul(318,287) }mul(88,924)mul(220,403<what()mul(180,327)where()? @mul(766,852),mul(758,342)#&<when()select()^]}mul(354,76)select()^(+don't()mul(371,236)!where(){mul(679,524$}];do()%mul(334,640)#]*how()}&@from()+mul(927when();':when()who()when(90,761)why()why()&mul(894,120)&-?'^^do()}^;from()&,]:<%mul(433,887)?$when()from()select())when(){'mul(84,915)[  <>mul(264,790)mul(78,811),,(<why()}:}~mul(407,891)-~;who(){/when()what()what()mul(56,769)how()}>/who()who()mul(978,770)[what()$)]#:%mul <when()}mul(970,37):select()why()(?<^ ?<mul(357,272)>mul(57,890)'(mul(146,967)[<#%)^;how()]>mul(166,279)]mul(24,319)%;select()-!/don't()>:mul(858,696)mul(622,496)*{{-~why()how()what()-mul(973%}+> mul(904,891)*(:{%mul(618,932)&!~*mul(77,889)}%~{mul(206,797)select()what() who()+*what(499,999)?@@mul(114,405)(()where()}/){]}mul(841,73)@!where(581,676)]#from(879,459)}^mulhow()do()}select()~!~)[why(364,979)who(533,785)mul(839,475)[{;>)(@what()mul(597,209)-$-^select()mul(453+;:#:?&mul(972,784)what()#select()%/[select()[,how()mul(436,10)]!~)select() mul(982,995select()~/<why()]~select(409,236)do();:+-where()';)mul(580,7)%mul(844,208) #^mul(353,253)?from()where()mulwhat(){select()why()mul(698,22)&?how():,from()what()]where()mul(260,416)who()when()+select(632,146)}mul(214,946)&how(860,45)!mul[from()>%(,do()#who()]!,/*mul(718,383)when()>^*mul(803,383)when(); mul(568,612)/from()from()}what(219,960)from()*don't()@@why();who()where()mul(222,279){ mul(758,766)what()who()!how(38,972)~;],select()/mul(974,879)!don't()mul(368,975)where()^$[^&] -{mul(153,172)what()&+)[mul(97,652)when(534,157)~,:where()do()%%@]?&when(435,925)what(){mul(155,627)?{;@#mul(466,775)(;mul(834,395)//>()-don't() $mul(329,300)<+&'@^mul(469,14)*&why(99,525)',mul(427who()*@< ?do()[>from()when()?#,'&:mul(585,898)mul(128,392)-(?[,where()'^where(575,788)+mul(378,473how() '$'#@who()from()<mul(979,827)what()^mul(637,26)&what()*why()!how()mul(643<{}who()where()mul(443,856)>how()?(//mul(768,590)when()-: ](where()who()(mul(716,399)/~)@mul(754,670)what()mul(656,266):(;%!]mul(595,874)why()%@<^?mul(702,835)(![&&/+%mul(421,278)}where()-%^'+mul(842,496)/?@:]mul(282,851)~@)how())mul(543,112))]+^)mul(133,862);#)when()who()why()when(58,966),,mul(513,202)@mul(716,648)(mul(793,735)what()]where()%+-/mul(359,127)-+}/mul(116,988)when()mul(153,16):'@$who():~-mul(441,603)'how(){ #why()%{{mul(877,856)select()who(777,457)select()from())how(345,367)from()mul(447,557)%/$-select(),when()+what()mul(189,616)what()}mul(822,616)mul(454,622)how()&who()&#do():> mul(353,679)^(@select()<;mul(414,440)why()+how()&,]#-&mul(402,532)-})~#$-!<mul(895,294)/;( }>mul(883,415):<@]*from() mul(28,253){where()? <!&,why()?mul(633,240)]--+^{how()%]mul(649,701)]:!why()+who())mul(126,903)]what()@select()$from()mul(587,84)mul(911,475)do()!];when()*;[where(),mul(370,958)what()/>what()select()~mul(259,972)-(]<}>when()from()$mul(650,381)~from()}from()who()>mul(72,307),who()where()?@<when()@why()mul(585,731)mul(272,301)-%who()when(202,213)*mul(884,335)]@@why()$do()~#mul(786,141)NEWLINEwhere()}/what(611,646)!mul(470,537)}who()what()]-$[what()mul(341,864)<(+from()}>{where()mul(706,447)from(671,711))~mul(601,925)} ;what()[mul(533,851~{&what()(@{<'where()mul(799,568)%<why()~]'+$mul(169,116)~<why()from()-^;mul(447,48);from()'how()mul(643,718)select()+ ?<,$mul(622,397):*>where()<when()&))mul(410,76)/[mul(951,998)% #'~}-mul(954,766)-when():do()when()where())^:?mul(460,200]how()$&$/;&who()mul(126,104)when()}$when()+$why()%what()who()mul(777,781)-$@,+(^mul(138,32) /;mul(604,605)':*mul(457,205)from()mul(968,111);+?)!mul(185,427)/#mul(589,783)?#who(284,112)@<'[->mul$>select()[)#^:mul(414,93)]mul(16,757)&[who(),/mul(629,760)&''how(),from()mul(951,329)^mul(781,711):/',+'{%when();mul(661,844)/why()<^}#mul(337,134)!)mul(339,829)([how()+&~how(512,132)!;:mul(696,374))}/what()from()mul(640,944)'{*how()what(279,739)why(843,673)?<mul(930,104)from(71,501)> &!where()mul(347,404)^?>!$&mul(316,524) when()]mul(875,937)$(@]$don't()/who():/]mul(833,846)who()mul(190,362))mul(183,740)how()}mul(14,502):why();why()<mul(752,588),who()where(877,731)&*,%who()where()mul(817,369)+?how(166,381)}mul(787,226)from()>'mul(341,888)mul(668,734)]/what())**&(do()how()*:select()}*:]mul(604{mul(123,983)#&why()mul(159,440)mul(437,830)~};'])[?mul(36,75)mul(836,766),?*select()who()mul(548,488)%--where(521,841))$]do():-from()*mul(355]<+>:mul(58,505)what()from(49,769)mul(108*]~>mul(131,644)?!from()mul(11,884):where()!;select();+[select()mul(358,741)<mul(788,402what()?who()mul(232,817){;from(); mul(452,48)(>(*?]do()(?{@^mul(117,14)^+;what()from()}mul(847,203)/who()where()from(567,960)when()</:~mul(592,204)[}where()*don't()?mul(212,912)who()mul(73,318)how()*who(597,691)){&-mul(971,304)where()mul(64,983)#who()mul(662,2!when()@where(522,361)select(63,12)&+what()!$mul(678,247)when()mul(878,222)]>how()%~'}mul(677,415)mul(91,507)when()*when()from()*(mul(935,477)  from()@ mul(556,85)?)@mul(196,674)^;*+#$mul(531,124)!what()%select(){who()}';~mul(67,663)when()'?mul(205,527)@:+ ?:why() %mul(513,956/}:,'@+$who()-mul(963,914)@from()why()how(292,305)!from(980,892)mul(456,909)!who()<(*@select()&why()mul(947,805)who()how()^}mul(154,935)+?when()('};]>^mul(855,799){who()]+*{mul(823,352)*<$when()+)^&(do()mul(623,916)(['])^what(){select()mul(815,135)}mul(464,34)' <what()@&how()] mul(223,241)mul(595,176):!select()?~)</mul(707,895) how()>^)-^~where()where()mul(50,471)*{select()from() mul~:why()when()<when()?mul(131,929) [mul(45,134)'+:how()]select()@when()%<mul(755,746)who()why(){^mul(592,378)%}mul(88,624)where(901,919)?(how()how()]mul(533,3^where()who()]-mul(394,600)?)~from():mul(139,515),mul(531,61);$$how()mul>[why();%, }-where()#mul(184,632)~]+'select()}what()mul(675,164)mul(360,852)mul(875,801):where(811,851)mul(702,746)mul(29,632)[{^]-:!{ who(719,324)mul(720,687);:/[#*mul(431,415)mul(123,914]&?%$how()mul(655,184)]@?how()*$(-what()mul(323,687)mul(474,75);mul(846,335):%;do()~?where()~mul{}?%mul(446,300)^how(),<&from()#!#from()mul(423,746)how()what()don't()what()+*<mul(231,901)}from()mul(580,914)why()#%{}@^<mul(325,335)~mul(97,85)how() select()how()*]{{mul(138,378)mul(232,238)how(816,837)who()mul(855,527)!$}%[who()select(222,409)do()+) mul(853,840)#mul(974,262)*when()/<mul(85,995):]how()when() mul(883,291)?))select()}mul(218,597)when()!why())+mul(920,414)mul(263,33)NEWLINE~-$'&&^!<mul(959,544)@where()#:?%)/)-mul(730,399)::mul(799,976)<mul(83%*/who(215,306)do()% '~mul(47,623):) <select())?mul(36,132)~don't()+,+,'#],(mul(479,758];select()<~?[,when():mul(433,783)],where()/do()'who()$+what()-^mul(620,968)?/]-}why()!]#mul(826,251)&?mul(953,890)$~{where()$}}[+mul(671%{why()!$]}^mul(651,483)how()[[(do()*:;$*mul(818,404)~where()}what()[} mul(750,606)mul(909,386)why()how()&how(){{how()mul(208,481)mul(793,351)}-['}:}who()mul(42,668)[do()}select()??from():&?)mul(85,533):~?$+when()^how()&do())<when()mul(831';,'where()when()'+from()^mul(952,914))mul(960,931)who()from()<what()*%why()when()-@mul(829,638);when(){ mul(661,694)>#:mul(268,185)@do()!>?~;@]mul(657,833) ,(who()-who()mul(415,876)]&#?@'!/&mul(437,971)^,+mul(884,392):mul(183,497)^from()mul(204,743)^'>}who()$;}mul(892,574)+ from()?$mul(922,854))select()#,+>where(),*mul(551,303)?}mul(261,657)?why()}why()when()%-mul(124,265!mul(979,380)/@select()}>why()+#mul(384,303)$,@@-mul[mul(479,548)-]#> ?:!do()how()@&mul(917,657{:$&mul(966,387)}what())[-]mul(183,849)^^who()&<,mul(669,375)mul(323,459)$%/from()~+}when()mul(789,390)'+mul(804,927)#who()mul(102,842)$$)how()from()select()][mul(380,252) )>when()where()how()who():#where(184,552)mul(244,943)$&$*}*-mul(727,613)(#why()}>mul(807,274)mul(577,489)mul(731,223)>where()/!]? %where()mul(359,604)/$;$+}mul(182,17)why()-how()mul(792,962)why()/{-(how()%'select()mul(997,718)/{mul(7,739)select();:mul(800,703)[when()' #~why()where()*mul(345,374)mul(308,927)how()%@how()mul(233,785)#{!select()mul(208,457)#from()}what()mul(347,911)where()from()@;(mul(492,896)&;?+<![:!<mul(211,499))!%]mul(12,519)'?--/,mul(158,834)::$why()who(171,915),#mul(807,360)?}}}do(){~] <'>, mul(948,682)+~when()}from()mul(930,691)[&]*((#mul(600,425){what()'{)@,where();:mul(844,671)~+)#<where()when():{mul(124,928)where()*: -@mul(194,634)why(466,842)'-mul(402,954)!why()?mul(256,694)don't()&mul(797,748)from()<why()<don't():~why()when()who(){mul(44,366)&{^mul(957,373)*select()$%why()~mul(956,708)'/}how()do()%from()+select()]+when()mul(381,888)(!?#{ from()mul(423,132) ($~$@?mul(225,981);;+who():<)%^mul(840,611)!)mul(763,490)&why()@{where()mul(852,987)*!what()(mul(680,776)mul(436,532)from(52,270);) ^mul(28,580)how()>,(mul(446,155)$%@/:mul(749,494)mul(24,97)where(6,997)&where()?why(449,637)mul(631,323))mul(192,700));/$]what()mul(820,765)who()(>%>mul(702,770)*-[;}(mul(438,245)@)]^/'#mul(554,294)!mul(34,410)where()$<#how(360,499)@#mul(585,680)<^};mul(295,437)where()] {+mul(607,28)why()#% do();mul(96,932)]why()+who(){<,[where()mul(271,645);^:{mul(411,161)]<>do()@';when() (mul(41,299)(!what()*select(387,698)$]mul(942,465)^?~what(),*?-'from()mul(70,415)why()'from()how()mul(682,699)!^-when()?when()#mul(473,999)  {<mul(676,919)+??<#?mul(119,628)<&~from()}:mul(740,385)mul(444,907)@~,*$<, $@don't()~:+@how()select()what()%$mul(389,212);;what()%[how()mul(210,340):how()'-mul(80,124)&-how()>(~>^why()}mul(240,258)+why()&%mul(579,916)!(]((select(112,996)#($,mul(584,139)%
2024/input/03-p2.txt
@@ -0,0 +1,1 @@
+03-p2-oneline.txt
\ No newline at end of file
2024/input/README.md
@@ -0,0 +1,32 @@
+# Input Files
+
+Filename format:
+
+`{{ day }}-{{ type }}{{ part }}.txt`
+
+Where:
+
+ - day: `01`, `02`, `03` ... `25`
+ - type: `e` for example or `p` for puzzel input type
+ - part: `1` part 1, `2` part 2
+
+Symlinks are encouraged when content doesnt change
+
+### Examples:
+
+```
+01-e1.txt
+01-p1.txt
+01-e2.txt
+01-p2.txt
+...
+09-e1.txt
+09-p1.txt
+09-e2.txt
+09-p2.txt
+...
+25-e1.txt
+25-p1.txt
+25-e2.txt
+25-p2.txt
+```