Compare commits

...

54 Commits

Author SHA1 Message Date
Christian
1d9dc696a8 Day 16: Early exit search loop 2025-01-24 22:52:32 +01:00
Christian
9654c59bfd Day 16: Use two stacks instead of PQ 2025-01-24 17:24:56 +01:00
Christian
65b220007e Eternal builds 2024-12-28 22:45:09 +01:00
Christian
3515ad8d11 Day 24.... cleanup 2024-12-28 14:19:44 +01:00
Christian
76367959ae Day 24 ... overfit 2024-12-28 14:15:13 +01:00
Christian
3c6824e070 Day 25 2024-12-25 08:35:30 +01:00
Christian
d1079b00b2 Day 23 2024-12-23 12:56:47 +01:00
Christian
843bfcb2c3 Day 22 2024-12-22 17:44:41 +01:00
Christian
6db15ba9af Day 21 2024-12-21 20:01:19 +01:00
Christian
58710aca7a Day 20 shave off some cycles 2024-12-20 20:52:05 +01:00
Christian
cdf14fdada Day 20 faster? 2024-12-20 16:38:26 +01:00
Christian
4e20f541f9 Day 20 slooooow 2024-12-20 13:24:10 +01:00
Christian
57852ccfc1 Cleanup 2024-12-19 10:14:53 +01:00
Christian
0198ead034 Day 19 2024-12-19 08:48:43 +01:00
Christian
71804973b0 Day 18 2024-12-18 12:37:04 +01:00
Christian
e435a7b160 Day 17 2024-12-17 12:49:00 +01:00
Christian
f703a5f028 Day 16 2024-12-16 12:17:01 +01:00
Christian
51b49018e4 Revert "Day 11 (Make fast when hot)"
This reverts commit 7bd424d1f9.
2024-12-15 12:42:06 +01:00
Christian
558b9f33be More pretty 2024-12-15 12:33:30 +01:00
Christian
7bd424d1f9 Day 11 (Make fast when hot) 2024-12-15 12:31:08 +01:00
Christian
10d9d3452f Day 15 2024-12-15 12:06:12 +01:00
Christian
38927a7889 Day 14 Mathy solution 2024-12-14 21:27:33 +01:00
Christian
54c29d49bf Codegolf it a bit 2024-12-14 19:51:50 +01:00
Christian
2aadf58582 Day 14 2024-12-14 10:40:00 +01:00
Christian
9593204edb Make fast 2024-12-13 14:50:13 +01:00
Christian
c9d89a2b7e Day 13 2024-12-13 08:27:43 +01:00
Christian
b00c5c369e Day 12, at least it works 2024-12-12 21:43:44 +01:00
Christian
2f960f83eb More cleanup 2024-12-11 08:56:38 +01:00
Christian
ca68f92433 Cleanup 2024-12-11 08:53:10 +01:00
Christian
87b67449b2 Day 11 2024-12-11 07:56:37 +01:00
Christian
1715e821fb Use library methods 2024-12-10 14:06:45 +01:00
Christian
ca5831b022 Cheat (by doing all the work in preprocessing) 2024-12-10 07:32:46 +01:00
Christian
9e2aca403f Day 10 2024-12-10 07:13:38 +01:00
Christian
4c675c3ffe Make Day 7 faster 2024-12-09 17:58:13 +01:00
Christian
eee695007d Cleanup 2024-12-09 11:14:11 +01:00
Christian
24e925c27d Fix bad PQ access pattern 2024-12-09 09:58:46 +01:00
Christian
df56303309 .... Add data for Day 9 .... 2024-12-09 09:33:00 +01:00
Christian
ad594016cd Day 09 2024-12-09 09:30:25 +01:00
Christian
a7ee9bd981 Add nativeImage build config 2024-12-08 10:30:53 +01:00
Christian
1d14e2f2b5 Minor cleanup 2024-12-08 10:30:53 +01:00
Christian
66575c4320 Make D8 more general 2024-12-08 09:30:12 +01:00
Christian
7c4328ca42 Day 08 2024-12-08 09:16:48 +01:00
ctsk
4f94a48bbe Remove Util 2024-12-07 20:49:42 +01:00
Christian
82c7c9fdd9 Improve (?) Day 06 2024-12-07 19:05:00 +01:00
ctsk
67e5c84398 Drop slow s-interpolation 2024-12-07 08:40:14 +01:00
ctsk
c0167d1bfe Some cleanup 2024-12-07 08:34:46 +01:00
Christian
d4dd6e8f8b Anomaly? 2024-12-07 07:11:38 +01:00
Christian
bba977d231 Day 07 2024-12-07 06:40:50 +01:00
Christian
74384ddd69 Some parallelism 2024-12-06 08:55:31 +01:00
Christian
981e1aaa3c Day 06 2024-12-06 08:37:02 +01:00
ctsk
d056580a87 Fix absolute paths 2024-12-05 19:18:55 +01:00
Christian
4445e63329 Use os-lib, Add command to run all problems 2024-12-05 16:09:58 +01:00
Christian
94eb34f386 Switch to os-lib 2024-12-05 15:31:06 +01:00
Christian
24936839a5 Simplify some more 2024-12-05 15:19:57 +01:00
76 changed files with 18343 additions and 66 deletions

View File

@@ -4,8 +4,8 @@ language: "scala"
dockerfile: "Dockerfile" dockerfile: "Dockerfile"
code: "/code" code: "/code"
workdir: "/code" workdir: "/code"
runonce: "./mill aoc.assembly" runonce: "./mill aoc.nativeImage"
cmd: "java -jar ./out/aoc/assembly.dest/out.jar %day% %input%" cmd: "./out/aoc/nativeImage.dest/aoc %day% %input%"
environment: environment:
- AOC_BENCH=1 - AOC_BENCH=1
daypath: "aoc/src/dev/ctsk/aoc/days/Day%dayzero%.scala" daypath: "aoc/src/dev/ctsk/aoc/days/Day%dayzero%.scala"

View File

@@ -1,9 +1,15 @@
FROM eclipse-temurin:23-jdk-alpine FROM eclipse-temurin:23-jdk
RUN apk add curl RUN apt-get update && apt-get install -y curl gzip build-essential libz-dev
RUN curl -fL "https://github.com/coursier/launchers/raw/master/cs-x86_64-pc-linux.gz" | gzip -d > cs
RUN chmod +x cs
RUN cp cs /usr/local/bin
RUN ./cs setup --yes
COPY . /build COPY . /build
WORKDIR /build WORKDIR /build
RUN ./mill aoc.assembly RUN ./mill aoc.assembly
RUN ./mill aoc.nativeImage

View File

@@ -0,0 +1,27 @@
package dev.ctsk.aoc
import scala.collection.mutable
case class DisjointSets[A](members: Seq[A]):
private val parent = mutable.Map.from(members.zip(members))
private val rank = mutable.Map.from(members.map(_ -> 1))
def joint(m1: A, m2: A): Boolean = find(m1) == find(m2)
def find(member: A): A =
val up = parent(member)
if up == member then up
else {
val root = find(up); parent(member) = root; root
}
def union(m1: A, m2: A): Unit =
val p1 = find(m1);
val p2 = find(m2)
if p1 == p2 then return
val r1 = rank(p1);
val r2 = rank(p2)
r1.compare(r2) match
case k if k < 0 => parent(p1) = p2
case 0 => parent(p1) = p2; rank(p2) += 1
case k if k > 0 => parent(p2) = p1

View File

@@ -0,0 +1,96 @@
package dev.ctsk.aoc
import scala.reflect.ClassTag
object Point:
def of(x: Long, y: Long): Point = Point(x.toInt, y.toInt)
case class Point(x: Int, y: Int):
def +(o: Point): Point = Point(x + o.x, y + o.y)
def -(o: Point): Point = Point(x - o.x, y - o.y)
def *(n: Int): Point = Point(n * x, n * y)
def reduce: Point = { val g = gcd(x.abs, y.abs); Point(x / g, y / g) }
def manhattan: Int = x.abs + y.abs
val DIRS = Seq(Direction.Up, Direction.Right, Direction.Down, Direction.Left)
object Direction:
def from(c: Char): Direction =
c match
case '>' => Direction.Right
case '<' => Direction.Left
case '^' => Direction.Up
case 'v' => Direction.Down
enum Direction:
case Up, Right, Down, Left
def turnRight: Direction = Direction.fromOrdinal((ordinal + 1) % 4)
def turnLeft: Direction = Direction.fromOrdinal((ordinal - 1 + 4) % 4)
def toPoint: Point =
this match
case Up => Point(-1, 0)
case Right => Point(0, 1)
case Down => Point(1, 0)
case Left => Point(0, -1)
def apply(p: Point): Point = p + toPoint
def applyN(p: Point, n: Int): Point = p + toPoint * n
def flip: Direction =
this match
case Up => Down
case Right => Left
case Down => Up
case Left => Right
case class Pose(pos: Point, dir: Direction):
def turnLeft: Pose = Pose(pos, dir.turnLeft)
def turnRight: Pose = Pose(pos, dir.turnRight)
def step: Pose = Pose(dir(pos), dir)
def step(n: Int): Pose = Pose(dir.applyN(pos, n), dir)
class Grid[A](val data: Array[Array[A]]):
def height: Int = data.length
def width: Int = data(0).length
def apply(p: Point): Option[A] =
if p.x < 0 | p.y < 0 | p.x >= height | p.y >= width
then None
else Some(data(p.x)(p.y))
def update(p: Point, a: A): Unit = data(p.x)(p.y) = a
def find(f: A => Boolean): IndexedSeq[Point] =
for
i <- data.indices
j <- data(i).indices
if f(data(i)(j))
yield Point(i, j)
def findFirst(f: A => Boolean): Option[Point] =
data.zipWithIndex.flatMap { (row, x) =>
row.zipWithIndex.collect { case (a, y) if f(a) => Point(x, y) }
}.headOption
def count(f: A => Boolean): Int = data.map(_.count(f)).sum
def contains(p: Point): Boolean =
p.x >= 0 && p.y >= 0 && p.x < height && p.y < width
def points: Seq[Point] =
for
x <- data.indices
y <- data(x).indices
yield Point(x, y)
def fill(value: A): Unit =
for
row <- 0 until height
col <- 0 until width
do data(row)(col) = value
def sameSizeWith[B: ClassTag](value: B) =
Grid(Array.fill(height, width)(value))

View File

@@ -7,21 +7,56 @@ val solvers = Map[Int, Solver](
2 -> Day02, 2 -> Day02,
3 -> Day03, 3 -> Day03,
4 -> Day04, 4 -> Day04,
5 -> Day05 5 -> Day05,
6 -> Day06,
7 -> Day07,
8 -> Day08,
9 -> Day09,
10 -> Day10,
11 -> Day11,
12 -> Day12,
13 -> Day13,
14 -> Day14,
15 -> Day15,
16 -> Day16,
17 -> Day17,
18 -> Day18,
19 -> Day19,
20 -> Day20,
21 -> Day21,
22 -> Day22,
23 -> Day23,
24 -> Day24,
25 -> Day25
) )
@main def main(day: String, input: String): Unit = def runSolver(solver: Solver, input: os.Path): Unit =
solvers.get(day.toInt) match val (timings, solution) = solver.run(input)
case Some(solver) => sys.env.get("AOC_BENCH") match
val (timings, solution) = solver.run(input) case Some(_) =>
sys.env.get("AOC_BENCH") match println(solution.p1)
case Some(_) => println(solution.p2)
println(solution.p1)
println(solution.p2)
case None =>
println(f"Preprocessing: ${timings.prep}%24s μs")
println(f"Part 1: ${solution.p1}%15s ${timings.p1}%15s μs")
println(f"Part 2: ${solution.p2}%15s ${timings.p2}%15s μs")
case None => case None =>
println(s"Day $day not solved") println(f"=============================================================")
println(
f"Day ${solver.day}%02d ------------------------------------------------------"
)
println(f"Prep ${timings.prep}%53s μs")
println(f"Part 1 ${solution.p1}%40s ${timings.p1}%10s μs")
println(f"Part 2 ${solution.p2}%40s ${timings.p2}%10s μs")
println(f"-------------------------------------------------------------")
println(f"Total ${timings.total}%52s μs")
println(f"=============================================================")
@main def main(day: String, input: String): Unit =
val num = """(\d+)""".r
day match
case "all" =>
solvers.toList.sortBy(_._1).foreach { case (day, solver) =>
runSolver(solver, os.Path(input, os.pwd) / f"$day%02d.in")
}
case num(_) =>
solvers.get(day.toInt) match
case Some(solver) => runSolver(solver, os.Path(input, os.pwd))
case None => println(s"Day $day not solved")
case _ => println(day)

View File

@@ -0,0 +1,11 @@
package dev.ctsk.aoc
import scala.collection.mutable
object Memo:
def Y[I, O](f: (I, I => O) => O): I => O =
lazy val yf: I => O = Memo(f(_, yf(_))); yf
class Memo[-I, +O](f: I => O) extends (I => O):
private[this] val memo = mutable.Map.empty[I, O]
def apply(i: I): O = { lazy val o = f(i); memo.getOrElseUpdate(i, o) }

View File

@@ -0,0 +1,6 @@
package dev.ctsk.aoc
def NAT_REGEX = """(-?\d+)""".r
def longs(string: String): Vector[Long] =
NAT_REGEX.findAllIn(string).map(_.toLong).toVector

View File

@@ -1,11 +1,12 @@
package dev.ctsk.aoc package dev.ctsk.aoc
case class Timings(prep: Long, p1: Long, p2: Long) case class Timings(prep: Long, p1: Long, p2: Long):
def total: Long = prep + p1 + p2
case class Solution(p1: Object, p2: Object) case class Solution(p1: Object, p2: Object)
abstract class Solver(day: Int): abstract class Solver(val day: Int):
def run(input: String): (Timings, Solution) def run(input: os.ReadablePath): (Timings, Solution)
def timed[A](solution: => A): (Long, A) = def timed[A](solution: => A): (Long, A) =
val start = System.nanoTime() val start = System.nanoTime()

View File

@@ -0,0 +1,25 @@
package dev.ctsk.aoc
import scala.collection.mutable
class Trie(
var isPrefix: Boolean = false,
var children: mutable.Map[Char, Trie] = mutable.Map.empty
):
def insert(w: String, pos: Int = 0): Unit =
if pos == w.length
then isPrefix = true
else
children.get(w(pos)) match
case Some(child) => child.insert(w, pos + 1)
case None =>
val child = Trie()
children(w(pos)) = child
child.insert(w, pos + 1)
def prefixes(w: String, pos: Int = 0, acc: List[Int] = Nil): List[Int] =
val newAcc = if isPrefix then pos +: acc else acc
if pos >= w.length then return newAcc
children.get(w(pos)) match
case None => newAcc
case Some(child) => child.prefixes(w, pos + 1, newAcc)

View File

@@ -0,0 +1,13 @@
package dev.ctsk.aoc
def gcd(a: Int, b: Int): Int =
if b == 0 then a else gcd(b, a % b)
extension [A](xs: Seq[A])
def pairs: Iterator[(A, A)] =
xs.combinations(2).map(xs => (xs(0), xs(1)))
def eea(a: Int, b: Int): (Int, Int, Int) =
if b == 0 then return (a, 1, 0)
val (d, x, y) = eea(b, a % b)
(d, y, x - y * (a / b))

View File

@@ -5,10 +5,9 @@ import dev.ctsk.aoc._
object Day01 extends Solver(1): object Day01 extends Solver(1):
type Input = (Array[Int], Array[Int]) type Input = (Array[Int], Array[Int])
def pre(input: String): Input = def pre(input: os.ReadablePath): Input =
io.Source os.read
.fromFile(input) .lines(input)
.getLines()
.map { case s"$i $j" => (i.toInt, j.toInt) } .map { case s"$i $j" => (i.toInt, j.toInt) }
.toArray .toArray
.unzip match { case (left, right) => (left.sorted, right.sorted) } .unzip match { case (left, right) => (left.sorted, right.sorted) }
@@ -22,7 +21,7 @@ object Day01 extends Solver(1):
val counts = right.groupMapReduce(identity)(identity)(_ + _) val counts = right.groupMapReduce(identity)(identity)(_ + _)
left.map(n => counts.getOrElse(n, 0)).sum left.map(n => counts.getOrElse(n, 0)).sum
def run(input: String): (Timings, Solution) = def run(input: os.ReadablePath): (Timings, Solution) =
val (pre_time, pre_input) = timed { pre(input) } val (pre_time, pre_input) = timed { pre(input) }
val (p1_time, p1_solution) = timed { part1(pre_input) } val (p1_time, p1_solution) = timed { part1(pre_input) }
val (p2_time, p2_solution) = timed { part2(pre_input) } val (p2_time, p2_solution) = timed { part2(pre_input) }

View File

@@ -3,10 +3,9 @@ package dev.ctsk.aoc.days
import dev.ctsk.aoc._ import dev.ctsk.aoc._
object Day02 extends Solver(2): object Day02 extends Solver(2):
def pre(input: String): List[List[Int]] = def pre(input: os.ReadablePath): List[List[Int]] =
io.Source os.read
.fromFile(input) .lines(input)
.getLines()
.map(line => line.split(" ").map(_.toInt).toList) .map(line => line.split(" ").map(_.toInt).toList)
.toList .toList
@@ -25,7 +24,7 @@ object Day02 extends Solver(2):
def part2(lists: List[List[Int]]): Int = def part2(lists: List[List[Int]]): Int =
lists.count(list => safeWithGap(list) || safeWithGap(list.reverse)) lists.count(list => safeWithGap(list) || safeWithGap(list.reverse))
def run(input: String): (Timings, Solution) = def run(input: os.ReadablePath): (Timings, Solution) =
val (pre_time, pre_input) = timed { pre(input) } val (pre_time, pre_input) = timed { pre(input) }
val (p1_time, p1_solution) = timed { part1(pre_input) } val (p1_time, p1_solution) = timed { part1(pre_input) }
val (p2_time, p2_solution) = timed { part2(pre_input) } val (p2_time, p2_solution) = timed { part2(pre_input) }

View File

@@ -24,8 +24,8 @@ object Day03 extends Solver(3):
} }
._2 ._2
def run(input: String): (Timings, Solution) = def run(input: os.ReadablePath): (Timings, Solution) =
val in = io.Source.fromFile(input).mkString val in = os.read(input)
val (p1_time, p1_solution) = timed { part1(in) } val (p1_time, p1_solution) = timed { part1(in) }
val (p2_time, p2_solution) = timed { part2(in) } val (p2_time, p2_solution) = timed { part2(in) }

View File

@@ -1,16 +1,13 @@
package dev.ctsk.aoc.days package dev.ctsk.aoc.days
import dev.ctsk.aoc._ import dev.ctsk.aoc._
import scala.compiletime.ops.double
import scala.reflect.ClassTag
import scala.collection.mutable.ArrayBuffer import scala.collection.mutable.ArrayBuffer
import java.util.concurrent.ForkJoinPool
object Day04 extends Solver(4): object Day04 extends Solver(4):
private val XMAS = "XMAS".r private val XMAS = "XMAS".r
private val REV_XMAS = "XMAS".reverse.r private val REV_XMAS = "XMAS".reverse.r
def diagonals[A: ClassTag](m: Vector[Vector[A]]): Vector[Vector[A]] = def diagonals[A](m: Vector[Vector[A]]): Vector[Vector[A]] =
val diagonals = Vector.fill(m.length + m(0).length - 1)(ArrayBuffer[A]()) val diagonals = Vector.fill(m.length + m(0).length - 1)(ArrayBuffer[A]())
for for
@@ -30,27 +27,19 @@ object Day04 extends Solver(4):
lines.transpose, lines.transpose,
diagonals(lines), diagonals(lines),
diagonals(lines.reverse) diagonals(lines.reverse)
).flatMap(_.toList).map(count).sum ).flatMap(_.map(count)).sum
def part2(grid: Vector[Vector[Char]]): Int = def part2(grid: Vector[Vector[Char]]): Int =
var count = 0 (for
for
i <- 1 until grid.length - 1 i <- 1 until grid.length - 1
j <- 1 until grid(i).length - 1 j <- 1 until grid(i).length - 1
if grid(i)(j) == 'A' if grid(i)(j) == 'A'
& (grid(i - 1)(j - 1) + grid(i + 1)(j + 1) == 'S' + 'M') && grid(i - 1)(j - 1) + grid(i + 1)(j + 1) == 'S' + 'M'
& (grid(i - 1)(j + 1) + grid(i + 1)(j - 1) == 'S' + 'M') && grid(i - 1)(j + 1) + grid(i + 1)(j - 1) == 'S' + 'M'
do count += 1 yield ()).length
count def run(input: os.ReadablePath): (Timings, Solution) =
var in = os.read.lines(input).map { line => line.toVector }.toVector
def run(input: String): (Timings, Solution) =
var in = io.Source
.fromFile(input)
.getLines()
.map { line => line.toVector }
.toVector
val (p1_time, p1_solution) = timed { part1(in) } val (p1_time, p1_solution) = timed { part1(in) }
val (p2_time, p2_solution) = timed { part2(in) } val (p2_time, p2_solution) = timed { part2(in) }

View File

@@ -4,9 +4,8 @@ import dev.ctsk.aoc._
import scala.annotation.nowarn import scala.annotation.nowarn
object Day05 extends Solver(5): object Day05 extends Solver(5):
def pre(input: String) = def pre(input: os.ReadablePath) =
val Array(rulesStr, updatesStr) = val Array(rulesStr, updatesStr) = os.read(input).split("\n\n")
io.Source.fromFile(input).mkString.split("\n\n")
val rules = rulesStr.linesIterator val rules = rulesStr.linesIterator
.map(rule => { .map(rule => {
@@ -20,14 +19,12 @@ object Day05 extends Solver(5):
(rules, updates) (rules, updates)
def run(input: String): (Timings, Solution) = def run(input: os.ReadablePath): (Timings, Solution) =
val (pre_time, (rules, updates)) = timed { pre(input) } val (pre_time, (rules, updates)) = timed { pre(input) }
@nowarn("msg=match may not be exhaustive") @nowarn("msg=match may not be exhaustive")
def isOrdered(u: Vector[Int]): Boolean = def isOrdered(u: Vector[Int]): Boolean =
!u.combinations(2).exists { case Seq(a, b) => !u.pairs.exists((a, b) => rules.contains((b, a)))
rules.contains((b, a))
}
def findMiddle(u: Vector[Int]): Int = def findMiddle(u: Vector[Int]): Int =
u.find(e => u.find(e =>

View File

@@ -0,0 +1,62 @@
package dev.ctsk.aoc.days
import dev.ctsk.aoc._
import dev.ctsk.aoc.Direction._
import scala.annotation.tailrec
import scala.collection.mutable
object Day06 extends Solver(6):
private def analyse(grid: Grid[Char]): Array[Array[Array[Int]]] =
val skipMap = Array.fill(grid.height, grid.width, 4)(-1)
for
obstacle <- grid.find(_ == '#')
d: Direction <- Seq(Up, Down, Right, Left)
(pt, dist) <- Iterator
.iterate(d(obstacle))(d(_))
.takeWhile(pt => grid(pt).exists(_ != '#'))
.zipWithIndex
do skipMap(pt.x)(pt.y)(d.flip.ordinal) = dist
skipMap
def run(input: os.ReadablePath): (Timings, Solution) =
val grid = Grid(os.read.lines(input).map(_.toArray).toArray)
val (pre_time, start) = timed { grid.findFirst(_ == '^').get }
@tailrec def trace(start: Pose, acc: Set[Point] = Set(start)): Set[Point] =
val next = start.step
grid(next.pos) match
case Some('#') => trace(start.turnRight, acc)
case Some(_) => trace(next, acc + next.pos)
case None => acc
val (p1_time, guardRoute) = timed { trace(Pose(pos = start, dir = Up)) }
val p1_solution = guardRoute.size
val (p2_time, p2_solution) =
timed {
val skipMap = analyse(grid)
def loops(start: Pose, obstacle: Point): Boolean =
val seen = mutable.Set(start)
@tailrec def rec(cur: Pose): Boolean =
val next = cur.step
grid(next.pos) match
case Some('#') =>
if seen.add(cur) then rec(cur.turnRight) else true
case Some(_) =>
if next.pos == obstacle then return rec(cur.turnRight)
if next.pos.x == obstacle.x || next.pos.y == obstacle.y
then rec(next)
else
val steps = skipMap(cur.pos.x)(cur.pos.y)(cur.dir.ordinal)
steps != -1 && rec(cur.step(steps))
case None => false
rec(start)
guardRoute.filter(_ != start).count(loops(Pose(start, Up), _))
}
(
Timings(pre_time, p1_time, p2_time),
Solution(Int.box(p1_solution), Int.box(p2_solution))
)

View File

@@ -0,0 +1,57 @@
package dev.ctsk.aoc.days
import dev.ctsk.aoc._
object Day07 extends Solver(7):
def concat(a: Long, b: Long): Long =
var m: Long = 1
while m * 10 <= b do m *= 10
a * (m * 10) + b
def deconcat(a: Long, b: Long): Option[Long] =
val b_len = Math.log10(b).floor.toLong + 1
if (a % Math.pow(10, b_len).toLong == b)
then Some(a / Math.pow(10, b_len).toLong)
else None
class Searcher(target: Long, nums: Vector[Long], elephants: Boolean):
def search(acc: Long = nums(0), pos: Int = 1): Boolean =
if (pos >= nums.length) return acc == target
search(acc + nums(pos), pos + 1)
|| search(acc * nums(pos), pos + 1)
|| (elephants && search(concat(acc, nums(pos)), pos + 1))
class Tester(nums: Vector[Long], elephants: Boolean):
def test(target: Long, pos: Int = nums.length - 1): Boolean =
if pos == 0 then return target == nums(0)
if target <= 0 then return false
test(target - nums(pos), pos - 1)
|| (target % nums(pos) == 0 && test(target / nums(pos), pos - 1))
|| (elephants && deconcat(target, nums(pos)).exists(test(_, pos - 1)))
def check(target: Long, nums: Vector[Long], thirdElephant: Boolean): Boolean =
if nums.contains(0)
then Searcher(target, nums, thirdElephant).search()
else Tester(nums, thirdElephant).test(target)
def run(input: os.ReadablePath): (Timings, Solution) =
val REGEX = """(\d+): (.*)""".r
val (pre_time, in) = timed {
os.read
.lines(input)
.map { case REGEX(value, rest) => (value.toLong, longs(rest)) }
.toVector
}
val (p1_time, p1_solution) = timed {
in.filter(p => check(p._1, p._2, false)).map(_.head).sum
}
val (p2_time, p2_solution) = timed {
in.filter(p => check(p._1, p._2, true)).map(_.head).sum
}
(
Timings(pre_time, p1_time, p2_time),
Solution(Long.box(p1_solution), Long.box(p2_solution))
)

View File

@@ -0,0 +1,41 @@
package dev.ctsk.aoc.days
import dev.ctsk.aoc._
object Day08 extends Solver(8):
type Input = (Vector[Vector[Point]], Grid[Char])
case class Ctx(f: os.ReadablePath):
private val grid = Grid(os.read.lines(f).map(_.toArray).toArray)
private val antennae =
grid.find(_ != '.').groupBy(grid(_)).map(_._2.toVector).toVector
def antinodes(a: Point, b: Point): Iterator[Point] =
def it(a: Point, b: Point) =
Iterator.iterate(a)(_ + (a - b).reduce).takeWhile(grid.contains)
it(a, b) ++ it(b, a)
def part1: Int =
antennae
.flatMap(
_.pairs
.flatMap((a, b) => Iterator(a + a - b, b + b - a))
.filter(grid.contains)
)
.distinct
.size
def part2: Int =
antennae
.flatMap(_.pairs.flatMap(p => antinodes(p._1, p._2)))
.distinct
.size
def run(input: os.ReadablePath): (Timings, Solution) =
val (pre_time, ctx) = timed { Ctx(input) }
val (p1_time, p1_solution) = timed { ctx.part1 }
val (p2_time, p2_solution) = timed { ctx.part2 }
(
Timings(pre_time, p1_time, p2_time),
Solution(Int.box(p1_solution), Int.box(p2_solution))
)

View File

@@ -0,0 +1,70 @@
package dev.ctsk.aoc.days
import dev.ctsk.aoc.*
import scala.annotation.tailrec
import scala.collection.mutable
object Day09 extends Solver(9):
implicit def ord: Ordering[Record] = Ordering.by(-1 * _.offset)
case class Record(offset: Int, size: Int, id: Int):
def checksum: Long = id.toLong * (size * offset + size * (size - 1) / 2)
case class GapMap(data: Map[Int, mutable.PriorityQueue[Record]]):
def relocate(record: Record): Record =
val bucket = data.view
.filter((gapSize, gaps) => gapSize >= record.size && gaps.nonEmpty)
.maxByOption(_._2.head)
bucket match
case None => record
case Some((gapSize, gaps)) =>
val gap = gaps.dequeue()
if gap.offset >= record.offset then return record
val rest = gapSize - record.size
if rest > 0 then
data(rest).enqueue(Record(gap.offset + record.size, rest, -1))
Record(gap.offset, record.size, record.id)
def part1(input: Array[Int]): Long =
val materialized = input.zipWithIndex.flatMap((x, i) =>
if i % 2 == 0
then Iterator.fill(x)(i / 2)
else Iterator.fill(x)(-1)
)
@tailrec
def compact(l: Int = 0, r: Int = materialized.length - 1): Unit =
if l >= r then return ()
if materialized(l) != -1 then return compact(l + 1, r)
if materialized(r) == -1 then return compact(l, r - 1)
materialized(l) = materialized(r); materialized(r) = -1
compact(l + 1, r - 1)
compact()
materialized.zipWithIndex.filter(_._1 != -1).map(_.toLong * _.toLong).sum
def part2(input: Array[Int]): Long =
val offsets = input.scanLeft(0)(_ + _).toArray
val (gaps, files) = input.zip(offsets).zipWithIndex.partitionMap {
case ((value, offset), index) =>
if index % 2 == 0
then Right(Record(offset, value, index / 2))
else Left(Record(offset, value, -1))
}
val gapMap = GapMap(
gaps.groupBy(_.size).view.mapValues(mutable.PriorityQueue.from).toMap
)
files.reverse.map(gapMap.relocate).map(_.checksum).sum
def run(input: os.ReadablePath): (Timings, Solution) =
val disk = os.read.lines(input)(0).map(_.asDigit).toArray
val (p1_time, p1_solution) = timed { part1(disk) }
val (p2_time, p2_solution) = timed { part2(disk) }
(
Timings(0, p1_time, p2_time),
Solution(Long.box(p1_solution), Long.box(p2_solution))
)

View File

@@ -0,0 +1,34 @@
package dev.ctsk.aoc.days
import dev.ctsk.aoc._
import dev.ctsk.aoc.Direction._
object Day10 extends Solver(10):
type Input = Vector[(Point, Point)]
def pre(input: os.ReadablePath): Input =
val grid = Grid(os.read.lines(input).map(_.toArray).toArray)
def step(seq: Input, height: Int): Input =
(for
(p, origin) <- seq
a <- Seq(Up, Down, Left, Right)
if grid(a(p)).exists(_.asDigit == height)
yield (a(p), origin)).toVector
val zero = grid.find(_ == '0').toVector
(1 to 9).foldLeft(zero.zip(zero)) { case (acc, h) => step(acc, h) }
def part1(input: Input): Int = input.distinct.size
def part2(input: Input): Int = input.size
def run(input: os.ReadablePath): (Timings, Solution) =
val (pre_time, pre_input) = timed { pre(input) }
val (p1_time, p1_solution) = timed { part1(pre_input) }
val (p2_time, p2_solution) = timed { part2(pre_input) }
(
Timings(pre_time, p1_time, p2_time),
Solution(Int.box(p1_solution), Int.box(p2_solution))
)

View File

@@ -0,0 +1,40 @@
package dev.ctsk.aoc.days
import dev.ctsk.aoc._
import scala.collection.mutable.{Map => MuMap}
object Day11 extends Solver(11):
private def halves(n: Long): Option[(Long, Long)] =
val numDigits = (Math.log10(n) + 1).toLong
if numDigits % 2 == 1 then None
else
val mod = Math.pow(10, numDigits / 2).toLong
Some(n % mod, n / mod)
private def count(initial: Seq[Long], depth: Int): Long =
def step(stones: MuMap[Long, Long]): MuMap[Long, Long] =
val next = MuMap.empty[Long, Long].withDefaultValue(0L)
for ((stone, count) <- stones) {
if stone == 0 then next(1) += count
else
halves(stone) match
case Some((a, b)) =>
next(a) += count
next(b) += count
case None =>
next(stone * 2024) += count
}
next
val initMap = MuMap.from(initial.map((_, 1L)))
Seq.iterate(initMap, depth + 1)(step).last.values.sum
def run(input: os.ReadablePath): (Timings, Solution) =
val (pre_time, in) = timed { longs(os.read.lines(input).head) }
val (p1_time, p1_solution) = timed { count(in, 25) }
val (p2_time, p2_solution) = timed { count(in, 75) }
(
Timings(pre_time, p1_time, p2_time),
Solution(Long.box(p1_solution), Long.box(p2_solution))
)

View File

@@ -0,0 +1,77 @@
package dev.ctsk.aoc.days
import dev.ctsk.aoc.*
import dev.ctsk.aoc.Direction.*
import collection.mutable
import scala.collection.mutable.ArrayBuffer
object Day12 extends Solver(12):
case class Plots(
layout: Grid[Int],
edges: Map[Int, Array[(Point, Direction)]],
sizes: Map[Int, Int]
)
def mapPlots(grid: Grid[Char]): Plots =
val layout = Grid(Array.fill(grid.height, grid.width)(-1))
val edges = mutable.Map.empty[Int, Array[(Point, Direction)]]
val sizes = mutable.Map.empty[Int, Int]
def fill(start: Point, label: Int): Unit =
layout(start) = label
val edge = ArrayBuffer.empty[(Point, Direction)]
val plant = grid(start).get
var size = 1
def rec(current: Point): Unit =
for
dir <- Seq(Up, Down, Left, Right)
next = dir(current)
do
grid(next) match
case Some(p) if p == plant =>
if layout(next).contains(-1) then {
layout(next) = label
size += 1
rec(next)
}
case Some(_) => edge += ((current, dir))
case None => edge += ((current, dir))
rec(start)
edges(label) = edge.toArray
sizes(label) = size
for
p <- grid.points
if layout(p).contains(-1)
do fill(p, sizes.size)
// grid.points.zipWithIndex.foreach(fill)
Plots(layout, edges.toMap, sizes.toMap)
def part1(plots: Plots): Int =
plots.sizes.map((k, v) => v * plots.edges(k).length).sum
def part2(plots: Plots): Int =
def is(pt: Point, id: Int): Boolean = plots.layout(pt).contains(id)
def cost(id: Int, size: Int): Int =
size * plots
.edges(id)
.map((pt, dir) =>
Seq(dir.turnLeft(pt), dir.turnRight(pt))
.count(adj => is(dir(adj), id) || !is(adj, id))
)
.sum / 2
plots.sizes.map(cost).sum
override def run(input: os.ReadablePath): (Timings, Solution) =
val grid = Grid(os.read.lines(input).map(_.toArray).toArray)
val (pre_time, plots) = timed { mapPlots(grid) }
val (p1_time, p1_solution) = timed { part1(plots) }
val (p2_time, p2_solution) = timed { part2(plots) }
(
Timings(pre_time, p1_time, p2_time),
Solution(Int.box(p1_solution), Int.box(p2_solution))
)

View File

@@ -0,0 +1,32 @@
package dev.ctsk.aoc.days
import dev.ctsk.aoc.*
import os.ReadablePath
object Day13 extends Solver(13):
def solve(machine: Vector[Long], error: Long = 0): Option[(Long, Long)] =
val Vector(ax, ay, bx, by, px_, py_) = machine
val (px, py) = (px_ + error, py_ + error)
val j = (py * ax - px * ay) / (ax * by - bx * ay)
val i = (px * by - py * bx) / (ax * by - bx * ay)
Option.when(i * ax + j * bx == px && i * ay + j * by == py)((i, j))
override def run(input: ReadablePath): (Timings, Solution) =
def inRange(i: Long, j: Long) =
(0 to 100 contains i) && (0 to 100 contains j)
val (pre_time, machines) = timed { os.read(input).split("\n\n").map(longs) }
val (p1_time, p1) = timed {
machines
.map(solve(_))
.collect { case Some(i, j) if inRange(i, j) => i * 3 + j }
.sum
}
val ERR = 10000000000000L
val (p2_time, p2) = timed {
machines.map(solve(_, ERR)).collect { case Some(i, j) => i * 3 + j }.sum
}
(Timings(pre_time, p1_time, p2_time), Solution(Long.box(p1), Long.box(p2)))

View File

@@ -0,0 +1,44 @@
package dev.ctsk.aoc.days
import dev.ctsk.aoc._
import os.ReadablePath
def mu(arr: Seq[Int]) = arr.sum * 1.0 / arr.length
def va(arr: Seq[Int]) = { val m = mu(arr); arr.map(v => (v - m) * (v - m)).sum }
object Day14 extends Solver(14):
private val Y = 101
private val X = 103
def go(robot: (Point, Point), time: Int): Point =
val dst = robot._1 + robot._2 * time
Point((dst.x % X + X) % X, (dst.y % Y + Y) % Y)
def part1(robots: Array[(Point, Point)]): Int =
val end = robots.map(go(_, 100))
val ul = end.count(v => v._1 < X / 2 && v._2 < Y / 2)
val ur = end.count(v => v._1 < X / 2 && v._2 > Y / 2)
val dl = end.count(v => v._1 > X / 2 && v._2 < Y / 2)
val dr = end.count(v => v._1 > X / 2 && v._2 > Y / 2)
ul * ur * dl * dr
def part2(robots: Array[(Point, Point)]): Int =
val xo = (0 to 103).minBy(t => va(robots.map(go(_, t).x).take(50)))
val yo = (0 to 103).minBy(t => va(robots.map(go(_, t).y).take(50)))
val (_, iX, iY) = eea(X, Y)
(xo * iY * Y + yo * iX * X) % (X * Y)
override def run(input: ReadablePath): (Timings, Solution) =
def parse(line: String): (Point, Point) =
longs(line) match {
case Vector(y, x, dy, dx) => (Point.of(x, y), Point.of(dx, dy))
}
val (pre_time, robots) = timed { os.read.lines(input).map(parse).toArray }
val (p1_time, p1) = timed { part1(robots) }
val (p2_time, p2) = timed { part2(robots) }
(
Timings(pre_time, p1_time, p2_time),
Solution(Int.box(p1), Int.box(p2))
)

View File

@@ -0,0 +1,88 @@
package dev.ctsk.aoc.days
import dev.ctsk.aoc._
import dev.ctsk.aoc.Direction._
object Day15 extends Solver(15):
case class Input(grid: Grid[Char], moves: Seq[Direction])
def pre(input: os.ReadablePath): Input =
val Array(map_, moves_) = os.read(input).split("\n\n")
Input(
Grid(map_.linesIterator.map(_.toArray).toArray),
moves_.filter(_ != '\n').map(Direction.from)
)
def part1(input: Input): Int =
val grid = Grid(input.grid.data.map(_.clone))
var cur = grid.findFirst(_ == '@').get
for move <- input.moves do
val dst = Iterator
.iterate(cur)(move(_))
.takeWhile(!grid(_).contains('#'))
.find(grid(_).contains('.'))
dst match
case Some(dst) =>
grid(dst) = grid(move(cur)).get
grid(move(cur)) = grid(cur).get
grid(cur) = '.'; cur = move(cur)
case None => ()
grid.find(_ == 'O').map(p => 100 * p.x + p.y).sum
def part2(input: Input): Int =
val Input(grid_, moves) = input
val grid = Grid(
grid_.data.map(
_.flatMap {
case 'O' => "[]"
case '.' => ".."
case '@' => "@."
case '#' => "##"
}
)
)
def blocked(p: Point): Boolean = grid(p).contains('#')
def free(p: Point): Boolean = grid(p).contains('.')
def clear(p: Point): Unit = { grid(p) = '.' }
def shift(d: Direction, p: Point): Unit = { grid(d(p)) = grid(p).get; clear(p) }
def extend(p: Point): Seq[Point] =
grid(p).get match {
case '[' => Seq(p, Right(p))
case ']' => Seq(Left(p), p)
case c => Seq(p)
}
def push(move: Direction, cur: Point): Boolean =
move match
case Left | Right =>
def step(cur: Point): Boolean =
if free(cur) then return true
if blocked(cur) then return false
if step(move(cur)) then { shift(move, cur); true }
else false
step(cur)
case Up | Down =>
def step(cur: Set[Point]): Boolean =
if cur.isEmpty then return true
if cur.exists(blocked) then return false
val next = cur.map(move(_)).filterNot(free).flatMap(extend)
if step(next) then { cur.foreach { shift(move, _) }; true }
else false
step(Set(cur))
var cur = grid.findFirst(_ == '@').get
for (move <- moves) do if push(move, cur) then { cur = move(cur) }
grid.find(_ == '[').map(p => 100 * p.x + p.y).sum
override def run(input_ : os.ReadablePath): (Timings, Solution) =
val (pre_time, input) = timed { pre(input_) }
val (p1_time, p1_solution) = timed { part1(input) }
val (p2_time, p2_solution) = timed { part2(input) }
(
Timings(pre_time, p1_time, p2_time),
Solution(Int.box(p1_solution), Int.box(p2_solution))
)

View File

@@ -0,0 +1,78 @@
package dev.ctsk.aoc.days
import dev.ctsk.aoc.{Direction, *}
import scala.collection.mutable
import scala.util.boundary
import scala.util.boundary.break
object Day16 extends Solver(16):
override def run(input_ : os.ReadablePath): (Timings, Solution) =
val (pre_time, grid) = timed {
Grid(os.read.lines(input_).map(_.toArray).toArray)
}
val start = grid.findFirst(_ == 'S').get
val end = grid.findFirst(_ == 'E').get
case class State(distance: Int, pose: Pose)
def search(start: Pose): (Map[Pose, Int], Map[Pose, List[Pose]]) =
val distance = mutable.Map(start -> 0)
val ancestor = mutable.Map.empty[Pose, List[Pose]]
var near = mutable.Stack(State(0, start))
var far = mutable.Stack.empty[State]
inline def relax(u: Pose, v: Pose, vDist: Int, isFar: Boolean): Unit =
val oldDist = distance.getOrElse(v, 1_000_000)
if vDist == oldDist then ancestor(v) +:= u
if vDist < oldDist then
ancestor(v) = List(u)
distance(v) = vDist
if isFar
then far.push(State(vDist, v))
else near.push(State(vDist, v))
boundary:
while near.nonEmpty do
var atEnd = false;
while near.nonEmpty do
val State(uDist, u) = near.pop()
atEnd |= u.pos == end
if uDist == distance(u) then
if !grid(u.step.pos).contains('#') then
relax(u, u.step, uDist + 1, false)
for (v <- Seq(u.turnLeft, u.turnRight)) do
relax(u, v, uDist + 1000, true)
if atEnd then break()
val tmp = near
near = far
far = tmp
(distance.toMap, ancestor.toMap)
val (p1_time, (distance, ancestor)) = timed {
search(Pose(start, Direction.Right))
}
val endPose = DIRS.map(Pose(end, _)).minBy(distance.getOrElse(_, 1_000_000))
val p1 = distance(endPose)
val (p2_time, p2) = timed {
val all = mutable.Set(endPose)
var cur = Set(endPose)
while cur.nonEmpty do
cur = cur.filter(_ != Pose(start, Direction.Right)).flatMap(ancestor(_))
all.addAll(cur)
all.map(_.pos).size
}
(
Timings(0, p1_time, p2_time),
Solution(Int.box(p1), Int.box(p2))
)

View File

@@ -0,0 +1,75 @@
package dev.ctsk.aoc.days
import dev.ctsk.aoc.*
import scala.util.boundary
import scala.util.boundary.break
object Day17 extends Solver(17):
case class Machine(var code: IndexedSeq[Long]):
def execute(
registers: Map[Char, Long],
output: Option[Int] = None
): Vector[Long] =
val reg = Array.from(registers).sorted.map(_._2)
var pc = 0
def combo(i: Long): Long =
i match
case i if i <= 3 => i
case i if i > 3 && i <= 6 => reg(i.toInt - 4)
var out = Vector.empty[Long]
boundary:
while pc < code.length do
code(pc) match
case 0 => reg(0) >>= combo(code(pc + 1)); pc += 2
case 1 => reg(1) ^= code(pc + 1); pc += 2
case 2 => reg(1) = combo(code(pc + 1)) % 8; pc += 2
case 3 => if reg(0) != 0 then pc = code(pc + 1).toInt else pc += 2
case 4 => reg(1) = reg(1) ^ reg(2); pc += 2
case 5 =>
out :+= combo(code(pc + 1)) % 8;
if output.exists(_ >= out.length) then break()
pc += 2
case 6 => reg(1) = reg(0) >> combo(code(pc + 1)); pc += 2
case 7 => reg(2) = reg(0) >> combo(code(pc + 1)); pc += 2
out
def part1(machine: Machine, initialRegs: Map[Char, Long]): String =
machine.execute(initialRegs).mkString(",")
def part2(machine: Machine, initialRegs: Map[Char, Long]): Long =
val target = machine.code.reverse
def rec(pos: Int = 0, acc: Long = 0): Option[Long] =
if pos >= target.length then return Some(acc)
def check(aVal: Long): Boolean =
machine.execute(initialRegs.updated('A', aVal), Some(1)).head
== target(pos)
(0 until 8)
.map((acc << 3) + _)
.filter(check)
.flatMap(rec(pos + 1, _))
.headOption
rec().get
override def run(input: os.ReadablePath): (Timings, Solution) =
val Array(initial_, code_) = os.read(input).split("\n\n")
val initialRegs = initial_.linesIterator
.map(_.split(" "))
.map(a => a(1)(0) -> a(2).toLong)
.toMap
val machine = Machine(longs(code_).toArray)
val (p1_time, p1_solution) = timed { part1(machine, initialRegs) }
val (p2_time, p2_solution) = timed { part2(machine, initialRegs) }
(
Timings(0, p1_time, p2_time),
Solution(p1_solution, Long.box(p2_solution))
)

View File

@@ -0,0 +1,60 @@
package dev.ctsk.aoc.days
import dev.ctsk.aoc.*
import scala.collection.mutable
import scala.util.boundary
import scala.util.boundary.break
object Day18 extends Solver(18):
val SIZE = 70; val P1_COUNT = 1024
def part1(grid: Grid[Char], coords: Seq[Point]): Int =
for coord <- coords.take(P1_COUNT) do grid(coord) = '#'
val dist = Grid(Array.fill(SIZE + 1, SIZE + 1)(-1))
val dq = mutable.ArrayDeque((0, Point(0, 0)))
while dq.nonEmpty do
val (distance, pt) = dq.removeHead()
for
adj <- DIRS.map(_(pt))
if grid(adj).contains('.')
if dist(adj).contains(-1)
do
dist(adj) = (distance + 1)
dq += ((distance + 1, adj))
dist(Point(SIZE, SIZE)).get
def part2(grid: Grid[Char], coords: Seq[Point]): Point =
for coord <- coords do grid(coord) = '#'
val sets = DisjointSets(grid.points)
for
point <- grid.points
adj <- DIRS.map(_(point))
if grid(point).contains('.')
if grid(adj).contains('.')
do sets.union(point, adj)
boundary:
for coord <- coords.reverse do
grid(coord) = '.'
for pt <- DIRS.map(_(coord)) if grid(pt).contains('.') do
sets.union(coord, pt)
if sets.joint(Point(0, 0), Point(SIZE, SIZE)) then break(coord)
coords.head
override def run(input: os.ReadablePath): (Timings, Solution) =
val grid = Grid(Array.fill(SIZE + 1, SIZE + 1)('.'))
val (pre_time, coords) = timed {
os.read.lines(input).map(longs).map(v => Point.of(v(0), v(1)))
}
val (p1_time, p1) = timed { part1(grid, coords) }
val (p2_time, p2) = timed { part2(grid, coords) }
(
Timings(pre_time, p1_time, p2_time),
Solution(Int.box(p1), f"${p2.x},${p2.y}")
)

View File

@@ -0,0 +1,26 @@
package dev.ctsk.aoc.days
import dev.ctsk.aoc.*
object Day19 extends Solver(19):
def pre(input: os.ReadablePath): (Trie, Seq[String]) =
val Array(rules_, words_) = os.read(input).split("\n\n")
val trie = Trie()
for rule <- rules_.split(", ") do trie.insert(rule)
(trie, words_.linesIterator.toSeq)
private def arrangements(trie: Trie, word: String): Long =
def rec(offset: Int, inj: Int => Long): Long =
if offset == word.length then return 1L
trie.prefixes(word, offset).map(inj).sum
Memo.Y(rec)(0)
override def run(input: os.ReadablePath): (Timings, Solution) =
val (pre_time, (trie, words)) = timed { pre(input) }
val (p1_time, p1) = timed { words.count(arrangements(trie, _) > 0) }
val (p2_time, p2) = timed { words.map(arrangements(trie, _)).sum }
(
Timings(pre_time, p1_time, p2_time),
Solution(Int.box(p1), Long.box(p2))
)

View File

@@ -0,0 +1,41 @@
package dev.ctsk.aoc.days
import dev.ctsk.aoc.*
import collection.parallel.CollectionConverters.*
object Day20 extends Solver(20):
override def run(input: os.ReadablePath): (Timings, Solution) =
val grid = Grid(os.read.lines(input).map(_.toArray).toArray)
val start = grid.findFirst(_ == 'S').get
val end = grid.findFirst(_ == 'E').get
val trace = Iterator
.unfold((end, end))((cur, prev) =>
val n = DIRS.map(_(cur)).filter(_ != prev).find(!grid(_).contains('#'))
n.map(nxt => (cur, (nxt, cur)))
)
.concat(Seq(start))
.toArray
def cheats(radius: Int): Int =
trace.indices.par
.map(toDist =>
(toDist + 100 until trace.length)
.count(fromDist =>
val from = trace(toDist)
val to = trace(fromDist)
val dist = (from - to).manhattan
dist <= radius && (fromDist - toDist >= 100 + dist)
)
)
.sum
val p1 = timed { cheats(2) }
val p2 = timed { cheats(20) }
(
Timings(0, p1._1, p2._1),
Solution(Int.box(p1._2), Int.box(p2._2))
)

View File

@@ -0,0 +1,48 @@
package dev.ctsk.aoc.days
import dev.ctsk.aoc.*
object Day21 extends Solver(21):
private val keyPad = Grid(Array("789", "456", "123", " 0A").map(_.toArray))
private val buttonPad = Grid(Array(" ^A", "<v>").map(_.toArray))
private val paths = Memo(paths_)
private def paths_(args: (Char, Char, Grid[Char])): Array[Array[Char]] =
val (from, to, grid) = args
val Point(fx, fy) = grid.findFirst(_ == from).get
val Point(tx, ty) = grid.findFirst(_ == to).get
val ops = Seq((fx, tx, 'v'), (tx, fx, '^'), (fy, ty, '>'), (ty, fy, '<'))
val seq = ops.flatMap((a, b, c) => (a until b).map(_ => c))
def gap(path: Array[Char]): Boolean =
path
.scanLeft(Point(fx, fy))((acc, c) => Direction.from(c)(acc))
.exists(grid(_).contains(' '))
seq.permutations.map(_.toArray).filterNot(gap).toArray
private def countPresses(codes: Array[String], numRobots: Int): Long =
type State = (Char, Char, Int)
def minCost_(state: State, f: State => Long): Long =
val (from, to, robots) = state
if robots == 0 then return 1
paths(from, to, if robots == numRobots then keyPad else buttonPad)
.map('A' +: _ :+ 'A')
.map(path => path.sliding(2).map(w => f(w(0), w(1), robots - 1)).sum)
.min
val minCost = Memo.Y(minCost_)
def evalCode(line: String): Long =
('A' +: line).sliding(2).map(w => minCost(w(0), w(1), numRobots)).sum
codes.map(code => code.init.toInt * evalCode(code)).sum
override def run(input: os.ReadablePath): (Timings, Solution) =
val codes = os.read.lines(input).toArray
val (p1_time, p1_solution) = timed { countPresses(codes, 3) }
val (p2_time, p2_solution) = timed { countPresses(codes, 26) }
(
Timings(0, p1_time, p2_time),
Solution(Long.box(p1_solution), Long.box(p2_solution))
)

View File

@@ -0,0 +1,60 @@
package dev.ctsk.aoc.days
import dev.ctsk.aoc.*
import scala.collection.mutable
object Day22 extends Solver(22):
inline def hash(n: Long): Long =
var secret = n
secret ^= (secret << 6)
secret &= 0xffffff
secret ^= (secret >> 5)
secret &= 0xffffff
secret ^= (secret << 11)
secret &= 0xffffff
secret
def hash(n: Long, count: Int): Long =
Iterator.iterate(n)(hash).drop(count).next()
def part1(initial: Seq[Long]): Long = initial.map(hash(_, 2000)).sum
def part2(initial: Seq[Long]): Long =
inline def update(hash: Int, next: Int): Int =
((hash << 5) & 0xfffff) | (next + 10)
val maxHash = Seq(9, 9, 9, 9).fold(0)(update)
val bananas = Array.fill(maxHash)(0)
val seen = mutable.BitSet(maxHash)
initial.foreach { value =>
seen.clear()
val it = Iterator.iterate(value)(hash).map(_.toInt % 10)
var last = it.next()
var window = 0
for v <- it.take(3) do
val diff = v - last
last = v
window = update(window, diff)
for v <- it.take(2000 - 3) do
val diff = v - last
last = v
window = update(window, diff)
if !seen(window) then
seen += window
bananas(window) += v
}
bananas.max
override def run(input: os.ReadablePath): (Timings, Solution) =
val initial = os.read.lines(input).map(_.toLong)
val (p1_time, p1_solution) = timed { part1(initial) }
val (p2_time, p2_solution) = timed { part2(initial) }
(
Timings(0, p1_time, p2_time),
Solution(Long.box(p1_solution), Long.box(p2_solution))
)

View File

@@ -0,0 +1,59 @@
package dev.ctsk.aoc.days
import dev.ctsk.aoc.*
object Day23 extends Solver(23):
override def run(input: os.ReadablePath): (Timings, Solution) =
val edge = "([^-]*)-([^-]*)".r
def id(s: String): Int = (s(0) - 'a') * 26 + (s(1) - 'a')
val (pre_time, graph) = timed {
os.read
.lines(input)
.flatMap { case edge(from, to) => Seq((from, to), (to, from)) }
.groupMap(_._1)(_._2)
.view
.mapValues(_.toSet)
.toMap
}
val (p1_time, triangles) = timed {
(for
(u, uOut) <- graph
v <- uOut
w <- graph(v).intersect(uOut)
if Seq(u(0), v(0), w(0)).contains('t')
yield Set(u, v, w)).toSet.size
}
type Nodes = Set[String]
def cliques(clique: Nodes, cand_ : Nodes, excl_ : Nodes): Set[Nodes] =
if cand_.isEmpty && excl_.isEmpty then return Set(clique)
if cand_.isEmpty then return Set.empty
val pivot = cand_.maxBy(graph(_).size)
var candidates = cand_
var excluded = excl_
var acc = Set.empty[Set[String]]
for v <- cand_ -- graph(pivot)
do
acc ++= cliques(clique + v, candidates & graph(v), excluded & graph(v))
candidates = candidates - v
excluded = excluded + v
acc
val (p2_time, password) = timed {
cliques(Set.empty, graph.keySet, Set.empty)
.maxBy(_.size)
.toArray
.sorted
.mkString(",")
}
(
Timings(pre_time, p1_time, p2_time),
Solution(Int.box(triangles), password)
)

View File

@@ -0,0 +1,81 @@
package dev.ctsk.aoc.days
import dev.ctsk.aoc.*
import scala.collection.mutable
object Day24 extends Solver(24):
extension (s: String)
def binLong: Long = s.foldLeft(0L)((acc, c) => (acc << 1) + c.asDigit)
enum Op(val f: Int => Int => Int):
case AND extends Op(x => y => x & y)
case OR extends Op(x => y => x | y)
case XOR extends Op(x => y => x ^ y)
case class Gate(op: Op, lhs: String, rhs: String)
object Gate:
def of(op: Op, lhs: String, rhs: String): Gate =
Gate(op, Seq(lhs, rhs).min, Seq(lhs, rhs).max)
override def run(input: os.ReadablePath): (Timings, Solution) =
val Array(inits_, wires_) = os.read(input).split("\n\n")
val inits = inits_.linesIterator
.map(_.split(": "))
.map { case Array(id, value) => (id, value.toInt) }
.toMap
val wires = wires_.linesIterator
.map(_.split(" "))
.map { case Array(in1, op, in2, _, out) =>
(out, Gate.of(Op.valueOf(op), in1, in2))
}
.toArray
val outs = wires.toMap
val ins = mutable.Map.from(wires.map(_.swap))
def tag(t: Char)(i: Int): String = f"$t$i%02d"
val x = tag('x'); val y = tag('y'); val z = tag('z')
def resolve_(id: String, f: String => Int): Int =
outs.get(id) match
case Some(gate) => gate.op.f(f(gate.lhs))(f(gate.rhs))
case _ => inits(id)
val resolve = Memo.Y(resolve_)
val p1 = timed { (0 to 45).reverse.map(z).map(resolve).mkString.binLong }
val p2 = timed {
val renames = mutable.Map.empty[String, String]
def rename(a: String, b: String): Unit =
renames(a) = b
renames(b) = a
def re(a: String): String = renames.getOrElse(a, a)
def lookup(gate: Gate): Option[String] =
ins.get(Gate.of(gate.op, re(gate.lhs), re(gate.rhs)))
var carry = ins(Gate.of(Op.AND, x(0), y(0)))
for i <- 1 to 44
do
val x_ = x(i)
val y_ = y(i)
val x_y_xor = lookup(Gate.of(Op.XOR, x_, y_)).get
val x_y_and = lookup(Gate.of(Op.AND, x_, y_)).get
val out = lookup(Gate.of(Op.XOR, x_y_xor, carry)) match
case Some(out) => out
case None =>
rename(x_y_xor, x_y_and)
lookup(Gate.of(Op.XOR, x_y_xor, carry)).get
if out != z(i) then rename(out, z(i))
val pre_carry = lookup(Gate.of(Op.AND, carry, x_y_xor)).get
carry = lookup(Gate.of(Op.OR, pre_carry, x_y_and)).get
renames.keys.toArray.sorted.mkString(",")
}
(
Timings(0, p1._1, p2._1),
Solution(Long.box(p1._2), p2._2)
)

View File

@@ -0,0 +1,35 @@
package dev.ctsk.aoc.days
import dev.ctsk.aoc.*
import collection.parallel.CollectionConverters.*
object Day25 extends Solver(25):
override def run(input: os.ReadablePath): (Timings, Solution) =
val (pre_time, (locks, keys)) = timed {
os
.read(input)
.split("\n\n")
.map(_.linesIterator.map(_.toArray).toArray.transpose)
.partition(_(0)(0) == '#')
}
def profile(lock: Array[Array[Char]]): (Array[Int], Int) =
(lock.map(_.count(_ == '#')), lock.head.length)
def fits(size: Int, lock: Array[Int], key: Array[Int]): Boolean =
lock.zip(key).forall((l, k) => l + k <= size)
def p1 = timed {
val keyProfiles = keys.map(profile)
locks
.map(profile)
.map((lock, size) =>
keyProfiles.count((key, _) => fits(size, lock, key))
)
.sum
}
(
Timings(pre_time, p1._1, 0),
Solution(Int.box(p1._2), "MERRY CHRISTMAS")
)

View File

@@ -2,9 +2,25 @@ package build
import mill._, scalalib._ import mill._, scalalib._
object aoc extends ScalaModule { import $ivy.`io.github.alexarchambault.mill::mill-native-image::0.1.29`
import io.github.alexarchambault.millnativeimage.NativeImage
object aoc extends ScalaModule with NativeImage {
def scalaVersion = "3.5.2" def scalaVersion = "3.5.2"
// def ivyDeps = Agg( def ivyDeps = Agg(
// ivy"org.scala-lang.modules::scala-parallel-collections:1.0.4" ivy"com.lihaoyi::os-lib:0.11.3",
// ) ivy"org.scala-lang.modules::scala-parallel-collections:1.0.4"
} )
def nativeImageName = "aoc"
def nativeImageMainClass = "dev.ctsk.aoc.main"
def nativeImageClassPath = runClasspath()
def nativeImageGraalVmJvmId = "graalvm-java23"
def nativeImageOptions = Seq(
"--initialize-at-build-time",
"--no-fallback",
"--enable-url-protocols=http,https",
"-Djdk.http.auth.tunneling.disabledSchemes=",
)
}

2
data/06.ans Normal file
View File

@@ -0,0 +1,2 @@
5242
1424

130
data/06.in Normal file
View File

@@ -0,0 +1,130 @@
.........................#...........#.#...#...............#..............##.....................#...........#..#.........#.......
.....................#.................#.......#.........................#...........#.#.......#..................................
.........#...........#........#.........#.........#...........#........................................#.........................#
.......#.........................#...........................#.............#......................................................
..................#................##...............#.#.....................##............#.......................................
......#...#................#..................................................................#....#.#............................
.......##................#........#..#.......#......................................#........#............#......###..........#...
.....................#....................................................#...........#..#...#..........................#.........
...........#....#...........................#.#...............#..#....................................#..............#......#.....
.....#........##...............#.......#..#..............................................#..........................#.............
.#.........#.#...........................#..........................#......................#...........#........#.................
.................................................................#..#.#.......#..#................................................
...............................................#.......#...................#....................#.................................
.......#......#......#......................#...............................#.....##........#...........#......#..................
........................................................................................................#.....#.#.................
..#...............................#.#..................................#.............#............................................
..............#..........................................#.....#.....#..........................#....#.........#..................
...................................#........................................#................#...........##.....#....#............
.#.....................................#.......#........................#...................##............#.......................
.#..................#...........#...........................................................................................#.....
........................#...................................................##.................................#..#..........##...
........#............................#.......#...........................#.#...#...................................#.....#........
...............................#............#.....#......................#.......#...#........................#...................
.........#.............#.................................................#.......................................#....#...........
...................................................................#...#.................................#...................#....
...#.....................#...#...............#..................................................#...#...#.........................
...................#........#....#....#..#..#...................#.........#..................#..#....#.......#.#.................#
..............................#........................................#......#.....#..............##................#............
............#..#.............#.......#........................................................##........#.....#...................
.....#.............................................................#...#.#.#.............................#..#.#...........#.......
.......#....#............................................#.................................#...................................#..
..#.................#.......#..........................#........................................#...............#..............#..
....#.#...................#............................#..#.......................................................................
.......................#...............#..............#......#......................#.....................#..............#........
.#..........#.......................................................................#....................................#........
.#.......#..................................................................#.....................................................
..................................................#.............#.............................................#................#.#
.......................#......#....#................#......................................................#.......#.........#....
..........................#.#........................................................#......#................................#....
....................................................................#...............................#.............................
..#...........#..............................#..#....#............................#...............##..............#...#...#...#..#
...................................#................................................................#....#...................#....
..#....#........#..##....#........................#...#...................................#.......................................
...................#................................................................................................#.............
.......#........#................#...#.......................................................................#....................
..............#....................#..........................##.........#.....................................#..................
.........................................................................#.................#........................#.............
.............................#..........#.......................................................#......................#..........
............###....................................................................#.......................#......................
........#........#...........#.............................#....................#..........#.........................#.#.....#....
.........................................................................................................#..#.....................
#.#.....#..........................................................#.....................#........................................
........##..........#....................................................#..#........#.......#........#................#..........
.............................................#..........................#.........#........................#......................
...........................##.............#........................#.#........................#..#................#.....#........#
#...#..............................................#........#...................................................#.................
.............#................#............................#............#.........................................................
#..........................#............#.....................#.....#.................#......#...##...#.............#.#...........
.....................#...#..#....#...................................#....................#..............#........#...............
.......................#.................#...........#....#.......#...........................................#..#................
.........#...........#.#.........#.........................#.....#................................................................
....................#........#...................................................................#............#..#.#.#............
..........#.......................#.......................#.......................................................................
......................................#......#............................#..............................................#........
.....................#...#.................#.............................#....#...................................................
..............##...................................................................#......................................##......
.....#....#...............................................#.......#.##........#.#.............#...............#...................
....................................#......................#........#.......................................................#.....
.....#.........................................#.....................#.............#.................#..................#.........
................................#.........#..#............................................#.........................#.............
....#.#.....................#......#...................................#..........................................#..#.....#...#..
.........##.......................#..........................................#.........................#...##.....................
...............................................................#................................................................#.
............#.........................................##.......................................#..................................
.............................#..............................#..................#.........#.....#..................................
..........................................................#...#.....#..................#................................#.........
......#...................#.........................................................................................#.............
#...............................#...........................#.....................................................................
.......#........#.................................................#.......................................................#.......
.#......................................................#..............#..................................#...........#...........
.............#..#.#.......................#..........#......#.##.........................................................#..#.....
.......#...............#........#......................................................................#..#...........#...........
............#.........................................#................................................#...................#......
............#...........................................#.#.......#....................................#..........................
...........................................#.........................................................#..............#.............
..................#..#....................................................#..................#....................................
..#........................#........#.............................................................................................
.............#........#......................#.......................................#...#....#............................#......
............#.......#.............#...#...........#.#.................................#.................##........................
.....................................................................................#.........#.......................#.....#....
.................#................................#..#....#......#..........................................#.....#...............
..#...............................#........................................................#.......#...#............#.............
#.........#..#..#.....................................#....................................#................#.................#...
.......................#..#...#............................................................................#..#.....#.......##....
..........#............#.......................#.........................^......#.#...................................#...........
...##........................##..........#..........#.................#...............#...........#.....##........................
..............#............#..........................#....#...........#......#......#......................#.....................
......#.....#....................................................#............#.#......................................#..........
......#.............................#......................#...............................#........#.............................
.#..........#.............................................#.............................................#.........................
...............................##.................................................................................................
.....................#................................................#...............#............#...............#.....#.....#..
..................#...........................................................................#...........#...................#...
##..............................#.#...#.#...............................#...........#.#...................#.......................
......................#.........#...................................#.................#...........................................
.......................#............................................................................#.........##...........#......
.....................................................................#.......#.....#.......................................#......
#....................................#........#.#.................................................................##.....#........
..............#..............................#......#..........###.........#................#..............#..................#...
..................................#..............................#.................##.............................#...#...........
...............#......#........................#....#........#............#.........#..........#..............#......#............
...#...........#........#...#...........................#.............#.....................................#.....................
..............###............#...........................................................#.............#.........##..#............
............#................................................#.......#..................#....#....................................
.........#.#...#.....#...........................#.....##......#.....................#..#........#......#.........................
.#....#.......#.......................#.................................................................#.......#..............#..
...................#................................................................#.............#...#...........#.........#.....
.......#.#.......#.......................#....#.....#...............#...#.....#...........................................#.......
.......#........#...........................................#...........#.........................#....#.......#..................
..................................#.#.................#.#............................................#...........#....#...........
....##......#.............#...................................#...#.........#...........................#......#..................
.........................#......#....#...#........................................................................................
...#...............#............................................................................#...........................#.....
....##.#..............................................#............#................#................................#......#.....
.........#...........................................#...#.......##..............................#................................
..................#..........#......#.......#......................................#........#...............#......#...........##.
........................................#......#..........#......................................................................#
..............#...#...................#.....#..........................................................#..............#......#....
...#........#........................#...#................#........#.............................##..........................#....
............#............................#.#........................#.................................#..........................#

2
data/07.ans Normal file
View File

@@ -0,0 +1,2 @@
1430271835320
456565678667482

850
data/07.in Normal file
View File

@@ -0,0 +1,850 @@
3240922: 256 6 83 6 8 2 76 2 2
4781829: 3 1 471 3 23 80 49 556
185303830: 72 646 498 8 15 7
4396909609: 594 17 67 1 6 9 74 845
51395424: 611 9 7 24 85 579 348
8080451: 230 83 4 350 1
51187716609: 213 67 7 88 8 619 827
149: 16 3 2 66 45
36764030: 8 6 14 686 94 8 7 36 2
90: 77 8 1 1 1 2
579799: 58 6 4 946 86 9 73
1711: 40 4 4 73 998
4629997428: 799 378 73 8 21
55138352: 4 9 24 1 94 9 292 34 6 6
12784: 965 95 4 3 4 4
166306618368: 936 1 5 792 3 86 2 8 9 6
57804175: 231 59 876 5 481
3383139751778: 1 92 9 761 6 2 5 6 1 778
282539018188: 84 299 4 365 5 51 837
116348400: 4 31 8 3 7 95 3 4 9 6 1 2
350064: 7 4 8 21 48 770 68 6
26848040198: 2 7 63 76 885 8 99 74 7
506811072174: 1 6 9 2 9 184 8 6 85 9 8 1
50430798783: 6 6 7 9 9 3 93 171 5 3 7 9
9245211: 88 79 80 692 91
5112: 839 5 1 7 6
24786163: 740 2 965 33 6 163
41507809: 117 9 83 567 1 7
395795: 94 79 414 4 7 5
103220542: 5 3 2 8 8 32 8 5 6 9 30 9
6607912951: 6 67 228 617 397
4842305966: 4 567 971 325 21 23 2
210648864274: 6 8 36 30 8 239 4 3 274
40421763628632: 364 5 8 6 37 3 628 635
22257: 77 328 13 2 53
6186110889: 2 92 71 5 980 63 1 483
152540: 44 3 16 518 58
8020356: 474 5 881 125 19
147723: 2 29 3 849
436636368: 51 97 397 655 84
88373874: 1 9 35 96 25 8 365 74
4377820491: 28 796 5 4 2 16 38 91
114504: 3 6 8 734 6
3739374: 759 8 4 9 75 855 63 1 8
2859367: 42 80 1 851 7
3017779: 397 38 2 24 555
112867776: 4 4 558 98 129
1627098747: 4 8 5 11 8 9 8 648 2 4 9 3
1722017: 3 5 6 36 9 3 1 37 2 9 45 2
7263: 259 6 65 22 3
1119901426: 5 580 70 581 2 8 649 6
296493: 6 90 2 42 9 8 4 50 1 81 6
11619105439: 7 64 2 8 296 6 76 23
99815364: 5 3 422 73 3 9 6 6 2 2 6 3
3354: 35 3 55 36 6
53583: 1 9 8 491 555
415463030: 5 9 15 7 141 30 30
2175040: 5 44 2 2 8 9 317 6 7 2 5 8
3609508: 7 11 4 84 5 79 2
7393: 620 9 9 818 20 5 6 7
311202: 936 4 98 9 9
40694678: 3 764 7 61 775 848 6
51242352: 914 91 9 6 35 8 8 7
27945216600: 931 2 60 8 26 1 1 5 24
116395: 20 831 7 54 1
8481174364: 84 811 739 4 64
105596926: 836 554 6 38 94
4661761090: 582 72 8 2 2 4 5 5 6 7 5 1
452569: 7 67 862 340 29
25265: 28 145 70 5 75 6 5
601311600: 40 20 9 60 277
220549392: 1 23 252 63 604
8819510: 24 334 6 371 86 7 5
26645751: 9 9 148 57 51
940551780: 6 92 384 75 346 1 930
8938951: 4 7 164 55 7 905 1 8 2 6
38570960: 6 40 237 5 80 6 4 955 5
7599410: 2 835 6 4 67
1780: 1 2 406 486 1 1 481
22879250: 3 6 210 2 115 865
167089216: 77 92 21 3 35 21 49 64
225191202: 4 9 9 18 1 2 1 1 6 9 244 8
2647323: 38 90 1 86 27 9
7820: 79 6 23 4
60151: 2 4 623 8 1 1 69 2 6 197
6381: 69 6 5 1 9 3 6 115 9 2 3 9
999963: 1 82 28 9 886 77
8187831: 7 8 162 3 60 45 3 66 3 9
1066338: 135 9 82 9 168 9 5 3 1 9
13431313: 8 4 4 7 1 308 9 4 7 53
4888422: 5 49 475 16 42
40483869182: 70 7 918 9 4 3 62 1 82
148617: 30 75 3 5 22 7
1706: 26 8 2 8 456 9 5 797 7 8
404411: 206 305 8 79 89 1
73904332: 923 80 63 1 33 2
222360: 32 333 42 1 545
455431: 7 88 2 4 78 8 57
833: 5 9 62 487 3 264 3 1
11652001507: 770 5 8 5 72 25 5 502 3
112387: 4 4 8 1 9 8 32 2 6 1 1 601
568992114: 6 942 31 590 429 6
449890: 3 3 9 908 8 1 71 64 78 7
6431892: 9 5 2 3 7 879 7 7 9 346 1
47177856: 9 1 9 37 1 4 940 544 22
12512667: 1 4 73 75 721 914 7
111681944: 282 396 1 57 41 44
3836539035: 57 36 910 21 735
209051443965: 549 9 9 574 6 5 65 3 1 7
12432: 789 2 464 30 6
1893052: 1 61 227 697 7
75516636: 5 258 500 53 796 116
7198107126: 899 76 327 12 8 6
324356: 4 2 22 18 12 8 62 960 4
1651812: 76 472 1 3 1 829 5 9 42
2986566: 97 6 2 51 2 3
2213348: 1 410 4 6 1 4 6 3 1 3 74 8
713349465: 63 804 4 63 13 465
317513: 29 489 44 7 792 13 67
1705056857: 9 5 66 45 9 3 1 684 1 8 6
109631599: 9 27 88 564 408 5 72 7
4524000: 720 7 527 84 4 160 5
170710: 958 891 43 9 43 10
950453: 7 87 2 1 7 7 8 7 52 691 6
11497532: 73 3 525 3 2
14004606: 81 7 7 196 4 105 9 6 2
14435: 18 97 46 8 99
2587924: 3 1 837 8 8 2 384 532
52827036: 97 6 47 541 9
17555: 256 4 960 372 916 7
12560: 484 5 91 1 5
439274: 827 58 496 9 305
829089344333: 987 1 84 9 34 433 3
120971158: 21 2 6 8 172 6 2 4 9 766
1454786: 209 91 169 62 5 88 7
955240: 747 23 86 101 55
52113349: 9 4 4 73 289 46 1 1 408
358844792: 460 646 1 1 779
3641: 289 8 741 2
13213623: 317 8 52 264 22
83270: 9 9 34 8 9 5 928 1 906 2
1965: 36 28 122 31 75 729
2001540608: 9 29 6 2 3 17 4 458 688
283932217: 283 930 49 172 7
55776554516: 22 13 347 9 75 7 20 9 4
156858658339: 2 7 3 4 9 85 862 3 834 2
122078: 941 5 2 8 834 22
1747653839996: 191 915 3 839 999
1323: 5 83 9 35 859 5
99171744: 80 62 7 4 56 51
558: 36 14 54
205597: 685 3 97
106153647: 4 4 9 3 2 91 9 9 4 864 6 9
6485019068: 2 4 47 3 2 561 7 9 2 4 61
4232: 84 38 62 23
26576163856: 1 755 80 37 24 44
479050: 6 83 36 7 9 871
1439650999: 1 3 9 6 79 860 25 9 90 9
2071304352: 980 20 279 8 9 928
88640: 196 912 20 4
707827: 45 5 85 5 37 1 9 8
446247: 55 695 595 1
27533085: 7 2 4 13 6 423 3 89 8 7 3
1197659: 2 90 95 70 659
3404211: 14 81 737 3
22210: 6 10 370 8 2
47275323: 7 87 33 6 5 508 843
17040242236: 8 1 3 84 196 5 2 7 8 3 6
67472505: 52 9 3 640 8 8 94 6 4 3 3
106090934: 7 3 5 5 6 9 3 2 476 5 22 2
60501: 23 6 1 519 9 56 81 1 1
12560: 8 2 785
6397313: 7 9 7 64 4 4 6 572 8 8 1
10576368040663: 464 3 84 985 25 8 911
55739: 324 16 781 54 9 2 47
5354536482085: 5 3 120 4 8 6 77 3 54 1 7
719328: 42 18 6 118 8
5209255: 514 6 91 1 55
35104400: 6 20 29 80 5 589
992101552532: 177 16 7 6 939 1 66 8 4
2648300: 645 799 917 2 4
3048437: 48 962 11 2 6 293 516
1963982: 480 99 76 306 41
21: 9 7 5
1571724093: 98 25 18 396 9 4 89
107152643: 5 2 715 25 51 3 89
93706: 800 570 8 68 2
504494: 7 3 608 63 26 1 1 9 5 79
2773798: 2 782 60 61 28 6
33250535: 2 175 95 1 99 337
56621021: 2 1 4 7 7 1 504 52 55 1 4
45618793: 4 20 432 179 8 93
8502445733: 59 12 4 1 1 3 444 1 7 33
194395: 388 499 684 99
21285718: 779 8 694 1 1 664 9 3
496128467526: 984 323 5 53 8 8 63 8 6
155022: 34 7 339 499 3 6 6 8 30
3737283012: 864 4 6 5 4 703 6 7 4 4 9
131594: 15 12 404 3 56 6 4 82
3035928: 9 4 746 3 300 7 7 51 8
134436: 99 6 91 2 6 359 6 5 6
57187572390828: 8 459 7 676 390 828
59144157078: 351 11 8 587 466 7 6
1322895: 5 774 68 15 603 903
16108056803: 7 2 4 7 603 5 8 5 16 530
20155: 4 67 91 3 690 82
3308929647: 47 9 54 2 3 69 3 50
1719: 8 9 1 500 3
384: 8 70 306
1547960154: 9 8 595 6 26 1 981 1 32
881783: 26 1 4 5 7 2 806 1 9 3 6
39740: 7 33 1 72 32 8 231 4
4248270589: 7 2 4 39 11 1 7 53 3 5 8 9
2831: 48 1 57 1 38 1
1740: 42 80 99 69 6
1463042528: 7 306 9 2 42 481 47
6518232: 692 75 20 753 9 5 63 9
295: 19 1 4 6 49
12600: 95 5 7 3 129 8
18941825816881: 3 7 9 412 6 2 5 8 16 88 1
10906: 4 8 8 5 2 481 971 3 7
23569563: 9 9 620 981 2 3 647
563162984: 41 453 190 37 2 6 64 4
8779552: 81 6 613 52 127 3 55
670151107604: 98 992 2 972 6 591 20
46058: 8 357 68 908 3 4 74
23352233001: 546 966 55 5 805 76
2598992457: 9 67 54 4 133 376 6 57
6041811: 8 8 1 3 4 8 12 874 3 723
546092: 2 8 195 9 2
112521276: 6 6 3 7 50 315 9 4 6 6 2 7
123165126274: 68 3 1 2 5 3 209 1 6 81 6
183841440: 512 15 85 804 80 3
92972296: 8 77 6 2 6 688 9 2 59 96
12917242: 893 20 786 3 9 9 6 1 8 2
19870855592: 8 7 323 7 1 2 8 9 55 7 7
19093: 188 78 9 38 61
42220695615: 71 54 2 247 4 1 6 9 553
408850045524: 77 387 48 7 79 343 4 4
193249318320: 3 48 2 1 326 4 830 51
1559778746: 1 733 9 70 8 746 2
5978523468: 4 850 7 522 679 789
57475: 3 598 32 63 4
82199776: 84 2 2 24 8 9 637 3 4 2 8
3684: 3 6 2 6 4
2133774: 498 7 34 19 18
223090269: 9 3 1 5 9 4 5 115 124 7 2
3230835: 354 608 75 82 15
152071519611: 36 4 8 3 525 81 2 34 1 2
400642248: 353 3 9 84 3 5 1 3
1319052: 45 345 561 82
214120: 2 7 765 756 8 2
1525: 786 313 10 382 10 24
168952128: 15 6 2 3 6 1 9 4 3 63 49 8
12600: 86 418 25
4753664: 938 52 2 599 8
183144217197: 8 78 2 128 19 450 56
177156107: 725 4 184 83 4 907
907988: 5 38 9 1 848 2 734 30
34005187376: 425 8 5 186 82 7 549
48458919: 376 520 54 74 919
232708: 7 517 6 64 1 708
9889376521: 988 93 7 5 779 6 3 733
356266: 5 7 5 606 74 583
2717: 6 4 78 237 2
15624: 3 9 7 60 9 8 100 73 221
177529338: 4 717 619 93 44
709294260: 40 7 5 2 4 4 3 5 4 5 524 3
33208: 92 45 1 10 8
947417877: 52 9 52 53 243 651
465478112: 12 2 590 3 6 66 9 2 83 2
21882695057: 6 2 5 367 2 183 63 2
4329385230214: 8 908 2 972 604 1 5 4 6
408039258: 15 4 7 46 80 3 9 8 6 11
8156: 8 15 6
1912903905: 76 516 5 344 431 6 5
605236611: 8 7 6 11 7 3 9 4 15 2 9 3
164820: 223 61 63 69 12
777761919: 9 1 6 3 3 2 5 986 1 6 1 27
63644912: 952 77 359 864 80
249992724: 513 564 11 18 7 8 5 6 6
108534: 9 95 3 988 69 477
510545: 4 1 254 67 6 5
3010875466: 3 747 9 7 594 2 6 7 4
849: 4 772 19 16 38
14295764555: 327 9 33 3 7 291 7 8 79
22155: 621 5 7 7 5
764: 5 9 34 664 7
33936: 87 1 8 6 18 8
22969: 756 7 5 6 79
455349313: 4 80 42 485 92 6 6
26289: 4 73 90 5 2
1449447323: 9 6 54 5 6 638 7 7 14 9
7079478539: 393 314 947 85 40
107875040: 956 62 5 1 364
80556: 6 821 84 416 734 6
3780000: 68 3 8 99 2 29 9 270 4
31828005: 7 9 5 350 366 844 5 5
468: 77 6 6
6153: 3 3 153
445144: 43 165 273 35 16 60 4
24330378244: 544 1 783 1 68 84 4
12948699481: 38 426 2 624 9 6 60 1
12715: 207 9 22 53 45 56
816252255180: 473 3 1 913 2 7 9 1 5 3 1
7721: 1 12 555 275 786
34738898530: 9 7 7 7 9 7 73 9 97 9 70
1119853: 67 896 9 6 12 16 22 87
204771350237: 7 1 294 733 8 45 383
847061: 5 75 94 6 24 99 818
340774: 370 1 84 6 9 70
1315650: 30 7 1 35 179
65059: 87 614 924 1 1 3 1 4
119439888: 962 134 123 443 2
3013933: 556 6 956 78 9 949
1712980: 901 5 82 4 21 58 82
1197932383: 72 69 2 274 88
1240: 354 45 6 8 7 38 9 767 6
5482453790475: 6 8 4 9 3 713 196 2 7 5 9
623463848: 869 6 783 910 98
1029: 93 9 3 2 4
111457: 856 3 4 129 130
2541440: 8 3 6 1 6 1 26 3 1 4 440
28407083811: 239 424 757 94 566 7
2986462: 3 732 3 2 2 8 446
1716392396: 85 2 777 1 89 73 971 2
7030: 31 9 24 136 198
10958979: 931 8 27 9 4 3 6 4 6 6 1 2
2154511: 2 29 2 99 5 23 157
353801856: 32 647 89 35 27 192
6055043734: 33 1 9 58 5 5 6 97 304 7
97551305: 2 3 5 22 618 287 5
7752834: 764 4 56 47 625 11 23
8017779: 6 3 777 427
1634: 944 613 9 62 6
4943080: 857 654 399 647 4
2088456: 7 563 11 72 519
62000: 4 701 553 843 999 4 5
1341: 2 6 36 909
2833918: 2 2 75 168 15 4 20 54
3572208: 826 4 5 9 48
829269132: 7 6 97 3 82 4 8 53 1 32
65065129238: 5 896 2 681 9 4 1 5 9 5 8
1573: 68 4 8 83 5 8 6 3 203 17
445398583: 8 2 2 33 7 6 992 1 90 2 3
4070556556: 8 848 26 6 55 9
4733412: 194 8 7 298 424 724
3000986447: 75 40 891 2 93 4 4 7
186912: 556 91 2 8 36
68909: 17 2 4 95 7 7
544353645: 165 406 8 272 7 9 5
3991: 499 5 6 967 1
648: 71 8 1 76 3
225402: 3 6 1 8 4 446 4 8 1 91 6
57123: 163 35 6 31 36
113: 1 5 17 3 8
23556642: 314 4 7 30 2 1 994 642
10486: 1 3 4 2 98 7
180390: 4 6 8 8 1 178 5 7 6 4 921
8605146: 6 9 4 9 8 5 5 45 57 3 541
17616456: 402 6 62 8 57 11 78 59
176424: 3 860 17 31 6 2 1
384655: 1 94 808 5 855
30262: 73 29 39 862 1 2 81
177915546: 778 9 1 6 9 2 254 1 737
11360958: 98 74 87 233 1 3 8 5 6 6
96296769: 60 15 2 659 2 5 1 8 3 3 9
42275: 3 34 2 15 95 5
139: 7 7 8 82 1
925: 613 6 71 9 95 82 49
312832: 13 8 3 35 5 2 41 3
576900656: 4 3 941 8 50 6 656
95919151932: 61 898 19 120 31 932
94848596: 5 8 6 5 2 394 78 592 3 1
15668345980: 41 7 970 263 214
18489900: 4 6 85 7 2 4 33 7 22 6 5
9308198312: 1 9 1 9 20 8 5 8 9 4 695 8
23946624: 1 6 7 99 6 3 1 234 832
2638191: 3 550 90 53 9 372
19588249: 83 236 240 8 1
638513427: 2 60 9 9 513 427
1216718: 9 163 8 64 3 969 7 1 9
222109: 22 1 3 78 729
4733783: 95 2 680 544 98 3
8356663: 8 8 806 3 54 55
354352601687: 8 4 9 186 9 9 1 4 236 5 7
2878: 1 63 1 6 6 5 1 3 7 7 140 1
1262211174: 7 95 28 52 70 567
1899: 2 7 8 8 883 986
845283: 6 42 335 4 5 9 8 3
152: 3 4 4 4 2
2009491: 591 34 91
12627321994: 1 802 8 7 1 771 1 994
38022583: 4 75 7 44 9 9 20 5 7 7 6
275043600458: 2 716 4 7 6 4 675 3 5 3 5
334234846: 172 286 97 2 6
10136940081840: 650 1 769 3 3 767 880
455076: 332 24 71 6 18
902: 19 29 53 19 279
169: 2 36 97
195391386: 74 4 474 9 6 7 2 6 8 87 9
2114: 510 940 7 640 19
14445848: 97 6 37 55 4 95 736
123370: 72 5 546 198 16
55503552: 3 3 12 803 8 1 5 3 2 8 8
525816: 9 8 527 3 6
241150070: 1 5 8 5 8 37 1 9 5 49 941
149304064: 5 2 4 4 3 4 26 4 58 8 26
27050: 56 135 5 6 23 2
7856120149: 8 72 1 9 9 195 6 49
27763005: 454 49 8 3 52
50731: 157 562 10 4 85 62 6 9
127589897: 85 482 708 89 897
143720: 1 84 58 658 62
2781830: 556 261 81 24 5
15891692: 39 7 5 905 7 8 4 2 4 8
378529376: 63 457 673 727 105
8556592: 107 9 66 868 88
8199886: 9 8 6 186 9 2 2 6 5 18 1 3
142099: 98 144 1 4 965
9721098229: 8 9 5 5 54 5 6 4 85 822 6
3817254485: 7 9 1 2 5 267 4 4 222 5
408599747716: 417 36 44 979 95 5 16
55794762211: 867 725 643 447 11
10839344: 97 986 9 319 25
2231247: 620 11 6 814 1 4 73 75
261299012: 1 653 247 53 4
18110146987: 371 1 488 46 6 987
99971: 8 40 449 13 1
298713002449: 3 36 27 495 867 661 3
238033532: 237 945 3 882 32
10556: 99 8 9 9 8 5 258 5 9 6 2
524481: 9 515 481
2276999438: 8 8 9 5 3 756 96 3 3 7 2
44941674: 2 3 4 4 7 76 7 1 431 1 8 3
49317: 2 3 8 6 4 3 889 2 1 44 37
480984715: 9 7 3 8 226 3 6 2 7 2 7 15
25589960: 96 55 840 2 44 95
6873212: 31 1 221 8 5 2 32
986172: 8 15 168 3 170
430428157: 430 359 69 154 3
65733: 5 42 87 676 81 8 62 53
42642235: 52 74 416 175 9 476
40868100: 3 773 9 7 65 7 2 4 75 1 7
603298736: 2 1 1 43 49 11 4 8 34 7 9
2983206: 4 847 6 51 8 3 87 842
20877362: 9 8 5 7 494 40 903 2
31364: 32 98 6
37943222606: 63 61 1 9 84 1 34 709
206643072: 81 3 7 9 9 4 444 6 4 8 6 4
43636126068: 18 202 33 6 8 3 4 5 69
21341959: 8 6 45 4 941 3 3 5 2 8 3 7
2440764: 4 5 2 37 78 2 7 5 4 9 449
5537: 6 919 9 6 8
36738: 4 7 8 729 7
67127: 5 671 1 2 7
12: 6 1 2
332334874: 9 9 400 666 874
66677: 90 729 5 932 90 40
2464753: 35 15 97 131 293 8 6 1
11091442110: 3 210 4 7 7 177 7 705
382211: 4 97 3 4 8 64
6269: 80 78 29
21082627056485: 739 7 413 285 64 88
1375909900: 410 1 497 7 8 2 1 6 844
27565274880: 297 528 1 1 522 640
15680994: 3 9 4 76 4 89 9 94
252648: 6 39 4 21 264
207180: 9 2 8 4 27 3 169 376 4
631098808: 4 611 216 1 6 754 808
12874752: 2 2 6 8 14 922 2 528 3 4
28433: 4 687 94 7 6
170688807219: 948 2 7 1 6 4 1 4 5 5 73 3
25564711968: 53 9 1 2 464 69 837
14176365: 622 1 1 37 615
1087250: 6 89 8 92 3 83 599 7 2 6
5226130: 17 563 6 44 9 329 3
8856: 1 1 207 1 8 41
46932: 7 7 3 8 4 1 11 4 23 2 2 3
1276683: 72 42 522 9 4 6 819 4 3
87938458114: 4 930 7 4 8 7 42 6 3 8 5 5
269458560: 65 98 6 3 8 8 5 287
57646: 9 567 46
48882363: 747 14 793 9 4 81
156800964917: 3 10 418 350 964 917
11781: 5 1 6 9 4 91 980 8 41 2 2
8548714: 683 5 25 90 7 15 1 4
34195857433: 1 341 95 857 433
49555840: 6 145 712 8 80
44079: 87 8 56 625 32 12 1 1 2
8413057884: 458 994 440 22 42
110858: 1 9 712 7 2 5 882 104 8
236698619898188: 83 4 9 9 8 50 62 79 1 88
460385: 1 8 44 867 7 79 1 5
4418270730: 4 9 18 23 166 75 878 6
67213: 841 8 78 39 952
385816: 3 828 8 90 2 198 8 28
93881308: 50 88 96 7 4 121 8 1 88
33589984: 876 7 2 383 471 4
176936: 8 6 8 5 741 136
12875: 5 9 5 9 4 7 31 9 9 147 6 5
12232620: 50 5 4 6 5 1 6 5 13 9 9 5
329919079975: 61 3 2 169 3 6 901 75
193235224: 379 19 8 91 7
155328: 149 653 7 4 8 6
36967: 2 2 4 6 7 3 44 597 8 4 8 7
65955: 61 148 315 22 98
2811281831: 8 66 345 74 511
7376: 64 68 908
3609: 2 4 10 6 9
1288605: 209 8 6 48 5 951
20371644924: 4 5 5 929 11 23 8 5 3
591: 57 55 35 4 3
4766235: 3 67 596 7 1 546 915
2594601: 45 9 1 4 9 8 41 8 92 8
4606: 5 453 1 7 8
43871524233198: 979 2 8 6 7 8 4 23 3 19 8
15505891709: 1 5 5 664 28 5 521 7 77
917: 4 25 16 704 97
24252714: 2 6 8 1 6 89 1 753 8 8 7 6
10821339: 2 654 95 857 9
1726956: 1 978 882 2
446810: 812 83 87 91 5
35291: 636 9 6 939 8
6094: 3 2 24 2 1 3 8 215 7 1 51
30503902271525: 6 5 503 9 5 2 22 715 2 8
11930387478: 6 355 8 62 279 7 478
2627928: 45 195 12 4 6 3 76
21034853780: 233 6 9 3 8 92 3 77 780
90548137: 236 6 23 4 83 8 1 49 1 7
1413: 60 4 2 5 203
634246200: 3 10 63 340 987
83865602: 5 2 8 34 2 5 4 4 9 160 7 2
758333016: 6 35 94 14 7 3 8 7 7
630205: 185 6 655 936 5
14289: 33 1 7 60 9
3329920: 1 87 473 40 2
4136648: 4 13 665 1
3948306410635: 3 927 21 306 410 635
1048233: 1 8 382 8 57
1458: 2 891 4 8 421 9 67 49 7
1636231872: 29 659 6 473 838
20691044705019: 9 2 8 815 84 884 2 7 4 9
8835966: 5 34 2 8 8 857 6 1 2 6 7 6
356400253174: 6 8 9 825 15 8 1 22 174
26469: 2 5 540 7 9
225297: 4 3 49 24 368 81 1
2668: 4 4 650 4 4
484139630: 480 1 2 2 9 3 96 30
7099676410310: 7 47 3 343 58 98 95
1019402861: 1 88 9 7 3 1 67 5 67 861
617322420: 304 7 36 4 334 5 58
781895: 7 8 516 41 1 1 31 6 9 5
26017029657: 5 52 158 3 9 291 9 46 8
187360: 66 6 314 1 811 8
7681: 844 9 1 1 83
15104247: 35 4 49 13 3 77 79
663129363: 1 2 6 7 35 129 4 786 6 4
324737: 1 9 8 272 361 6 931 2 5
22853568: 71 5 2 4 4 1 362 4 68 52
764449: 78 98 49
32185023: 2 4 575 597 4 4 5 2 9 33
261588496: 38 1 862 867 2 778
496800: 508 1 930 1 345
408: 2 1 93 6 4
499838805: 4 9 911 5 705 18 805
221260: 3 5 4 3 22 659 94 7 230
20166689766943: 60 6 11 8 6 8 6 7 8 694 3
1536: 9 181 1 8 8 8
19758946: 1 484 485 84 45
14280: 29 72 866 818 4 2
2145600: 52 26 334 35 5 960 1 1
207872626799: 933 557 56 70 40
12902400: 210 80 16 1 48
1892679164: 1 189 2 679 162
68800092: 6 3 80 3 7 3 65
110: 11 14 85
37000: 30 7 86 2 880
124160173238: 2 608 407 476 36
20446289: 117 9 2 230 38 5 137
24726218: 4 99 8 18 3 21 723 74
8674082462: 1 3 2 6 737 816 2 4 5 8 5
24056850: 2 652 7 5 734 5
40048062647: 4 5 5 4 472 8 61 1 4 2 47
8183110518751: 49 201 77 9 828 8 8 3 7
2931: 3 1 2 80 4 2 6 6 3 5 808 3
575029629: 89 7 923 5 76 53
139144: 34 37 288 9 4
303299: 9 351 4 7 30 4 4 885 6
413032933098: 4 80 27 860 73 30 98
28651637: 3 6 7 3 66 51 8 6 38 9 8
4371578: 9 541 2 458 242 642
9489820950: 414 5 9 6 693 8 4 355 9
41886: 221 97 30 5 2 3 4 1 6
5866443: 5 814 6 518 43
265613: 45 65 7 9 27 61 82 4 29
1226636: 14 34 28 5 92
13802162457: 326 3 669 2 4 39 3 1 9 3
132435472: 6 9 4 248 47 598
21650: 1 6 4 1 48 750 5 3 7 8 10
296410818: 83 113 28 40 833 786
22359: 37 579 5 4 6 4 900 17
449129634: 1 3 28 445 38 2 3 1 31
239: 3 27 5 8 9 72
2922740921: 4 5 9 9 66 87 9 79 7 2 8 9
5834400: 2 388 68 4 55
2564: 42 61 2 1
721703: 35 3 5 89 1 13 63 85 9 7
4687: 3 7 458 9 98
448519503: 615 5 4 17 5 11 39 1 2
8022: 32 44 4 2 5
164334333035: 412 49 493 22 37 1 6
851904: 47 39 951 9 34
383934: 566 2 61 4 61
1660902076262: 692 4 17 20 3 762 60 2
3022: 3 10 97 9 72 31
52497: 40 9 115 92 5
250624: 3 916 64
919152: 918 4 1 29 724
298566832673: 38 81 97 832 674
9601: 8 4 276 530 3 6 220 2 8
1220415: 32 810 52 65 5 21
47290143: 4 75 9 5 51 4 87 6 15 5
2924959312: 305 959 9 253 59
3511836: 3 8 1 225 7 2 854 8 188
24731293: 953 6 2 6 75 7 9 8 5 4 9
186921: 73 2 757 207
12622: 48 9 220 82
5099353: 869 1 8 5 5 8 8 2 8 89 8 1
5374004: 34 2 21 4 1 65 1 4 6 75 5
25507440: 8 50 3 743 9
1531956: 9 326 87 6 4 7 8 5 384
100407: 5 9 8 842 4 37 92 9 9 7 3
11815095: 3 47 1 4 34 95
546574583: 63 555 14 86 5 374
56789271: 9 97 73 4 9 27 2 3 9 11
922332: 7 5 337 241 5 85 9 303
8951: 99 459 8 2 23
44833500: 228 1 477 117 410
15619868: 64 53 267 7 5 8 10
27837018: 8 9 3 1 8 863 16 1 9 9 7 2
29988083337: 49 970 9 4 7 31 7 84 6 6
3882750097665: 167 5 75 620 9 76 65
136114788: 133 413 59 7 7 72 6
7107373: 49 19 84 339 7
37004: 2 979 2 208 6 5
532545780: 58 7 13 42 5 45 77 3 7
382484592: 882 951 114 4
80040: 14 5 89 92 5 8 450 62
366200: 1 2 1 72 57 342 90 9 9 1
85170961: 84 1 73 82 472 6 28 45
121824: 7 73 1 738 2 17 96
227158: 5 4 6 32 6 9 2 4 8 7 8 106
131095569: 32 1 6 1 4 4 3 5 88 2 3 33
10194609: 30 4 6 2 51 7 26 3 2 1 7 1
26991869: 3 2 1 508 7 2 6 7 8 838
209499770024: 5 64 87 501 35 43 5
5499: 6 9 31 62 6
504783997: 504 7 83 829 169
74468820: 958 6 83 62 2 465
53087400: 7 2 966 258 725
11104: 3 716 44 5 53 82 1 6 3
1341837369: 6 938 8 405 70 19 24 9
20321309: 3 3 7 140 6 6 64 9 4 9 7
704762544: 61 56 460 424 6
8145: 2 23 8 7 1 3 371 1 10 1
1575: 71 4 3 4 2 872 79
3837597: 68 21 19 85 141
2697369: 260 6 3 73 4 1 6 3 9 7 4
350742714: 16 2 856 2 84 1 671 7 4
24882336093: 9 57 8 880 62 2 31 1 3
5260: 6 4 43 20 5
84760: 684 834 60 4 48 52
32195501: 64 125 3 74 3 8 3 17
9773075972: 725 35 7 401 12 1 53 4
2263: 8 23 72 31 1
319336: 319 249 86
596229888: 7 4 85 1 454 6 5 4 8 3 32
777296: 25 8 769 6 962
3630504993: 74 5 2 270 5 9 14 6 6 6 6
1167712814: 7 8 2 7 7 13 3 1 3 164 7 7
59925338900: 3 2 392 3 8 378 1 2 490
1143664016358: 9 129 6 98 401 636 1
451243440: 25 5 61 9 728 586 930
96979: 371 855 1 66 75 4
32592: 637 51 1 97 7
281215: 3 79 5 7 98 17 9 15
1240533200: 609 97 42 40 5
177223221: 5 822 880 7 7 4 1 6 6 5
669480: 10 2 74 74 1 430 1 829
16395: 859 11 6 3 8 6 721
230642792: 8 541 7 3 9 73 95 1 93
2653946354772: 1 57 94 3 5 65 29 4 318
7203575: 6 72 6 9 185 733 49
23585069: 9 2 3 593 26 59 2 7 4 6 5
1875280072: 872 54 675 8 59
361349: 6 930 4 13 988
8801598: 5 415 70 8 480 7 99 2
717: 41 3 7 3 8 398
12118286: 91 30 1 828 6
116973878000: 30 48 56 500 812
2535626817: 61 90 6 491 81 19 3
2385: 394 2 7 3
109572: 8 9 8 4 6 2 390 8 8 65 4
81224908677: 4 468 7 20 5 79 363
36103148: 390 9 30 754 407 4
3863889: 5 25 412 98 98 89 42
7158760: 94 7 9 65 1 25 6 5 10
93759996960: 91 858 47 5 6 7 730
786357: 78 50 64 56 2 2 8 7 99
2038622: 753 66 41 997 7
373685: 781 18 2 616 5 1 8 13
15591: 47 43 74 93 339
105251390157: 1 92 7 7 7 982 4 4 8 210
3725159: 8 992 8 3 1 2 4 85 607
36406960: 789 4 4 571 80
408622: 64 304 7 3 46
2478: 1 42 59
1199435490: 5 65 61 14 14 4 6 605
104684: 1 10 89 4 681
150774920: 7 4 6 6 9 1 4 58 5 83 440
338745: 45 57 66 14 2 90 47
35057: 333 8 9 57
2065336: 1 516 211 4 492
12994083: 4 95 7 4 7 9 676 7 4 2 5
59094735045: 8 873 3 4 1 4 6 555 4 7
317202: 85 690 49 928 747 8 2
40708711: 22 4 1 6 9 459 1
32694300: 319 71 723 195 84 21
253046610: 6 3 2 3 307 6 636 3 1 4 2
114748: 72 398 1 29 1 4
23317289089: 9 420 97 26 49 4 5 88
450512522712: 1 5 528 39 1 2 1 632 8 9
10228512: 8 64 961 248 28
64514: 85 5 3 8 2 9 2 104 7 6 4 2
34: 3 4 4 4 2
27328: 1 28 216 112 1
1281329910: 79 2 3 4 595 699 35 6
375758: 8 281 13 59
312352: 77 425 7 22 780 4
19811: 6 9 73 6 1 3 7 3 5 9 7 364
795267: 329 1 6 3 649 9 249 87
3510959: 5 7 109 59
783516: 717 95 80 3 3 990 4
10355981: 799 54 240 7 934
94864: 147 6 1 616 1
3515: 1 2 5 6 5 1 173 69 2 7 2 5
151977: 6 3 5 508 13 85
108112: 43 99 76 6 186
796102075: 3 7 25 1 6 860 70 5
8990: 14 98 6 664 32 62
40554858: 19 96 7 107 23 9 39
8653752: 735 644 1 2 196 914 6
10582077: 4 163 7 9 6 2 4 3 7 808 7
352033406: 78 5 539 64 87 13 597
20030793021: 4 252 552 5 2 947 993
1763041: 96 491 67 2 7 3 4
497341235: 3 99 46 809 5 6 53 6 8 2
290305266: 672 8 9 500 8 2 6 573 2
40539212: 754 8 56 34 3 8 5 3 89
15029: 7 4 2 760 9
457576: 9 56 469 6 8 3 5 2 89
6226858092: 37 9 2 7 6 8 9 6 60 4 273
699210: 78 2 97 9 90
31731: 4 424 8 9 236 7
102: 9 7 5
2973576: 16 8 274 54 598 749 6
12222284: 6 1 5 338 269 22 74 3 9
45145752762: 627 6 4 570 7 7 254 3
36036528: 2 79 7 9 424 524 2 6 11
740491: 74 5 69 5 491
1836207923040: 57 30 7 388 837 4 360
74510: 8 6 7 12 9 86 4 4 5 22 80
1228415259: 57 7 573 27 7 5 199
194940: 2 9 8 2 440 7 81 9 1 3 95
4739029339: 649 73 9 8 10 349 339
7371: 219 30 538 120 143
2936835272: 1 8 34 1 698 55 5 5 27 2
1818672: 50 7 77 9 29 26 1 2 24
4914: 34 1 101 47 2 4
48531129: 31 1 593 264 9
398402: 4 249 5 8 1 1 1
13046500: 4 144 906 4 25
19458633533: 926 51 9 7 1 4 6 17 7 3
856: 9 11 1 366 465 2 2
938590387485: 9 9 3 3 652 7 1 166 9 3 5
7808941968: 8 3 87 5 89 7 3 9 54 9 6 4
34632322: 1 524 731 66 76
3963: 68 2 268 2 7 11 8 571
9952828: 4 21 7 99 20 7 4 181
18895: 88 3 2 6 93
99421: 4 3 7 8 329 6 8 2 3 2 7 9
159011265: 991 563 57 72 5
348312220113: 843 370 971 22 7 59 4
6880: 256 478 5 8 8 1 7 9 8 5
352393632: 1 814 72 6 432
4008: 326 7 8 990 4 350
12661158318: 535 8 98 7 7 665 5 543
518193210: 2 90 714 6 6 8 2 74 7 52
46254139: 7 8 593 1 39
394686: 577 604 5 79 2 39 4 6
112728: 6 5 3 4 782 93 9 3 61 1 2
2306719800: 420 89 726 17 5
7267681530: 1 2 6 1 7 74 6 6 9 153 1
1134704: 2 8 3 5 6 82 6 2 3 2 70 8
652478: 690 944 32 996 88 2
5997: 426 26 2 91 6 9 8 2 1 7
28975385016: 90 542 9 6 5 91 11 6
4040151: 93 22 4 389 9
28446: 45 90 848 7 303 22
74958967774: 5 962 783 29 33 3 1 5 6
375425820: 61 7 1 21 57 5 660 63
16455144: 8 846 77 5 6 2 5 8 4 3 48
337280: 5 388 93 1 919 5 9 8 6
6168708: 11 50 8 94 882
690590: 7 92 17 9 5 30 53
7496: 742 5 2 76
28376568: 65 88 75 948 66
1070640: 3 44 7 7 74 6 6 93 167 3
104380007560: 4 9 5 4 2 5 850 7 560
9963: 76 22 476 848 7 9
28656749040: 50 24 341 979 8 20 58
6995418: 563 230 7 39 9 70 8 6 6
21372: 117 96 72
1067: 687 287 93
12623966456: 10 21 558 8 4 7 4 645 8
105355968: 1 404 4 7 1 6 1 5 6 8 194
826063098: 185 2 610 3 6 61
16871129: 187 4 57 1 90
2824034019: 227 33 3 4 2 9 9 70 2 1 9
7915404000: 3 9 48 161 1 964 8 85
6558605: 17 1 5 9 716 4 2 7 6 9 1 3
7925: 95 8 489 336 5
42147842: 447 1 64 42 35 2
8072613: 9 7 8 458 828 9 3 501
517482: 879 84 31 1 58 7
1401397: 9 1 5 7 440
357489: 136 6 54 4 409 8 4 2 7 2
63499: 503 35 5 932 9 85 235
227: 8 16 99
5854167: 4 9 6 4 430 6 9 964 203
175: 64 19 5 11 76
574393600: 4 652 199 200 22
722: 1 3 9 5 31 193 2
536406271461: 993 3 44 5 4 1 4 6 1 6 9 9
4860859152991: 33 5 3 5 9 9 4 601 8 991
22242550: 94 87 2 75 5 1 407 5 5
733090: 5 25 85 9 12 4 8
16391: 351 5 53 7 4
2540: 314 8 20 8

2
data/08.ans Normal file
View File

@@ -0,0 +1,2 @@
295
1034

50
data/08.in Normal file
View File

@@ -0,0 +1,50 @@
..f........................8......................
G............8..u.................................
........G...p.....................................
......d.....................n.....................
..................................................
.....................................K............
..................F...8.n...B.K...................
....b.........8..u................................
...............F.p.......B.............4.....5....
....f..d..U.........................c.............
...........U.....d.n.u.0................5.........
...Y.......f..........................5...........
..........................u.....d.....e.........4.
..F...p.............v........n....................
....s.............0...............................
...US.s....g.....D..........................4.....
......wG...............S..........................
.............................B.....e..............
.........w.........................A..............
.............9w.g..........................4......
U....9..g.....v.....P....D.....f.K................
.s.............0..9........pP..........5..........
..9s...................P..........................
.............b..................0.....A..2....e...
....................b.....V..v....................
.......7........B......................A..........
..................D6...V....q.....................
...v............D....PV...........................
.........Y...........g.......................e..y.
.......SW......V..7....................c..........
.......bY7.....................N........A.........
.....................q.N..........y...............
........................N.........c...............
..................................................
.........C..7..................q........2.........
............................N...q.................
...W......C3...Q................a1.........y......
.......W.......................3......2...........
........3...........6.............1...............
....3............C.1....................k.........
E..................................a.....c........
.............................................w....
..S.......................Q..........2......k.....
......................C....6.......Q......ak......
..................................................
.................E.............a1............y....
W..........E......................................
......E...........6...........Q...................
...........................k......................
..................................................

2
data/09.ans Normal file
View File

@@ -0,0 +1,2 @@
6401092019345
6431472344710

1
data/09.in Normal file

File diff suppressed because one or more lines are too long

2
data/10.ans Normal file
View File

@@ -0,0 +1,2 @@
638
1289

50
data/10.in Normal file
View File

@@ -0,0 +1,50 @@
14567892107654348943218769016567650154541210421036
03456783298993267654309458122168743243450344323145
12567654456780154327812367433059804012769455410234
03498012349876065016901056544965418765898766708943
12345101212145076545411034545878329658981055899854
09876876705034187632110123656789421047432765988765
67878965896123298901001656743078431236598894012034
50965014387654567650012349856127340012367653213125
41234321298347656543243492347833458903458743404987
30087430178298343650156781016942167812769252985676
21196567069121243761056432679851043212890101679854
33203498451080252852347841589765654301285234521763
14512432347890161943210950432106567610106501430012
01693501036543270856102167645656788943217432567897
32789672321015389987343078938765497654998549879898
45679987410234578101256560129812321067801456734787
03478756500187665432107452121901054328982340125676
12568767891098987013898943030810167017654321010210
21079458910127698123965436945107878988901267124378
30980349821034787654876327876716901210985458095469
45671210136765693454761016329825432345671329186954
12789800345876548763876125419434501654510413277843
03543211238989439012985630308765898746701204567832
14623400141232323101234521678906567239874343236901
25710519850541014143219834567611452108965650145690
76897678769650001054301712106320143210345789036781
87678989678742112363212601235431234321276988325432
90549876349233678478004592347842389123489676710876
21632305256104569589123487656965476016512369856945
52301014107012345670149874565456365017603450747832
65490123458912396501234563432147454328214921632401
86985432167905487654341012563038901039309834521321
97876789001856778761232127678127612398712701100410
89810678012760869890103238999210543125625632234509
76701549013451987217876434785695610034534548765678
05432432174012987301987325654780123435210159854789
12980120985123673458986510783279234987346543123898
43878921976034562567603412892168765679857012010187
34565437852178901070412103601001410012768001921236
45430566543065012181543014580432321003459122876545
50121098767654327892678877698569457654219433468904
23292145678954218983019988087658768894308596567812
14587239010563007654128679112565489765107687656521
05674678323472167659436543203474321087230156785430
96983565401089898748540987654589321098543243896543
87874328992396701037621296562105465407698012565432
78765017687478632128760345673456978312789801478521
29653078596569543019656921087567889213456700329650
12532169430430156010567892193610367804765410418789
03445678321321060123456543012323458912894321001678

2
data/11.ans Normal file
View File

@@ -0,0 +1,2 @@
189167
225253278506288

1
data/11.in Normal file
View File

@@ -0,0 +1 @@
28 4 3179 96938 0 6617406 490 816207

2
data/12.ans Normal file
View File

@@ -0,0 +1,2 @@
1374934
841078

140
data/12.in Normal file
View File

@@ -0,0 +1,140 @@
YYYYYYYYRZIZYYYYYPGPPPPPGGGGGGGGGGGGGKKKKYYYYYYYYYYYFFFFFFFFFFFFFFSSSJOOOJJJJJJJYJJJJJCCCCCCCCCCCCCCFFFFKKKKKKKKKKKRRNNNNNDNNNNNNNNUUUSSSEEE
YYYYYYYYYZZZYYYYYYGGGPPPGGPGGGGGGGGGKKKKKYYYYYYYYYYFFFFFFFFFFFFFFSSSPOOOOJJJJJJYYJJJJJJJJIICCCCCCCCCCKKKKKKKKKKKKKKKKNNNNNNNNNNNNNNUUUSSSSSE
YYYYYYYYYYZZYYYYYYYGGPPPPPPPPPPVGGGKKKKKKYYYYYYYYYYYFFFFFFFFFFFSSSSSSOOOJJNJJJYYYJJJJJJJJIICCCCCCCCCCPKKKKKKKKKKKKKKKKNNNNNWNNNNNNNUUSSSSSSS
YYYYYYYYYYZZYYFYYGGGGGGGPEEPEVVVVVVXKKKKKKYYYYYYYYYYFFFFFFFFFFFSSSSSSOOOONNJJJJYYJJJJJJJIIICCCCCCCCKKKKKKKKKKKKKKKKKKKKNNNWWNNNNNWNUUSSSSSSS
YYYYYYYYYYYYYYYYGGGGGGGGPGEEEVVVVVVKKKKKKVYYYYYYWYFFFFFFSSSSSSSSSSSSSOOOUNNNNNJJJJJJJJJJIIIMMMCCCKKKKKKKKKKKKKKKKKKKKNNNWWWWWNNNNWNUUUSSSSSS
YYYYYYYYYYYYYYYYGGGGGGGGGGVVVVVVVVVVKKKKKVYYYYYYYYYFFFFFSSSSSSSZSSSSSSOONNNNNNJNNJNNJJJQQIIMMMMCCCKKKKKKKKKKKKKKKKKKKYYNWWWWWWWWWWUUUUSSSSSS
YYYYYYYYYYYYYYYGGGGGGGGVGGVVVVVVVVVVVVVKKBYYYYYFFFFFFFFSSSSSSSSSSSSSSSOOGNNNNNJNNNNNJJQQQQQMMMMCCCCCJKKKKKKKKKKKKKKKKYYYYWWWWWWWWWUUUUUSSSSS
YXXXXXXYYYYYYYYGGGGGGGGVVVVVVVVEVVVVVVVKBBYYYYYFFFFFFFFFSSSSSSSSSSSSSSOOGNNNNNNNNNNNJBBQQQQMMMMMCCCJJJJKKKKKKKKKKKKKYYYYYYWWWWWWWUUUUUSSSSSS
XXXXXXXXXYIIYYYGGGGGGGGVGVVUVVVEVVVVVVVBBBBBYYFFFFFFFFFFSSSSSSSSSSSYSSSOONNNNNNNNNNNJBBBQQQMMMMMCCCJJJJJKIKKKKKIIIIIIYYYYYWWWWWPPUUUUSSSISSS
FXXXXXXIIIIIIYYGGGGGGGGGGGEUUUUEEVVVVVBBBBBBYFFFFFRRRFFSSTSSSSSSSSSYYYYOCNNNNNNNNNNBBBBBBBQMMMMMCCCJJJJJJIKIKKIIIIIIIIIIYYWWWWWPPPPUUUSIISSS
FFFXXXIIIIIIGGGGGGGGGGGGGEEEUEEEEVVEERRRBBBBYYFFRFRRRRSSSSSSSSSSSSSSYYYYNNNNNNNNNNNBBBBBBQQQMMMMCCCRJJJJJIKIIKIIIIIIILIIIYWWWWVPPPPPPUUZZSSS
FFFXXXWWWIIIIWWGGGGGGGGGGGEEEEEEEVEEEEEBBBBBBBFRRFFFRRVVSSYYSSSSSSSSYYYYYNNNNNNNNNNBBBBBBQQQMMMMCSCCSJSJJIIIIIIIIIIIIIIIIIBBWPPPPPPPPUZZZZSS
FFFFFWWWWWWIWWWGWGGGGGGGGEEEEEEEEEEEEEEEBBBBBBBBRRRFRRRRYSYYSSSSSSYYYYYYTNNNHNNNNNNNBBBBQQQQMMMSSSSSSSSJJIIIIIIIIIIIIIIBBBBBBBBBPPPPPZZZZISS
FFFFFWWWWWWWWWWWWWGGGGGGGEEEEEEEEEEEBBBBBBBBBBBBRRRFRRRYYYYSSSSYSYYYYYYYTNWNHNNNNNTTBBBQQQQQMMMSSSSSSSSSIIIIIIIIIIIIIIBBBBBBBBBPPPPPPPZZSSSS
FFFFFWWWWWWWWWWWWWWGGGGGEEEEEEEEEEEEVVVBBVBBBBBBRRRRRRRYYYYYYYYYYYYYTTTTTTNNNNTTTTTTTBBBQQQQQMMSSSSSSSSSIIIIIIIIPIIBBBBBBBBBBBBPPPPPPPMZZZZT
AAFFFFWWWWWWWWWWWJJJGNGGGEEEEEEEEEEEVVVVBVVBBBBBBRRRRRRYYYYYYYYYYYYTRTTTTTTTTTTTTTTTTTTBTQQQQQQQQSSSSSSSIIIIIIIPPNIBBBBBBBBBBBBBPPPBPPZZZZZZ
AAFFFFAGWWWWWWWWWJJWWWGGGWEEEEEEEEEEVVVVVVMBBBRRRRRRRRYYYYYYYYYYYYYTTTTTTTTTTTTTTTTTTTTTTQQQQQQQSSSSSSSSIIIIIIIPPNBBBBBBBBBBBBBBBBBBBZZZZZZZ
AAAAAAAGWWWWWWWWJJWFWWGGWWEEEEEEEEEEVVVVBVVBBBRRRRRRRRYYYYYYYYYYYYYTYYTTTTTTTTTTTTTTTTTTTTQQQQQQSSSSSSSSIIIIIIPPPPPBBBPBBBBBBBBBBBBBBZZZZZZZ
AAAAAAAAAWWWWWWWJWWWWWWWWWWWEEEEEEEEEVVVVVVVBBRRRRRRRRYYYYYYYYYYYYYYYYTTTTTTTTTTTTTTTTTTTTTQQQQSSSSSSSSSIIIIIIPPPPPPPPPBWWBBBBBBBBBBKZZZZZZZ
AAAAAAAAAAWWWWJJJWWWWWWWWWWWEEEEEEEEEVVVVVVVVVRRRRRRRRYWWYYYYYEYYYAYYYYTTTTTTTTTTTTTTTTTTTTQQQSSSSSSSSIIIIIIIIPPPPPPPPPBBWWWWBBBBBBBBZZZZZZZ
AAAAAAAAAAWWWGJWWWWWWWWWWWWWEEEEEEEEEEEVVVVVVVRRRRRRRRWWWYYYYEEYAAAAAYTTTTTTTTTTTTTTTTTTTTTQTCCSSSSSSIIIIIISSSPPPPPPPPPBBWWWWBBBBBBBBKZKZZZK
AAAAAAAARYWWWGJJGGWWWWWWWWWWWERRWWEEEGVVVVVVVVVRRRRRRRRWWWEEEEEEEAAAAAAAATTTTTTTTTTTTTTTTTTTTCCCSSSSSSIISSSSSSSPPPPPPPPBBWWWWBFWBBBBBKKKZZZK
AAAAAAAAAYYYWGGGGGWWWWWWWWWWWWWWWWWYWVVVVFLKKVRRRRRRRRRWWFEEEEEEEAAAAAAATTRRRRRRRRTTTTTTTTTTTCCCSSSSSSSSSSSSSSSSPPPPPPPWWWWWWWWWWWBBBBKKKKKK
AAAAAAAAYYYTGGGGGGGGWWWWWWWWWWWWWWWWWWJJLLLKKRRRRRRRRRWWWWWEEEEEEEEEEAAATTRRRRRRRRTTTTTTTTTTTTCCXSSSSSSSSSSSSSFFFPFFPSSSSSWWWWWWWBBBBBKKKKKK
AAAAAAAYYTTTTTGGGGGGGWWJJWWWWWWWWWWWWJJJLLLLLLLLRRRRRWWWDWWWWEEEEAAAAAATTTRRRRRRRRTTTTTTTTQQQQXXXXRRSSSESSSSSSFFFFFFHFSWWWWWWWWBBBBBMMMKKKKK
AAAAAASYYYYTTVGGGGGGWWWWJJJJYYWWWWWWWJJJLLLLLLLLLRRRRRDDDWWWWWWWWAAAAAAATTRRRRRRRRTTSTTTTTTQQQXXXXRRSSSEEESESSEEFFFFFFFWWWWWWWWBBBBBMKKKKJJJ
JAAAASSYYYYYTVGGGGGGGWWWWJJYYYWWWJJJJJJLLLLLLLLLLLLLLDDDDWWWWWWAAAAAAAAAAARRRRRRRRFFSTTTTTTQXXXXXXXREEEEEEEEEEEEFFFFFFFFWWWWWWWWWHBKMKKKJJJJ
JASSSSVVVVVVVVGGGGGWWWWWWJJGYGWWWNNUJJJLLLLLLLLLLLLLLLDDDDDWWWAAAAAAAAAAAARRRRRRRRFFFFPTTTTXXXXXXXXEEEEEEEEEEEEEJFFFFFFWWWWWWWWWZZBZZKKKJJJJ
JJVVSSVVVVVVVGGGGGGWWWWYDJGGGGWWLNNUJJJLLLLLLLLLLLLDDDDDDDDDDWAAARRRRRRRAFRRRRRRRRFFFFPTTPPXXXXXXXXEEEEEEEEEEEEEFFFFFFFFFWWWWWWWWZZZZKZZJJJJ
JJVVVVVVVVVVVVVVVVGWWYYYDDDGGGDLLNUUJJJLLLLLLLLLLLLDDDDDDDDDDWAAARRRRRRRRRRRRRRRRRFFFPPPPPPXXXXXXXEEEEEEEEEEEEEEFFFFFFFFFFFWWWWWZZZZZZZZJJJJ
JJJVVVVVVIIIVVVVVVWWYYYDDDGGDDDDUUUUUUUUILLLLLLLLDDDDDDDDDDDDWWAARRRRRRRRRRRRRRRRRFPFPPPPXXXXXXXXXEEEEEEEEEEEEEEFFFFFFFFFFFWWWWWZZZZZZZLJJJJ
JJJVVVVVIIIIVVVVVVVWYYYDDDDDEDDDDUUUUUULLLLLLLLLLDDDDDDDDDDWWWWWARRRRRRRRRRRRRRRRRFPPPPPPXXXXXXXXXXEEEEEEEEEEEEEFFFFFFFFFOFWWWZZZZZZZZZZZZJJ
JJJVVVDDDIIVVVVVVVVDHDDDDDDDDDDFUIUUUUUULLLLLLLLLLDDDDDAIIDAWWWWARRRRRRRRRRRRRRRRRNNNNPPXXXXXXXXXXEEEEEEEEEEEEEEEEFFFFFFFFFFWWZZZZZZZZZZZVJJ
JJJKKKDDDIIVVVVVVVDDDDDDDDDDFFFFUUUUUUUULLLLLLLLLLDDDDDAAIDAAAAKARRRRRRRRRRRRRRRRRNNPPPPXWXXXXXXXXXEEEEEEEEEEEGGGGFFFFFFFFFFWZZZZZZZZZZZZVZZ
JJKKKDDDDDIVVVVVVVDDDDDDDDDDFFFUUUUEUUUUULLLLLLPLLDDDAAAAAIAAAAKMRRRRRRRRRAAAAANNNNNNNNXXXXXXXXXXXXXEEEEEEEEEFGGGGFFFFFFFFFFWZZZZZZZZZZZVVZZ
KJKKKKKKDDDVVVVVVVDDDDDDDDDDFFFFFUUEEUUUUULLLPPPLQDDDAAAAAIAAAAKMRRRRRRRRRAAAAAANNNNNXXXXXXXXXXXXXXXXEEEEEESFFGGGGFFNNNNFRRRWZZZZZZZZZZZZVZZ
KKKKKKKKDDDVRUSVVVDDDDDDDDDDFFFFFEEEEUUUUULLNNNNQQDDDPAAAAAAAAXMMRRRRRRRRRAAAAANNNNNNNXXXXXXXXXXXXXXNEEEEEEFFFGGGGNNNNNNNRRRRRZZZZZZZZZZZZZZ
KKKKKKDDDDDDUUUVVVDDDDDDDDDDDFFFFEEEEUUNLLLLNNNNNQDDPPAAAAAAAAMMMRRRRRRRRRMMAAAANANNNNNXXXXXXXXXXNNNNNEEEEEFFFGGGGNNNNNNNNNNNNZZZZZZZZZZZZZZ
YKKKKKKKDDDDUUUVVDDDDDDDDDDDDAFFFEEEEUNNNNNNNNNNNNRDPPAAAAAAAAHHMMMMMMMMMMMMAAAAAAMNNNNNXXXXXXNXNNJJJEEEEEEFFFGGGGNNNNNNNNNNNZZZZZZZZZZZZZZZ
KKKKKKKDDDUUUUUUUUUDDQDDDMDDDAAAEEEEEUNFFNFFNNNNRRRRFPPAAAAAAHHHHHMMMMMMMMMMMMAAAAMNNNNXXXNNNNNXNNNJJJJPPJUJFFGGGGGGNNNNNNNNNZZZZZZZZZZZZZZZ
KKKKKKKKKDDDDUUUUUUUQQDDDDDDDAAAAEEEEUFFFFFFNNNNFFFRFAAAAAAAAAHHHMMMMMMMMMMMMMMMMAMMNNNNNNNNNNNNNNNNJJJJJJUGGGGGGGGGNNNNNNNNNZZZZZZZZZEZZZZZ
KKKKKKKKKDDDDUUUUUUUUUUDADDAAAAAEEEEENBFFFFFFFFFFFFFFAAAAAAAAHHHHHHMMMMMMZZMMMMMMMMNNNNNNNHHHHNNNNJNNJJJJUUGGGGNNGGGNNNNNNNSNNVVZZZZZEEEZZZZ
KKKKKKKKKDUUUUUUUUUUUUUUAAAAAAAAEEEEEEBFFFFFFFFFFFFFFFAAAAAAAAHHHHHMMMMMMMZZZMMMMMMJHHHHHHHHHHNNNNJJNJJJJJUGGGGLLLLLLNNNNNNNNVVZZZZZEEEEEZZZ
KKKKKKKKKKKUUUUUUUUUUUUUAAAAAAABBEEEEBBBFFFFFFFFFFFFFFAAAAAAAAHHHHHHHHMMMMMMMMMMMMJJHHHHHHHHHHNNNJJJUJJJJJJGGGGLLLLLLNNNNNNNNVVVVZZZEEEEEEZZ
KKKKKKKKKKKUUUUUUUUUUUUUAAAAAAABBBBBBBBBBFFFFFFFFFFEFAALAAAAAAHHHHHHHHMMMMMMMMMMMMMJHHHHHHHHHBBNNJJJJJJJJJJGGGGLLLLLLNNNNNNNVVVVVVZZZEEEEEEE
KKKEEEKKKKKUUEUUUUUUUUUHHHAAAAABBBBKBBBBBBBFFFFFFFFFFVALAKAAAHHHHHHHHHHHCCCMMMMMMMMJHHHHHHHHHBBNNJVJJJJJJJJGGGGLLLLLLVNVVVVVVVVVVZZZEEEEEEEE
KEEEEEKEEEEUUEEUUUUUUUUHHHHAAAABBBBBBBBBBBBFFFFFFFFFFVVXXKXHHHHHCHCCHHHHHHCMMMMMMMMJHHHHHHHHHBBNNFVJJJJJJJJGGGGLLLLLLVVVVVVVVVVVZZEEEEEEEEEE
KEEEEEEEEEEEEEEEUUUUUUHHHHHHAABBBBBBBBBBBBBFFFFFFFFFFFFXXXXXHHHHCCCCCHHHHCCCMMMMMMMMHHHHHHHHHBBNFFFFJJJJJJJLLLLLLLLLLVVVVVVVVVVVVZEEEEEEEEEE
KEKKEEEEEEEEEEEBUBBBBUJJHHHAAABBOBBBBBBBBBBBFFFFFFFFFFSXXXXXHHHCCCCCICCHHHCCMCCMMMMMMMQJBBBBBBFFFFFFFJJJJJJLLLLLLLLLLVVVVVVVVVVVVVEEEEEEEEEE
KKKKEEEEEEEEEEBBBBBBNIIIHHAAAABBBBBBBBBBBBBFFFFFFFFFFFFXXXXCCCCCCCCCCCCCHCCCCCMMMMMMMMCCCCBBBBBBFFFFFJJJJJJLLLLLLLLLLLLLVVVVVVVVEEEEEEEEEEEE
KKKEEEEEEEEEEEBBBBZZIIIIIIIAAABBBBBBBBBBBBHHHWFOOFFFFXXXXXCCCCCCCCCCCCCCCCCCCCCCCMMMMMCCCCBCBBBFFFFFFJJJUJJLLLLLLLLLLLLLLLLLLVEEEEEEEEEEEEEK
KKKEEEEEEEEEEEBFBBIIIIIIIIAAIAABBBBBBBBBBBHHHHHHOOOOFXXXXXXXYYCCCCCCCCCCCCCCCCCCCMMMMCCCCCCCCBCUFFFUUUUJUUJLLLLLLLLLLLLLLLLLLNEENNEEEEEEEEEI
KKEEEEEEEEEEEBBBBBIZIIIIIIIIIAAABBBBBBQBBBBHHHHHHHOOFXXXXXXXXXCCCCCCCCCCCCQQQQQCCCMMCCCCCCCCCCCUUUUUUUUUUUJLLLLLPLLLLLLLLLLLLNNNNNEEEEEEIIEI
EEEEEEEEEEOEEEBBBBBIIIIIIIIIAAAABBBBBQQQMMMHHHHHHHHHHXXXXXXXXCCCCCCCCCCCCCCQQQQQCMMCCCCCCCCCCCCCCUUUUUUUUUULLLLLPLLLLLLLLLLLLNNNNNNENEIIIIII
HEEEEEEEEEOBEBBBBIIIIIIIIIIAAAAAAABBQQQQMMYHHHHHHHHHHHHXXXXXXCCCCCCCCCCCCUQQQQQQCCCCCCCCCCCCCCCCCUUUUUUUUUULLLLLPLLLLLLLLLLLLNNNNNNNNNIIIIII
EEEEEEEEEEEBBBBBIIXIIIIIIIIIXXXAAAABQQQQMMMHHHHHHHHHUUHXXXXXXXCCCCCCCCCCIIIIIQQQCCCCCCCCCCCCCCCUUUUUUUUUUUULLLLLUUPLLLLLLLLLLNNNNNNNNIIIIIII
VEEEEEEVBBBBBBBBIBIIIIIIIIINXXXXXAAAMMMMMJMHHHHHHHHHUUXXXXXXXXXCCCCCCCCCIIIIIQQQCCCCCCCCCCCCCMMMMMUUUUUUUUULLLLLUUTLLLLLLLLLLNNNNNNNNIIIIIII
EEEEVEEVBBBBBBBBIBBIIIIIIIIXXXAXAAAAMMMMMMMTTHHHHHHHHXXXXXXXXCXCCCCCCWZZIIIIIIIIIIICCCCCCCCCCCMMMMMUUUUUUUULLLLLFUPPUUUVVNNNNNNNNNNNNIIIIIII
VVVVVVVVBBBBBBBBBBBBIIIMIIIXXXAAAAAAMMMMMMMMMHHHHXXXHCXXAXXXXCCIIIIIIIIIIIIIIIIIIIICCCCCCCCCCCMMMMMUUUUUUFFFFFFFFUPUUUUUNNNNNNNNNNNNNNNIIIII
VVLVVVVVBBBBBBBBBBBIIIIMMMXXXXXXAAAMMMMMMMMMHHHHXXXXCCXCCXXXCCCIIIIIIIIIIIIIIIIIIIICCCCCCMCCMMMMMMMMUUUUFFFFFFFFFUUUUUUUNNNNNNNNNNNNNLNIIIII
VVVVVVBBBBBBBBBBBBBBBIIIXXXXXXXXAAAMMMMMMMDDDHHXXXXXCCCCCCCCCCCIIIIIIIIIIIIIIIIIIIICCCCMMMMMMMMMMMMMUPUUFFFFFFFFFUUUUUUCNNNNNNNNNNNNNLNIIIII
VVVVVVBBBBBBPPBBBBBBBBIIXXXXXXXXXAMMMMMMMMMDDDXXXXXXCCCCCCCCCCCIIIIIIIIIIIIIIIIIIIICCCSMAMMMMMMMMMMMUPPUFFFFFFFFFUUUUUUNNNJJNJNNUNNLLLNIINNI
VVVVIIRBBBPPPPPBBBBBBBIAXXXXXXXIAAAMMMMMMMDDDDXXXXXXXXCCCCCCCCFIIIIIIIIIIIIIIIIKCCCPCMMMMMMMMMMMMMMMPPPPPFFFFFFFFFFFUUUUAJJJYJNNUNLLLLLLLNNI
VVVVIRRBBPPPPPPPPBPPPPPAXXXXXXXIIIINMXDDDDDDDDXXXXXXXXXXCCCFFFFIIIIIIIIIIFZZZKKCCKKCCKMMMMMMMMMMMMMMPPIPPFFFFFFFFAFAAAUAAJJJJJJJJLLLLLLLLNNN
VIIIIIIFFPPPPPPPPPPPPPPPXXXXXXXXXIIIIXXDDDDDDDXXXXXXXXXXXCFFFFFIIIIIIIIIIFZZZKKKKKKKOOOMMJMMMMMMMEEMPPIPPPPFFFFFFAAAAAAAAJJJJJJJJLLLLLLLLNNN
IIIIIIIFFPPPPPPPPPPPPPHHMMMMXXXXIIIXXXDDDDDDXXXXXXXXXXXXXFFFFFFIIIIIIIIIIFYYZZKKKKOOOOOOOJMMMMMMMMMMIIIIPFFFFFFFFFAAAAJJJJJJJJJJJLLLLLLNNNNN
IIIIIIIIFPPPPPPPPPPPPPPHMMMXXXXXIXXXXXDDDDDDXXXXXXXXXXXXFFFFFFFIIIIIIIIIIYYYYKKKKOOOOOOOOOQMMMMMMMMMMIIIIIIFFFFFFFAAAJJVVVVVVVVVJLLLLLLNNNNN
IIIIIIIIFPPPPPPPPPPPPMHHMMMMMXXXXXXXXXXCCDDDDXXXXXXXXXXXXFFFEFFIIIIIIIIIIFYYYYYYYOOYOOOOOOOMMMMMMMMMIIIIIIIFFFFFFFAAJDJVVVVVVVVVJJJLLLYLLNNN
IIIIIIFIFPPPPPPPPPPPPMMMMMMMMXXXXXXXQQCCCCDDDDDXXXXXXXXXXXEEEEFFFFFFFFUFFFYYYYYZZOOOOOOOOOOMCMMMMMMMMIIIIFFFFFFFFAAAJDJVVVVVVVVVJLLLLLLLLNNN
IIIVVVFFFPPPPPPPPPPPMMMMMMMMMMXAAXXXXXXJCCDDDDDXXXXXXDXXXXEEEFFFWWWWFFYYYYYYYYYZZZOOOOOOOOOZCMMMMEEEZZIIIIFFFFSSFBBJJJJVVVVVVVVVJLLLLLLLNNNN
VVVVVVVVVTTTPPPPPPMMMMMMMMMMMAAAAXXXXXXJCCCCDDDDXXXXXDXXXEEEEKWWWKKWWWYYYYYYYYZZZZOOOOOOOOZZZZMZMEZZZZIIIIFSSSSSPPBBLJJVVVVVVVVVJJLLLLLNNNNN
VVVVVVVVVTYTPPYPPMMMMMMMMMMMMMMAAXXXXACCCCCCCDDDDDDDDDEEEEEKKKWWKKKKWWYYYYYYYYYYYZZZOOZOOOZZZZMZZZZZZZVVISSSSSCCPPBPJJJVVVVVVVVVJJLLNNNNFNNN
VVVVVVVVVYYTYYYYPPMMMMMMMMMMMMAAAAXXCCCCCCCCCDDDDDDDDDEEEEEKKKWWWKKKWWWWWYYOOYYYZZZZZZZZOOZZZZZZZZZZZJVVIIVSSCCCCPPPPPJVVVVVVVVVVVVLNNNNFNNN
VVVVVVVVVYYYYYYPPMMMMMMMMMMMMMMMAAAAACCCCCCCDDDDDDDDDDDEEEEEEKKKKKKKKKWWOOEOOYYZZZZZQQQZZZZZZZZZZZZZZZGVVVVVSCCCCPPPPPJVVVVVVVVVVVVFNFFFFNFF
VVVVVVVVVEYYYYYMMMMMEMMMMMVAVAAAAAAAAACUCCCCCDDDDDDDDDEEEEEEKKIKKKKKKWWOROOOOOZZZZZZZQQQZQQZZZZZZZZZFFVVVVVVVVCCCCPPPPPJJVVVVVVVVVVFFFFFFFFF
VVVVVVVVVVYYYAYYMMMEEMMMMMVAVVVVVAAAAACUCCCCCDDDDDDDDDEEEEEEPZPPKKKKKKOOROYOZZZZZQQQQQQQQQQQQZZZZZZZZVVVVVVVVCCCCCCPPRVVVVVVVVVVVVVFFFFFFFFF
VVVVVVVVVVVYYAAAMMMEEEMVVVVVVVVVVVVAAOUUCCCCCCDDDDDDDREEEEPPPZZPPKKKKKOOOOOZZZZZZZQQQQQQQQQQQZZZZZYZMMMVVVVVVVCCCCCCCRVVVVVVVVVVVVVFFFFFFFFF
VVVVVVVIIIIPPPPAMAAEEEMEVVVVVVVVVVAAOOOOCCCCODDDDDDDDREEEEPPPPPPPPPKKZZOOOOOOOOOZZQQQQQQQQNQQZZZZZZMMMMMMVVVVVCCCCCRRRVVVVVVVVVVVVVFFFFFFFFF
VVVVVVVIPPIPPPAAAAAEEEEEOEVVVVVVVVVAAOOLCOCCOODDDDDDDRRREEPPPPPPPPPZZZOOOOOOOOOOZZZQQQQQQQQQQQGGZGMMMMMMVVVLVCCCRRRRRRVVVVVVVVVVVVVFFFFFFFFF
VVVVVVVPPPPPPPAAAAEEEEEEEEEVVVVVVVAAAOOOOOOOOOODDDDRRRRRPPPPPPPPPPPZZZZOOOOOOOOOZZZZQQQQQQQQIIGGGGGGMMMVVVVVULPCRRRRCCVVVVVCVVVVVVVFFFFFFFFH
VVVVVVKPPPPPPAAAAAEAEEEEEEEVVVVVVVAAAAOOOOOOOOODDDRRRRRPPPPPPPPPPPPPPOOOOOOOOOOOOZZZQQQQQQQGGGGGGGGGGMMMMCZCCLLRRRLLXCVVVVVCVVVVVVVFFFFFFFHH
VVVVYYPPPPPPPPPAAAAAEEEEEEEEVVVVVVAAAAOOOOOOOODDDRRRRRRRRPPPPPPPPPPZZZZOOOOOOOOAOZZQQQQQQQGGGGGGGGGGGMMMMCCCHLLLLLLLCCTCCCCFVVVVVVVFFFFFFFKK
UUUVYYPYYPPPPPAAAAAAAEEEEEEEVVVVVVVAAOOOOOOOOOODDORRRRRRRPPPPPPPPPZZZZZOOOOOOOOOOQQQQQQQQQQGGGGGGGGGGGMCCCLHHLLLLLLLVCCCCXXFFFFFFFFFFFFFFKKK
UUUYYYYYYPPPPPPAAAAEEEEEEEAAVVVVVVVAAOAOOOOOOOOOOORRRRRRRRPPPFFPPZZZZZZZZOOOOOOOOQQQQQQQQQQQGGGGGGGGGGHAACLLLLLLLLLLLLCICXXFFFSFFFFFKKKKKKKK
UUUUYYYYPPPPPPAAAAAAEEECEAAAAAAVVVVVAAAOOOOOOOOOORRRRRRRURVPPFFFPFFZZZZZZZOOOOOCCQQQQQQQQQQGGGGGGGGGGGHALLLLLLLLLLLLIIIICXXXXFSSFKKKKKKKKKKK
UUUUUYYYDPAPPAAAAAAAAEEEAAAAAAAVVVVVAAAOOOOOOORROORRRRRAOPVVVFFFFFFZZZZZZOOOOOQQQQQQQQQQQQQQQGGGGGGGAAHALLLLLLLLLLLLIXXXXXXXFFSSFKKKKKKKKKKK
UUUUUUUUDDDAAAAAUAAAAEEAAAAAAAAVVVVAAAAPOOOORORROOOORRROOOVVFFFFNNFZZZZZZZOOOOOQQQQQQQQQQQQQQQAGGYAAAHHAALLLLLLLLLLLILIXXXXXFFFSFFKKKKKKKKKK
UUDUUDUDDEAAAAAAUUAAAAAAAAAAAAAVVVAAAAPPPPORRRRRROOORRROJOVOFFFFFFFFZZZZZZOOOZQQQQQQQQQQQQQQQQQGGYAAAAHAALLLLLLLLLLLLLXXXXXXXXFFFFFKKKKKKKKK
DDDDDDDDDEEAAAAUUUUUUUAAAAAAAAAAAVAAAAPWWPRRRRRRROOOOOOOOMMFFFFFFFFFFFFZZZZZZZZQQQQQQQQQQQQQQQUUUYAAAAAAAGGLLLLLLLLLLAAXXXXXXXXXLFFFKKMKKKKK
DDDDDDDDDEEAEAAAUUUUUUUUUAAAAUAAAAAAAAARRRRRRRRRZOOOOOOOOMMMFFFFFFFFFFFZZZZZZZZQQQQQQQQQQQQQUUUYYYAYYAAAGGWGLLLLLLLLAAXXXXXXXXXXLLLFKKKKKKKK
DDDDDDKKKKEEEAAAUUUUUYUUUUUAUUUUAAAAAAAARRRRRRZZZOOOOOOOOFFMFFFFFFFFFFFZZZZZZZQQQQQQQQQQQQQQQYYYYYYYYYAGGGGGGLLLLLLLAAXLXXXXXLLLLLEEEVVVVKKK
DDDDDDDKKEEEEAAAUBUUUUUUUUUUUUUUUAAAOOORRRRRRRRZZKOOOOZZZFFFFFFFFFFFFFFZZZZZZZZZQQQQQHQFQQFQQYYYYYYYYYYGGGGGGGLLLLLLLAXLLXLXLLLLLLEEEEVVVKVK
DDDDDDDDDEEEEEAAAUUUUUUUUUUUUUUUFAAAOORKRRRRRRRZKKKOOOZWWFFFFSFFFFFFFFFZZZZZZZVVVVZQFFQFFFFQFYYYYYYYYYYYYGGGGGGLGLAGMLLLLLLXLLLLLLEEEVVVKKKV
DDDDDDDDDEEEEWAAAUUUUUUUUUUUUKUUOOOOOORRRRRRRRRZZKKOOOZWWWWWFSFFFFXFFFFZZZZZZZZVVVFFFFFFFXFFFFYYYYYYYYYGGGGGGGGLGIGGLLLLLLLLLLLLEEEEEEVVVVVV
DDDDDDEEEEEEUWWUUUUUUUUUUUUUUKKKKOOOOORRRRRRRRRRKKKKKWWWWWWWWWEFFFBFBBFZZZZZZZZVVVSFFFFFFXFFFFYYYYYYYYYYYGGGGGGGGGGGGLLLLLLLLLLEEEEEEEEVVVVV
DDEEEDDDEKEEWWWWFUUUUUUUUUUUUUKKOOOOOOPRRZZZZZZZKKKKKZZZZWWWWWEEFFBBBBZZZZZZZZCSSSSFFFFFFXXXFFFFYYYYYYYYYYGGGGGGGGGPPLLLLLLLLLLEEEEEEEEVVVVV
DEEEEEEDDDDDIWWFFFWWWWUUUUUUUUKKOOOOOPPRRZZZZZZZZZZZZZZZZWWWWWBBFBBBBBBBZZZZZZCCCSSFSSSFFOXXXXXXXXXYYYYYYYGGGGGGGGGGPLLLLLHLLLLEEEEEEEEVVVVV
DEEEEEEEDDDDWEWWWWWWWWKUUUUUWWWKOOOOOOPPRZZZZZZZZZZZZZZZZWWWTWBBBBBBBBBBZZSSZZZCSSSSSSSFFOXXXXXXXXXXYYYYYYYYYGGGGGTTTTLLLLLLLLLLEOEEEEVVVVVV
DEEEEEEEDDDWWWWWWWWWWWKKUIWWWWKKOOPOPPPPXZZZZZZZZZZZZZZZZKWWWWBBBBBBBBBBZZZSSSSSSSSSSSSSXOXXXXXXXXXXYYYYYYYYYGGYTTTTTTTTLLLLLLLLLLEEEEVVVVVV
EEEEEEEEEDTWWWWWWWWWWIIIIIIWWWWWPPPPPPXXXZZZZZZZZZZZZZZZZKKWBBBBBBBBBBBBZZZSWSWSSSSWWSSSXXXXXXXXXXXXXYYYYYYYYYYYTTTTTTTTTTOLLLLLLLEVVVVVVVVV
IEEEEEEEVWWWWWWWWWWPWIIIIIIWIIPPPPPPPPPXXZZZZZZZZZZZZZZZZZKKBBBBBBBBBBBBBBBBWSWSSWWWWWWXXXXXXXXXXXXXXYYYYYYYYYYTTTTTTTTTTTTLLLLLLVVVVVVVVVVV
IEEEEEEEEEELWWWPWWPPWIIIIIIIIIPPPPPPPXXXXZZZZZZZZZZZZZZZZZPPBTBBBBBBBBBBBBMMWWWWWWWWWWWWXXXXXXXXXZYYYYYYYWYYYYYTTXTTTTTKKTTLLLLLLVVVVVVVVVVV
IIIIIEEEEEEEPWWPPPPPPAIIIIIIIIPPPPPPPXXXXZZZZZZZZZZZZZZZZZPPPBBXNBBBBBBBBBMMWMWWWWWWWQQQXXXXXXXXXZZYYYYYYWWYYYYTTTTTTTTTTTTTLLLLVVVVVZZZZZZV
IIIIEEEEEECCCNWPPAPPAAIIIIIIIPPPGPGPGGXXXXXZZZZZZZZZZZZZZZPPPPBXXVBBBBBBBMMMMMMWWWWWWWWXXXXXXXXXXZYYYYYYWWWYWWYTTWTWWWWWWTTTLPPLLVVVZZZZZZZV
IIIIEEEEECCCCNNAAAPAAAIIIIIIIPPPGGGGGGXXXXXHHHWWZZZZZZZZZZPPPXXXXXXZXBBMMMMQQMMWWWWWWWWHXXXXXHXHHYYYEYYYWWWYWWWWWWWWWWWKKKKLLPVVVVVVVZZZZZZZ
IVVVVGGEECCCNNNAAAPAAAAAIIIIIPPGGGGGGGGGXXXHWWWWZZZZZZZZZZPPPXXXXXXXXAAAMMMQQQMWWWWWWWWHHHXXHHXHEEEEEYEYWWWWWWWWWWCWWWWKKKKWHVVVOOVVVZQZZZZZ
IVVVVGGEJJJJANAAAAAAAAAAYIPPPPPPGGGGGGGKXXXHWWWWWWWKPKPPPPPPXXXXXXXXXAAAMMMQQQQWWWWWWWWHHHHHHHHHHEEEEEEWWWWWFWWWWCCCCCCKKKKWHVVOOOOOVOQQZZZZ
VVVVVVVJJJJAAAAAAAAAAAAAAPPPRPPPGPGGGGGKKHHHHWWWWWWWPPPPPPXXXXXXXXXXAAAAAMQQXQQVVVWWWWHHHHHHHHHHHEEEEEEWEWWFFWWWWICCCCCKKKKHHNNOOOOOOOQZZZZZ
VVVVVVJJJJJJAAAAAAAAAAAAAAPPRRRPPPGGGGGKKKKHWWWWWWWWPPPPPPPPPXXXXXXXAAARAARQQRVVVVWWHHHHHHHHHHHEEEEEEEEEEFFFFFWWCCCCCCCKKKKHHHOOOOOOOOZZZZZZ
VVVVVVJJJLJJAAAAAAAAAAAAAAAPPRRGGGGGGGGKKKKKFWWWWWWPPPPPPOOPXXXXXXXAAARRRRRQRRVVVVWWHHHOOOOOOOEEEEEEEEEEEFFFFFWWCCCCCCHKKKKHHHHHOJOOOOOOZZZZ
VVVVVVJJJLLJJAAAAAAAAAAAWTPPRRRRRRGTGKKKKKKKFWWWWWWPPPPPPOOOOOXPPPCCAAARRRRRRRVVVVLSHHSCCOOOOOEEEEEEEEEEFFFFFFFCCCCCCCHKKKKKKKHOOOOOOOOOZZZO
VVVVVVJJJLMJJUAAAAAAAAAAWTPRRRRRRRRRKKKKKKKKKWWWWWPPPPPPPOOOOOPPPCCCAAARRRRRRVVVVVVSSSSOOOOOOOOOEEEEEEEEAAAFFFFCCCCCCCHKKKKKKKHVVOOOOOOOOZOO
VVVVVVJJJLMMUUUUAAAAAAAAATTRRRRRRRRKKKKKHKKOKWWWWWPPPPPPPPOOOOWWJOOOORRRRRRRRGVRVSSSSSSOOOOOOOJEEEEEEEEJJAAAFFFCCCCHHHHKKKKKKKGGVOOOOOOOOZOO
VVAVVMMMMMMMHUUUUUAAAAATATTTRRRRRRRRKKKKKKKRRRWWWIIPPPPPPOOAOOWWWOOOORRRRRRRRRRRSSVSSSSOEOOOOOOEEEEEEEJJJAAFFFFCFCCHHHHHGKKKKKGGOOOOOOOOOOOO
VVAVVMMMMMMMMUUUUUUAAAATTTTTTRRRRRTTKKKKKRRRRTTTTUIPPPPPPPMOOWWWWAOOOOXXRXRRRRRSSSSSSSSOOOOOOOUUUEEEEEJJJAAAFFFFFIIHHHHHHKKKKKGOOOOOOOOOOOOO
VVXXXMMMMMMMMUUUUUUUUTTTTTTTRRRRRRRRRRNKGRRRRXTUUUPPPPPPPUWWWWWWWWOOOXXXXXXXERRRSSSSSSSSSSOOOOOOEEHEEEJKKKKKKKKKKIHHHHHHHKKKKKGGGOOOOOOOOOOO
XXXXXMMMMMMMMUUUUUUUTTTTTTTTTBBRRRQRRQKKGXRRRXTUUUUUPPPUUUWWWWWWWWOWOXXXXXXOERERSSSSSSSSSHOHHHHHHHHEEJJKKKKKKKKKKKKKKKKKKKKKKKLGGGGOOOOOOOOO
XXXXXMMMMMMMMMOUUUTTTTTTTTBBBBBQQQQQRRGXGXXXXXXXXXUUPPPPUUTWWWWWWWWWXXXXXXXXEEEESSSSSSSHSHHHHHHHHHHHJJJKKKKKKKKKKKKKKKKKKKLSSLGGGGGGOOOOOOOO
XEEXEEEEEMMMMMOUWUTTTTTTTTTZBBZQZZZQQQXXXXXXXXXXXXUUUUUUUUUWWWWWWWWWXXXXXXXEEEEESSSSSSSHHHHHHHHHHHHHJJIKKKKKKKKKKKKKKKKKKKLLLLGGGGGWOOOOOOOO
EEEEEEEEEEKKMMOKKKJJTTTTTTTZZZZZZZZXXXXXXXXXXXXXXXUUUUUUUUUWWWWWWWWWXXXXXXXXEEEEEESSSSSHHHHHHHHHHHHHHJIKKKKKKKKKKIIIQQLLLLLLLLGGVVVOOVVVGGOO
EEEEEEEEEEKKKKKKKKRJJTTTTTTZZZZQQZZZXKXXXDXXXXXXUUUUUEUUUNNNNWWWWWWWXXXWXXEEEEEEEESSSSSKQQQKKHHHHHHHHIIJIIIIIIIIIIIQQQLLLLLLLLLLVVVVOVVVVGGG
EEEEEEEEEEEKKKKKKJJJJJTTTTTZZZZZZZZZZZXXXDDDXXDXUUUUUENEENNNNNWWWWWWXXXWEEEEEEEEESSSSSSKKKKKKHHHHFKNNIIIIIIIIIIIIQQQQQLLLLLLLLLVVVVVVVVGGGGG
EEEEEEEEEEEEKKKJJJJJJJTTTTTTZZZZZZZZZXXDDDDDXDDXUUBUUEEEEENNNWWWWGWWWWWWOEEEEEEEEESSSSKKKKKKKKKKKKKNKKKIIIIIIIIIIIQQQQLLLLLLLLLVVVVVVVGGGGGG
EEEMMEEEEEEEKKKJJJJJJJJTTTTBZZZZZZWZZZDDDDDDDDDDUUBBEEEEEENNNWWWIWWWWWWWWETTEEEEEESSSSSKKKKKKKKKKKKKKKKKIIIIIIIIIIQQQLLLLLLLVAAVVVVVVJJJJJJG
EEMMMMMEEKKKKKKKJJJJJJJJTTTTZZZZZZWZGZDDDDDDDDDDDDBBEEEEEENNWWWWWWWWWWWWWETTEEEEEHSSSKKKKKKKKKKKKKKKKKKKIIIIIIIIIQQQQQQLLLVVVVVVVVVVVVAJJJJJ
EEMMMMMEEKKKKKKKJJJJJJJZZZZZZZZZZWWGGZDDDDDDDDDDDDBBBEEBBBNNBIIWWWWWWWWWWTTTEXEEEETSSSBBBBKKKKKKKKKKKKKIIIILLLIIQQQQQQQQLVVVVVVVVVVVVVAAJJJP
AAMMMMMKEKKKKKKJJJJJJJJZZZZZZZZZZWWWGDDDDDDDDDDDDDBBBBBBBBBBBIWWWWWWWWWJWTTTTEEETTTBBBBBBBKKKKKKKKKKKKKIBBLLLIIIIQQQQQQQQQVVVVVVVVVVVVAAJJJP
AAAMMMMKKKKKKJKJJJJJJJJZZZZZZZZZZWWWWDDDDDDDDDDDDDDBBBBBBBBBBIWWWWWWWWWWWTTTTEETTTTTBBBBBBBBKKKKKKKKKKKBBBBLLLLLQQQQQQQQQVVVVVVVVVVVVVVAJJJJ
AAAAAAMKKKKKJJKJJJJJJJJJZZZZZZZZZWWDDDDDDDDDDDDDDDBBBBBBBBBBBBJNWWWWWWWWWPTTTTTTTUTBBBBBBBBBBKKKKKKKKKKKBBBLLLLLQQQQQQTQQQQVVVVVVVVVVVAAAAJI
AATTTATKKKKKKJJJJJJJJJJJJJFZZZZZZWWWDDDDDDDDDDDDDBBBBBBBBBBBBNNNWWWWWWWWWPTTTTTTTUUBBBBBBBBBBKKKKKKKKKKKKBBLLLLLQQQQQQTQQQQVVVVVVVVVVRRAARRR
AATTTTTKTKKKJLJJJJJJJJJZZZZZZZZZZZZZDDDDDDDDDDDDBBBBBBBBBBBBBNNNWWNWWWWWPPPTTTTTTUUUABBBBBBBBBKBKKPPKKKKBBFLLLLLQQQQQQTTTTTYYVVVVVVVVRRRRRRR
TTTTTTTTTTKKJLJJJJJJJJJJJZZZWWZZZZZZDGDDDDDDDDBBBBBBBBBBBBBBBNNNNNNWWNJWEPPTPUUUUUUUUBBBBBBBBBBBBBBPKKKFBFFLLLTQQQQQTQOTTTTTYVVVVVVVVRRRRRRR
TTTTTTTTTTTJJJJJJJJJJJJJJWWZWWZZZZIIIIODDDDDDXSXBBBBBBBBBBBBBFNNNNNNNNNQPPPPPKURRRUUUBBBBBBBBBBBBBPPZKFFFFFLFTTQQQQQTTTTTTTTTTTTVVVVVVRRRRRR
TTTTTTTTTTTJJJJJRJJJJJJWWWWWWZZZZIIIIIDDDDDMMXXXBBBBBBBBBBNNNFNNNNNNNNNQQPPPPCRRRUUUBBBBBBBBBBBBBBBZZKFFFFFFFTQQQQTTTTTTTTTTTTTVVVVVVVVRRRRV
ETTTTTTTVTTJJWJJJJJJJWWWWWWWWZZZPIIIIIIDDDMMMMXXXXXBBBBBBBNNNNNNNNNNNNNNQPPPCCRRRRUUBBBBBBYBBBBBBZZZZZZFFFFFFFQQQEETTTTTTTTTTTTVVVVVVVVRRVVV
ETTTTTTTVVVVWWWJWWWJWWWWWWWWZZZZZIIIPIMMMDMMMXXXXXXXXBTBTNNNNNNNNNNNNNNNNPPPCCRCRCFFBBBBBBBBBTTTBZZZZZFFFFFFFGGQQETTTTTTTTTVTTPVVVVVVVVVVVVV
ETTTTTTTTVWWWWWWWWWWWWWWWWWWWWZZZWWWWWMMMMMMXXXXXXXXXTTTTTNNNNNNNNNNNNNNPPPPCCCCCCCBBBBBBTBBBTTTTTTZZZZFFFFFFGGGQQGTTTTTTBVVPPPPVVVVVVVVVVVV
EEETTTTTVVWXWWWWWWWWWWWWWWWWWZZZZWWWWMMMMMMMXXXXXXXXXXTTTTTTNNNNNNNNNNNNPPPPCCCCCCCBBBBTTTTTTTTTTTTZZZTTMTTFFGGGGGGTTBTTBBVVPVPPVVVVVVVVVVVV
EEETTTTMWWWWWWWWWWWWWWWWWWWWWWZZWWWWMMMMMMMMMMXXXXXXTTTTTTTTNNNNNNNNNNNNNAPPCCCCCCCCCXXTTTTTTTTTTTTZTTTTTTTGGGGGGGGGGTTTBVVVVVVVVVVVVVVVVVVV
EEETTTMMWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWMMMMMMXXXXXXXXXXXTTTTTTNNNNNNNNNNNNAPPCACXXXXXXXXTTTTTTTTTTTTTTTTTTTTGGGGGGGGGGGGTBVVVVVVVVVVVVVVVVVVV

2
data/13.ans Normal file
View File

@@ -0,0 +1,2 @@
35574
80882098756071

1279
data/13.in Normal file

File diff suppressed because it is too large Load Diff

2
data/14.ans Normal file
View File

@@ -0,0 +1,2 @@
228690000
7093

500
data/14.in Normal file
View File

@@ -0,0 +1,500 @@
p=26,88 v=80,92
p=2,90 v=77,99
p=43,54 v=-92,-36
p=96,14 v=-15,13
p=33,54 v=97,-64
p=94,53 v=55,67
p=45,28 v=79,6
p=64,90 v=-49,54
p=71,41 v=-9,67
p=15,37 v=58,-14
p=43,53 v=9,8
p=57,88 v=43,-55
p=37,96 v=-30,-69
p=35,54 v=-57,22
p=56,35 v=23,53
p=84,66 v=-94,75
p=15,30 v=-43,21
p=10,97 v=24,-99
p=88,63 v=21,-54
p=77,56 v=47,75
p=83,30 v=38,-38
p=95,97 v=-2,-91
p=7,32 v=-1,-42
p=62,84 v=-66,69
p=79,66 v=-48,-34
p=54,39 v=-12,21
p=87,9 v=-6,-39
p=66,101 v=-57,-87
p=47,83 v=-48,69
p=48,24 v=2,28
p=71,48 v=-14,-73
p=25,36 v=40,-66
p=10,12 v=-29,5
p=44,10 v=-79,-17
p=9,65 v=-7,-65
p=12,83 v=77,-85
p=70,38 v=-69,-19
p=60,38 v=-31,-15
p=98,20 v=7,-38
p=38,73 v=-61,33
p=34,32 v=-21,-96
p=48,44 v=-19,-34
p=26,49 v=-50,29
p=79,84 v=82,-93
p=50,43 v=41,57
p=9,76 v=-19,-80
p=81,20 v=25,36
p=18,19 v=45,-2
p=36,85 v=-34,89
p=38,16 v=63,75
p=45,31 v=-18,-78
p=7,42 v=-16,66
p=55,57 v=-77,-11
p=30,28 v=-43,-23
p=57,58 v=43,-49
p=36,57 v=97,-58
p=7,47 v=-64,-14
p=73,33 v=26,-48
p=52,48 v=7,-48
p=42,66 v=23,75
p=77,8 v=-28,-82
p=52,99 v=44,4
p=27,15 v=37,-3
p=72,57 v=65,53
p=59,85 v=69,-54
p=58,50 v=57,-95
p=54,73 v=-66,-19
p=54,64 v=31,-95
p=91,33 v=53,-43
p=67,2 v=-5,34
p=58,65 v=-31,38
p=65,93 v=62,17
p=68,59 v=-44,-42
p=9,27 v=-60,-99
p=4,73 v=77,-87
p=88,60 v=18,-20
p=82,9 v=-96,-9
p=99,39 v=-11,-24
p=23,18 v=-56,28
p=63,101 v=66,-48
p=4,63 v=-46,97
p=41,80 v=31,-49
p=21,25 v=45,36
p=89,43 v=-2,63
p=37,78 v=11,86
p=37,100 v=32,93
p=77,33 v=-94,29
p=25,34 v=-12,-81
p=31,87 v=-30,70
p=40,37 v=62,7
p=16,102 v=-82,4
p=98,45 v=-8,95
p=60,23 v=-53,-60
p=12,83 v=-8,19
p=49,8 v=-70,-39
p=38,27 v=25,-49
p=95,25 v=-59,28
p=42,56 v=18,-51
p=5,28 v=24,-73
p=92,73 v=7,33
p=41,27 v=88,80
p=78,16 v=18,3
p=11,80 v=99,62
p=100,56 v=46,98
p=97,47 v=20,8
p=27,6 v=-78,78
p=45,12 v=-48,-98
p=41,29 v=-44,-46
p=84,69 v=-76,-94
p=89,4 v=-70,-52
p=40,62 v=-60,72
p=62,26 v=40,-48
p=21,55 v=23,-87
p=80,45 v=-49,-82
p=28,100 v=23,49
p=67,38 v=6,-2
p=66,40 v=17,-44
p=72,32 v=-85,-28
p=53,60 v=35,-14
p=11,14 v=45,72
p=86,13 v=-36,49
p=65,88 v=-58,3
p=97,79 v=72,17
p=51,55 v=27,24
p=2,83 v=33,91
p=78,76 v=-31,-89
p=83,12 v=86,49
p=56,93 v=13,19
p=20,50 v=-38,45
p=46,6 v=58,17
p=48,40 v=66,-8
p=40,26 v=40,14
p=71,21 v=92,-59
p=5,67 v=59,-27
p=65,53 v=-62,44
p=14,83 v=69,75
p=95,35 v=-37,58
p=36,71 v=-57,-43
p=68,58 v=-97,37
p=45,75 v=66,61
p=25,22 v=-75,-66
p=38,8 v=-17,-83
p=32,8 v=-8,71
p=85,78 v=-44,54
p=48,64 v=53,-65
p=97,82 v=77,-78
p=10,32 v=99,-27
p=84,39 v=8,-21
p=83,58 v=74,75
p=67,65 v=48,-6
p=78,43 v=25,59
p=22,83 v=23,19
p=36,45 v=-65,-95
p=95,51 v=-32,-59
p=66,5 v=74,78
p=76,27 v=-42,52
p=99,64 v=75,-46
p=51,102 v=44,-25
p=97,14 v=-41,78
p=78,56 v=-76,1
p=77,12 v=-1,-97
p=58,1 v=13,34
p=5,28 v=68,-8
p=30,6 v=31,-83
p=11,91 v=78,-82
p=15,39 v=78,-26
p=32,58 v=84,-36
p=16,55 v=-36,75
p=100,96 v=16,42
p=89,28 v=-6,87
p=48,19 v=-57,21
p=42,50 v=-31,15
p=54,11 v=92,-24
p=77,98 v=-9,-33
p=71,36 v=2,60
p=18,44 v=-55,-66
p=26,16 v=-62,79
p=35,80 v=93,-41
p=90,30 v=29,-96
p=44,59 v=-26,-4
p=87,52 v=-43,89
p=91,39 v=3,-52
p=35,52 v=49,8
p=27,60 v=-12,-35
p=7,18 v=-53,-14
p=65,67 v=-32,91
p=13,6 v=19,93
p=94,28 v=35,33
p=22,29 v=-38,-78
p=91,59 v=26,-39
p=84,43 v=-76,67
p=29,102 v=-8,-99
p=84,92 v=-46,-36
p=56,10 v=-88,20
p=88,81 v=16,63
p=19,20 v=-41,79
p=43,54 v=48,59
p=11,0 v=28,-61
p=4,40 v=-94,-82
p=38,101 v=-18,55
p=88,18 v=-2,8
p=13,19 v=28,21
p=29,11 v=6,-69
p=76,91 v=16,49
p=74,29 v=78,74
p=45,53 v=58,-80
p=86,11 v=94,1
p=65,59 v=-14,-6
p=60,62 v=98,64
p=57,3 v=48,-32
p=46,48 v=83,15
p=54,78 v=58,-63
p=91,35 v=-19,-74
p=36,83 v=55,-11
p=67,53 v=63,-20
p=20,86 v=-25,63
p=37,7 v=-30,79
p=42,7 v=75,-54
p=76,73 v=14,1
p=34,57 v=1,-21
p=31,76 v=79,-44
p=53,93 v=26,35
p=60,65 v=-97,-42
p=99,102 v=-46,-55
p=65,1 v=-32,-25
p=86,14 v=60,-61
p=9,95 v=85,-39
p=63,86 v=-95,95
p=4,93 v=94,92
p=7,81 v=99,-40
p=28,0 v=28,5
p=52,41 v=-2,7
p=14,64 v=-16,-57
p=22,78 v=-56,54
p=44,98 v=-88,45
p=52,72 v=22,-79
p=63,35 v=13,-52
p=62,64 v=-62,39
p=10,53 v=67,31
p=16,100 v=-69,-63
p=17,47 v=92,-56
p=86,22 v=69,94
p=49,37 v=-79,95
p=92,96 v=-50,48
p=54,5 v=-48,70
p=67,12 v=-76,34
p=10,10 v=73,34
p=100,4 v=6,72
p=1,32 v=-90,37
p=33,22 v=-8,14
p=10,96 v=94,-9
p=84,95 v=-19,-25
p=42,27 v=66,-60
p=67,91 v=-76,11
p=21,23 v=-95,50
p=53,24 v=-57,-97
p=19,1 v=47,-62
p=84,59 v=-5,-2
p=10,35 v=37,-88
p=56,76 v=-92,-33
p=92,83 v=16,62
p=6,97 v=72,11
p=65,29 v=4,-82
p=37,52 v=4,29
p=78,53 v=39,74
p=100,50 v=83,-3
p=43,48 v=-61,8
p=78,102 v=-22,-99
p=89,73 v=25,2
p=91,86 v=7,48
p=88,37 v=-45,20
p=80,91 v=81,32
p=6,6 v=24,-83
p=86,57 v=3,-14
p=16,12 v=32,-76
p=46,53 v=-67,47
p=79,11 v=-54,64
p=87,99 v=-35,-7
p=8,34 v=-37,-75
p=73,61 v=-70,13
p=38,2 v=-84,40
p=92,23 v=9,25
p=35,60 v=-25,31
p=72,9 v=16,27
p=9,33 v=-7,-31
p=98,17 v=50,28
p=62,15 v=34,-54
p=72,4 v=21,86
p=46,53 v=-39,61
p=80,58 v=84,-86
p=83,88 v=-86,29
p=2,38 v=62,-38
p=70,61 v=23,-97
p=100,77 v=-64,-72
p=27,45 v=58,-14
p=25,3 v=40,72
p=73,102 v=-74,34
p=80,63 v=-58,-56
p=50,52 v=53,-7
p=33,82 v=19,99
p=28,15 v=-52,57
p=66,43 v=-54,-6
p=44,40 v=-56,63
p=31,12 v=36,65
p=3,41 v=-99,52
p=35,87 v=-4,-86
p=79,84 v=-67,99
p=88,22 v=16,-2
p=71,85 v=92,70
p=96,60 v=76,98
p=38,48 v=14,-7
p=86,15 v=-33,-75
p=75,57 v=66,-85
p=85,68 v=-19,-27
p=46,95 v=75,48
p=14,71 v=32,1
p=74,71 v=-54,-95
p=11,12 v=-64,13
p=17,37 v=81,53
p=2,15 v=23,-3
p=9,75 v=-39,47
p=46,70 v=44,-34
p=86,48 v=-15,-98
p=32,45 v=62,81
p=22,3 v=59,94
p=24,81 v=-82,25
p=85,11 v=-3,-32
p=96,86 v=20,39
p=43,2 v=62,42
p=45,98 v=-26,-54
p=51,16 v=92,-53
p=77,13 v=-45,-61
p=58,54 v=-44,30
p=52,3 v=-49,-33
p=28,76 v=-12,-64
p=45,38 v=-53,34
p=11,28 v=85,-67
p=29,88 v=90,4
p=44,102 v=-21,17
p=15,37 v=94,66
p=73,32 v=30,80
p=65,86 v=-19,-21
p=34,64 v=-26,16
p=60,2 v=-18,78
p=39,0 v=-34,94
p=28,15 v=32,-93
p=8,100 v=98,40
p=62,62 v=48,60
p=37,44 v=25,10
p=39,72 v=-96,91
p=84,33 v=93,18
p=81,44 v=69,52
p=37,22 v=89,-48
p=0,42 v=-63,-36
p=35,42 v=-17,-22
p=90,39 v=-76,-30
p=55,74 v=-22,-92
p=1,55 v=-64,-86
p=60,23 v=-9,-97
p=21,4 v=-91,64
p=90,72 v=56,95
p=35,41 v=58,22
p=57,81 v=-9,-96
p=11,102 v=-73,-17
p=45,58 v=-43,52
p=43,25 v=48,-37
p=78,12 v=12,42
p=48,43 v=79,-29
p=31,100 v=-30,-54
p=24,63 v=-61,28
p=44,67 v=-35,-94
p=100,49 v=-98,-52
p=29,54 v=41,-64
p=29,33 v=50,44
p=22,40 v=-47,8
p=56,67 v=-5,75
p=78,95 v=78,-48
p=58,72 v=-48,-65
p=6,94 v=90,9
p=76,58 v=12,-80
p=68,62 v=-58,61
p=62,85 v=57,91
p=16,88 v=94,-5
p=72,0 v=-74,-91
p=0,75 v=11,-93
p=48,42 v=92,-6
p=24,102 v=68,-78
p=21,86 v=-56,25
p=3,63 v=-11,-43
p=36,102 v=14,-4
p=56,52 v=4,-58
p=5,55 v=-1,84
p=92,1 v=-94,-84
p=27,50 v=54,-88
p=80,91 v=-76,33
p=50,19 v=9,87
p=69,37 v=-58,-8
p=34,63 v=14,61
p=17,52 v=19,37
p=93,65 v=-15,46
p=37,15 v=-13,56
p=100,63 v=-68,17
p=41,81 v=97,-92
p=62,17 v=-72,13
p=0,16 v=-77,-31
p=14,17 v=41,28
p=27,34 v=58,-74
p=35,40 v=14,21
p=8,88 v=-24,98
p=35,28 v=-94,46
p=93,42 v=-59,22
p=83,26 v=-11,1
p=2,22 v=-42,65
p=35,102 v=-25,-4
p=21,22 v=41,-81
p=35,0 v=5,41
p=70,99 v=74,34
p=75,28 v=4,81
p=11,91 v=-56,33
p=16,52 v=65,-38
p=55,14 v=-66,78
p=39,68 v=-71,7
p=25,53 v=-56,-29
p=70,42 v=-33,-35
p=40,81 v=-70,47
p=15,78 v=-82,26
p=85,97 v=51,-33
p=78,72 v=43,-48
p=92,60 v=-77,10
p=55,65 v=-14,-79
p=46,45 v=92,-72
p=15,54 v=-3,-51
p=65,2 v=-80,-70
p=73,30 v=78,-74
p=23,12 v=-64,-98
p=85,3 v=-68,-11
p=30,69 v=-21,69
p=57,38 v=-18,37
p=11,88 v=-82,-19
p=55,101 v=-54,44
p=68,56 v=57,-65
p=4,81 v=-12,92
p=43,70 v=62,-27
p=42,25 v=-31,13
p=0,61 v=-16,-64
p=45,25 v=31,-82
p=23,75 v=-47,92
p=57,33 v=-30,25
p=0,34 v=-94,-36
p=78,57 v=34,-43
p=67,99 v=-22,4
p=3,46 v=-99,8
p=44,28 v=80,-66
p=84,60 v=72,18
p=51,66 v=-88,67
p=38,7 v=-61,-47
p=34,23 v=40,-88
p=66,46 v=83,-81
p=73,98 v=51,33
p=37,56 v=62,81
p=30,98 v=28,58
p=71,99 v=38,62
p=64,7 v=52,86
p=26,53 v=-12,89
p=87,50 v=43,-29
p=65,101 v=87,-96
p=34,52 v=-21,66
p=14,84 v=-60,3
p=4,7 v=-50,49
p=45,73 v=-17,-64
p=18,92 v=-29,40
p=83,54 v=2,-64
p=95,26 v=60,50
p=86,80 v=95,25
p=5,52 v=-25,15
p=99,98 v=-46,77
p=81,52 v=25,9
p=53,89 v=-54,-83
p=60,36 v=92,73
p=78,27 v=7,15
p=55,51 v=-63,-74
p=5,85 v=-56,-97
p=26,17 v=6,46
p=37,36 v=-67,51
p=69,52 v=96,67
p=24,86 v=-11,35
p=44,1 v=-21,26
p=55,95 v=61,-33
p=75,101 v=65,-3
p=16,17 v=-29,29
p=80,69 v=12,68
p=78,61 v=-11,-7
p=99,99 v=11,-62
p=41,47 v=47,-86
p=52,81 v=31,54
p=86,60 v=-37,16
p=15,89 v=-43,-18
p=72,99 v=12,26
p=42,15 v=-13,-47
p=37,79 v=-41,70

2
data/15.ans Normal file
View File

@@ -0,0 +1,2 @@
1294459
1319212

71
data/15.in Normal file
View File

@@ -0,0 +1,71 @@
##################################################
#O..OOO.O.....#O...OO.O...#O...##....O.O..OOO#.O.#
#....O.O..O.........O...O.......O....#.O.O.#...O##
#O..O..OO.O.O.........#O..O...O.....#...OO...O...#
#...O.#.O..#.O..OO...OO..O....O#......O...O......#
#...........OO....OOOOO.OO.OOOO...O...OO....#.O.O#
#..O.#..OO...O.O#OOOO.O.O....OO.....O.O......#.OO#
#O........O...O.....O.....#.O..O.......#..O.#...O#
#...........O..#.#.....#......O.....O..O....OOO..#
#O...O...OO...O.OO....O#O...OO.O......OO..OO...O.#
#...O#...OO....OO..........OOOO.O.OO.O#.O....OO..#
#..O..O.OO.OO.OOOOO....O..O..OO....O..OO....#..#.#
#..O.O.O#..OOO....#..O.O.#O#..O.O.....OO#O.O.OO###
#....O..#.....OO.O.O......O.....O..OO.O...O.....O#
#O.#O..........O..O.....O....O.OO...O....O..#..#.#
#........OO...........O#O...O...O.O.......O.....O#
#.........#....OOO...O.......OOO#.......OO....O.O#
#OO..........O.O....O..O....O...#O.O....O.....O#.#
#.....O.O.#O#..#.OOO.O..#OO..OO.....#.O......O...#
##.O.O.OO.OOO....#OOO.#...O...O.O...OO.......O.O##
#O..OO..#..O...OO.OO..O..#.#.O..O.#O..O.O....OO..#
#.O.O...O.....O.....OOO.......OO.O...O.#.#O..O.OO#
#OO.O.OOO..O.O..O.O..O..O....O...O...#OO.O.......#
#.O.....O.....O#O.#..O.......OOO.....#...O.O.....#
#O..O.......#.#..#...O..@.O..OOOO..O.....O.OOO...#
#OO........#OO.....O.O.#...O..O..#.O...O#.O#.....#
#.OO..#...OO..O........#.#.O#..O........OO.O..O.O#
#.O....#.O.O.#....OO.....#.O.O.O#.O.O..##.....O.##
#......O..O....O.....O.O.#O.O......#O...O#OO.#..##
#....OOO.O.OO..............O##...O#O......O....O.#
#O.....#.O......#..#....O#O.....O..O.#.O..#O.....#
#...........OO....O.....O#......OO.#OO..O........#
#O..#OO.....OO.....OO.....O........O.............#
#...O.O.O.....O...O.O.O.........O.#...O....O.O.#.#
#OOO.O#..#......O...O.O##O..O......#.#O..O.......#
#................O.#.......O.O.#....#.OO...#.....#
#....O....O#OO...O..O...#O...O....O.O###O#O.OO...#
#OO..O.O...O.......O#.O....OO.......#O#.O..OO..#O#
#...O.O...OOO..O......O....O......##.#.O.......O.#
#....O..O..O.........O#...........O.O.O...O.#....#
#..#..O.#.....#..O...#.#...O..OO...............OO#
#......OO#O.OO.......#......OO........O#.....OOOO#
#..OO.#.....#.O.O.O..OO.O#O.O..OOO#O....O....#...#
#...O......O.......O..O.OO...#........O..........#
#...O....O....O...........OO#.O......#..#O..O...O#
#....O#..O#.#....O....#.O...OO.O..#...O#........O#
#...O.##....O.O..O..........O.O..OO.#O#...#O..O..#
#.O.O#O##.O.O.....OOOO..##.O..#...O.O..O........O#
#.....O..#....#.........OO...........#.#.O....O.##
##################################################
v><<vv^^v<vv>^<<>v>^<<>v>^<^<><<>><<>v^>><<<v>^<^v<>^v^>>v^v><>>^v<^>^^^^<vv^<>^^>v<^<>^<^>^v<<v>v^>vv<v^^<^>^^^<^>>>^>v^^^v<>>><>vv^<><vv<v><>v>^^>>>>^>><<v<><<<<^^>><^v<^^>v<>^>^v<>>>v>^<<^>^vv^<<vv<^^^v^>^>v>^<>vv<<^>v^v<>v^v>>^^v>^^v^v<<<v^>>><>>>v^v>vv>>^^<^^vv<^<>>>vv<<^<>v><^<vvv>^^^><vv<<vvv<<^>v<<<v>v^>>>^<>v><v<v^^>>^^<^v<>>><<<^><v<^v>><<>^^<v>><<^<>v<>^^^<>^<v<<<^<v>v>v<vvv>>v<v^>>^>v><<>>vv^>^v>><v^>><<<^>>>>><>^<v<<><<<<<<v>^><>>>^^>v<^<v<<vvv^>^<>^>>>v><><v<<<v<<><v<v<<>^^<v^v^>^vv^v>v<v^^^^v^<<>>^^^v>>>^v<^v<<<<v<>^<>^>>^v<^>><>^>^>>v^>vvvvv><<vv^>^v><<><v<^v^<^<v><v<<^<>^<<v<>v^^<<>>><<<v^^^^<^>^^vv>^><^<^>v^^v^^<v^>vv^vv>v>^v^^<v><^<<<v<v^v><>v<>^<<v<<<^>vv<v^^>>vv<<^<>>>^^>>>^vv<v><>v<<>^>v<v<>^v^^^v>^v^v<^<><^v^><>v^>^<v>>>><<<^<vv><<><v<v<^<v<>v>^v<^v<<v>>v^^^^>^v<v<^>><>><v>>>^<^<<><<v^<^v<>^vv>>><^<>v^<v^vv^>v<><^^^^<<^<><v>v^>>>^^v^v^<<<^><^^vv^<^>^vvv>>^<<^^<^v>><><^>vvv>>><^>>^<v<<<v^<^v<^><>vvvv<>vv<^<v^<>^v>^^v<>v><>>^<<v><v<vv^^<<<>>v^<v<<>><^>vv^>^^>v^v^v<
>v^^<<>^^><<v<<vvv^>^^^v^v<>v<v>^v^^vv^v>>v<>>^><<^<v>>>^^^^vv<v<<<<>^<<<^vv>vv^><><vv>v>v>>v>^v>>v^v>v><^>>v><><v<>^v<^>^>><>^>vv>^<<v<>^<^^<<>^><<<<^>>v<^>^v<<<^^v^><v<^>><v><>^^>v<^v<v>^>><<<<^<<^^vv<^<v<<>>v>v<^^<<v^vv<<>v^>^<^>vvv<^^^v<<^<v><>>>vv^>>vv<v^>^^>>>v>^vvv^><v<>>>^><^>^>v>^v<v<<<v><^vv>^v<v^>v<v^^v<v<>^vv^<<^^v<<v>vvvvv<>^^<v>v<^vv^v^>^vv^>>><vv^<<^>v^vvvv<<><<<vv<><<v<vv<v^v<^>>^><><^>^v<<^v>^<<>^^vv><<v>>v>v<v>^<v^>^<^v>v^>v>v^^><v<^<^v<<v>vv>v<><>^<<^>v<^>><<><vvvvv^v^<>><<^v<>v<v^^v><<>^^v<<>v^>^<v>>^v^^><<^>>><<^<><v^^<^><<<><vv>^v>v<vv<>^v<^<vv^>^v<<v>v<v<v>^><^<<<<<<v><v^<v^>v<<vvv>>><<^v^^><>><<<<<^<>^^vv^>>>vv^vv^^<^^<vv^<^>>^>>vv<v^^<<><^v^<<>vvv^^v<vv<^^><^><>>v>v><>>><>^v<<vv^><^>>^v<^v<<^^vv<>><v>v<<>vv>>>><>><^^^v<^v^^vv<v>>^>^<v>><>vvvv<v>^^<^^v<<<>^>^vv>v<<<v^><<v^v^>v>><v^>^v^>v<>^^<<>><<>v>>^>>^v>^>^vv>>^<><v<<v^<v^<^<>^v<^^<v>>^>v^v<vvvvv^v>>>^^<v^>^<<v^^v>^v^<><>vv<^>vvv<^><^>v^v<^><^^<^v>^<v^v<><>v^>v<v<>^>v<v^^<v^^>^><>^>>>><^<>vv<>vvvv><^v^^<^<<vv
^^^>vv><>>v<><v^>v>v^v<<<^v<^^><><>v><^>v>v^<<<^>^^^^<^^>^^v>v<>^>^>><^>>>v>v<<<<>v><^^^vv><><<^vvv<<<^<v^^<>^v><><^>v^v^vv<<v^v^^^^^^^>>><v><v<v<v^<<v^v<><vvvv^><>>^><^<v>vv^v<>^vv^^v^^^vv>>v<v<^v<^^v>^^<>^<^<^<>^<v><><<>vv<<v^><^^vv<v<<<^<^>^><vv<>^<>vvv<><vv>^^^v^<><^^^vv^v^<<<v><^^v^<>^^<<<^<><>^^^^>^^<^>^vvv^^<<^>v^^^>>>^>>v<v^^^>>v>>v>^><vv^<v>vv<^><<<>vv^^^<^^^^^><<>>^>^v<>>^>vv>>v><v^^vv>^^<>^<<<v>^^<<<<>>^>vv<v>><><^v<^>^>^v>^v^>>>v<v<<^>v<><v^v>>vvv<>>v<v^^^>^<><vvv<<<vv<^v^<^vvv<^^<^^>v^>^<v<>>^v^>v>>><v^^><<v>v<>^v><<^><>v<>>^^^>v<<<^>>><>v>v<>>>v>^>v<^>^>^^^<^>v>^^>^v>vv<<<v><^v^^>^><>^><^><>><<>>>^<<>v<v><>^v^^v^><v>><v<^<<v>><<<^^<<v<v<>^v^<<<v^^^<<>^<<><vv<v>>^vv>^vv^><<^><v>^vvv^<^v>^>^<v<<<^vv<<v<v^^v^^^v^vv><<^^vvv<><>vvv>v<^v^<vvv<<<^^v><v^^<>vvv<>>v^<v^<^^^v>^^v<<vv^>^<v>^<^^>^>^v>>><v<^>><^<^v>v^>v^>>>v><vv<<<v<^>v>>^<<><>^<vvv>^^<^^>v>^><>>>>><<v>>v<vv<<><^<><^<>^v>^>^>v^v>v>^<^v><<v>>v^>v<><^<^^^><>v^><<<v^^><^>v<^>>>^><<>v<^>^vv<<>>v^v><>v<>^<<>^vv>^>v^<^vv<<<>
<<v^v>>>^<v^^>>>^><^^>v>>>^v><v<<v>><^<<v><<^<><v^><<^vv<<>>>^v<v<^v^^>v>v^v^<^>><<<><><^>>><v<<<<>^>>^<<<<<>^v<>v<^v^>>>><>v<^^v^^v<<>>^^>^^^<^<<^<v><<v<v><v<>><v>^^^^vv^v>v<vv>v<v^>v^<<><>vv^^^^>v^><<^^^^v<>>^<vvvv^vv^>v^^^<^>v<v^<<<^>^<^^><>v>><v>^<v<>v<^^v^v^^<>>><<<<v<v<^^vv^v^<>v>^<v>vv>vvv^^<<^>v<<v><^<v^^<<v><^^<<>^^^v^v>^^^v^v>v^<>^<^^vv>^^^>^^^<^>^v^vv><^v^<^v><<>>>vvv>^vv<>^>>v^^^vv<^<>v^^^v>><>>vvv^v<vv^^><^^vv<v<v>v><^^><<v^><^>><vv>v>^v^v<>^vv>^><<v^>^>^>^>^>^<<>><^>v<^>^v>v^>v^v<<<<^>^>^v<<<<><v><>^>v>v>vvv>>><>vv<<<<<vv<v>v>vv^<<^v><><^>>><<>v>v<^<<>>^><<><>^><^v^^<vvvv^^^>v><<vvv<<>v^^^^vv><<<<><>^>^<>^><^<<^>>>^^^>^^^v^^>v^^vv><^<>>v^>v^^v^^^^<>^v><>>^v^>>^^>^>><v^>^v^v^>>>^^^<>><v<<^<^v<v<vvvv<v>^<v<^vv^<^>^^>v<><^>><>^v>>v>>^>^v^v><>>>v>^>^^vv^<v^>v^v>^>^<><v<v^<v>vv<^<^><^v>^^^<>v<>><<>><><>^^<><<<<<vvvvv^v<^v^>v<><<vvv>>^<<<vv^<<v<<v>>^^^<<vv<>>^<><>vv>v^^^^^><^<<v<^>>^^v<>^v^v^<>v^><v^<^<vv<vv<<v><<^vv^v<<^^>>^^><vvv<><><^v>>v^^<<v<><<>^^<^^<>^v<v^<^^^>vvvv><v<^>
vv>^<>>^<^v^^^v>vvvv<<^^<v>v>^v^v<<>>^>>vvv^^<v^vv^v^v^v><vv^^^<>v>^^>><^><v><^^<^v^v^^<>>v^>v>>^^^^<<<^vv>>v>>v<v^^<>^vv>>v^^v><<^^^>vvv<>v<^^>^>^^><<>><<<<>v<><v^v>><^<^><^v^<v^>>v><^><>v^^<><^^<v<vv<>^<<<<>^<^<vv>><^><<<v>>>^<<>>v<<<<><>^<^^v><<v<vv^>^>vv^v<>>v>v^>>^v<^v>><v<>v<^^^^^<^^^^<v^vv<^<><>v<v^v>v>v^>^^>^^<>>v^v^><>vv<^^^^v^^^><^vv>v^<^><>^^v^>>^^>>v<<v^v><vv^>^vvv<><v>><vvv^>><<>><<v<v^^>v>><^>vvv^^^^<>vvvv^v<^>^<>^><<<<<>^<^v>vv^^>>v>>>>>>v^>v<>>v>v>^v>v<v>^^>>v>>>>v<^<^v<v><vv<<^^<><vv^v<v>^^^>>>>vv<>^v<<><>>^v^>vvv<<>>v<v>>v<>^<>^<vvv>><<<v>^>><<^<vv^>>>>^^v^>>><^<vv<<<v^><<v<>v^^vvvvv^>v^v<^^^v^^<<v<v^v^>^<<>v^^^v^>vv>^>^<><<^><^<>v>v^^<<<^v>v<^<>^<<v>>^<>v<^>>><vvvv^>vv><>>v><>^<<>>v<v<<v^>><^<^^vv><<>v><^<><^v<>^>^^^<vv>^v<^v^^vv<v>^^>^><v^^>^<^<^v<<^<vvv^<v>>^<<v<<<><<<v><>^<>^<^v<^^<>vv>vv^<>vv<^v<^<^^><vv>v>^><^>>^v><^v^><>v>^>^^vv>vv<<<<<v^v^v^>>^>^<<v<^v^<v>v>>>v>>vv>>^<<>^v><<><vv><>v>>><<v^><<>>^>v<<<^<><<v<v>^>v^v^>><<<v>^^>^>v^^>>^v>><^^v>vv^>v>v>v>^^<^>v>><
>v^>vv<^vv<v>vv><>^<>>>>v<v<><v>>v>>^<v^><>^^^v^>vv^^>^v<<^vvv^<>>^vv<>^v<v^>^vv>>^>>^>><^vv>vv<<<v><>v<^^<v>^<^v<<^v<^>><^^vv<vv><><^^<>^^v<><^>>><><<^<^<^<>>vvvv<>^>v<^<>^>>v^><v^><<>><>v<v^<vv>><^<v><^<<>>><>vv>^v<<><v<>^>>>v<^^><^v<v<^>^v><<^^<v>>^v>v<v>^>^>^vv<^^v^^<^^>><^>>^<<vv<>^><v^>^^>>>^<>><^^<^<<v>v<^^^v<>>vv>vv<v^v>^<^>>v>>^<<^<<<<v<<>^v<>>v<<^^v>><^<<^>>v^<^v><<>^v<>v>^>>^v<>>^>^<<^><>>>^<>^v>^v^<v>>^<^^^v>><><v^v>>^^>>vv>v><^>^^^v><vv<^>>^v^<^>v><^>v<<^^<<v>>v>v^^v^<v<v><^>>><v^>>^v>>v>v<^<>^<<>v<vv<^^v<>v<vv><<<><^^<v><>vv<>>vv^<^<>>v^>v<>^>><<^v<><^>>><><^>^><>>>v<^<^v>>><^>v<v<v^>^^v>v^<v>^><^^>^>v<v^>>v><>><^v^>v>>>><>^^v>><^<>v>^<>>vv^v>^v^><v^v^>^v><>v>>><^^>v^<^v<^>>^>^><><^<^>^><<>><^v><v>^>>>v><<><^v>^<vv><v<v>^>v<v<v^^^>v^><>v>v>v><^v>>^v>>><^^^<^<<>v^^>vv^<<><vv^<><>>^vv>v<><v>vv<><^>^>><><v>v<>v>^v^<vv>^>>><>v<<^<vv>v^<<^><>^v<v>v^>>^>^>^<<<v^v^v<vv<^^>^<>v<v^>>>><<^<v>^v<^>^>v^v<<<<<>>>^>v^>>><<>>^^^>v><><vvv><^>>^vv<<>^<^^v^^vv>v><v><v>^<>^>>>v<^^<vvvv>>>^<
v<<^<v><^v<v>vvvv>v<<v<^v><vvvv>^<^<^>vvv<>^^<><^<^^>vv^<v^<<^<^^v<v>>v>^>>^v<^vv^v^>^v^v>vv><><vvv<><^v>>v<<^v<v>v<<v^<^<<^>v^v>>^>>^v^<^><^<v<<v<>vvvvv<>^<^<>>>^^>vv^<<<^>><^<^>^^<<<<v^><<<<^>^^<<<>>>^>><>v>^v^^<^^>vv><vvv>^v<<<>>v<>v^v>><^^<vv<>^^<>>>>^v<<v^^^^vv^><<^^^>^v^<<v>^^v>vv><<v>>>v^v>>v<^v<v><vv<^vv><<>>^>^^><>^>><>>v^vv<vv^<<<vv<v>><v^^>vv<^>^<^<<<>^<^>^^>vv<v<v<<^<>v^v<><vv<<^vv<<v>^v>v^v><v^vv^<>v<^<<v<<><>^^<<<>v^<<>v<^vv^>^^<v^><>v>v<<v>v<<v>^<vv<^v^>>>>v^v<v^^<v>>>>v><^>v^vv><v^^>v<^>>^^vv<v^><v<>>^v^<<<vvvv^>v<<^<<^^v^v>vv>v>^>v<v^>vvv<<<>^vvvv<^vvv>^<v^><<>vvv<>v^>v^<>^>><^v<v^^vvvv>>^v><^^v>v<><vvv><<>^v^<>><^><^>^<<vv^<<<vv<v<>v^^^v><^><^v<<v><>v<^><<v^><><>^v>vvv<<v>><<v>>v<<v<<>v^<v^<>v>vv><>v<v<>^^^<<<>^><<v>v>><^v>>>^>v<v^<<^>^<<>^v^^vv<<<>vv>>^><v<<>><vv^>>^<^<>v^^<v<<^>^<><>v>>^v>^vv^>><>>>^^v^>>>^>^><<v>>^>v^>>><v^>>vv^v^>>vv<><>^>vv^^>vv>>v^><>>v^><>^^<vv^^^>vvv^>v<>><<>^v<<>^v^>><<<^v>^v>^vv<>><^v<><v^vv<>^v<<<v>>v>^<v^v>v<<^v<><^^<^vv^<>^<^^<^<<>><vv<^<
^>>^>>^<<<^>^><<v^>>^>v>><v>v<v>v<^<^v<<^<>v<>>>><<<vv^v^^^^>^v>>^<<<^^><>v<><>v>v<>^<v<<^v>>>><vvvvvv<><<><vv>>><^vv>^^vv>v><^^^v^>><>^<v^v>v>>v>><>>v<^^vvvvv^^v^<>^v><v^>><<^>^v^<<>>>>>v>>>>^^^^^^v<^<v^<vv^><vv^^^>v><v^<><<^^>^^v^<<v>v^vv<^<<<>^^>v>><^>><<^>^v<<><^<<>v^v<^^^<^<>^<v<^^>^v><>vv>>v^^>>>^<v>>v<>><^v^><<>>><<>^^^<v<<<><<<v<^v^<<v<^>^v^^<^v>^vv<>>v><^v^>^>><>>^v>^>v^<<>>^<<<<><>^>^vvv<<^^^^v<<v^v<^<<><v<v^>><>^<^^<<<><>^^^^^v>>vv^v<^^<^<v<<v^<>vv^<<<^>v<>v>v>>>^<>^vv>^v<<<^^>^<^^vv<>>>v<vv<vv<>^>^>>>v>>^^<<vv^<<^vv<^><>^><^<<v<><^<<<>^v^<>v^<vvv>^<^^<<v<v^<>^<>v^^>^>vvv<>><<^>^>>vvv<v><^<^<>><>^^<v>^v^vv>vv^>vvvv>>vvv^><>v^v<<>>>^^>^vv<^^<<>v><v><<^>>v>><vv>^>vv>v^^>^><<<<><v>^^<v<>^<^>>>>>^<>^<<<v>^<<<v<^<<<>>v>^v>>v><<^^<v>v>v^><v>^>v<^<<v<^<^<vvvv>>vv<v<v>v<^>v<^v<>v^>v^v^^<>^>^^<>>>^<>^>vv><>>^<^<v^v^>^<^v><<<>>v>v^^^><>>v>^v>><v><^v^v>v<vv><v<<>v^>>v^><^<<^v<^>^<v>>vv<><<^<<vv^>^<<>><>v^<v<<<>vvv^^vv><>><<>^>v^><<>^^><^v<>><<<>><>^vv<^><vvv>v>v<v<^^v>^vv^<<^>^>v>v>vv>
>^<v>^^^^>>>>^<<>v^^^v<><>>v^^<<<<^>v^>>v^<>^<>><<v^<v^>^^vv<>^<^>>v><>^v^^><^>>^<<<^^>^v<^^><v<>v>^>vv<^vv>>vv<^v>^<><v^v<<>>>^^<>><^<<v^v^v>^><^<>><v^v>^vvvv><<v<^<><^^^v^>>v<><<<><vv>vvvvvv^><<><^<vv<^>>>v<<v<^^>>vv<<<^>^>v<^v<^><^vvv<^v^v^^v^<<><<><<v^<^>vvv^v<>^^v^v^^v>>>^v<vv>^^>^>^^^>v^<^v^^<>vv^v^^v>^><v^^v<vv>vv><v^v>v<>vv^<^<^^v^<v>v>>v<^><<<v<><<^>^><v^<^vvv>^v>v>v<v<vv^<v>><v^vv>><<^^<<<v<v>^v^><^>>>><^>vv^>><>vv><<^>vvv>^>vv>>^^>vvvv><><<><^vv<>v^><v^v<vv>>vv<<<<<^^^<^>^<><v>^<^^v><>^v><>><>v<>>>v<v^<><>^<><<^v^^>^>><><<^<>>>vv<>^^vv^<v><v<<^^<^>^^<>^>>>v>v^^^>^v<><<>v^>v>^>vv^v>v>v>^^v<<<<^<^><^<<><^^^^^^>v^<^>v><>v><^^>><^><>v<<vv>^>^vv>><<<>v>><^^v<<><>^v<>vv^^<><<v<>>^v<^><<^v^vv^v>^^>>>^<^v><^^><^^v>v>><<><^v^^>><^v>v>v^<<<v<v<<vv^v<^><v>>vv><<>^^>^<^<^<>v<>v<vvvvvv<<^<>>v^^>^>>^><><><v>^>v^<^v<>>v<>v^<>v>>^>^v^<^^<v^^v^^v>^<^v>>>>vv^<v<^>^^vvv>>^<<v>^<><>>v>^>>^v^^>^v><>^<<^^<v^<<^>^<^v^>><><^>^>v^v^>^>^<<<^<^v>v<>v<v<^<>>^<><<^<v<v<v^<>^^>v<^^v^>^vvvv>vv<^>^v^<v^<><
>^^v>v<>>v^v><^<vv<>>v>><><>v<^^><>v^^<>v^<><v>>^<v^<>v^<>>^<><^<><v^^^^^<<^v>^><^>^v>v<<>>>><v>^><vv^<^v^^<<<<v><<><v>>>><>^<v<<<v<>^<^v><^^^^v^vv<^<>^<<><v^>^<<^v^v<^<<<vv^<>v<^><>v^>>v^v^>>^^^>^>^>^<<><>^v^v>^^v<v<<v<>^v>v<vv^vv^<^<v<<>>vv^<vv<^<^v<v<>>^>^^^v>^>><^<^^<^<<^<vv<^vv><<<^v<^><>^>^vv<<>vv<<v<<><<vv<^><^v^^<v<>^v>>v<v^<v<v>^^v<^^^^^>v>^v>^<v>vv^><><^>>v^v><<v<^v<><^v<^<^>vvv^><^^v>vvv>v<v<^vvvv>>>^><>>^^^>^v^^^vvvv<vv>v<v>^^^^v<v^vv>v<v^<^<<^<^^vv^<^v<>^v<<>^>^v<v<><vv<v^v<v<v<<^<<>^^<v<^><>v>^^^^v>^<v^v^v<^><>^><<^>><^><v^>v<^>v>^v<^^>^<^><^>>v<v>^^<^^vv<>vv<<>v<<^<><>^v>^>^^>v<v>v^^v>><>v<<vv<v^^^>^v>v<>^<v><<^<<vv>vv>v<v^^>^>>vv<v^v^><^>^^>v>>v^>^<v>^^<v<><^v<>>^<<>><^<^^vvvv^><<^^^^<v^v>v>>vv>v<>^vvvvvv<^>^>>>vv>vv<<<<<>>>^<^>v<^^^v<v>v^v^v>v^<^<v>vvv^><>vv>>vv>^^>^>^>v^^^^v^v>><v^v<<v<v<<^vv^<>^^<><<^vv^>>v^^^>>v><><>^<^^^v<v<^v<>^<<^>vv^>^^>v^<<v^v^v<vv>v>vv^^v^^>>>><<<<v<v^<>vvv><><<<>v<<^>v<^vv<<vv<><^v<>v^><>>>^^^v>^<<<>>>^<<^v><<<>>>><^^<<<<<v><<v><vvv^^>^>vv^vv
v><><vv><><^v<^<>v>^v>><<^^^<<>^<^^<v<>>v<<<>><<><v><>vv<<^<^^v^^^^<<^^^v^v^^v>^v<^^<<^^>vvv>>^<>>>^^^><v>^v>v><>^^>vv^<v^<<><>v>v<<^^>^^><vv<v^<>>><>>^^vv<><<<^<v^<vv^<<<>vvvvvvv>^<<v<^><^<>vv>>vvv^v^vv<><>v^<^<v^>>vvv>^<v<^v<<^v^<v<^<v<vv<v><v^<^>vv><<<<><>^^><<><<><<v<>vv>^^><<<<<^^^<>v<^>^v^v>vv^v<v^>>v<<^v<>>^>^<><<<^><>><v><>v^>v>^v^v^v><^<v<v^<><>v^vv^><vv^>vv>^^>^^<<<v<^^<>^<v^>>^><v>v>^v^>v><^>v><>^>v^vv><<^v<>>vvv>vv<>^v<<^vv<v^^<v<v^vvvv>vv^^<v>v^v<><<vv^vvv><<>^^>vv<<vv<^<<><<^<<<^^<v^>v^>^^><>^^v><><>v^v<v>>><v>>^vv<<^^>v<^^<<v>^><>>>>v<<<v>^>^^v><<^v>>v^>>^>>><<v<^v<<^^v<<^<^>><v>>><^>^<<^<<>^^>^^<^<<v^<^^<v>^v>v>v^>^vv^<>v>^^v^<^vv<^>v^><<>^<v<vv>v^<<<^<v<<>>>^v>>vv>>^>v^^>v>><>^<<<^^v<^><><>^>^>v>>v<<>v><vv>v^^v>>v<^^^vv^vv<<^<v^^<v^>^v>^vvv^>>v<<><<v^>^v^>>^<v<>>v<<>>^<>>v>v^v<^>>><v>^<<^<<<<v>vvv>^><<>>>v^^^>>><<vv<^>v><<<^^v^v>>>>^<<v<>^>>v^><<>v<<^^^vv<^<<^v<><v><<<^v>v<>^^<v><>v<<<^vv^>v>v^^^v^vvv>^^<v><v^>>>v^v><^>^<<^><v<^^<^v>^>>>><v^>><>v^>>^^^^v^<>><><<<><<v>>
<<vv^v><<v<^v<v^<<><^v<^<<<v<>^<vvv<<>v<>v^><vv>v^^<v^>>^^^^^>^<><<^^v^<>v><>^v<^<v<v<<<v<><<^>^^><vv>^v^^>v^^<<v>>v^vv<v^<v><^v>^^^v^^>^<><>^^<v<^v<>>vv>v<vv<<>^>>>v>v>v<v^^v<^<<^v>vv^>v^^^>>>^v^v><^^<><<><<^v<v><^v<>v^v>^^>^^>^^v^>^^v>^^<vv<<<^^v>^v<><v<v<v>^v^^^vv>><^^^^v>v<>vvvv<<><^v<<>^v^<^v<<><v^v><><v^<<^>>><>^v^<>^<^v^vvv<><<>^^^v<^v<>>^v^><<>v>v>^v>><^>><^<^vv>>vvv^><^v<<>^vvv^><vvvv^<<<v>><<<<><^v<>^v^<>^<<<<>v><>^v>^><^^^v^^>^^<v<<>^<^^>vv>^v>v>>>v^<>>>v>>>>^v>>^<v<<<<v^><><>^<^v>^<<>^<^^>^<^><>vvvv>^<^><<<^^^><v^<^>v><^>v<v^<vvv^^>^><vv>^>>v^<<><vvvv>>v<<v<v^v<>v^v<<vv^v^v><>v^^<^v<<^<v^>>v^v^<>v><vv<><v>^v<<<>><<v<<^^v<v^<v<v>><v<^>^<>v>v<<v^<v<v<<v><^<><>v<^v^<^^v>v><v<v<vv^<<><<>^>>>>>^v><^v<<^<v^^v^<<^<v><v<<^>>v^^>v<>v^^><v><v><<^>>v<<^v>^v^>^>vv<<<>>^<^>v>>^><<^^<<vv^^>>vv^<>^^<<<^<^^v^v>^<vv>>^>^><<^>^><>^v^>>>^<>^v^<vv>^^^<vv^^<<>^^>v^><<>vv^vv^<^v>^^<>^^>>^<^v><<^^>v^<^^<vv^v>>v<vv<v^>^v>>>v^<><<>>v>>>v^>>v^>^^v><<^<v><^v^<><>v><<><<^<><<><<^^v^<v<>^>>v<><^>v><><>
^>^>vv^^v^>>v<^<v>vv>v<v^v<v^^^^v^^<<v<>>^<^><<^v>^v>v^><><^^v<^^^>vv>v<<^<>>v^<>^v<^^^><v^<^vvv^v^v<v<v>^^vv>^v^^>v<><>>v<<^v<<<vvv>><>><<v>v^^vv^^><<<^>^v<vvv<v<vv<^v<v>vvvv^<^><vv><^>^^v>>vvv<>v>>^>^<<^<^^<^^>>^>v^<>>v><^>v>^<v<<^>v^<>^v><v>v<^<^v<vv>v>v^<v<vv<^v^^vv<v<<^><v>v<v>><^>^<vv^<^>>><^<^vv^^>v^^<><<v<<<<v^^<v>^vvvvv>>^^>v<v<^><^^^<^<>^><^<vvvv<<v^><v>^>vv<>v<><>>>><^^^>v^><<vvvv^^v<>^>v<>>^vv>>v<<^v^<><<^^><v^^vv<<>><<<>v<>vv>>>v<><>>v>vvv<>>^^<^^>><^^^^><<<>^^<^<^><^^<v>^^^>^<v<^^>>v<<<>vv^<v<^^>>>^vv^vv^v^^^vv<>^>^<<<><><<<<^^^^>^v>>v<<^^<^>^^>^v>v<>^^v^>v>^>v<<<v<<>^><vv^v<^^v>><vvv>v>^>>>>^>^>>>v^<^v^vv<v^v<^v>^v^v<vv<>vv>>><<^^>>v<<v>v^>>^>v^>^><^^>vv<^>v><vv<^><v><^^^<v^>vv><v>>v<>v<^vv<v<<>^<>v<<^<v^<<v><^v^<<<>><<>v^v^v^><<>^^vv>v>vv^<v>^>><>^>^vv^^^>>>^^><>v^^v><<>>^v<^>><<<><^<v^v^^^^^<<^^><>^>v<<^><v<^v<>^><^>>>><<vvvv<><^><v<^>vv^^<v><<>>v^v^>>v><^><>^>^vvv><^><><>vvv<v<^^^^vv^^v^<<^vv^<^<^v<^v<<>v<v><v<<^><vvv^<^v<>v>v^<<<<^>^><<v<vv><^<<v<<<>>v<>^vv<>>>^vv^^^
vv<<>v>v>^^>v>^<^<v>v><>v^<^<>^<^<^<>>^^v<><><<^<v^v^<^^<^vvv^v>vv^><^>>>^^>>>^^>v<><<v^v^>><v>^vv>v^^><>v<^<vv<<^^>><<v>>^^><<><v<v><v<<v>^^^v^>^vvv<v>^<^vv<^<v^vv><>vv><<>>v^>>>^^>^<<>v>^^>^v<^>><<>>>^^v^<v^>>>^<>^><^v>vv>^vvvvv>><v^^<v^vv<v^v^^>v>>><<^^<><^vv^v>^^><<<<v>>v^<<<^v>>v>^^v<<vv^v><>^<^<v>>><<<<v>v<>>v<>^><>><><^^>^<v>v^v>><><>>^^^>^^vv^v>vv>^<vv^^v<<^>^<v<^v>>vv^><>>v>^^vv>^^><<<^v<^v^<>>>^^>vv<^>>>^v^^>>><v<vv<<<<<<<v<vv><^<v^><<vvv<^><^^vv><<>^><<<<<^v<<>^^^<>>v^<^v><^^v><v^><^<><vvv>^<^>>^<<v><<v<<^>v>>>v<v<<<>vv<^v>v>>>^<<>>>^v<<v^><vv><v>><v>><v<<>v<v<<<v<vv>>^>^^<v>^v<<v<>>>v<<^^^>^<^<^^^>>^^<<<^^^<><<>v^>v>^^<v<v>^<>^><vv^><^v>^<>^^<<>>^v><<<><^^v<^vv^^^v><<<^vv^>v^>^^^vvv^v>v><>><v<>^^v<<v^v>>v<<v><>v^v^v<^<<^v>vv<vv>><vv<<vv^vvvv<>^>vv^v<<v<>v>><<<<v^><v>^^v>>>v><vv>v>>>>>>><><vv<v<<<^<><<<^<>vv^><<<>^^>v<^<<>>>>^v^>>^^>^><vvv>^><^^<v^<^^^vv>>>^^vv<^>v>^^v<<<>v>>v^^<<v><^^v<>>>^><v><^<vvv<^v<^v^^<>>^v><^v>^v>^<^vvvv<<v>^>>^>^<<^^v<v^v<>^^>>>^^>^vvv<<v<^^v>v^<^>>
^v^<>v>v^^v^^<<<<v<^v>^<^^^^v<<v>v^>v>v<<v<<^>vvv<>v<<v>^<^>vv^vv><<v>v>^>^^vv<<vv<>v^^<>v^^v><v>v>v><vv<><>^v^>v><v^<<vv<^>v^>>><^>>v<v<>^^v^^v^vv<^<vv>><^<>v^^>^v>vv^<vv^v><>><vv<<><vv>v<v<>v^<v^v<vv>>^><v^<^>>^>^<<><vv<v<vv<v<v<vvv>><><>v^><>>v>^^<^<<>v>><v>>^^^^>>><<>^v<<^<>>>^^^^vv<v<^<<<>v<v^^>^^>^^<<>^^v^<v^v><v>vv>><>>>>^v><v^><<^>^^<>vv^vvv^^^>^v^^<vv^><<v^><>>>^^>v<<>v^^^vvv^<<^vv^^><^>^v<<v^^v^>^vv<v^^v>^v<^<vvv^^>>><<<>>>><vv>^vv<><<v>v<>>>v>^^>^vvv><^<><^<<<<><v<>v>v>v<><<v<^v>v>v>^><v>>>>>>^^<<v<<^>^>^^^v<v<<v>^<^^<>^<v>^v>>^>>^><^^vv<<vv<<<vv>^^>>>^v<^v>vv<vv^>vvvv<<><<^^v>>>>^^^^vvvv^>v^><^><<>v>^v^>^>vv^>vvvvv^^^><<>><v><>^^<><^^v<>^^<><^^^^<<<v^^<^<><<<v^<>vv>v^^<<v^^^^<<v^<vv^v><<>><^^^v><<v<^^<vv>vv>v<>^<v^<<v^>^^vvv>v><>>v^v^>^^^^v>v>>^^v>^>v>^<v<v<^>vvvvv>^<^vv>^v>vv><<<>><>^>v<<>><^><vv>^v<<vv<><<>v<^v>>^>^v^vv><<<vv><^><>>><v^^>vv>v>^^>^^v>><^>^vvv>>>^><v^<<vvv><<<vv>^>>><v<v<>^>^<^<>>^v<^vv>v^^^v^<v><>>^><>v^^<<v^<><>>^><<vv<vvvv>>><^<<^<<vv>v^v^v^<vvvvv^vv<vvv
^vvv<<>>>^^vv^^><v^<><<^>><<^v^vv<v>>^v^>><vv^>^<<v^v^vvv^^<vv<v^v><v>>>>^v>^v><^^>v^^v^v<^>v^vv<^v<<^^^>^>><v><v^<>v<v<v>^>vv>>v>^v<^>v<^<>^>vv><^>v<<<<vvvv<>^<v^v<^<<>^>v>><v>>v^<^vvv^v<>^v<^<^vv<^<^vv>^><>v<<>v<><<>><>vvv^v<<^v^v<vv><<>v<vv^vvv<><<v>^>^>^<vvv><<>>vvv^^^<^>v^v>>^<^>v><v^vv<vv<<<<v^>>v>>>>^>>^>v>vv^<v>>^v><^>v^v>><v^v^<v>v^v<^<v<^^^^<v<v^^^<v>>^v><><<v<><><v<>^>>v><><>>><^>>>v^^v<<<>v^<vv>>><^<^v>v^v<>v>^^vvv<vvv^>^<>^<<>>vv^^<<vv<>>v>vvv>^>^vv^<<><<^v^v>v>>v^^^^^v<<<v>>>v>^>vv<^>^v<^><^<<^vv<>v><>>^><>^<^<>v>>v>>>v<^<v>^^<vv<v<^><^^^>v>vv^<<>>^^^<<^<vv^>>vv^^>v^>v<^<<>^<^<v><^^<<<^><<<<vv>>vv<<v^<^><<<<^<<v<>v^^^<>>>>><>v^^v<>^vv>^>vv<<<>><v^v>v>><v>v>vv^^v^v>>v<v<<<><^v<>>vvv^>vv^^vv>>vv<^^>><><<v><^<^v^<v^^<v^vvv^>>v^^<v^^>v^>>v>v^^<v<<>^v><v^^v>><<<^>v<vv>>vvv>^v<>^<^^<^v<>>^v^^>><><<<v^^<^^^<^vvvvv>vv>^>v^^v^vv^>>><vvvv<v><><vv^>^^vv<<>^<v^^>vv^>^^<>v^<<v><<v^>>^^v^><<<>>v>>v<<v^<>^v>vv<^^>><^<<>^vvv>^^<^<v^v<<<<^<vv>><<>vv>^>^^<<>>^^vv><^^>v^<>v><>^^<^^v><<^>>^>
<><<^<<>^>^^^^>vv^v><^>^><<><^><^v<vv^<^v><>^^^><>^v^v<><<<>>v<>v>^^<^v^^^><>v^^^^<<^v>^<><<^vv<<<<^>>>^<v>>v^>^>^<><v>^><>v>^>^<^<^v^vv<vv^^>^<v^><<>>>>v>^>^v^vvvv>^v<<>v>><>><v>^>^^^>vv<^vvv<^<v^vv<v^vvv><v<>>v><<vv<>^vvvv^v>v>>>^v>><<v<>^>>>^v>vv^v<<>^^^<^v<<^^<<^^^<<^v^^v>>^^^><>^<^<v>v>><<^<<v^vv^^>v>vv<<v><<^^<<<<v^^<^v^<><v^^v><v<>><v<^v>vvv^><^^v>^^^>><v>>>^^v>>>><>>^<>>^^^v<><^^v<v<>v<^<vv>v^^vv^v^<>><v<<<<^vv<<<^v<^v>^^^^><vv<v><<<>^v^>v<v<v^>>v<>^^>v>^>>^>^>v>>>^^>^<><<>^^vv>^^v^^^vv<^>^^^v<<>v<>^<<v^v<<^<>>^>^>><><v<><^<v<^>^^>^<<>^v>^v<<^^>v><><<v^<v<^^<<<vv<>>v^vvvvv<^^^vv>^>vv>^^^>v><<<^<>v>>^^^<<<>^><v^^<><>^<v<<>><v<<v^^^><v^^>>v>><vv^>v^v<v<<^vv^v^><^>^>vv^>vv>>^<^<vv^<v<v<v>>^><^<vvvv<<<v<>>>><><vv<><<^vv<^^^v<><^vvv>>^^<^<^^^vvvv^^^v<v>>^v<<v^>^^>v>>^<^v^<<^v<vv^<v><vvv^v>v><^<^v<<v>^^>^v>vvv<^vv>^^>^<>^>v^><<<>v^v<v>^^v<><^vvv^^v<>v^^<^>^<><^^<<<^<>vv^<^<>^^^><>v<<<v^^^^v>>^>vv^^^v<>vv><vvv>^<<>^<><v>v<>>>>v^<<<>v<>v<v<>v^><v<v^><vvv^<^v>^><<>vvv><<>><<<^<v^v><^^<^
v<<v^v^<^>>>vvv>^^>^>v<>><v^vv><<^v>^v^><v<v<<<<>><^v^<<>^>>>vv^<<^<<>v>vv<>>>>v<<>^vv><<v<vvvv^<^>^>>>><v>^<vv<^<^><^><>>vv><v>^>v^<<><<vv^^^<^^<^>^><<^^>v^v^^>^^><^<^>^vvv^<v<<><^^>^<<^>^^>>^<><<^vv>^>v>v>v<^^<>>^^><v><<<^v>^^vv^v^^^^>vv>>^>vvv^vv>^v^<<>><>><<<<>>>^^<<v<^>>v<>v<>v^<^vv^v^v>>v<v<>^^v><<>>>v>vv<^<v<^^<vvv^>^v^<^<<v^>>>v<^vvvv><vvv<^>>^v<v><vv^vv>^v<vvv>^<v>v>^>><>vv<^^v<<<^>>v<>v^><vv>^^vv^v><v>><v<>^v><>^^^>v<^^v>>v^v<<v^>^vvv<^<v^<<<^^^v^>v>>vv><^^v><<<<v^>^v^vv><^><><><vv^v^^>>>^<^^^<<>v^>v<<><v^>>vvv>>><<^^v>^^<^^v<v^>v<v>^v^^v^vv><^<^^<^vv>>v<v^<^<^v^>^>^^^<<v>>^vvv<^<>^^^^<^<<<>^>vv^v<><^<<v^><v><><^v<^>^<^>^v><>vv>>^v<^^>>^<<>>><>vv<vv^^>^v<>^^<<^v^^^v^v^vv>vv<^<>>v<>>vvv^v<^v>vv><<>^<<<v^<<>v^^><^<>>^>>v>v<^><^<^vv<<<^v^<>v^^^^v^v^vv<>>v<<<vv<v><<^>>v^^>vv>>>^<>>>><<>^^^<>v>^>vv^<vvv<vv>>^<v^<vv<^>>>v^^^>>v<>^<><v<v>^>^v^v<>^<^^>^^vv>><>^>vv><^v>^^v^^<^v><v^v>>^v<>><>v<<^v^v>^<^v><vv>^>><^>v<>^<v<^>^>^<>^>v>^v>^<v>>>><<>^<^v<^<<v^>>^^^><v>^^<<v^<^><><>^^>><<<<>
^>v<^>>vvv>^v^v>^><^>><^>vv^<^^^<<>^<>>^<>v>><><<<^>^^>^^^<^><<v<>><><>>^^^^^<<^<v<^^>v>><>vvv^>><>><vvv<^>^>^>vv^<<v>vv^>^v>^<v<^<<>vv<<^v<<>>v<><v>><^>v<^^^>v^^v>v>v<><^><<vv>>vv^v<>^v<v<^<v<v>>><v>^>>v><>>vv>^^<v^^vv>><<<<v^><<^<>v<><<^>>^<^><^vv>^<v^>^^^vv^v<v>>>^^^^vv^><>v<<><><>^vvvv><>v>vv^^>>^^<^v<^>^><^^<<^>><^>>><>^v<^^<>><<><^v^v^v<^<^><>><>^><<^^>^^><v<^v>>^vv^>>>v><<<>vvv<>>v<^v^<<<v^v^^>vv>v^<<v^>vv<>><^>>vvv^^<^<v>v>>^^v<^v>vv^v>><>v^<^^<<>^<v><^v^v<<^<v^>v<<^^>>v<>^v<v^>>>><v><<v^<^^v><<v<<<<v<<><^<>>^>^vv^v^v>v>>^<>vv<^^v<^>>>>v<>v>>>>vvv>>>vvv^>^>>>vv^vv>^v^v>v>>^^<<vv>><<v<>><vv<^v><<>^v<v^^><^><<<v^^<<v^>^>^<><v>><v>v^<v<v>>v<>v^^<<vv>v<><v><>vv<><>>^v<<v>^><v^<v^vv<^<><^><>v<>^>><<<>>^^<<<><^v<v>v^v<<^v^^vv^v>v<>^>><^v><^v^vv>>>v<v<<<^^>^<<>v>vv>>^^<v>><<<>^^v>^<<v<^<^<>>v<<<v<<v<v<>>><>v<^<>v^>>>vv^^<v^>>>>><>v^vvv><^>v<v>v<>^>vvvv>>^<<>><>v<^>>v<<<<>^^v>^^<>^<v<<^v<><^vv^v>>>^>vv^v<vv^v>v>^<v^^^^v<v>^v^v>^v><>v^^><vvv>^v^v^v^^^vv><v<<><><<>>^<<><vvv^<vv^^>><v>^vv
><>v>^v<v>><^<>v>^vvv<v^^v^v<<^^vvv<^>v><>v<^v<v^^^>>^<v>^v<<<^<<><><^vv>vv><>vvv<^<<<<vv<^<>><<^<v<^^v^<><^<v>>v<vv<^v^^><<<^>v<>v<v>v<>v^><>v^^<<^<><^<<^>^v>>><^<<^v<<^^><<vvv>><v>^>>>^vv><^v<^v^v^vv>>vvvv<>>>v<<^>^^^>vv^><><>^<v<^<><>><<<v<v^<v<^v^>^v^>v<>^^><vv<>vv>^<<^^^^<^>>^>vv>^v<^><vvv>>^<<v^^><^^^^>vv><>v>vv>><<^vv^><><^vv^<>v>v^v<vvv>>^v^v<vv^>^^^^vv><<vvv^v^v>vvv><^v^^<v^<>^v<vv><>><<<<><>v<<^v<><<<<v<<^^^>>v><>^vv><^>^>><>^^><v<^^v><^^v><^^^v><v^>><vv<>^vv<^^v^<^<v^>^^<<<vv<<>^^>><v<v>v<vv>><<v^^<v<><v>><>^><vvv^vv^^v^v><>v><^v>>>vv<^v^v>>vv^<^<vv>>v^<>v<^><>>^v^<vvv^<>^<>><^^>v<<<>^<><^<<^vvvv>v<^<^vv^><<vv<>v><^v<>^^<><<v>>><>^>>v^v><vvv>vv>><^^v<^v^<^>^<>vv>><<<<v>^><><v<>>^v><>v<v^^<^^<<^><vv^^<<><>>>^^<v><<>v^<v>v^v^v<<<>^v<<<<v^<vv^<>>>vv^^^^>^>v^<^^<v>><<<v<<<><<>vvv^><v>>^vv>v<>>^v<^vv>^v><^v>><vvvv^v<<^^^^><>v^><v<vv>>^<>>^v<^vv^^<<>vv<>v<>vv>>>v>v^v><vv^v^^v<>>>^v^<>v>^^>v^v<^v<vv<<>>^^v^^<<<>><<<<v>^>^<vv><^>><>v<^<>^<>v^>vvvv>v^><<>>><^^<<><^<^vv^<>><>^^^v>>^^>

2
data/16.ans Normal file
View File

@@ -0,0 +1,2 @@
106512
563

141
data/16.in Normal file
View File

@@ -0,0 +1,141 @@
#############################################################################################################################################
#.....#.....#.....#.........#.....#.......#...#.........#.....#.....#...........#...#.............#.....#.....#...........#.....#..........E#
#.###.#.###.#.###.#####.#.#.#.###.#.#####.#.#.#.###.###.#.#.###.###.#.#######.###.#.#.###.#######.###.#.###.###.###.#####.#.###.#.#####.###.#
#.#.....#.#.#.#.....................#.....#.....#...#...#.#.......#.#...#...#.....#.#.#.#.....#.#.....#...#...#.#.#...#.....#...#...#...#...#
#.#######.#.#.#######.###.#.###.###.#.#.###.#####.#.#.###.#######.#.###.#.#.#######.#.#.#####.#.#########.###.#.#.###.#######.###.###.###.###
#...........................#...#...#.#.#...........#.#...#.#...#.#.#...#.#.....#...........................#.......#...#...#...#.#...#.....#
#.###.#.#.#.###.#.#.#######.#####.#.#.#.#.###.###.#.#.#.###.#.#.###.#.###.#####.#.#.#####.#.###.###.#######.###########.#.#.###.#.#.###.#####
#.#...#.#.#.#...#.#...#...........#.........................#.#...#.#.#...#...#.#.#...#...#.#.......#.#...#.........#...#.#.#...#.#.#...#...#
#.#.###.#.#.#.###.#####.#####.#####.#.###.###.#.#.#.#########.###.#.#.#####.#.#.#.###.#.###.#.#######.#.#.#########.#.#####.#.###.#.#####.#.#
#.#...#.#...#.#.......#.#.....#...#.#...#.....#...#...........#.#.#.........#...#...............................#...#...#...#.#...#...#...#.#
#.###.#.#####.#######.#.#.#######.#.#.#.#######.#.#.#.###.#####.#.###.#.#######.#######.#.#.#####.###.#.#.#.#.#.#.#####.#.###.#######.#.###.#
#.#.#.#.......#.......#...#.#.....#.#.#.......#.#.#.#.#...#...#.....#.#.....#...#.........#.#...#.....#.................#.......#...#...#...#
#.#.#.#########.#####.#####.#.#.###.#.#.#######.#.#.#.#.###.#.#####.#.#####.#.#########.#.#.###.###.###.#.#.###.#.#.#.#########.#.#.#####.#.#
#...#.#.........#.......#...#.#.....#.#.....#...#...........................#.........#...#.............#.#...#...#.#.....#...#...#.......#.#
###.#.#.#####.###.###.#.#.#.#.#######.#####.#.###.###.###.#.#####.#.#.###########.###.#.#####.#.#.###.###.###.#####.#####.#.#.#############.#
#...#.#.....#.....#...#...#.......#.....#...#.#.....#.#...#.#...#.#...#.............#.#...#...#.....#...#...#.#...#.#...#...#.#.............#
#.#.#.#####.#######.#.###########.#.#####.#.#.#.###.#.#####.#.###.###.#######.#.#.###.###.#.#######.#.#####.#.#.#.#.#.#.#####.###.#.#######.#
#...#...#.#...#.....#.........#...#...#...#.#.#.#...#.......#...#.#.#.#.....#.#...#.......#.......#.#.#.....#.#.#.....#.....#...#.#.....#...#
#.#####.#.###.#####.#########.#.###.#.#.###.#.###.#############.#.#.#.#.###.#.#.###.###########.#.#.#.#.#####.#.###########.###.#####.#.#.###
#.#.....#...#.....#.........#...#.#...#...#.#...#...#...........#.#...#.#.#.#.#.....#.#.......#.#.....#.#...#.#...#...#.....#.#.....#.#...#.#
#.#.#.#####.###.#.#####.#########.###.###.#.###.#.#.#.###.#####.#.#.###.#.#.#####.###.#.#####.#########.#.#.#.#.###.#.#.#####.#####.#.#####.#
#.#.#.#...#.....#.....#...............#...#.#.#.#...#.#.#...#.#.#.#.#...#.#.....#.....#.#...#.....#.....#.#.#.#.#...#.#.#.....#.....#.#.....#
#.#.###.#.#.#########.#.###############.###.#.#.#.###.#.###.#.#.#.#.#.###.#####.#######.#.#######.#.#######.#.###.###.#.#.#.###.#####.#.###.#
#.#.....#.#.......#...#...#...........#...#...#.#...#.#...#.#.#.#.#...#.........#.......#.......#.#.#.......#.....#.#.#.#.#.#.......#.#.#...#
#.#######.#####.###.#####.#.#.#######.###.#####.###.#.#.#.#.#.#.#.#############.#.#########.###.#.#.###.###########.#.#.#.###.###.#.#.#.###.#
#.#.....#.#...#.#...#...#.#.#.#.....#.#.#.....#...#.....#...#.#.#...#.........#...........#...#.....#...#.........#...#.#...#.#...#.#.#...#.#
#.#.#####.#.#.#.#.###.###.###.#.###.#.#.#####.###.###.#####.#.#.###.#.#######.#.#######.#.###########.###.#######.#.###.#.#.#.###.###.###.#.#
#...#.....#.#...#...#...#.....#...#.........#.......#.#...#.#.....#.........#.#.#.....#.#.......#.....#.....#...#.#.#...#.#.#...#...#.....#.#
###.#.#####.###.###.###.#.###############.#######.#.###.#.#.#.#############.#.#.#.###.#########.#.#####.#####.#.#.#.###.###.###.#.#.#######.#
#.#.#.#.......#.#.#...#...#.............#.#.......#...#.#...#.#...........#.#.#...#.#...........#.........#...#...#...#.....#...#...........#
#.#.#.#.#.#.#.#.#.###.#.#.#.#####.#.###.###.#####.###.#.#####.#.#.#######.###.#.###.#############.#########.#.#######.#.#####.###.#.###.#####
#...#.#.#...#.#.....#.#...#.......#.#...#...#...#...#...#...#.#...#.....#.#...#...........#.....#...#.......#.#.....#...#.....#...#...#.#...#
#.###.#.#####.###.###.#.#######.#.#.#.###.###.#####.#####.###.#.#.#.###.#.#.###.###.#######.###.###.#.#######.#.###.#.#.#.###.#####.#.#.###.#
#...#.#.#...#.#.#.#...#...#.#...#...#.#...#...........#.....#...#.#...#.#...#...#.#.#.......#.#...#.#.......#.....#...#.#...#.#.....#.#...#.#
###.#.###.#.#.#.#.#.#####.#.#.#######.#.###.#########.#####.###.#.###.#.#####.###.#.#.#######.###.#.#######.#####.#########.###.###.#.###.#.#
#...#.#...#...#...#...#.....#...#...#.#...#.....#...#.....#.....#...#.#...#.......#.#.....#...#...#.#.....#.......#...........#...#.#.......#
#####.#.#.###.#######.#.#######.#.###.#.#.#######.#.#####.#######.#.###.#.#.#######.#####.#.#.#.###.#####.#########.#.###.#.#.#.###.#######.#
#...#.#.#.....#...#...#.#.......#.....#.#.......#.#...#...#.....#.#...#.#.#...........#.#.#.#.#...#.#.....#...#.....#.#.#.#.#.......#...#...#
#.#.#.#.#.#####.#.#.#####.###.###.#####.#.#####.#.###.###.#.###.#####.#.#####.#.#####.#.#.###.###.#.#.###.###.#.###.#.#.#.#######.#.#.#.#.###
#...............#.........#...........#.#.....#.#...#...#...#...#.....#.......#.#...#.#.#...#...#.....#...#...#.#.....#.#...#.....#...#.#...#
#.#####.#.#################.#########.###.###.#.###.###.#####.###.###.#.#.#####.#.#.#.#.###.#.#.#####.#.###.#.#.#.#####.###.#.###.#.###.###.#
#...#.#...#...#...#.....#...#.......#...#...#...#...#.#.....#.#...#.#.........#.#...#.......#.#.......#.#...#.#.#.........#.#.............#.#
###.#.###.#.#.#.#.###.###.###.#####.###.###.###.#.###.#####.#.#.###.#.#.#######.#.###.#####.###.#######.###.###.#.#####.###.#.#####.#.###.#.#
#...#...#...#.#.#...#.......#.#...#.#...#.....#.#.#...#.....#...#.....#.........#.....#.....#...#.....#...#.....#.....#.....#.#.......#.#.#.#
#.###.#.#.###.#.###.#.#.#####.#.#.#.###.#.#.#.#.#.#.#.#.#########.#####.#########.#####.#####.###.###.###.#.#########.#.#####.#.###.###.#.###
#...#.#.......#...#...#.#.....#.#.#...#...#.....#.#.#.#.#...#.......#...#.........#.....#.....#...#.#...#.#.......#.#.#...#.....#.......#...#
#.#.#####.#.#.#.#.###.###.#####.#.###.#####.#####.#.#.#.#.###.#######.###.###.#.###.#######.#.#.###.###.#.#######.#.#.###.#.#######.#.#.###.#
#.#.......#...#...#.#...#.....#.....#.#...#...#...#.#.#.#.....#.......#...#...#...#.#.......#...#.....#...#.#.......#.#...#.#.......#.#.#.#.#
#.#######.###.#.###.###.#####.#.###.#.#.#.###.#.#####.#.#######.###########.#.#####.###.#####.#.#.#.#######.#.#####.#.#.###.#####.#.#.#.#.#.#
#.....#.#.............#.#...#...#...#.#.#...#.#...#...#.#.....#...#...#...#...#...#.....#.....#.#.#.#...#...#.#...#.#.#.#...#.....#.#.#...#.#
#.###.#.#.###.#######.#.#.#.#.#.#####.#.###.#.###.#.#.#.#.###.###.#.#.#.#.#.#.#.#.#######.#####.#.###.#.#.#.#.#.#.###.#.#.#.#.#####.#.#####.#
#.............#...#...#...#.....#.....#...#.........#.#...#.#.#...#.#...#...#...#...#.....#.....#.....#...#.#.#.#...#.#...#...#...#...#.....#
#.###########.#.#.###############.#######.#############.###.#.#.#.#.###############.#.#.#.#.#####.#########.#.#.#.#.#.###.#####.###.#.#.###.#
#.#.....#.....#.#...........#...#.......#.#...#.......#.....#.#.#.#.#...#.....#...#...#.#.#.....#.........#...#.#.#...#.........#.....#.#.#.#
###.###.#.#.#.#.###.#######.#.#.#######.#.#.###.#####.#####.#.#.#.#.###.#.#.#.#.#.#####.#.#####.#########.#####.#.#####.###.###.#.#####.#.#.#
#...#...#.#.....#.......#.#...#...#...#.#.....#.#...#.....#.#.#.#.#...#.#.#.#...#.#...#.#.#.....#...#...........#...#...#.....#.#.#.....#.#.#
#.#####.#.###.###.#####.#.#######.#.#.#.#.#.#.#.#.#.#####.###.#.#####.#.#.#.#####.###.#.#.#.#####.#.#######.#######.#.###.#####.#.#.#####.#.#
#.....#.#.......#.#...#.....#...#...#.#.#.#...#.#.#.....#...#.#.......#...#.#.........#.#.#.#.....#...#...#.#.....#...#...#...#...#...#.#...#
#.###.#.#######.#.#.#.#.#####.#.###.#.#.#.#.###.#.#####.#.#.#.###.#########.#.#######.#.#.#.###.#.###.#.#.#.#.###.#.#####.#.#.#.#####.#.#.###
#...#.#.#...#...#.#.#...#...#.#.............#...#.#...#.....#...#...........#...#.....#.#.#...#.#...#...#.#.....#.#.#...#.#.#.#.....#.#.....#
#####.#.#.#.#.###.#######.#.#.#############.#.###.###.#########.###############.#.#####.#.###.#.###.###.#.#####.#.#.#.#.###.#.###.###.#####.#
#.....#...#.#.#.#.........#...#.#...#.......#...#...#.....#.....#.........#...#.#.#.....#.#...#.#...#...#...#.#.#.#...#.....#...#.#...#...#.#
#.#####.###.#.#.#.#.###########.#.#.#.#########.###.#.###.#.#.###.#######.#.#.#.#.#.#####.#.#####.###.#.###.#.#.#.#############.#.#.#.#.#.#.#
#.............#.#.....#.........#.#...#.....#.#...#...#.#.#.#...#...#...#...#.#.........#.#.......#.........#...#.....#.........#.#.#.#.#.#.#
#.###########.#.#####.###.#####.#.#####.#.#.#.###.#####.#.#.###.#.###.#.#.###.#.#######.#######.#.#########.#.#######.#########.###.###.#.#.#
#.#.......#...#.....#.#...#.#...#.#...#.#.......#.#...#...#.#...#.#...#.#.#...#.#.....#.......#.#.#...#...#.#.......#...#.....#.....#...#.#.#
#.#.#####.#.#.#.#.#.#.#.###.#.#.#.#.#.#.#.#.#####.#.#.#.#####.###.#.###.###.###.###.#####.#####.#.#.#.#.#.#.###########.#.###.#.#####.###.#.#
#...#...#.#.#.#.#.#.#.#.#.......#...#.#.#.#.#.....#.#.#.......#...#.#.....#.#.......#.....#.....#...#...#.#...........#...#...#.#.....#.#.#.#
#.###.#.#.###.#.#.###.#.#.###########.#.#.###.#####.#.#######.#.###.#####.#.#########.###.#.#########.###.###########.###.#.###.#.#####.#.###
#.....#.#...#...#.....#.#.#.........#.#.#.#...#.....#.....#...#.........#.#.........#...#...........#...#.#.........#...#.#.#.#.#.#.........#
#######.###.#.#####.###.###.#######.#.###.#.###.#######.#.#.#####.#####.#.#.#######.#.#.###########.#####.#.###.#######.#.#.#.#.#.#.###.###.#
#.....#.#...#...#...#.#.............#.....#.#.....#...#.#.#.....#.#...#.#.#.#.#...#.#.....................#...#...#.....#.#.#...#.#.#...#.#.#
#.###.###.#.###.#.#.#.#.###########.#####.#.#####.#.###.#.#####.#.###.###.#.#.#.#.#.#########.###########.#######.#.#####.#.#.###.###.#.#.#.#
#.#.#...#.....#...#.#...#...........#.....#...#...#...#.#.....#.#.....#...#...#.#.#.....#...#...#...#.....#.....#.#.....#.#.#.#...#...#.#.#.#
#.#.###.###.#.#####.#####.#######.###.#.#.###.#.#####.#.#######.###.#.#.#######.#.###.#.#.#.###.#.#.#######.###.#.#####.###.#.#.###.###.#.#.#
#.#.........#...#.#...#...#.....#.#...#.....#.#.......#...#...#.#.#.#.#.........#...#.#.#.#.#...#.#...#.....#...#...#...#...#.#...#.#...#.#.#
#.#########.###.#.###.#.#.#.###.###.#########.###########.#.#.#.#.#.#.###########.#.#.#.#.#.###.#.###.#.#####.#####.#.###.###.###.#.#.###.#.#
#.#.....#.#.#...#.....#.#.#...#...#.....#...#.#.........#.....#...#...#.......#...#.#.#.......#.#.#.#...#.....#...#...#...#.....#...#.#...#.#
#.#.###.#.#.#.###.#.###.#.###.###.###.#.#.#.#.#.#######.#####.#.#.###.#.#####.#.#.#.###.#####.###.#.#####.#####.#.#.###.#####.#######.#.#.#.#
#...#...#...#...#...#...#...#.#.#.......#.#.#.#.#.....#.#.....#.#.#.#.#.....#...#.#...#.#...............#.....#.#.#.....#...................#
#####.###.#.#.#.#.#####.#.###.#.#####.#.#.#.#.#.#.###.#.#.###.#.#.#.#.#.###.###.#####.###.#.###########.#####.#.#.#######.###############.#.#
#.....#.#...#.#...#.....#.#...#.........#.#...#.......#...#.#...#...#.#...#...#.#...#.....#.....#...#...#.#...#.#...#.....#.......#...#...#.#
#.#####.###.#.#.###.#.#####.###.#####.###.#####.#.#.###.###.###.#.###.###.###.###.#.###########.#.#.#.###.#.###.#.#.#.###########.#.#.###.#.#
#.#...#...#...#.#.#.#.....#.#...#.......#.#.....#.#.......#.....#.....#.#...#.....#.......#.....#.#.........#.....#...............#.#...#.#.#
#.#.#.#.#.#.###.#.#.#####.#.###.#.#####.#.#.#####.#.###.###.#####.#.###.###.#############.#.#############.#.#.#####.#########.#.###.###.###.#
#...#.#.#.....#.#...#.....#...#.....#...#.#.#.#...#.#.#.....#.....#.#.........#.......#.............#...#.#...#.........#...#.#.#...#.#.....#
#.###.#####.###.#.###.#######.#######.#.#.#.#.#.###.#.#######.#####.#.#######.#.#####.#.#.#########.#.#.#.###.#.###.#####.#.#.#.#.###.#######
#.#.#.....#.....#...#.......#.#.....#...#.#...#...#...#.......#.#...#...#...#.#...#.....#.......#...#.#.#.#...#.....#.....#.#.#.#...#.......#
#.#.#####.#.#.###.#########.#.#.###.###.#.###.###.###.#.#######.#.#######.#.#####.###############.###.#.#.#.#####.#.#.#####.#.#.###.#.###.#.#
#.#.....#...#.#...#.......#.#.#.#.#...#.#.#.....#...............#.#.....#.#.......#.....#.......#.#...#.....#...#.#.#.#.#...#.#.#...#...#.#.#
#.#.#.#.###.#.###.#.#####.#.#.#.#.###.#.#.###.#####.#####.#####.#.###.#.#.#.#####.#.###.#.#####.#.#.#########.#.#.#.#.#.#.#.#.#.#.###.#.#.###
#.#.#.#.........#.#...#.....#.#.#...#.#.#...#.#...#.#...#.#...#.#.#...#...#.....#.#...#...#.#...#.#.#.....#...#.#.#.#.#.#.......#...#...#...#
#.#.###.#######.#####.#######.#.#.#.#.#.###.###.#.###.#.###.#.#.#.#.#######.###.#####.#####.#.###.#.#.###.#.###.#.#.#.#.###########.#.#####.#
#...........#.#.......#.....#.#.#.#.#.#...#.....#...#...#...#.#.#.#.#...#...#.#.....#.....#.#...#.....#.#.#.#.......#.#.#...........#...#...#
#.###.#.###.#.#.#.###.#.###.#.#.#.#.#.#.###########.#.#.#.#.#.###.#.#.#.#.###.#####.#####.#.###.#######.#.#.#######.#.#.#.###########.#.#.#.#
#...............#.#...#.#.#...#.#.#...#.........#.#...#...#.#.....#.#.#...#.......#.......#...#.......#...#.......#.#...#.......#.....#...#.#
#####.#.#####.###.#.###.#.#####.###.#####.#####.#.#########.#######.#.#######.#.#.###########.#.#######.#########.###.###.#.###.#.###.#####.#
#...#.#...#.......#.#...#.........#.....#...#.#...#...........#.....#.....#...#.#.#...........#...#...#.#.......#.....#...#.#.....#.......#.#
#.###.#.#.#######.###.###.#######.#.###.###.#.###.#.#####.#.#.###.#.#####.#.###.#.#.###.#.#######.#.#.#.#.#####.#####.#.###.#######.#.###.#.#
#...#...#.......#.#...#.......#...#...#.....#.#...#...#.#...#...#.#.....#.#...#.#.#.#.#.#.......#...#.#...#...#.......#.......#.......#.#.#.#
#.#.###.#######.#.#.#####.#####.###.#########.#.#####.#.###.###.#.###.###.#.#.#.#.#.#.#.#.#####.#####.#####.#.#####.#.#.#####.#.#####.#.#.###
#.#...#.....#...#.#.....#.......#.....#.......#.#...#.....#.#...#...#.....#.#...#.....#.......#.#.........#.#.......#.#.....#...........#...#
#.#.#.#.###.#.###.#####.###.#####.###.#.#####.#.#.#####.###.#.###.#####.#.#.#.#.#.###########.#.#.#######.#.###.#.###.#####.###.#.#.#.#####.#
#.#.#.#.....#...#.....#.#...#.....#...#.#...#...#.....#.#...#...#.#.....#.#.#.#.#...#.....#.#.#.#.......#.#...#.#.#.......#.................#
#.#.###.#######.#.#####.#.###.#####.#.#.#.###########.#.#.#####.###.#####.###.#.#####.###.#.#.#.#######.#.#.#.#.#.###########.#.#.#####.#.#.#
#.#...#.......#.#.#.........#.#...#.#.#.#...........#.#.#.#...#...#.....#.....#.......#.......#...#.....#.#.#.#.#.............#.#.#...#...#.#
#.###.#.###.#.#.###.#######.#.#.###.#.#.#.#####.###.#.#.#.###.###.#.###.#####.#########.#########.#.#####.###.#.###############.#.#.#.#####.#
#...#...#.....#...#...#.....#...#...#.#.#.#.#...#.......#...#.....#.#.#.......#...#...#.#.....#...#.#...#.....#.....#.......#...#...#.#.#...#
###.#.###.#.#####.###.#.#######.#.#####.#.#.#.#########.###.#.#####.#.#########.#.#.#.#.#.###.#.###.#.#.#######.#.#.#.#####.#.#####.#.#.#.###
#...#.#...#.........#...#.....#.#...#...#.#.#.............#.#.....#.....#.......#...#.#...#.#.#.#...#.#.......#.#.#.#.....#.......#.#.......#
#.###.#.###.#######.#######.#.#####.#.###.#.#############.#.#####.#######.###########.#####.#.#.#.###.#####.###.#.#.###.#########.#.#.#.#.#.#
#.................#...#.....#.....#.#.#.#...#.......#...#.#.....#.....#...#.........#...#...#...#...#...#...#...#.#.....#.....#.#...#.#.#.#.#
###.#####.#.#.###.###.###.#######.#.#.#.#.###.#####.#.#.#.#####.#####.#.###.###.#######.#.#.#.#.###.###.#.###.###.#######.###.#.###.#.#.#.#.#
#.#.......#.....#...#...#.#.....#...#.....#...#...#.#...#.....#...#.....#.#.#.#.........#.#...#...#.#...#.#...#...#...#...#...#.....#.#.....#
#.###.#####.###.###.###.#.#.###.###.#.#####.###.#.#.#.#.#####.###.#######.#.#.###########.#.#####.#.#.###.#.###.###.#.#.###.###.###.#.#.#####
#...#.#...........#.#.....#...#.#...#.......#.....#...#.#.....#...#...#...............#...#.......#.#.#.#.#.#.#...#.#...#.#...#.#.....#.#...#
#.###.#.###.#######.#######.###.#.#############.#.#####.#######.#.#.#.#######.#######.#.###########.#.#.#.#.#.#.###.#####.###.###.#.#####.#.#
#.....#...#.....#...#.......#...#.....#.........#.....#.#.......#.#.#.....#.....#.....#.....#.......#.#.#...#...#.....#.....#...#...#.....#.#
#########.#.#.#.#.###.#.#.###.###.#####.#.#####.#######.#.#########.#####.#.#.###.#######.###.#####.#.#.#########.#.#.#.###.###.###.#.#####.#
#.........#...#.#.....#.#...#...#.#.....#...........#...#.#...#...#.#...#.#.#.......#.....#...#...#...#.........#...#.....#...#...#.....#...#
#.#########.#.#.#.#####.###.###.#.#.#.#############.#.###.#.#.#.#.#.###.#.#########.#.#.###.#.#.#.###.#####.###.#.#.#.###.###.###.#.#.###.#.#
#.#.........#...#.....#.#...#.#...#...#.........#.....#.#...#.#.#...#...#.........#...#...#.#.#.#...#.#.....#...#.#.#.......#...#.........#.#
#.###.#####.#.#########.###.#.#######.#.#######.#.###.#.#.###.#.#####.#######.###.#######.#.###.###.#.#.#####.#####.#######.#.#.###.#######.#
#...#.#.....#...#.....#...#...#.....#.#.......#.#.....#...#...#...#...#.......#.#...#.#.....#...#...#.#...#.#.....#.......#.#.#.........#.#.#
###.###.###.###.#.###.###.###.#####.#.#########.#######.###.#####.###.#.#.###.#.###.#.#.#####.###.###.###.#.#####.#.#####.###.#.###.###.#.#.#
#...#...#.#...#...#.#.....#...#.....#.........#.......#.#.#.....#...#...#...#...#...#.....#...#...#.#.....#...#...#.#.....#...#.#.....#...#.#
#.###.###.###.#####.#######.###.###.#######.#.#.###.###.#.#####.###.###.###.#####.#.#####.#.###.###.#######.###.###.#.#####.###.#.#.#.#####.#
#...........#.#.....#.#.....#...#.#.#.#.......#.......#.#.....#...........#.....#.#.#.........#...#...#.....#...#...#.......................#
#.#####.###.#.#.###.#.#.#######.#.#.#.#.#######.#####.#.#####.#########.#.#####.#.###.###.#######.#.#.#.###.#.#.#####.#.#.#.#####.#.###.#.###
#.......#...#.#.#.....#...#.....#.#...#.#.....#...#.#.......#...#...#...#.#.....#...........#...#.#.#.#.#.#...#.......#.#.#.......#...#.#.#.#
#########.###.#.#####.###.#.#####.###.#.###.#.###.#.#######.###.#.#.#.#.#.#.###.###########.#.#.#.#.#.#.#.#####.#######.#.###########.#.#.#.#
#.....#...#...#.....#...#.#.#.....#...#...#.#.......#.....#.....#.#.#.......#.....#.....#...#.#...#.#.#.#...#.....#.....#.#...........#...#.#
#.#####.###.#####.#.###.#.#.#####.#.#####.#.#######.#.###.#######.#.###.#########.#.###.###.#.#######.#.#.#.###.#.#.###.#.#.###.#####.#####.#
#.#.......#.#...#.#.#...#...#...#.......#.#.#...#.#.#.#...#.......#...#...#.....#.#.#.#.......#.......#...#...#...#.#.#.#.#.................#
#.#.#######.#.#.###.#####.###.#.#####.###.###.#.#.#.#.###.#.#########.#.#.#.###.###.#.#####.###.#####.#######.#.###.#.#.#.#.#.###.#.#####.#.#
#...#.....#.#.#...#.......#...#.....#.#...#...#.#...#...#...#.......#...#.#...#.....#.....#.....#.....#.......#.#.....#.#.#.#...#.#.....#.#.#
#.###.#.#.#.#.###.###.#####.#######.###.###.###.#.#####.#.#####.#######.#.###.#######.###.#.###.#######.#######.#.#####.#.#####.#.###.#.#.#.#
#.#...#.#.................#.......#.....#...#...#.#...#.......#.#...#...#.#...#.....#.#.#.#.#.#.....................#...#.....#.#...#.#.#.#.#
#.###.#.#####.#.###.###.#.#######.#.#######.#.#####.#.###.###.#.#.#.#.#.###.###.###.#.#.#.#.#.###.#.#.#.#.###.#.#.#.#.#######.#.###.#.###.#.#
#S....#...........#.....#...................#.......#.........#...#.........#.....#.....#.......#...#.....#.....#...#...........#...#.......#
#############################################################################################################################################

2
data/17.ans Normal file
View File

@@ -0,0 +1,2 @@
2,0,7,3,0,3,1,3,7
247839539763386

5
data/17.in Normal file
View File

@@ -0,0 +1,5 @@
Register A: 18427963
Register B: 0
Register C: 0
Program: 2,4,1,1,7,5,0,3,4,3,1,6,5,5,3,0

2
data/18.ans Normal file
View File

@@ -0,0 +1,2 @@
262
22,20

3450
data/18.in Normal file

File diff suppressed because it is too large Load Diff

2
data/19.ans Normal file
View File

@@ -0,0 +1,2 @@
280
606411968721181

402
data/19.in Normal file
View File

@@ -0,0 +1,402 @@
rwgw, ruwgb, urwbr, wu, uurbubr, gbbr, uwwb, rubgwu, wggwbwr, rugubuww, uw, rgru, rgrr, rrg, rbb, uurbrww, br, uwrwrwgb, bwbw, wgbu, wggu, urg, ugr, ugur, gurrbrr, ubgrruu, bb, rburguu, urgg, wggugggr, brww, bwwgr, wugub, grgg, ugw, grubw, gbwru, rww, wbu, ggwbu, ugurw, ggwb, uubuwgb, bbugw, rgg, wurr, bwbb, wburbb, rbrb, bbrwgw, gwbb, ubggr, gurr, rrr, rburg, uug, bbrubu, bwgu, gwug, guw, buwurgw, rruwggg, ubb, wwb, wbrg, wgr, wgrw, gubrr, rrwru, gbub, rbr, rwr, rubwu, ub, bgwr, gu, ggggwrbr, wrw, grg, rbuwu, bgbr, ugww, wrg, brwub, gruu, gbwbw, wubw, wur, grggwb, uuwuug, wug, rruuw, wgwg, uww, gbgu, rurr, gwguu, gwrwbw, guuww, rbugw, gg, uwbw, ubgrubur, wurrb, rgugurr, wrr, buggb, urwrb, ubuu, rgu, gwggb, uuu, uub, bruubb, bww, uwgb, rrubwg, ubwu, ugu, buwrrbwr, bbr, rbrww, ubuwg, bwwrr, gbwg, bw, gguugu, bgbbw, ggb, wrruuwbr, rug, uur, rgw, gbb, wuwg, r, guug, gwb, wbgr, bbbw, grwgwr, gwg, rurur, bubu, rguu, brb, ugbbbrr, wugrrr, bbw, bbru, bgrbubg, ubw, uruu, wgrgrwwr, bbwrugu, gbbbwur, rubbwbuw, wuwrwbu, brwbru, wub, rbrg, wwbwrbu, grbbu, ubbbwb, urw, gwuw, uu, urwugu, bgw, gw, rbwwwurg, gubr, bbu, rur, rburwgr, gwwgr, gb, rbur, rbw, ug, wurur, gbbrrb, ruuuwugr, wwrgug, gbrugu, wrww, wuwbgw, uwwwgrgb, gww, grwwu, ggu, rrurr, bgr, ubugwu, wwgwur, urrrbw, bwr, wrbgbu, wrwbb, gug, bwu, ruurw, rw, wbb, bbwgwrr, wgg, ugwu, wr, wwwr, w, wbwbuw, guugg, bug, bbbb, brbb, brur, rbg, wuu, wurwgb, rru, urrrbugr, grr, rubu, uugrwbb, bgbrurr, wgw, gub, ugwwgr, urwr, wbwbg, wrrb, rwrgg, ggwgrgw, bwbu, uwb, rg, urr, brrur, wg, u, bu, ubbbrw, brgbbbbu, wgrgu, bgb, ubu, uugubg, bub, rwrr, gggbrw, gwwrww, grub, urgrgw, bru, wgwgb, wubrg, ugrwwbb, wbgwrru, gbwb, wugu, uwwwg, ubr, gwr, bguwb, guwbw, wrb, grw, gwwgbb, wbwwr, grbwub, ubg, bwbgw, rwu, uurb, rbwgur, ubbr, grrr, ubwg, rgwuug, rgb, grrbub, bwb, uwuuubg, wrugb, brurub, wurg, urur, uru, bwwrrr, urwub, uwr, brr, ggg, bbg, bgg, guuruuu, ubwb, uburgbb, gbgrgug, rbwr, uwu, rwwbuugr, ubwwg, wwr, brg, wruububu, bgbb, ww, wrgbu, ugb, gru, bbwgbr, brw, bwwbb, wbr, grbg, wbbb, brbrwwbw, gbgwrrub, wwu, wgb, rruruu, wuggr, urb, bwg, wbg, rbu, wwg, wuw, wrbbugg, rb, rrgrbrg, guu, bwwugr, rwrb, gwbrb, wrugub, ubbrwu, uggbb, ggr, wwru, rgbb, bbgbgrr, wuruw, gbg, ubbwrg, bur, wuwuu, bgu, ruwgur, gbu, wwuwb, ggbgg, ugrbb, bugw, rggrb, rrw, rgwru, ubru, grbbuw, wbrr, wruu, ggw, wbgguuw, rggrugw, gbgwwg, gwwru, gur, rr, wbgb, burbwr, rggu, wgwu, rwuug, gwrbr, wbbwbgb, wurb, gbbuggg, gbbgbg, ur, ugwwu, wgu, bg, urrbgr, gurwg, bbb, urrr, bwurbrr, gbr, gwurb, ugg, uwbbrr, buggr, rub, bwrgbw, uwbb, ububggw, uuwrbbu, rrrwr, ruwgub, bugb, wwrw, gwbg, wwwrrr, urgggwb, gwuwr, www, g, wgrg, wbuwb, grwrg, uuw, wuwgb, buru, rgr, rrgu, urbgb, wgrr, gbuwww, rrgrgw, rgbrg, gugbuw, rrb, rrgbug, ugwbrgw, rwuw, grugrrbr, gbgww, ruw, wubb, gr, ruu, ubbg, brgurb, rwg, gwu, ruwr, grb, uwg, wgww, bgbbrww, buu, rurbgr, rwbw, gwwr, rwwbbugu, grgbr
rubbgwuwbrwgrgrgrbrbbubgbggrbwrurwuggggwrbrgwbrrwb
urwgurrubuguruwuuuruwbbgrbbuwrbwrruuuubbuububuubrw
gguurrubwbuwgrbrrurrgbgburbrrurwbrrrubburuggbbgb
rgbuuwwwgbbwgurrwurgwgrgrbbbuggwgwugbrwb
rwggurbrgwrrwuururwwubgrurwwrubgguububururwb
ggrgrruwwwgrwuubgrggbbwrrgbrwrwgwwububrubguurggbrwbg
ggurrgrggwrwruuwrbrgbrubrbuggugwgrwgwurbub
wwwwuburrwbwugguwuwgwwrbggbwuwuuuuruwwurbwurgbwbggrr
urburguuwwwgrbrbgbbgbgrbgbubguugwubugwgrruuuugbbbbgubggu
guurrgwububururwgugrguuubrwrguurbuuuugrgbuwru
urwuwuuguwwwgrgbuwbgubwuwuurwuwggbwgubrbrguurrgrwb
bwwbbwuwbubgrbbgwuubrrbwgbggubbrbbwrwuuuguugwrwbub
wwwguwbgrrgbrgggwrgwuuwwwgwgwrgbrbgwgwruuruguubruug
gruuwuwbugubrwbbubrubgrruubuwugurbggrrbbbbg
wurubbwuggrrurbwwgrwubgbwguurbrwgwwwgrwuuuggwbguwwr
ggbguwrwguguwubgurgggrguuwugbuwbwwgwburgbwwuwgbrwbub
gwugrwruguwuugubbbrubbwbuwwwrgburrbbguwbgbgwrwb
grgugwwrgggbbbubububwuggrrgwruwrubwbrbbgwrwrggbuwrururrrrg
guwgggwrwrggbgwrrubrwburbuuububrbwrrrgurwugwggr
wuwwugwrbbuuburuururuwwrggbubwwugbuwugbburrwuwbubgbw
ugbggwbgurubbwrgwgggggwggrruubrgrwrgugwwgurrrbwbrwwur
wurubwrrbbgruurbbgurbbubuggubrrwwgbgwrwuuuwrgwbbrbw
rwwbruubgwrrugggwubgwwubwruuwggwrbwwbbrrwb
ugwgbguggggwwbwgwwuggurbwwgrbbuwurugwwrrrgugburruwb
brrrugbwrwbwwurbgbwwuugrbwbrgwgrgrbgrurwgwurgwruuguwbrurwu
rruwrrbgubguurwwugurrgrwbbuuwuburrbwwbbrggwuwr
uuwrburgruurrbuwwguurwbwwbwggrbubrwuuwuuwrbbg
gbbrrwgggbwwggwgwuurubrrurgwgwgbwgubwggrrbggug
wrwuggugbrwuuubbgrbugubbgurgrrburgwrbugrwb
bbbwgbuwbgrgggugrugwwwbwgrrbbbuubuguuugwburrrwrggwrrruwug
urbwwguugwrgbrrrrrrrbbwggrrubwgwugbbbuurugggrg
uugrugurbbruubwgbwbbbwubbrbbgwuuuwggwwwuubrrrwuwubrgrbrw
wbrugrwrwrrgugwugrrugugwubugrrrwbrwbwrggbwurrbgubgwbgbbgrwb
uwwbbubgrrrurgwrbgurugwbbrbbburggguugbwbrbgwbubuwbbgubgwg
rrbwbrbruwurwbwgggwrguwbbubuwuwurwubgwbwwgbubggwbbubbrbr
wwrwggbwwwrgubwrbwuuwbuuuwbrgwwrbrbrguruwrwbrrgrugb
wwbwrrubbbgwurbrbubwwbbbgbrbgbwbbuggrurbrwgwbubguurrwrwwb
rwurrgwuugrubggwbuubrbuwrggguwbgrbbgrgbbuwggbgwrbwgwbuuru
gwrrugbuurgrrwgbggwggguwwrrbgrbwwrrgwwbwubwbwrgbrgbgwwbgu
brrrwbururwwrwwrrgbwbubgbwgrgwwruuuwgugrwwrgbubru
uugbwguruwuwubburrgbbgbbrwrrbubuguugwgwwbw
gwburgbrwgwwubugrrrbuwugrbbwrrguwrbgbbgrggggbwuuwwgwgbww
rwwwbgwuubugurwbwururgbwbwwrwubgwuuruurbwbwgbwwbuwgg
bwwwbuwwrwgurbbwbguwwgwubwuwgwwubbwwwuwuuubbwr
urugrwggbbrburugwggbwbbuubbrbguuggwurgbrbbbgrbwuw
bgrbrbgbgwrrwgugbubbgbrurwrrgbwbbgrwrwbwwb
gbwubwgurggwbbgwwgbrrubguwgwwbrgwgrgwwwgwwbruwrwbuurwb
wuuwrwrbugruurrrrgwurguggbgwubugrugwwuguwwruuwbrrrwwruggb
ugrugbrrwuuwrwuguggwwgggubuwrrbwrugwwuugwbburrbrwb
wrrggbggbrgurbwguurugbwgrgwwgbwbgrbgwrbrwb
bugubbrwbuwugwwrwbgwugbuuubrwbugwrugggbwwrbgbwuurgw
bwrrwbrruuuugugggwgrgrwwrwwgwwgrbggwruwrwwwgrurwgggwbbw
gwwuwbuwwgwuurwwwgbruwuugruuwrgbbwugwbbwbguguw
uwrwwrurwwuwwwuwuubbbwbbrrwwbrrgbwbwggwgwruurrwb
rguuugbrbgrbwbbrwuuwwubwrrwggrwrgwwrgwuubwgbbwubbwbgbrruwu
gbgrgrwgbbbrwgubugwwuuwrrgbwbwgbwuwrugrbururbwrwrwbubrr
ruwrgurgguuurrggrurbuurubrbbguwbbrrbuuuwrgrwb
guurwgbwrbuurrrbugrbgbbrurbubbuugrgbwugbru
uggbgwrrgrrubgbbgwubwurgbbugububwrwbrgwbbbwwrwb
gwwgbbrrurbwwwrrrbruurbruggbrgwbgurbrwggwbrgurbbbwubbuw
wbgrwbuguguwrbbuurbubgubwgwwbrrrrbugurgggbbgb
buurgwggbbwgrrbruwuwruububuubrrbrrwrgbwbbwbwwururbgurbrrgrwb
rbgggbwrugrgwrwgwurggbrbgwgwgwwrbubbrwrbbuurugrrgwbrggbu
grrbbbwwguwbruwggwruwurrgrbgwubbubggwuugwubuwrrugurwb
rrbububbrrbbuwwuuwggbbwuwuwwrwgwwgwgrburbgrgrw
uuurugrbrrgwbrrggurrbubbuwguwuwgrurwbrbgwurwurw
rwubrwbuuuwbggrbwrwgwwrgrbrrbbwgrrwrwrrgbruggwwwgbbrwuuwrg
bburuwbugrggrwggrwbgbbuurwubuuugrbrrwgwgbrggrgggwbuuwbwbuw
wrbrbugwgrbuwrubwgwuwugbrgbwrwrgwururwrrrggrgurrwb
rggrbururgwuuwgbuwuwrruguugwbgubuwrubuwbrggbggbggrwb
gwurbruwrrgrrwbbwuwbgwrgwubbbuburrgbwrwrwb
urbrugbrwurgrgbrruwrbbrgwbrrbrwurbbbugwuugrwguwr
brrgurwwrguuubrggbggwwbgbgrrwwbburwuwrrwggbwubrrbggugubu
rwgwwuugbwrwrguwrrbrgwrurbwurrggwuwuwbgwgwwguurgrwb
guggggubguggwugbgbbwwgurubwugrbwgububbggbbrwb
wgwrguwggbugwwgrrrrwgwwwwrwwubgugwugbwgwggubwubrwb
grwwgbrwbubbwrwwwubugbgrubuuwbgurwurrugbwrgrrr
uugwwbuubggggruwugrurguwwwbrggggggrwwwrbrgugu
rgubgwbwurrguwgwburwubgrgbubbrbrruugrugbgrwwru
wbwwrubbbguggwbuugrgwguruuggurwggrrbruwbwrgbuw
rgugbrwuurrrrrurubrrgguuwbrrwruggubbbubgbwguurburggbrwb
rbuuggwwurwuuwgubgrbrruwrburugurwuubbburrguuruwr
rwurwrbbubgrwgggwwwbruuubwrwuwuwgrgbrgrgbugwrubrrbwbwbwrwb
gwrgbggrwrgbbbuuggbgrrgrrrruurbrwuugbubgbwur
rrurrwuuwuguuwbububrrwugbwuurbbgguwrwrrgrwwgbrggrburwg
ubruwgwbrubwrgbbrbbubggggwrggrgwbgggbgrburuwrbbrurgrgbbww
wrwgubgbwruugwubbggwugbgwwugwrbruuuwrwbbrrrru
rwubrrgbwrbgrbrwggugbbuugrguruwwwugrgurwb
wrgruuwrgguwwbrurbbugbrgruwrgrwggrbwwbwbgwrbrwubwubrwb
bggwugbrbwbgugwuwwurrwrrrwrgrguwuwurwguggwbrrbugrwr
ugubbwurburwrrbbbgwrbgwuwgbubrrgwgubrubrgrbb
gbwuggwruuuguurrwuurubrbwwbbwwuburgwgwurbbubg
uubwugrgburwubbbuururrwrwrgwurbwrrwurrubrwb
urbrwgwbuugbrwgbugggbbwwbuguuubbubwbguuubgbrrbububrru
rrbwwwbgrgwgurwwuwrbgwrwgrruwbgwbgugurwgrbugrbgbrbruw
ugrwbgrbrburugwbgugwugurrgwgrgwwrbgguwgrwrwb
wwbgbrgrwgggrbrugwwrwrbgubgrwguwbwubwwbgguggbbrgugbugrbbr
ubrwgwuwguwbwgguugrrbwuggwubbwwrrurbwruwbuw
gubrwwrbbrwwbuugrbwwugbgwwbbbugwrgbwbwwbwguggb
rurwgbbggugrwbubugrrwugrubuwwwwrwububgwwrwgwbr
wgbbrbbubgrrwwwgugugurbrubbuwbgwwwgwwgwrbwbw
ubgubwgwrwbuubgbbgrwbubugbbbrugrgwurubwgubguwugrrbu
gruuuwggwwwguwwguubggbguguuugwugwwgugwrwb
wrwbrgbgurwgbrbgurbbbggrbgwgubwbbggwrbwgbbu
bggubwbggbgrrrrggwbwbbgrguurrrggwbgurgrgwbuwbwurg
wuwbggrwwwbubrbwgrgrwgbrurggwwwubwwgwgbwuwwuguuwwgggbb
rwrugrubggrbururrwuwurbrwbuuggrbrbuugrwubbruggrbwuuru
wbrgggbwgrwwubbbguuuugrburubbrbrrrwubwgwguu
wrugrwruurrbwwwurggwbbwbuggrbwuruugwrburrwb
rburbbrwwrwgwbrubgwgwrwgrbwurgubuguwwwruuggbbuwwwggrwb
gwuugurgwwwrwwgbrbwwugwgurwbbbrwuwwwgrgbwbbgbbgruwgwwgwrb
rruwgbbwwrugugugrwubgrguguuwggbrrbrbubbwugurbgbubb
uuubwuburgrrwuugububuuwwrwrgbwbbgwgubwwgwgubrrbgbruggbu
wgrwuruuurwwbrwbwgrrwwrgurrbubwrwbgwrggbrrgugbuu
ugwbrgbbbwrgrgwbrguwrbrrgggbbuubgwbwgbgrwbrrwrrrgbrbgg
rgrggguuguwgbgrgrrgwrbbwbgurrrgwbwwguwbgggrbugugrbrurwb
bbwuwgrbbbbwrbrgbrgbbbburgruggrrrrbwrbbrwb
wbwuuwrruwggubggbgwbwwbggwbgbrrruggbwrrrbrwrb
wuubruggbruggbwbwuuugwrrwuwrgbwwbwuwwwrrgwrr
uwwgrbuubwbwbbrwburbrggburubwgguuwbwgbwburggwrgbrwb
ggbrubuwuurubruuubrbrgwuubguwbgbgwrrubrrrwb
rwgbbburwggwwgbbbrruuurbgrgbggrbgruuggbrgggg
rwwbwgwgwwbrbugbuuwbgggggwgrurbgrgwgwrgbbbuugbbgruwgwwwbg
rbwubbwuugwggrruuuugbruwwwwuuuuurgbgwwwgwbggwgbrurww
rwguwwrgugrbuwrwwbbugurrrwubruwugbrwubrwrgrbggbgr
ubbbugrbugrwgwggbwugwwbgwguubugbggbggrbuuwwbbbbbwr
gburuuwbrwrguwbrubgbwgruuwrwgbrwbrwwgwbgwggw
ggwwwguwgbuwrggbugurrrwwwrbrrbgurbbbgbruwrwwrbgrwwbuugrwb
rgbgrbrrubwuggruuwbgggwguuwwwrrrwuwrrgrubbbgrr
uwwgrrbugrrbwgggwuruwuuwggwbgwggwrbbuwbrrruubuguwugbrurwb
brwruwruwggrrubrwugbgbwwuggggruubrruugbgurrgwwugrurbrr
rgbbrrrbubrgbbbuuggruuurguubwgwgrwwgrbbwruwwb
rrbuuwgbuwwwbggrgbuurrbwwbwbwbrwwubuurrggrbg
urgbuwuwwugbrbguugbrbbggwggwgburgwgrwgurrbwwgrbbgw
uubrrugwggwgwbgbbwggwrrwbruwbrwuurgwwugrwgrwg
rgrguwguwrgwwgruggbwwbugbruubgurgrwuwrugbbggbuwrrggrwuug
uwubrubgbbwrgbgugwwwwwubwwubrburbbuurgwrrbwbubrbw
rgrbbwggrbgrrggrgbububggwggwwwwbrubguwgbuwbruwgugrgwrww
bbrwwrwgbgbgbrwwubbrgwuruwbrbubrrburuurwb
uuwgwgubwwbburwgrrbwgwrugrbwwgbggrurgwbuwru
uuggrgwuguuwwrbwrbuwrbrbgbuburuwwbbgbggbbugwwbu
bwbgwgwbrbbbwwbwrwgwbwgurggguwugrubrubrbrbuwwuugubru
uwuwrgwuubbruurbbbururrurrrbrwggbgbbgwrbuwubgbrrgwuurwb
bwgbbrgbbbbuugurgrburrrugbuubgbbwwwwgbuuwuggbgwguubb
uubwbuurbbwgbrgruwbugguguwbubbgrgbbgwbubggrrbwrwb
rrrguwbgwuwwbrrwrrwguwurbgbrburrwgrrburgwbbrruwwrrwbwrb
rruguburbgwgrgbguggggrugrgwbwwbwrbggwwgbruwuwrwwbubgburgr
rurgbwbugrbrgbgrurruwbubugubbgwuubgrwgrwwwgwbwrwbbwb
bbgbwggwgbbwbuugrrubbubgbrbrgubrugugrwbrwwbg
gwgugbburwwwwgbwwubwrwrwuurruuwuwwurugrrrgb
wwwrrrgruwrrrwuubwbrrurwbwrwrwbwggggrrbwuwggg
gbwrwguguggbwwrrbwgwwbwgbbbgwbuwuwrgwwrgbwuurb
guguuugbrbgruwbwbubwurrwggrubruwwggbwwubguub
uubbrubgrwwwuwrwgugbwbgurgrbbrugbrurguwrwwbbuguuuburwb
gubbuuuuubbwubgrwwguruggrbrgrrubuuuurrwrwb
uwwgbgrgrbrrgrguwgubuuwbwgguwbgurbwugbbrgguw
buwbgrggwwubrgrggbwurubgrbuuuwurrbuwurbbbbbrubgbrbuwwwrw
uwbrrbbwwruurgrrgrwruruwuubrgbrwwgwbugrbbrggrbwwbgrrwb
rbwgwbrguubbbugwguwrgrgbggbrruggrwubrwbgbwwuuwrrgwg
rbrbbgwggwuuburggwwrruruuruggwubruwwbrurubwbu
rbubuuurbwrugurggbwwbugbguuuuuwrubbguwrwb
bbwbubwrbuwgubguwrwrwgbgrrwwruurwwrbugrrurwb
bbuguurruwrrbguuuugwrguubwuubrbggrwubgugbwbwrrurugrugrwb
gbuuwurrbrwwrubgurbuubugrrbwubuurwuwwwgbbgbrwbrrrubggrwbgwb
grggrugrrbruuwbbbrrugbbbbuwbrwurrwgbwbuwrwb
bguurbwgwgbgbgrgrbbwgbbwubbwggrbubrwrbrubrbrgrwbburwb
grrrbrrwubuuggrgrurruuwwubwuuwubrrbburbrwwggrwgurgwgggwr
wbgubuuubwuwbrububrbwgrugrrbrrwbugguwwuuugu
rrgwgrguwruwgrwwrbgrgbbbbbwrgbugbggbrrwb
gwbrrgrruurwurburwbgrbggruuurbrbwubguwgrrburbgwwwu
bwwbugbruwrrguubruwbruuwrrwuwbruwgrwgwruwurgrbgurgruguwbg
brgrrbururwguwbburgurgrggbgubuwgruuuurbrrrrwugg
uwrbugwwrwuwgwwbuugbuurbwwbrwwrgrbggbgwwwrbrbwrrubbgrugw
uuggwbwrrwgrruwgggbggbgbubgwgbugwwrggrgbrgrururgugur
bwwwrugrrgbggbggbwubburrgubgwgwwrbwwgwbgurw
gburbuurwgbwgwwgggwbguwuwruububuwububwuwbgg
gbwggbgguwggbgwwrurwggbuburwrrgrbgbbuwuuuwrggwggwb
gbbwwwgbgwurgrbbwbgguwrwrggguwbugwbrgbwurgwuwgrrug
rgbugwrgugwbbbgggrwgwubbbwuurbrbrwbrgrwuurwgrg
ruwbuwurgwbuwrrrgwbrwrrruwwgggwugbwwrgruwgwubbgrwrrrwu
brrbwbbgwwwuururbrbuuwwwuguwwburbrurwuwgbwrbuubrbbww
rrrwrwugurubugbubbgwgrggwbbggbrugwbwrbggburgbrwr
ubrggrgbgwgruggrgrrwbruubwrrurubrbgwrwbggbrgbbrgwbbbr
ggrbbggrurbrbruwwugwrbrwrrbwgbrwwgubwrbrrgrbbwwwruwggww
wugbrbgwwwwrbugbwwrrburuwrbruruwuuuurbuwwwbgrgbrwb
bbgbgruurgbubburgwruwgrwuuubbwbwgugwbrbuuwwgurrurgwwrrb
wwburbbgbwurubrbrurwwgrwgubbgwbgrguuugurbwuwbuwuwuru
bwrgbuwrrrbubbwugbbrrgwgrbbbuguugrwbrurwrugguubbrubuggrwb
rgrwugwgbuuwubwrguuburuuuwuwbgguwuubggrrbugrbugwbgwwubwwbb
wbwrgurwrwrgggbbgggwwrbrbgurggubbbgrgbwbug
rbwbuwgurbbbgwuubwbgrwwubwbbwbgggwurbbbgbuu
wbburugwgrwwwgwwrwrbubrwuwrbgbwgbbwbrrbwbubbwbruubgrug
wrwggwgwwuuubbgrrwggrguubrgurrwuurubwurggwbrbbbugwuuwubwgu
bggrgbruwguurrurrbwuuwgugbrbwbuwwgwrgurggwburbbwgbuw
wwwbbugrrwwbrbwwgwububbuggrgrurggrwgrurruggbburwwgwurwb
rbrrwubgrwrbrbrggwwrurrwbwrurbwgbubggbrrrwwrwb
wuburwgwrwuwggbwwrgwwwugbwbggrurgbrurruwburuugwrwb
gwbwurbrbuurgwwbuuurrubbbrbwgruwuwuuuugwgbbb
wguwrbrbrgbbbggbggbgbgwgwbrggbggwguwurwwbbwbrrrrbwrwgrwb
wwwbruruubrurbugrrwwuburubbguwwrrbbwbbbrgbbubuwrurugr
brurrgggruwgrburwuggugrrbwbuuwbwuubgurwubruwrgwurbrwb
gwrruuwbrbwwbbbuwbwgrgubgggggwubgugubrbgugwuuburubugruwu
uubwruurruwwbrwburwggugggrguuurrgbbwbuggbwbuuurbgrwb
ggwrurbgrwgbbbruuurbbuubrwururgwwbuuwgrgwrgbubugrbrrgg
gubrurubwbrgrwwgggwwbwwguubbgggbggwbwwrguwrgwuggr
rwwugrbggburrrrbgwwgwgrurbbrguwrrbbbruwubgrgbrrwb
bgrrrbbgrguwgwwgurwwwrwugwwgrgrrwwguugbbruruuuwburbbuur
gwrgubrbubbbbrggrrbgwuwwbgbbuubugwgrwubgbbr
bwwwgwguwrrguruugwwbwgrgrwwbbwbrrgwbburuubbugbbrgggw
wburrbwwgubwbbwrbrgrwrbwugwuwwgwuugwwwgurgrguwuwgrgruu
wggrrrbgbgwurwrrwbrubbwbrwgrrwuugbrwwuwgruwwurw
rrbwggggurwrbwrrwubbrrurwwgbbrwuuwrruuwbrwb
ugwwwrbrbugbgrbuwbubwuggbwwugbgwrrwurrrwrrbgwrub
gbwgguuguuuugwgbuubggwuwbgrrbrbgwwbgugguruwrwggwwrwgwgu
wuubbbugwgrugububgrbgwugrurruwbwrbggwbgbbgurgrgbw
gwugwbbrwbwgwrwbrgurbwuwuugrrrbwwrburubgwrwwbbg
wwrgrrbubbuuwwbuwgrrwrrgggguwrrubbugrgwwbbug
gwubbruruuuwbbgrugbbbgbgwurwgwgwbwbwugggugbwuburwb
grgwgwrugugbgbwwbwubgwgbrgwguuwrrwwwugbgwgbgwruwwrwgwwrwb
rwrggugrwbbwgbubuwuwrrrgguguwrggbwbbwrrwb
rbgbwuwbwrbbwbbgugwgbbbwbrrrugwbrbubgruburwgwrrwb
wrrgbbbbwwuwgrgrrrbgurugbuwuubrgbgrbbbrrwb
ggrbwgwgrugrbrrwgugwguuwubuwwrugbbwwbbwuwggwuu
rwuuwwbugruwrruubuwuruuwubrugwrrwgruwrwrubbruruuwwg
rwrwuwbuwugbubgbbrguwgubuubbuwbwbgurubggbgubgwu
ugrrrruuwruuguwggubguwwwgrwuuwrwugwruwgrrbbw
ggwgwgurwrggrrwgwruuguwrugubrbuurwwruwbgrgrwb
rwbrrwuwbbbgbrrbwburwbbgbggwbbggwggugggrrrwbugg
ugbruwrruwgrbwuggrwwbruwwubrurrggbubgubugbgruugrrwb
wwwuubbwubwrubgubwrugrurbugguurburrrrwgguwwuggugurguwurwr
bwwbrruwbugbwguubbgggbrwbbrurgwbrwgggbgugbbgrbww
brgbwwubgubguwugwwuruubggwwuuwgwgwggbbwwbubbbggu
rbbrbbrurbuwwwguggguwgwggburbggubuwwbrbbubruuwwbgbru
rwuuugbwgwuugurbwrrwwbugbggbuururrbgwbwuuurggrurbgwbgggrrwb
bbgrgwwugwbwugggbugbgubgbgwbbuwrruurbwurwrgwurwb
bgwgguuwggrbbugbgwwwrwurrrbugrgguugrbgwbgwgwggruwwggwwgrwb
urrwggrubuwgbwggbbuwwbwbbwwrrgwrwbgurwurru
uwwbugruuuwggrrrrrbrrrbrurgwrrwwrrwbwbruwbbbuggwuu
wrururubbrugbggubggrbruuuubuubwuggggwwwubbwbbwbgbgbbgurwb
ubrubrbrgugurbuwrwuuwgbgwwrrwrrbbgwgbwruwrrrggggr
rbwguruwbgbgbbbbubbrrrugrruggurwwgrrrbrwb
rurgwubwbwgubwrbgguugrruururgwgbuwwurgugww
bwugrgruugguguwbgrbbbwuuwrrgwrrwrrubgrbrgbrggbww
rrgwbrwggbbgrggugurwgrgbrgwgbwrruwgwggwgrwuwrwbburwwbu
uurbwggwubwgwwguwbbgwwggugrrruggbgwbrrgwrr
grwbwbwrgrwrrubbbgwgrbbwrbgrurwrguwwwwggrbwbrwubbwrggr
gbuwbugrgubbrrbwwrbgwuwrwrbrbrwwbwbwrwuurrruurwb
ubrwurrrwwrbgwwgguubuwwgwbguwggurwbbgrugwbbrubug
rbugbwbguwggwwrwbbgwwuuruwwbrububbrurbubrgwwrbugugwbubggru
uuguruubgwwrrrwwugwurbgwbubrgrurrgwuuuuuggwbgrwbugu
gwwbugrrburuuwbwwbbugguubuuwwbuwbuwgubuwbruuugrgurgbuuubbw
ugwwgubwubbrubbrugbbbrurwgrgubgubugururgwgwwburgr
uggrgbruwrrbwrwgrruurwgguguwrwrwgbrggububgwrbguwbugwwguw
gruruurbgwrggggbrrugrbrgubrurrgugbbgrbgrwwugbrubw
ruggggwgbubuuubbgbburuwwgbbugrwubbrubgbrgbggrgubrb
wrguwbuwbrrbbbwbwrbgrrubwggbuwrrrgugbbrwbrguugrbrwgbrgg
rrgrwbgurgbbrgrbgugwrgrruruuugrgrrbbrrrwb
uuggrwugruuggrurbwggwgrwbwrgrbbbgbwbubugwg
rwwwrwrrbgrrgrgrwrgururgwrwburubwgrguwbuwwrrugugbbrwb
bbgguuwwuwbbuuwgwgurrwrwgbbrgurwgbrrbwrwbrwrbuggbwwrwrbuw
wrwwbgwgwruwrubbwrrwurwubgrrwrggbbgbbbgwwbgwggrbbwbrbbgbg
wgggrbrbwuwgubrguubgrguwrwuuuwbwwubuuwgbgrgbruubb
uggrwrwwbguwurbbburrgwgwururgwrgruwbwuubugubrurbuubrwrbuurwb
wrugguwugrgbuuwrbugrubrggggwwrbuwuurbuwruwwuww
wugwrwbbbrbbbrggrwbuwrwgwwbbrbwwgbruwugwruggggbw
uguurbwgwbbuuguwrwguubuugwurbgwrrbgbrrguwuwug
uwwuubgrrwgwrbbrgwwwbwugbbggbuuuurgubgwugrbgurbbwug
gwuwgwrrwgrwbwggugrbrggubbuburbbbgugrbuwrurrwbrwgggr
wwgrugrwuguwbruwugguurguwrugubwubrbgwwbrwbrwgbwrgwrruwurbr
gwgburrgwuurwburubuuwwwwgbbwbggwwgwuugrgwrbwrrw
rbgwgbbruuwwugugugrubbuugggwgubrguwwgrwgrrrgwbggbuguwu
rwwrrbrggruuubgruburgwubrrguwbwwgrgbwggruggwg
burgwuwugwbbbgrwgrubguuwugrbrbguubwwwrbbrwbrrugubuwwguuurw
gburugwwrwrrugugbbubrwrburrugrubbrurbrwwgrbbww
wuubbrbubbrbuubuwuwwgbuubugbrrgrugwrgwgwwwwwwwuurb
wuwgrrgwbbgrurbrgrrurbbgwuggggbgwuurwggurrwb
grbbggbgrugwbuubruwrgbwrbbwuugwrrugwrggbrurbwrrurbrwb
uuubbgrbwrurbwbuggbbgrwuguuwubrwgbgrrwurubbrwgggwbggrwb
urgwrgbbuwwrbrrrbbrwgwugwwrgrugwbgbbgrwb
wgbrwggguwwruuwwggwwrwbbbugbruwugbbbuuuwwgurrrbwwbubbwgburwb
buggbbgbgbbwwwurwrwrwbruwgwbbgrruwwgruubgwwwuggur
rbgbwubgbbgrurwwguwubrwubbuuggrugurubwuwgrwgubgugwguugrgw
urbbgurbubwwgbbwburrrbgrbwwubggwugbrrbugwrbgubrb
wbrurrrbgrgbgbwwwrwurrwbuuwrwwgrburwrrbgruggubgrguwgbwur
uuururbwrrwgwbwwrwwgwgruwurrbugwrgburgwrwrbrbw
rrwrurbrgubuguwurwgururugbgrbgubrgrgggurggugurgrbbuwgw
rrwuwrugwwbbubbrbrwrbwbwubgubgwwgrbugwgrugbgb
grwgbggwwwgwrwgruggbbgwrgwubgwrwguwgrguuuuuwgbbubgguugg
rbuurugruurwuwgburwgwgugrwgwwgwwgbrrugguwruw
urubgguwggurwbgrwwbubguwggbbbgrugwgrbgbrwgwrrbrbbrguub
wrbrurgwbubbwbbrwbbrugwgbubrwbgrgwguwuugbgugrgbg
rwuruwurgugggrgrrrugrurgggrrubguurbububugugbwurwuwwug
uubwuwrwwgrbbwgrrgubwgguggbrrwuruuwuubgrwuggbgruggbrr
uurbbgrgbrgbbgrgrbwwugbrrubgubgurrbbrrrbubr
guguggbgggwbbwrwrbwbgggrurburgurgbbwwgruru
wbrrbbuurwruuuwugrgubwuuurbrwurwurbwwbwububwbbbrwb
ubbrwgggwrwbwwwrbgbrrrbrubwrgurgbbgbuuuuugbwgwgrwuwwbuu
bwrbggbgrbbgubbwrrrubgwburgrgrrruurwuuggbguwbwwurrwrwb
gwuguuwbruwuuggrbrrbuwurbggbbwguwwgwwbgrurrwb
rrggbbgurwbbbgurbgbggubgrruuwbrbwgbrguwubbggguwbgruwwrwb
uwugbwwwrbbruubwbrgbuuubbgrubururrbrrgwwbgrwgbrwruwrwb
bwurruruwuguwrbuuggbwbrubbrwuwurbgwwbrgurgwuggr
ruuuwugrrurbwrgrbgurbrwbrbubbwwuuwwuwwuugugbbgrbggwr
uugrgwgwwgrbrubbugbgbrguwbbwwgrubbbgbgbruwugrrwb
brbgbwwwbbuuugrwrugbwurrgggbwwuubwruuburrbrr
wrwrgwwrwrugrwrrurbuuwgurgbrgbrwwbwrggwbrbbuugrbbwugrwb
rugbbggbuggwgwwuruwrwbggwgburuubuwugbggbrbgubrwgr
ubrrwuwguwwrbgwbbbrrgrggrgrgwgbrugubuwwwwuwguuurwb
ruguguwuruubbwwwgwgrrrwrwwuuuruuuwuwgwubwwrwu
brggrwrbrwwwuwwbwrgwbwurbuwwrbrgrrugbwugrbguuwb
gwuugwuuuggrgurbbwggrubbwuurruuwrggrggurgrrwrrgbrb
ugwggbgbbrrwgwrbuggurrbuugbwrurbbuggubwbgwgwuwgwrrrwubuwurwb
wwuugrrggrbrrgwuuugbwbwrurrbuwwwubwrbrggubbubbgrrr
ggwuubgurubrurbwgrwwuggururbrgruwgruugugrbwgrbubrbrb
rwggguwwubburgwwuurrurrrgwgbrgbbbrruguwbwugguuurr
rrbwbrrwbuwwbwrrbbbwwubuwgurrguwugguwrbuwuubbwuwrbggbuu
grgrbggrburrbgwbwbuugugbburbrwrrrguuwbugggugrrrgrwrwb
buubrrggburbggwgwgrbgurwbwwwubbwbgbwwuwbwwrwb
wguuurrggwguurburgugugbrwrgbwrrwbgrugwuugbwgbbuubggrugbub
wbwgruuugggrrubbwrwwubugguguwwguubwurwgwwrbgubwrgbbubrwb
ruwrggugbbbbgurwggruuggwwggrwwrwbbbrwguuuuug
bggwwuwgwbuguwggrgurbwugbbbuurwgwuggubgrwbwwwbwgrrbuug
rrgwugbuwugubuuggbrwwguurwuwugwuuuubgrwrrwrbgrgwbuggwr
grguwrrurgbwbwrgwwwrggrwbwgbuwbbbwbggrbrwbbrwb
uubgbrgrwbbgwrbrwwgbgburbuurbubbguuwbgbuuwburbubggguug
gwbgwrbwwwubuwwrwbbwrrrgwuwbrubwbgggubugbwwgggburrbugrgu
bwgwguugggbrrbuggwggwgbrbugurbwwuuwwwugbbubbrwb
rwgwbgbwwuwrbgbgwbrwuwruuubbrbwwuruwbwrbrwrwrgru
wwrbwwwurggbgggugwuggubbbwgrrwrbwwuugwrbubwgrbgrrr
ubrubggrgguugburwgbbrwurbrburuuwwrrbrrwwbgwbgggwugurugwwrwb
gbggrubrgubgubbwwwwuwrbburrgrwbrgrwbrwguuwwuwrgguwrwb
bbwgbrwggwrbwugbgubugwwuwwggbgubwubgggwwrbgrwrwwgb
uubrbgbbguugrruurbrwbbuuuubbwwuruuuwbbgwbgrbwrrrgb
bbbwugurwrwurgbuuugrrruubrwrgwguwubrurgburbgrrwrr
gggwwgwubwwwrrbubuuuggrgrgburugbgbuurbgrugrwrgwgruu
burugbguwbuwgubugubbburrgrrwuruubbrbrwwbwrburubwubbb
wrwbwrbggggbgbruwwwubuurwbgwgrrgrwubwrrbbggrgbwbwbbbuwbbrwb
uuurggrbbwubuwbwbwrgrbbwgrgugbrruguuugrgrubb
buuugbwbbgwrgruuwrbwbgwbbrgwbrgrwruwwwgwruggrb
rgwrrguwuugbgrbubgbuburgrbuuwwgbbwgurrwwubrgwguw
ruuwwurgwurgbuwurruurbbbbugrubrrgwrgurgubbgbbwgugrwb
urrwrwgugrrbbrgggrgubwbrwwgbgururbwruguwwrgburg
rugrggruuubgguuwwwbgbgbbgugrwgurrruubrgburgrrwb
ubwwrugbguwrrrbwuwggrwrwrububurbgruwbgwrbbbgrrrgggwr
wuggwbgwbbbwugrbbwwubgrbwrgrgrrgwuuwgrwgwwurug
bgwwbbbwrrwugwgwwrruggrbwuwbwwgrwrgrrguwgrurwgurgggrrwb
guwrwubwrwwwgugguuwwurbgugbuwrrbwrguuwgbwbbgbgurrgwbbu
gwugguubwruguubuguguugbuuugrrwrrrurrbwgrbwgwugburuu
brwgwrbbgwurgrugggrrbbwruugrgburrwggwguwuuwrrbw
bwbugwurgbgurwwrugurgbbgbuurugggwugubrwb
bbbuuubggggggwrbrgbbwruwuuwugurbubgwgrrguugbwuggrubrwbwgr
wgrrrurugrbgwbgbbrrgurrgwrurrwwwbgrguuggrgurwww
gubbrbwurgwwbbggurwgbgrwrwbrugrwrburgrrugb
uubuubgguwwbrrwwwwubgwbbwbwwwwugguguwburgbrbbbg
ubgrwugugrruwuurrwguggwuwbrwbwrugruuuwrugwwuwrubuugbrwrrrwb
wrgwguugruurububuurwurrwuggrrubbrrrgugwuugwurgrg
bwubggubrrburbrbwggrurwrbwbgbbgwggubggbubrububrwb
urugwwbubbrrwwwrbrwuwbwurwgrurbwbrurbrwrgrruburwb
rruubgwwwgrwrggubgubwrbbgwgbguruwwgrgburgwrg
rgugrgrbbrgwbguwgguguwrrubgwwgwgwuwubwbwrggbwuuuwrrbwgwu
gwuwbwuwwbwwggbbgrgwugwrgugruuubgwguwwgbbrwb
bbwuguwwwuguuuuurrbbububurbwruuubugbgrbuwgrururwb
bbbugrrrbrgburgwuuruwrbwgwrgwgrugbrgububrbwwgrbrgbuwbgguu
bubwuuwwuwbggrwwubruwbubbwwgwrubuguwbuuwugwrbbugr
uwrgubbrrgguggubuuwrrrwrrurbuubrgbbbwgrwub
wbbguubbbbguwuwbwrgwwubwrurgwurbrrwurrbgrbbburw
rgbwugbubggbrbwgbuuubrwgbrruwggbbggbbuggwg
rgrugbgrwbwgwuwrbggrwuburrbguwguguuugwgubrgruwwbw
uuuruwuurbwubrwgwuuwbugrrwggbwwubbugwgubbrwgwwwugbwwrwb
brgbguwuwggbbwrbggggbrbubbwbrwbbgwuubbbbgwrgwgbbwu
uggrgrubuuuwruuurbuwwugbwwgwwguubuggubwwugrrwbggwrgubrbwrw
wbburbgbbrbbggrgrrurwwgurbubwuurwwgwbwrgbguuuwrubwwubuu
buwbgbrwgbubbrbrgwuwbgbrwburgbbrwgguwwbwgbwbgbww
gurwggwurgwbbubbgbgruggbrbubuwbruwwrwguggrbbbrggwgbrgbgu
wbwwwbbbwgruuuwubbrrgbbggwbrgwwbgurbbwgwgwgrbggwrugrugggbrwb
bbgrwgruggrwwurwwrggbruugbbrgwggrrugrwuuugbrrwb
wwbugbwuguwgbrwrwgrrbuwgwuwgwrbbbubwwgbrguwuw
ugwbgbwrrgbwrrrbrwwguggruwugwwurwrrbgwubbwrggugbruuw
bbbruuwuwwurrwbuwbuguuggurgbgbruruwurgbgbgrrwb
bggwgrggrrugwwbuwgbrbbgwbbuwwuwbrgbwbggwbbgggugwggrwbbur
uuurruuuuugrbuwwgrbwwuuwbruggggbgrbuuggbuuuwgrrb
gbgrgubggbgrgguuwbwbrwbggwurgbwwwbrubwgwrggrbwurggrwrrr
ggbrbrbguwguuugubruggbgwbbuwwrbuuugbuuwgww
wurrbururbgrbrgwggwggrgrgrgbgrrgbbwwgbrgwururwb
uubugrgbrubuggrggrbwbbbruwbrrwugugrurwbgwwwbubgrggr
rgwwbwgbwugugrwrrwubrwbgwuwuruggbguubbwbugururu
wbuwrbggrrwbgbrbwwwbbgwbwrrggubrubbwbubrgwrwburbgb
gbwuruuwuwwwbggurugrwgwubbgbwwwurgwbruwgbgrbwrgurwb
gwururwwugrrubbruwbuwrbgwrbruugbuuugggwbubwubb
wgrgrrgwwruugbrrrbwwrwrrgbguwwgwrbgwuuwbgwuwrugg
ugurwrbgrbubwbbgrwgrwrbgwbwuwubgrbuwwrubrggwuguwbgbu
ugrrburuwwrrwgrugbruwgwbbubrbuwbwwruuurgbuwwgwgbwwbuburwb
wurugurbrbubbbbburuubrbrrbwubguwggwubbrbrbrgurrbwwwuggwg
bwrburggbggbbgbuguwbgwwbbbubugwguwbbgbgwbg
gbwrbgbgbrugbbguruuwgurwwruggggbuburbgwwrwb
rubrgwubrrrrrwbwbrurbwwggrrburrugrrubwbbguwbbgrwwrbburrwbr
wgbuurbrrbgrugwgubuwbgurrwwuwgrbrgrbgwrwwbrururuuwrrrwb
grwuuggwugwgrbggggbwbgwububwrgwgburrugurbugurrrwrwrububrwb
bbggugurwurrgggrrbbrurubbwbuwbbwwbrwgrrrubrgur
gwwwugwuguubuuwgbgruruwguugrbbwgbbwwgrgrwwrrrrrbuwbbwburwb

2
data/20.ans Normal file
View File

@@ -0,0 +1,2 @@
1445
1008040

141
data/20.in Normal file
View File

@@ -0,0 +1,141 @@
#############################################################################################################################################
#.........................#...###...#...#...#.............#...#...#...#.......###...#...#...###...#.....###...#...........#...#.........#...#
#.#######################.#.#.###.#.#.#.#.#.#.###########.#.#.#.#.#.#.#.#####.###.#.#.#.#.#.###.#.#.###.###.#.#.#########.#.#.#.#######.#.#.#
#...#...#...............#.#.#.....#.#.#...#.#.....#.......#.#.#.#...#.#.....#.#...#.#.#...#...#.#.#...#.#...#...#.........#.#...#...#...#.#.#
###.#.#.#.#############.#.#.#######.#.#####.#####.#.#######.#.#.#####.#####.#.#.###.#.#######.#.#.###.#.#.#######.#########.#####.#.#.###.#.#
###...#.#.#.............#.#.......#.#.....#...#...#.....#...#...#.....#...#.#.#...#...#.......#.#...#.#.#.#.......#.........#...#.#...###.#.#
#######.#.#.#############.#######.#.#####.###.#.#######.#.#######.#####.#.#.#.###.#####.#######.###.#.#.#.#.#######.#########.#.#.#######.#.#
#...###...#...#...#.....#.#.......#.#...#.#...#.#.....#.#...#...#.....#.#...#...#.#...#...#...#.#...#.#.#.#.#.......#...#.....#...###...#.#.#
#.#.#########.#.#.#.###.#.#.#######.#.#.#.#.###.#.###.#.###.#.#.#####.#.#######.#.#.#.###.#.#.#.#.###.#.#.#.#.#######.#.#.###########.#.#.#.#
#.#.#...#.....#.#.#.#...#.#.......#.#.#.#.#.#...#...#...###...#...#...#.....#...#...#.#...#.#.#.#...#.#.#.#.#.#.......#.#.....#...#...#.#.#.#
#.#.#.#.#.#####.#.#.#.###.#######.#.#.#.#.#.#.#####.#############.#.#######.#.#######.#.###.#.#.###.#.#.#.#.#.#.#######.#####.#.#.#.###.#.#.#
#.#.#.#.#.......#...#...#...#.....#...#.#.#.#...#...#...#...#.....#...#.....#.#...#...#.#...#.#.#...#.#.#.#...#.......#...#...#.#.#...#...#.#
#.#.#.#.###############.###.#.#########.#.#.###.#.###.#.#.#.#.#######.#.#####.#.#.#.###.#.###.#.#.###.#.#.###########.###.#.###.#.###.#####.#
#.#.#.#.###...#...#.....#...#.........#.#.#.###.#.###.#.#.#.#.....#...#.....#.#.#.#...#.#...#...#...#.#.#.#...........###...###.#...#.#.....#
#.#.#.#.###.#.#.#.#.#####.###########.#.#.#.###.#.###.#.#.#.#####.#.#######.#.#.#.###.#.###.#######.#.#.#.#.###################.###.#.#.#####
#.#...#.#...#.#.#.#.....#.......#...#.#.#.#.#...#.#...#...#...###.#...###...#...#...#.#.#...#.......#.#...#...........#...###...#...#.#.#...#
#.#####.#.###.#.#.#####.#######.#.#.#.#.#.#.#.###.#.#########.###.###.###.#########.#.#.#.###.#######.###############.#.#.###.###.###.#.#.#.#
#.....#...#...#.#.....#.......#.#.#...#...#...#...#...#.....#...#...#...#.......#...#.#.#...#.....#...#...............#.#...#...#.#...#.#.#.#
#####.#####.###.#####.#######.#.#.#############.#####.#.###.###.###.###.#######.#.###.#.###.#####.#.###.###############.###.###.#.#.###.#.#.#
#...#.#...#...#.....#.........#.#.........#.....#.....#...#...#.###...#.#...#...#...#.#.###.#.....#...#.#.........#...#.#...#...#.#.#...#.#.#
#.#.#.#.#.###.#####.###########.#########.#.#####.#######.###.#.#####.#.#.#.#.#####.#.#.###.#.#######.#.#.#######.#.#.#.#.###.###.#.#.###.#.#
#.#.#...#...#.......#.........#.###...###.#.....#.....#...###...#...#.#.#.#.#.....#.#.#...#.#.#...#...#...#.......#.#.#.#.###...#.#.#.....#.#
#.#.#######.#########.#######.#.###.#.###.#####.#####.#.#########.#.#.#.#.#.#####.#.#.###.#.#.#.#.#.#######.#######.#.#.#.#####.#.#.#######.#
#.#...#...#...#...#...###.....#.....#.....#.....#...#.#.......###.#.#.#.#.#...###.#...#...#.#.#.#.#.#.......###...#.#.#.#.#...#.#...#...#...#
#.###.#.#.###.#.#.#.#####.#################.#####.#.#.#######.###.#.#.#.#.###.###.#####.###.#.#.#.#.#.#########.#.#.#.#.#.#.#.#.#####.#.#.###
#...#.#.#...#...#...###...#.........#.....#.#...#.#.#.#.......#...#.#.#.#...#...#.#.....###.#...#...#.....#...#.#.#.#.#.#.#.#.#...#...#...###
###.#.#.###.###########.###.#######.#.###.#.#.#.#.#.#.#.#######.###.#.#.###.###.#.#.#######.#############.#.#.#.#.#.#.#.#.#.#.###.#.#########
#...#.#.#...###.......#.....#...###...#...#...#.#.#.#.#...#...#...#.#.#.#...#...#.#...#...#.#...#...#.....#.#...#.#.#.#.#.#.#...#.#.#...#...#
#.###.#.#.#####.#####.#######.#.#######.#######.#.#.#.###.#.#.###.#.#.#.#.###.###.###.#.#.#.#.#.#.#.#.#####.#####.#.#.#.#.#.###.#.#.#.#.#.#.#
#...#.#.#.#...#.....#.#.......#.......#.#.......#.#...#...#.#...#.#.#.#.#...#.#...#...#.#.#...#...#.#.#...#.#.....#.#...#...#...#.#...#...#.#
###.#.#.#.#.#.#####.#.#.#############.#.#.#######.#####.###.###.#.#.#.#.###.#.#.###.###.#.#########.#.#.#.#.#.#####.#########.###.#########.#
#...#...#.#.#...#...#.#...........#...#.#.#...#...#.....###...#.#.#.#.#...#.#.#...#.#...#...#...#...#...#...#...#...#...#.....#...#.........#
#.#######.#.###.#.###.###########.#.###.#.#.#.#.###.#########.#.#.#.#.###.#.#.###.#.#.#####.#.#.#.#############.#.###.#.#.#####.###.#########
#...#...#...#...#...#.#.......#...#...#.#.#.#.#.#...#...#...#.#.#.#.#...#.#.#.###.#.#...#...#.#.#.....#.........#.#...#...#...#...#.#.......#
###.#.#.#####.#####.#.#.#####.#.#####.#.#.#.#.#.#.###.#.#.#.#.#.#.#.###.#.#.#.###.#.###.#.###.#.#####.#.#########.#.#######.#.###.#.#.#####.#
###...#.....#.#...#.#.#.....#.#.....#.#.#.#.#...#...#.#.#.#.#.#.#.#...#.#.#.#...#.#...#.#...#.#.#...#.#...........#...###...#.###.#.#.#.....#
###########.#.#.#.#.#.#####.#.#####.#.#.#.#.#######.#.#.#.#.#.#.#.###.#.#.#.###.#.###.#.###.#.#.#.#.#.###############.###.###.###.#.#.#.#####
#...........#...#...#.......#.....#.#.#.#.#...#.....#.#.#.#.#.#...#...#.#.#.#...#.###.#...#.#.#...#.#.#.............#...#...#.....#...#...###
#.###############################.#.#.#.#.###.#.#####.#.#.#.#.#####.###.#.#.#.###.###.###.#.#.#####.#.#.###########.###.###.#############.###
#.......#.....#...#.......#.....#.#.#...#...#.#.#...#.#.#.#.#...###...#.#.#.#...#...#.#...#.#.#.....#.#...#...#...#.....###.#...........#...#
#######.#.###.#.#.#.#####.#.###.#.#.#######.#.#.#.#.#.#.#.#.###.#####.#.#.#.###.###.#.#.###.#.#.#####.###.#.#.#.#.#########.#.#########.###.#
#.......#.###...#...###...#.#...#...###...#...#.#.#.#.#.#.#.#...#.....#.#.#...#...#.#.#...#...#...#...###...#...#...###...#.#.........#...#.#
#.#######.#############.###.#.#########.#.#####.#.#.#.#.#.#.#.###.#####.#.###.###.#.#.###.#######.#.###############.###.#.#.#########.###.#.#
#.........#...#...#...#.....#...........#.....#.#.#.#.#.#.#.#.###...#...#...#.###.#.#.#...#.......#.#...............#...#...#.......#...#.#.#
###########.#.#.#.#.#.#######################.#.#.#.#.#.#.#.#.#####.#.#####.#.###.#.#.#.###.#######.#.###############.#######.#####.###.#.#.#
###...#.....#...#...#.....#...................#.#.#.#.#.#.#...#.....#.....#.#.#...#.#...###...#.....#...............#.#.......#.....#...#.#.#
###.#.#.#################.#.###################.#.#.#.#.#.#####.#########.#.#.#.###.#########.#.###################.#.#.#######.#####.###.#.#
#...#.#.#...#...#.......#...#.......#.......#...#.#.#.#.#.....#...#...#...#.#.#...#.........#.#.#...........#.....#...#.......#.....#.###...#
#.###.#.#.#.#.#.#.#####.#####.#####.#.#####.#.###.#.#.#.#####.###.#.#.#.###.#.###.#########.#.#.#.#########.#.###.###########.#####.#.#######
#.#...#...#...#...#...#.......#...#...#.....#.....#.#.#.#...#.#...#.#.#...#...###...#.....#.#.#.#...#.....#.#.###.....#.....#...###.#...#...#
#.#.###############.#.#########.#.#####.###########.#.#.#.#.#.#.###.#.###.#########.#.###.#.#.#.###.#.###.#.#.#######.#.###.###.###.###.#.#.#
#.#...###...###...#.#.#.........#.......###...#...#...#...#...#.#...#...#.....#.....#.###...#...###...#...#...#...###...###...#...#...#...#.#
#.###.###.#.###.#.#.#.#.###################.#.#.#.#############.#.#####.#####.#.#####.#################.#######.#.###########.###.###.#####.#
#...#.....#.....#...#.#.............###...#.#...#...#...#.......#.....#...#...#.....#...#...###.......#.........#...........#...#...#.......#
###.#################.#############.###.#.#.#######.#.#.#.###########.###.#.#######.###.#.#.###.#####.#####################.###.###.#########
###.................#.............#...#.#...#...#...#.#.#...#...#...#.###.#.###...#...#...#...#.....#.#.................#...###...#...#.....#
###################.#############.###.#.#####.#.#.###.#.###.#.#.#.#.#.###.#.###.#.###.#######.#####.#.#.###############.#.#######.###.#.###.#
#...#...............#...........#.#...#.#.....#.#.....#...#...#...#...#...#.#...#.#...#.....#.#.....#.#...#...........#...###...#.....#.#...#
#.#.#.###############.#########.#.#.###.#.#####.#########.#############.###.#.###.#.###.###.#.#.#####.###.#.#########.#######.#.#######.#.###
#.#.#...#...#.......#.###.......#.#.....#.....#.....#...#.....###.......#...#...#.#...#...#...#.....#...#...#.....#...#.......#.........#...#
#.#.###.#.#.#.#####.#.###.#######.###########.#####.#.#.#####.###.#######.#####.#.###.###.#########.###.#####.###.#.###.###################.#
#.#.....#.#.#.#...#...#...#.....#.#.....#...#.#...#...#.......#...#.....#...###.#.###.....###...###...#.....#...#...###.#...............#...#
#.#######.#.#.#.#.#####.###.###.#.#.###.#.#.#.#.#.#############.###.###.###.###.#.###########.#.#####.#####.###.#######.#.#############.#.###
#.....#...#...#.#.#...#...#.#...#...###...#.#...#...#...#...###.....###.....#...#.....#...#...#.#...#.....#...#...#...#.#.............#...###
#####.#.#######.#.#.#.###.#.#.#############.#######.#.#.#.#.#################.#######.#.#.#.###.#.#.#####.###.###.#.#.#.#############.#######
#...#.#.#.......#...#.#...#.#.............#.........#.#.#.#.....#...#####...#.......#.#.#.#...#...#.......###.#...#.#...#.............#.....#
#.#.#.#.#.###########.#.###.#############.###########.#.#.#####.#.#.#####.#.#######.#.#.#.###.###############.#.###.#####.#############.###.#
#.#.#...#...........#.#.....###...........#.........#.#.#.#.....#.#...#...#.#.......#...#.....#...#.........#.#.....#...#.........###...#...#
#.#.###############.#.#########.###########.#######.#.#.#.#.#####.###.#.###.#.#################.#.#.#######.#.#######.#.#########.###.###.###
#.#.#.............#.#.#.......#...........#.#######...#...#.....#.#...#...#...#...#.....#.....#.#.#.#...#...#.....#...#.....#...#...#.#...###
#.#.#.###########.#.#.#.#####.###########.#.###################.#.#.#####.#####.#.#.###.#.###.#.#.#.#.#.#.#######.#.#######.#.#.###.#.#.#####
#.#.#...........#.#.#.#.....#.#...#######...#################E#...#.#...#.....#.#.#.#...#.#...#.#...#.#.#.......#.#.......#...#...#...#.....#
#.#.###########.#.#.#.#####.#.#.#.###########################.#####.#.#.#####.#.#.#.#.###.#.###.#####.#.#######.#.#######.#######.#########.#
#.#.........#...#...#.......#...#..S###############.....#####.#...#...#.#.....#.#...#.#...#.....###...#.....#...#.#...#...#.....#.........#.#
#.#########.#.#####################################.###.#####.#.#.#####.#.#####.#####.#.###########.#######.#.###.#.#.#.###.###.#########.#.#
#.........#...#.......#.....#...#...#...#####.......#...#####.#.#.....#.#.......#...#...#.....#...#.......#...###.#.#.#.....#...###...###...#
#########.#####.#####.#.###.#.#.#.#.#.#.#####.#######.#######.#.#####.#.#########.#.#####.###.#.#.#######.#######.#.#.#######.#####.#.#######
###...#...#...#.#.....#.#...#.#...#...#.....#.....#...###...#.#.#...#...#.....#...#...###...#...#...#...#...#...#...#.........#.....#.......#
###.#.#.###.#.#.#.#####.#.###.#############.#####.#.#####.#.#.#.#.#.#####.###.#.#####.#####.#######.#.#.###.#.#.###############.###########.#
#...#...#...#.#.#...#...#.#...#...........#...#...#.......#.#...#.#.#...#...#.#...#...#...#.......#.#.#.....#.#.#...###.......#.....#.......#
#.#######.###.#.###.#.###.#.###.#########.###.#.###########.#####.#.#.#.###.#.###.#.###.#.#######.#.#.#######.#.#.#.###.#####.#####.#.#######
#.........###...###...###...###.........#.....#.#...........#...#.#.#.#.....#.....#...#.#.......#.#.#.........#...#.....#.....#.....#...#...#
#######################################.#######.#.###########.#.#.#.#.###############.#.#######.#.#.#####################.#####.#######.#.#.#
#.............###...........###.........###...#.#.......###...#.#.#.#.............#...#.......#...#.#...................#.......#.....#...#.#
#.###########.###.#########.###.###########.#.#.#######.###.###.#.#.#############.#.#########.#####.#.#################.#########.###.#####.#
#.......#...#...#.#...#...#.....#...###.....#...#.....#...#.#...#.#.#.....###...#.#.....#...#.....#.#.................#.....#...#...#.......#
#######.#.#.###.#.#.#.#.#.#######.#.###.#########.###.###.#.#.###.#.#.###.###.#.#.#####.#.#.#####.#.#################.#####.#.#.###.#########
###...#...#.#...#...#...#.........#.....#.........###...#.#.#.....#.#...#.....#.#.#...#...#.......#.....#...........#...#...#.#...#.........#
###.#.#####.#.###########################.#############.#.#.#######.###.#######.#.#.#.#################.#.#########.###.#.###.###.#########.#
#...#.....#.#.#...#.....#...............#.........#...#...#...#.....###.#.....#.#.#.#.........#.......#...#...#...#.....#.....###...........#
#.#######.#.#.#.#.#.###.#.#############.#########.#.#.#######.#.#######.#.###.#.#.#.#########.#.#####.#####.#.#.#.###########################
#.#.....#.#.#.#.#.#...#.#.............#.#.........#.#...###...#.......#...###.#.#...#...#.....#.###...#.....#...#.......###.................#
#.#.###.#.#.#.#.#.###.#.#############.#.#.#########.###.###.#########.#######.#.#####.#.#.#####.###.###.###############.###.###############.#
#...#...#...#...#.....#.###...#...#...#.#.#.......#...#...#.....#.....###...#.#.#...#.#.#...#...#...#...#...............#...#...#...#...#...#
#####.#################.###.#.#.#.#.###.#.#.#####.###.###.#####.#.#######.#.#.#.#.#.#.#.###.#.###.###.###.###############.###.#.#.#.#.#.#.###
#.....#.....#...#.....#.....#...#...###...#.#.....###...#.###...#...#...#.#.#.#.#.#.#.#.###...###...#.###.........#...###.#...#...#.#.#.#...#
#.#####.###.#.#.#.###.#####################.#.#########.#.###.#####.#.#.#.#.#.#.#.#.#.#.###########.#.###########.#.#.###.#.#######.#.#.###.#
#...#...###.#.#.#.#...#...................#.#.....#.....#.....#.....#.#...#.#.#.#.#.#.#.....#.....#.#.#.........#.#.#.....#.......#...#...#.#
###.#.#####.#.#.#.#.###.#################.#.#####.#.###########.#####.#####.#.#.#.#.#.#####.#.###.#.#.#.#######.#.#.#############.#######.#.#
###...#.....#.#.#.#...#.#.................#.....#.#...........#.#...#...#...#.#.#.#...#.....#...#.#...#.......#...#.#.............#...###.#.#
#######.#####.#.#.###.#.#.#####################.#.###########.#.#.#.###.#.###.#.#.#####.#######.#.###########.#####.#.#############.#.###.#.#
#.......#...#.#...#...#.#.#.....#.......#...#...#...#...#.....#.#.#...#.#...#.#.#.....#...#...#.#.#...........#...#.#.........#.....#...#.#.#
#.#######.#.#.#####.###.#.#.###.#.#####.#.#.#.#####.#.#.#.#####.#.###.#.###.#.#.#####.###.#.#.#.#.#.###########.#.#.#########.#.#######.#.#.#
#...#...#.#...#.....#...#.#...#.#.#.....#.#.#.....#.#.#.#...#...#.#...#...#.#.#.#...#.#...#.#.#.#.#.............#...#.......#...#...#...#.#.#
###.#.#.#.#####.#####.###.###.#.#.#.#####.#.#####.#.#.#.###.#.###.#.#####.#.#.#.#.#.#.#.###.#.#.#.###################.#####.#####.#.#.###.#.#
###...#.#.....#.....#...#...#.#...#.#...#.#...#...#.#.#...#.#.#...#.....#.#...#.#.#...#...#.#.#.#.#...#.....#.......#.....#.#.....#.#.#...#.#
#######.#####.#####.###.###.#.#####.#.#.#.###.#.###.#.###.#.#.#.#######.#.#####.#.#######.#.#.#.#.#.#.#.###.#.#####.#####.#.#.#####.#.#.###.#
#.....#.......###...#...#...#.#.....#.#...#...#...#.#.#...#.#.#.....#...#...###.#.....#...#.#.#.#.#.#.#...#.#.....#...#...#.#.#...#...#.#...#
#.###.###########.###.###.###.#.#####.#####.#####.#.#.#.###.#.#####.#.#####.###.#####.#.###.#.#.#.#.#.###.#.#####.###.#.###.#.#.#.#####.#.###
#...#.###...#...#.#...###.....#.....#...###.....#.#...#...#.#.#...#.#...#...#...#.....#...#.#...#...#.#...#.#...#.#...#...#.#...#...#...#...#
###.#.###.#.#.#.#.#.###############.###.#######.#.#######.#.#.#.#.#.###.#.###.###.#######.#.#########.#.###.#.#.#.#.#####.#.#######.#.#####.#
#...#.....#...#...#...#.........###.#...#.......#...#.....#.#.#.#...#...#...#...#.#...#...#.......###...###.#.#...#.#.....#.....#...#...#...#
#.###################.#.#######.###.#.###.#########.#.#####.#.#.#####.#####.###.#.#.#.#.#########.#########.#.#####.#.#########.#.#####.#.###
#...#.....#.......#...#...#...#.....#.#...#...#.....#.#.....#.#...#...#.....#...#.#.#...#...#...#.......#...#.....#.#.#...#...#...#.....#...#
###.#.###.#.#####.#.#####.#.#.#######.#.###.#.#.#####.#.#####.###.#.###.#####.###.#.#####.#.#.#.#######.#.#######.#.#.#.#.#.#.#####.#######.#
#...#...#.#.#.....#...###...#.......#.#...#.#.#.....#...#.....#...#...#.....#...#.#.#...#.#.#.#...#...#.#.....#...#.#...#...#.....#.#.......#
#.#####.#.#.#.#######.#############.#.###.#.#.#####.#####.#####.#####.#####.###.#.#.#.#.#.#.#.###.#.#.#.#####.#.###.#############.#.#.#######
#...#...#...#...#.....#.......#...#.#.###.#.#.#...#.....#.#...#.#.....#...#.#...#.#.#.#...#.#...#.#.#.#...#...#...#...#.....#.....#...#...###
###.#.#########.#.#####.#####.#.#.#.#.###.#.#.#.#.#####.#.#.#.#.#.#####.#.#.#.###.#.#.#####.###.#.#.#.###.#.#####.###.#.###.#.#########.#.###
#...#...#.......#.....#.#...#...#.#.#.#...#.#.#.#.#.....#...#.#.#...#...#.#.#.#...#.#.....#.#...#...#.#...#.#.....#...#...#.#...#...#...#...#
#.#####.#.###########.#.#.#.#####.#.#.#.###.#.#.#.#.#########.#.###.#.###.#.#.#.###.#####.#.#.#######.#.###.#.#####.#####.#.###.#.#.#.#####.#
#...#...#.......#.....#...#.....#...#.#...#.#.#.#.#.......#...#...#...###...#.#...#.#.....#.#.......#.#.#...#.....#.....#.#...#...#...#...#.#
###.#.#########.#.#############.#####.###.#.#.#.#.#######.#.#####.###########.###.#.#.#####.#######.#.#.#.#######.#####.#.###.#########.#.#.#
#...#.#.........#...#...#.......#...#...#.#.#.#.#.#...#...#...#...#...........#...#.#.#...#.........#...#...#.....#.....#...#.#.......#.#.#.#
#.###.#.###########.#.#.#.#######.#.###.#.#.#.#.#.#.#.#.#####.#.###.###########.###.#.#.#.#################.#.#####.#######.#.#.#####.#.#.#.#
#.#...#.......#...#.#.#...#.......#.#...#.#.#.#.#...#.#...#...#...#.....#.....#.###.#...#.................#.#.....#.#...#...#.#.....#...#.#.#
#.#.#########.#.#.#.#.#####.#######.#.###.#.#.#.#####.###.#.#####.#####.#.###.#.###.#####################.#.#####.#.#.#.#.###.#####.#####.#.#
#.#.#...###...#.#.#.#...#...#.......#.###.#.#.#.#.....#...#.#...#.#.....#.#...#...#.....#.....#...#.....#.#.#.....#...#...#...#.....#...#.#.#
#.#.#.#.###.###.#.#.###.#.###.#######.###.#.#.#.#.#####.###.#.#.#.#.#####.#.#####.#####.#.###.#.#.#.###.#.#.#.#############.###.#####.#.#.#.#
#.#.#.#.....#...#...###...###.....#...#...#.#...#...#...###...#...#.#.....#.#.....#.....#...#.#.#.#.###...#.#.............#...#.......#.#...#
#.#.#.#######.###################.#.###.###.#######.#.#############.#.#####.#.#####.#######.#.#.#.#.#######.#############.###.#########.#####
#...#.....#...#...#...#...#.......#...#...#...#.....#...........#...#.#.....#.....#...#...#.#...#.#.....###.#...#...#.....###...........#...#
#########.#.###.#.#.#.#.#.#.#########.###.###.#.###############.#.###.#.#########.###.#.#.#.#####.#####.###.#.#.#.#.#.###################.#.#
#...#.....#.###.#...#...#...#...#...#.###.....#...#...#.....#...#.....#...#.......#...#.#.#...###.....#...#...#...#.#.....................#.#
#.#.#.#####.###.#############.#.#.#.#.###########.#.#.#.###.#.###########.#.#######.###.#.###.#######.###.#########.#######################.#
#.#.#.....#...#.#...#...#...#.#.#.#.#.........#...#.#.#...#.#.#...#...#...#.......#...#.#...#.......#...#.........#.#.......#...#.....#...#.#
#.#.#####.###.#.#.#.#.#.#.#.#.#.#.#.#########.#.###.#.###.#.#.#.#.#.#.#.#########.###.#.###.#######.###.#########.#.#.#####.#.#.#.###.#.#.#.#
#.#.......#...#.#.#.#.#.#.#.#.#.#.#...#...#...#...#.#.#...#.#.#.#...#...#...#...#.#...#...#...#...#...#.#.....#...#.#...#...#.#.#...#.#.#.#.#
#.#########.###.#.#.#.#.#.#.#.#.#.###.#.#.#.#####.#.#.#.###.#.#.#########.#.#.#.#.#.#####.###.#.#.###.#.#.###.#.###.###.#.###.#.###.#.#.#.#.#
#...........###...#...#...#...#...###...#...#####...#...###...#...........#...#...#.......###...#.....#...###...###.....#.....#.....#...#...#
#############################################################################################################################################

2
data/21.ans Normal file
View File

@@ -0,0 +1,2 @@
202274
245881705840972

5
data/21.in Normal file
View File

@@ -0,0 +1,5 @@
319A
670A
349A
964A
586A

2
data/22.ans Normal file
View File

@@ -0,0 +1,2 @@
16894083306
1925

2002
data/22.in Normal file

File diff suppressed because it is too large Load Diff

2
data/23.ans Normal file
View File

@@ -0,0 +1,2 @@
1064
aq,cc,ea,gc,jo,od,pa,rg,rv,ub,ul,vr,yy

3380
data/23.in Normal file

File diff suppressed because it is too large Load Diff

2
data/24.ans Normal file
View File

@@ -0,0 +1,2 @@
51837135476040
hjf,kdh,kpp,sgj,vss,z14,z31,z35

313
data/24.in Normal file
View File

@@ -0,0 +1,313 @@
x00: 1
x01: 0
x02: 0
x03: 1
x04: 1
x05: 1
x06: 0
x07: 0
x08: 1
x09: 1
x10: 0
x11: 1
x12: 0
x13: 0
x14: 1
x15: 1
x16: 1
x17: 1
x18: 0
x19: 0
x20: 0
x21: 0
x22: 1
x23: 1
x24: 1
x25: 1
x26: 1
x27: 1
x28: 0
x29: 1
x30: 1
x31: 0
x32: 1
x33: 0
x34: 0
x35: 0
x36: 0
x37: 1
x38: 1
x39: 0
x40: 0
x41: 0
x42: 0
x43: 1
x44: 1
y00: 1
y01: 1
y02: 1
y03: 1
y04: 0
y05: 0
y06: 0
y07: 0
y08: 0
y09: 1
y10: 0
y11: 1
y12: 0
y13: 0
y14: 1
y15: 0
y16: 0
y17: 0
y18: 0
y19: 1
y20: 0
y21: 0
y22: 0
y23: 0
y24: 0
y25: 1
y26: 1
y27: 0
y28: 1
y29: 0
y30: 1
y31: 0
y32: 1
y33: 1
y34: 0
y35: 1
y36: 1
y37: 1
y38: 0
y39: 1
y40: 0
y41: 1
y42: 1
y43: 0
y44: 1
x07 AND y07 -> ncs
y24 AND x24 -> wrf
x19 XOR y19 -> tsm
x40 XOR y40 -> svt
rjf OR src -> dfv
fsf XOR fgs -> z44
mhc AND jqd -> qgn
nrr XOR sms -> kpp
y20 AND x20 -> ngc
y21 AND x21 -> hbc
sgj OR ptb -> rqf
hbc OR wdr -> gjn
tks XOR sbg -> z23
ddh AND tnm -> hgg
hsf OR bjw -> vbb
x15 XOR y15 -> vqs
x10 AND y10 -> dtm
vqs XOR vss -> z15
x29 XOR y29 -> mgd
srg OR cwb -> qtn
nmb OR mbk -> z45
dhs OR njq -> tng
jfw OR jrf -> vpd
x07 XOR y07 -> gck
tdw XOR vrk -> z03
y11 AND x11 -> ffw
x16 XOR y16 -> bth
x39 XOR y39 -> tnm
cfg AND ngh -> jrq
vpd AND mvn -> hbj
rgp XOR bth -> z16
qtn AND cjd -> vrv
x14 AND y14 -> cgt
dwh XOR hsk -> z24
tgp XOR dkh -> z13
y26 XOR x26 -> cfg
cpc XOR nbm -> z42
y42 XOR x42 -> cpc
x17 XOR y17 -> cjd
rqf XOR pqn -> z36
x27 AND y27 -> nwg
bcq AND hnk -> vjp
tks AND sbg -> wqr
wvr OR skq -> gmw
cwm AND tpv -> pqw
x41 AND y41 -> tqh
jcw AND wpk -> sbr
tgp AND dkh -> tbh
wrg XOR nwq -> z38
y32 XOR x32 -> gds
bmn OR hbj -> msb
wps XOR mtn -> z33
ncs OR pjf -> sws
wqr OR tqk -> dwh
x31 AND y31 -> pwg
y12 XOR x12 -> jcw
nrr AND sms -> z31
x38 AND y38 -> npd
y02 AND x02 -> fwt
y37 AND x37 -> rnc
fwt OR vtm -> tdw
x38 XOR y38 -> nwq
gds AND ghr -> ckd
ffw OR nfb -> wpk
ctv XOR wht -> z05
y11 XOR x11 -> cmg
y05 XOR x05 -> ctv
jhw XOR tcv -> z18
wrf OR gnt -> rmw
y01 AND x01 -> tnr
x36 XOR y36 -> pqn
gjq OR dfg -> skp
x40 AND y40 -> ptg
y39 AND x39 -> dqn
bjb OR hjf -> sbg
rrn OR rpt -> qfs
ctv AND wht -> dhs
sgs AND rsb -> ccw
rmw XOR psg -> z25
y24 XOR x24 -> hsk
bgd XOR msb -> z10
y17 AND x17 -> fvv
y22 AND x22 -> kdh
qfs AND rfv -> fgp
wds AND fps -> rhr
y18 XOR x18 -> tcv
ttd AND nhg -> tfw
bbc AND jkb -> ptb
djn OR tnr -> cpb
y35 XOR x35 -> bbc
tfw OR cgt -> z14
rgp AND bth -> srg
dwh AND hsk -> gnt
pqw OR ngc -> frt
y25 XOR x25 -> psg
y13 XOR x13 -> tgp
x30 XOR y30 -> rbw
vrv OR fvv -> jhw
skp XOR mgd -> z29
cmg XOR ntv -> z11
vjr XOR vbb -> z04
gkj XOR sws -> z08
x20 XOR y20 -> tpv
ntv AND cmg -> nfb
x32 AND y32 -> tdk
wmr AND cpb -> vtm
x19 AND y19 -> jps
jhw AND tcv -> rqv
y27 XOR x27 -> bcq
x34 AND y34 -> hdk
wqc XOR qtf -> z01
wgk OR sbr -> dkh
x43 AND y43 -> kdb
y04 XOR x04 -> vjr
rmw AND psg -> fgg
gkj AND sws -> jfw
cwm XOR tpv -> z20
cjd XOR qtn -> z17
fsf AND fgs -> nmb
wps AND mtn -> rpt
x33 XOR y33 -> mtn
bcq XOR hnk -> z27
tbh OR wwk -> nhg
twb XOR tsm -> z19
frt AND mhw -> wdr
y15 AND x15 -> pwr
rbw XOR dfv -> z30
vss AND vqs -> ctt
x28 AND y28 -> gjq
y28 XOR x28 -> dvf
bbc XOR jkb -> sgj
x43 XOR y43 -> fps
y04 AND x04 -> khw
pwg OR kpp -> ghr
x31 XOR y31 -> nrr
gmw XOR gck -> z07
frt XOR mhw -> z21
spb AND tng -> skq
svt AND hkg -> knf
gjn AND kdh -> bjb
qfs XOR rfv -> z34
cpc AND nbm -> jtt
tqh OR ccw -> nbm
jtt OR qkv -> wds
gds XOR ghr -> z32
rbw AND dfv -> qnv
msb AND bgd -> gjr
qnv OR bjd -> sms
y18 AND x18 -> pns
x41 XOR y41 -> rsb
x26 AND y26 -> srh
nvc OR npd -> ddh
dtm OR gjr -> ntv
x08 AND y08 -> jrf
y14 XOR x14 -> ttd
y06 AND x06 -> wvr
y16 AND x16 -> cwb
rnc OR qgn -> wrg
y30 AND x30 -> bjd
jqd XOR mhc -> z37
ddh XOR tnm -> z39
x12 AND y12 -> wgk
cqh OR fgg -> ngh
kdh XOR gjn -> z22
x01 XOR y01 -> wqc
khw OR djm -> wht
ctt OR pwr -> rgp
y21 XOR x21 -> mhw
vjp OR nwg -> dhh
x02 XOR y02 -> wmr
gck AND gmw -> pjf
rqv OR pns -> twb
y00 AND x00 -> qtf
y05 AND x05 -> njq
y29 AND x29 -> rjf
vrk AND tdw -> hsf
y42 AND x42 -> qkv
y10 XOR x10 -> bgd
cfg XOR ngh -> z26
tng XOR spb -> z06
y00 XOR x00 -> z00
cpb XOR wmr -> z02
ckd OR tdk -> wps
jrq OR srh -> hnk
y22 XOR x22 -> hjf
x03 AND y03 -> bjw
nhg XOR ttd -> vss
tsm AND twb -> rwg
dqn OR hgg -> hkg
y34 XOR x34 -> rfv
y35 AND x35 -> z35
x25 AND y25 -> cqh
y33 AND x33 -> rrn
wqc AND qtf -> djn
sgs XOR rsb -> z41
x08 XOR y08 -> gkj
rwg OR jps -> cwm
rqf AND pqn -> wbv
x37 XOR y37 -> mhc
dvf XOR dhh -> z28
kdb OR rhr -> fgs
knf OR ptg -> sgs
svt XOR hkg -> z40
y13 AND x13 -> wwk
y23 AND x23 -> tqk
fgp OR hdk -> jkb
jcw XOR wpk -> z12
y06 XOR x06 -> spb
x23 XOR y23 -> tks
y09 AND x09 -> bmn
wds XOR fps -> z43
dhh AND dvf -> dfg
mgd AND skp -> src
wrg AND nwq -> nvc
y03 XOR x03 -> vrk
y36 AND x36 -> kqk
vjr AND vbb -> djm
x44 XOR y44 -> fsf
x44 AND y44 -> mbk
kqk OR wbv -> jqd
vpd XOR mvn -> z09
y09 XOR x09 -> mvn

1
data/25.ans Normal file
View File

@@ -0,0 +1 @@
3395

3999
data/25.in Normal file

File diff suppressed because it is too large Load Diff