Compare commits

..

32 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
58 changed files with 16863 additions and 45 deletions

View File

@@ -4,8 +4,8 @@ language: "scala"
dockerfile: "Dockerfile"
code: "/code"
workdir: "/code"
runonce: "./mill aoc.assembly"
cmd: "java -jar ./out/aoc/assembly.dest/out.jar %day% %input%"
runonce: "./mill aoc.nativeImage"
cmd: "./out/aoc/nativeImage.dest/aoc %day% %input%"
environment:
- AOC_BENCH=1
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
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

@@ -1,14 +1,31 @@
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
@@ -29,6 +46,7 @@ enum Direction:
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)
@@ -61,3 +79,18 @@ class Grid[A](val data: Array[Array[A]]):
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

@@ -12,7 +12,22 @@ val solvers = Map[Int, Solver](
7 -> Day07,
8 -> Day08,
9 -> Day09,
10 -> Day10
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
)
def runSolver(solver: Solver, input: os.Path): Unit =
@@ -22,15 +37,22 @@ def runSolver(solver: Solver, input: os.Path): Unit =
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")
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.foreach { case (day, solver) =>
solvers.toList.sortBy(_._1).foreach { case (day, solver) =>
runSolver(solver, os.Path(input, os.pwd) / f"$day%02d.in")
}
case num(_) =>

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

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

View File

@@ -1,10 +1,11 @@
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)
abstract class Solver(day: Int):
abstract class Solver(val day: Int):
def run(input: os.ReadablePath): (Timings, Solution)
def timed[A](solution: => A): (Long, A) =

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

@@ -6,3 +6,8 @@ def gcd(a: Int, b: Int): Int =
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

@@ -24,9 +24,7 @@ object Day05 extends Solver(5):
@nowarn("msg=match may not be exhaustive")
def isOrdered(u: Vector[Int]): Boolean =
!u.combinations(2).exists { case Seq(a, b) =>
rules.contains((b, a))
}
!u.pairs.exists((a, b) => rules.contains((b, a)))
def findMiddle(u: Vector[Int]): Int =
u.find(e =>

View File

@@ -22,13 +22,13 @@ object Day08 extends Solver(8):
.flatMap((a, b) => Iterator(a + a - b, b + b - a))
.filter(grid.contains)
)
.toSet
.distinct
.size
def part2: Int =
antennae
.flatMap(_.pairs.flatMap(p => antinodes(p._1, p._2)))
.toSet
.distinct
.size
def run(input: os.ReadablePath): (Timings, Solution) =
val (pre_time, ctx) = timed { Ctx(input) }

View File

@@ -4,41 +4,29 @@ import dev.ctsk.aoc._
import dev.ctsk.aoc.Direction._
object Day10 extends Solver(10):
type Input = (Grid[Char], Seq[Point])
type Input = Vector[(Point, Point)]
def pre(input: os.ReadablePath): Input =
val grid = Grid(os.read.lines(input).map(_.toArray).toArray)
val zero = grid.find(_ == '0').toSeq
(grid, zero)
def step(
grid: Grid[Char],
start: Seq[(Point, Point)],
height: Int
): Seq[(Point, Point)] =
(for
(p, origin) <- start
a <- Seq(Up, Down, Left, Right)
if grid(a(p)).exists(_.asDigit == height)
yield (a(p), origin))
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
def part1(input: Input): Int =
val (grid, zero) = input
(1 to 9)
.foldLeft(zero.zip(zero)) { case (acc, h) => step(grid, acc, h) }
.distinct
.size
val zero = grid.find(_ == '0').toVector
(1 to 9).foldLeft(zero.zip(zero)) { case (acc, h) => step(acc, h) }
def part2(input: Input): Int =
val (grid, zero) = input
(1 to 9)
.foldLeft(zero.zip(zero)) { case (acc, h) => step(grid, acc, h) }
.size
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, (grid, zero)) = timed { pre(input) }
val (p1_time, p1_solution) = timed { part1((grid, zero)) }
val (p2_time, p2_solution) = timed { part2((grid, zero)) }
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),

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")
)

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