From 69be745c60f7e341ba06d2e414e50b52244e9224 Mon Sep 17 00:00:00 2001 From: tristan Date: Fri, 6 Dec 2024 15:12:28 +0000 Subject: [PATCH] 2024 day 6 part 2 (but very slow) --- 2024/06/annotated.txt | 130 ++ 2024/06/solution.nix | 101 +- 2024/flake.nix | 15 +- 2024/results.nix | 4745 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 4973 insertions(+), 18 deletions(-) create mode 100644 2024/06/annotated.txt create mode 100644 2024/results.nix diff --git a/2024/06/annotated.txt b/2024/06/annotated.txt new file mode 100644 index 0000000..360821f --- /dev/null +++ b/2024/06/annotated.txt @@ -0,0 +1,130 @@ +..........#.............................#...............#...........#....................#...........#............................ +..............................#.......#...#.....#.....#...............#.#..#.......................#............#................. +.............#...........#.#........#............#..........................#.........#.......#......#............................ +......................................................#....#..#.............#................................#...#............##.. +...............#.....#....................................#.................O.OOO...OOO.OO.........O..OO.........#................ +..................##............#......#..................O.O.......O..OOO...O.OO...OO..OO.........O...#...................#...... +.#......#...........OO..OOO...O......O...O.OOO..O.OO..OO....O.......#............................#................................ +#..#.............#...............................#.....#....#.............................#....#..............................#... +#...##..........#.........................#.................................................#............#...............#........ +............#...............#.............................O................#.......................OO..O.....#..........##........ +..............#...................#......##...#.....#.....O..............#..O...............O....................................# +.#.....#....#......................#...#..O..O..O.....O.....................O..O#.#.............#.........#....................... +#..#..............O#........##.........#.....#..........#.....##............O............#..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................. +.................O.......O...............#....O......O.............#.#............#...#...##..O.O.......................#......... +.....#............O.........................#.O.......................OO.O..O...O...OO.......O...#..........O...#................. +..................O.....................O.....O...#..O.............O.#..........O.....#.............#.#..#..................#..... +............................................#.....#..O...................#........#..........................................#.... +.......#..........O...............#...#.......OO...O.....O..O.......O.OO.O#.........................#...#..........#......#....... +............#.....O.....##.........O.....O...O.....O................O.............................#......................#........ +#.#..............O...........O.......O..OOO..OOO..#........#.......O..#.#O.#...#O...............O...............#................. +..#.........O.O...O.........#.#...........O.O........O.#....##.....O..O..O.....OO...OO.......O...........O.OO...#............#.... +....................................................................O.OO.......O.....#...............#......O....#..........#..... +..............O...O.#..........#................................#...............................................#................. +#...........O..#.#O..........#.........#..........#...................O......#......................##........#.........#......... +....#....#..O.....O.....................O...................O......O..O..................#...#...........#............#...#...#... +........................................O.....O..O.....##................O.....#O..#................................#............. +.......#..........O##.....................O.O...#....O......O..#...O..O.......................#...................#......#........ +......#.........#.O.................................................O..O.......#........#..#..........#.....O.#..#...#.....#....#. +....#.............O..............................O#........#....#..................................#.............................. +..........#.O.O..#O..........#...................O...O............#..............#.......#...#............#.O..O.................. +............O................O..O............OOO...O..O....O........O..O.OO....O.....O.O..O#....O..#.............................. +.#................O.................................#O.............O..O...........#..................#......O..O.........#........ +......#..#.#......O.........#...........O.....O..O#..O..........................O....#.............#...............#.............. +...................O....O...O..#........O...O....O#..O.....#.......O..O.....................................O..O.................. +......................#.............................................O.OO.O.....O....OO....O.O.OO......O..#..O..O...#.............. +...............................................................................................................................#.. +.......#.O........O...#............................................O..O...........#......................#.......................# +#........O........O.............#...........O..................#...O..O#..........O..O......O.........#...#...#........#.......... +............................#....#...#.........#....#.....OOO.O..OO.OO.O.OO.O...OO......O.O.....O....................#............ +.........OO.O.O...O..#...........O.............O.....OO....O....O...O.OOO.O....O..O..O.#..#....#............O.....#............... +.........OO.O.O...O...#.......O.....#............O................#.OOOO..O......OO..........O...O.O.....O...O........#........... +....#.............O...#.#.........##O...OOO.OOOOOOO.#.....#...........O..O......O.....O.........O...........O..#.............#.... +..............................O#...#....O.....O..O.....#........O...O.OOOO.....O.....O......O.O#O.....#.O...O..................... +....#..............................................O.............................................................................. +...#...............O..OOO...O.OO.O.OO..O.OOOOOOOOOOOOOOOOOO.OO.OO.OOO.OOOOOO.OOOOO..OOOOO.O.OOOOOO..O.OO.OO#O...........#.......#. +..#.O....OO.O.O.##OOOO.OOOOO..O....................O...........................#...#........................O...#............#.... +....O....O............#.......#............#OO.O.O.O.....O.O..O..OO.OO.O..O......O....O..O...O......#..................#......#... +....O..............#.............#..O............OOO#.................O..O......O..#..O.........#........#O.O................#.... +....................#O..........#...O..........O................O...O.OOOO.....OO....O..O.#......#.......#O.O........#.....##..... +....O....OO#O.O.........................O........O.O.#..........................O..#..O...........#.......O.O........#............ +......................#.........#................O.O#......#...........................................#.......................... +..#.O..#...#OO.O.........O.O....O...O...O#.......O.O....#................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........#.............#........................#...#O.O.O........#..........#. +...#O..O.OO...O#O.....#O....O.#...O.O........#....OO#.....O....#.....#O......O..OO....O...O..O.OO..O....O......................... +..#..................O............O.....O......O......O..#......#........O......O.....O.....#...........#.O.O..#..#............... +........#...................O.O..O..O#.#..........O.......O.#...#...#......#.....#O.......................O.O....................# +....O..O.OO..#O.O.#....O...#OOO..OO.OO.........O................O...OO.O.O...........O........O.OO..O.....O.O........#.........#.. +..................................O............O................O...OO.O........O....O..........OO..#.....O.O..................... +..#.O..................O...#....#...O.O..O...O.O.........O.OO.OO.O.OO.O...O..O..OO....O...O...............O.O#.................... +.....................O.......O....O.O..#.....#.#.O.O....O................O......O.....O#.O....#........#.#O.O.......O........#.... +.................#.....O..#.........O............O.O....O......#...#..#..O......O...O.O................#....O.......O............. +....O..O.OO#..O......O.O.....O...........................................O......O.....O..O...........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.O.....O..#.O..........#...OOO....O.O..............O........O......................#..........O............. +#.....................O.O..O.....OOO...#.#.....O^O.O........O...................O.....O..O......#..O.O....O.O.......O............. +......OO#O..OO.O.O..O..OO..O.O..OOO.O.OO.O.OOOOO.O.O....O...........#....O......O...#.O..O...........O....O.O.......O............. +...#OO..OO..OO.O.O.OO.O.OOOO.O....O...O..........#.O...............#.....O......O..#.............................#...#.#.......... +....................#........#...........##........O..............#......O......O...#..................#................#......... +#.............O.O......O....O.O...O.OOO...........OO......O.......................O............................................... +............#..........O....O.O.....O.............O.......O.........................................#.#.........#..............#.. +...............#....#O...........#O...O............O....O................O......O...#.O..O.##......O.OOO.O.O.OOOO....OO...OOO.#... +......OO..O...O.O....O.O....O#O...O.O.O#......O...OO...#..O...#.......#...........O.....#...........O............#........#....... +.......................O..........O...O...........OO..#...O..............O......O.O...O.O......OO...OO.O..O.O.O#.................# +.......O..O...O..#.#...O...........#O.OO...OOO.O.OOO..OO.OOOOOOO..O.OOOOO.OO.OOO.OO....OO....O..OO..O....OO...............#..O.#.. +......OO#.O...O.......#O..............O......#....OO.....#...........#....................................O.#..............#...... +......O.........O.....#O....O.O..............#....OO....O#O....#.....##..O......O.....O..O..........OO....O........#....#......... +.............#.O.O.....O...O.O....O.O.O....OOO.O.O.O.OOOOO.OOO.O..O..OOO.OO..O..O.O...O.OO....#.....OO...#O...O#....O............. +......OO..O.##..O......O....O.O...O...O..#........OO......O................#..#.#...................O.........O......#.......O.... +......OO..O............O..........O...O........O..O.......O..........O...O......O.............#......O....O...O.....O......#.O.... +...#...O...............O.........#..#..#....................................#..............#....#................................. +.....#O.OO.OOO.O.O..O..OOO.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....O.O.#....OO..O...#....OO....O................O............O..O...O......OO....O#..O.....O............. +.......O.#O.O..O.O....................O......#....OO....O#O..............O........O...O..O...O.##..OOO#...O...O....#.............. +.....##.#............##OOOOO.O.OOOOOO.O.....#......O....O..............#.O............O..O..........OO...#........#..........O.... +.......................#..............##...#......OO....O.O..............O........O...O........#....O....#O...O................... +..#....O...#.......#...#..##............#...OO.O...O.OO.....OO...................O....OOO....OOOO....O....O..#O.....O....#...O.#.. +..#.............O.O........O.........O.OO.O..OOO.OOOOOO.OOO..O..OOO..OOO#O........O...O#.O...O......O#....O.........O....#........ +...........#....O.O...#O......O..#.....#..........O.......O..............................O...O...........#O.#..................... +.......O..#.....O.O....O...#OOOO....OOO.O.O.OO.O.O.O.OOO.O..OOOO..O.OO.O............##.#.....O..O........O...OO........#.#......#. +#............................................#.....O...................O.##...#..........OO..OO......O#...O...O.....#............. +..#....O.......#.O...O.O..OOOO.OO...O.O.O.O.OO.O.O.O.OOOOO..OOOO..O.OO.O..OOOO.O.OO.....................................#......... +.......O...........................................O#..................O.#............#..............O#...O......................# +........................................................................#.......#....................O...O.OOO.O.OO.OO#.#......... +................#..#......................#...........................................#OO..O.OOOOO.O.....OO..OOO.....O............ +.......O................##.........................O....O.............#O............##...............O..........#....O..#....#.... +.........#.......#...O.O..O....O................#......#....#..........O.#..................#...#...O.O........................... +#......O..#............O...............#....#.#..#...OO................O............................OOO...O##.O......O............ +.#..##.O.............#.O..#...................O.O.OOO.O.#..............O#........#.....O.....OO.O...O....O...............#......#. +...#......................O............O......O...OOO.O.........#......O..............#..O...O.......OO.#.O...#......O............ +...#...........#..#.............................#.....#.................................O.O...O..O...OO....O.O......#O............ +...#.........................#.OO...O...O.O..........O.OOO..OOO...O.O.....O......O.....O.............O....O..........O......##.... +.........................#.........................O.#.O.......O.......O.....#...........#...........O....O........O.O............ +.#..................................#.......................O................................O........O........................... +..............................................O....O...O.......O....#..O........##.....#.#...O.....#.O...#O........O.O............ +.......O........#...............................#........#..OOO...O.O.....O......O.....O.............OO............O.O............ +......#....#...........O.....................#O..O.....OOOO.OOOO..O.OO.O.........#.#.........#.....#O.....O........O.O..#......... +................#..............................#.......O...............#...#.....#.......#...........O....#........O.O............ +....................#O....OO.O.OOOO.O...O.O...O..O.........#..#...........#.#.................#...#................O.O....#....... +.......O.....#..#...#............................#.#...O..............................O........#......O..............O.#.......... +.........#..........#.................#................O...................#.#.......................O.............O.O..#......... +....#.............#.......................O....OOO.O..OOO.......OOO...O.O#...........#.O...O..OOO..O..O..........#...O............ +.......O#.#............................#...........................................#.................#O.............#..........#.. +..............#..........................#............#O........#....#..O#.....#......................O..#....#.....OOO.OO....##.. +...................#OOO..OOO.O.OOOO.O..OOOOOOO...O.O...O................O....#.......#........#..............#.....O.O..#......... +.#.....O..#....#.......O..........................#..#.#...............#O...........#...........#..................O.O............ +...............................................................O........O......................#.....#....#........O.O..#....O.... +...........#..........#..OOO.O.OOOO.O.....O.O....O..O.OO.O..O.....#.........#..............#................#......OOO.#.......... +............#.................................###..............#.#......O...........................................O............# +......#O.O....O.O..OO.OO.OOOOO.OOOO.OO.O.OOOOO...O.OO.OO.O..O.O...O..OO...................#............#...#........O.#.....#..... +.............#..................#...................#......#.........#..#.......................#....#.OO.O..OO.O.....#......O...# +..#....##................................#.................#...........................#.......#....#...#..........#.O............ +...............................#......................................#.........#.............#......................#.......O..#. diff --git a/2024/06/solution.nix b/2024/06/solution.nix index 33ad9b0..80c210a 100644 --- a/2024/06/solution.nix +++ b/2024/06/solution.nix @@ -2,10 +2,11 @@ content = lib.trim input; - chart = content + chart = toChart content; + + toChart = s: s |> lib.strings.splitString "\n" - |> map (lib.strings.splitString "") - |> map (line: lib.sublist 1 (builtins.length line - 2) line) + |> map (lib.stringToCharacters) ; startingPos = let @@ -22,7 +23,7 @@ index = i: list: builtins.elemAt list i; - getChar = {x, y}: chart + getChar = {x, y}: chart: chart |> index y |> index x ; @@ -30,33 +31,101 @@ height = builtins.length chart; width = chart |> index 0 |> builtins.length; - progress = {visited ? {}, pos, dir, ...}: let - nextChar = getChar (addVec pos dir); - newDir = if nextChar == "#" then rotate dir else dir; + replace2d = {x, y}: updated: chart: let + newRow = chart |> index y |> replace x updated; + in + replace y newRow chart; + + replace = i: updated: list: + let before = lib.sublist 0 i list; + after = lib.sublist (i + 1) (builtins.length list - i) list; + in + if i < 0 || i > builtins.length list then list else + before ++ [updated] ++ after; + + progress = {visited ? {}, pos, dir, obs ? [], charts ? chart, ...}: let + newDir = if colliding then rotate dir else dir; newPos = addVec pos newDir; + colliding = nextChar == "#"; + nextChar = getChar fwd charts; fwd = addVec pos dir; + hash = posToString pos; + exited = fwd.y >= height || fwd.x >= width || fwd.y < 0 || fwd.x < 0; + canObstruct = + # unique + (!lib.elem (posToString fwd) obs) + # inside map + && (!exited) + # can't put an obstacle when there already is one + && (!colliding) + # if I already visited the place in front, putting an obstacle there won't work, as I can't get to where I am now! + && (!lib.hasAttr (posToString fwd) visited) + # see if I will end up in a loop turning right here + && getLoop {inherit pos visited dir; charts = replace2d fwd "#" charts;}; in { - visited = visited // {${posToString pos} = true;}; - exited = fwd.y >= height || fwd.x >= width || fwd.y < 0 || fwd.x < 0; - pos = newPos; + visited = visited // {${hash} = visited.${hash} or [] ++ [dir];}; + pos = if colliding then pos else newPos; dir = newDir; + inherit exited charts; + obs = obs ++ (if canObstruct then [(posToString fwd)] else []); }; rotate = {x, y}: {x = -y; y = x;}; startingDir = {x = 0; y = -1;}; - getVisits = {pos ? startingPos, dir ? startingDir, visited ? {}, ...}: + getVisits = {pos ? startingPos + , dir ? startingDir + , visited ? {} + , obs ? [] + , charts ? chart + , ...}: let - nextStep = progress {inherit pos dir visited;}; - in if nextStep.exited then visited else getVisits nextStep; + nextStep = progress {inherit pos dir visited obs charts;}; + in if nextStep.exited then nextStep else getVisits nextStep; - part1result = getVisits {} + path = getVisits {}; + + part1result = path.visited |> builtins.attrNames |> builtins.length - # the last position - |> (v: v + 1) ; + getLoop = state: + let + nextStep = progress state; + hash = posToString state.pos; + enteredLoop = lib.elem state.dir (state.visited.${hash} or []); + in if enteredLoop then true + else if nextStep.exited then false + else getLoop nextStep; + + part2result = builtins.trace "This is very slow!" (path.obs |> builtins.length) + ; + + # visualisation stuff + + hashToVec = s: s |> lib.splitString "," |> map lib.strings.toInt |> (v: {x = index 0 v; y = index 1 v;}); + + annotateObs = chart: + builtins.foldl' + (c: obs: let pos = hashToVec obs; in replace2d pos "O" c) chart path.obs; + + annotatePath = chart: + builtins.foldl' + (c: hash: let + pos = hashToVec hash; + dir = index 0 path.visited.${hash}; + sym = if dir.x == 1 then ">" else if dir.x == -1 then "<" else if dir.y == 1 then "v" else "^"; + in replace2d pos sym c) chart + (builtins.attrNames path.visited); + + chartToStr = c: c + |> map (lib.concatStringsSep "") + |> lib.concatStringsSep "\n" + ; + + annotated = chart |> annotatePath |> annotateObs |> chartToStr; + } diff --git a/2024/flake.nix b/2024/flake.nix index 02d846d..e41b41e 100644 --- a/2024/flake.nix +++ b/2024/flake.nix @@ -15,8 +15,19 @@ example = (pkgs.lib.readFile ./06/example.txt); input = (pkgs.lib.readFile ./06/input.txt); in { - part1example = (solution example); - part1 = (solution input); + example = (solution example); + sample1 = (solution '' +.#.. +.^#. +.#..''); + sample2 = (solution '' +.#...... +........ +.....#.. +#....... +..#.#... +...^....''); + real = (solution input); }; packages.x86_64-linux.watch = tix.watch { diff --git a/2024/results.nix b/2024/results.nix new file mode 100644 index 0000000..b493e37 --- /dev/null +++ b/2024/results.nix @@ -0,0 +1,4745 @@ +{ +tooSmall = [ + "68,32" + "71,32" + "60,49" + "60,29" + "68,26" + "70,26" + "71,26" + "79,26" + "84,39" + "84,56" + "84,66" + "60,71" + "42,49" + "42,31" + "42,25" + "42,11" + "45,11" + "48,11" + "54,11" + "79,11" + "68,23" + "51,23" + "45,23" + "35,23" + "42,15" + "45,15" + "46,18" + "46,19" + "46,20" + "46,22" + "46,23" + "46,30" + "46,35" + "46,37" + "46,47" + "46,57" + "46,60" + "46,66" + "46,69" + "46,71" + "46,82" + "46,83" + "46,89" + "46,90" + "46,91" + "46,98" + "31,103" + "26,103" + "21,103" + "18,96" + "18,95" + "18,94" + "18,89" + "34,63" + "64,63" + "68,63" + "69,63" + "71,63" + "96,63" + "97,63" + "99,71" + "99,77" + "99,90" + "93,110" + "60,110" + "37,96" + "37,89" + "37,75" + "64,62" + "68,62" + "69,62" + "71,62" + "96,62" + "97,62" + "100,62" + "116,65" + "116,66" + "116,68" + "116,70" + "116,71" + "116,72" + "116,85" + "116,87" + "116,89" + "116,93" + "116,94" + "110,96" + "109,96" + "105,96" + "96,96" + "93,96" + "88,93" + "88,87" + "88,83" + "88,80" + "88,79" + "95,79" + "96,79" + "101,79" + "103,79" + "106,79" + "108,79" + "110,79" + "110,83" + "110,84" + "110,85" + "110,87" + "110,88" + "110,89" + "110,92" + "110,93" + "110,94" + "110,104" + "105,105" + "100,105" + "96,105" + "94,105" + "93,105" + "87,105" + "82,98" + "82,94" + "82,92" + "82,90" + "82,87" + "82,83" + "82,80" + "82,79" + "82,78" + "82,75" + "82,69" + "82,45" + "82,44" + "82,42" + "92,42" + "101,56" + "101,62" + "101,67" + "101,71" + "101,72" + "101,82" + "101,83" + "101,85" + "101,87" + "101,88" + "101,89" + "101,90" + "101,91" + "101,93" + "96,93" + "95,93" + "94,93" + "93,93" + "86,93" + "61,93" + "60,93" + "56,93" + "54,93" + "53,93" + "47,93" + "44,93" + "42,93" + "41,89" + "50,85" + "58,85" + "69,85" + "73,85" + "80,85" + "82,85" + "93,88" + "93,89" + "93,90" + "93,95" + "87,112" + "81,112" + "74,112" + "68,112" + "66,112" + "62,112" + "61,112" + "60,112" + "58,95" + "58,94" + "58,90" + "58,82" + "58,80" + "58,79" + "58,78" + "58,76" + "58,75" + "58,69" + "58,59" + "58,49" + "64,47" + "68,47" + "70,47" + "71,47" + "72,47" + "73,47" + "92,47" + "94,47" + "94,56" + "94,62" + "90,64" + "86,64" + "80,64" + "77,64" + "74,64" + "70,64" + "68,64" + "67,64" + "65,64" + "63,64" + "62,64" + "60,64" + "59,64" + "38,64" + "33,61" + "42,53" + "48,53" + "54,53" + "64,53" + "68,53" + "70,53" + "71,53" + "72,53" + "73,53" + "80,53" + "84,53" + "88,53" + "89,56" + "89,62" + "89,67" + "89,69" + "89,71" + "89,72" + "89,77" + "89,82" + "89,83" + "89,85" + "89,88" + "89,89" + "89,90" + "89,91" + "89,95" + "87,108" + "81,108" + "74,108" + "68,108" + "66,108" + "62,108" + "61,108" + "60,108" + "56,108" + "42,108" + "40,108" + "32,108" + "31,108" + "30,96" + "30,95" + "30,89" + "30,85" + "30,84" + "30,82" + "30,78" + "30,76" + "30,75" + "30,61" + "46,60" + "48,60" + "54,60" + "56,66" + "56,69" + "56,70" + "56,71" + "56,77" + "56,82" + "56,83" + "56,89" + "56,90" + "56,91" + "56,92" + "56,98" + "56,102" + "53,104" + "50,95" + "50,94" + "50,90" + "50,89" + "50,82" + "50,81" + "50,80" + "50,79" + "50,78" + "50,76" + "50,75" + "50,69" + "50,49" + "54,39" + "68,39" + "70,39" + "71,39" + "73,39" + "90,39" + "92,39" + "94,39" + "95,39" + "102,39" + "104,47" + "104,58" + "99,59" + "96,59" + "95,59" + "90,59" + "86,59" + "77,59" + "70,59" + "70,49" + "70,45" + "70,44" + "70,42" + "70,41" + "70,36" + "70,29" + "73,25" + "79,25" + "80,25" + "84,25" + "85,25" + "93,25" + "105,25" + "107,25" + "111,34" + "111,36" + "111,38" + "111,39" + "109,45" + "105,45" + "101,45" + "99,45" + "97,45" + "94,45" + "93,45" + "89,45" + "86,45" + "74,45" + "71,45" + "70,45" + "68,45" + "67,42" + "67,41" + "67,36" + "67,29" + "67,26" + "67,24" + "67,23" + "67,20" + "70,19" + "71,19" + "73,19" + "76,19" + "79,19" + "84,19" + "85,19" + "87,19" + "93,19" + "96,24" + "96,35" + "96,39" + "96,47" + "89,51" + "86,51" + "74,51" + "71,51" + "70,51" + "68,51" + "66,51" + "65,51" + "62,51" + "60,51" + "58,51" + "44,51" + "44,49" + "44,42" + "44,38" + "44,31" + "44,25" + "51,22" + "54,22" + "57,22" + "60,22" + "70,22" + "71,22" + "73,22" + "73,25" + "73,30" + "73,35" + "73,39" + "73,43" + "73,47" + "73,59" + "73,62" + "73,66" + "73,67" + "73,69" + "73,70" + "73,71" + "73,73" + "73,74" + "73,77" + "73,79" + "73,82" + "73,83" + "73,88" + "73,89" + "73,90" + "73,91" + "73,92" + "73,93" + "73,95" + "71,96" + "69,96" + "68,96" + "66,96" + "63,96" + "62,96" + "61,96" + "60,96" + "56,96" + "54,96" + "53,96" + "51,96" + "47,96" + "44,96" + "42,96" + "40,96" + "38,96" + "32,96" + "31,96" + "28,96" + "28,89" + "28,85" + "28,84" + "28,82" + "28,78" + "28,76" + "28,75" + "28,61" + "28,59" + "28,49" + "33,44" + "42,44" + "48,44" + "53,44" + "54,44" + "59,44" + "64,44" + "70,44" + "72,44" + "73,44" + "86,47" + "86,56" + "86,59" + "86,62" + "86,66" + "86,67" + "86,69" + "86,71" + "86,72" + "86,77" + "86,79" + "86,82" + "86,83" + "86,85" + "86,88" + "86,89" + "86,90" + "86,91" + "86,92" + "86,93" + "86,95" + "79,98" + "76,98" + "75,98" + "74,98" + "71,98" + "69,98" + "68,98" + "66,98" + "63,98" + "62,98" + "61,98" + "60,98" + "56,98" + "54,98" + "53,98" + "51,98" + "47,98" + "42,98" + "40,98" + "38,98" + "32,98" + "31,98" + "28,98" + "27,98" + "26,98" + "21,98" + "16,96" + "16,95" + "16,94" + "16,89" + "16,85" + "16,84" + "16,82" + "16,78" + "16,75" + "16,62" + "16,59" + "21,53" + "21,60" + "21,63" + "21,65" + "21,67" + "21,70" + "21,77" + "21,89" + "18,90" + "16,90" + "12,90" + "10,90" + "10,85" + "10,84" + "10,81" + "10,80" + "10,78" + "10,67" + "10,62" + "10,59" + "10,54" + "10,50" + "10,45" + "10,44" + "12,35" + "29,35" + "32,35" + "42,35" + "51,35" + "54,35" + "59,35" + "70,35" + "73,35" + "87,35" + "90,35" + "90,39" + "88,43" + "80,43" + "74,43" + "71,43" + "70,43" + "68,43" + "65,43" + "62,43" + "60,43" + "58,43" + "53,37" + "53,36" + "53,32" + "53,25" + "53,23" + "53,20" + "53,18" + "60,14" + "71,14" + "73,14" + "79,14" + "80,24" + "80,30" + "80,35" + "80,37" + "80,39" + "80,43" + "80,47" + "80,53" + "80,56" + "80,59" + "80,66" + "80,67" + "80,69" + "80,71" + "80,73" + "80,74" + "80,77" + "80,79" + "80,82" + "80,83" + "77,83" + "74,83" + "71,83" + "70,83" + "69,83" + "68,83" + "66,83" + "63,83" + "62,83" + "61,83" + "60,83" + "59,83" + "56,83" + "54,83" + "53,83" + "51,83" + "47,83" + "44,83" + "43,83" + "38,83" + "34,83" + "28,83" + "21,83" + "18,83" + "16,83" + "14,81" + "14,80" + "14,78" + "14,75" + "14,67" + "14,62" + "14,59" + "14,54" + "14,50" + "14,45" + "14,44" + "14,25" + "17,18" + "25,18" + "26,18" + "40,20" + "40,23" + "40,30" + "40,35" + "40,37" + "40,38" + "40,46" + "40,47" + "40,56" + "36,56" + "31,56" + "28,56" + "25,56" + "21,56" + "16,56" + "12,56" + "12,54" + "12,50" + "12,45" + "12,44" + "12,29" + "12,28" + "12,25" + "17,24" + "37,24" + "42,24" + "49,30" + "49,34" + "49,35" + "49,37" + "49,38" + "49,44" + "49,46" + "49,47" + "49,49" + "49,53" + "49,55" + "49,56" + "49,57" + "49,60" + "49,62" + "49,66" + "49,68" + "49,69" + "49,70" + "49,71" + "47,72" + "46,72" + "44,72" + "43,72" + "41,72" + "39,72" + "34,72" + "33,72" + "32,72" + "28,72" + "24,72" + "18,72" + "12,72" + "10,72" + "9,67" + "9,62" + "9,59" + "9,57" + "9,54" + "9,51" + "9,50" + "9,45" + "9,44" + "9,42" + "9,41" + "14,38" + "19,38" + "24,38" + "28,38" + "30,44" + "30,47" + "30,49" + "30,50" + "28,50" + "26,50" + "25,50" + "24,50" + "23,50" + "21,50" + "20,50" + "19,50" + "18,50" + "18,46" + "18,45" + "18,44" + "18,42" + "18,41" + "18,36" + "18,33" + "18,32" + "18,31" + "18,30" + "18,29" + "18,28" + "18,27" + "18,25" + "18,24" + "18,22" + "18,20" + "18,19" + "18,18" + "18,14" + "18,13" + "18,12" + "18,11" + "20,6" + "21,6" + "24,6" + "25,6" + "26,6" + "30,6" + "37,6" + "41,6" + "43,6" + "44,6" + "45,6" + "48,6" + "51,6" + "54,6" + "55,6" + "60,6" + "58,9" + "58,6" + "60,5" + "68,5" + "71,5" + "72,5" + "73,5" + "77,5" + "79,5" + "80,5" + "84,5" + "85,5" + "88,5" + "89,5" + "99,5" + "102,16" + "96,16" + "94,16" + "88,16" + "85,16" + "81,16" + "80,16" + "76,14" + "76,12" + "76,11" + "78,4" + "79,4" + "80,4" + "84,4" + "85,4" + "86,4" + "88,4" + "89,4" + "99,4" + "102,4" + "103,4" + "96,18" + "94,18" + "92,16" + "92,14" + "92,12" + "92,10" + "99,9" + "100,9" + "102,9" + "108,17" + "108,25" + "108,32" + "108,34" + "108,36" + "108,38" + "108,39" + "108,44" + "108,47" + "108,49" + "108,52" + "108,53" + "108,54" + "108,57" + "108,58" + "108,60" + "108,61" + "108,62" + "108,64" + "108,65" + "108,66" + "108,68" + "108,69" + "108,71" + "108,72" + "108,79" + "106,80" + "105,80" + "97,80" + "96,80" + "93,80" + "86,80" + "80,80" + "78,80" + "77,80" + "75,80" + "74,80" + "71,80" + "70,80" + "69,80" + "68,80" + "66,80" + "63,80" + "62,80" + "61,80" + "60,80" + "59,80" + "58,80" + "56,80" + "54,80" + "53,80" + "51,80" + "47,80" + "46,80" + "44,80" + "43,80" + "39,80" + "38,80" + "36,78" + "36,76" + "36,75" + "36,69" + "36,68" + "36,66" + "36,65" + "36,61" + "36,58" + "36,57" + "36,53" + "36,49" + "36,46" + "42,46" + "44,46" + "46,46" + "48,46" + "51,48" + "51,49" + "51,50" + "51,51" + "51,53" + "51,55" + "51,56" + "51,57" + "51,58" + "51,59" + "51,60" + "51,62" + "51,66" + "51,68" + "51,69" + "51,70" + "51,71" + "51,73" + "51,74" + "51,75" + "51,77" + "51,78" + "51,79" + "51,82" + "51,83" + "51,87" + "51,89" + "51,90" + "51,91" + "51,92" + "51,93" + "51,98" + "51,102" + "51,106" + "49,115" + "42,115" + "40,115" + "36,115" + "34,115" + "33,115" + "32,115" + "31,115" + "29,115" + "27,115" + "26,115" + "21,115" + "26,106" + "37,106" + "39,106" + "46,106" + "50,106" + "54,106" + "63,116" + "63,123" + "60,124" + "57,124" + "55,124" + "54,124" + "52,124" + "49,124" + "44,124" + "42,124" + "36,124" + "34,124" + "33,124" + "32,124" + "31,124" + "29,124" + "27,124" + "26,124" + "25,124" + "23,122" + "23,115" + "23,113" + "23,104" + "23,103" + "23,98" + "23,96" + "23,95" + "27,94" + "28,94" + "37,94" + "39,94" + "42,94" + "45,94" + "46,94" + "49,94" + "50,94" + "53,94" + "54,94" + "56,94" + "61,94" + "64,94" + "65,94" + "66,94" + "69,94" + "70,94" + "71,94" + "71,96" + "71,98" + "71,102" + "71,104" + "71,105" + "71,106" + "71,112" + "69,113" + "68,113" + "66,113" + "61,113" + "60,113" + "58,113" + "57,113" + "55,113" + "51,113" + "49,113" + "46,113" + "46,111" + "46,106" + "48,105" + "50,105" + "54,105" + "55,113" + "55,116" + "55,117" + "55,118" + "55,120" + "51,121" + "49,121" + "45,121" + "44,121" + "43,121" + "42,121" + "41,121" + "39,121" + "36,121" + "34,121" + "33,121" + "32,121" + "31,121" + "29,121" + "27,121" + "26,121" + "25,121" + "23,121" + "21,121" + "20,121" + "42,118" + "47,118" + "48,118" + "49,118" + "51,118" + "54,118" + "55,118" + "65,118" + "66,118" + "70,118" + "72,118" + "72,120" + "72,121" + "72,122" + "72,125" + "70,126" + "69,126" + "66,126" + "60,126" + "57,126" + "55,126" + "54,126" + "52,126" + "51,126" + "49,126" + "44,126" + "43,126" + "42,126" + "41,126" + "39,126" + "37,126" + "36,126" + "34,126" + "33,126" + "32,126" + "31,126" + "29,126" + "28,126" + "27,126" + "26,126" + "25,126" + "23,126" + "22,126" + "20,126" + "19,126" + "16,126" + "14,126" + "9,126" + "7,126" + "7,122" + "7,119" + "7,116" + "7,112" + "7,105" + "7,104" + "7,102" + "7,99" + "7,98" + "7,96" + "7,93" + "7,89" + "7,86" + "7,85" + "7,84" + "7,81" + "7,78" + "7,72" + "7,67" + "7,62" + "7,59" + "7,57" + "14,57" + "19,57" + "20,57" + "23,57" + "24,57" + "28,57" + "31,57" + "34,59" + "34,62" + "34,63" + "34,68" + "34,70" + "34,71" + "34,75" + "34,77" + "34,78" + "34,79" + "34,85" + "34,87" + "32,87" + "28,87" + "25,87" + "24,87" + "23,87" + "21,87" + "18,87" + "16,87" + "13,87" + "12,87" + "11,87" + "10,87" + "8,87" + "7,87" + "6,85" + "6,84" + "6,82" + "6,81" + "6,78" + "6,72" + "16,71" + "24,71" + "27,71" + "28,71" + "33,71" + "34,71" + "38,75" + "38,77" + "38,78" + "38,79" + "38,85" + "38,87" + "38,88" + "38,89" + "38,90" + "38,91" + "35,91" + "34,91" + "33,91" + "32,91" + "31,91" + "28,91" + "26,91" + "25,91" + "24,91" + "23,91" + "23,89" + "23,85" + "23,84" + "23,83" + "23,81" + "23,80" + "23,79" + "23,78" + "23,76" + "23,75" + "23,72" + "23,67" + "23,66" + "23,64" + "23,59" + "28,59" + "29,62" + "29,63" + "29,65" + "29,67" + "29,68" + "29,69" + "29,70" + "29,71" + "26,73" + "25,73" + "24,73" + "23,73" + "19,73" + "18,73" + "16,73" + "12,73" + "10,73" + "8,73" + "7,73" + "4,73" + "4,70" + "4,69" + "4,67" + "4,64" + "4,62" + "4,59" + "4,57" + "4,54" + "4,52" + "4,51" + "4,50" + "14,49" + "17,49" + "18,49" + "22,49" + "23,49" + "24,49" + "28,49" + "30,49" + "33,49" + "35,49" + "36,49" + "39,49" + "42,49" + "44,49" + "46,49" + "48,49" + "53,49" + "54,49" + "55,49" + "56,49" + "57,49" + "63,49" + "64,49" + "66,49" + "67,49" + "68,49" + "70,49" + "72,49" + "73,49" + "75,49" + "77,49" + "78,49" + "80,49" + "84,49" + "86,49" + "88,49" + "90,49" + "92,49" + "93,49" + "94,49" + "96,49" + "100,49" + "103,49" + "106,49" + "106,52" + "106,53" + "106,54" + "106,57" + "106,58" + "106,60" + "106,61" + "106,62" + "106,64" + "106,65" + "106,66" + "106,68" + "106,69" + "106,71" + "106,72" + "106,79" + "106,82" + "106,83" + "106,84" + "106,85" + "106,87" + "106,88" + "106,89" + "106,90" + "106,92" + "106,93" + "106,94" + "106,95" + "106,96" + "106,99" + "106,101" + "106,104" + "106,105" + "106,108" + "106,109" + "106,111" + "106,112" + "106,113" + "100,113" + "100,103" + "100,94" + "100,93" + "100,91" + "100,90" + "100,89" + "100,88" + "100,87" + "100,84" + "100,83" + "100,82" + "100,80" + "103,77" + "105,77" + "106,77" + "108,77" + "110,77" + "111,77" + "112,77" + "118,77" + "122,77" + "124,77" + "125,80" + "125,84" + "125,85" + "125,87" + "125,88" + "125,91" + "125,93" + "111,101" + "110,101" + "100,101" + "97,101" + "96,101" + "95,101" + "94,101" + "93,101" + "91,101" + "87,101" + "101,99" + "101,100" + "101,101" + "101,104" + "101,105" + "101,107" + "101,108" + "101,109" + "101,111" + "101,112" + "101,113" + "101,117" + "99,118" + "96,118" + "95,118" + "94,118" + "91,118" + "87,118" + "86,116" + "88,107" + "97,107" + "106,107" + "109,107" + "115,109" + "115,111" + "115,112" + "115,113" + "115,114" + "115,115" + "115,117" + "115,121" + "115,122" + "115,123" + "115,124" + "112,127" + "110,127" + "109,127" + "104,127" + "103,127" + "102,120" + "102,119" + "102,118" + "102,116" + "102,113" + "102,110" + "102,103" + "105,100" + "106,100" + "108,100" + "109,100" + "113,100" + "114,100" + "116,100" + "117,100" + "117,104" + "117,106" + "117,107" + "117,109" + "117,111" + "117,112" + "117,113" + "117,114" + "117,115" + "117,116" + "117,117" + "117,118" + "117,121" + "117,122" + "117,123" + "117,124" + "117,128" + "116,126" + "116,125" + "116,124" + "116,120" + "120,120" + "121,120" + "125,123" + "125,128" + "125,129" +]; +tooBig = [ + "68,32" + "71,32" + "60,49" + "60,31" + "60,29" + "68,26" + "70,26" + "71,26" + "79,26" + "84,39" + "84,56" + "84,66" + "60,71" + "47,71" + "42,49" + "42,31" + "42,25" + "42,11" + "45,11" + "48,11" + "54,11" + "79,11" + "68,23" + "51,23" + "45,23" + "41,23" + "35,23" + "42,15" + "45,15" + "46,18" + "46,19" + "46,20" + "46,22" + "46,23" + "46,24" + "46,30" + "46,35" + "46,37" + "46,47" + "46,57" + "46,60" + "46,66" + "46,69" + "46,71" + "46,72" + "46,82" + "46,83" + "46,89" + "46,90" + "46,91" + "46,98" + "31,103" + "26,103" + "21,103" + "18,96" + "18,95" + "18,94" + "18,89" + "34,63" + "47,63" + "64,63" + "68,63" + "69,63" + "71,63" + "85,63" + "96,63" + "97,63" + "99,71" + "99,77" + "99,90" + "93,110" + "60,110" + "37,96" + "37,89" + "37,75" + "37,62" + "47,62" + "64,62" + "68,62" + "69,62" + "71,62" + "85,62" + "96,62" + "97,62" + "100,62" + "116,65" + "116,66" + "116,68" + "116,70" + "116,71" + "116,72" + "116,85" + "116,87" + "116,89" + "116,93" + "116,94" + "110,96" + "109,96" + "105,96" + "96,96" + "93,96" + "88,93" + "88,87" + "88,83" + "88,80" + "88,79" + "95,79" + "96,79" + "100,79" + "101,79" + "103,79" + "106,79" + "108,79" + "110,79" + "110,83" + "110,84" + "110,85" + "110,87" + "110,88" + "110,89" + "110,92" + "110,93" + "110,94" + "110,97" + "110,104" + "105,105" + "100,105" + "96,105" + "94,105" + "93,105" + "87,105" + "82,98" + "82,94" + "82,92" + "82,90" + "82,87" + "82,83" + "82,80" + "82,79" + "82,78" + "82,75" + "82,70" + "82,69" + "82,62" + "82,61" + "82,45" + "82,44" + "82,42" + "85,42" + "92,42" + "101,56" + "101,62" + "101,67" + "101,71" + "101,72" + "101,82" + "101,83" + "101,85" + "101,87" + "101,88" + "101,89" + "101,90" + "101,91" + "101,93" + "96,93" + "95,93" + "94,93" + "93,93" + "87,93" + "86,93" + "81,93" + "61,93" + "60,93" + "56,93" + "54,93" + "53,93" + "47,93" + "45,93" + "44,93" + "42,93" + "41,89" + "47,85" + "50,85" + "58,85" + "69,85" + "73,85" + "80,85" + "82,85" + "93,88" + "93,89" + "93,90" + "93,94" + "93,95" + "93,97" + "93,106" + "93,111" + "87,112" + "81,112" + "74,112" + "68,112" + "66,112" + "62,112" + "61,112" + "60,112" + "58,95" + "58,94" + "58,92" + "58,90" + "58,84" + "58,82" + "58,80" + "58,79" + "58,78" + "58,76" + "58,75" + "58,70" + "58,69" + "58,62" + "58,61" + "58,59" + "58,49" + "64,47" + "68,47" + "70,47" + "71,47" + "72,47" + "73,47" + "79,47" + "85,47" + "92,47" + "94,47" + "94,56" + "94,62" + "90,64" + "86,64" + "81,64" + "80,64" + "77,64" + "74,64" + "70,64" + "68,64" + "67,64" + "65,64" + "63,64" + "62,64" + "60,64" + "59,64" + "57,64" + "47,64" + "45,64" + "41,64" + "38,64" + "36,64" + "33,62" + "33,61" + "42,53" + "47,53" + "48,53" + "54,53" + "64,53" + "68,53" + "70,53" + "71,53" + "72,53" + "73,53" + "79,53" + "80,53" + "84,53" + "85,53" + "88,53" + "89,56" + "89,62" + "89,65" + "89,67" + "89,69" + "89,71" + "89,72" + "89,77" + "89,82" + "89,83" + "89,85" + "89,88" + "89,89" + "89,90" + "89,91" + "89,94" + "89,95" + "89,97" + "89,106" + "87,108" + "81,108" + "74,108" + "68,108" + "66,108" + "62,108" + "61,108" + "60,108" + "57,108" + "56,108" + "42,108" + "40,108" + "36,108" + "32,108" + "31,108" + "30,96" + "30,95" + "30,89" + "30,85" + "30,84" + "30,82" + "30,78" + "30,76" + "30,75" + "30,62" + "30,61" + "34,60" + "46,60" + "47,60" + "48,60" + "54,60" + "56,65" + "56,66" + "56,69" + "56,70" + "56,71" + "56,72" + "56,77" + "56,82" + "56,83" + "56,89" + "56,90" + "56,91" + "56,92" + "56,94" + "56,98" + "56,102" + "53,104" + "50,95" + "50,94" + "50,92" + "50,90" + "50,89" + "50,84" + "50,82" + "50,81" + "50,80" + "50,79" + "50,78" + "50,76" + "50,75" + "50,70" + "50,69" + "50,62" + "50,61" + "50,59" + "50,52" + "50,49" + "54,39" + "68,39" + "70,39" + "71,39" + "73,39" + "79,39" + "85,39" + "90,39" + "92,39" + "94,39" + "95,39" + "102,39" + "104,47" + "104,58" + "99,59" + "96,59" + "95,59" + "93,59" + "90,59" + "86,59" + "81,59" + "77,59" + "70,59" + "70,52" + "70,49" + "70,46" + "70,45" + "70,44" + "70,42" + "70,41" + "70,38" + "70,36" + "70,31" + "70,29" + "70,25" + "73,25" + "79,25" + "80,25" + "84,25" + "85,25" + "93,25" + "105,25" + "107,25" + "111,34" + "111,36" + "111,38" + "111,39" + "109,45" + "105,45" + "101,45" + "99,45" + "97,45" + "94,45" + "93,45" + "89,45" + "86,45" + "81,45" + "74,45" + "71,45" + "70,45" + "69,45" + "68,45" + "67,42" + "67,41" + "67,38" + "67,36" + "67,31" + "67,29" + "67,26" + "67,25" + "67,24" + "67,23" + "67,20" + "70,19" + "71,19" + "73,19" + "76,19" + "79,19" + "80,19" + "84,19" + "85,19" + "87,19" + "93,19" + "96,24" + "96,35" + "96,39" + "96,43" + "96,46" + "96,47" + "93,51" + "89,51" + "86,51" + "81,51" + "74,51" + "71,51" + "70,51" + "69,51" + "68,51" + "66,51" + "65,51" + "62,51" + "60,51" + "59,51" + "58,51" + "57,51" + "49,51" + "47,51" + "45,51" + "44,51" + "44,49" + "44,42" + "44,38" + "44,31" + "44,25" + "47,22" + "51,22" + "54,22" + "57,22" + "60,22" + "68,22" + "70,22" + "71,22" + "73,22" + "73,24" + "73,25" + "73,30" + "73,35" + "73,39" + "73,43" + "73,46" + "73,47" + "73,52" + "73,54" + "73,56" + "73,59" + "73,60" + "73,62" + "73,65" + "73,66" + "73,67" + "73,69" + "73,70" + "73,71" + "73,72" + "73,73" + "73,74" + "73,77" + "73,79" + "73,82" + "73,83" + "73,88" + "73,89" + "73,90" + "73,91" + "73,92" + "73,93" + "73,94" + "73,95" + "71,96" + "69,96" + "68,96" + "66,96" + "63,96" + "62,96" + "61,96" + "60,96" + "57,96" + "56,96" + "55,96" + "54,96" + "53,96" + "51,96" + "49,96" + "47,96" + "45,96" + "44,96" + "42,96" + "40,96" + "38,96" + "36,96" + "32,96" + "31,96" + "29,96" + "28,96" + "28,89" + "28,85" + "28,84" + "28,82" + "28,78" + "28,76" + "28,75" + "28,62" + "28,61" + "28,59" + "28,49" + "33,44" + "42,44" + "47,44" + "48,44" + "53,44" + "54,44" + "59,44" + "64,44" + "68,44" + "70,44" + "71,44" + "72,44" + "73,44" + "74,44" + "79,44" + "85,44" + "86,46" + "86,47" + "86,52" + "86,54" + "86,56" + "86,59" + "86,60" + "86,62" + "86,63" + "86,65" + "86,66" + "86,67" + "86,69" + "86,71" + "86,72" + "86,77" + "86,79" + "86,82" + "86,83" + "86,85" + "86,88" + "86,89" + "86,90" + "86,91" + "86,92" + "86,93" + "86,94" + "86,95" + "81,98" + "79,98" + "76,98" + "75,98" + "74,98" + "71,98" + "69,98" + "68,98" + "66,98" + "63,98" + "62,98" + "61,98" + "60,98" + "57,98" + "56,98" + "55,98" + "54,98" + "53,98" + "51,98" + "49,98" + "47,98" + "45,98" + "42,98" + "40,98" + "38,98" + "36,98" + "32,98" + "31,98" + "29,98" + "28,98" + "27,98" + "26,98" + "21,98" + "17,98" + "16,96" + "16,95" + "16,94" + "16,89" + "16,85" + "16,84" + "16,82" + "16,78" + "16,75" + "16,62" + "16,59" + "21,53" + "21,60" + "21,63" + "21,65" + "21,67" + "21,70" + "21,77" + "21,89" + "18,90" + "17,90" + "16,90" + "15,90" + "12,90" + "10,90" + "10,85" + "10,84" + "10,81" + "10,80" + "10,78" + "10,67" + "10,62" + "10,59" + "10,54" + "10,50" + "10,45" + "10,44" + "12,35" + "29,35" + "32,35" + "42,35" + "45,35" + "47,35" + "51,35" + "54,35" + "59,35" + "68,35" + "70,35" + "71,35" + "73,35" + "74,35" + "79,35" + "85,35" + "87,35" + "90,35" + "90,39" + "90,43" + "88,43" + "81,43" + "80,43" + "74,43" + "72,43" + "71,43" + "70,43" + "69,43" + "68,43" + "66,43" + "65,43" + "62,43" + "60,43" + "59,43" + "58,43" + "53,38" + "53,37" + "53,36" + "53,34" + "53,32" + "53,31" + "53,25" + "53,23" + "53,21" + "53,20" + "53,18" + "60,14" + "71,14" + "73,14" + "79,14" + "80,14" + "80,20" + "80,24" + "80,30" + "80,35" + "80,37" + "80,39" + "80,43" + "80,44" + "80,46" + "80,47" + "80,52" + "80,53" + "80,54" + "80,56" + "80,59" + "80,60" + "80,63" + "80,65" + "80,66" + "80,67" + "80,69" + "80,71" + "80,72" + "80,73" + "80,74" + "80,77" + "80,79" + "80,82" + "80,83" + "77,83" + "74,83" + "72,83" + "71,83" + "70,83" + "69,83" + "68,83" + "66,83" + "63,83" + "62,83" + "61,83" + "60,83" + "59,83" + "57,83" + "56,83" + "55,83" + "54,83" + "53,83" + "51,83" + "49,83" + "47,83" + "45,83" + "44,83" + "43,83" + "38,83" + "36,83" + "34,83" + "29,83" + "28,83" + "27,83" + "21,83" + "18,83" + "17,83" + "16,83" + "15,83" + "14,81" + "14,80" + "14,78" + "14,75" + "14,67" + "14,62" + "14,59" + "14,54" + "14,50" + "14,45" + "14,44" + "14,34" + "14,25" + "17,18" + "25,18" + "26,18" + "40,20" + "40,23" + "40,24" + "40,30" + "40,35" + "40,37" + "40,38" + "40,46" + "40,47" + "40,54" + "40,56" + "36,56" + "32,56" + "31,56" + "28,56" + "27,56" + "25,56" + "21,56" + "16,56" + "15,56" + "13,56" + "12,56" + "12,54" + "12,50" + "12,45" + "12,44" + "12,34" + "12,29" + "12,28" + "12,25" + "17,24" + "37,24" + "41,24" + "42,24" + "45,24" + "47,24" + "49,30" + "49,33" + "49,34" + "49,35" + "49,37" + "49,38" + "49,44" + "49,45" + "49,46" + "49,47" + "49,49" + "49,52" + "49,53" + "49,54" + "49,55" + "49,56" + "49,57" + "49,60" + "49,62" + "49,63" + "49,65" + "49,66" + "49,68" + "49,69" + "49,70" + "49,71" + "49,72" + "47,72" + "46,72" + "45,72" + "44,72" + "43,72" + "41,72" + "39,72" + "36,72" + "34,72" + "33,72" + "32,72" + "29,72" + "28,72" + "27,72" + "24,72" + "20,72" + "18,72" + "17,72" + "15,72" + "13,72" + "12,72" + "10,72" + "9,72" + "9,67" + "9,62" + "9,59" + "9,57" + "9,54" + "9,51" + "9,50" + "9,45" + "9,44" + "9,42" + "9,41" + "14,38" + "19,38" + "24,38" + "28,38" + "30,44" + "30,45" + "30,47" + "30,49" + "30,50" + "28,50" + "27,50" + "26,50" + "25,50" + "24,50" + "23,50" + "21,50" + "20,50" + "19,50" + "18,50" + "18,46" + "18,45" + "18,44" + "18,42" + "18,41" + "18,37" + "18,36" + "18,34" + "18,33" + "18,32" + "18,31" + "18,30" + "18,29" + "18,28" + "18,27" + "18,25" + "18,24" + "18,23" + "18,22" + "18,20" + "18,19" + "18,18" + "18,17" + "18,14" + "18,13" + "18,12" + "18,11" + "20,6" + "21,6" + "24,6" + "25,6" + "26,6" + "30,6" + "37,6" + "41,6" + "43,6" + "44,6" + "45,6" + "48,6" + "51,6" + "54,6" + "55,6" + "60,6" + "58,13" + "58,10" + "58,9" + "58,6" + "58,5" + "60,5" + "68,5" + "71,5" + "72,5" + "73,5" + "77,5" + "79,5" + "80,5" + "84,5" + "85,5" + "88,5" + "89,5" + "99,5" + "102,16" + "96,16" + "94,16" + "88,16" + "85,16" + "81,16" + "80,16" + "79,16" + "76,14" + "76,13" + "76,12" + "76,11" + "76,10" + "76,4" + "78,4" + "79,4" + "80,4" + "84,4" + "85,4" + "86,4" + "88,4" + "89,4" + "99,4" + "102,4" + "103,4" + "96,18" + "94,18" + "92,16" + "92,14" + "92,12" + "92,10" + "99,9" + "100,9" + "102,9" + "103,9" + "108,17" + "108,19" + "108,25" + "108,26" + "108,32" + "108,34" + "108,36" + "108,38" + "108,39" + "108,44" + "108,46" + "108,47" + "108,49" + "108,52" + "108,53" + "108,54" + "108,57" + "108,58" + "108,60" + "108,61" + "108,62" + "108,63" + "108,64" + "108,65" + "108,66" + "108,68" + "108,69" + "108,71" + "108,72" + "108,79" + "106,80" + "105,80" + "100,80" + "97,80" + "96,80" + "93,80" + "88,80" + "87,80" + "86,80" + "81,80" + "80,80" + "79,80" + "78,80" + "77,80" + "75,80" + "74,80" + "72,80" + "71,80" + "70,80" + "69,80" + "68,80" + "66,80" + "63,80" + "62,80" + "61,80" + "60,80" + "59,80" + "58,80" + "57,80" + "56,80" + "55,80" + "54,80" + "53,80" + "51,80" + "49,80" + "47,80" + "46,80" + "45,80" + "44,80" + "43,80" + "39,80" + "38,80" + "36,80" + "36,78" + "36,76" + "36,75" + "36,69" + "36,68" + "36,66" + "36,65" + "36,63" + "36,62" + "36,61" + "36,59" + "36,58" + "36,57" + "36,55" + "36,53" + "36,52" + "36,49" + "36,46" + "41,46" + "42,46" + "44,46" + "45,46" + "46,46" + "47,46" + "48,46" + "50,46" + "51,48" + "51,49" + "51,50" + "51,51" + "51,52" + "51,53" + "51,54" + "51,55" + "51,56" + "51,57" + "51,58" + "51,59" + "51,60" + "51,62" + "51,63" + "51,65" + "51,66" + "51,68" + "51,69" + "51,70" + "51,71" + "51,72" + "51,73" + "51,74" + "51,75" + "51,77" + "51,78" + "51,79" + "51,81" + "51,82" + "51,83" + "51,84" + "51,87" + "51,89" + "51,90" + "51,91" + "51,92" + "51,93" + "51,94" + "51,97" + "51,98" + "51,99" + "51,102" + "51,105" + "51,106" + "51,109" + "51,111" + "49,115" + "42,115" + "40,115" + "36,115" + "34,115" + "33,115" + "32,115" + "31,115" + "29,115" + "27,115" + "26,115" + "21,115" + "26,106" + "37,106" + "39,106" + "46,106" + "50,106" + "52,106" + "54,106" + "63,109" + "63,111" + "63,113" + "63,116" + "63,123" + "60,124" + "57,124" + "55,124" + "54,124" + "52,124" + "49,124" + "44,124" + "42,124" + "36,124" + "34,124" + "33,124" + "32,124" + "31,124" + "29,124" + "27,124" + "26,124" + "25,124" + "23,122" + "23,115" + "23,113" + "23,105" + "23,104" + "23,103" + "23,98" + "23,96" + "23,95" + "27,94" + "28,94" + "37,94" + "39,94" + "42,94" + "45,94" + "46,94" + "47,94" + "49,94" + "50,94" + "52,94" + "53,94" + "54,94" + "56,94" + "57,94" + "61,94" + "64,94" + "65,94" + "66,94" + "69,94" + "70,94" + "71,94" + "71,96" + "71,97" + "71,98" + "71,99" + "71,102" + "71,104" + "71,105" + "71,106" + "71,109" + "71,111" + "71,112" + "71,113" + "69,113" + "68,113" + "66,113" + "62,113" + "61,113" + "60,113" + "58,113" + "57,113" + "55,113" + "51,113" + "49,113" + "46,113" + "46,111" + "46,106" + "46,105" + "48,105" + "50,105" + "52,105" + "54,105" + "55,109" + "55,111" + "55,113" + "55,114" + "55,116" + "55,117" + "55,118" + "55,120" + "51,121" + "49,121" + "45,121" + "44,121" + "43,121" + "42,121" + "41,121" + "39,121" + "36,121" + "34,121" + "33,121" + "32,121" + "31,121" + "29,121" + "27,121" + "26,121" + "25,121" + "23,121" + "22,121" + "21,121" + "20,121" + "42,118" + "47,118" + "48,118" + "49,118" + "51,118" + "54,118" + "55,118" + "56,118" + "64,118" + "65,118" + "66,118" + "70,118" + "72,118" + "72,120" + "72,121" + "72,122" + "72,125" + "70,126" + "69,126" + "66,126" + "60,126" + "57,126" + "55,126" + "54,126" + "52,126" + "51,126" + "49,126" + "44,126" + "43,126" + "42,126" + "41,126" + "39,126" + "37,126" + "36,126" + "34,126" + "33,126" + "32,126" + "31,126" + "29,126" + "28,126" + "27,126" + "26,126" + "25,126" + "23,126" + "22,126" + "20,126" + "19,126" + "16,126" + "14,126" + "9,126" + "7,126" + "7,122" + "7,119" + "7,116" + "7,112" + "7,105" + "7,104" + "7,102" + "7,99" + "7,98" + "7,96" + "7,93" + "7,89" + "7,86" + "7,85" + "7,84" + "7,81" + "7,78" + "7,72" + "7,67" + "7,62" + "7,59" + "7,57" + "14,57" + "19,57" + "20,57" + "22,57" + "23,57" + "24,57" + "28,57" + "31,57" + "34,57" + "34,59" + "34,62" + "34,63" + "34,65" + "34,68" + "34,70" + "34,71" + "34,73" + "34,75" + "34,77" + "34,78" + "34,79" + "34,84" + "34,85" + "34,87" + "32,87" + "29,87" + "28,87" + "27,87" + "25,87" + "24,87" + "23,87" + "21,87" + "20,87" + "18,87" + "17,87" + "16,87" + "15,87" + "13,87" + "12,87" + "11,87" + "10,87" + "9,87" + "8,87" + "7,87" + "6,87" + "6,85" + "6,84" + "6,82" + "6,81" + "6,78" + "6,72" + "10,71" + "16,71" + "22,71" + "24,71" + "27,71" + "28,71" + "33,71" + "34,71" + "35,71" + "38,73" + "38,75" + "38,77" + "38,78" + "38,79" + "38,81" + "38,84" + "38,85" + "38,87" + "38,88" + "38,89" + "38,90" + "38,91" + "36,91" + "35,91" + "34,91" + "33,91" + "32,91" + "31,91" + "29,91" + "28,91" + "27,91" + "26,91" + "25,91" + "24,91" + "23,91" + "23,89" + "23,86" + "23,85" + "23,84" + "23,83" + "23,82" + "23,81" + "23,80" + "23,79" + "23,78" + "23,76" + "23,75" + "23,72" + "23,70" + "23,67" + "23,66" + "23,64" + "23,62" + "23,59" + "28,59" + "29,62" + "29,63" + "29,65" + "29,67" + "29,68" + "29,69" + "29,70" + "29,71" + "29,73" + "27,73" + "26,73" + "25,73" + "24,73" + "23,73" + "22,73" + "20,73" + "19,73" + "18,73" + "17,73" + "16,73" + "15,73" + "13,73" + "12,73" + "10,73" + "9,73" + "8,73" + "7,73" + "6,73" + "5,73" + "4,73" + "4,70" + "4,69" + "4,67" + "4,64" + "4,62" + "4,59" + "4,57" + "4,54" + "4,52" + "4,51" + "4,50" + "10,49" + "14,49" + "17,49" + "18,49" + "19,49" + "22,49" + "23,49" + "24,49" + "28,49" + "30,49" + "31,49" + "33,49" + "35,49" + "36,49" + "39,49" + "41,49" + "42,49" + "43,49" + "44,49" + "45,49" + "46,49" + "47,49" + "48,49" + "49,49" + "50,49" + "51,49" + "52,49" + "53,49" + "54,49" + "55,49" + "56,49" + "57,49" + "61,49" + "63,49" + "64,49" + "66,49" + "67,49" + "68,49" + "70,49" + "71,49" + "72,49" + "73,49" + "74,49" + "75,49" + "77,49" + "78,49" + "79,49" + "80,49" + "81,49" + "84,49" + "85,49" + "86,49" + "87,49" + "88,49" + "90,49" + "92,49" + "93,49" + "94,49" + "95,49" + "96,49" + "97,49" + "100,49" + "102,49" + "103,49" + "105,49" + "106,49" + "106,52" + "106,53" + "106,54" + "106,57" + "106,58" + "106,60" + "106,61" + "106,62" + "106,63" + "106,64" + "106,65" + "106,66" + "106,68" + "106,69" + "106,71" + "106,72" + "106,79" + "106,81" + "106,82" + "106,83" + "106,84" + "106,85" + "106,87" + "106,88" + "106,89" + "106,90" + "106,92" + "106,93" + "106,94" + "106,95" + "106,96" + "106,97" + "106,99" + "106,101" + "106,104" + "106,105" + "106,106" + "106,108" + "106,109" + "106,111" + "106,112" + "106,113" + "100,113" + "100,104" + "100,103" + "100,94" + "100,93" + "100,92" + "100,91" + "100,90" + "100,89" + "100,88" + "100,87" + "100,84" + "100,83" + "100,82" + "100,80" + "100,79" + "100,78" + "102,77" + "103,77" + "105,77" + "106,77" + "107,77" + "108,77" + "109,77" + "110,77" + "111,77" + "112,77" + "117,77" + "118,77" + "122,77" + "124,77" + "125,80" + "125,84" + "125,85" + "125,87" + "125,88" + "125,91" + "125,93" + "111,101" + "110,101" + "109,101" + "105,101" + "100,101" + "99,101" + "97,101" + "96,101" + "95,101" + "94,101" + "93,101" + "91,101" + "88,101" + "87,101" + "90,97" + "94,97" + "100,97" + "101,97" + "101,99" + "101,100" + "101,101" + "101,102" + "101,104" + "101,105" + "101,106" + "101,107" + "101,108" + "101,109" + "101,111" + "101,112" + "101,113" + "101,114" + "101,117" + "99,118" + "96,118" + "95,118" + "94,118" + "91,118" + "87,118" + "86,116" + "88,107" + "90,107" + "94,107" + "97,107" + "100,107" + "101,107" + "102,107" + "106,107" + "107,107" + "109,107" + "115,109" + "115,111" + "115,112" + "115,113" + "115,114" + "115,115" + "115,117" + "115,121" + "115,122" + "115,123" + "115,124" + "112,127" + "110,127" + "109,127" + "104,127" + "103,127" + "102,120" + "102,119" + "102,118" + "102,116" + "102,113" + "102,112" + "102,110" + "102,106" + "102,104" + "102,103" + "105,100" + "106,100" + "107,100" + "108,100" + "109,100" + "111,100" + "113,100" + "114,100" + "116,100" + "117,100" + "117,102" + "117,104" + "117,106" + "117,107" + "117,109" + "117,111" + "117,112" + "117,113" + "117,114" + "117,115" + "117,116" + "117,117" + "117,118" + "117,121" + "117,122" + "117,123" + "117,124" + "117,128" + "116,126" + "116,125" + "116,124" + "116,120" + "118,120" + "120,120" + "121,120" + "125,123" + "125,128" + "125,129" +]; +wrong = [ + "68,32" + "71,32" + "60,49" + "60,31" + "60,29" + "68,26" + "70,26" + "71,26" + "79,26" + "84,39" + "84,56" + "84,66" + "60,71" + "47,71" + "42,49" + "42,31" + "42,25" + "42,11" + "45,11" + "48,11" + "54,11" + "79,11" + "68,23" + "51,23" + "45,23" + "41,23" + "35,23" + "45,15" + "46,18" + "46,19" + "46,20" + "46,22" + "46,24" + "46,30" + "46,35" + "46,37" + "46,47" + "46,57" + "46,60" + "46,66" + "46,69" + "46,72" + "46,82" + "46,83" + "46,89" + "46,90" + "46,91" + "46,98" + "31,103" + "26,103" + "21,103" + "18,96" + "18,95" + "18,94" + "18,89" + "34,63" + "47,63" + "64,63" + "68,63" + "69,63" + "71,63" + "85,63" + "96,63" + "97,63" + "99,71" + "99,77" + "99,90" + "93,110" + "60,110" + "37,96" + "37,89" + "37,75" + "37,62" + "47,62" + "64,62" + "68,62" + "69,62" + "71,62" + "85,62" + "96,62" + "97,62" + "100,62" + "116,65" + "116,66" + "116,68" + "116,70" + "116,71" + "116,72" + "116,85" + "116,87" + "116,89" + "116,93" + "116,94" + "110,96" + "109,96" + "105,96" + "96,96" + "93,96" + "88,93" + "88,87" + "88,83" + "88,80" + "88,79" + "95,79" + "96,79" + "100,79" + "101,79" + "103,79" + "106,79" + "108,79" + "110,79" + "110,83" + "110,84" + "110,85" + "110,87" + "110,88" + "110,89" + "110,92" + "110,93" + "110,94" + "110,97" + "110,104" + "105,105" + "100,105" + "96,105" + "94,105" + "93,105" + "87,105" + "82,98" + "82,94" + "82,92" + "82,90" + "82,87" + "82,83" + "82,80" + "82,79" + "82,78" + "82,75" + "82,70" + "82,69" + "82,61" + "82,45" + "82,44" + "82,42" + "85,42" + "92,42" + "101,56" + "101,67" + "101,71" + "101,72" + "101,82" + "101,83" + "101,85" + "101,87" + "101,88" + "101,89" + "101,90" + "101,91" + "101,93" + "96,93" + "95,93" + "94,93" + "93,93" + "87,93" + "86,93" + "81,93" + "61,93" + "60,93" + "56,93" + "54,93" + "53,93" + "47,93" + "45,93" + "44,93" + "42,93" + "41,89" + "47,85" + "50,85" + "58,85" + "69,85" + "73,85" + "80,85" + "93,88" + "93,89" + "93,90" + "93,94" + "93,95" + "93,97" + "93,106" + "93,111" + "87,112" + "81,112" + "74,112" + "68,112" + "66,112" + "62,112" + "61,112" + "60,112" + "58,95" + "58,94" + "58,92" + "58,90" + "58,84" + "58,82" + "58,80" + "58,79" + "58,78" + "58,76" + "58,75" + "58,70" + "58,69" + "58,61" + "58,59" + "58,49" + "64,47" + "68,47" + "70,47" + "71,47" + "72,47" + "73,47" + "79,47" + "85,47" + "92,47" + "94,47" + "94,56" + "90,64" + "86,64" + "81,64" + "80,64" + "77,64" + "74,64" + "70,64" + "68,64" + "67,64" + "65,64" + "63,64" + "62,64" + "60,64" + "59,64" + "57,64" + "47,64" + "45,64" + "41,64" + "38,64" + "36,64" + "33,62" + "33,61" + "47,53" + "54,53" + "64,53" + "68,53" + "70,53" + "71,53" + "72,53" + "73,53" + "79,53" + "80,53" + "85,53" + "88,53" + "89,56" + "89,65" + "89,67" + "89,69" + "89,71" + "89,72" + "89,77" + "89,82" + "89,83" + "89,88" + "89,89" + "89,90" + "89,91" + "89,94" + "89,95" + "89,97" + "89,106" + "87,108" + "81,108" + "74,108" + "68,108" + "66,108" + "62,108" + "61,108" + "60,108" + "57,108" + "56,108" + "42,108" + "40,108" + "36,108" + "32,108" + "31,108" + "30,96" + "30,95" + "30,89" + "30,85" + "30,84" + "30,82" + "30,78" + "30,76" + "30,75" + "30,62" + "30,61" + "34,60" + "47,60" + "54,60" + "56,65" + "56,66" + "56,69" + "56,70" + "56,72" + "56,77" + "56,82" + "56,83" + "56,89" + "56,90" + "56,91" + "56,92" + "56,94" + "56,98" + "56,102" + "53,104" + "50,95" + "50,94" + "50,92" + "50,90" + "50,89" + "50,84" + "50,82" + "50,81" + "50,80" + "50,79" + "50,78" + "50,76" + "50,75" + "50,70" + "50,69" + "50,61" + "50,59" + "50,52" + "50,49" + "54,39" + "68,39" + "70,39" + "71,39" + "73,39" + "79,39" + "85,39" + "90,39" + "92,39" + "94,39" + "95,39" + "102,39" + "104,47" + "104,58" + "99,59" + "96,59" + "95,59" + "93,59" + "90,59" + "86,59" + "81,59" + "77,59" + "70,59" + "70,52" + "70,49" + "70,46" + "70,45" + "70,44" + "70,42" + "70,41" + "70,38" + "70,36" + "70,31" + "70,29" + "70,25" + "73,25" + "79,25" + "80,25" + "84,25" + "85,25" + "93,25" + "105,25" + "107,25" + "111,34" + "111,36" + "111,38" + "111,39" + "109,45" + "105,45" + "99,45" + "97,45" + "94,45" + "93,45" + "89,45" + "86,45" + "81,45" + "74,45" + "71,45" + "69,45" + "68,45" + "67,42" + "67,41" + "67,38" + "67,36" + "67,31" + "67,29" + "67,25" + "67,24" + "67,20" + "70,19" + "71,19" + "73,19" + "76,19" + "80,19" + "84,19" + "85,19" + "87,19" + "93,19" + "96,24" + "96,35" + "96,43" + "96,46" + "96,47" + "93,51" + "89,51" + "86,51" + "81,51" + "74,51" + "71,51" + "69,51" + "68,51" + "66,51" + "65,51" + "62,51" + "59,51" + "57,51" + "49,51" + "47,51" + "45,51" + "44,51" + "44,49" + "44,42" + "44,38" + "44,31" + "44,25" + "47,22" + "51,22" + "54,22" + "57,22" + "60,22" + "68,22" + "70,22" + "71,22" + "73,22" + "73,24" + "73,30" + "73,35" + "73,43" + "73,46" + "73,52" + "73,54" + "73,56" + "73,60" + "73,65" + "73,66" + "73,67" + "73,69" + "73,70" + "73,72" + "73,73" + "73,74" + "73,77" + "73,79" + "73,82" + "73,83" + "73,88" + "73,89" + "73,90" + "73,91" + "73,92" + "73,94" + "73,95" + "71,96" + "69,96" + "68,96" + "66,96" + "63,96" + "62,96" + "61,96" + "60,96" + "57,96" + "55,96" + "54,96" + "53,96" + "51,96" + "49,96" + "47,96" + "45,96" + "44,96" + "42,96" + "40,96" + "38,96" + "36,96" + "32,96" + "31,96" + "29,96" + "28,96" + "28,89" + "28,85" + "28,84" + "28,82" + "28,78" + "28,76" + "28,75" + "28,62" + "28,61" + "28,59" + "28,49" + "33,44" + "47,44" + "53,44" + "54,44" + "59,44" + "64,44" + "68,44" + "71,44" + "72,44" + "74,44" + "79,44" + "85,44" + "86,46" + "86,52" + "86,54" + "86,56" + "86,60" + "86,65" + "86,66" + "86,67" + "86,69" + "86,71" + "86,72" + "86,77" + "86,79" + "86,82" + "86,83" + "86,88" + "86,89" + "86,90" + "86,91" + "86,92" + "86,94" + "86,95" + "81,98" + "79,98" + "76,98" + "75,98" + "74,98" + "71,98" + "69,98" + "68,98" + "66,98" + "63,98" + "62,98" + "61,98" + "60,98" + "57,98" + "55,98" + "54,98" + "53,98" + "51,98" + "49,98" + "47,98" + "45,98" + "42,98" + "40,98" + "38,98" + "36,98" + "32,98" + "31,98" + "29,98" + "28,98" + "27,98" + "26,98" + "21,98" + "17,98" + "16,96" + "16,95" + "16,94" + "16,89" + "16,85" + "16,84" + "16,82" + "16,78" + "16,75" + "16,62" + "16,59" + "21,53" + "21,60" + "21,65" + "21,67" + "21,70" + "21,77" + "21,89" + "17,90" + "15,90" + "12,90" + "10,90" + "10,85" + "10,84" + "10,81" + "10,80" + "10,78" + "10,67" + "10,62" + "10,59" + "10,54" + "10,50" + "10,45" + "10,44" + "12,35" + "29,35" + "32,35" + "45,35" + "47,35" + "51,35" + "54,35" + "59,35" + "68,35" + "71,35" + "74,35" + "79,35" + "85,35" + "87,35" + "90,35" + "90,43" + "88,43" + "81,43" + "80,43" + "74,43" + "72,43" + "71,43" + "69,43" + "68,43" + "66,43" + "65,43" + "62,43" + "59,43" + "58,43" + "53,38" + "53,37" + "53,36" + "53,34" + "53,31" + "53,25" + "53,21" + "53,20" + "53,18" + "60,14" + "71,14" + "73,14" + "80,14" + "80,20" + "80,24" + "80,30" + "80,37" + "80,46" + "80,52" + "80,54" + "80,56" + "80,60" + "80,65" + "80,66" + "80,67" + "80,69" + "80,72" + "80,73" + "80,74" + "80,77" + "80,79" + "80,82" + "80,83" + "77,83" + "74,83" + "72,83" + "71,83" + "70,83" + "69,83" + "68,83" + "66,83" + "63,83" + "62,83" + "61,83" + "60,83" + "59,83" + "57,83" + "55,83" + "54,83" + "53,83" + "51,83" + "49,83" + "47,83" + "45,83" + "44,83" + "43,83" + "38,83" + "36,83" + "34,83" + "29,83" + "27,83" + "17,83" + "15,83" + "14,81" + "14,80" + "14,78" + "14,75" + "14,67" + "14,62" + "14,59" + "14,54" + "14,50" + "14,45" + "14,44" + "14,34" + "14,25" + "17,18" + "25,18" + "40,20" + "40,24" + "40,30" + "40,37" + "40,38" + "40,46" + "40,47" + "40,54" + "40,56" + "36,56" + "32,56" + "31,56" + "27,56" + "25,56" + "15,56" + "13,56" + "12,56" + "12,54" + "12,50" + "12,45" + "12,44" + "12,34" + "12,29" + "12,28" + "12,25" + "17,24" + "37,24" + "41,24" + "45,24" + "47,24" + "49,30" + "49,33" + "49,34" + "49,37" + "49,38" + "49,45" + "49,46" + "49,47" + "49,49" + "49,52" + "49,54" + "49,55" + "49,56" + "49,57" + "49,65" + "49,66" + "49,68" + "49,69" + "49,70" + "49,72" + "47,72" + "45,72" + "44,72" + "43,72" + "41,72" + "39,72" + "36,72" + "34,72" + "33,72" + "32,72" + "29,72" + "27,72" + "24,72" + "20,72" + "17,72" + "15,72" + "13,72" + "12,72" + "9,72" + "9,67" + "9,62" + "9,59" + "9,57" + "9,54" + "9,51" + "9,50" + "9,45" + "9,44" + "9,42" + "9,41" + "19,38" + "24,38" + "28,38" + "30,45" + "30,47" + "30,49" + "30,50" + "27,50" + "26,50" + "25,50" + "24,50" + "23,50" + "21,50" + "20,50" + "19,50" + "18,50" + "18,46" + "18,45" + "18,44" + "18,42" + "18,41" + "18,37" + "18,36" + "18,34" + "18,33" + "18,32" + "18,31" + "18,30" + "18,29" + "18,28" + "18,27" + "18,25" + "18,23" + "18,22" + "18,20" + "18,19" + "18,17" + "18,14" + "18,13" + "18,12" + "18,11" + "20,6" + "21,6" + "24,6" + "25,6" + "26,6" + "30,6" + "37,6" + "41,6" + "43,6" + "44,6" + "45,6" + "48,6" + "51,6" + "54,6" + "55,6" + "60,6" + "58,13" + "58,10" + "58,9" + "58,5" + "60,5" + "68,5" + "71,5" + "72,5" + "73,5" + "77,5" + "79,5" + "80,5" + "84,5" + "85,5" + "88,5" + "89,5" + "99,5" + "102,16" + "96,16" + "94,16" + "88,16" + "85,16" + "81,16" + "76,13" + "76,12" + "76,10" + "76,4" + "78,4" + "79,4" + "80,4" + "84,4" + "85,4" + "86,4" + "88,4" + "89,4" + "99,4" + "102,4" + "103,4" + "96,18" + "94,18" + "92,14" + "92,12" + "92,10" + "99,9" + "100,9" + "103,9" + "108,17" + "108,19" + "108,26" + "108,32" + "108,34" + "108,36" + "108,38" + "108,39" + "108,44" + "108,46" + "108,47" + "108,49" + "108,52" + "108,53" + "108,54" + "108,57" + "108,58" + "108,60" + "108,61" + "108,63" + "108,64" + "108,65" + "108,66" + "108,68" + "108,69" + "108,71" + "108,72" + "106,80" + "105,80" + "100,80" + "97,80" + "96,80" + "93,80" + "87,80" + "81,80" + "79,80" + "78,80" + "77,80" + "75,80" + "74,80" + "72,80" + "71,80" + "70,80" + "69,80" + "68,80" + "66,80" + "63,80" + "62,80" + "61,80" + "60,80" + "59,80" + "57,80" + "55,80" + "54,80" + "53,80" + "51,80" + "49,80" + "47,80" + "45,80" + "44,80" + "43,80" + "39,80" + "38,80" + "36,80" + "36,78" + "36,76" + "36,75" + "36,69" + "36,68" + "36,66" + "36,65" + "36,62" + "36,61" + "36,59" + "36,58" + "36,57" + "36,55" + "36,52" + "36,49" + "36,46" + "41,46" + "45,46" + "47,46" + "51,48" + "51,49" + "51,50" + "51,52" + "51,54" + "51,55" + "51,56" + "51,57" + "51,58" + "51,59" + "51,65" + "51,66" + "51,68" + "51,69" + "51,70" + "51,72" + "51,73" + "51,74" + "51,75" + "51,77" + "51,78" + "51,79" + "51,81" + "51,82" + "51,84" + "51,87" + "51,89" + "51,90" + "51,91" + "51,92" + "51,94" + "51,97" + "51,99" + "51,102" + "51,105" + "51,106" + "51,109" + "51,111" + "49,115" + "42,115" + "40,115" + "36,115" + "34,115" + "33,115" + "32,115" + "31,115" + "29,115" + "27,115" + "26,115" + "21,115" + "26,106" + "39,106" + "46,106" + "50,106" + "52,106" + "54,106" + "63,109" + "63,111" + "63,113" + "63,116" + "63,123" + "60,124" + "57,124" + "55,124" + "54,124" + "52,124" + "49,124" + "44,124" + "42,124" + "36,124" + "34,124" + "33,124" + "32,124" + "31,124" + "29,124" + "27,124" + "26,124" + "25,124" + "23,122" + "23,113" + "23,105" + "23,104" + "23,96" + "23,95" + "27,94" + "39,94" + "42,94" + "45,94" + "47,94" + "49,94" + "52,94" + "53,94" + "54,94" + "57,94" + "61,94" + "64,94" + "65,94" + "66,94" + "69,94" + "70,94" + "71,94" + "71,97" + "71,99" + "71,102" + "71,104" + "71,105" + "71,106" + "71,109" + "71,111" + "71,113" + "69,113" + "68,113" + "66,113" + "62,113" + "61,113" + "60,113" + "58,113" + "57,113" + "55,113" + "49,113" + "46,113" + "46,111" + "46,105" + "48,105" + "50,105" + "52,105" + "54,105" + "55,109" + "55,111" + "55,114" + "55,116" + "55,117" + "55,118" + "55,120" + "51,121" + "49,121" + "45,121" + "44,121" + "43,121" + "42,121" + "41,121" + "39,121" + "36,121" + "34,121" + "33,121" + "32,121" + "31,121" + "29,121" + "27,121" + "26,121" + "25,121" + "22,121" + "21,121" + "20,121" + "42,118" + "47,118" + "48,118" + "49,118" + "51,118" + "54,118" + "56,118" + "64,118" + "65,118" + "66,118" + "70,118" + "72,118" + "72,120" + "72,121" + "72,122" + "72,125" + "70,126" + "69,126" + "66,126" + "60,126" + "57,126" + "55,126" + "54,126" + "52,126" + "51,126" + "49,126" + "44,126" + "43,126" + "42,126" + "41,126" + "39,126" + "37,126" + "36,126" + "34,126" + "33,126" + "32,126" + "31,126" + "29,126" + "28,126" + "27,126" + "26,126" + "25,126" + "23,126" + "22,126" + "20,126" + "19,126" + "16,126" + "14,126" + "9,126" + "7,126" + "7,122" + "7,119" + "7,116" + "7,112" + "7,105" + "7,104" + "7,102" + "7,99" + "7,98" + "7,96" + "7,93" + "7,89" + "7,86" + "7,85" + "7,84" + "7,81" + "7,78" + "7,72" + "7,67" + "7,62" + "7,59" + "7,57" + "19,57" + "20,57" + "22,57" + "23,57" + "24,57" + "31,57" + "34,57" + "34,59" + "34,62" + "34,65" + "34,68" + "34,70" + "34,71" + "34,73" + "34,75" + "34,77" + "34,78" + "34,79" + "34,84" + "34,85" + "34,87" + "32,87" + "29,87" + "27,87" + "25,87" + "24,87" + "23,87" + "20,87" + "17,87" + "15,87" + "13,87" + "12,87" + "11,87" + "9,87" + "8,87" + "6,87" + "6,85" + "6,84" + "6,82" + "6,81" + "6,78" + "6,72" + "22,71" + "24,71" + "27,71" + "33,71" + "35,71" + "38,73" + "38,75" + "38,77" + "38,78" + "38,79" + "38,81" + "38,84" + "38,85" + "38,87" + "38,88" + "38,89" + "38,90" + "38,91" + "36,91" + "35,91" + "34,91" + "33,91" + "32,91" + "31,91" + "29,91" + "27,91" + "26,91" + "25,91" + "24,91" + "23,91" + "23,89" + "23,86" + "23,85" + "23,84" + "23,82" + "23,81" + "23,80" + "23,79" + "23,78" + "23,76" + "23,75" + "23,70" + "23,67" + "23,66" + "23,64" + "23,62" + "23,59" + "29,62" + "29,65" + "29,67" + "29,68" + "29,69" + "29,70" + "29,73" + "27,73" + "26,73" + "25,73" + "24,73" + "22,73" + "20,73" + "19,73" + "17,73" + "15,73" + "13,73" + "12,73" + "9,73" + "8,73" + "5,73" + "4,73" + "4,70" + "4,69" + "4,67" + "4,64" + "4,62" + "4,59" + "4,57" + "4,54" + "4,52" + "4,51" + "4,50" + "17,49" + "19,49" + "22,49" + "23,49" + "24,49" + "31,49" + "33,49" + "35,49" + "39,49" + "41,49" + "43,49" + "45,49" + "47,49" + "52,49" + "53,49" + "54,49" + "55,49" + "56,49" + "57,49" + "61,49" + "63,49" + "64,49" + "66,49" + "67,49" + "68,49" + "71,49" + "72,49" + "74,49" + "75,49" + "77,49" + "79,49" + "81,49" + "85,49" + "87,49" + "88,49" + "90,49" + "92,49" + "93,49" + "95,49" + "97,49" + "100,49" + "102,49" + "103,49" + "105,49" + "106,49" + "106,52" + "106,53" + "106,54" + "106,57" + "106,58" + "106,60" + "106,61" + "106,63" + "106,64" + "106,65" + "106,66" + "106,68" + "106,69" + "106,71" + "106,72" + "106,81" + "106,82" + "106,83" + "106,84" + "106,85" + "106,87" + "106,88" + "106,89" + "106,90" + "106,92" + "106,93" + "106,94" + "106,95" + "106,97" + "106,99" + "106,101" + "106,104" + "106,106" + "106,108" + "106,109" + "106,111" + "106,112" + "106,113" + "100,113" + "100,104" + "100,103" + "100,94" + "100,92" + "100,91" + "100,90" + "100,89" + "100,88" + "100,87" + "100,84" + "100,83" + "100,82" + "100,78" + "102,77" + "103,77" + "105,77" + "107,77" + "109,77" + "110,77" + "111,77" + "112,77" + "117,77" + "118,77" + "122,77" + "124,77" + "125,80" + "125,84" + "125,85" + "125,87" + "125,88" + "125,91" + "125,93" + "111,101" + "109,101" + "105,101" + "97,101" + "96,101" + "95,101" + "94,101" + "91,101" + "88,101" + "87,101" + "90,97" + "94,97" + "101,97" + "101,99" + "101,100" + "101,102" + "101,104" + "101,106" + "101,107" + "101,108" + "101,109" + "101,111" + "101,112" + "101,114" + "101,117" + "99,118" + "96,118" + "95,118" + "94,118" + "91,118" + "87,118" + "86,116" + "88,107" + "90,107" + "94,107" + "97,107" + "102,107" + "107,107" + "109,107" + "115,109" + "115,111" + "115,112" + "115,113" + "115,114" + "115,115" + "115,117" + "115,121" + "115,122" + "115,123" + "115,124" + "112,127" + "110,127" + "109,127" + "104,127" + "103,127" + "102,120" + "102,119" + "102,118" + "102,116" + "102,112" + "102,110" + "102,106" + "102,104" + "102,103" + "105,100" + "107,100" + "108,100" + "109,100" + "111,100" + "113,100" + "114,100" + "116,100" + "117,100" + "117,102" + "117,104" + "117,106" + "117,107" + "117,109" + "117,111" + "117,112" + "117,113" + "117,114" + "117,115" + "117,116" + "117,117" + "117,118" + "117,121" + "117,122" + "117,123" + "117,124" + "117,128" + "116,126" + "116,125" + "116,124" + "116,120" + "118,120" + "120,120" + "121,120" + "125,123" + "125,128" + "125,129" +]; +}