From 1f017f687a16ef90f7efee12284c19008a11bd8d Mon Sep 17 00:00:00 2001 From: Gerkiz Date: Tue, 14 Jul 2020 21:50:56 +0200 Subject: [PATCH 1/5] refactor and new map --- control.lua | 1 + locale/en/crab_defender.cfg | 45 + locale/en/fish_defender_v2.cfg | 2 +- maps/crab_defender/b.lua | 208 ++ maps/crab_defender/boss_biters.lua | 99 + maps/crab_defender/bouncy_shells.lua | 76 + maps/crab_defender/commands.lua | 148 ++ maps/crab_defender/crab_defender.lua | 2054 +++++++++++++++++ maps/crab_defender/crumbly_walls.lua | 27 + maps/crab_defender/explosive_gun_bullets.lua | 46 + maps/crab_defender/fish_defender_layout.lua | 2054 +++++++++++++++++ maps/crab_defender/flame_boots.lua | 52 + maps/crab_defender/laser_pointer.lua | 37 + maps/crab_defender/main.lua | 1470 ++++++++++++ maps/crab_defender/market.lua | 345 +++ maps/crab_defender/on_entity_damaged.lua | 65 + maps/crab_defender/railgun_enhancer.lua | 157 ++ maps/crab_defender/shotgun_buff.lua | 31 + maps/crab_defender/table.lua | 102 + maps/crab_defender/terrain.lua | 300 +++ maps/crab_defender/trapped_capsules.lua | 61 + maps/crab_defender/ultra_mines.lua | 52 + maps/crab_defender/vehicle_nanobots.lua | 29 + maps/fish_defender_v2/b.lua | 221 ++ maps/fish_defender_v2/cat_defender_layout.lua | 2054 +++++++++++++++++ .../cat_defender_layout_v2.lua | 2054 +++++++++++++++++ .../fish_defender_v2/fish_defender_layout.lua | 2054 +++++++++++++++++ maps/fish_defender_v2/main.lua | 211 +- maps/fish_defender_v2/table.lua | 1 - maps/fish_defender_v2/terrain.lua | 330 +-- maps/mountain_fortress_v3/breached_wall.lua | 4 +- maps/mountain_fortress_v3/functions.lua | 41 +- maps/mountain_fortress_v3/main.lua | 5 + maps/mountain_fortress_v3/table.lua | 26 +- maps/mountain_fortress_v3/terrain.lua | 66 +- modules/map_info.lua | 18 +- 36 files changed, 14054 insertions(+), 492 deletions(-) create mode 100644 locale/en/crab_defender.cfg create mode 100644 maps/crab_defender/b.lua create mode 100644 maps/crab_defender/boss_biters.lua create mode 100644 maps/crab_defender/bouncy_shells.lua create mode 100644 maps/crab_defender/commands.lua create mode 100644 maps/crab_defender/crab_defender.lua create mode 100644 maps/crab_defender/crumbly_walls.lua create mode 100644 maps/crab_defender/explosive_gun_bullets.lua create mode 100644 maps/crab_defender/fish_defender_layout.lua create mode 100644 maps/crab_defender/flame_boots.lua create mode 100644 maps/crab_defender/laser_pointer.lua create mode 100644 maps/crab_defender/main.lua create mode 100644 maps/crab_defender/market.lua create mode 100644 maps/crab_defender/on_entity_damaged.lua create mode 100644 maps/crab_defender/railgun_enhancer.lua create mode 100644 maps/crab_defender/shotgun_buff.lua create mode 100644 maps/crab_defender/table.lua create mode 100644 maps/crab_defender/terrain.lua create mode 100644 maps/crab_defender/trapped_capsules.lua create mode 100644 maps/crab_defender/ultra_mines.lua create mode 100644 maps/crab_defender/vehicle_nanobots.lua create mode 100644 maps/fish_defender_v2/b.lua create mode 100644 maps/fish_defender_v2/cat_defender_layout.lua create mode 100644 maps/fish_defender_v2/cat_defender_layout_v2.lua create mode 100644 maps/fish_defender_v2/fish_defender_layout.lua diff --git a/control.lua b/control.lua index 63665daa..73616aa1 100644 --- a/control.lua +++ b/control.lua @@ -70,6 +70,7 @@ require 'modules.autostash' ---- enable maps here ---- (maps higher up in the list may be more actually playable) --require 'maps.chronosphere.main' +--require 'maps.crab_defender.main' --require 'maps.fish_defender_v2.main' --require 'maps.fish_defender.main' --require 'maps.biter_battles_v2.main' diff --git a/locale/en/crab_defender.cfg b/locale/en/crab_defender.cfg new file mode 100644 index 00000000..8a772d81 --- /dev/null +++ b/locale/en/crab_defender.cfg @@ -0,0 +1,45 @@ +[crab_defender] +map_info_main_caption=-- Crab Defender -- +map_info_sub_caption= ~~ the battle for crab-earth ~~ +map_info_text=The biters are trying to take over the crab world.\nFend them off as long as possible!\nThis however will not be an easy task,\nsince their strength and resistance increases constantly over time.\n\nYour ultimate goal is to evacuate all the fishes that are in the crab-y lakes to crab planet!\nPut them in your rocket's cargo and launch them into space.\nDon't worry, you will still get space science.\n\nThe Market will gladly take any coin you might find.\nAdditional turret slots can be bought at the market.\nSeveral unique upgrades are available too.\nResearching tanks will unlock the artillery technology early.\nAny container bearing dangerous goods, like ammo, grenades or barrels,\ncauses heavy explosions when it breaks.\nMaybe this can be used to our advantage.\n\nBiters will only attack from both sides of the crab claws, be fast with the defenses!\n\nBiters are intelligent,\nthey have placed some sort of anti-inhabitant system so walking on the white-colored tile hurts you. +boss_message=Boss Wave __1__ - - __2__ +50=The Big Anti-crab Gang +100=Crabzilla +150=The Spitter Squad +200=The Wall Nibblers +250=Conveyor Munchers +300=Furnace Freezers +350=Crabby Cabel Chewers +400=Power Pole Thieves +450=Assembler Annihilators +500=Inserter Crunchers +550=Crab Engineer Eaters +600=Belt Unbalancers +650=Turret Devourers +700=Pipe Perforators +750=Desync Bros +800=Ratio Randomizers +850=Wire Chompers +900=The Bus Mixers +950=Roundabout Deadlockers +1000=Happy Tree Friends +1050=Uranium Digesters +1100=Bot Banishers +1150=Chest Crushers +1200=Cargo Wagon Scratchers +1250=Transport Belt Surfers +1300=Pumpjack Pulverizers +1350=Radar Ravagers +1400=Mall Deconstrutors +1450=Lamp Dimmers +1500=Roboport Disablers +1550=Signal Spammers +1600=Brick Tramplers +1650=Drill Destroyers +1700=Gearwheel Grinders +1750=Crab Inhabitant Seekers +1800=Circuit Breakers +1850=Bullet Absorbers +1900=Oil Guzzlers +1950=Belt Rotators +2000=Bluescreen Factor diff --git a/locale/en/fish_defender_v2.cfg b/locale/en/fish_defender_v2.cfg index 4618890b..08f3a5f0 100644 --- a/locale/en/fish_defender_v2.cfg +++ b/locale/en/fish_defender_v2.cfg @@ -1,7 +1,7 @@ [fish_defender_v2] map_info_main_caption=--Fish Defender v2-- map_info_sub_caption= ~~blb blubby blub~~ -map_info_text=The biters have catched the scent of fish in the market.\nFend them off as long as possible!\nThis however will not be an easy task,\nsince their strength and resistance increases constantly over time.\n\nYour ultimate goal is to evacuate all the fish to cat planet!\nPut them in your rocket's cargo and launch them into space.\nDon't worry, you will still get space science.\n\nThe Market will gladly take any coin you might find.\nAdditional turret slots can be bought at the market.\nSeveral unique upgrades are available too.\nResearching tanks will unlock the artillery technology early.\nAny container bearing dangerous goods, like ammo, grenades or barrels,\ncauses heavy explosions when it breaks.\nMaybe this can be used to our advantage. +map_info_text=The biters have catched the scent of fish in the market.\nFend them off as long as possible!\nThis however will not be an easy task,\nsince their strength and resistance increases constantly over time.\n\nYour ultimate goal is to evacuate all the fish to cat planet!\nPut them in your rocket's cargo and launch them into space.\nDon't worry, you will still get space science.\n\nThe Market will gladly take any coin you might find.\nAdditional turret slots can be bought at the market.\nSeveral unique upgrades are available too.\nResearching tanks will unlock the artillery technology early.\nAny container bearing dangerous goods, like ammo, grenades or barrels,\ncauses heavy explosions when it breaks.\nMaybe this can be used to our advantage.\n\nBiters will only attack in the middle until wave is greater than 80. boss_message=Boss Wave __1__ - - __2__ 50=The Big Biter Gang 100=Biterzilla diff --git a/maps/crab_defender/b.lua b/maps/crab_defender/b.lua new file mode 100644 index 00000000..66a0152c --- /dev/null +++ b/maps/crab_defender/b.lua @@ -0,0 +1,208 @@ +local simplex_noise = require 'utils.simplex_noise'.d2 +local map_data = require 'maps.crab_defender.crab_defender' + +local random = math.random +local abs = math.abs +local floor = math.floor +local scale = 1 + +local Public = {} + +local tile_map = { + [1] = false, + [2] = true, + [3] = 'concrete', + [4] = 'deepwater-green', + [5] = 'deepwater', + [6] = 'dirt-1', + [7] = 'dirt-2', + [8] = 'dirt-3', + [9] = 'dirt-4', + [10] = 'dirt-5', + [11] = 'dirt-6', + [12] = 'dirt-7', + [13] = 'dry-dirt', + [14] = 'grass-1', + [15] = 'grass-2', + [16] = 'grass-3', + [17] = 'grass-4', + [18] = 'tutorial-grid', + [19] = 'hazard-concrete-right', + [20] = 'lab-dark-1', + [21] = 'lab-dark-2', + [22] = 'lab-white', + [23] = 'out-of-map', + [24] = 'red-desert-0', + [25] = 'red-desert-1', + [26] = 'red-desert-2', + [27] = 'red-desert-3', + [28] = 'sand-1', + [29] = 'sand-2', + [30] = 'sand-3', + [31] = 'stone-path', + [32] = 'water-green', + [33] = 'water' +} + +local rock_raffle = { + 'sand-rock-big', + 'sand-rock-big', + 'rock-big', + 'rock-big', + 'rock-big', + 'rock-big', + 'rock-big', + 'rock-big', + 'rock-huge' +} + +local function decompress() + local decompressed = {} + local data = map_data.data + local height = map_data.height + local width = map_data.width + + for y = 1, height do + local row = data[y] + local u_row = {} + decompressed[y] = u_row + local x = 1 + for index = 1, #row, 2 do + local pixel = row[index] + local count = row[index + 1] + + for _ = 1, count do + u_row[x] = pixel + x = x + 1 + end + end + end + + return decompressed, width, height +end +local tile_data, width, height = decompress() + +local function get_pos(x, y) + -- the plus one is because lua tables are one based. + local half_width = floor(width / 2) + 1 + local half_height = floor(height / 2) + 1 + x = x / scale + y = y / scale + x = floor(x) + y = floor(y) + local x2 = x + half_width + local y2 = y + half_height + + if y2 > 0 and y2 <= height and x2 > 0 and x2 <= width then + return tile_map[tile_data[y2][x2]] + end +end + +local ores = {'coal', 'iron-ore', 'copper-ore', 'stone'} + +local function plankton_territory(position, seed, ent) + local noise = simplex_noise(position.x * 0.009, position.y * 0.009, seed) + local d = 196 + + if get_pos(position.x, position.y) then + return + end + + local noise_2 = simplex_noise(position.x * 0.0075, position.y * 0.0075, seed + 10000) + if noise_2 > 0.87 then + return 'deepwater-green' + end + if noise_2 > 0.75 then + local i = floor(noise * 6) % 4 + 1 + ent[#ent + 1] = {name = ores[i], position = position, amount = 1 + 2500 * abs(noise_2 * 3)} + return ('grass-' .. i) + end + if noise_2 < -0.76 then + local i = floor(noise * 6) % 4 + 1 + if noise_2 < -0.86 then + ent[#ent + 1] = {name = 'uranium-ore', position = position, amount = 1 + 1000 * abs(noise_2 * 2)} + + return ('grass-' .. i) + end + if random(1, 3) ~= 1 then + ent[#ent + 1] = {name = rock_raffle[random(1, #rock_raffle)], position = position} + end + return ('grass-' .. i) + end + + if noise < 0.12 and noise > -0.12 then + local i = floor(noise * 32) % 4 + 1 + if random(1, 5) == 1 then + ent[#ent + 1] = {name = rock_raffle[random(1, #rock_raffle)], position = position} + end + return ('grass-' .. i) + end + + if random(1, 128) == 1 then + ent[#ent + 1] = {name = 'fish', position = position} + end + + return 'water' +end + +local function get_random_ore(position) + local noise = (position.x * 0.009) + local i = floor(noise * 6) % 4 + 1 + local ore = ores[i] + + return ore +end + +function Public.make_chunk(event) + local map_name = 'crab_defender' + + if string.sub(event.surface.name, 0, #map_name) ~= map_name then + return + end + + local surface = event.surface + + local x1 = event.area.left_top.x + local y1 = event.area.left_top.y + local x2 = event.area.right_bottom.x + local y2 = event.area.right_bottom.y + + local seed = game.surfaces[1].map_gen_settings.seed + + local noise = {} + local tiles = {} + local ent = {} + + for x = x1, x2 do + for y = y1, y2 do + local pos = {x = x, y = y} + local new = get_pos(x, y) + local ore = get_random_ore(pos) + + if new and type(new) == 'string' then + if new == 'lab-dark-2' then + ent[#ent + 1] = {name = ore, position = pos, amount = 2500} + else + tiles[#tiles + 1] = {name = new, position = pos} + end + else + local tile_to_set = plankton_territory(pos, seed, ent) + if tile_to_set then + noise[#noise + 1] = {name = tile_to_set, position = pos} + end + end + end + end + + surface.set_tiles(tiles, true) + surface.set_tiles(noise, true) + for i = 1, #ent do + if ent[i].amount then + surface.create_entity({name = ent[i].name, position = ent[i].position, amount = ent[i].amount}) + else + surface.create_entity({name = ent[i].name, position = ent[i].position}) + end + end +end + +return Public diff --git a/maps/crab_defender/boss_biters.lua b/maps/crab_defender/boss_biters.lua new file mode 100644 index 00000000..7093327f --- /dev/null +++ b/maps/crab_defender/boss_biters.lua @@ -0,0 +1,99 @@ +local FDT = require 'maps.crab_defender.table' + +local boss_biter = {} +local math_random = math.random +local radius = 6 +local targets = {} +local acid_splashes = { + ['big-biter'] = 'acid-stream-worm-medium', + ['behemoth-biter'] = 'acid-stream-worm-big', + ['big-spitter'] = 'acid-stream-worm-medium', + ['behemoth-spitter'] = 'acid-stream-worm-big' +} +local acid_lines = { + ['big-spitter'] = 'acid-stream-spitter-medium', + ['behemoth-spitter'] = 'acid-stream-spitter-big' +} +for x = radius * -1, radius, 1 do + for y = radius * -1, radius, 1 do + if math.sqrt(x ^ 2 + y ^ 2) <= radius then + targets[#targets + 1] = {x = x, y = y} + end + end +end + +local function acid_nova(event) + for _ = 1, math.random(16, 32) do + local i = math.random(1, #targets) + event.entity.surface.create_entity( + { + name = acid_splashes[event.entity.name], + position = event.entity.position, + force = event.entity.force.name, + source = event.entity.position, + target = {x = event.entity.position.x + targets[i].x, y = event.entity.position.y + targets[i].y}, + max_range = radius, + speed = 0.001 + } + ) + end +end + +boss_biter.died = function(event) + local this = FDT.get() + if acid_splashes[event.entity.name] then + acid_nova(event) + end + if this.acid_lines_delay[event.entity.unit_number] then + this.acid_lines_delay[event.entity.unit_number] = nil + end + this.boss_biters[event.entity.unit_number] = nil +end + +local function acid_line(surface, name, source, target) + local distance = math.sqrt((source.x - target.x) ^ 2 + (source.y - target.y) ^ 2) + + if distance > 16 then + return false + end + + local modifier = {(target.x - source.x) / distance, (target.y - source.y) / distance} + + local position = {source.x, source.y} + + for i = 1, distance + 4, 1 do + if math_random(1, 3) == 1 then + surface.create_entity( + { + name = name, + position = source, + force = 'enemy', + source = source, + target = position, + max_range = 25, + speed = 1 + } + ) + end + position = {position[1] + modifier[1], position[2] + modifier[2]} + end + + return true +end + +boss_biter.damaged_entity = function(event) + if acid_lines[event.cause.name] then + local this = FDT.get() + if not this.acid_lines_delay[event.cause.unit_number] then + this.acid_lines_delay[event.cause.unit_number] = 0 + end + + if this.acid_lines_delay[event.cause.unit_number] < game.tick then + if acid_line(event.cause.surface, acid_lines[event.cause.name], event.cause.position, event.entity.position) then + this.acid_lines_delay[event.cause.unit_number] = game.tick + 180 + end + end + end +end + +return boss_biter diff --git a/maps/crab_defender/bouncy_shells.lua b/maps/crab_defender/bouncy_shells.lua new file mode 100644 index 00000000..76eb4d54 --- /dev/null +++ b/maps/crab_defender/bouncy_shells.lua @@ -0,0 +1,76 @@ +local radius = 9 +local math_random = math.random + +local ammo_to_projectile_translation = { + ['shotgun-shell'] = 'shotgun-pellet', + ['piercing-shotgun-shell'] = 'piercing-shotgun-pellet' +} + +local function create_projectile(surface, position, target, name) + surface.create_entity( + { + name = name, + position = position, + force = 'player', + source = position, + target = target, + max_range = 16, + speed = 0.3 + } + ) +end + +local function bounce(surface, position, ammo) + if math_random(1, 3) ~= 1 then + return + end + local valid_entities = {} + for _, e in pairs( + surface.find_entities_filtered( + {area = {{position.x - radius, position.y - radius}, {position.x + radius, position.y + radius}}} + ) + ) do + if e.health then + if e.force.name ~= 'player' then + --local distance_from_center = math_sqrt((e.position.x - position.x) ^ 2 + (e.position.y - position.y) ^ 2) + --if distance_from_center <= radius then + valid_entities[#valid_entities + 1] = e + --end + end + end + end + + if not valid_entities[1] then + return + end + + for _ = 1, math_random(3, 6), 1 do + create_projectile(surface, position, valid_entities[math_random(1, #valid_entities)].position, ammo) + end +end + +local function bouncy_shells(event) + if event.damage_type.name ~= 'physical' then + return false + end + local player = event.cause + if player.shooting_state.state == defines.shooting.not_shooting then + return false + end + local selected_weapon = player.get_inventory(defines.inventory.character_guns)[player.selected_gun_index] + if selected_weapon.name ~= 'combat-shotgun' and selected_weapon.name ~= 'shotgun' then + return false + end + + local selected_ammo = player.get_inventory(defines.inventory.character_ammo)[player.selected_gun_index] + if not selected_ammo then + return + end + if not ammo_to_projectile_translation[selected_ammo.name] then + return + end + + bounce(player.surface, event.entity.position, ammo_to_projectile_translation[selected_ammo.name]) +end + +return bouncy_shells diff --git a/maps/crab_defender/commands.lua b/maps/crab_defender/commands.lua new file mode 100644 index 00000000..50eb28da --- /dev/null +++ b/maps/crab_defender/commands.lua @@ -0,0 +1,148 @@ +local Server = require 'utils.server' +local FDT = require 'maps.crab_defender.table' +local Task = require 'utils.task' + +local mapkeeper = '[color=blue]Mapkeeper:[/color]' + +commands.add_command( + 'scenario', + 'Usable only for admins - controls the scenario!', + function(cmd) + local p + local player = game.player + + if not player or not player.valid then + p = log + else + p = player.print + if not player.admin then + return + end + end + + local param = cmd.parameter + + if param == 'restart' or param == 'shutdown' or param == 'reset' or param == 'restartnow' then + goto continue + else + p('[ERROR] Arguments are:\nrestart\nshutdown\nreset\nrestartnow') + return + end + + ::continue:: + + local this = FDT.get() + local reset_map = require 'maps.crab_defender.main'.reset_game + + if not this.reset_are_you_sure then + this.reset_are_you_sure = true + p( + '[WARNING] This command will disable the soft-reset feature, run this command again if you really want to do this!' + ) + return + end + + if param == 'restart' then + if this.restart then + this.reset_are_you_sure = nil + this.restart = false + this.soft_reset = true + p('[SUCCESS] Soft-reset is enabled.') + return + else + this.reset_are_you_sure = nil + this.restart = true + this.soft_reset = false + if this.shutdown then + this.shutdown = false + end + p('[WARNING] Soft-reset is disabled! Server will restart from scenario.') + return + end + elseif param == 'restartnow' then + this.reset_are_you_sure = nil + p(player.name .. ' has restarted the game.') + Server.start_scenario('Crab_Defender') + return + elseif param == 'shutdown' then + if this.shutdown then + this.reset_are_you_sure = nil + this.shutdown = false + this.soft_reset = true + p('[SUCCESS] Soft-reset is enabled.') + return + else + this.reset_are_you_sure = nil + this.shutdown = true + this.soft_reset = false + if this.restart then + this.restart = false + end + p('[WARNING] Soft-reset is disabled! Server will shutdown.') + return + end + elseif param == 'reset' then + this.reset_are_you_sure = nil + if player and player.valid then + game.print(mapkeeper .. ' ' .. player.name .. ', has reset the game!', {r = 0.98, g = 0.66, b = 0.22}) + else + game.print(mapkeeper .. ' server, has reset the game!', {r = 0.98, g = 0.66, b = 0.22}) + end + reset_map() + p('[WARNING] Game has been reset!') + return + end + end +) + +commands.add_command( + 'set_queue_speed', + 'Usable only for admins - sets the queue speed of this map!', + function(cmd) + local p + local player = game.player + local param = tonumber(cmd.parameter) + + if player then + if player ~= nil then + p = player.print + if not player.admin then + p("[ERROR] You're not admin!", Color.fail) + return + end + if not param then + return + end + p('Queue speed set to: ' .. param) + Task.set_queue_speed(param) + else + p = log + p('Queue speed set to: ' .. param) + Task.set_queue_speed(param) + end + end + end +) + +commands.add_command( + 'get_queue_speed', + 'Usable only for admins - gets the queue speed of this map!', + function() + local p + local player = game.player + + if player then + if player ~= nil then + p = player.print + if not player.admin then + p("[ERROR] You're not admin!", Color.fail) + return + end + p(Task.get_queue_speed()) + else + p = log + p(Task.get_queue_speed()) + end + end + end +) diff --git a/maps/crab_defender/crab_defender.lua b/maps/crab_defender/crab_defender.lua new file mode 100644 index 00000000..e439180c --- /dev/null +++ b/maps/crab_defender/crab_defender.lua @@ -0,0 +1,2054 @@ +return { +height = 2048, +width = 4096, +data = { + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,1775,18,77,1,527,18,76,1,1641,}, + {1,1775,18,77,1,527,18,76,1,1641,}, + {1,1760,18,103,1,503,18,103,1,1627,}, + {1,1760,18,103,1,503,18,103,1,1627,}, + {1,1752,18,117,1,492,18,118,1,1617,}, + {1,1747,18,127,1,483,18,125,1,1614,}, + {1,1747,18,127,1,483,18,125,1,1614,}, + {1,1744,18,131,1,480,18,130,1,1611,}, + {1,1742,18,135,1,477,18,134,1,1608,}, + {1,1742,18,135,1,477,18,134,1,1608,}, + {1,1739,18,139,1,473,18,139,1,1606,}, + {1,1733,18,152,1,459,18,153,1,1599,}, + {1,1733,18,152,1,459,18,153,1,1599,}, + {1,1722,18,167,1,451,18,167,1,1589,}, + {1,1722,18,167,1,451,18,167,1,1589,}, + {1,1716,18,180,1,439,18,180,1,1581,}, + {1,1711,18,188,1,431,18,189,1,1577,}, + {1,1711,18,188,1,431,18,189,1,1577,}, + {1,1708,18,192,1,429,18,192,1,1575,}, + {1,1706,18,196,1,427,18,193,1,1574,}, + {1,1706,18,196,1,427,18,193,1,1574,}, + {1,1705,18,198,1,424,18,199,1,1570,}, + {1,1702,18,203,1,420,18,202,1,1569,}, + {1,1702,18,203,1,420,18,202,1,1569,}, + {1,1695,18,215,1,411,18,212,1,1563,}, + {1,1691,18,222,1,405,18,222,1,1556,}, + {1,1691,18,222,1,405,18,222,1,1556,}, + {1,1685,18,229,1,402,18,230,1,1550,}, + {1,1685,18,229,1,402,18,230,1,1550,}, + {1,1681,18,235,1,399,18,232,1,1549,}, + {1,1680,18,237,1,396,18,236,1,1547,}, + {1,1680,18,237,1,396,18,236,1,1547,}, + {1,1680,18,239,1,392,18,240,1,1545,}, + {1,1677,18,244,1,389,18,244,1,1542,}, + {1,1677,18,244,1,389,18,244,1,1542,}, + {1,1672,18,252,1,383,18,251,1,1538,}, + {1,1669,18,256,1,379,18,256,1,1536,}, + {1,1669,18,256,1,379,18,258,1,1534,}, + {1,1667,18,260,1,377,18,259,1,1533,}, + {1,1667,18,260,1,377,18,259,1,1533,}, + {1,1666,18,262,1,374,18,263,1,1531,}, + {1,1664,18,264,1,372,18,267,1,1529,}, + {1,1658,18,270,1,372,18,269,1,1527,}, + {1,1656,18,274,1,370,18,271,1,1525,}, + {1,1650,18,178,1,79,18,25,1,367,18,25,1,78,18,175,1,1519,}, + {1,1644,18,184,1,79,18,25,1,367,18,25,1,78,18,179,1,1515,}, + {1,1633,18,3,1,4,18,176,1,100,18,19,1,359,18,21,1,100,18,172,1,7,18,2,1,1500,}, + {1,1628,18,185,1,106,18,19,1,355,18,18,1,107,18,171,1,2,18,11,1,1494,}, + {1,1628,18,185,1,106,18,19,1,355,18,18,1,107,18,184,1,1494,}, + {1,1620,18,191,1,111,18,16,1,353,18,17,1,111,18,191,1,1486,}, + {1,1611,18,199,1,115,18,14,1,352,18,14,1,116,18,197,1,1478,}, + {1,1611,18,199,1,115,18,14,1,352,18,14,1,116,18,197,1,1478,}, + {1,1609,18,199,1,119,18,12,1,352,18,13,1,118,18,199,1,1475,}, + {1,1609,18,199,1,119,18,12,1,352,18,13,1,118,18,199,1,1475,}, + {1,1608,18,197,1,123,18,11,1,352,18,11,1,122,18,199,1,1473,}, + {1,1606,18,191,1,136,18,3,1,357,18,4,1,136,18,191,1,1472,}, + {1,1606,18,191,1,136,18,3,1,357,18,4,1,136,18,191,1,1472,}, + {1,1605,18,183,1,655,18,183,1,1470,}, + {1,1602,18,181,1,664,18,182,1,1467,}, + {1,1602,18,181,1,664,18,182,1,1467,}, + {1,1597,18,184,1,668,18,184,1,1463,}, + {1,1589,18,191,1,671,18,189,1,1456,}, + {1,1589,18,191,1,671,18,189,1,1456,}, + {1,1586,18,192,1,674,18,192,1,1452,}, + {1,1586,18,192,1,674,18,192,1,1452,}, + {1,1584,18,193,1,677,18,192,1,1450,}, + {1,1583,18,191,1,683,18,191,1,1448,}, + {1,1583,18,191,1,683,18,191,1,1448,}, + {1,1581,18,188,1,693,18,186,1,1448,}, + {1,1580,18,184,1,702,18,183,1,1447,}, + {1,1580,18,184,1,702,18,183,1,1447,}, + {1,1577,18,184,1,708,18,185,1,1442,}, + {1,1574,18,186,1,711,18,186,1,1439,}, + {1,1574,18,186,1,711,18,186,1,1439,}, + {1,1570,18,188,1,713,18,189,1,1436,}, + {1,1567,18,191,1,714,18,191,1,1433,}, + {1,1567,18,191,1,714,18,191,1,1433,}, + {1,1564,18,192,1,718,18,191,1,1431,}, + {1,1564,18,192,1,718,18,191,1,1431,}, + {1,1563,18,189,1,727,18,187,1,1430,}, + {1,1563,18,184,1,736,18,185,1,1428,}, + {1,1563,18,184,1,736,18,185,1,1428,}, + {1,1561,18,184,1,740,18,184,1,1427,}, + {1,1558,18,186,1,743,18,186,1,1423,}, + {1,1558,18,186,1,743,18,186,1,1423,}, + {1,1552,18,190,1,746,18,191,1,1417,}, + {1,1549,18,192,1,749,18,190,1,1416,}, + {1,1549,18,192,1,749,18,190,1,1416,}, + {1,1549,18,190,1,208,18,2,1,329,23,6,1,207,18,191,1,1414,}, + {1,1549,18,190,1,208,18,2,23,2,1,327,23,6,1,207,18,191,1,1414,}, + {1,1547,18,191,1,208,18,4,23,1,1,327,23,2,18,5,1,208,18,191,1,1412,}, + {1,1547,18,188,1,209,18,6,23,1,1,327,23,2,18,5,1,211,18,188,1,1412,}, + {1,1547,18,188,1,209,18,6,23,1,1,327,23,2,18,5,1,211,18,188,1,1412,}, + {1,1545,18,188,1,211,18,6,23,1,1,327,23,2,18,6,1,211,18,188,1,1411,}, + {1,1542,18,188,1,211,18,9,23,1,1,327,23,2,18,8,1,213,18,187,1,1408,}, + {1,1542,18,188,1,211,18,9,23,1,1,327,23,2,18,8,1,213,18,187,1,1408,}, + {1,1538,18,190,1,210,18,12,23,1,1,327,23,2,18,13,1,209,18,189,1,1405,}, + {1,1536,18,191,1,206,18,17,23,1,1,327,23,2,18,16,1,208,18,189,1,1403,}, + {1,1536,18,191,1,206,18,17,23,1,1,327,23,3,18,15,1,208,18,189,1,1403,}, + {1,1534,18,191,1,207,18,18,23,1,1,327,23,3,18,18,1,206,18,189,1,1402,}, + {1,1534,18,191,1,207,18,18,23,1,1,328,23,2,18,18,1,206,18,189,1,1402,}, + {1,1534,18,190,1,206,18,20,23,1,1,328,23,2,18,18,1,206,18,191,1,1400,}, + {1,1533,18,191,1,206,18,20,23,1,1,328,23,2,18,19,1,207,18,191,1,1398,}, + {1,1533,18,191,1,206,18,20,23,1,1,328,23,2,18,19,1,207,18,191,1,1398,}, + {1,1531,18,191,1,206,18,21,23,2,1,328,23,3,18,20,1,206,18,190,1,1398,}, + {1,1530,18,189,1,208,18,22,23,1,1,329,23,3,18,22,1,206,18,189,1,1397,}, + {1,1530,18,189,1,208,18,22,23,1,1,329,23,3,18,22,1,206,18,189,1,1397,}, + {1,1527,18,190,1,207,18,23,23,3,1,329,23,4,18,24,1,206,18,189,1,1394,}, + {1,1525,18,189,1,207,18,26,23,2,1,331,23,4,18,26,1,205,18,190,1,1391,}, + {1,1525,18,189,1,207,18,26,23,1,1,333,23,4,18,25,1,205,18,190,1,1391,}, + {1,1523,18,191,1,202,18,28,23,4,1,334,23,4,18,27,1,203,18,189,1,1391,}, + {1,1522,18,191,1,200,18,28,23,4,1,338,23,4,18,31,1,200,18,189,1,1389,}, + {1,1522,18,191,1,200,18,28,23,2,1,341,23,4,18,30,1,200,18,189,1,1389,}, + {1,1522,18,189,1,199,18,31,23,2,1,342,23,4,18,30,1,199,18,191,1,1387,}, + {1,1522,18,189,1,199,18,31,23,2,1,343,23,4,18,29,1,199,18,191,1,1387,}, + {1,1520,18,191,1,199,18,31,23,2,1,344,23,3,18,31,1,198,18,191,1,1386,}, + {1,1519,18,191,1,198,18,33,23,2,1,345,23,3,18,30,1,200,18,189,1,1386,}, + {1,1519,18,191,1,198,18,33,23,1,1,346,23,3,18,30,1,200,18,189,1,1386,}, + {1,1517,18,191,1,199,18,32,23,3,1,347,23,2,18,33,1,198,18,191,1,1383,}, + {1,1514,18,192,1,196,18,37,23,2,1,348,23,2,18,38,1,195,18,192,1,1380,}, + {1,1514,18,192,1,196,18,37,23,1,1,349,23,2,18,38,1,195,18,192,1,1380,}, + {1,1513,18,190,1,194,18,42,23,1,1,349,23,3,18,41,1,193,18,192,1,1378,}, + {1,1511,18,192,1,191,18,45,23,1,1,349,23,3,18,44,1,191,18,191,1,1378,}, + {1,1511,18,192,1,191,18,45,23,1,1,350,23,2,18,44,1,191,18,191,1,1378,}, + {1,1511,18,191,1,189,18,47,23,2,1,350,23,3,18,47,1,189,18,190,1,1377,}, + {1,1511,18,191,1,189,18,47,23,1,1,351,23,3,18,47,1,189,18,190,1,1377,}, + {1,1509,18,191,1,189,18,49,23,1,1,352,23,3,18,47,1,189,18,191,1,1375,}, + {1,1508,18,191,1,189,18,50,23,1,1,352,23,3,18,47,1,189,18,193,1,1373,}, + {1,1508,18,191,1,189,18,49,23,2,1,353,23,3,18,46,1,189,18,193,1,1373,}, + {1,1506,18,193,1,187,18,49,23,3,1,354,23,4,18,47,1,189,18,192,1,1372,}, + {1,1503,18,194,1,188,18,50,23,1,1,357,23,4,18,49,1,186,18,195,1,1369,}, + {1,1503,18,194,1,188,18,49,23,2,1,358,23,4,18,48,1,186,18,195,1,1369,}, + {1,1502,18,195,1,178,18,58,23,2,1,360,23,4,18,55,1,179,18,196,1,1367,}, + {1,1500,18,197,1,175,18,60,23,2,1,362,23,3,18,59,1,175,18,196,1,1367,}, + {1,1500,18,197,1,175,18,60,23,1,1,364,23,3,18,58,1,175,18,196,1,1367,}, + {1,1498,18,197,1,174,18,61,23,3,1,365,23,3,18,60,1,174,18,195,1,1366,}, + {1,1498,18,194,1,175,18,61,23,4,1,367,23,3,18,61,1,172,18,197,1,1364,}, + {1,1498,18,194,1,175,18,61,23,3,1,368,23,4,18,60,1,173,18,196,1,1364,}, + {1,1497,18,193,1,176,18,62,23,2,1,370,23,3,18,62,1,171,18,196,1,1364,}, + {1,1497,18,191,1,178,18,61,23,3,1,370,23,3,18,62,1,171,18,196,1,1364,}, + {1,1497,18,191,1,176,18,63,23,2,1,371,23,4,18,62,1,170,18,198,1,1362,}, + {1,1495,18,193,1,173,18,66,23,1,1,374,23,2,18,64,1,169,18,198,1,1361,}, + {1,1495,18,193,1,173,18,65,23,2,1,374,23,2,18,64,1,169,18,198,1,1361,}, + {1,1492,18,195,1,171,18,67,23,3,1,374,23,3,18,67,1,166,18,200,1,1358,}, + {1,1491,18,196,1,162,18,76,23,2,1,375,23,4,18,76,1,156,18,202,1,1356,}, + {1,1491,18,195,1,163,18,76,23,2,1,376,23,3,18,76,1,157,18,201,1,1356,}, + {1,1489,18,197,1,158,18,81,23,2,1,377,23,2,18,79,1,154,18,202,1,1355,}, + {1,1488,18,197,1,156,18,83,23,2,1,378,23,2,18,84,1,150,18,201,1,1355,}, + {1,1488,18,197,1,156,18,83,23,1,1,379,23,2,18,84,1,150,18,201,1,1355,}, + {1,1488,18,196,1,154,18,84,23,3,1,379,23,3,18,84,1,149,18,203,1,1353,}, + {1,1488,18,196,1,154,18,84,23,2,1,381,23,3,18,83,1,149,18,203,1,1353,}, + {1,1488,18,196,1,154,18,81,23,4,1,383,23,3,18,84,1,148,18,202,1,1353,}, + {1,1486,18,198,1,152,18,81,23,3,1,386,23,4,18,84,1,147,18,202,1,1353,}, + {1,1486,18,198,1,152,18,81,23,2,1,388,23,4,18,83,1,148,18,201,1,1353,}, + {1,1486,18,198,1,149,18,83,23,2,1,390,23,4,18,84,1,145,18,203,1,1352,}, + {1,1484,18,200,1,144,18,88,23,2,1,390,23,5,18,88,1,140,18,205,1,1350,}, + {1,1484,18,201,1,143,18,88,23,2,1,392,23,4,18,87,1,140,18,205,1,1350,}, + {1,1480,18,205,1,129,18,100,23,3,1,395,23,3,18,100,1,126,18,208,1,1347,}, + {1,1478,18,207,1,126,18,103,23,2,1,397,23,3,18,103,1,122,18,211,1,1344,}, + {1,1478,18,207,1,126,18,103,23,2,1,397,23,3,18,103,1,122,18,211,1,1344,}, + {1,1478,18,207,1,123,18,106,23,1,1,399,23,3,18,105,1,119,18,211,1,1344,}, + {1,1477,18,208,1,121,18,107,23,2,1,400,23,3,18,106,1,117,18,211,1,1344,}, + {1,1477,18,208,1,121,18,106,23,2,1,401,23,4,18,105,1,117,18,211,1,1344,}, + {1,1477,18,208,1,120,18,106,23,2,1,403,23,5,18,105,1,114,18,214,1,1342,}, + {1,1477,18,208,1,120,18,106,23,1,1,406,23,3,18,105,1,114,18,214,1,1342,}, + {1,1477,18,208,1,117,18,108,23,2,1,407,23,3,18,105,1,112,18,215,1,1342,}, + {1,1475,18,211,1,111,18,110,23,4,1,410,23,2,18,109,1,106,18,216,1,1342,}, + {1,1475,18,211,1,111,18,110,23,1,1,413,23,3,18,108,1,105,18,217,1,1342,}, + {1,1475,18,217,1,88,18,125,23,3,1,414,23,2,18,125,1,88,18,218,1,1341,}, + {1,1473,18,227,1,71,18,134,23,1,1,417,23,2,18,135,1,70,18,225,1,1341,}, + {1,1473,18,227,1,71,18,134,23,1,1,417,23,3,18,134,1,70,18,225,1,1341,}, + {1,1472,18,233,1,58,18,140,23,3,1,418,23,3,18,141,1,56,18,233,1,1339,}, + {1,1470,18,240,1,48,18,145,23,1,1,422,23,3,18,142,1,50,18,239,1,1336,}, + {1,1470,18,240,1,48,18,145,23,1,1,423,23,3,18,141,1,50,18,239,1,1336,}, + {1,1469,18,244,1,42,18,147,23,2,1,423,23,4,18,145,1,42,18,244,1,1334,}, + {1,1469,18,244,1,42,18,146,23,2,1,425,23,4,18,144,1,42,18,244,1,1334,}, + {1,1467,18,249,1,36,18,148,23,2,1,427,23,4,18,146,1,36,18,248,1,1333,}, + {1,1466,18,253,1,25,18,153,23,4,1,429,23,4,18,153,1,25,18,251,1,1333,}, + {1,1466,18,253,1,25,18,152,23,3,1,433,23,3,18,152,1,25,18,251,1,1333,}, + {1,1320,2,5,1,141,18,430,23,1,1,436,23,3,18,429,1,139,2,6,1,1186,}, + {1,1316,2,11,1,137,18,430,23,3,1,437,23,3,18,428,1,137,2,11,1,1183,}, + {1,1316,2,11,1,137,18,430,23,1,1,440,23,2,18,428,1,137,2,11,1,1183,}, + {1,1311,2,17,1,136,18,428,23,3,1,440,23,3,18,428,1,136,2,16,1,1178,}, + {1,1309,2,19,1,136,18,428,23,1,1,443,23,3,18,427,1,136,2,19,1,1175,}, + {1,1309,2,19,1,136,18,427,23,2,1,444,23,3,18,426,1,136,2,19,1,1175,}, + {1,1308,2,20,1,135,18,427,23,2,1,446,23,2,18,428,1,133,2,22,1,1173,}, + {1,1306,2,22,1,135,18,426,23,2,1,447,23,3,18,427,1,134,2,21,1,1173,}, + {1,1306,2,22,1,135,18,426,23,1,1,449,23,3,18,426,1,134,2,21,1,1173,}, + {1,1305,2,23,1,133,18,427,23,2,1,449,23,4,18,425,1,134,2,22,1,1172,}, + {1,1305,2,23,1,133,18,426,23,2,1,451,23,5,18,423,1,134,2,22,1,1172,}, + {1,1303,2,25,1,133,18,424,23,3,1,453,23,5,18,423,1,133,2,25,1,1169,}, + {1,1298,2,29,1,131,18,425,23,3,1,457,23,4,18,426,1,129,2,29,1,1165,}, + {1,1298,2,29,1,131,18,425,23,1,1,460,23,4,18,425,1,129,2,29,1,1165,}, + {1,1295,2,32,1,128,18,427,23,2,1,461,23,3,18,426,1,128,2,32,1,1162,}, + {1,1292,2,35,1,128,18,427,23,1,1,463,23,4,18,426,1,128,2,33,1,1159,}, + {1,1292,2,35,1,128,18,426,23,2,1,463,23,4,18,426,1,128,2,33,1,1159,}, + {1,1289,2,38,1,126,18,427,23,2,1,465,23,4,18,425,1,128,2,36,1,1156,}, + {1,1287,2,40,1,126,18,425,23,3,1,466,23,4,18,426,1,127,2,39,1,1153,}, + {1,1287,2,40,1,126,18,424,23,2,1,469,23,4,18,425,1,127,2,39,1,1153,}, + {1,1286,2,39,1,128,18,424,23,1,1,471,23,4,18,424,1,127,2,39,1,1153,}, + {1,1286,2,39,1,128,18,424,23,1,1,472,23,4,18,423,1,127,2,39,1,1153,}, + {1,1286,2,39,1,128,18,422,23,3,1,473,23,4,18,422,1,129,2,39,1,1151,}, + {1,1284,2,41,1,127,18,420,23,6,1,474,23,4,18,421,1,129,2,40,1,1150,}, + {1,1284,2,41,1,127,18,420,23,1,1,480,23,4,18,420,1,129,2,40,1,1150,}, + {1,1280,2,45,1,127,18,419,23,2,1,481,23,4,18,421,1,127,2,43,1,1147,}, + {1,1275,2,48,1,129,18,417,23,3,1,484,23,3,18,420,1,127,2,48,1,1142,}, + {1,1275,2,48,1,129,18,417,23,1,1,487,23,3,18,419,1,127,2,48,1,1142,}, + {1,1273,2,50,1,127,18,417,23,3,1,488,23,3,18,418,1,128,2,50,1,1139,}, + {1,1272,2,50,1,128,18,417,23,1,1,492,23,2,18,418,1,129,2,48,1,1139,}, + {1,1272,2,50,1,128,18,417,23,1,1,492,23,3,18,417,1,129,2,48,1,1139,}, + {1,1272,2,48,1,128,18,418,23,2,1,493,23,3,18,416,1,130,2,49,1,1137,}, + {1,1272,2,48,1,128,18,418,23,1,1,495,23,4,18,414,1,130,2,49,1,1137,}, + {1,1272,2,47,1,129,18,415,23,4,1,496,23,4,18,415,1,130,2,47,1,1137,}, + {1,1270,2,49,1,126,18,415,23,5,1,500,23,3,18,417,1,127,2,48,1,1136,}, + {1,1270,2,49,1,126,18,415,23,1,1,505,23,4,18,415,1,127,2,48,1,1136,}, + {1,1267,2,50,1,127,18,414,23,3,1,507,23,3,18,416,1,125,2,51,1,1133,}, + {1,1264,2,53,1,125,18,414,23,3,1,510,23,3,18,416,1,125,2,53,1,1130,}, + {1,1264,2,53,1,125,18,414,23,2,1,512,23,3,18,415,1,125,2,53,1,1130,}, + {1,1262,2,55,1,125,18,413,23,2,1,515,23,2,18,414,1,125,2,55,1,1128,}, + {1,1261,2,56,1,124,18,414,23,1,1,517,23,2,18,413,1,125,2,57,1,1126,}, + {1,1261,2,56,1,124,18,414,23,1,1,518,23,2,18,412,1,125,2,57,1,1126,}, + {1,1259,2,57,1,125,18,412,23,3,1,518,23,3,18,413,1,123,2,57,1,1126,}, + {1,1259,2,57,1,125,18,411,23,2,1,522,23,2,18,412,1,125,2,56,1,1125,}, + {1,1259,2,57,1,125,18,411,23,1,1,523,23,2,18,412,1,125,2,56,1,1125,}, + {1,1259,2,57,1,125,18,406,23,6,1,523,23,3,18,411,1,125,2,56,1,1125,}, + {1,1259,2,57,1,125,18,406,23,1,1,529,23,4,18,409,1,125,2,56,1,1125,}, + {1,1258,2,58,1,125,18,401,23,6,1,531,23,4,18,407,1,125,2,58,1,1123,}, + {1,1255,2,61,1,123,18,403,23,1,1,538,23,3,18,406,1,125,2,59,1,1122,}, + {1,1255,2,61,1,123,18,403,23,1,1,539,23,3,18,405,1,125,2,59,1,1122,}, + {1,1251,2,63,1,125,18,403,23,1,1,541,23,3,18,404,1,124,2,64,1,1117,}, + {1,1250,2,64,1,125,18,402,23,2,1,542,23,3,18,403,1,124,2,66,1,1115,}, + {1,1250,2,64,1,125,18,402,23,2,1,543,23,3,18,402,1,124,2,66,1,1115,}, + {1,1250,2,64,1,124,18,403,23,1,1,545,23,4,18,400,1,125,2,65,1,1115,}, + {1,1248,2,66,1,124,18,400,23,4,1,546,23,4,18,401,1,123,2,65,1,1115,}, + {1,1248,2,66,1,124,18,400,23,1,1,189,21,9,1,353,23,3,18,400,1,123,2,65,1,1115,}, + {1,1248,2,66,1,122,18,397,23,6,1,130,21,2,18,4,2,4,18,3,21,2,1,39,21,1,18,2,2,13,18,1,21,2,1,154,21,20,1,24,4,1,21,20,1,130,23,4,18,398,1,123,2,66,1,1114,}, + {1,1248,2,66,1,122,18,397,23,1,1,132,21,1,2,19,21,1,1,33,21,1,18,1,2,22,21,1,1,25,21,1,2,19,18,1,1,25,21,1,2,20,21,1,1,5,21,1,2,46,18,1,1,4,21,1,2,20,21,1,1,22,4,1,2,20,18,1,1,132,23,3,18,397,1,123,2,66,1,1114,}, + {1,1248,2,64,1,124,18,394,23,4,1,129,21,1,18,1,2,23,18,1,21,1,1,28,21,1,2,27,18,1,1,23,18,1,2,20,18,1,1,24,2,21,18,1,1,5,21,1,2,47,1,5,2,21,1,22,18,1,2,20,1,134,23,4,18,397,1,121,2,66,1,1114,}, + {1,1247,2,65,1,121,18,395,23,4,1,129,18,1,2,10,23,8,2,11,18,1,4,1,1,22,21,1,18,1,2,8,23,15,2,8,18,1,1,21,18,1,2,21,21,1,1,22,18,1,2,21,18,1,1,5,21,1,2,47,1,5,21,1,2,20,21,1,1,20,21,1,2,20,21,1,1,135,23,4,18,397,1,122,2,64,1,1114,}, + {1,1247,2,65,1,121,18,395,23,1,1,131,2,9,23,16,2,8,1,22,2,8,23,19,2,8,1,20,18,1,2,22,1,21,21,1,2,22,18,1,1,5,21,1,2,47,1,6,2,5,23,12,2,4,1,20,18,1,2,3,23,13,2,4,1,137,23,4,18,396,1,122,2,64,1,1114,}, + {1,1247,2,65,1,119,18,396,23,2,1,129,21,1,2,7,23,21,2,7,21,1,1,18,18,1,2,7,23,24,2,6,21,1,1,18,18,1,2,3,23,16,2,3,18,1,1,20,2,4,23,16,2,3,18,1,1,5,21,1,2,3,23,40,2,4,1,6,21,1,2,4,23,13,2,3,18,1,1,18,21,1,2,4,23,12,2,4,18,1,1,139,23,3,18,397,1,120,2,66,1,1112,}, + {1,1245,2,66,1,120,18,394,23,3,1,129,18,1,2,6,23,25,2,6,18,1,1,16,18,1,2,6,23,28,2,6,21,1,1,16,18,1,2,3,23,16,2,4,21,1,1,17,21,1,18,1,2,3,23,17,2,3,18,1,1,5,21,1,2,3,23,40,2,4,1,7,18,1,2,4,23,12,2,4,21,1,1,17,18,1,2,3,23,13,2,4,1,140,23,4,18,397,1,119,2,67,1,1111,}, + {1,1245,2,66,1,120,18,394,23,2,1,128,21,1,2,6,23,29,2,6,21,1,1,12,21,1,2,5,23,32,2,6,21,1,1,15,18,1,2,3,23,17,2,4,21,1,1,16,2,5,23,17,2,3,18,1,1,5,21,1,2,3,23,40,2,4,1,7,21,1,2,4,23,13,2,4,1,16,21,1,2,3,23,13,2,4,21,1,1,142,23,3,18,396,1,119,2,67,1,1111,}, + {1,1242,2,67,1,121,18,394,23,3,1,127,18,1,2,5,23,33,2,5,21,1,1,10,21,1,2,5,23,35,2,5,21,1,1,14,18,1,2,3,23,18,2,4,21,1,1,14,18,1,2,4,23,18,2,3,18,1,1,5,21,1,2,3,23,40,2,4,1,8,18,1,2,4,23,12,2,4,18,1,1,14,21,1,2,4,23,12,2,5,1,144,23,3,18,395,1,121,2,68,1,1108,}, + {1,1239,2,69,1,122,18,392,23,4,1,127,18,1,2,5,23,35,2,5,1,9,21,1,2,4,23,38,2,5,18,1,1,13,18,1,2,3,23,19,2,4,21,1,1,12,18,1,2,4,23,19,2,3,18,1,1,5,21,1,2,3,23,40,2,4,1,9,2,4,23,13,2,4,21,1,1,13,2,4,23,13,2,4,21,1,1,145,23,3,18,396,1,120,2,69,1,1106,}, + {1,1239,2,69,1,122,18,392,23,2,1,128,18,1,2,4,23,37,2,4,21,1,1,8,18,1,2,4,23,41,2,4,21,1,1,12,18,1,2,3,23,19,2,5,1,11,21,1,2,4,23,20,2,3,18,1,1,5,21,1,2,3,23,40,2,4,1,9,21,1,2,4,23,12,2,4,18,1,1,12,21,1,2,4,23,12,2,4,18,1,1,147,23,3,18,395,1,120,2,69,1,1106,}, + {1,1239,2,67,1,124,18,391,23,3,1,127,18,1,2,4,23,37,2,4,18,1,1,8,21,1,2,4,23,43,2,4,21,1,1,11,18,1,2,3,23,20,2,5,1,9,21,1,2,5,23,20,2,3,18,1,1,5,21,1,2,3,23,40,2,4,1,10,21,1,2,4,23,12,2,4,21,1,1,11,2,4,23,13,2,4,1,149,23,4,18,393,1,122,2,68,1,1105,}, + {1,1237,2,69,1,124,18,387,23,5,1,128,21,1,2,4,23,38,2,4,1,8,21,1,2,4,23,45,2,4,4,1,1,10,18,1,2,3,23,21,2,4,18,1,1,8,2,4,23,22,2,3,18,1,1,5,21,1,2,3,23,40,2,4,1,11,2,4,23,13,2,4,1,10,18,1,2,4,23,12,2,4,18,1,1,152,23,3,18,391,1,123,2,67,1,1105,}, + {1,1237,2,69,1,124,18,385,23,6,1,129,2,4,23,38,2,4,21,1,1,8,2,5,23,45,2,4,18,1,1,10,18,1,2,3,23,22,2,4,21,1,1,6,18,1,2,4,23,22,2,3,18,1,1,5,21,1,2,3,23,40,2,4,1,11,21,1,2,4,23,13,2,3,21,1,1,9,2,4,23,13,2,4,4,1,1,154,23,5,18,387,1,123,2,67,1,1105,}, + {1,1237,2,68,1,123,18,386,23,4,1,131,18,1,2,4,23,37,2,4,18,1,1,8,21,1,2,4,23,47,2,4,21,1,1,9,18,1,2,3,23,23,2,4,1,5,21,1,2,4,23,23,2,3,18,1,1,5,21,1,2,3,23,10,2,34,1,12,2,4,23,13,2,4,1,8,18,1,2,4,23,12,2,4,21,1,1,157,23,4,18,386,1,123,2,69,1,1103,}, + {1,1237,2,68,1,123,18,383,23,5,1,132,21,1,2,4,23,18,2,10,23,10,2,4,1,9,2,4,23,23,2,4,23,22,2,4,21,1,1,8,18,1,2,3,23,24,2,3,18,1,1,3,4,1,2,4,23,24,2,3,18,1,1,5,21,1,2,3,23,9,2,35,1,12,21,1,2,4,23,12,2,4,21,1,1,6,21,1,2,4,23,13,2,3,18,1,1,160,23,4,18,384,1,123,2,69,1,1103,}, + {1,1237,2,68,1,123,18,383,23,4,1,133,2,4,23,17,2,16,23,4,2,5,21,1,1,8,18,1,2,3,23,18,2,15,23,18,2,4,1,8,18,1,2,3,23,24,2,4,18,1,1,2,2,4,23,25,2,3,18,1,1,5,21,1,2,3,23,9,2,35,1,13,2,4,23,13,2,4,1,6,18,1,2,3,23,13,2,4,1,164,23,2,18,383,1,125,2,67,1,1103,}, + {1,1236,2,69,1,123,18,382,23,4,1,133,21,1,2,3,23,16,2,20,23,2,2,4,21,1,1,8,4,1,2,4,23,16,2,19,23,16,2,4,21,1,1,7,18,1,2,3,23,25,2,4,21,1,2,5,23,25,2,3,18,1,1,5,21,1,2,3,23,9,2,4,18,1,21,30,1,13,21,1,2,4,23,13,2,3,18,1,1,4,21,1,2,4,23,13,2,3,21,1,1,166,23,1,18,383,1,124,2,67,1,1103,}, + {1,1236,2,69,1,123,18,382,23,3,1,133,21,1,2,4,23,14,2,6,18,1,21,2,1,5,21,2,2,11,18,1,1,9,18,1,2,3,23,16,2,7,18,3,21,1,18,3,2,8,23,15,2,4,1,7,18,1,2,3,23,11,2,1,23,14,2,8,23,14,2,1,23,11,2,3,18,1,1,5,21,1,2,3,23,9,2,4,1,45,18,1,2,3,23,13,2,4,21,1,1,3,2,4,23,13,2,4,1,167,23,2,18,382,1,124,2,67,1,1103,}, + {1,1236,2,69,1,123,18,380,23,2,1,136,2,4,23,14,2,5,18,1,1,13,18,1,2,8,1,10,2,4,23,14,2,6,18,1,21,1,1,9,21,1,18,1,2,6,23,14,2,4,21,1,1,6,18,1,2,3,23,11,2,1,23,15,2,6,23,14,2,2,23,11,2,3,18,1,1,5,21,1,2,3,23,9,2,4,1,45,21,1,2,4,23,13,2,3,18,1,1,2,18,1,2,3,23,13,2,4,21,1,1,168,23,2,18,381,1,124,2,69,1,1101,}, + {1,1236,2,67,1,125,18,380,23,1,1,136,21,1,2,4,23,13,2,5,21,1,1,15,21,1,2,6,4,1,1,9,18,1,2,3,23,14,2,5,21,1,1,15,18,1,2,5,23,14,2,4,1,6,18,1,2,3,23,11,2,3,23,13,2,5,23,14,2,3,23,11,2,3,18,1,1,5,21,1,2,3,23,9,2,4,1,46,18,1,2,4,23,12,2,4,18,1,21,1,2,4,23,13,2,3,18,1,1,170,23,2,18,380,1,124,2,69,1,1101,}, + {1,1236,2,67,1,125,18,379,23,2,1,136,18,1,2,3,23,13,2,5,1,19,2,4,1,11,2,4,23,13,2,5,21,1,1,17,21,1,2,5,23,13,2,4,4,1,1,5,18,1,2,3,23,11,2,3,23,14,2,4,23,13,2,4,23,11,2,3,18,1,1,5,21,1,2,3,23,9,2,4,1,47,2,4,23,13,2,8,23,13,2,4,21,1,1,171,23,3,18,378,1,124,2,69,1,1101,}, + {1,1234,2,69,1,124,18,379,23,2,1,137,2,4,23,12,2,5,21,1,1,19,21,1,2,2,21,1,1,11,2,3,23,14,2,4,21,1,1,19,21,1,2,4,23,13,2,4,21,1,1,5,18,1,2,3,23,11,2,4,23,14,2,2,23,14,2,4,23,11,2,3,18,1,1,5,21,1,2,3,23,9,2,4,1,47,18,1,2,4,23,12,2,8,23,12,2,5,1,173,23,3,18,377,1,124,2,69,1,1101,}, + {1,1234,2,69,1,124,18,376,23,4,1,138,2,4,23,12,2,4,21,1,1,21,21,2,1,11,21,1,2,3,23,13,2,4,21,1,1,21,21,1,2,4,23,13,2,3,18,1,1,5,18,1,2,3,23,11,2,5,23,28,2,5,23,11,2,3,18,1,1,5,21,1,2,3,23,9,2,4,1,48,2,4,23,13,2,6,23,13,2,4,21,1,1,175,23,3,18,377,1,123,2,69,1,1100,}, + {1,1234,2,69,1,124,18,376,23,1,1,140,21,1,2,4,23,11,2,4,4,1,1,35,2,4,23,12,2,4,21,1,1,23,21,1,2,4,23,12,2,4,1,5,18,1,2,3,23,11,2,6,23,26,2,6,23,11,2,3,18,1,1,5,21,1,2,3,23,9,2,4,1,48,21,1,2,4,23,12,2,6,23,12,2,4,18,1,1,178,23,3,18,375,1,123,2,69,1,1100,}, + {1,1233,2,70,1,124,18,370,23,7,1,140,18,1,2,3,23,12,2,3,21,1,1,36,2,4,23,12,2,3,18,1,1,25,21,1,2,3,23,13,2,3,4,1,1,4,18,1,2,3,23,11,2,6,23,25,2,7,23,11,2,3,18,1,1,5,21,1,2,3,23,9,2,4,18,1,21,30,1,18,2,5,23,12,2,4,23,13,2,4,21,1,1,180,23,4,18,372,1,123,2,69,1,1100,}, + {1,1233,2,70,1,124,18,370,23,1,1,146,2,4,23,11,2,4,1,37,2,3,23,12,2,4,4,1,1,26,2,4,23,12,2,3,21,1,1,4,18,1,2,3,23,11,2,7,23,24,2,7,23,11,2,3,18,1,1,5,21,1,2,3,23,9,2,35,1,19,2,4,23,13,2,3,23,12,2,4,18,1,1,184,23,1,18,372,1,123,2,69,1,1100,}, + {1,1231,2,72,1,124,18,367,23,4,1,146,2,4,23,11,2,3,21,1,1,36,21,1,2,3,23,12,2,3,18,1,1,27,21,1,2,3,23,12,2,3,18,1,1,4,18,1,2,3,23,11,2,8,23,22,2,8,23,11,2,3,18,1,1,5,21,1,2,3,23,9,2,35,1,19,21,1,2,4,23,12,2,2,23,13,2,4,1,186,23,2,18,370,1,123,2,71,1,1098,}, + {1,1228,2,73,1,124,18,367,23,4,1,147,21,1,2,4,23,11,2,3,1,37,2,4,23,11,2,4,21,1,1,27,4,1,2,3,23,12,2,3,18,1,1,4,18,1,2,3,23,11,2,3,18,2,2,4,23,20,2,4,21,1,18,1,2,3,23,11,2,3,18,1,1,5,21,1,2,3,23,10,2,34,1,20,2,4,23,26,2,4,21,1,1,187,23,3,18,369,1,122,2,74,1,1095,}, + {1,1228,2,73,1,124,18,367,23,2,1,149,21,1,2,4,23,10,2,4,1,37,2,4,23,11,2,4,4,1,1,28,2,4,23,11,2,4,1,4,18,1,2,3,23,11,2,3,18,1,1,1,2,4,23,19,2,4,18,1,1,1,18,1,2,3,23,11,2,3,18,1,1,5,21,1,2,3,23,40,2,4,1,20,21,1,2,4,23,24,2,4,21,1,1,190,23,3,18,367,1,122,2,74,1,1095,}, + {1,1226,2,75,1,124,18,366,23,2,1,150,21,1,2,3,23,11,2,4,1,37,2,4,23,11,2,4,1,29,18,1,2,3,23,12,2,3,1,4,18,1,2,3,23,11,2,3,18,1,1,1,21,1,2,4,23,17,2,5,1,2,18,1,2,3,23,11,2,3,18,1,1,5,21,1,2,3,23,40,2,4,1,21,18,1,2,3,23,24,2,4,1,192,23,4,18,365,1,122,2,75,1,1094,}, + {1,1226,2,75,1,122,18,366,23,3,1,151,21,1,2,3,23,11,2,3,18,1,1,36,21,1,2,4,23,11,2,3,18,1,1,29,21,1,2,3,23,12,2,3,1,4,18,1,2,3,23,11,2,3,18,1,1,2,18,1,2,4,23,16,2,4,21,1,1,2,18,1,2,3,23,11,2,3,18,1,1,5,21,1,2,3,23,40,2,4,1,21,21,1,2,4,23,23,2,3,21,1,1,194,23,3,18,364,1,124,2,75,1,1092,}, + {1,1226,2,75,1,121,18,367,23,2,1,152,21,1,2,3,23,11,2,3,18,1,1,36,21,1,2,4,23,11,2,3,18,1,1,29,21,1,2,3,23,12,2,3,1,4,18,1,2,3,23,11,2,3,18,1,1,3,2,5,23,14,2,4,18,1,1,3,18,1,2,3,23,11,2,3,18,1,1,5,21,1,2,3,23,40,2,4,1,22,18,1,2,3,23,22,2,4,1,196,23,4,18,362,1,124,2,75,1,1092,}, + {1,1225,2,76,1,121,18,366,23,2,1,153,21,1,2,3,23,11,2,3,18,1,1,36,21,1,2,4,23,11,2,3,18,1,1,29,21,1,2,3,23,12,2,3,1,4,18,1,2,3,23,11,2,3,18,1,1,3,4,1,2,5,23,12,2,5,1,4,18,1,2,3,23,11,2,3,18,1,1,5,21,1,2,3,23,40,2,4,1,22,4,1,2,4,23,20,2,4,21,1,1,197,23,4,18,361,1,124,2,75,1,1092,}, + {1,1225,2,75,1,122,18,363,23,4,1,154,21,1,2,3,23,11,2,4,1,36,21,1,2,4,23,11,2,3,18,1,1,29,21,1,2,3,23,12,2,3,1,4,18,1,2,3,23,11,2,3,18,1,1,4,21,1,2,4,23,11,2,5,4,1,1,4,18,1,2,3,23,11,2,3,18,1,1,5,21,1,2,3,23,40,2,4,1,23,18,1,2,4,23,19,2,3,18,1,1,200,23,3,18,360,1,124,2,75,1,1092,}, + {1,1225,2,75,1,122,18,363,23,1,1,157,21,1,2,4,23,10,2,4,1,37,2,4,23,11,2,4,1,29,18,1,2,3,23,12,2,3,1,4,18,1,2,3,23,11,2,3,18,1,1,5,18,1,2,4,23,9,2,5,21,1,1,5,18,1,2,3,23,11,2,3,18,1,1,5,21,1,2,3,23,40,2,4,1,24,2,4,23,18,2,4,21,1,1,201,23,3,18,359,1,124,2,75,1,1092,}, + {1,1225,2,75,1,122,18,359,23,5,1,157,21,1,2,4,23,11,2,3,1,37,2,4,23,11,2,4,1,29,2,4,23,11,2,4,1,4,18,1,2,3,23,11,2,3,18,1,1,6,18,1,2,4,23,8,2,4,1,7,18,1,2,3,23,11,2,3,18,1,1,5,21,1,2,3,23,40,2,4,1,24,21,1,2,4,23,17,2,3,18,1,1,203,23,4,18,358,1,125,2,75,1,1090,}, + {1,1225,2,72,1,125,18,355,23,5,1,162,2,4,23,11,2,3,21,1,1,36,2,4,23,11,2,4,21,1,1,28,2,4,23,11,2,4,1,4,18,1,2,3,23,11,2,3,18,1,1,7,18,1,2,4,23,6,2,4,21,1,1,7,18,1,2,3,23,11,2,3,18,1,1,5,21,1,2,3,23,40,2,4,1,25,18,1,2,4,23,15,2,4,1,207,23,5,18,354,1,128,2,72,1,1090,}, + {1,1225,2,72,1,124,18,356,23,1,1,166,2,4,23,11,2,4,1,36,18,1,2,3,23,12,2,3,18,1,1,27,21,1,2,3,23,12,2,3,18,1,1,4,18,1,2,3,23,11,2,3,18,1,1,8,18,1,2,3,23,5,2,4,21,1,1,8,18,1,2,3,23,11,2,3,18,1,1,5,21,1,2,3,23,9,2,35,1,25,21,1,2,4,23,14,2,4,21,1,1,208,23,6,18,353,1,127,2,72,1,1090,}, + {1,1225,2,70,1,126,18,353,23,4,1,166,2,4,23,12,2,3,21,1,1,35,4,1,2,3,23,12,2,4,1,27,18,1,2,3,23,12,2,3,18,1,1,4,18,1,2,3,23,11,2,3,18,1,1,9,2,4,23,3,2,5,1,9,18,1,2,3,23,11,2,3,18,1,1,5,21,1,2,3,23,9,2,35,1,26,2,5,23,13,2,4,1,214,23,3,18,351,1,128,2,71,1,1090,}, + {1,1225,2,70,1,125,18,354,23,1,1,169,18,1,2,3,23,12,2,3,18,1,1,36,2,3,23,12,2,4,21,1,1,25,21,1,2,4,23,12,2,3,21,1,1,4,18,1,2,3,23,11,2,3,18,1,1,9,18,1,2,4,23,2,2,4,21,1,1,9,18,1,2,3,23,11,2,3,18,1,1,5,21,1,2,3,23,9,2,35,1,26,21,1,2,4,23,12,2,4,18,1,1,217,23,3,18,350,1,126,2,71,1,1090,}, + {1,1225,2,69,1,126,18,352,23,3,1,169,21,1,2,4,23,11,2,4,21,1,1,35,2,4,23,12,2,4,1,23,4,1,1,1,18,1,2,3,23,13,2,3,4,1,1,4,18,1,2,3,23,11,2,3,18,1,1,10,18,1,2,8,21,1,1,10,18,1,2,3,23,11,2,3,18,1,1,5,21,1,2,3,23,9,2,4,21,30,4,1,1,27,21,1,2,3,23,12,2,4,1,219,23,2,18,351,1,125,2,71,1,1090,}, + {1,1225,2,69,1,126,18,351,23,2,1,172,2,4,23,12,2,4,18,1,1,21,21,1,18,1,1,11,18,1,2,3,23,12,2,4,18,1,1,22,4,1,18,1,2,4,23,12,2,4,1,5,18,1,2,3,23,11,2,3,18,1,1,11,2,7,18,1,1,11,18,1,2,3,23,11,2,3,18,1,1,5,21,1,2,3,23,9,2,4,1,59,2,3,23,12,2,3,18,1,1,219,23,3,18,350,1,127,2,69,1,1090,}, + {1,1225,2,69,1,126,18,351,23,1,1,173,2,4,23,13,2,4,18,1,1,19,21,1,2,2,18,1,1,10,21,1,2,3,23,13,2,4,18,1,1,21,21,1,2,4,23,13,2,3,18,1,1,5,18,1,2,3,23,11,2,3,18,1,1,11,21,1,2,6,1,12,18,1,2,3,23,11,2,3,18,1,1,5,21,1,2,3,23,9,2,4,1,59,2,3,23,12,2,3,18,1,1,220,23,3,18,351,1,125,2,69,1,1090,}, + {1,1223,2,71,1,125,18,350,23,3,1,173,21,1,2,4,23,12,2,5,18,1,1,17,18,1,2,5,1,10,2,4,23,13,2,4,18,1,1,18,4,1,2,5,23,13,2,4,21,1,1,5,18,1,2,3,23,11,2,3,18,1,1,12,21,1,2,4,4,1,1,12,18,1,2,3,23,11,2,3,18,1,1,5,21,1,2,3,23,9,2,4,1,59,2,3,23,12,2,3,18,1,1,221,23,3,18,351,1,124,2,69,1,1090,}, + {1,1223,2,69,1,127,18,350,23,1,1,176,2,4,23,13,2,6,21,1,1,13,21,1,2,8,21,1,1,8,18,1,2,3,23,14,2,5,21,1,1,15,21,1,2,5,23,14,2,4,1,6,18,1,2,3,23,11,2,3,18,1,1,13,18,1,2,2,21,1,1,13,18,1,2,3,23,11,2,3,18,1,1,5,21,1,2,3,23,9,2,4,1,59,2,3,23,12,2,3,18,1,1,222,23,3,18,350,1,124,2,69,1,1090,}, + {1,1223,2,69,1,127,18,350,23,1,1,176,18,1,2,4,23,14,2,6,21,2,1,7,21,1,18,1,2,11,4,1,1,7,21,1,2,3,23,15,2,6,21,1,1,11,21,1,18,1,2,5,23,14,2,4,21,1,1,6,18,1,2,3,23,11,2,3,18,1,1,14,18,1,4,1,1,14,18,1,2,3,23,11,2,3,18,1,1,5,21,1,2,3,23,9,2,4,1,59,2,3,23,12,2,3,18,1,1,223,23,7,18,346,1,123,2,69,1,1090,}, + {1,1223,2,69,1,127,18,345,23,6,1,177,18,1,2,3,23,15,2,9,18,3,2,9,23,2,2,5,21,1,1,7,2,4,23,15,2,7,18,1,21,3,4,2,21,2,18,1,2,7,23,15,2,4,1,7,18,1,2,3,23,11,2,3,18,1,1,30,18,1,2,3,23,11,2,3,18,1,1,5,21,1,2,3,23,9,2,4,1,59,2,3,23,12,2,3,18,1,1,225,23,7,18,345,1,123,2,69,1,1089,}, + {1,1223,2,69,1,126,18,340,23,8,1,181,21,1,2,4,23,15,2,19,23,4,2,5,1,7,21,1,2,3,23,16,2,21,23,16,2,3,18,1,1,7,18,1,2,3,23,11,2,3,18,1,1,30,18,1,2,3,23,11,2,3,18,1,1,5,21,1,2,3,23,9,2,4,1,59,2,3,23,12,2,3,18,1,1,229,23,5,18,344,1,122,2,69,1,1089,}, + {1,1223,2,69,1,126,18,340,23,1,1,189,2,4,23,17,2,15,23,7,2,4,18,1,1,7,2,4,23,17,2,17,23,17,2,4,21,1,1,7,18,1,2,3,23,11,2,3,18,1,1,30,18,1,2,3,23,11,2,3,18,1,1,5,21,1,2,3,23,9,2,4,1,59,2,3,23,12,2,3,18,1,1,232,23,3,18,343,1,122,2,69,1,1089,}, + {1,1222,2,70,1,126,18,337,23,4,1,189,21,1,2,4,23,20,2,7,23,12,2,4,18,1,1,6,21,1,2,3,23,19,2,13,23,18,2,4,18,1,1,8,18,1,2,3,23,11,2,3,18,1,1,30,18,1,2,3,23,11,2,3,18,1,1,5,21,1,2,3,23,9,2,4,1,59,2,3,23,12,2,3,18,1,1,234,23,3,18,342,1,121,2,69,1,1089,}, + {1,1222,2,70,1,126,18,337,23,1,1,193,18,1,2,3,23,40,2,4,18,1,1,6,2,4,23,49,2,4,21,1,1,8,18,1,2,3,23,11,2,3,18,1,1,30,18,1,2,3,23,11,2,3,18,1,1,5,21,1,2,3,23,9,2,4,1,59,2,3,23,12,2,3,18,1,1,235,23,3,18,341,1,121,2,69,1,1089,}, + {1,1222,2,69,1,126,18,335,23,4,1,194,2,4,23,40,2,4,18,1,1,5,21,1,2,4,23,47,2,4,21,1,1,9,18,1,2,3,23,11,2,3,18,1,1,30,18,1,2,3,23,11,2,3,18,1,1,5,21,1,2,3,23,9,2,4,1,59,2,3,23,12,2,3,18,1,1,237,23,3,18,340,1,120,2,71,1,1087,}, + {1,1220,2,71,1,126,18,333,23,3,1,197,21,1,2,5,23,39,2,5,21,1,1,4,18,1,2,4,23,45,2,4,21,1,1,10,18,1,2,3,23,11,2,3,18,1,1,30,18,1,2,3,23,11,2,3,18,1,1,5,21,1,2,3,23,9,2,4,1,59,2,3,23,12,2,3,18,1,1,239,23,2,18,339,1,120,2,72,1,1086,}, + {1,1220,2,71,1,125,18,334,23,1,1,200,21,1,2,5,23,39,2,5,1,5,2,5,23,43,2,4,18,1,1,11,18,1,2,3,23,11,2,3,18,1,1,30,18,1,2,3,23,11,2,3,18,1,1,5,21,1,2,3,23,9,2,4,1,59,2,3,23,12,2,3,18,1,1,240,23,3,18,338,1,119,2,72,1,1086,}, + {1,1217,2,74,1,125,18,333,23,2,1,201,21,1,2,5,23,37,2,5,21,1,1,6,2,5,23,41,2,5,1,12,18,1,2,3,23,11,2,3,18,1,1,30,18,1,2,3,23,11,2,3,18,1,1,5,21,1,2,3,23,9,2,4,1,59,2,3,23,12,2,3,18,1,1,242,23,2,18,337,1,119,2,75,1,1083,}, + {1,1216,2,75,1,125,18,331,23,3,1,203,21,1,2,5,23,35,2,5,21,1,1,8,18,1,2,4,23,39,2,5,1,13,18,1,2,3,23,11,2,3,18,1,1,30,18,1,2,3,23,11,2,3,18,1,1,5,21,1,2,3,23,9,2,4,1,59,2,3,23,12,2,3,18,1,1,242,23,2,18,338,1,120,2,75,1,1081,}, + {1,1216,2,75,1,125,18,331,23,1,1,206,18,1,2,5,23,33,2,5,21,1,1,10,2,5,23,37,2,5,21,1,1,13,18,1,2,3,23,11,2,3,18,1,1,30,18,1,2,3,23,11,2,3,18,1,1,5,21,1,2,3,23,9,2,4,1,59,2,3,23,12,2,3,18,1,1,242,23,2,18,338,1,120,2,75,1,1081,}, + {1,1216,2,75,1,124,18,330,23,3,1,207,21,1,2,5,23,30,2,6,21,1,1,12,2,5,23,35,2,5,21,1,1,14,18,1,2,3,23,11,2,3,18,1,1,30,18,1,2,3,23,11,2,3,18,1,1,5,21,1,2,3,23,9,2,4,1,59,2,3,23,12,2,3,18,1,1,242,23,2,18,339,1,119,2,75,1,1081,}, + {1,1214,2,75,1,126,18,327,23,4,1,210,21,1,2,6,23,26,2,6,18,1,1,15,2,6,23,31,2,6,1,16,18,1,2,3,23,11,2,3,18,1,1,30,18,1,2,3,23,11,2,3,18,1,1,5,21,1,2,3,23,9,2,4,1,59,2,3,23,12,2,3,18,1,1,243,23,3,18,337,1,119,2,75,1,1081,}, + {1,1214,2,75,1,126,18,327,23,1,1,215,18,1,2,7,23,21,2,7,21,1,1,17,18,1,2,6,23,27,2,6,18,1,1,17,18,1,2,3,23,11,2,3,18,1,1,30,18,1,2,3,23,11,2,3,18,1,1,5,21,1,2,3,23,9,2,4,1,59,2,3,23,12,2,3,18,1,1,244,23,4,18,337,1,117,2,75,1,1081,}, + {1,1214,2,75,1,126,18,320,23,8,1,216,21,1,18,1,2,8,23,15,2,8,18,1,1,20,21,1,2,7,23,23,2,6,18,1,4,1,1,18,18,1,2,3,23,11,2,3,18,1,1,30,18,1,2,3,23,11,2,3,18,1,1,5,21,1,2,3,23,9,2,4,1,59,2,3,23,12,2,3,18,1,1,246,23,6,18,334,1,117,2,76,1,1079,}, + {1,1214,2,75,1,126,18,316,23,5,1,225,21,1,18,1,2,27,18,1,21,1,1,23,18,1,2,8,23,17,2,8,21,1,1,20,18,1,2,17,18,1,1,30,18,1,2,17,18,1,1,5,21,1,2,16,1,59,2,18,18,1,1,248,23,7,18,331,1,117,2,76,1,1079,}, + {1,1214,2,75,1,126,18,316,23,2,1,231,18,1,2,23,21,1,1,28,21,1,2,11,23,7,2,11,21,1,1,22,18,1,2,17,18,1,1,30,18,1,2,17,18,1,1,5,21,1,2,16,1,59,2,18,18,1,1,251,23,7,18,328,1,117,2,76,1,1079,}, + {1,1214,2,73,1,128,18,313,23,4,1,235,21,1,18,1,2,16,18,1,21,2,1,31,21,1,18,1,2,24,21,1,1,24,18,1,2,17,18,1,1,30,18,1,2,17,18,1,1,5,21,1,2,16,1,59,2,18,18,1,1,254,23,7,18,326,1,118,2,74,1,1079,}, + {1,1214,2,73,1,128,18,313,23,1,1,241,21,2,18,2,2,6,18,1,21,3,1,38,21,1,18,1,2,17,18,1,21,1,4,1,1,26,21,1,18,17,21,1,1,30,21,1,18,17,21,1,1,5,21,1,18,16,1,59,21,3,4,2,21,1,4,1,21,1,4,1,21,1,4,2,21,1,4,3,21,2,1,259,23,5,18,325,1,117,2,74,1,1079,}, + {1,1212,2,74,1,128,18,313,23,2,1,245,21,7,1,43,21,2,18,1,2,11,18,1,21,2,1,458,23,4,18,323,1,119,2,72,1,1079,}, + {1,1212,2,72,1,130,18,311,23,3,1,302,21,5,4,1,1,465,23,3,18,323,1,119,2,71,1,1079,}, + {1,1212,2,72,1,130,18,311,23,1,1,777,23,4,18,320,1,119,2,71,1,1079,}, + {1,1212,2,71,1,131,18,310,23,2,1,779,23,3,18,320,1,120,2,70,1,1078,}, + {1,1212,2,69,1,133,18,308,23,3,1,781,23,6,18,317,1,119,2,70,1,1078,}, + {1,1212,2,69,1,133,18,308,23,2,1,783,23,9,18,313,1,119,2,70,1,1078,}, + {1,1212,2,69,1,131,18,304,23,8,1,790,23,5,18,311,1,119,2,69,1,1078,}, + {1,1212,2,69,1,130,18,297,23,9,1,799,23,4,18,310,1,119,2,69,1,1078,}, + {1,1212,2,69,1,130,18,297,23,1,1,810,23,3,18,308,1,119,2,69,1,1078,}, + {1,1212,2,68,1,126,18,299,23,4,1,810,23,5,18,306,1,119,2,69,1,1078,}, + {1,1212,2,68,1,126,18,299,23,1,1,815,23,5,18,304,1,119,2,69,1,1078,}, + {1,1212,2,68,1,123,18,300,23,3,1,817,23,5,18,302,1,121,2,67,1,1078,}, + {1,1212,2,68,1,118,18,304,23,2,1,820,23,4,18,304,1,119,2,67,1,1078,}, + {1,1212,2,68,1,118,18,304,23,1,1,823,23,4,18,302,1,119,2,67,1,1078,}, + {1,1212,2,68,1,115,18,305,23,3,1,825,23,3,18,304,1,116,2,67,1,1078,}, + {1,1212,2,66,1,116,18,305,23,2,1,828,23,3,18,305,1,114,2,67,1,1078,}, + {1,1212,2,66,1,116,18,305,23,1,1,830,23,5,18,302,1,114,2,67,1,1078,}, + {1,1211,2,67,1,114,18,303,23,5,1,831,23,9,18,297,1,114,2,67,1,1078,}, + {1,1211,2,67,1,114,18,296,23,8,1,837,23,10,18,295,1,114,2,66,1,1078,}, + {1,1211,2,67,1,114,18,296,23,1,1,850,23,6,18,293,1,114,2,66,1,1078,}, + {1,1211,2,65,1,116,18,289,23,8,1,852,23,7,18,290,1,114,2,68,1,1076,}, + {1,1211,2,65,1,116,18,289,23,1,1,863,23,5,18,288,1,114,2,68,1,1076,}, + {1,1211,2,65,1,115,18,287,23,4,1,865,23,5,18,288,1,114,2,66,1,1076,}, + {1,1211,2,64,1,114,18,288,23,2,1,870,23,4,18,288,1,113,2,66,1,1076,}, + {1,1211,2,64,1,114,18,288,23,1,1,872,23,4,18,287,1,113,2,66,1,1076,}, + {1,1209,2,64,1,113,18,289,23,3,1,873,23,5,18,289,1,111,2,64,1,1076,}, + {1,1209,2,63,1,111,18,291,23,2,1,877,23,4,18,289,1,113,2,62,1,1075,}, + {1,1209,2,63,1,111,18,291,23,1,1,879,23,6,18,286,1,113,2,62,1,1075,}, + {1,1209,2,61,1,113,18,287,23,5,1,881,23,7,18,285,1,111,2,62,1,1075,}, + {1,1208,2,62,1,111,18,283,23,7,1,887,23,15,18,275,1,112,2,63,1,1073,}, + {1,1208,2,62,1,111,18,283,23,1,1,896,23,14,18,273,1,112,2,63,1,1073,}, + {1,1206,2,63,1,112,18,274,23,10,1,907,23,7,18,270,1,113,2,61,1,1073,}, + {1,1205,2,64,1,112,18,268,23,7,1,918,23,6,18,269,1,113,2,62,1,1072,}, + {1,1205,2,64,1,112,18,268,23,1,1,928,23,3,18,268,1,113,2,62,1,1072,}, + {1,1203,2,66,1,111,18,267,23,3,1,930,23,3,18,266,1,113,2,64,1,1070,}, + {1,1203,2,66,1,111,18,267,23,1,1,933,23,2,18,266,1,113,2,64,1,1070,}, + {1,1203,2,64,1,113,18,265,23,3,1,934,23,3,18,266,1,111,2,65,1,1069,}, + {1,1203,2,64,1,113,18,264,23,2,1,938,23,3,18,264,1,111,2,65,1,1069,}, + {1,1203,2,64,1,113,18,264,23,1,1,941,23,2,18,263,1,111,2,65,1,1069,}, + {1,1201,2,66,1,111,18,264,23,3,1,941,23,3,18,262,1,112,2,64,1,1069,}, + {1,1201,2,66,1,111,18,261,23,4,1,944,23,4,18,261,1,111,2,64,1,1069,}, + {1,1201,2,66,1,111,18,261,23,1,1,949,23,2,18,261,1,111,2,64,1,1069,}, + {1,1201,2,65,1,111,18,254,23,9,1,950,23,9,18,253,1,111,2,66,1,1067,}, + {1,1201,2,65,1,111,18,242,23,13,1,966,23,14,18,242,1,111,2,64,1,1067,}, + {1,1201,2,65,1,111,18,242,23,1,1,992,23,1,18,241,1,111,2,64,1,1067,}, + {1,1201,2,65,1,109,18,239,23,6,1,992,23,3,18,239,1,111,2,64,1,1067,}, + {1,1201,2,65,1,109,18,239,23,1,1,631,4,1,1,367,23,3,18,237,1,111,2,64,1,1067,}, + {1,1200,2,65,1,108,18,240,23,2,1,630,4,4,1,367,23,2,18,239,1,109,2,63,1,1067,}, + {1,1200,2,65,1,107,18,239,23,3,1,630,4,8,1,365,23,2,18,240,1,107,2,63,1,1067,}, + {1,1200,2,65,1,107,18,239,23,1,1,631,4,12,1,363,23,2,18,239,1,107,2,63,1,1067,}, + {1,1200,2,65,1,105,18,239,23,3,1,630,4,4,23,3,18,1,4,5,1,364,23,3,18,237,1,109,2,61,1,1067,}, + {1,1201,2,64,1,105,18,238,23,2,1,352,4,1,1,278,4,4,23,7,21,1,4,2,1,366,23,3,18,236,1,109,2,60,1,1067,}, + {1,1201,2,64,1,105,18,238,23,1,1,352,4,4,1,275,4,4,23,9,4,3,1,365,23,3,18,236,1,108,2,61,1,1067,}, + {1,1201,2,64,1,105,18,235,23,4,1,351,4,8,1,272,4,3,23,10,4,3,1,367,23,15,18,222,1,108,2,61,1,1067,}, + {1,1201,2,64,1,105,18,214,23,22,1,353,4,12,1,268,4,3,23,11,18,1,4,2,1,381,23,4,18,219,1,108,2,61,1,1067,}, + {1,1201,2,64,1,105,18,207,23,8,1,373,4,4,23,3,18,1,4,5,1,267,4,3,18,1,23,12,4,3,1,383,23,4,18,216,1,108,2,61,1,1067,}, + {1,1200,2,65,1,104,18,208,23,1,1,379,4,4,23,7,21,1,4,2,1,266,4,3,21,1,23,13,4,3,1,386,23,3,18,214,1,108,2,61,1,1067,}, + {1,1200,2,65,1,104,18,207,23,2,1,378,4,4,23,9,4,3,1,265,4,3,23,14,21,1,4,2,1,388,23,3,18,214,1,106,2,61,1,1067,}, + {1,1200,2,65,1,104,18,203,23,5,1,379,4,3,23,10,4,3,1,265,4,3,23,15,4,3,1,390,23,5,18,209,1,106,2,62,1,1066,}, + {1,1199,2,66,1,104,18,201,23,3,1,382,4,3,23,11,18,1,4,2,1,265,4,3,23,15,4,3,1,394,23,2,18,208,1,107,2,61,1,1066,}, + {1,1199,2,65,1,105,18,201,23,1,1,383,4,3,18,1,23,12,4,3,1,264,4,3,23,15,21,1,4,2,1,395,23,3,18,206,1,107,2,61,1,1066,}, + {1,1199,2,65,1,105,18,200,23,2,1,382,4,3,21,1,23,13,4,3,1,264,4,3,23,16,4,3,1,396,23,2,18,205,1,108,2,60,1,1066,}, + {1,1199,2,64,1,106,18,200,23,1,1,383,4,3,23,14,21,1,4,2,1,264,4,3,23,16,4,3,1,397,23,3,18,203,1,108,2,60,1,1066,}, + {1,1199,2,64,1,106,18,199,23,2,1,383,4,3,23,15,4,3,1,263,4,3,23,16,4,3,1,399,23,4,18,200,1,108,2,61,1,1065,}, + {1,1199,2,64,1,104,18,199,23,3,1,384,4,3,23,15,4,3,1,263,4,3,23,17,4,3,1,401,23,1,18,200,1,108,2,61,1,1065,}, + {1,1198,2,65,1,104,18,199,23,1,1,386,4,3,23,15,21,1,4,2,1,263,4,3,23,17,4,3,1,401,23,2,18,199,1,107,2,62,1,1065,}, + {1,1198,2,65,1,104,18,199,23,1,1,386,4,3,23,16,4,3,1,262,4,3,23,17,4,3,1,402,23,2,18,198,1,107,2,62,1,1065,}, + {1,1198,2,65,1,104,18,199,23,1,1,386,4,3,23,16,4,3,1,262,4,3,23,18,4,2,1,403,23,2,18,197,1,107,2,62,1,1065,}, + {1,1198,2,66,1,103,18,197,23,3,1,386,4,3,23,16,4,3,1,262,4,3,23,18,4,3,1,403,23,2,18,196,1,107,2,62,1,1065,}, + {1,1198,2,66,1,103,18,197,23,1,1,388,4,3,23,17,4,3,1,261,4,3,23,18,4,2,1,405,23,1,18,196,1,107,2,62,1,1065,}, + {1,1198,2,66,1,103,18,197,23,1,1,388,4,3,23,17,4,3,1,261,4,3,23,17,4,3,1,405,23,2,18,195,1,107,2,62,1,1065,}, + {1,1198,2,66,1,103,18,197,23,1,1,388,4,3,23,17,4,3,1,261,4,3,23,17,4,3,1,406,23,1,18,195,1,107,2,62,1,1065,}, + {1,1197,2,67,1,103,18,196,23,2,1,388,4,3,23,18,4,2,1,261,4,3,23,17,4,2,1,407,23,2,18,194,1,107,2,63,1,1064,}, + {1,1196,2,68,1,103,18,194,23,4,1,388,4,3,23,18,4,3,1,260,4,3,23,16,4,3,1,409,23,1,18,193,1,107,2,63,1,1064,}, + {1,1196,2,68,1,103,18,194,23,1,1,391,4,3,23,18,4,2,1,261,4,3,23,16,4,3,1,409,23,2,18,192,1,106,2,64,1,1064,}, + {1,1195,2,69,1,103,18,192,23,3,1,391,4,3,23,17,4,3,1,261,4,3,23,16,4,3,1,410,23,3,18,191,1,105,2,64,1,1064,}, + {1,1195,2,69,1,103,18,191,23,2,1,393,4,3,23,17,4,3,1,261,4,3,23,15,4,3,1,413,23,2,18,190,1,105,2,64,1,1064,}, + {1,1195,2,69,1,103,18,191,23,1,1,394,4,3,23,17,4,2,1,262,4,3,23,15,4,3,1,414,23,1,18,190,1,105,2,64,1,1064,}, + {1,1195,2,69,1,103,18,189,23,3,1,394,4,3,23,16,4,3,1,262,4,3,23,15,4,3,1,414,23,1,18,190,1,105,2,64,1,1064,}, + {1,1194,2,70,1,103,18,189,23,1,1,396,4,3,23,16,4,3,1,262,4,3,23,14,4,3,1,415,23,1,18,190,1,105,2,65,1,1063,}, + {1,1194,2,70,1,103,18,189,23,1,1,396,4,3,23,16,4,3,1,262,4,4,23,13,4,3,1,415,23,2,18,189,1,105,2,65,1,1063,}, + {1,1194,2,70,1,103,18,189,23,1,1,396,4,3,23,15,4,3,1,264,4,4,23,12,4,3,1,416,23,1,18,189,1,105,2,65,1,1063,}, + {1,1194,2,70,1,103,18,189,23,1,1,396,4,3,23,15,4,3,1,120,2,42,1,103,4,3,21,1,23,10,4,3,1,417,23,1,18,189,1,106,2,64,1,1063,}, + {1,1194,2,70,1,103,18,189,23,1,1,396,4,3,23,15,4,3,1,120,2,42,1,104,4,3,23,10,4,3,1,417,23,1,18,189,1,106,2,64,1,1063,}, + {1,1194,2,70,1,103,18,188,23,2,1,396,4,3,23,14,4,3,1,99,2,85,1,84,4,3,23,9,4,3,1,417,23,1,18,189,1,103,2,69,1,1061,}, + {1,1194,2,70,1,103,18,188,23,1,1,397,4,4,23,13,4,3,1,99,2,85,1,84,4,4,23,7,4,3,1,418,23,1,18,189,1,103,2,69,1,1061,}, + {1,1190,2,76,1,101,18,188,23,1,1,398,4,4,23,12,4,3,1,93,2,98,1,78,4,4,23,3,18,1,4,5,1,418,23,2,18,188,1,102,2,73,1,1058,}, + {1,1190,2,77,1,100,18,188,23,1,1,399,4,3,21,1,23,10,4,3,1,91,2,103,1,77,4,12,1,419,23,2,18,187,1,100,2,77,1,1056,}, + {1,1190,2,77,1,100,18,188,23,1,1,400,4,3,23,10,4,3,1,91,2,103,1,78,4,9,1,422,23,1,18,187,1,100,2,77,1,1056,}, + {1,1189,2,78,1,100,18,188,23,1,1,401,4,3,23,9,4,3,1,89,2,108,1,76,4,4,1,426,23,1,18,187,1,100,2,77,1,1056,}, + {1,1189,2,78,1,100,18,188,23,1,1,401,4,4,23,7,4,3,1,89,2,111,1,504,23,1,18,187,1,100,2,77,1,1056,}, + {1,1189,2,78,1,100,18,188,23,1,1,402,4,4,23,3,18,1,4,5,1,89,2,111,1,504,23,2,18,186,1,100,2,77,1,1056,}, + {1,1189,2,78,1,100,18,188,23,1,1,403,4,12,1,86,2,115,1,503,23,2,18,186,1,99,2,80,1,1054,}, + {1,1189,2,78,1,100,18,188,23,1,1,404,4,9,1,81,2,130,1,495,23,1,18,187,1,99,2,80,1,1054,}, + {1,1189,2,78,1,100,18,188,23,1,1,405,4,4,1,85,2,130,1,495,23,1,18,187,1,99,2,80,1,1054,}, + {1,1189,2,80,1,98,18,188,23,1,1,233,2,75,1,161,2,180,1,160,2,75,1,235,23,1,18,187,1,99,2,80,1,1054,}, + {1,1189,2,80,1,98,18,188,23,1,1,233,2,75,1,161,2,180,1,160,2,75,1,235,23,1,18,187,1,99,2,80,1,1054,}, + {1,1189,2,80,1,98,18,186,23,3,1,208,2,136,1,110,2,211,1,109,2,136,1,209,23,1,18,187,1,97,2,82,1,1054,}, + {1,1187,2,83,1,97,18,186,23,1,1,202,2,158,1,86,2,229,1,87,2,156,1,203,23,2,18,186,1,97,2,82,1,1054,}, + {1,1187,2,83,1,97,18,186,23,1,1,202,2,158,1,86,2,229,1,87,2,156,1,204,23,1,18,186,1,97,2,82,1,1054,}, + {1,1187,2,83,1,97,18,186,23,1,1,199,2,171,1,72,2,239,1,72,2,170,1,199,23,1,18,186,1,96,2,84,1,1053,}, + {1,1187,2,85,1,95,18,186,23,1,1,196,2,183,1,56,2,252,1,55,2,184,1,196,23,1,18,186,1,96,2,84,1,1053,}, + {1,1187,2,85,1,95,18,186,23,1,1,196,2,183,1,56,2,252,1,55,2,184,1,196,23,1,18,186,1,96,2,84,1,1053,}, + {1,1187,2,86,1,94,18,185,23,2,1,191,2,196,1,42,2,264,1,41,2,195,1,193,23,2,18,185,1,93,2,87,1,1053,}, + {1,1187,2,89,1,91,18,185,23,1,1,188,2,749,1,187,23,2,18,184,1,91,2,89,1,1053,}, + {1,1187,2,89,1,91,18,185,23,1,1,188,2,749,1,188,23,2,18,183,1,91,2,89,1,1053,}, + {1,1187,2,89,1,91,18,182,23,4,1,174,2,777,1,175,23,2,18,182,1,89,2,91,1,1053,}, + {1,1187,2,91,1,89,18,180,23,3,1,153,2,824,1,153,23,2,18,181,1,89,2,91,1,1053,}, + {1,1187,2,91,1,89,18,180,23,1,1,155,2,824,1,154,23,2,18,180,1,89,2,91,1,1053,}, + {1,1187,2,91,1,89,18,180,23,1,1,151,2,833,1,150,23,2,18,179,1,89,2,91,1,1053,}, + {1,1187,2,91,1,89,18,180,23,1,1,151,2,833,1,151,23,2,18,178,1,89,2,91,1,1053,}, + {1,1186,2,92,1,89,18,178,23,3,1,146,2,841,1,149,23,1,18,178,1,89,2,91,1,1053,}, + {1,1186,2,92,1,89,18,178,23,1,1,146,2,845,1,146,23,2,18,178,1,88,2,92,1,1053,}, + {1,1186,2,92,1,89,18,178,23,1,1,146,2,845,1,147,23,1,18,178,1,88,2,92,1,1053,}, + {1,1186,2,92,1,89,18,178,23,1,1,145,2,847,1,146,23,1,18,178,1,88,2,92,1,1053,}, + {1,1187,2,91,1,89,18,177,23,2,1,143,2,851,1,144,23,1,18,177,1,89,2,92,1,1053,}, + {1,1187,2,91,1,89,18,177,23,1,1,144,2,851,1,144,23,1,18,177,1,89,2,92,1,1053,}, + {1,1187,2,93,1,87,18,177,23,1,1,141,2,858,1,140,23,2,18,176,1,89,2,92,1,1053,}, + {1,1187,2,93,1,87,18,177,23,1,1,124,2,893,1,122,23,2,18,176,1,89,2,92,1,1053,}, + {1,1187,2,93,1,87,18,177,23,1,1,124,2,893,1,122,23,2,18,176,1,89,2,92,1,1053,}, + {1,1187,2,93,1,87,18,177,23,1,1,121,2,899,1,119,23,1,18,177,1,89,2,92,1,1053,}, + {1,1187,2,93,1,87,18,177,23,1,1,121,2,899,1,119,23,3,18,175,1,89,2,92,1,1053,}, + {1,1187,2,93,1,87,18,177,23,1,1,118,2,905,1,117,23,2,18,175,1,89,2,92,1,1053,}, + {1,1187,2,93,1,87,18,177,23,1,1,115,2,909,1,117,23,1,18,175,1,87,2,94,1,1053,}, + {1,1187,2,93,1,87,18,177,23,1,1,115,2,909,1,117,23,1,18,175,1,87,2,94,1,1053,}, + {1,1187,2,93,1,87,18,177,23,1,1,113,2,913,1,115,23,1,18,175,1,87,2,94,1,1053,}, + {1,1187,2,94,1,86,18,177,23,1,1,113,2,915,1,113,23,1,18,175,1,87,2,94,1,1053,}, + {1,1187,2,94,1,86,18,177,23,1,1,113,2,915,1,113,23,1,18,175,1,87,2,94,1,1053,}, + {1,1187,2,94,1,88,18,175,23,1,1,110,2,921,1,110,23,1,18,175,1,87,2,94,1,1053,}, + {1,1187,2,96,1,86,18,175,23,1,1,104,2,933,1,104,23,1,18,175,1,86,2,95,1,1053,}, + {1,1187,2,96,1,86,18,175,23,1,1,104,2,933,1,104,23,1,18,175,1,86,2,95,1,1053,}, + {1,1187,2,96,1,86,18,175,23,1,1,99,2,943,1,99,23,1,18,175,1,86,2,95,1,1053,}, + {1,1187,2,96,1,86,18,175,23,1,1,99,2,943,1,98,23,2,18,175,1,86,2,95,1,1053,}, + {1,1187,2,97,1,85,18,175,23,1,1,94,2,951,1,95,23,2,18,175,1,84,2,97,1,1053,}, + {1,1187,2,99,1,83,18,175,23,1,1,91,2,957,1,91,23,2,18,176,1,81,2,100,1,1053,}, + {1,1187,2,99,1,83,18,175,23,1,1,91,2,957,1,91,23,1,18,177,1,81,2,100,1,1053,}, + {1,1187,2,100,1,82,18,175,23,1,1,89,2,962,1,88,23,1,18,177,1,79,2,102,1,1053,}, + {1,1187,2,102,1,80,18,175,23,1,1,88,2,963,1,88,23,1,18,175,1,81,2,101,1,1054,}, + {1,1187,2,102,1,80,18,175,23,2,1,87,2,963,1,88,23,1,18,175,1,81,2,101,1,1054,}, + {1,1187,2,102,1,80,18,176,23,1,1,85,2,967,1,86,23,1,18,175,1,81,2,101,1,1054,}, + {1,1187,2,102,1,81,18,175,23,1,1,84,2,971,1,83,23,1,18,175,1,80,2,102,1,1054,}, + {1,1187,2,102,1,81,18,175,23,1,1,84,2,971,1,83,23,1,18,175,1,80,2,102,1,1054,}, + {1,1187,2,104,1,79,18,175,23,3,1,76,2,983,1,77,23,1,18,175,1,80,2,102,1,1054,}, + {1,1187,2,104,1,79,18,177,23,1,1,72,2,990,1,73,23,2,18,174,1,81,2,102,1,1054,}, + {1,1187,2,104,1,79,18,177,23,1,1,72,2,990,1,72,23,2,18,175,1,81,2,102,1,1054,}, + {1,1187,2,104,1,81,18,175,23,1,1,71,2,993,1,70,23,1,18,176,1,79,2,104,1,1054,}, + {1,1187,2,104,1,81,18,175,23,3,1,69,2,993,1,69,23,2,18,176,1,79,2,104,1,1054,}, + {1,1189,2,102,1,81,18,177,23,2,1,65,2,997,1,67,23,2,18,177,1,79,2,104,1,1054,}, + {1,1189,2,103,1,81,18,177,23,1,1,65,2,999,1,64,23,2,18,176,1,81,2,104,1,1054,}, + {1,1189,2,103,1,81,18,177,23,3,1,63,2,999,1,63,23,2,18,177,1,81,2,104,1,1054,}, + {1,1189,2,103,1,83,18,177,23,2,1,60,2,1002,1,61,23,2,18,176,1,83,2,104,1,1054,}, + {1,1189,2,103,1,85,18,176,23,1,1,59,2,1005,1,59,23,1,18,176,1,84,2,104,1,1054,}, + {1,1189,2,103,1,85,18,176,23,1,1,59,2,1005,1,58,23,2,18,176,1,84,2,104,1,1054,}, + {1,1189,2,103,1,85,18,176,23,1,1,55,2,1010,1,57,23,1,18,177,1,83,2,105,1,1054,}, + {1,1189,2,105,1,83,18,176,23,1,1,54,2,1015,1,52,23,2,18,175,1,85,2,105,1,1054,}, + {1,1189,2,105,1,83,18,176,23,1,1,54,2,1015,1,52,23,1,18,176,1,85,2,105,1,1054,}, + {1,1189,2,105,1,84,18,175,23,1,1,49,2,1023,1,49,23,1,18,176,1,85,2,105,1,1054,}, + {1,1189,2,105,1,84,18,175,23,3,1,47,2,1023,1,47,23,3,18,176,1,85,2,105,1,1054,}, + {1,1189,2,106,1,83,18,177,23,1,1,44,2,1030,1,42,23,2,18,178,1,83,2,107,1,1054,}, + {1,1189,2,106,1,83,18,177,23,1,1,43,2,1033,1,39,23,1,18,179,1,83,2,108,1,1054,}, + {1,1189,2,106,1,83,18,177,23,2,1,42,2,1033,1,38,23,2,18,179,1,83,2,108,1,1054,}, + {1,1189,2,109,1,82,18,176,23,1,1,40,2,1035,1,36,23,2,18,181,1,81,2,110,1,1054,}, + {1,1189,2,111,1,80,18,176,23,4,1,37,2,1036,1,34,23,2,18,182,1,80,2,111,1,1054,}, + {1,1189,2,111,1,80,18,179,23,2,1,36,2,1036,1,33,23,2,18,183,1,80,2,111,1,1054,}, + {1,1189,2,111,1,80,18,180,23,1,1,34,2,1040,1,30,23,2,18,184,1,78,2,111,1,1056,}, + {1,1189,2,112,1,79,18,180,23,1,1,31,2,1045,1,25,23,4,18,185,1,78,2,111,1,1056,}, + {1,1189,2,112,1,79,18,180,23,4,1,28,2,1045,1,24,23,2,18,188,1,78,2,111,1,1056,}, + {1,1189,2,112,1,79,18,183,23,1,1,24,2,1053,1,19,23,2,18,189,1,76,2,113,1,1056,}, + {1,1190,2,113,1,77,18,183,23,1,1,22,2,1058,1,13,23,3,18,189,1,78,2,113,1,1056,}, + {1,1190,2,113,1,77,18,184,23,2,1,20,2,1058,1,12,23,2,18,191,1,78,2,113,1,1056,}, + {1,1190,2,113,1,77,18,185,23,2,1,17,2,1060,1,10,23,3,18,192,1,78,2,113,1,1056,}, + {1,1190,2,113,1,77,18,186,23,1,1,17,2,1060,23,7,1,3,23,2,18,193,1,78,2,113,1,1056,}, + {1,1190,2,113,1,78,18,185,23,3,1,15,2,1062,23,1,18,3,23,5,18,194,1,78,2,113,1,1056,}, + {1,1190,2,113,1,78,18,187,23,3,1,12,2,1063,18,203,1,77,2,114,1,1056,}, + {1,1190,2,113,1,78,18,189,23,10,1,3,2,1063,18,203,1,77,2,114,1,1056,}, + {1,1190,2,113,1,78,18,193,23,2,18,3,23,2,1,2,2,1063,18,202,1,78,2,112,1,1058,}, + {1,1192,2,113,1,78,18,197,23,1,2,1066,18,201,1,78,2,112,1,1058,}, + {1,1192,2,113,1,78,18,197,23,1,2,1066,18,201,1,78,2,112,1,1058,}, + {1,1192,2,113,1,78,18,197,2,1068,18,198,1,80,2,112,1,1058,}, + {1,1194,2,111,1,79,18,195,2,1070,18,197,1,78,2,113,1,1059,}, + {1,1194,2,111,1,79,18,195,2,1071,18,196,1,78,2,113,1,1059,}, + {1,1195,2,111,1,80,18,192,2,1072,18,193,1,81,2,111,1,1061,}, + {1,1195,2,111,1,80,18,192,2,1073,18,192,1,81,2,111,1,1061,}, + {1,1197,2,109,1,81,18,190,2,1075,18,189,1,82,2,111,1,1062,}, + {1,1197,2,111,1,81,18,188,2,1075,18,189,1,82,2,109,1,1064,}, + {1,1197,2,111,1,81,18,187,2,1077,18,188,1,82,2,109,1,1064,}, + {1,1198,2,111,1,82,18,185,2,1077,18,187,1,81,2,111,1,1064,}, + {1,1198,2,113,1,80,18,184,2,1079,18,186,1,78,2,114,1,1064,}, + {1,1198,2,113,1,80,18,184,2,1079,18,186,1,78,2,114,1,1064,}, + {1,1198,2,114,1,79,18,183,2,1081,18,183,1,80,2,113,1,1065,}, + {1,1200,2,114,1,78,18,182,2,1081,18,183,1,78,2,115,1,1065,}, + {1,1200,2,114,1,78,18,181,2,1083,18,182,1,78,2,115,1,1065,}, + {1,1200,2,114,1,78,18,181,2,1083,18,182,1,78,2,115,1,1065,}, + {1,1200,2,114,1,78,18,180,2,1085,18,181,1,77,2,116,1,1065,}, + {1,1200,2,114,1,78,18,179,2,1086,18,181,1,77,2,116,1,1065,}, + {1,1200,2,116,1,76,18,179,2,1087,18,179,1,78,2,116,1,1065,}, + {1,1200,2,116,1,76,18,178,2,1088,18,179,1,78,2,116,1,1065,}, + {1,1200,2,116,1,78,18,175,2,1090,18,178,1,78,2,114,1,1067,}, + {1,1200,2,116,1,78,18,174,2,1092,18,177,1,78,2,114,1,1067,}, + {1,1200,2,116,1,78,18,174,2,1093,18,176,1,78,2,114,1,1067,}, + {1,1201,2,115,1,79,18,172,2,1094,18,174,1,78,2,116,1,1067,}, + {1,1201,2,116,1,80,18,170,2,1095,18,172,1,79,2,116,1,1067,}, + {1,1201,2,116,1,80,18,169,2,1096,18,172,1,79,2,116,1,1067,}, + {1,1201,2,116,1,81,18,168,2,1097,18,169,1,81,2,116,1,1067,}, + {1,1201,2,118,1,81,18,165,2,1098,18,166,1,83,2,117,1,1067,}, + {1,1201,2,118,1,81,18,165,2,1099,18,165,1,83,2,117,1,1067,}, + {1,1201,2,118,1,83,18,162,2,1100,18,165,1,81,2,119,1,1067,}, + {1,1201,2,118,1,83,18,162,2,1101,18,164,1,81,2,119,1,1067,}, + {1,1201,2,119,1,83,18,160,2,1102,18,162,1,83,2,117,1,1069,}, + {1,1203,2,120,1,80,18,159,2,1104,18,160,1,81,2,120,1,1069,}, + {1,1203,2,120,1,80,18,159,2,1104,18,160,1,81,2,120,1,1069,}, + {1,1203,2,120,1,82,18,156,2,1106,18,159,1,80,2,120,1,1070,}, + {1,1206,2,119,1,80,18,155,2,1108,18,158,1,80,2,118,1,1072,}, + {1,1206,2,119,1,80,18,154,2,1110,18,157,1,80,2,118,1,1072,}, + {1,1208,2,117,1,80,18,154,2,1110,18,155,1,80,2,119,1,1073,}, + {1,1209,2,118,1,79,18,152,2,1112,18,154,1,80,2,117,1,1075,}, + {1,1209,2,118,1,79,18,152,2,1112,18,154,1,80,2,117,1,1075,}, + {1,1209,2,118,1,79,18,151,2,1114,18,152,1,81,2,116,1,1076,}, + {1,1211,2,116,1,81,18,148,2,1115,18,152,1,79,2,118,1,1076,}, + {1,1211,2,116,1,81,18,148,2,1116,18,151,1,79,2,118,1,1076,}, + {1,1211,2,117,1,83,18,144,2,1118,18,147,1,82,2,116,1,1078,}, + {1,1211,2,117,1,83,18,143,2,1119,18,147,1,82,2,116,1,1078,}, + {1,1211,2,117,1,84,18,142,2,1120,18,142,1,86,2,116,1,1078,}, + {1,1212,2,116,1,86,18,139,2,1122,18,141,1,86,2,116,1,1078,}, + {1,1212,2,116,1,86,18,139,2,1122,18,141,1,86,2,116,1,1078,}, + {1,1212,2,116,1,88,18,136,2,1124,18,139,1,86,2,117,1,1078,}, + {1,1212,2,118,1,86,18,136,2,1125,18,138,1,86,2,117,1,1078,}, + {1,1212,2,118,1,86,18,135,2,1126,18,138,1,86,2,117,1,1078,}, + {1,1212,2,118,1,86,18,135,2,1127,18,135,1,86,2,119,1,1078,}, + {1,1212,2,119,1,86,18,133,2,1128,18,135,1,85,2,119,1,1079,}, + {1,1212,2,119,1,86,18,133,2,1129,18,134,1,85,2,119,1,1079,}, + {1,1214,2,119,1,84,18,132,2,1131,18,132,1,84,2,121,1,1079,}, + {1,1214,2,119,1,84,18,131,2,1132,18,132,1,84,2,121,1,1079,}, + {1,1214,2,122,1,83,18,128,2,1134,18,129,1,85,2,122,1,1079,}, + {1,1216,2,120,1,87,18,124,2,1135,18,125,1,86,2,122,1,1081,}, + {1,1216,2,120,1,87,18,123,2,1137,18,124,1,86,2,122,1,1081,}, + {1,1217,2,120,1,88,18,121,2,1137,18,121,1,89,2,120,1,1083,}, + {1,1220,2,117,1,90,18,118,2,1139,18,120,1,87,2,119,1,1086,}, + {1,1220,2,117,1,90,18,118,2,1140,18,119,1,87,2,119,1,1086,}, + {1,1222,2,117,1,89,18,116,2,1141,18,117,1,89,2,118,1,1087,}, + {1,1222,2,117,1,89,18,115,2,1142,18,117,1,89,2,116,1,1089,}, + {1,1222,2,117,1,89,18,114,2,1144,18,116,1,89,2,116,1,1089,}, + {1,1223,2,116,1,91,18,111,2,1145,18,115,1,89,2,117,1,1089,}, + {1,1223,2,116,1,91,18,111,2,1146,18,114,1,89,2,117,1,1089,}, + {1,1223,2,116,1,91,18,110,2,1147,18,112,1,91,2,117,1,1089,}, + {1,1225,2,116,1,92,18,107,2,1148,18,110,1,92,2,116,1,1090,}, + {1,1225,2,116,1,92,18,106,2,1149,18,110,1,92,2,116,1,1090,}, + {1,1225,2,116,1,97,18,101,2,1150,18,104,1,97,2,116,1,1090,}, + {1,1225,2,117,1,97,18,99,2,1151,18,101,1,98,2,118,1,1090,}, + {1,1225,2,117,1,97,18,99,2,1152,18,100,1,98,2,118,1,1090,}, + {1,1225,2,117,1,99,18,96,2,1153,18,100,1,97,2,117,1,1092,}, + {1,1226,2,118,1,98,18,95,2,1154,18,97,1,99,2,117,1,1092,}, + {1,1226,2,118,1,98,18,94,2,1155,18,97,1,99,2,117,1,1092,}, + {1,1226,2,121,1,95,18,94,2,1156,18,95,1,97,2,120,1,1092,}, + {1,1226,2,122,1,96,18,92,2,1156,18,93,1,97,2,120,1,1094,}, + {1,1226,2,122,1,96,18,92,2,1157,18,92,1,97,2,120,1,1094,}, + {1,1228,2,120,1,100,18,87,2,1158,18,87,1,100,2,121,1,1095,}, + {1,1228,2,120,1,100,18,87,2,1159,18,86,1,100,2,121,1,1095,}, + {1,1231,2,119,1,103,18,81,2,1160,18,83,1,103,2,118,1,1098,}, + {1,1233,2,117,1,106,18,78,2,1161,18,79,1,106,2,116,1,1100,}, + {1,1233,2,117,1,106,18,77,2,1162,18,79,1,106,2,116,1,1100,}, + {1,1234,2,116,1,108,18,75,2,1163,18,75,1,108,2,117,1,1100,}, + {1,1234,2,118,1,107,18,73,2,1164,18,73,1,110,2,116,1,1101,}, + {1,1234,2,118,1,107,18,73,2,1165,18,72,1,110,2,116,1,1101,}, + {1,1236,2,116,1,109,18,70,2,1166,18,71,1,111,2,116,1,1101,}, + {1,1236,2,116,1,111,18,68,2,1167,18,68,1,111,2,118,1,1101,}, + {1,1236,2,116,1,111,18,67,2,1169,18,67,1,111,2,118,1,1101,}, + {1,1236,2,117,1,113,18,64,2,1170,18,65,1,112,2,116,1,1103,}, + {1,1236,2,117,1,113,18,63,2,1171,18,65,1,112,2,116,1,1103,}, + {1,1237,2,116,1,114,18,62,2,1172,18,61,1,114,2,117,1,1103,}, + {1,1239,2,116,1,123,18,50,2,1173,18,51,1,124,2,115,1,1105,}, + {1,1239,2,116,1,123,18,49,2,1175,18,50,1,124,2,115,1,1105,}, + {1,1241,2,115,1,128,18,42,2,1176,18,44,1,128,2,114,1,1108,}, + {1,1244,2,114,1,130,18,38,2,1177,18,40,1,128,2,114,1,1111,}, + {1,1244,2,114,1,130,18,37,2,1180,18,38,1,128,2,114,1,1111,}, + {1,1245,2,116,1,128,18,36,2,1180,18,36,1,129,2,115,1,1111,}, + {1,1247,2,114,1,133,18,30,2,1182,18,30,1,134,2,114,1,1112,}, + {1,1247,2,114,1,133,18,29,2,1183,18,27,1,137,2,114,1,1112,}, + {1,1247,2,115,1,133,18,28,2,1184,18,22,1,139,2,114,1,1114,}, + {1,1248,2,114,1,135,18,26,2,1185,18,18,1,142,2,114,1,1114,}, + {1,1248,2,114,1,137,18,23,2,1186,18,16,1,144,2,114,1,1114,}, + {1,1248,2,114,1,137,18,23,2,1187,18,12,1,145,2,115,1,1115,}, + {1,1248,2,114,1,138,18,21,2,1188,18,10,1,147,2,115,1,1115,}, + {1,1250,2,112,1,140,18,19,2,1189,18,8,1,148,2,113,1,1117,}, + {1,1251,2,113,1,139,18,18,2,1189,18,6,1,150,2,113,1,1117,}, + {1,1251,2,113,1,141,18,16,2,1189,18,6,1,150,2,113,1,1117,}, + {1,1253,2,111,1,143,18,13,2,1190,18,6,1,150,2,110,1,1120,}, + {1,1256,2,110,1,143,18,10,2,1192,18,5,1,149,2,109,1,1122,}, + {1,1256,2,110,1,145,18,8,2,1192,18,5,1,149,2,109,1,1122,}, + {1,1258,2,108,1,146,18,7,2,1193,18,3,1,150,2,108,1,1123,}, + {1,1258,2,109,1,146,18,5,2,1195,1,150,2,108,1,1125,}, + {1,1258,2,109,1,150,2,1195,1,151,2,108,1,1125,}, + {1,1259,2,110,1,148,2,1196,1,149,2,109,1,1125,}, + {1,1259,2,110,1,148,2,1196,1,149,2,109,1,1125,}, + {1,1261,2,109,1,146,2,1199,1,145,2,110,1,1126,}, + {1,1262,2,110,1,144,2,1199,1,142,2,111,1,1128,}, + {1,1262,2,110,1,144,2,1199,1,142,2,111,1,1128,}, + {1,1262,2,111,1,143,2,1200,1,141,2,109,1,1130,}, + {1,1264,2,109,1,143,2,1200,1,139,2,110,1,1131,}, + {1,1264,2,109,1,143,2,1200,1,139,2,110,1,1131,}, + {1,1267,2,108,1,141,2,1200,1,139,2,108,1,1133,}, + {1,1269,2,106,1,141,2,1200,1,138,2,108,1,1134,}, + {1,1269,2,106,1,141,2,1200,1,138,2,108,1,1134,}, + {1,1270,2,107,1,139,2,1200,1,138,2,106,1,1136,}, + {1,1272,2,105,1,139,2,1202,1,136,2,105,1,1137,}, + {1,1272,2,105,1,139,2,1202,1,136,2,105,1,1137,}, + {1,1273,2,104,1,139,2,1202,1,134,2,105,1,1139,}, + {1,1273,2,104,1,139,2,1202,1,134,2,105,1,1139,}, + {1,1275,2,103,1,138,2,1202,1,134,2,104,1,1140,}, + {1,1276,2,104,1,136,2,1202,1,133,2,101,1,1144,}, + {1,1276,2,104,1,136,2,1202,1,133,2,101,1,1144,}, + {1,1278,2,103,1,135,2,1202,1,131,2,102,1,1145,}, + {1,1280,2,101,1,135,2,1202,1,130,2,101,1,1147,}, + {1,1280,2,101,1,135,2,1202,1,130,2,101,1,1147,}, + {1,1281,2,101,1,134,2,1202,1,129,2,101,1,1148,}, + {1,1283,2,100,1,133,2,1202,1,64,2,8,1,50,2,106,1,1150,}, + {1,1283,2,102,1,131,2,1202,1,64,2,8,1,48,2,108,1,1150,}, + {1,1284,2,102,1,130,2,1202,1,53,2,30,1,36,2,108,1,1151,}, + {1,1284,2,103,1,128,2,1203,1,53,2,30,1,35,2,109,1,1151,}, + {1,1286,2,102,1,127,2,1203,1,48,2,38,1,28,2,111,1,1153,}, + {1,1289,2,104,1,40,2,27,1,55,2,1203,1,33,2,61,1,18,2,111,1,1155,}, + {1,1289,2,106,1,30,2,40,1,50,2,1203,1,33,2,61,1,15,2,114,1,1155,}, + {1,1291,2,105,1,25,2,46,1,48,2,1203,1,30,2,70,1,4,2,118,1,1156,}, + {1,1292,2,106,1,9,2,64,1,44,2,1203,1,28,2,192,1,1158,}, + {1,1292,2,181,1,42,2,1203,1,18,2,202,1,1158,}, + {1,1294,2,187,1,34,2,1203,1,11,2,208,1,1159,}, + {1,1295,2,191,1,29,2,1203,1,9,2,208,1,1161,}, + {1,1295,2,193,1,26,2,1204,1,3,2,214,1,1161,}, + {1,1297,2,198,1,19,2,1420,1,1162,}, + {1,1298,2,204,1,12,2,1418,1,1164,}, + {1,1298,2,211,1,4,2,1419,1,1164,}, + {1,1301,2,136,21,1,2,1489,1,1169,}, + {1,1301,2,134,21,3,2,1489,1,1169,}, + {1,1305,2,128,21,5,2,1488,1,1170,}, + {1,1306,2,126,21,6,2,1486,1,1172,}, + {1,1306,2,126,21,6,2,1486,1,1172,}, + {1,1308,2,123,21,7,2,1485,1,1173,}, + {1,1308,2,122,21,8,2,1483,1,1175,}, + {1,1308,2,121,21,9,2,1483,1,1175,}, + {1,1309,2,120,21,9,2,1483,1,1175,}, + {1,1311,2,117,21,10,2,1482,1,1176,}, + {1,1311,2,116,21,11,2,1482,1,1176,}, + {1,1316,2,111,21,12,2,1474,1,1183,}, + {1,1316,2,111,21,13,2,1473,1,1183,}, + {1,1319,2,107,21,14,2,1470,1,1186,}, + {1,1320,2,106,21,15,2,1468,1,1187,}, + {1,1320,2,105,21,18,2,1466,1,1187,}, + {1,1322,2,103,21,19,2,1465,1,1187,}, + {1,1323,2,102,21,23,2,1459,1,1189,}, + {1,1323,2,102,21,27,2,1455,1,1189,}, + {1,1325,2,99,21,30,2,1452,1,1190,}, + {1,1328,2,95,21,34,2,1444,1,1195,}, + {1,1328,2,93,21,38,2,1442,1,1195,}, + {1,1333,2,87,21,41,2,1437,1,1198,}, + {1,1336,2,82,21,45,2,1432,1,1201,}, + {1,1336,2,81,21,48,2,1430,1,1201,}, + {1,1339,2,77,21,50,2,1425,1,1205,}, + {1,1339,2,76,21,52,2,1424,1,1205,}, + {1,1341,2,73,21,55,2,1421,1,1206,}, + {1,1341,2,72,21,57,2,1418,1,1208,}, + {1,1341,2,71,21,59,2,1417,1,1208,}, + {1,1342,2,70,21,61,2,1415,1,1208,}, + {1,1344,2,67,21,63,2,1413,1,1209,}, + {1,1344,2,66,21,65,2,1412,1,1209,}, + {1,1345,2,65,21,66,2,1408,1,1212,}, + {1,1350,2,59,21,68,2,1403,1,1216,}, + {1,1350,2,59,21,69,2,1402,1,1216,}, + {1,1355,2,54,21,69,2,1399,1,1219,}, + {1,1355,2,54,21,70,2,1397,1,1220,}, + {1,1356,2,52,21,72,2,1395,1,1221,}, + {1,1358,2,50,21,35,2,7,21,31,2,1393,1,1222,}, + {1,1358,2,50,21,35,2,11,21,27,2,1392,1,1223,}, + {1,1361,2,47,21,35,2,14,21,25,2,1390,1,1224,}, + {1,1362,2,46,21,19,2,3,21,13,2,17,21,23,2,1388,1,1225,}, + {1,1363,2,45,21,17,2,5,21,13,2,19,21,21,2,1387,1,1226,}, + {1,1364,2,44,21,15,2,8,21,12,2,21,21,20,2,1385,1,1227,}, + {1,1366,2,42,21,14,2,10,21,11,2,22,21,19,2,1384,1,1228,}, + {1,1368,2,39,21,13,2,13,21,10,2,24,21,18,2,1381,1,1230,}, + {1,1369,2,38,21,11,2,17,21,9,2,24,21,17,2,1380,1,1231,}, + {1,1370,2,36,21,11,2,19,21,9,2,25,21,15,2,1379,1,1232,}, + {1,1371,2,34,21,11,2,21,21,8,2,26,21,15,2,1376,1,1234,}, + {1,1372,2,33,21,10,2,24,21,7,2,26,21,14,2,1374,1,1236,}, + {1,1374,2,31,21,9,2,28,21,5,2,26,21,13,2,1373,1,1237,}, + {1,1375,2,29,21,9,2,61,21,12,2,1372,1,1238,}, + {1,1376,2,28,21,7,2,64,21,12,2,1370,1,1239,}, + {1,1377,2,27,21,6,2,66,21,11,2,1368,1,1241,}, + {1,1378,2,26,21,5,2,68,21,10,2,1365,1,1244,}, + {1,1380,2,23,21,5,2,70,21,9,2,1364,1,1245,}, + {1,1382,2,21,21,4,2,72,21,12,2,1359,1,1246,}, + {1,1382,2,21,21,3,2,73,21,15,2,1354,1,1248,}, + {1,1383,2,21,21,1,2,74,21,16,2,1352,1,1249,}, + {1,1384,2,94,21,19,2,1349,1,1250,}, + {1,1385,2,92,21,21,2,1346,1,1252,}, + {1,1386,2,90,21,23,2,1343,1,1254,}, + {1,1388,2,88,21,24,2,1341,1,1255,}, + {1,1392,2,83,21,11,2,2,21,13,2,1339,1,1256,}, + {1,1392,2,82,21,9,2,6,21,12,2,1338,1,1257,}, + {1,1394,2,80,21,9,2,12,21,7,2,1336,1,1258,}, + {1,1394,2,79,21,10,2,14,21,5,2,1335,1,1259,}, + {1,1394,2,79,21,9,2,17,21,3,2,1334,1,1260,}, + {1,1395,2,78,21,7,2,20,21,2,2,1332,1,1262,}, + {1,1400,2,73,21,6,2,1350,1,1267,}, + {1,1400,2,73,21,5,2,1351,1,1267,}, + {1,1403,2,70,21,4,2,1350,1,1269,}, + {1,1403,2,70,21,4,2,1350,1,1269,}, + {1,1233,2,25,1,147,2,68,21,3,2,1350,1,147,2,26,1,1097,}, + {1,1186,2,122,1,97,2,68,21,3,2,1350,1,95,2,124,1,1051,}, + {1,1186,2,122,1,97,2,68,21,2,2,1351,1,95,2,124,1,1051,}, + {1,1176,2,141,1,89,2,1418,1,88,2,142,1,1042,}, + {1,1173,2,149,1,84,2,1417,1,84,2,150,1,1039,}, + {1,1173,2,149,1,84,2,1417,1,84,2,150,1,1039,}, + {1,1170,2,155,1,84,2,1412,1,85,2,154,1,1036,}, + {1,1169,2,158,1,89,2,1399,1,87,2,160,1,1034,}, + {1,1169,2,158,1,89,2,1399,1,87,2,160,1,1034,}, + {1,1167,2,163,1,90,2,1389,1,92,2,162,1,1033,}, + {1,1164,2,169,1,94,2,1377,1,94,2,169,1,1029,}, + {1,1164,2,169,1,94,2,1377,1,94,2,169,1,1029,}, + {1,1155,2,187,1,88,2,1371,1,87,2,186,1,1022,}, + {1,1155,2,187,1,88,2,1371,1,87,2,186,1,1022,}, + {1,1142,2,220,1,69,2,1368,1,69,2,219,1,1009,}, + {1,1140,2,224,1,69,2,1365,1,67,2,225,1,1006,}, + {1,1140,2,224,1,69,2,1365,1,67,2,171,21,1,2,53,1,1006,}, + {1,1139,2,228,1,69,2,1359,1,68,2,171,21,3,2,55,1,1004,}, + {1,1137,2,232,1,70,2,1351,1,72,2,170,21,5,2,56,1,1003,}, + {1,1137,2,232,1,70,2,1287,1,15,2,49,1,72,2,169,21,6,2,56,1,1003,}, + {1,1136,2,234,1,86,2,28,1,4,2,1236,1,22,2,27,1,87,2,170,21,7,2,56,1,1003,}, + {1,1134,2,238,1,106,2,2,1,22,2,1221,1,26,2,2,1,108,2,170,21,8,2,58,1,1001,}, + {1,1134,2,29,21,1,2,208,1,106,2,2,1,27,2,1215,1,27,2,2,1,108,2,170,21,8,2,58,1,1001,}, + {1,1131,2,30,21,3,2,211,1,135,2,1211,1,133,2,174,21,9,2,61,1,998,}, + {1,1131,2,28,21,5,2,211,1,136,2,1209,1,134,2,173,21,10,2,61,1,998,}, + {1,1128,2,30,21,6,2,222,1,126,2,1207,1,124,2,184,21,10,2,65,1,994,}, + {1,1123,2,34,21,7,2,231,1,119,2,1203,1,117,2,192,21,11,2,70,1,989,}, + {1,1123,2,33,21,8,2,231,1,119,2,1202,1,118,2,192,21,12,2,69,1,989,}, + {1,1120,2,36,21,8,2,234,1,116,2,1202,1,116,2,193,21,14,2,71,1,986,}, + {1,1119,2,36,21,9,2,236,1,114,2,1201,1,115,2,195,21,14,2,73,1,984,}, + {1,1119,2,35,21,10,2,236,1,114,2,1201,1,115,2,194,21,16,2,72,1,984,}, + {1,1117,2,37,21,10,2,238,1,114,2,1199,1,114,2,195,21,17,2,71,1,984,}, + {1,1117,2,36,21,11,2,239,1,114,2,1196,1,114,2,197,21,19,2,70,1,983,}, + {1,1117,2,36,21,12,2,238,1,114,2,1196,1,114,2,197,21,22,2,67,1,983,}, + {1,1117,2,35,21,14,2,239,1,114,2,1191,1,116,2,198,21,26,2,63,1,983,}, + {1,1117,2,35,21,14,2,245,1,109,2,1190,1,110,2,203,21,30,2,60,1,983,}, + {1,1117,2,34,21,16,2,244,1,109,2,1190,1,110,2,202,21,33,2,58,1,983,}, + {1,1115,2,36,21,17,2,254,1,100,2,1187,1,100,2,212,21,36,2,58,1,981,}, + {1,1115,2,36,21,19,2,252,1,100,2,1187,1,100,2,210,21,40,2,56,1,981,}, + {1,1115,2,36,21,22,2,249,1,100,2,1187,1,98,2,210,21,45,2,53,1,981,}, + {1,1114,2,37,21,26,2,250,1,95,2,1185,1,100,2,209,21,48,2,51,1,981,}, + {1,1114,2,36,21,30,2,249,1,93,2,1185,1,100,2,208,21,50,2,50,1,981,}, + {1,1114,2,35,21,33,2,248,1,93,2,1184,1,100,2,207,21,53,2,50,1,979,}, + {1,1114,2,34,21,36,2,248,1,91,2,1184,1,98,2,208,21,55,2,49,1,979,}, + {1,1113,2,33,21,40,2,248,1,89,2,1184,1,96,2,209,21,57,2,48,1,979,}, + {1,1111,2,33,21,45,2,248,1,86,2,1184,1,94,2,210,21,60,2,46,1,979,}, + {1,1109,2,34,21,48,2,248,1,84,2,1184,1,93,2,210,21,62,2,45,1,979,}, + {1,1108,2,34,21,50,2,248,1,83,2,1184,1,92,2,211,21,63,2,44,1,979,}, + {1,1107,2,34,21,53,2,247,1,82,2,1184,1,91,2,211,21,65,2,44,1,978,}, + {1,1106,2,34,21,55,2,247,1,81,2,1184,1,90,2,212,21,66,2,45,1,976,}, + {1,1105,2,34,21,57,2,251,1,1,2,46,1,29,2,1182,1,30,2,47,1,15,2,211,21,68,2,47,1,973,}, + {1,1104,2,34,21,60,2,300,1,25,2,1182,1,29,2,53,1,2,2,219,21,69,2,48,1,971,}, + {1,1102,2,35,21,62,2,301,1,23,2,1182,1,29,2,273,21,71,2,48,1,970,}, + {1,1100,2,37,21,63,2,303,1,20,2,1182,1,17,2,285,21,72,2,48,1,969,}, + {1,1099,2,37,21,65,2,304,1,20,2,1180,1,7,2,295,21,73,2,48,1,968,}, + {1,1098,2,38,21,66,2,306,1,17,2,1180,1,2,2,299,21,74,2,49,1,967,}, + {1,1097,2,38,21,68,2,310,1,12,2,1481,21,37,2,6,21,32,2,50,1,965,}, + {1,1096,2,39,21,69,2,314,1,7,2,1481,21,36,2,11,21,29,2,50,1,964,}, + {1,1095,2,39,21,71,2,318,1,2,2,1481,21,36,2,14,21,26,2,51,1,963,}, + {1,1094,2,40,21,72,2,1800,21,20,2,2,21,14,2,17,21,24,2,51,1,962,}, + {1,1093,2,41,21,73,2,1799,21,18,2,5,21,13,2,19,21,22,2,53,1,960,}, + {1,1092,2,41,21,74,2,1799,21,16,2,8,21,12,2,21,21,21,2,53,1,959,}, + {1,1091,2,42,21,37,2,6,21,32,2,1798,21,14,2,11,21,11,2,23,21,19,2,54,1,958,}, + {1,1090,2,43,21,36,2,11,21,29,2,1797,21,13,2,13,21,11,2,23,21,19,2,54,1,957,}, + {1,1089,2,44,21,36,2,14,21,26,2,1796,21,12,2,16,21,10,2,25,21,17,2,55,1,956,}, + {1,1088,2,45,21,20,2,2,21,14,2,17,21,24,2,1794,21,12,2,18,21,10,2,25,21,17,2,55,1,955,}, + {1,1087,2,46,21,18,2,5,21,13,2,19,21,22,2,1794,21,11,2,21,21,8,2,26,21,16,2,58,1,952,}, + {1,1086,2,47,21,16,2,8,21,12,2,21,21,21,2,1792,21,10,2,25,21,7,2,27,21,14,2,60,1,950,}, + {1,1081,2,52,21,14,2,11,21,11,2,23,21,19,2,1792,21,9,2,28,21,6,2,27,21,14,2,61,1,948,}, + {1,1081,2,52,21,13,2,13,21,11,2,23,21,19,2,1790,21,9,2,32,21,4,2,27,21,13,2,61,1,948,}, + {1,1081,2,51,21,12,2,16,21,10,2,25,21,17,2,1790,21,8,2,65,21,12,2,62,1,947,}, + {1,1078,2,53,21,12,2,18,21,10,2,25,21,17,2,1789,21,7,2,67,21,11,2,66,1,943,}, + {1,1078,2,53,21,11,2,21,21,8,2,26,21,16,2,1789,21,6,2,69,21,10,2,66,1,943,}, + {1,1075,2,55,21,10,2,25,21,7,2,27,21,14,2,1788,21,6,2,71,21,9,2,67,1,942,}, + {1,1075,2,55,21,9,2,28,21,6,2,27,21,14,2,1787,21,5,2,73,21,10,2,65,1,942,}, + {1,1072,2,57,21,9,2,32,21,4,2,27,21,13,2,1787,21,4,2,74,21,14,2,64,1,939,}, + {1,1070,2,59,21,8,2,65,21,12,2,1788,21,2,2,76,21,15,2,64,1,937,}, + {1,1070,2,59,21,7,2,67,21,11,2,1865,21,18,2,62,1,937,}, + {1,1070,2,59,21,6,2,69,21,10,2,1864,21,20,2,62,1,936,}, + {1,1069,2,59,21,6,2,71,21,9,2,1863,21,22,2,61,1,936,}, + {1,1069,2,59,21,5,2,73,21,10,2,1860,21,24,2,60,1,936,}, + {1,1069,2,59,21,4,2,74,21,14,2,1855,21,12,2,1,21,13,2,61,1,934,}, + {1,1067,2,62,21,2,2,76,21,15,2,1853,21,9,2,1,21,1,2,3,21,13,2,61,1,933,}, + {1,1067,2,139,21,18,2,1850,21,10,2,6,21,12,2,61,1,933,}, + {1,1064,2,141,21,20,2,1849,21,10,2,12,21,7,2,64,1,929,}, + {1,1064,2,140,21,22,2,1848,21,9,2,15,21,5,2,64,1,929,}, + {1,1059,2,144,21,24,2,1846,21,9,2,18,21,3,2,68,1,925,}, + {1,1058,2,144,21,12,2,1,21,13,2,1845,21,7,2,93,1,923,}, + {1,1058,2,144,21,9,2,1,21,1,2,3,21,13,2,1844,21,6,2,94,1,923,}, + {1,1056,2,145,21,10,2,6,21,12,2,1844,21,5,2,95,1,923,}, + {1,1056,2,145,21,10,2,12,21,7,2,1843,21,5,2,96,1,922,}, + {1,1056,2,145,21,9,2,15,21,5,2,1843,21,4,2,97,1,922,}, + {1,1054,2,146,21,9,2,18,21,3,2,1843,21,3,2,98,1,922,}, + {1,1054,2,146,21,7,2,1866,21,3,2,100,1,920,}, + {1,1054,2,146,21,6,2,1867,21,2,2,101,1,920,}, + {1,1051,2,149,21,5,2,1974,1,917,}, + {1,1048,2,152,21,5,2,1977,1,914,}, + {1,1048,2,152,21,4,2,1978,1,914,}, + {1,1045,2,155,21,3,2,1981,1,912,}, + {1,1045,2,155,21,3,2,1981,1,912,}, + {1,1045,2,155,21,2,2,43,1,61,2,1618,1,60,2,201,1,911,}, + {1,1044,2,162,1,139,2,1539,1,139,2,162,1,911,}, + {1,1044,2,162,1,139,2,1539,1,139,2,162,1,911,}, + {1,1044,2,95,1,3,2,44,1,186,2,17,1,6,2,1460,1,190,2,43,1,3,2,96,1,909,}, + {1,1042,2,89,1,25,2,2,1,239,2,1445,1,231,2,1,1,20,2,93,1,909,}, + {1,1042,2,87,1,27,2,2,1,242,2,1440,1,233,2,1,1,22,2,91,1,909,}, + {1,1042,2,82,1,278,2,1430,1,269,2,87,1,908,}, + {1,1039,2,82,1,284,2,1426,1,271,2,90,1,904,}, + {1,1039,2,81,1,287,2,1422,1,275,2,88,1,904,}, + {1,1036,2,82,1,290,2,1419,1,281,2,87,1,901,}, + {1,1036,2,81,1,292,2,1417,1,284,2,85,1,901,}, + {1,1034,2,82,1,294,2,1414,1,287,2,85,1,900,}, + {1,1033,2,82,1,297,2,1410,1,291,2,83,1,900,}, + {1,1033,2,81,1,300,2,1407,1,293,2,82,1,900,}, + {1,1033,2,81,1,301,2,1405,1,295,2,83,1,898,}, + {1,1033,2,80,1,304,2,1402,1,297,2,82,1,898,}, + {1,1033,2,80,1,306,2,1399,1,299,2,81,1,898,}, + {1,1031,2,81,1,308,2,1396,1,302,2,80,1,898,}, + {1,1031,2,80,1,311,2,1392,1,305,2,80,1,897,}, + {1,1031,2,80,1,312,2,1390,1,307,2,79,1,897,}, + {1,1029,2,82,1,313,2,1388,1,308,2,81,1,895,}, + {1,1028,2,81,1,316,2,1385,1,310,2,83,1,893,}, + {1,1028,2,81,1,316,2,1384,1,311,2,83,1,893,}, + {1,1025,2,84,1,317,2,1382,1,313,2,85,1,890,}, + {1,1025,2,84,1,318,2,1380,1,314,2,85,1,890,}, + {1,1023,2,85,1,319,2,1379,1,315,2,86,1,889,}, + {1,1022,2,84,1,322,2,1377,1,319,2,83,1,889,}, + {1,1022,2,84,1,322,2,1376,1,320,2,83,1,889,}, + {1,1022,2,81,1,325,2,1375,1,323,2,83,1,887,}, + {1,1022,2,79,1,329,2,1372,1,326,2,81,1,887,}, + {1,1022,2,79,1,329,2,1371,1,327,2,81,1,887,}, + {1,1020,2,81,1,330,2,1368,1,330,2,80,1,887,}, + {1,1020,2,80,1,333,2,1365,1,331,2,81,1,886,}, + {1,1020,2,80,1,333,2,1365,1,331,2,81,1,886,}, + {1,1020,2,80,1,334,2,1362,1,335,2,79,1,886,}, + {1,1020,2,80,1,334,2,1362,1,335,2,79,1,886,}, + {1,1019,2,81,1,336,2,1359,1,336,2,81,1,884,}, + {1,1017,2,81,1,340,2,1353,1,340,2,81,1,884,}, + {1,1017,2,81,1,340,2,1353,1,340,2,81,1,884,}, + {1,1017,2,81,1,343,2,1349,1,342,2,81,1,883,}, + {1,1014,2,83,1,348,2,1340,1,349,2,81,1,881,}, + {1,1014,2,83,1,348,2,1340,1,349,2,81,1,881,}, + {1,1012,2,83,1,358,2,1324,1,358,2,83,1,878,}, + {1,1011,2,81,1,363,2,1319,1,364,2,82,1,876,}, + {1,1011,2,81,1,363,2,1319,1,364,2,82,1,876,}, + {1,1009,2,81,1,368,2,1315,1,365,2,82,1,876,}, + {1,1009,2,81,1,369,2,1310,1,371,2,81,1,875,}, + {1,1009,2,81,1,369,2,1310,1,371,2,81,1,875,}, + {1,1009,2,80,1,374,2,1305,1,374,2,79,1,875,}, + {1,1009,2,80,1,374,2,1305,1,374,2,79,1,875,}, + {1,1008,2,79,1,379,2,1297,1,379,2,79,1,875,}, + {1,1008,2,79,1,386,2,1282,1,388,2,78,1,875,}, + {1,1008,2,79,1,386,2,1282,1,388,2,78,1,875,}, + {1,1008,2,78,1,398,2,1260,1,399,2,80,1,873,}, + {1,1008,2,78,1,406,2,1246,1,407,2,78,1,873,}, + {1,1008,2,78,1,406,2,1246,1,407,2,78,1,873,}, + {1,1008,2,76,1,411,2,1239,1,412,2,77,1,873,}, + {1,1006,2,77,1,415,2,1234,1,416,2,75,1,873,}, + {1,1006,2,77,1,415,2,1234,1,416,2,75,1,873,}, + {1,1006,2,73,1,423,2,1227,1,420,2,75,1,872,}, + {1,1006,2,73,1,423,2,1227,1,420,2,75,1,872,}, + {1,1004,2,74,1,428,2,1218,1,427,2,73,1,872,}, + {1,1004,2,74,1,433,2,1208,1,434,2,73,1,870,}, + {1,1004,2,74,1,433,2,1208,1,434,2,73,1,870,}, + {1,1001,2,75,1,449,2,1180,1,449,2,75,1,867,}, + {1,1000,2,75,1,463,2,1155,1,461,2,77,1,865,}, + {1,1000,2,75,1,463,2,1155,1,461,2,77,1,865,}, + {1,998,2,77,1,467,2,1146,1,468,2,75,1,865,}, + {1,998,2,77,1,472,2,1137,1,472,2,76,1,864,}, + {1,998,2,77,1,472,2,1137,1,472,2,76,1,864,}, + {1,997,2,76,1,477,2,1130,1,476,2,76,1,864,}, + {1,997,2,76,1,482,2,1122,1,480,2,75,1,864,}, + {1,997,2,76,1,482,2,1121,1,481,2,75,1,864,}, + {1,997,2,75,1,486,2,8,1,1,2,1107,1,485,2,75,1,862,}, + {1,997,2,75,1,486,2,8,1,6,2,1101,1,486,2,75,1,862,}, + {1,997,2,72,1,494,2,1,1,11,2,1079,1,12,2,2,1,494,2,72,1,862,}, + {1,997,2,70,1,510,2,1072,1,514,2,71,1,862,}, + {1,997,2,70,1,513,2,1064,1,519,2,71,1,862,}, + {1,997,2,68,1,517,2,1057,1,526,2,69,1,862,}, + {1,997,2,67,1,523,2,1047,1,531,2,69,1,862,}, + {1,997,2,67,1,526,2,1039,1,536,2,69,1,862,}, + {1,997,2,67,1,305,2,28,1,195,2,1032,1,208,2,31,1,304,2,67,1,862,}, + {1,997,2,67,1,295,2,39,1,52,2,22,1,125,2,1022,1,140,2,21,1,52,2,39,1,296,2,67,1,862,}, + {1,997,2,67,1,295,2,39,1,52,2,22,1,128,2,1018,1,141,2,21,1,52,2,39,1,296,2,67,1,862,}, + {1,995,2,67,1,293,2,43,1,43,2,42,1,119,2,1013,1,133,2,40,1,34,2,54,1,292,2,66,1,862,}, + {1,995,2,67,1,293,2,43,1,43,2,42,1,124,2,1008,1,133,2,40,1,24,2,64,1,292,2,66,1,862,}, + {1,995,2,67,1,290,2,51,1,33,2,53,1,126,2,998,1,128,2,52,1,14,2,72,1,289,2,66,1,862,}, + {1,995,2,66,1,287,2,68,1,17,2,61,1,123,2,995,1,123,2,147,1,288,2,65,1,861,}, + {1,995,2,66,1,287,2,75,1,10,2,61,1,125,2,993,1,123,2,147,1,288,2,65,1,861,}, + {1,995,2,61,1,291,2,79,1,4,2,70,1,120,2,990,1,119,2,155,1,289,2,62,1,861,}, + {1,995,2,59,1,288,2,164,1,116,2,986,1,115,2,167,1,286,2,59,1,861,}, + {1,995,2,59,1,288,2,164,1,116,2,986,1,115,2,167,1,286,2,59,1,861,}, + {1,995,2,58,1,280,2,189,1,100,2,985,1,102,2,189,1,278,2,59,1,861,}, + {1,995,2,58,1,270,2,211,1,90,2,983,1,87,2,213,1,271,2,57,1,861,}, + {1,995,2,58,1,270,2,211,1,90,2,983,1,87,2,213,1,271,2,57,1,861,}, + {1,994,2,57,1,269,2,221,1,84,2,979,1,84,2,222,1,268,2,57,1,861,}, + {1,994,2,57,1,269,2,221,1,84,2,979,1,84,2,222,1,268,2,57,1,861,}, + {1,994,2,57,1,266,2,177,21,1,2,50,1,83,2,974,1,83,2,228,1,266,2,58,1,859,}, + {1,992,2,58,1,266,2,176,21,3,2,54,1,81,2,969,1,81,2,235,1,264,2,58,1,859,}, + {1,992,2,58,1,266,2,174,21,5,2,54,1,81,2,969,1,81,2,235,1,264,2,58,1,859,}, + {1,992,2,58,1,262,2,177,21,6,2,57,1,81,2,965,1,79,2,241,1,263,2,58,1,857,}, + {1,990,2,57,1,264,2,177,21,7,2,60,1,79,2,962,1,80,2,244,1,262,2,58,1,856,}, + {1,990,2,57,1,264,2,176,21,8,2,60,1,79,2,962,1,80,2,244,1,262,2,58,1,856,}, + {1,989,2,55,1,264,2,179,21,8,2,64,1,77,2,958,1,75,2,254,1,262,2,57,1,854,}, + {1,987,2,57,1,256,2,186,21,9,2,75,1,68,2,953,1,67,2,273,1,256,2,55,1,854,}, + {1,987,2,57,1,256,2,185,21,10,2,75,1,68,2,953,1,67,2,273,1,256,2,55,1,854,}, + {1,987,2,55,1,255,2,188,21,10,2,85,1,59,2,951,1,59,2,285,1,254,2,55,1,853,}, + {1,987,2,53,1,254,2,190,21,11,2,89,1,57,2,947,1,56,2,293,1,251,2,55,1,853,}, + {1,987,2,53,1,254,2,190,21,12,2,88,1,57,2,947,1,56,2,293,1,251,2,55,1,853,}, + {1,986,2,54,1,251,2,192,21,14,2,92,1,53,2,945,1,54,2,299,1,250,2,53,1,853,}, + {1,986,2,54,1,251,2,192,21,14,2,92,1,53,2,945,1,54,2,299,1,250,2,53,1,853,}, + {1,986,2,53,1,250,2,193,21,16,2,93,1,53,2,941,1,53,2,303,1,251,2,51,1,853,}, + {1,986,2,51,1,250,2,195,21,17,2,95,1,53,2,936,1,54,2,306,1,249,2,53,1,851,}, + {1,986,2,51,1,250,2,195,21,19,2,93,1,53,2,936,1,54,2,306,1,249,2,53,1,851,}, + {1,986,2,51,1,249,2,196,21,22,2,93,1,52,2,931,1,52,2,313,1,248,2,52,1,851,}, + {1,986,2,48,1,249,2,199,21,26,2,102,1,42,2,927,1,45,2,324,1,247,2,50,1,851,}, + {1,986,2,48,1,249,2,198,21,30,2,104,1,37,2,927,1,45,2,324,1,247,2,50,1,851,}, + {1,986,2,47,1,243,2,204,21,33,2,107,1,33,2,924,1,39,2,338,1,244,2,47,1,851,}, + {1,986,2,45,1,242,2,206,21,36,2,110,1,28,2,923,1,39,2,342,1,242,2,46,1,851,}, + {1,986,2,45,1,242,2,204,21,40,2,113,1,18,2,928,1,39,2,342,1,242,2,46,1,851,}, + {1,986,2,43,1,243,2,203,21,45,2,1054,1,39,2,346,1,242,2,44,1,851,}, + {1,986,2,43,1,243,2,202,21,48,2,1052,1,39,2,346,1,242,2,44,1,851,}, + {1,986,2,42,1,244,2,201,21,50,2,1051,1,38,2,347,1,242,2,44,1,851,}, + {1,984,2,42,1,244,2,202,21,53,2,1049,1,36,2,350,1,243,2,42,1,851,}, + {1,984,2,42,1,244,2,201,21,55,2,1053,1,31,2,350,1,243,2,42,1,851,}, + {1,984,2,42,1,243,2,201,21,57,2,1057,1,24,2,354,1,242,2,41,1,851,}, + {1,984,2,41,1,241,2,203,21,60,2,1060,1,18,2,358,1,241,2,39,1,851,}, + {1,984,2,41,1,241,2,202,21,62,2,1064,1,13,2,358,1,241,2,39,1,851,}, + {1,984,2,39,1,239,2,206,21,63,2,1068,1,5,2,364,1,239,2,38,1,851,}, + {1,984,2,36,1,239,2,208,21,65,2,1439,1,238,2,36,1,851,}, + {1,984,2,36,1,239,2,208,21,66,2,1438,1,238,2,36,1,851,}, + {1,984,2,35,1,237,2,210,21,68,2,1439,1,237,2,35,1,851,}, + {1,984,2,5,1,1,2,27,1,238,2,211,21,69,2,1441,1,236,2,33,1,851,}, + {1,984,2,5,1,1,2,27,1,238,2,210,21,71,2,1440,1,236,2,33,1,851,}, + {1,984,2,5,1,1,2,27,1,236,2,212,21,72,2,1440,1,236,2,32,1,851,}, + {1,984,2,5,1,1,2,27,1,236,2,212,21,73,2,1439,1,236,2,32,1,851,}, + {1,984,2,5,1,1,2,25,1,236,2,213,21,74,2,1441,1,236,2,30,1,851,}, + {1,984,2,5,1,1,2,24,1,236,2,214,21,37,2,6,21,32,2,1442,1,236,2,28,1,851,}, + {1,984,2,5,1,1,2,24,1,236,2,214,21,36,2,11,21,29,2,1441,1,236,2,28,1,851,}, + {1,984,2,5,1,1,2,22,1,236,2,216,21,36,2,14,21,26,2,1442,1,235,2,28,1,851,}, + {1,984,2,5,1,1,2,21,1,234,2,219,21,20,2,2,21,14,2,17,21,24,2,1444,1,233,2,27,1,851,}, + {1,984,2,5,1,1,2,21,1,234,2,219,21,18,2,5,21,13,2,19,21,22,2,1444,1,233,2,27,1,851,}, + {1,984,2,5,1,1,2,19,1,232,2,223,21,16,2,8,21,12,2,21,21,21,2,1448,1,231,2,24,1,851,}, + {1,984,2,5,1,1,2,18,1,231,2,225,21,14,2,11,21,11,2,23,21,19,2,1449,1,232,2,22,1,851,}, + {1,984,2,5,1,1,2,18,1,231,2,225,21,13,2,13,21,11,2,23,21,19,2,1448,1,232,2,22,1,851,}, + {1,984,2,5,1,1,2,16,1,231,2,226,21,12,2,16,21,10,2,25,21,17,2,1448,1,233,2,21,1,851,}, + {1,984,2,5,1,1,2,16,1,231,2,225,21,12,2,18,21,10,2,25,21,17,2,1447,1,233,2,21,1,851,}, + {1,984,2,5,1,1,2,14,1,233,2,225,21,11,2,21,21,8,2,26,21,16,2,1449,1,233,2,19,1,851,}, + {1,984,2,3,1,3,2,13,1,233,2,225,21,10,2,25,21,7,2,27,21,14,2,1449,1,235,2,18,1,850,}, + {1,984,2,3,1,3,2,13,1,233,2,225,21,9,2,28,21,6,2,27,21,14,2,1448,1,235,2,18,1,850,}, + {1,984,2,3,1,3,2,11,1,235,2,224,21,9,2,32,21,4,2,27,21,13,2,1450,1,234,2,17,1,850,}, + {1,984,2,3,1,3,2,10,1,234,2,226,21,8,2,65,21,12,2,1451,1,235,2,15,1,850,}, + {1,984,2,3,1,3,2,10,1,234,2,226,21,7,2,67,21,11,2,1451,1,235,2,15,1,850,}, + {1,984,2,3,1,3,2,8,1,232,2,230,21,6,2,69,21,10,2,1456,1,231,2,14,1,850,}, + {1,984,2,3,1,3,2,7,1,229,2,233,21,6,2,71,21,9,2,1407,21,1,2,51,1,230,2,12,1,850,}, + {1,984,2,3,1,3,2,7,1,229,2,233,21,5,2,73,21,10,2,1403,21,3,2,51,1,230,2,12,1,850,}, + {1,984,2,11,1,231,2,233,21,4,2,74,21,14,2,1397,21,5,2,51,1,230,2,11,1,851,}, + {1,986,2,8,1,231,2,235,21,2,2,76,21,15,2,1394,21,6,2,53,1,229,2,10,1,851,}, + {1,986,2,8,1,231,2,312,21,18,2,1391,21,7,2,53,1,229,2,10,1,851,}, + {1,986,2,6,1,233,2,311,21,20,2,1389,21,8,2,53,1,233,2,6,1,851,}, + {1,986,2,6,1,233,2,310,21,22,2,1388,21,8,2,53,1,233,2,6,1,851,}, + {1,987,2,3,1,233,2,311,21,24,2,1386,21,9,2,53,1,234,2,3,1,853,}, + {1,1223,2,310,21,12,2,1,21,13,2,1384,21,10,2,54,1,1089,}, + {1,1223,2,310,21,9,2,1,21,1,2,3,21,13,2,1383,21,10,2,54,1,1089,}, + {1,1222,2,310,21,10,2,6,21,12,2,1382,21,11,2,56,1,1087,}, + {1,1217,2,315,21,10,2,12,21,7,2,1381,21,12,2,59,1,1083,}, + {1,1217,2,315,21,9,2,15,21,5,2,1380,21,14,2,58,1,1083,}, + {1,1216,2,315,21,9,2,18,21,3,2,1253,1,13,2,114,21,14,2,60,1,1081,}, + {1,1214,2,183,1,22,2,112,21,7,2,1272,1,24,2,106,21,16,2,61,1,1079,}, + {1,1214,2,178,1,27,2,112,21,6,2,1273,1,25,2,105,21,17,2,60,1,1079,}, + {1,1214,2,175,1,34,2,108,21,5,2,1269,1,32,2,103,21,19,2,58,1,1079,}, + {1,1214,2,173,1,36,2,108,21,5,2,1269,1,36,2,99,21,22,2,55,1,1079,}, + {1,1214,2,173,1,41,2,103,21,4,2,1266,1,42,2,97,21,26,2,51,1,1079,}, + {1,1212,2,174,1,45,2,100,21,3,2,1264,1,47,2,94,21,30,2,49,1,1078,}, + {1,1212,2,174,1,47,2,98,21,3,2,1264,1,47,2,93,21,33,2,47,1,1078,}, + {1,1212,2,172,1,50,2,97,21,2,2,1262,1,51,2,91,21,36,2,45,1,1078,}, + {1,1211,2,172,1,53,2,1357,1,53,2,89,21,40,2,45,1,1076,}, + {1,1211,2,172,1,53,2,634,21,3,2,42,21,3,2,675,1,53,2,87,21,45,2,42,1,1076,}, + {1,1209,2,172,1,57,2,629,21,7,2,40,21,7,2,672,1,56,2,83,21,48,2,41,1,1075,}, + {1,1208,2,172,1,59,2,625,21,10,2,40,21,10,2,667,1,60,2,80,21,50,2,42,1,1073,}, + {1,1208,2,172,1,59,2,623,21,11,2,42,21,11,2,665,1,60,2,79,21,53,2,40,1,1073,}, + {1,1205,2,172,1,64,2,619,21,12,2,44,21,12,2,660,1,64,2,77,21,55,2,42,1,1070,}, + {1,1203,2,172,1,72,2,611,21,13,2,46,21,13,2,654,1,71,2,73,21,57,2,42,1,1069,}, + {1,1203,2,172,1,72,2,601,21,22,2,48,21,22,2,644,1,71,2,72,21,60,2,40,1,1069,}, + {1,1203,2,169,1,92,2,581,21,24,2,50,21,24,2,623,1,91,2,69,21,62,2,39,1,1069,}, + {1,1203,2,169,1,92,2,579,21,25,2,52,21,25,2,621,1,91,2,69,21,63,2,38,1,1069,}, + {1,1201,2,168,1,103,2,569,21,26,2,54,21,26,2,612,1,103,2,63,21,65,2,37,1,1069,}, + {1,1201,2,166,1,108,2,564,21,27,2,56,21,27,2,606,1,108,2,62,21,66,2,38,1,1067,}, + {1,1201,2,166,1,108,2,562,21,28,2,58,21,28,2,604,1,108,2,61,21,68,2,37,1,1067,}, + {1,1200,2,166,1,111,2,559,21,29,2,58,21,29,2,602,1,111,2,59,21,69,2,36,1,1067,}, + {1,1200,2,164,1,114,2,557,21,29,2,60,21,29,2,598,1,114,2,58,21,71,2,37,1,1065,}, + {1,1200,2,164,1,114,2,556,21,29,2,62,21,29,2,597,1,114,2,58,21,72,2,36,1,1065,}, + {1,1198,2,166,1,117,2,552,21,29,2,64,21,29,2,594,1,117,2,57,21,73,2,35,1,1065,}, + {1,1198,2,164,1,124,2,546,21,29,2,66,21,29,2,588,1,124,2,54,21,74,2,36,1,1064,}, + {1,1198,2,164,1,124,2,545,21,29,2,68,21,29,2,587,1,124,2,54,21,37,2,6,21,32,2,35,1,1064,}, + {1,1197,2,162,1,136,2,535,21,29,2,70,21,29,2,577,1,135,2,52,21,36,2,11,21,29,2,36,1,1062,}, + {1,1197,2,162,1,136,2,535,21,29,2,70,21,29,2,577,1,135,2,52,21,36,2,14,21,26,2,36,1,1062,}, + {1,1195,2,160,1,173,2,501,21,29,2,72,21,29,2,543,1,172,2,48,21,20,2,2,21,14,2,17,21,24,2,36,1,1061,}, + {1,1192,2,160,1,182,2,494,21,29,2,74,21,29,2,536,1,181,2,45,21,18,2,5,21,13,2,19,21,22,2,39,1,1058,}, + {1,1192,2,160,1,182,2,494,21,29,2,74,21,29,2,536,1,181,2,45,21,16,2,8,21,12,2,21,21,21,2,38,1,1058,}, + {1,1190,2,162,1,186,2,489,21,29,2,76,21,29,2,532,1,186,2,43,21,14,2,11,21,11,2,23,21,19,2,40,1,1056,}, + {1,1189,2,161,1,189,2,243,1,1,2,244,21,29,2,76,21,29,2,285,1,1,2,243,1,189,2,43,21,13,2,13,21,11,2,23,21,19,2,39,1,1056,}, + {1,1189,2,161,1,189,2,243,1,1,2,243,21,29,2,78,21,29,2,284,1,2,2,242,1,189,2,42,21,12,2,16,21,10,2,25,21,17,2,39,1,1056,}, + {1,1189,2,161,1,192,2,239,1,4,2,240,21,30,2,78,21,30,2,281,1,5,2,238,1,193,2,40,21,12,2,18,21,10,2,25,21,17,2,40,1,1054,}, + {1,1189,2,158,1,200,2,233,1,6,2,236,21,32,2,80,21,32,2,277,1,8,2,233,1,198,2,38,21,11,2,21,21,8,2,26,21,16,2,40,1,1054,}, + {1,1189,2,158,1,200,2,232,1,7,2,232,21,35,2,82,21,35,2,273,1,13,2,228,1,198,2,37,21,10,2,25,21,7,2,27,21,14,2,40,1,1054,}, + {1,1187,2,155,1,210,2,226,1,11,2,227,21,37,2,82,21,37,2,269,1,25,2,211,1,210,2,32,21,9,2,28,21,6,2,27,21,14,2,39,1,1054,}, + {1,1187,2,155,1,210,2,224,1,13,2,224,21,40,2,82,21,40,2,266,1,30,2,206,1,210,2,31,21,9,2,32,21,4,2,27,21,13,2,39,1,1054,}, + {1,1187,2,152,1,258,2,141,1,58,2,216,21,40,2,84,21,40,2,257,1,48,2,152,1,257,2,28,21,8,2,65,21,12,2,40,1,1053,}, + {1,1187,2,150,1,293,2,106,1,67,2,207,21,43,2,82,21,43,2,249,1,59,2,115,1,290,2,27,21,7,2,67,21,11,2,40,1,1053,}, + {1,1187,2,150,1,293,2,106,1,67,2,206,21,45,2,80,21,45,2,248,1,64,2,110,1,290,2,27,21,6,2,69,21,10,2,40,1,1053,}, + {1,1186,2,150,1,305,2,94,1,71,2,201,21,48,2,78,21,48,2,243,1,72,2,94,1,303,2,24,21,6,2,71,21,9,2,40,1,1053,}, + {1,1186,2,148,1,315,2,71,1,86,2,200,21,50,2,76,21,50,2,240,1,88,2,72,1,313,2,22,21,5,2,73,21,10,2,40,1,1051,}, + {1,1186,2,148,1,315,2,71,1,86,2,199,21,52,2,74,21,52,2,239,1,88,2,72,1,313,2,22,21,4,2,74,21,14,2,36,1,1051,}, + {1,1184,2,149,1,320,2,60,1,95,2,196,21,54,2,72,21,54,2,238,1,94,2,60,1,320,2,22,21,2,2,76,21,15,2,35,1,1050,}, + {1,1181,2,150,1,333,2,38,1,108,2,194,21,55,2,70,21,55,2,237,1,106,2,38,1,334,2,96,21,18,2,36,1,1047,}, + {1,1181,2,150,1,333,2,38,1,108,2,193,21,57,2,68,21,57,2,236,1,106,2,38,1,334,2,95,21,20,2,35,1,1047,}, + {1,1180,2,150,1,481,2,192,21,58,2,66,21,58,2,234,1,482,2,92,21,22,2,36,1,1045,}, + {1,1180,2,147,1,487,2,188,21,59,2,66,21,59,2,230,1,486,2,90,21,24,2,35,1,1045,}, + {1,1180,2,147,1,487,2,187,21,61,2,64,21,61,2,229,1,486,2,89,21,12,2,1,21,13,2,34,1,1045,}, + {1,1178,2,147,1,502,2,187,21,48,2,64,21,48,2,230,1,502,2,85,21,9,2,1,21,1,2,3,21,13,2,34,1,1044,}, + {1,1178,2,147,1,502,2,189,21,47,2,62,21,47,2,232,1,502,2,84,21,10,2,6,21,12,2,34,1,1044,}, + {1,1178,2,142,1,510,2,187,21,46,2,62,21,46,2,230,1,508,2,81,21,10,2,12,21,7,2,33,1,1044,}, + {1,1178,2,141,1,512,2,187,21,46,2,60,21,46,2,227,1,513,2,80,21,9,2,15,21,5,2,33,1,1044,}, + {1,1178,2,141,1,512,2,188,21,45,2,60,21,45,2,228,1,513,2,79,21,9,2,18,21,3,2,33,1,1044,}, + {1,1176,2,141,1,516,2,187,21,44,2,60,21,44,2,229,1,515,2,77,21,7,2,56,1,1044,}, + {1,1176,2,141,1,518,2,186,21,29,2,8,21,6,2,60,21,6,2,8,21,29,2,229,1,517,2,76,21,6,2,59,1,1042,}, + {1,1176,2,141,1,518,2,187,21,27,2,11,21,5,2,58,21,5,2,11,21,27,2,230,1,517,2,76,21,5,2,60,1,1042,}, + {1,1176,2,140,1,520,2,186,21,27,2,13,21,3,2,58,21,3,2,13,21,27,2,228,1,519,2,76,21,5,2,60,1,1042,}, + {1,1176,2,138,1,524,2,184,21,27,2,14,21,2,2,58,21,2,2,14,21,27,2,227,1,522,2,74,21,4,2,61,1,1042,}, + {1,1176,2,138,1,524,2,184,21,27,2,15,21,1,2,58,21,1,2,15,21,27,2,227,1,522,2,74,21,3,2,62,1,1042,}, + {1,1176,2,136,1,526,2,185,21,26,2,90,21,26,2,226,1,527,2,71,21,3,2,62,1,1042,}, + {1,1176,2,136,1,521,2,190,21,26,2,90,21,26,2,236,1,517,2,71,21,2,2,63,1,1042,}, + {1,1176,2,132,1,520,2,195,21,26,2,90,21,26,2,241,1,517,2,131,1,1042,}, + {1,1175,2,130,1,513,2,205,21,26,2,90,21,26,2,251,1,508,2,130,1,1042,}, + {1,1175,2,130,1,503,2,215,21,27,2,88,21,27,2,256,1,503,2,130,1,1042,}, + {1,1175,2,130,1,495,2,224,21,26,2,88,21,26,2,259,1,4,2,3,1,496,2,130,1,1040,}, + {1,1175,2,128,1,477,2,244,21,26,2,88,21,26,2,287,1,475,2,130,1,1040,}, + {1,1175,2,128,1,477,2,245,21,25,2,88,21,25,2,288,1,475,2,130,1,1040,}, + {1,1175,2,128,1,466,2,256,21,26,2,86,21,26,2,299,1,465,2,129,1,1040,}, + {1,1173,2,128,1,332,2,28,1,92,2,272,21,26,2,86,21,26,2,313,1,92,2,30,1,331,2,128,1,1039,}, + {1,1173,2,128,1,332,2,28,1,92,2,273,21,25,2,86,21,25,2,314,1,92,2,30,1,331,2,128,1,1039,}, + {1,1173,2,125,1,316,2,66,1,65,2,281,21,25,2,86,21,25,2,323,1,64,2,67,1,315,2,126,1,1039,}, + {1,1172,2,122,1,309,2,424,21,25,2,84,21,25,2,466,1,308,2,124,1,1037,}, + {1,1172,2,122,1,309,2,424,21,25,2,84,21,25,2,466,1,308,2,124,1,1037,}, + {1,1172,2,120,1,302,2,434,21,24,2,84,21,24,2,477,1,301,2,121,1,1037,}, + {1,1172,2,120,1,302,2,434,21,25,2,82,21,25,2,477,1,301,2,121,1,1037,}, + {1,1170,2,121,1,289,2,449,21,24,2,82,21,24,2,492,1,289,2,120,1,1036,}, + {1,1169,2,120,1,250,2,490,21,25,2,80,21,25,2,532,1,249,2,122,1,1034,}, + {1,1169,2,120,1,250,2,491,21,24,2,80,21,24,2,533,1,249,2,122,1,1034,}, + {1,1167,2,122,1,245,2,496,21,25,2,78,21,25,2,536,1,247,2,121,1,1034,}, + {1,1167,2,120,1,246,2,497,21,25,2,78,21,25,2,540,1,245,2,120,1,1033,}, + {1,1167,2,120,1,246,2,498,21,25,2,76,21,25,2,541,1,245,2,120,1,1033,}, + {1,1167,2,117,1,247,2,501,21,25,2,74,21,25,2,543,1,247,2,117,1,1033,}, + {1,1167,2,114,1,235,2,7,1,7,2,503,21,24,2,74,21,24,2,546,1,248,2,114,1,1033,}, + {1,1167,2,114,1,225,2,22,1,2,2,503,21,25,2,72,21,25,2,563,1,231,2,114,1,1033,}, + {1,1167,2,111,1,218,2,538,21,24,2,72,21,24,2,569,1,228,2,112,1,1033,}, + {1,1167,2,111,1,213,2,544,21,24,2,70,21,24,2,572,1,226,2,112,1,1033,}, + {1,1167,2,111,1,211,2,547,21,24,2,68,21,24,2,576,1,224,2,111,1,1033,}, + {1,1167,2,109,1,210,2,550,21,25,2,66,21,25,2,578,1,224,2,109,1,1033,}, + {1,1167,2,109,1,208,2,553,21,25,2,64,21,25,2,582,1,221,2,109,1,1033,}, + {1,1167,2,108,1,203,2,3,1,2,2,555,21,24,2,64,21,24,2,585,1,14,2,3,1,202,2,109,1,1033,}, + {1,1167,2,106,1,204,2,562,21,24,2,62,21,24,2,587,1,12,2,6,1,203,2,106,1,1033,}, + {1,1167,2,106,1,204,2,563,21,24,2,21,21,18,2,21,21,24,2,598,1,2,2,6,1,203,2,106,1,1033,}, + {1,1167,2,103,1,205,2,451,1,2,2,113,21,24,2,18,21,22,2,18,21,24,2,484,21,1,2,108,21,1,2,14,1,204,2,104,1,1033,}, + {1,1167,2,102,1,206,2,451,1,7,2,109,21,24,2,15,21,26,2,15,21,24,2,151,1,8,2,324,21,3,2,108,21,3,2,12,1,207,2,101,1,1033,}, + {1,1167,2,102,1,206,2,450,1,8,2,110,21,24,2,12,21,14,2,2,21,14,2,12,21,24,2,152,1,13,2,317,21,5,2,108,21,5,2,10,1,207,2,101,1,1033,}, + {1,1167,2,100,1,206,2,451,1,17,2,103,21,24,2,10,21,13,2,6,21,13,2,10,21,24,2,144,1,25,2,313,21,6,2,108,21,6,2,9,1,208,2,100,1,1033,}, + {1,1167,2,99,1,207,2,450,1,27,2,95,21,24,2,7,21,14,2,8,21,14,2,7,21,24,2,137,1,35,2,310,21,7,2,108,21,7,2,10,1,206,2,100,1,1033,}, + {1,1167,2,99,1,207,2,449,1,28,2,96,21,24,2,6,21,13,2,10,21,13,2,6,21,24,2,138,1,40,2,304,21,8,2,108,21,8,2,9,1,206,2,100,1,1033,}, + {1,1169,2,95,1,205,2,451,1,33,2,94,21,24,2,4,21,13,2,12,21,13,2,4,21,24,2,134,1,50,2,299,21,8,2,108,21,8,2,14,1,203,2,97,1,1034,}, + {1,1169,2,95,1,205,2,140,21,1,2,307,1,36,2,96,21,38,2,14,21,38,2,136,1,52,2,296,21,9,2,108,21,9,2,13,1,203,2,97,1,1034,}, + {1,1169,2,93,1,202,2,42,21,1,2,102,21,3,2,303,1,42,2,93,21,36,2,16,21,36,2,136,1,54,2,294,21,10,2,108,21,10,2,15,1,201,2,96,1,1034,}, + {1,1169,2,92,1,200,2,43,21,3,2,102,21,5,2,296,1,47,2,94,21,34,2,18,21,34,2,135,1,58,2,292,21,10,2,108,21,10,2,18,1,200,2,94,1,1034,}, + {1,1169,2,92,1,200,2,41,21,5,2,102,21,6,2,290,1,52,2,96,21,31,2,20,21,31,2,137,1,63,2,286,21,11,2,108,21,11,2,17,1,200,2,94,1,1034,}, + {1,1170,2,89,1,200,2,42,21,6,2,102,21,7,2,279,1,65,2,95,21,28,2,22,21,28,2,138,1,67,2,283,21,12,2,106,21,12,2,20,1,200,2,89,1,1036,}, + {1,1171,2,87,1,198,2,44,21,7,2,102,21,8,2,275,1,72,2,93,21,23,2,28,21,23,2,135,1,72,2,282,21,14,2,104,21,14,2,22,1,199,2,86,1,1037,}, + {1,1171,2,87,1,198,2,43,21,8,2,102,21,8,2,275,1,72,2,95,21,22,2,26,21,22,2,137,1,72,2,282,21,14,2,104,21,14,2,22,1,199,2,86,1,1037,}, + {1,1171,2,85,1,199,2,44,21,8,2,102,21,9,2,273,1,80,2,92,21,17,2,28,21,17,2,135,1,80,2,279,21,16,2,102,21,16,2,21,1,200,2,85,1,1037,}, + {1,1171,2,84,1,200,2,43,21,9,2,102,21,10,2,270,1,93,2,85,21,13,2,28,21,13,2,128,1,92,2,278,21,17,2,100,21,17,2,23,1,198,2,85,1,1037,}, + {1,1171,2,84,1,200,2,42,21,10,2,102,21,10,2,270,1,93,2,89,21,8,2,30,21,8,2,132,1,92,2,278,21,19,2,96,21,19,2,23,1,198,2,85,1,1037,}, + {1,1171,2,82,1,200,2,44,21,10,2,102,21,11,2,266,1,103,2,82,21,9,2,28,21,9,2,123,1,104,2,275,21,22,2,90,21,22,2,24,1,199,2,83,1,1037,}, + {1,1171,2,82,1,200,2,43,21,11,2,101,21,12,2,266,1,103,2,83,21,9,2,26,21,9,2,124,1,104,2,275,21,26,2,82,21,26,2,24,1,199,2,83,1,1037,}, + {1,1171,2,82,1,199,2,44,21,12,2,99,21,14,2,261,1,112,2,78,21,10,2,24,21,10,2,120,1,113,2,269,21,30,2,76,21,30,2,23,1,199,2,83,1,1037,}, + {1,1172,2,79,1,199,2,45,21,14,2,98,21,14,2,257,1,118,2,76,21,10,2,24,21,10,2,119,1,117,2,265,21,33,2,72,21,33,2,25,1,197,2,82,1,1037,}, + {1,1172,2,79,1,199,2,45,21,14,2,97,21,16,2,256,1,118,2,76,21,10,2,24,21,10,2,119,1,117,2,264,21,36,2,68,21,36,2,24,1,197,2,82,1,1037,}, + {1,1172,2,79,1,196,2,47,21,16,2,95,21,17,2,255,1,122,2,73,21,10,2,24,21,10,2,116,1,122,2,260,21,40,2,64,21,40,2,24,1,196,2,81,1,1037,}, + {1,1172,2,76,1,196,2,50,21,17,2,92,21,19,2,252,1,128,2,71,21,9,2,24,21,9,2,114,1,126,2,257,21,45,2,58,21,45,2,25,1,194,2,80,1,1037,}, + {1,1172,2,76,1,196,2,50,21,19,2,87,21,22,2,252,1,128,2,71,21,9,2,24,21,9,2,114,1,126,2,256,21,48,2,54,21,48,2,24,1,194,2,80,1,1037,}, + {1,1172,2,73,1,199,2,50,21,22,2,80,21,27,2,246,1,139,2,66,21,9,2,22,21,9,2,108,1,138,2,250,21,50,2,52,21,50,2,25,1,193,2,79,1,1037,}, + {1,1172,2,70,1,200,2,52,21,26,2,73,21,30,2,241,1,152,2,58,21,9,2,22,21,9,2,99,1,152,2,244,21,53,2,48,21,53,2,25,1,192,2,79,1,1037,}, + {1,1172,2,70,1,200,2,51,21,30,2,67,21,34,2,240,1,152,2,59,21,8,2,22,21,8,2,100,1,152,2,243,21,55,2,46,21,55,2,24,1,193,2,77,1,1038,}, + {1,1173,2,68,1,201,2,50,21,33,2,63,21,37,2,233,1,174,2,44,21,8,2,20,21,8,2,87,1,173,2,235,21,57,2,44,21,57,2,23,1,194,2,76,1,1038,}, + {1,1173,2,65,1,203,2,50,21,36,2,59,21,41,2,228,1,183,2,39,21,7,2,20,21,7,2,80,1,185,2,230,21,60,2,40,21,60,2,22,1,195,2,75,1,1038,}, + {1,1173,2,64,1,204,2,48,21,40,2,55,21,45,2,226,1,183,2,40,21,7,2,18,21,7,2,81,1,185,2,229,21,62,2,38,21,62,2,21,1,196,2,74,1,1038,}, + {1,1173,2,64,1,204,2,46,21,45,2,50,21,48,2,222,1,191,2,36,21,6,2,18,21,6,2,79,1,189,2,228,21,63,2,36,21,63,2,23,1,194,2,74,1,1038,}, + {1,1173,2,64,1,204,2,45,21,48,2,47,21,50,2,221,1,191,2,37,21,6,2,16,21,6,2,80,1,189,2,227,21,65,2,34,21,65,2,22,1,195,2,73,1,1038,}, + {1,1173,2,64,1,202,2,46,21,50,2,44,21,53,2,218,1,196,2,36,21,4,2,16,21,4,2,79,1,195,2,224,21,66,2,32,21,66,2,22,1,196,2,72,1,1038,}, + {1,1173,2,64,1,202,2,45,21,53,2,41,21,55,2,214,1,202,2,35,21,2,2,16,21,2,2,76,1,202,2,221,21,68,2,30,21,68,2,22,1,195,2,72,1,1038,}, + {1,1174,2,62,1,203,2,44,21,55,2,39,21,57,2,213,1,202,2,131,1,202,2,221,21,69,2,28,21,69,2,22,1,196,2,71,1,1038,}, + {1,1174,2,62,1,202,2,44,21,57,2,36,21,60,2,209,1,213,2,117,1,211,2,217,21,71,2,26,21,71,2,21,1,196,2,71,1,1038,}, + {1,1174,2,62,1,202,2,43,21,60,2,33,21,62,2,205,1,231,2,89,1,229,2,212,21,72,2,24,21,72,2,23,1,194,2,71,1,1038,}, + {1,1174,2,62,1,202,2,42,21,62,2,31,21,63,2,205,1,231,2,89,1,229,2,212,21,73,2,22,21,73,2,23,1,194,2,71,1,1038,}, + {1,1174,2,62,1,200,2,44,21,63,2,29,21,65,2,194,1,269,2,29,1,268,2,204,21,74,2,22,21,74,2,24,1,192,2,71,1,1038,}, + {1,1174,2,61,1,199,2,45,21,65,2,27,21,66,2,188,1,580,2,196,21,37,2,6,21,32,2,20,21,32,2,6,21,37,2,25,1,192,2,70,1,1038,}, + {1,1174,2,61,1,199,2,45,21,66,2,25,21,68,2,187,1,580,2,196,21,36,2,11,21,29,2,18,21,29,2,11,21,36,2,25,1,192,2,70,1,1038,}, + {1,1175,2,59,1,197,2,47,21,68,2,23,21,69,2,183,1,589,2,191,21,36,2,14,21,26,2,18,21,26,2,14,21,36,2,27,1,191,2,69,1,1038,}, + {1,1175,2,59,1,197,2,47,21,69,2,21,21,71,2,182,1,589,2,191,21,20,2,2,21,14,2,17,21,24,2,16,21,24,2,17,21,14,2,2,21,20,2,27,1,192,2,68,1,1038,}, + {1,1175,2,59,1,197,2,46,21,71,2,19,21,72,2,178,1,594,2,190,21,18,2,5,21,13,2,19,21,22,2,16,21,22,2,19,21,13,2,5,21,18,2,28,1,191,2,68,1,1038,}, + {1,1175,2,58,1,197,2,47,21,72,2,17,21,73,2,177,1,599,2,186,21,16,2,8,21,12,2,21,21,21,2,14,21,21,2,21,21,12,2,8,21,16,2,30,1,190,2,67,1,1038,}, + {1,1175,2,58,1,197,2,47,21,73,2,16,21,74,2,176,1,599,2,186,21,14,2,11,21,11,2,23,21,19,2,14,21,19,2,23,21,11,2,11,21,14,2,30,1,190,2,67,1,1038,}, + {1,1175,2,57,1,198,2,46,21,74,2,15,21,32,2,6,21,37,2,173,1,605,2,183,21,13,2,13,21,11,2,23,21,19,2,12,21,19,2,23,21,11,2,13,21,13,2,30,1,190,2,67,1,1038,}, + {1,1175,2,56,1,197,2,48,21,37,2,6,21,32,2,13,21,29,2,11,21,36,2,168,1,614,2,178,21,12,2,16,21,10,2,25,21,17,2,12,21,17,2,25,21,10,2,16,21,12,2,29,1,190,2,67,1,1038,}, + {1,1176,2,55,1,197,2,48,21,36,2,11,21,29,2,12,21,26,2,14,21,36,2,168,1,614,2,177,21,12,2,18,21,10,2,25,21,17,2,10,21,17,2,25,21,10,2,18,21,12,2,28,1,190,2,67,1,1038,}, + {1,1176,2,54,1,198,2,48,21,36,2,14,21,26,2,11,21,24,2,17,21,14,2,2,21,20,2,162,1,625,2,172,21,11,2,21,21,8,2,26,21,16,2,10,21,16,2,26,21,8,2,21,21,11,2,28,1,190,2,67,1,1038,}, + {1,1176,2,54,1,198,2,48,21,20,2,2,21,14,2,17,21,24,2,10,21,22,2,19,21,13,2,5,21,18,2,152,1,646,2,160,21,10,2,25,21,7,2,27,21,14,2,10,21,14,2,27,21,7,2,25,21,10,2,28,1,189,2,67,1,1038,}, + {1,1176,2,53,1,199,2,48,21,18,2,5,21,13,2,19,21,22,2,9,21,21,2,21,21,12,2,8,21,16,2,152,1,646,2,160,21,9,2,28,21,6,2,27,21,14,2,8,21,14,2,27,21,6,2,28,21,9,2,28,1,190,2,66,1,1038,}, + {1,1176,2,53,1,199,2,48,21,16,2,8,21,12,2,21,21,21,2,8,21,19,2,23,21,11,2,11,21,14,2,141,1,668,2,148,21,9,2,32,21,4,2,27,21,13,2,8,21,13,2,27,21,4,2,32,21,9,2,27,1,190,2,65,1,1039,}, + {1,1176,2,53,1,199,2,48,21,14,2,11,21,11,2,23,21,19,2,7,21,19,2,23,21,11,2,13,21,13,2,141,1,668,2,148,21,8,2,65,21,12,2,8,21,12,2,65,21,8,2,27,1,190,2,65,1,1039,}, + {1,1177,2,51,1,200,2,48,21,13,2,13,21,11,2,23,21,19,2,6,21,17,2,25,21,10,2,16,21,12,2,136,1,677,2,143,21,7,2,67,21,11,2,8,21,11,2,67,21,7,2,27,1,190,2,65,1,1039,}, + {1,1176,2,52,1,200,2,47,21,12,2,16,21,10,2,25,21,17,2,5,21,17,2,25,21,10,2,18,21,12,2,132,1,683,2,140,21,6,2,69,21,10,2,8,21,10,2,69,21,6,2,27,1,190,2,65,1,1039,}, + {1,1176,2,52,1,200,2,46,21,12,2,18,21,10,2,25,21,17,2,4,21,16,2,26,21,8,2,21,21,11,2,132,1,683,2,139,21,6,2,71,21,9,2,8,21,9,2,71,21,6,2,26,1,191,2,64,1,1039,}, + {1,1176,2,52,1,199,2,47,21,11,2,21,21,8,2,26,21,16,2,4,21,14,2,27,21,7,2,25,21,10,2,128,1,687,2,138,21,5,2,73,21,10,2,4,21,10,2,73,21,5,2,26,1,191,2,63,1,1040,}, + {1,1175,2,53,1,199,2,46,21,10,2,25,21,7,2,27,21,14,2,3,21,14,2,27,21,6,2,28,21,9,2,124,1,696,2,133,21,4,2,74,21,24,2,74,21,4,2,26,1,192,2,62,1,1040,}, + {1,1175,2,53,1,199,2,46,21,9,2,28,21,6,2,27,21,14,2,2,21,13,2,27,21,4,2,32,21,9,2,123,1,696,2,134,21,2,2,76,21,22,2,76,21,2,2,27,1,192,2,62,1,1040,}, + {1,1175,2,55,1,197,2,45,21,9,2,32,21,4,2,27,21,13,2,2,21,12,2,65,21,8,2,116,1,711,2,203,21,24,2,106,1,190,2,62,1,1040,}, + {1,1175,2,55,1,197,2,45,21,8,2,65,21,12,2,2,21,11,2,67,21,7,2,106,1,730,2,193,21,26,2,105,1,191,2,61,1,1040,}, + {1,1175,2,55,1,197,2,45,21,7,2,67,21,11,2,2,21,10,2,69,21,6,2,106,1,730,2,192,21,28,2,104,1,191,2,60,1,1041,}, + {1,1175,2,55,1,197,2,45,21,6,2,69,21,10,2,2,21,9,2,71,21,6,2,90,1,761,2,175,21,30,2,103,1,191,2,60,1,1041,}, + {1,1176,2,55,1,194,2,46,21,6,2,71,21,19,2,73,21,5,2,79,1,783,2,163,21,32,2,102,1,190,2,61,1,1041,}, + {1,1176,2,55,1,194,2,46,21,5,2,73,21,18,2,74,21,4,2,79,1,783,2,163,21,32,2,102,1,190,2,61,1,1041,}, + {1,1176,2,55,1,194,2,46,21,4,2,74,21,17,2,76,21,2,2,73,1,795,2,157,21,34,2,102,1,189,2,61,1,1041,}, + {1,1176,2,55,1,194,2,47,21,2,2,75,21,18,2,150,1,795,2,157,21,12,2,10,21,12,2,102,1,189,2,60,1,1042,}, + {1,1176,2,55,1,192,2,125,21,20,2,146,1,802,2,153,21,10,2,14,21,10,2,102,1,189,2,60,1,1042,}, + {1,1176,2,55,1,192,2,124,21,22,2,141,1,811,2,147,21,9,2,18,21,9,2,103,1,186,2,61,1,1042,}, + {1,1176,2,55,1,192,2,123,21,24,2,140,1,811,2,147,21,7,2,22,21,7,2,103,1,186,2,61,1,1042,}, + {1,1176,2,55,1,191,2,123,21,26,2,132,1,824,2,141,21,6,2,24,21,6,2,105,1,184,2,61,1,1042,}, + {1,1176,2,57,1,187,2,124,21,13,2,1,21,13,2,124,1,840,2,133,21,5,2,26,21,5,2,105,1,183,2,61,1,1043,}, + {1,1176,2,57,1,187,2,124,21,12,2,3,21,13,2,123,1,840,2,133,21,5,2,26,21,5,2,105,1,183,2,61,1,1043,}, + {1,1176,2,57,1,187,2,89,1,13,2,21,21,11,2,6,21,12,2,109,1,868,2,119,21,4,2,28,21,4,2,106,1,181,2,61,1,1044,}, + {1,1176,2,57,1,187,2,87,1,17,2,19,21,11,2,9,21,10,2,82,1,919,2,94,21,3,2,30,21,3,2,106,1,181,2,61,1,1044,}, + {1,1176,2,57,1,187,2,86,1,19,2,18,21,10,2,11,21,9,2,82,1,919,2,94,21,3,2,30,21,3,2,106,1,181,2,61,1,1044,}, + {1,1176,2,57,1,186,2,86,1,24,2,14,21,9,2,14,21,7,2,71,1,943,2,81,21,2,2,32,21,2,2,106,1,181,2,61,1,1044,}, + {1,1176,2,57,1,186,2,85,1,27,2,12,21,7,2,17,21,6,2,71,1,943,2,223,1,181,2,61,1,1044,}, + {1,1176,2,57,1,186,2,84,1,29,2,11,21,6,2,19,21,5,2,63,1,958,2,216,1,180,2,62,1,1044,}, + {1,1176,2,58,1,185,2,82,1,32,2,10,21,5,2,20,21,5,2,54,1,975,2,99,1,4,2,107,1,178,2,62,1,1044,}, + {1,1176,2,58,1,185,2,81,1,34,2,9,21,5,2,21,21,4,2,54,1,975,2,99,1,9,2,102,1,178,2,62,1,1044,}, + {1,1176,2,58,1,185,2,80,1,36,2,8,21,4,2,23,21,3,2,44,1,995,2,84,1,19,2,97,1,178,2,62,1,1044,}, + {1,1176,2,58,1,185,2,79,1,41,2,4,21,3,2,24,21,3,2,30,1,1024,2,64,1,27,2,94,1,178,2,62,1,1044,}, + {1,1176,2,58,1,185,2,78,1,42,2,4,21,3,2,25,21,2,2,30,1,1024,2,64,1,29,2,92,1,178,2,62,1,1044,}, + {1,1178,2,58,1,183,2,78,1,46,21,2,1,1178,2,89,1,178,2,62,1,1044,}, + {1,1178,2,61,1,180,2,77,1,1229,2,87,1,178,2,62,1,1044,}, + {1,1178,2,61,1,180,2,77,1,1230,2,86,1,178,2,62,1,1044,}, + {1,1178,2,63,1,178,2,77,1,1231,2,85,1,178,2,62,1,1044,}, + {1,1178,2,63,1,178,2,77,1,1232,2,84,1,176,2,64,1,1044,}, + {1,1178,2,63,1,178,2,76,1,1235,2,82,1,176,2,64,1,1044,}, + {1,1178,2,64,1,177,2,76,1,1237,2,80,1,176,2,64,1,1044,}, + {1,1178,2,64,1,177,2,76,1,1238,2,79,1,176,2,64,1,1044,}, + {1,1178,2,64,1,175,2,78,1,1239,2,78,1,176,2,64,1,1044,}, + {1,1178,2,64,1,175,2,78,1,1239,2,78,1,175,2,65,1,1044,}, + {1,1178,2,64,1,175,2,78,1,1239,2,78,1,175,2,65,1,1044,}, + {1,1178,2,64,1,175,2,78,1,1239,2,78,1,175,2,65,1,1044,}, + {1,1178,2,66,1,173,2,78,1,1239,2,78,1,175,2,65,1,1044,}, + {1,1178,2,66,1,173,2,78,1,1239,2,78,1,175,2,65,1,1044,}, + {1,1178,2,66,1,173,2,78,1,1239,2,78,1,175,2,64,1,1045,}, + {1,1178,2,66,1,173,2,78,1,1240,2,77,1,175,2,64,1,1045,}, + {1,1178,2,66,1,173,2,78,1,1240,2,77,1,175,2,64,1,1045,}, + {1,1178,2,66,1,173,2,78,1,1240,2,77,1,175,2,64,1,1045,}, + {1,1178,2,66,1,173,2,78,1,1240,2,77,1,175,2,64,1,1045,}, + {1,1180,2,64,1,173,2,78,1,1240,2,77,1,175,2,64,1,1045,}, + {1,1180,2,64,1,173,2,78,1,1240,2,77,1,175,2,64,1,1045,}, + {1,1180,2,64,1,173,2,78,1,1240,2,77,1,175,2,64,1,1045,}, + {1,1180,2,64,1,173,2,78,1,1240,2,77,1,175,2,62,1,1047,}, + {1,1181,2,63,1,175,2,76,1,1240,2,77,1,175,2,62,1,1047,}, + {1,1181,2,63,1,175,2,76,1,1240,2,77,1,175,2,62,1,1047,}, + {1,1183,2,61,1,175,2,76,1,1240,2,77,1,175,2,61,1,1048,}, + {1,1184,2,60,1,175,2,76,1,1240,2,77,1,173,2,61,1,1050,}, + {1,1184,2,60,1,175,2,76,1,1240,2,77,1,173,2,61,1,1050,}, + {1,1184,2,60,1,175,2,76,1,1240,2,77,1,173,2,60,1,1051,}, + {1,1186,2,59,1,174,2,76,1,1240,2,77,1,173,2,60,1,1051,}, + {1,1186,2,59,1,174,2,76,1,1240,2,77,1,173,2,60,1,1051,}, + {1,1186,2,59,1,174,2,76,1,1240,2,77,1,173,2,58,1,1053,}, + {1,1186,2,59,1,174,2,76,1,1240,2,77,1,173,2,58,1,1053,}, + {1,1186,2,59,1,174,2,76,1,1240,2,77,1,173,2,58,1,1053,}, + {1,1187,2,58,1,174,2,76,1,1240,2,77,1,173,2,58,1,1053,}, + {1,1187,2,58,1,174,2,76,1,1240,2,77,1,173,2,58,1,1053,}, + {1,1187,2,60,1,172,2,76,1,1240,2,75,1,174,2,59,1,1053,}, + {1,1187,2,60,1,172,2,76,1,1240,2,75,1,174,2,59,1,1053,}, + {1,1187,2,60,1,172,2,76,1,1240,2,75,1,174,2,59,1,1053,}, + {1,1187,2,61,1,172,2,75,1,1240,2,75,1,172,2,60,1,1054,}, + {1,1187,2,64,1,169,2,75,1,1240,2,75,1,169,2,63,1,1054,}, + {1,1187,2,64,1,169,2,75,1,1240,2,75,1,169,2,63,1,1054,}, + {1,1187,2,66,1,167,2,75,1,1240,2,75,1,167,2,65,1,1054,}, + {1,1187,2,66,1,167,2,75,1,1240,2,75,1,167,2,65,1,1054,}, + {1,1187,2,66,1,169,2,73,1,1240,2,74,1,168,2,65,1,1054,}, + {1,1189,2,64,1,169,2,73,1,1240,2,72,1,170,2,65,1,1054,}, + {1,1189,2,64,1,169,2,73,1,1240,2,72,1,170,2,65,1,1054,}, + {1,1189,2,64,1,170,2,72,1,1240,2,72,1,169,2,66,1,1054,}, + {1,1189,2,66,1,168,2,72,1,1240,2,70,1,171,2,66,1,1054,}, + {1,1189,2,66,1,168,2,72,1,1240,2,70,1,171,2,66,1,1054,}, + {1,1189,2,66,1,170,2,70,1,1240,2,70,1,171,2,64,1,1056,}, + {1,1189,2,66,1,170,2,70,1,1240,2,70,1,171,2,64,1,1056,}, + {1,1189,2,66,1,170,2,70,1,1240,2,70,1,171,2,64,1,1056,}, + {1,1189,2,66,1,170,2,70,1,1240,2,70,1,171,2,64,1,1056,}, + {1,1190,2,65,1,170,2,70,1,1240,2,69,1,172,2,64,1,1056,}, + {1,1190,2,65,1,170,2,70,1,1240,2,69,1,172,2,64,1,1056,}, + {1,1190,2,65,1,172,2,68,1,1240,2,69,1,172,2,64,1,1056,}, + {1,1190,2,65,1,172,2,68,1,1240,2,69,1,172,2,64,1,1056,}, + {1,1190,2,65,1,172,2,68,1,1239,2,70,1,172,2,62,1,1058,}, + {1,1192,2,63,1,172,2,68,1,1240,2,69,1,170,2,64,1,1058,}, + {1,1192,2,63,1,172,2,68,1,1240,2,69,1,170,2,64,1,1058,}, + {1,1194,2,61,1,172,2,68,1,1240,2,67,1,172,2,61,1,1061,}, + {1,1195,2,60,1,172,2,68,1,1240,2,67,1,172,2,60,1,1062,}, + {1,1195,2,60,1,172,2,68,1,1240,2,67,1,172,2,60,1,1062,}, + {1,1197,2,59,1,172,2,67,1,1240,2,67,1,172,2,58,1,1064,}, + {1,1198,2,58,1,172,2,67,1,1240,2,67,1,172,2,58,1,1064,}, + {1,1198,2,58,1,172,2,67,1,1240,2,67,1,172,2,58,1,1064,}, + {1,1198,2,58,1,172,2,67,1,1240,2,67,1,172,2,57,1,1065,}, + {1,1198,2,58,1,172,2,67,1,1240,2,67,1,172,2,57,1,1065,}, + {1,1200,2,56,1,172,2,67,1,1240,2,67,1,172,2,57,1,1065,}, + {1,1200,2,56,1,172,2,67,1,1240,2,66,1,173,2,57,1,1065,}, + {1,1200,2,56,1,172,2,67,1,1240,2,66,1,173,2,57,1,1065,}, + {1,1200,2,56,1,172,2,67,1,1239,2,67,1,173,2,55,1,1067,}, + {1,1200,2,56,1,174,2,65,1,1239,2,67,1,173,2,55,1,1067,}, + {1,1200,2,56,1,174,2,65,1,1239,2,67,1,173,2,55,1,1067,}, + {1,1201,2,55,1,174,2,65,1,1239,2,67,1,173,2,55,1,1067,}, + {1,1201,2,55,1,174,2,65,1,1239,2,65,1,175,2,55,1,1067,}, + {1,1201,2,55,1,174,2,65,1,1239,2,65,1,175,2,55,1,1067,}, + {1,1201,2,55,1,174,2,65,1,1239,2,65,1,175,2,53,1,1069,}, + {1,1201,2,55,1,174,2,65,1,1239,2,65,1,175,2,53,1,1069,}, + {1,1201,2,55,1,175,2,66,1,1237,2,65,1,174,2,54,1,1069,}, + {1,1203,2,55,1,173,2,66,1,1237,2,64,1,175,2,54,1,1069,}, + {1,1203,2,55,1,173,2,66,1,1237,2,64,1,175,2,54,1,1069,}, + {1,1205,2,53,1,176,2,63,1,1237,2,62,1,177,2,53,1,1070,}, + {1,1208,2,50,1,178,2,61,1,1237,2,61,1,178,2,50,1,1073,}, + {1,1208,2,50,1,178,2,61,1,1237,2,61,1,178,2,50,1,1073,}, + {1,1209,2,50,1,179,2,60,1,1234,2,61,1,178,2,50,1,1075,}, + {1,1209,2,52,1,177,2,60,1,1234,2,59,1,180,2,49,1,1076,}, + {1,1209,2,52,1,177,2,60,1,1234,2,59,1,180,2,49,1,1076,}, + {1,1211,2,51,1,177,2,61,1,1230,2,61,1,177,2,52,1,1076,}, + {1,1211,2,53,1,175,2,63,1,1227,2,62,1,175,2,52,1,1078,}, + {1,1211,2,53,1,175,2,63,1,1227,2,62,1,175,2,52,1,1078,}, + {1,1211,2,53,1,175,2,64,1,1224,2,64,1,175,2,52,1,1078,}, + {1,1211,2,53,1,175,2,64,1,1224,2,64,1,175,2,52,1,1078,}, + {1,1212,2,54,1,173,2,66,1,1221,2,64,1,175,2,53,1,1078,}, + {1,1212,2,54,1,175,2,64,1,1221,2,64,1,175,2,52,1,1079,}, + {1,1212,2,54,1,175,2,64,1,1221,2,64,1,175,2,52,1,1079,}, + {1,1214,2,52,1,175,2,64,1,1219,2,64,1,177,2,52,1,1079,}, + {1,1216,2,50,1,176,2,64,1,1218,2,64,1,177,2,50,1,1081,}, + {1,1216,2,50,1,176,2,64,1,1218,2,64,1,177,2,50,1,1081,}, + {1,1219,2,47,1,176,2,64,1,1218,2,64,1,177,2,47,1,1084,}, + {1,1220,2,46,1,178,2,62,1,1218,2,63,1,176,2,46,1,1087,}, + {1,1220,2,46,1,178,2,62,1,1218,2,63,1,176,2,46,1,1087,}, + {1,1222,2,44,1,178,2,62,1,1217,2,64,1,176,2,46,1,1087,}, + {1,1222,2,44,1,178,2,62,1,1217,2,64,1,176,2,46,1,1087,}, + {1,1222,2,45,1,180,2,61,1,1215,2,61,1,179,2,44,1,1089,}, + {1,1223,2,44,1,181,2,60,1,1215,2,59,1,181,2,43,1,1090,}, + {1,1223,2,44,1,181,2,60,1,1215,2,59,1,181,2,43,1,1090,}, + {1,1225,2,42,1,183,2,58,1,1215,2,57,1,183,2,43,1,1090,}, + {1,1226,2,41,1,185,2,56,1,1215,2,56,1,184,2,41,1,1092,}, + {1,1226,2,41,1,185,2,56,1,1215,2,56,1,184,2,41,1,1092,}, + {1,1228,2,39,1,185,2,56,1,1215,2,56,1,184,2,39,1,1094,}, + {1,1230,2,37,1,185,2,56,1,1215,2,54,1,186,2,36,1,1097,}, + {1,1230,2,37,1,185,2,56,1,1215,2,54,1,186,2,36,1,1097,}, + {1,1231,2,36,1,186,2,55,1,1215,2,54,1,186,2,35,1,1098,}, + {1,1233,2,34,1,186,2,55,1,1215,2,54,1,186,2,35,1,1098,}, + {1,1233,2,34,1,186,2,55,1,1215,2,54,1,186,2,35,1,1098,}, + {1,1234,2,33,1,186,2,55,1,1213,2,55,1,187,2,33,1,1100,}, + {1,1234,2,33,1,186,2,55,1,1213,2,55,1,187,2,33,1,1100,}, + {1,1236,2,31,1,188,2,54,1,1212,2,53,1,189,2,32,1,1101,}, + {1,1237,2,30,1,191,2,51,1,1210,2,54,1,190,2,30,1,1103,}, + {1,1237,2,30,1,191,2,51,1,1210,2,54,1,190,2,30,1,1103,}, + {1,1239,2,28,1,194,2,50,1,1207,2,51,1,194,2,27,1,1106,}, + {1,1242,2,25,1,196,2,51,1,1201,2,53,1,195,2,25,1,1108,}, + {1,1242,2,25,1,196,2,51,1,1201,2,53,1,195,2,25,1,1108,}, + {1,1244,2,23,1,196,2,54,1,1196,2,53,1,197,2,22,1,1111,}, + {1,1245,2,22,1,197,2,53,1,1196,2,53,1,196,2,23,1,1111,}, + {1,1245,2,22,1,197,2,53,1,1196,2,53,1,196,2,23,1,1111,}, + {1,1245,2,22,1,197,2,55,1,1193,2,53,1,197,2,22,1,1112,}, + {1,1245,2,22,1,197,2,55,1,1193,2,53,1,197,2,22,1,1112,}, + {1,1247,2,20,1,199,2,53,1,1193,2,53,1,197,2,20,1,1114,}, + {1,1248,2,19,1,200,2,52,1,1193,2,51,1,199,2,19,1,1115,}, + {1,1248,2,19,1,200,2,52,1,1193,2,51,1,199,2,19,1,1115,}, + {1,1250,2,17,1,205,2,47,1,1193,2,47,1,203,2,17,1,1117,}, + {1,1255,2,12,1,208,2,44,1,1191,2,45,1,208,2,11,1,1122,}, + {1,1255,2,12,1,208,2,44,1,1191,2,45,1,208,2,11,1,1122,}, + {1,1258,2,9,1,210,2,42,1,1191,2,44,1,209,2,8,1,1125,}, + {1,1259,2,8,1,210,2,43,1,1190,2,42,1,211,2,7,1,1126,}, + {1,1259,2,8,1,210,2,43,1,1190,2,42,1,211,2,7,1,1126,}, + {1,1261,2,6,1,211,2,42,1,1190,2,42,1,211,2,7,1,1126,}, + {1,1261,2,6,1,211,2,42,1,1189,2,42,1,212,2,5,1,1128,}, + {1,1261,2,6,1,211,2,42,1,1189,2,42,1,212,2,5,1,1128,}, + {1,1262,2,4,1,215,2,41,1,1187,2,39,1,217,2,1,1,1130,}, + {1,1262,2,4,1,215,2,41,1,1187,2,39,1,217,2,1,1,1130,}, + {1,1486,2,37,1,1182,2,38,1,1353,}, + {1,1491,2,36,1,1177,2,36,1,1356,}, + {1,1491,2,36,1,1177,2,36,1,1356,}, + {1,1494,2,34,1,1173,2,36,1,1359,}, + {1,1495,2,35,1,1171,2,33,1,1362,}, + {1,1495,2,35,1,1171,2,33,1,1362,}, + {1,1497,2,34,1,1168,2,35,1,1362,}, + {1,1498,2,27,1,2,2,4,1,1167,2,34,1,1364,}, + {1,1498,2,27,1,2,2,4,1,1167,2,34,1,1364,}, + {1,1500,2,31,1,1167,2,32,1,1366,}, + {1,1500,2,31,1,1167,2,32,1,1366,}, + {1,1502,2,29,1,1167,2,31,1,1367,}, + {1,1508,2,23,1,1167,2,25,1,1373,}, + {1,1508,2,23,1,1167,2,25,1,1373,}, + {1,1519,2,12,1,1168,2,13,1,1384,}, + {1,1523,2,7,1,1171,2,6,1,1389,}, + {1,1523,2,7,1,1171,2,6,1,1389,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, +} +} \ No newline at end of file diff --git a/maps/crab_defender/crumbly_walls.lua b/maps/crab_defender/crumbly_walls.lua new file mode 100644 index 00000000..205994aa --- /dev/null +++ b/maps/crab_defender/crumbly_walls.lua @@ -0,0 +1,27 @@ +local Event = require 'utils.event' +local FDT = require 'maps.crab_defender.table' +local math_random = math.random + +local rock_raffle = {'sand-rock-big', 'rock-big', 'rock-big', 'rock-big', 'rock-huge'} + +local function on_entity_died(event) + local crumbly_walls_unlocked = FDT.get('crumbly_walls_unlocked') + if not crumbly_walls_unlocked then + return + end + local entity = event.entity + if not entity.valid then + return + end + if entity.name ~= 'stone-wall' then + return + end + if math_random(1, 4) == 1 then + return + end + entity.surface.create_entity( + {name = rock_raffle[math_random(1, #rock_raffle)], position = entity.position, force = 'player'} + ) +end + +Event.add(defines.events.on_entity_died, on_entity_died) diff --git a/maps/crab_defender/explosive_gun_bullets.lua b/maps/crab_defender/explosive_gun_bullets.lua new file mode 100644 index 00000000..034876f7 --- /dev/null +++ b/maps/crab_defender/explosive_gun_bullets.lua @@ -0,0 +1,46 @@ +local radius = 3 + +local function splash_damage(surface, position, final_damage_amount) + local damage = math.random(math.floor(final_damage_amount * 3), math.floor(final_damage_amount * 4)) + for _, e in pairs( + surface.find_entities_filtered( + {area = {{position.x - radius, position.y - radius}, {position.x + radius, position.y + radius}}} + ) + ) do + if e.valid and e.health then + local distance_from_center = math.sqrt((e.position.x - position.x) ^ 2 + (e.position.y - position.y) ^ 2) + if distance_from_center <= radius then + local damage_distance_modifier = 1 - distance_from_center / radius + if damage > 0 then + if math.random(1, 3) == 1 then + surface.create_entity({name = 'explosion', position = e.position}) + end + e.damage(damage * damage_distance_modifier, 'player', 'explosion') + end + end + end + end +end + +local function explosive_bullets(event) + if math.random(1, 3) ~= 1 then + return false + end + if event.damage_type.name ~= 'physical' then + return false + end + local player = event.cause + if player.shooting_state.state == defines.shooting.not_shooting then + return false + end + local selected_weapon = player.get_inventory(defines.inventory.character_guns)[player.selected_gun_index] + if selected_weapon.name ~= 'submachine-gun' and selected_weapon.name ~= 'pistol' then + return false + end + + player.surface.create_entity({name = 'explosion', position = event.entity.position}) + + splash_damage(player.surface, event.entity.position, event.final_damage_amount) +end + +return explosive_bullets diff --git a/maps/crab_defender/fish_defender_layout.lua b/maps/crab_defender/fish_defender_layout.lua new file mode 100644 index 00000000..4da3e39d --- /dev/null +++ b/maps/crab_defender/fish_defender_layout.lua @@ -0,0 +1,2054 @@ +return { +height = 2048, +width = 4096, +data = { + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,2437,2,3,1,1656,}, + {1,2437,2,6,1,82,2,25,1,1546,}, + {1,2437,2,16,1,65,2,38,1,1540,}, + {1,2437,2,17,1,62,2,41,1,1539,}, + {1,2437,2,4,1,2,2,13,1,56,2,16,1,19,2,14,1,1535,}, + {1,2437,2,5,1,1,2,15,1,50,2,18,1,24,2,14,1,1532,}, + {1,2439,2,3,1,12,2,5,1,49,2,7,1,42,2,8,1,1531,}, + {1,2439,2,4,1,12,2,5,1,44,2,10,1,20,2,8,1,18,2,8,1,1528,}, + {1,2440,2,4,1,11,2,6,1,41,2,10,1,13,2,25,1,10,2,10,1,1526,}, + {1,2440,2,4,1,13,2,5,1,40,2,4,1,18,2,27,1,14,2,5,1,1526,}, + {1,2442,2,3,1,13,2,5,1,36,2,7,1,9,2,42,1,9,2,7,1,1523,}, + {1,2442,2,4,1,13,2,6,1,33,2,7,1,9,2,45,1,8,2,7,1,1522,}, + {1,2443,2,4,1,13,2,5,1,32,2,5,1,11,2,8,1,31,2,8,1,10,2,5,1,1521,}, + {1,2443,2,4,1,14,2,5,1,29,2,5,1,8,2,11,1,35,2,10,1,7,2,6,1,1519,}, + {1,2444,2,3,1,15,2,5,1,27,2,6,1,7,2,10,1,39,2,9,1,7,2,6,1,1518,}, + {1,2445,2,2,1,16,2,5,1,25,2,4,1,10,2,5,1,48,2,5,1,9,2,5,1,1517,}, + {1,2445,2,4,1,6,2,4,1,5,2,5,1,23,2,5,1,6,2,8,1,50,2,8,1,6,2,5,1,1516,}, + {1,2446,2,4,1,5,2,6,1,4,2,5,1,21,2,5,1,6,2,8,1,52,2,8,1,5,2,7,1,1514,}, + {1,2446,2,4,1,4,2,7,1,5,2,5,1,19,2,4,1,7,2,5,1,60,2,4,1,7,2,5,1,1514,}, + {1,2447,2,3,1,5,2,7,1,5,2,4,1,18,2,5,1,5,2,6,1,61,2,6,1,6,2,6,1,1512,}, + {1,2448,2,3,1,4,2,7,1,6,2,5,1,16,2,4,1,5,2,6,1,63,2,6,1,6,2,6,1,1511,}, + {1,2448,2,4,1,5,2,6,1,6,2,4,1,16,2,2,1,7,2,4,1,68,2,3,1,8,2,4,1,1511,}, + {1,2448,2,5,1,4,2,8,1,4,2,5,1,13,2,4,1,5,2,5,1,70,2,5,1,6,2,5,1,1509,}, + {1,2449,2,4,1,4,2,8,1,5,2,5,1,12,2,4,1,4,2,5,1,71,2,5,1,7,2,5,1,1508,}, + {1,2449,2,4,1,4,2,4,1,2,2,2,1,7,2,4,1,10,2,5,1,4,2,4,1,75,2,3,1,7,2,4,1,1508,}, + {1,2449,2,4,1,4,2,5,1,1,2,4,1,5,2,5,1,9,2,4,1,4,2,4,1,76,2,5,1,5,2,6,1,1506,}, + {1,2451,2,2,1,4,2,5,1,1,2,5,1,5,2,4,1,9,2,3,1,4,2,4,1,58,2,3,1,17,2,4,1,7,2,4,1,1506,}, + {1,2451,2,2,1,4,2,5,1,3,2,3,1,7,2,3,1,8,2,2,1,5,2,4,1,56,2,7,1,17,2,3,1,6,2,5,1,1505,}, + {1,2451,2,3,1,4,2,4,1,3,2,5,1,5,2,4,1,6,2,3,1,4,2,5,1,47,2,20,1,13,2,5,1,5,2,5,1,1504,}, + {1,2451,2,4,1,3,2,4,1,4,2,4,1,6,2,4,1,4,2,4,1,4,2,3,1,48,2,21,1,14,2,4,1,6,2,5,1,1503,}, + {1,2451,2,4,1,4,2,3,1,5,2,4,1,7,2,3,1,3,2,4,1,4,2,2,1,48,2,7,1,11,2,5,1,15,2,3,1,6,2,5,1,1502,}, + {1,2451,2,5,1,4,2,2,1,5,2,6,1,5,2,4,1,2,2,4,1,2,2,4,1,45,2,10,1,12,2,6,1,13,2,5,1,4,2,5,1,1502,}, + {1,2451,2,5,1,4,2,2,1,7,2,4,1,5,2,5,1,1,2,4,1,2,2,4,1,43,2,8,1,17,2,5,1,14,2,4,1,6,2,4,1,1501,}, + {1,2452,2,4,1,4,2,2,1,7,2,5,1,6,2,8,1,1,2,4,1,44,2,4,1,24,2,3,1,15,2,2,1,7,2,4,1,1500,}, + {1,2452,2,4,1,4,2,3,1,7,2,5,1,5,2,8,1,1,2,4,1,43,2,5,1,16,2,3,1,5,2,5,1,13,2,4,1,5,2,5,1,1499,}, + {1,2452,2,4,1,4,2,3,1,8,2,5,1,5,2,11,1,44,2,5,1,14,2,6,1,5,2,4,1,13,2,5,1,5,2,4,1,1499,}, + {1,2452,2,4,1,4,2,4,1,8,2,5,1,5,2,9,1,45,2,4,1,15,2,7,1,6,2,3,1,14,2,3,1,7,2,2,1,1499,}, + {1,2452,2,4,1,4,2,4,1,8,2,6,1,5,2,8,1,45,2,5,1,13,2,9,1,5,2,5,1,13,2,4,1,5,2,4,1,1497,}, + {1,2453,2,3,1,4,2,4,1,10,2,5,1,7,2,5,1,45,2,5,1,13,2,10,1,5,2,4,1,13,2,5,1,4,2,4,1,1497,}, + {1,2453,2,3,1,4,2,4,1,11,2,5,1,7,2,4,1,45,2,5,1,13,2,10,1,6,2,4,1,13,2,4,1,4,2,5,1,1496,}, + {1,2453,2,3,1,4,2,4,1,11,2,6,1,6,2,4,1,46,2,8,1,10,2,9,1,7,2,4,1,12,2,5,1,4,2,4,1,1496,}, + {1,2454,2,2,1,4,2,4,1,13,2,5,1,5,2,4,1,46,2,9,1,12,2,5,1,8,2,5,1,13,2,4,1,4,2,4,1,1495,}, + {1,2454,2,2,1,4,2,4,1,14,2,5,1,4,2,4,1,48,2,11,1,22,2,4,1,13,2,4,1,5,2,4,1,1494,}, + {1,2454,2,2,1,4,2,4,1,14,2,14,1,48,2,14,1,18,2,5,1,12,2,5,1,4,2,4,1,1494,}, + {1,2454,2,2,1,4,2,4,1,16,2,12,1,53,2,10,1,19,2,3,1,14,2,3,1,4,2,4,1,1494,}, + {1,2454,2,2,1,4,2,4,1,8,4,1,1,9,2,10,1,56,2,11,1,15,2,3,1,15,2,3,1,4,2,4,1,1493,}, + {1,2454,2,2,1,4,2,4,1,19,2,8,1,58,2,13,1,12,2,3,1,15,2,4,1,4,2,3,1,1493,}, + {1,2454,2,2,1,4,2,4,1,90,2,9,1,10,2,3,1,17,2,4,1,3,2,3,1,1493,}, + {1,2454,2,2,1,4,2,4,1,93,2,19,1,18,2,4,1,3,2,3,1,1492,}, + {1,2454,2,2,1,4,2,4,1,94,2,18,1,19,2,4,1,2,2,4,1,1491,}, + {1,2453,2,3,1,4,2,4,1,101,2,10,1,20,2,5,1,1,2,4,1,1491,}, + {1,2453,2,3,1,4,2,4,1,103,2,6,1,23,2,9,1,1491,}, + {1,2452,4,1,2,3,1,4,2,4,1,105,2,3,1,25,2,8,1,1491,}, + {1,2452,2,4,1,4,2,4,1,134,2,7,1,1491,}, + {1,2452,2,4,1,4,2,4,1,134,2,7,1,1491,}, + {1,2452,2,4,1,4,2,3,1,135,2,8,1,1490,}, + {1,2452,2,4,1,4,2,3,1,135,2,8,1,1490,}, + {1,2452,2,4,1,4,2,2,1,78,2,2,1,55,2,9,1,1490,}, + {1,2452,2,4,1,4,2,2,1,75,2,7,1,52,2,10,1,1490,}, + {1,2452,2,4,1,4,2,2,1,75,2,8,1,50,2,4,1,3,2,3,1,1491,}, + {1,2451,2,5,1,4,2,2,1,75,2,12,1,45,2,5,1,3,2,3,1,1491,}, + {1,2451,2,5,1,4,2,2,1,75,2,13,1,43,2,5,1,3,2,4,1,1491,}, + {1,2451,2,5,1,3,2,3,1,76,2,3,1,5,2,5,1,41,2,4,1,5,2,4,1,1491,}, + {1,2451,2,4,1,3,2,4,1,77,2,2,1,6,2,8,1,36,2,5,1,5,2,4,1,1491,}, + {1,2451,2,3,1,4,2,4,1,77,2,4,1,6,2,7,1,33,2,6,1,6,2,4,1,1491,}, + {1,2451,2,2,1,5,2,4,1,77,2,4,1,8,2,6,1,32,2,4,1,8,2,2,1,1493,}, + {1,2451,2,2,1,4,2,5,1,77,2,6,1,7,2,11,1,22,2,8,1,7,2,3,1,1493,}, + {1,2451,2,2,1,4,2,5,1,78,2,6,1,8,2,11,1,18,2,8,1,8,2,4,1,1493,}, + {1,2451,2,2,1,4,2,5,1,80,2,5,1,12,2,9,1,12,2,8,1,10,2,4,1,1494,}, + {1,2450,2,3,1,4,2,4,1,82,2,7,1,10,2,27,1,11,2,4,1,1494,}, + {1,2449,2,4,1,4,2,4,1,83,2,7,1,11,2,23,1,13,2,4,1,1494,}, + {1,2449,2,4,1,4,2,3,1,87,2,5,1,46,2,4,1,1494,}, + {1,2449,2,4,1,4,2,2,1,89,2,9,1,34,2,1,1,6,2,4,1,1494,}, + {1,2005,4,8,1,435,2,5,1,4,2,2,1,90,2,9,1,32,2,3,1,5,2,4,1,1494,}, + {1,2005,4,8,1,435,2,5,1,4,2,2,1,94,2,6,1,30,2,4,1,5,2,3,1,1495,}, + {1,2003,23,2,2,9,4,2,1,432,2,4,1,4,2,3,1,95,2,39,1,5,2,3,1,1495,}, + {1,2003,23,2,2,9,4,2,1,432,2,3,1,4,2,4,1,97,2,37,1,5,2,2,1,1496,}, + {1,2003,23,2,2,9,4,2,1,432,2,2,1,5,2,4,1,103,2,23,1,4,2,4,1,5,2,2,1,1496,}, + {1,1997,4,2,2,15,23,2,1,431,2,3,1,4,2,5,1,105,2,20,1,5,2,4,1,4,2,3,1,1496,}, + {1,1997,4,2,2,15,23,2,1,430,2,4,1,4,2,4,1,130,2,3,1,5,2,4,1,1496,}, + {1,1565,23,5,4,3,1,421,23,3,2,19,1,430,2,4,1,4,2,4,1,129,2,4,1,4,2,4,1,1497,}, + {1,1565,23,5,4,3,1,421,23,3,2,19,1,430,2,4,1,4,2,3,1,130,2,4,1,4,2,4,1,1497,}, + {1,1564,4,1,2,8,1,421,2,24,1,427,2,5,1,4,2,2,1,130,2,4,1,5,2,4,1,1497,}, + {1,1565,2,8,1,421,2,24,1,427,2,4,1,5,2,2,1,130,2,4,1,5,2,3,1,1498,}, + {1,1564,4,1,2,8,1,421,2,24,1,427,2,3,1,4,2,4,1,17,2,12,1,101,2,3,1,5,2,3,1,1499,}, + {1,1558,4,1,23,2,1,3,2,10,1,416,4,1,2,28,1,426,2,3,1,4,2,4,1,16,2,13,1,101,2,2,1,5,2,4,1,1499,}, + {1,1558,4,1,23,2,1,3,2,10,4,1,1,415,4,1,2,28,1,425,2,3,1,4,2,5,1,13,2,16,1,99,2,4,1,4,2,5,1,1499,}, + {1,1558,23,1,2,17,1,409,2,34,1,424,2,4,1,3,4,1,2,5,1,11,2,18,1,98,2,5,1,4,2,4,1,1500,}, + {1,1558,23,1,2,17,1,409,2,34,1,424,2,4,1,4,2,4,1,11,2,5,1,9,2,5,1,98,2,4,1,5,2,4,1,1500,}, + {1,1556,4,2,2,18,4,2,1,404,23,3,2,34,1,424,2,4,1,4,2,3,1,9,2,7,1,10,2,5,1,98,2,3,1,6,2,2,1,1502,}, + {1,1556,4,2,2,18,4,2,1,404,23,3,2,34,1,423,2,4,1,5,2,3,1,7,2,9,1,10,2,4,1,98,2,3,1,6,2,3,1,1502,}, + {1,1556,4,2,2,18,4,2,1,404,23,3,2,33,23,1,1,423,2,3,1,5,2,3,1,7,2,5,1,11,2,8,1,97,2,4,1,5,2,4,1,1502,}, + {1,1558,2,20,1,404,23,3,2,34,1,423,2,2,1,5,2,4,1,5,2,7,1,8,2,12,1,96,2,4,1,4,2,5,1,1502,}, + {1,1556,4,2,2,20,1,404,23,3,2,34,1,422,2,3,1,5,2,4,1,3,2,8,1,7,2,14,1,95,2,4,1,5,2,4,1,1503,}, + {1,1553,4,2,1,1,2,22,4,1,1,403,2,37,4,3,1,418,2,4,1,4,2,5,1,2,2,6,1,9,2,6,1,2,2,4,1,1,2,3,1,94,2,2,1,7,2,3,1,1504,}, + {1,1553,4,1,1,1,4,1,2,22,4,1,1,403,2,37,4,3,1,418,2,4,1,4,2,11,1,8,2,8,1,3,2,4,1,2,2,3,1,92,2,3,1,6,2,3,1,1505,}, + {1,1550,23,2,2,26,4,1,1,401,2,39,4,3,1,417,2,4,1,5,2,11,1,7,2,8,1,4,2,4,1,2,2,4,1,90,2,4,1,5,2,4,1,1505,}, + {1,1550,23,2,2,26,23,1,1,401,2,39,4,3,1,417,2,3,1,6,2,8,1,10,2,4,1,9,2,3,1,3,2,3,1,89,2,5,1,4,2,5,1,1505,}, + {1,1550,23,2,2,26,23,1,1,401,2,39,4,3,1,417,2,3,1,5,2,9,1,6,2,7,1,11,2,2,1,3,2,5,1,87,2,4,1,5,2,4,1,1506,}, + {1,1547,4,3,2,29,1,395,2,48,1,415,2,4,1,5,2,9,1,6,2,7,1,12,2,3,1,3,2,5,1,85,2,4,1,6,2,3,1,1507,}, + {1,1547,4,3,2,28,23,1,1,395,2,48,1,415,2,4,1,5,2,7,1,7,2,5,1,15,2,3,1,4,2,4,1,85,2,3,1,7,2,2,1,1508,}, + {1,1544,4,3,2,35,4,2,1,389,4,1,2,48,1,415,2,4,1,5,2,6,1,6,2,6,1,16,2,4,1,4,2,5,1,81,2,5,1,5,2,4,1,1508,}, + {1,1544,4,3,2,35,4,2,1,389,4,1,2,48,1,414,2,4,1,6,2,4,1,7,2,6,1,18,2,4,1,4,2,5,1,80,2,4,1,5,2,5,1,1508,}, + {1,1544,4,3,2,37,4,1,1,388,4,1,2,50,1,412,2,3,1,18,2,3,1,21,2,4,1,5,2,4,1,80,2,2,1,7,2,3,1,1510,}, + {1,1544,4,3,2,37,4,1,1,388,4,1,2,50,1,411,2,4,1,15,2,5,1,23,2,4,1,5,2,5,1,76,2,4,1,6,2,3,1,1511,}, + {1,1544,4,3,2,37,4,1,1,388,4,1,2,50,1,410,2,4,1,14,2,7,1,24,2,4,1,5,2,5,1,75,2,4,1,5,2,4,1,1511,}, + {1,1544,2,41,23,4,2,2,1,10,4,1,2,2,23,2,4,1,1,366,2,51,1,410,2,4,1,14,2,4,1,27,2,4,1,6,2,4,1,74,2,4,1,5,2,5,1,1511,}, + {1,1544,2,41,23,4,2,2,1,11,2,2,23,2,4,1,1,366,2,51,1,409,2,5,1,12,2,6,1,28,2,4,1,6,2,6,1,70,2,4,1,6,2,4,1,1512,}, + {1,1544,2,62,23,1,1,362,4,2,2,53,1,409,2,3,1,13,2,6,1,30,2,4,1,6,2,5,1,69,2,4,1,6,2,4,1,1513,}, + {1,1544,2,62,23,1,1,362,4,2,2,53,1,408,2,4,1,12,2,5,1,33,2,4,1,8,2,3,1,67,2,5,1,5,2,4,1,1514,}, + {1,1537,4,2,2,1,23,1,1,1,4,2,2,63,23,3,4,2,1,356,4,1,2,55,4,1,1,406,2,4,1,12,2,6,1,34,2,4,1,7,2,6,1,63,2,5,1,5,2,5,1,1514,}, + {1,1537,4,2,23,2,1,1,4,2,2,63,23,3,4,2,1,356,4,1,2,55,4,1,1,406,2,4,1,3,4,1,1,7,2,5,1,36,2,5,1,7,2,6,1,61,2,5,1,6,2,4,1,1515,}, + {1,1537,4,2,23,2,1,1,4,2,2,63,23,3,4,2,1,356,4,1,2,55,4,1,1,405,2,3,1,13,2,4,1,39,2,4,1,8,2,5,1,59,2,5,1,6,2,3,1,1517,}, + {1,1537,23,2,2,73,23,1,4,2,1,348,2,61,4,1,1,404,2,4,1,12,2,5,1,40,2,5,1,7,2,8,1,53,2,6,1,6,2,4,1,1517,}, + {1,1537,23,2,2,73,23,1,4,2,1,348,2,61,4,1,1,403,2,5,1,11,2,4,1,43,2,5,1,8,2,7,1,52,2,5,1,6,2,4,1,1518,}, + {1,1537,2,76,23,2,1,347,23,1,2,61,4,1,1,403,2,4,1,11,2,4,1,46,2,4,1,10,2,5,1,50,2,5,1,7,2,2,1,1520,}, + {1,1537,2,76,23,2,1,347,23,1,2,61,4,1,1,402,2,5,1,10,2,5,1,46,2,6,1,8,2,9,1,43,2,7,1,6,2,4,1,1520,}, + {1,1536,4,1,2,76,23,2,1,347,4,1,2,61,4,1,1,402,2,3,1,12,2,4,1,49,2,5,1,10,2,8,1,40,2,6,1,7,2,4,1,1521,}, + {1,1537,2,76,23,2,1,347,4,1,2,61,4,1,1,401,2,4,1,11,2,4,1,52,2,5,1,11,2,7,1,37,2,5,1,8,2,4,1,1522,}, + {1,1536,4,1,2,76,23,2,1,347,4,1,2,61,4,1,1,400,2,5,1,10,2,4,1,53,4,1,2,7,1,9,2,12,1,27,2,8,1,7,2,5,1,1523,}, + {1,1536,2,77,1,347,4,3,2,62,1,400,2,4,1,11,2,4,1,55,2,6,1,12,2,11,1,24,2,7,1,8,2,5,1,1524,}, + {1,1536,2,77,1,347,4,2,23,1,2,62,1,400,2,4,1,10,2,3,1,60,2,4,1,14,2,13,1,15,2,9,1,9,2,4,1,1526,}, + {1,1536,2,77,23,2,1,343,4,2,2,65,1,399,2,4,1,9,2,5,1,60,2,9,1,11,2,34,1,8,2,6,1,1526,}, + {1,1536,2,77,23,2,1,343,4,2,2,65,1,399,2,3,1,10,2,4,1,64,2,7,1,17,2,22,1,12,2,5,1,1528,}, + {1,1533,2,80,23,2,1,343,23,2,2,67,1,396,2,4,1,9,2,4,1,67,2,8,1,20,2,12,1,15,2,5,1,1529,}, + {1,1533,2,80,23,2,1,343,23,2,2,67,1,395,2,5,1,7,2,5,1,69,2,11,1,19,2,7,1,9,4,1,1,3,2,8,1,1530,}, + {1,1533,2,80,23,2,1,343,23,2,2,67,1,395,2,4,1,8,2,4,1,74,2,8,1,37,2,7,1,1532,}, + {1,1530,23,1,2,82,23,2,1,343,23,2,2,67,1,395,2,3,1,7,2,5,1,77,2,11,1,30,2,7,1,1534,}, + {1,1530,23,1,2,82,23,2,1,343,23,2,2,67,1,394,2,3,1,5,2,7,1,80,2,19,1,13,2,13,1,1535,}, + {1,1530,23,1,2,82,23,2,1,343,2,69,1,393,2,4,1,4,2,7,1,86,2,16,1,9,2,11,1,1539,}, + {1,1530,23,1,2,82,23,2,1,343,2,69,1,393,2,13,1,92,2,30,1,1541,}, + {1,1528,2,87,4,2,1,332,4,2,2,76,1,394,2,11,1,95,2,27,1,1542,}, + {1,1528,2,87,4,2,1,332,4,2,2,76,1,2069,}, + {1,1528,2,87,4,2,1,332,4,2,2,76,1,2069,}, + {1,1528,2,87,23,2,1,332,4,2,2,76,23,2,2,2,1,1,4,1,1,2063,}, + {1,1528,2,87,23,2,1,332,4,2,2,76,23,2,2,2,4,2,1,2063,}, + {1,1477,4,2,2,1,4,3,1,42,4,3,2,89,4,2,1,330,2,82,23,2,1,2063,}, + {1,1477,4,2,2,1,4,3,1,42,4,3,2,89,4,2,1,330,2,82,23,2,1,2063,}, + {1,1474,4,1,2,8,4,2,1,37,2,97,1,326,4,1,2,87,4,1,1,2062,}, + {1,1474,4,1,2,8,4,2,1,37,23,1,2,96,1,326,4,1,2,87,1,2063,}, + {1,1474,4,1,2,8,4,2,1,37,2,97,1,326,4,1,2,87,1,2063,}, + {1,1468,4,2,23,2,2,13,1,35,4,2,2,97,4,2,1,321,4,1,23,2,2,88,1,2063,}, + {1,1468,4,2,23,1,2,14,1,35,4,2,2,97,4,2,1,320,4,2,23,2,2,88,1,2063,}, + {1,1468,23,1,4,1,2,15,4,1,1,34,23,2,2,97,4,2,1,320,23,2,2,90,4,1,1,2062,}, + {1,1468,4,1,23,1,2,15,4,1,1,33,4,1,23,2,2,97,4,2,1,320,23,2,2,90,1,2063,}, + {1,1466,4,2,2,20,4,3,1,28,2,102,23,4,4,1,1,314,4,1,2,92,1,1,4,2,1,2060,}, + {1,1466,4,2,2,20,4,3,1,19,4,1,1,8,2,102,23,5,1,314,4,1,2,92,1,1,4,3,1,312,4,3,23,3,2,13,23,4,4,3,1,1721,}, + {1,1465,4,1,2,25,1,22,4,1,1,2,4,3,2,107,1,310,2,95,23,2,1,1,23,2,4,2,1,181,4,7,23,11,4,5,1,101,4,3,23,2,2,28,23,1,4,3,1,1716,}, + {1,1465,4,1,2,25,1,1,4,1,1,20,4,1,1,2,4,3,2,107,1,310,2,95,23,2,1,1,23,2,4,2,1,176,4,4,23,2,2,22,23,2,4,3,1,93,4,2,23,1,2,37,23,1,4,2,1,360,4,47,1,58,4,48,1,1200,}, + {1,1465,4,1,2,25,1,2,4,1,1,17,4,1,1,1,4,1,1,2,4,3,2,107,1,3,4,1,1,306,2,95,23,2,1,1,23,2,4,2,1,173,4,1,23,1,2,35,23,1,4,2,1,86,4,1,23,1,2,45,23,1,4,1,1,66,4,1,1,153,4,1,1,135,4,1,2,48,4,1,1,55,4,1,2,48,1,1200,}, + {1,1463,4,2,2,29,1,3,4,3,1,9,4,2,2,3,23,5,2,107,1,308,2,97,23,2,1,1,23,2,2,2,4,2,1,166,4,2,23,1,2,43,23,1,4,1,1,80,4,1,23,1,2,52,4,1,1,61,23,1,2,46,23,1,1,61,23,1,2,47,4,1,1,14,2,110,4,1,1,10,23,1,2,48,1,54,4,1,2,48,23,1,1,1200,}, + {1,1463,4,2,2,29,1,3,4,3,1,9,4,2,2,3,23,4,2,108,1,308,2,97,23,2,1,1,23,2,2,2,4,2,1,164,4,1,23,1,2,50,4,2,1,73,4,2,23,1,2,56,23,1,4,1,1,58,2,48,23,1,1,59,23,1,2,48,23,1,1,14,2,110,4,1,1,10,4,1,2,48,4,1,1,53,23,1,2,48,1,1201,}, + {1,1463,2,31,4,2,2,4,1,2,23,1,2,126,1,303,2,106,1,164,4,1,23,1,2,54,23,1,4,1,1,69,4,1,23,1,2,62,4,1,1,56,2,49,4,1,1,57,4,1,2,49,23,1,1,14,2,110,4,1,1,11,23,1,2,48,1,52,4,1,2,48,4,1,1,1201,}, + {1,1463,2,31,4,2,2,4,1,2,23,1,2,126,1,303,2,106,1,161,4,1,23,1,2,60,4,1,1,65,4,1,23,1,2,66,4,1,1,54,2,50,4,1,1,55,4,1,2,50,23,1,1,14,2,110,4,1,1,12,2,48,23,1,1,51,23,1,2,48,1,1202,}, + {1,1460,4,3,2,167,23,1,2,10,23,2,1,285,4,3,2,107,1,159,4,1,2,65,23,1,1,9,4,1,1,51,4,1,23,1,2,24,23,22,2,24,23,1,1,2,4,1,1,2,4,1,1,46,2,51,4,1,1,54,2,51,23,1,1,14,2,110,4,1,1,12,4,1,2,48,4,1,1,49,4,1,2,48,4,1,1,1202,}, + {1,1460,4,3,2,168,23,1,2,9,23,2,1,285,4,3,2,107,1,157,4,1,2,26,23,18,2,25,4,1,1,57,4,1,23,1,2,20,23,33,2,21,4,1,1,50,2,52,1,53,23,1,2,51,23,1,1,14,2,110,4,1,1,13,23,1,2,47,23,1,1,49,2,48,23,1,1,1203,}, + {1,1460,4,3,2,168,23,1,2,9,23,2,1,285,4,3,2,107,1,155,4,1,2,22,23,29,2,22,4,1,1,4,4,1,1,48,4,1,23,1,2,19,23,40,2,19,4,1,1,48,2,52,23,1,1,51,4,1,2,52,23,1,1,14,2,110,4,1,1,13,4,1,2,11,23,28,2,9,4,1,1,47,4,1,2,9,23,28,2,11,1,1204,}, + {1,1460,2,186,1,282,2,110,1,146,4,1,1,6,4,1,23,1,2,20,23,36,2,20,4,1,1,45,4,1,1,2,4,1,1,1,4,1,2,18,23,46,2,17,23,1,4,1,1,46,2,53,4,1,1,49,4,1,2,53,23,1,1,14,2,110,4,1,1,14,23,1,2,9,23,30,2,9,1,47,2,9,23,30,2,9,23,1,1,1204,}, + {1,1460,2,186,1,282,2,110,1,152,23,1,2,19,23,42,2,18,23,1,1,48,2,17,23,52,2,16,4,1,1,45,2,9,23,35,2,10,4,1,1,47,4,1,2,10,23,36,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,14,4,1,2,10,23,29,2,9,4,1,1,45,23,1,2,9,23,29,2,10,1,1205,}, + {1,1459,2,187,1,280,23,2,2,112,23,2,1,146,4,1,2,17,23,49,2,17,4,1,1,44,23,1,2,16,23,56,2,15,23,1,4,1,1,43,2,9,23,36,2,10,1,47,2,10,23,37,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,15,23,1,2,9,23,30,2,9,4,1,1,43,4,1,2,9,23,30,2,9,4,1,1,1205,}, + {1,1459,2,187,1,280,23,2,2,112,23,2,1,145,23,1,2,16,23,54,2,15,23,1,4,1,1,40,4,1,2,15,23,61,2,15,23,1,1,42,2,9,23,37,2,10,1,45,23,1,2,9,23,38,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,15,4,1,2,10,23,29,2,9,23,1,1,1,4,1,1,41,23,1,2,8,23,30,2,10,1,1206,}, + {1,1457,2,189,1,280,2,116,1,143,4,1,2,16,23,57,2,16,4,1,1,38,4,1,2,14,23,65,2,14,23,1,1,41,2,9,23,37,2,10,23,1,1,43,4,1,2,10,23,38,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,16,4,1,2,9,23,30,2,9,4,1,1,41,4,1,2,9,23,29,2,10,4,1,1,1206,}, + {1,1457,2,189,1,276,4,1,1,3,2,116,1,142,4,1,2,15,23,61,2,15,23,1,4,1,1,35,23,1,2,14,23,68,2,14,4,1,1,39,2,9,23,38,2,10,4,1,1,41,4,1,2,10,23,39,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,14,4,1,1,2,2,10,23,29,2,9,23,1,1,41,2,9,23,30,2,9,23,1,1,1207,}, + {1,1457,2,189,1,280,2,116,1,140,4,1,23,1,2,14,23,65,2,15,4,1,1,33,2,14,23,72,2,13,4,1,1,38,2,9,23,39,2,10,4,1,1,39,4,1,2,10,23,40,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,17,4,1,2,10,23,29,2,9,4,1,1,39,23,1,2,9,23,29,2,10,4,1,1,1207,}, + {1,1455,4,2,2,189,1,277,4,2,2,119,1,137,4,1,2,14,23,69,2,14,4,1,1,30,4,1,2,13,23,75,2,13,23,1,1,37,2,9,23,40,2,10,4,1,1,38,2,10,23,41,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,18,23,1,2,9,23,30,2,9,1,39,2,9,23,30,2,9,23,1,1,1208,}, + {1,1450,4,1,1,4,4,2,2,189,1,277,4,2,2,119,1,136,4,1,2,13,23,73,2,13,4,1,1,28,4,1,2,13,23,78,2,13,1,36,2,9,23,41,2,9,23,1,1,37,23,1,2,10,23,41,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,17,4,2,2,10,23,29,2,9,23,1,1,37,23,1,2,9,23,29,2,10,1,1209,}, + {1,1455,2,191,1,277,23,2,2,117,23,1,2,1,1,133,4,1,1,1,4,1,2,13,23,75,2,13,4,1,1,26,4,1,2,12,23,81,2,13,4,1,1,34,2,9,23,41,2,10,23,1,1,35,4,1,2,10,23,42,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,19,23,1,2,9,23,30,2,9,4,1,1,35,4,1,2,9,23,30,2,9,4,1,1,1209,}, + {1,1455,2,191,1,277,23,2,2,119,1,134,4,1,2,12,23,78,2,13,23,1,1,24,23,1,2,12,23,84,2,12,1,34,2,9,23,42,2,10,4,2,1,32,4,1,2,10,23,43,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,20,2,10,23,29,2,9,23,1,1,35,2,10,23,29,2,10,1,1210,}, + {1,1455,2,191,1,277,2,119,23,2,1,133,23,1,2,12,23,81,2,12,23,1,1,22,23,1,2,12,23,86,2,12,1,33,2,9,23,43,2,10,4,1,1,32,2,10,23,44,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,20,4,1,2,9,23,30,2,9,4,1,1,33,4,1,2,9,23,29,2,10,4,1,1,1210,}, + {1,1455,2,191,1,277,2,119,23,2,1,132,23,1,2,12,23,83,2,11,23,1,1,21,23,1,2,11,23,89,2,12,1,32,2,9,23,44,2,10,4,1,1,30,2,10,23,45,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,21,2,10,23,30,2,9,1,33,2,9,23,30,2,9,23,1,1,1211,}, + {1,1455,2,191,1,277,2,119,23,2,1,131,4,1,2,12,23,85,2,10,4,1,1,20,4,1,2,11,23,91,2,12,1,31,2,9,23,44,2,10,23,1,1,29,23,1,2,10,23,45,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,21,4,1,2,10,23,29,2,9,4,1,1,31,23,1,2,9,23,29,2,10,4,1,1,1211,}, + {1,1454,23,1,2,188,23,1,2,2,1,275,4,2,2,122,23,2,1,127,4,1,2,11,23,86,2,10,4,1,1,20,4,1,2,11,23,93,2,12,1,30,2,9,23,45,2,10,23,1,1,27,23,1,2,10,23,46,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,22,23,1,2,9,23,30,2,9,4,1,1,29,4,1,2,9,23,30,2,9,23,1,1,1212,}, + {1,1454,23,1,2,188,23,1,2,2,1,275,4,2,2,121,23,3,1,126,23,1,2,11,23,86,2,10,23,1,1,20,4,1,2,11,23,95,2,11,23,1,1,29,2,9,23,46,2,10,4,1,1,25,4,1,2,10,23,47,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,22,4,1,2,10,23,29,2,9,23,1,1,29,23,1,2,9,23,29,2,10,1,1213,}, + {1,1454,2,192,1,273,4,2,2,126,4,3,1,122,4,1,2,11,23,87,2,10,1,16,4,1,1,3,4,1,2,11,23,97,2,11,23,1,1,28,2,9,23,47,2,10,4,1,1,23,4,1,2,10,23,48,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,23,4,1,2,9,23,30,2,9,4,1,1,27,4,1,2,9,23,30,2,9,4,1,1,1213,}, + {1,1454,2,192,1,273,4,2,2,126,4,3,1,121,4,1,2,11,23,87,2,10,4,1,1,20,23,1,2,10,23,99,2,11,4,1,1,27,2,9,23,48,2,10,4,1,1,21,4,1,23,1,2,10,23,48,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,24,2,10,23,29,2,9,23,1,1,27,23,1,2,9,23,29,2,9,23,1,1,1214,}, + {1,1451,23,3,2,192,1,271,2,130,4,3,1,120,4,1,2,11,23,87,2,10,4,1,1,20,23,1,2,10,23,102,2,10,4,1,1,26,2,9,23,48,2,10,23,1,1,21,23,1,2,10,23,49,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,24,4,1,2,9,23,30,2,9,4,1,1,25,4,1,2,9,23,29,2,10,4,1,1,1214,}, + {1,1451,23,3,2,192,1,271,2,130,4,3,1,120,2,11,23,87,2,10,23,1,1,20,4,1,2,10,23,103,2,11,1,26,2,9,23,49,2,10,4,1,1,19,4,1,2,10,23,50,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,25,2,10,23,29,2,10,1,25,2,10,23,29,2,9,23,1,1,1215,}, + {1,1451,23,3,2,192,1,271,2,130,4,3,1,119,23,1,2,10,23,87,2,11,1,20,4,1,2,10,23,105,2,10,23,1,1,25,2,9,23,50,2,10,4,1,1,17,4,1,2,10,23,51,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,25,4,1,2,10,23,29,2,9,4,1,1,23,23,1,2,9,23,29,2,10,4,1,1,1215,}, + {1,1448,4,1,2,194,4,3,1,271,2,130,23,3,1,118,4,1,2,10,23,88,2,10,4,1,1,19,4,1,2,10,23,107,2,10,23,1,1,24,2,9,23,51,2,10,4,2,1,14,4,1,2,10,23,52,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,26,23,1,2,9,23,30,2,9,4,1,1,2,4,1,1,19,2,9,23,30,2,9,23,1,1,1216,}, + {1,1448,4,1,2,194,4,3,1,271,2,130,23,3,1,117,4,1,2,10,23,88,2,10,4,1,1,20,23,1,2,10,23,108,2,10,4,1,1,23,2,9,23,51,2,11,1,15,2,11,23,52,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,26,4,1,2,10,23,29,2,9,23,1,1,21,23,1,2,9,23,29,2,10,1,1217,}, + {1,1448,4,1,2,197,1,271,2,133,1,117,23,1,2,9,23,88,2,10,23,1,1,20,4,1,2,10,23,110,2,9,23,1,1,23,2,9,23,52,2,10,23,1,1,13,23,1,2,10,23,53,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,27,23,1,2,9,23,30,2,9,4,1,1,19,4,1,2,9,23,29,2,10,4,1,1,1217,}, + {1,1448,4,1,2,197,23,1,1,267,2,136,1,116,4,1,2,10,23,49,2,10,23,28,2,10,23,1,1,21,2,10,23,112,2,9,4,1,1,22,2,9,23,53,2,10,23,1,1,11,4,1,2,10,23,54,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,28,2,10,23,29,2,10,1,19,23,1,2,9,23,29,2,10,4,1,1,1217,}, + {1,1448,4,1,2,197,23,1,1,267,2,136,1,115,4,1,2,10,23,44,2,21,23,23,2,10,1,21,23,1,2,9,23,55,2,1,23,57,2,10,4,1,1,21,2,9,23,54,2,10,4,2,1,8,4,1,2,10,23,55,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,28,4,1,2,9,23,30,2,9,4,1,1,17,23,1,2,9,23,29,2,10,4,1,1,1218,}, + {1,1448,4,1,2,197,23,1,1,267,2,136,1,115,23,1,2,9,23,42,2,27,23,19,2,10,4,1,1,20,4,1,2,9,23,49,2,18,23,48,2,9,23,1,1,21,2,9,23,55,2,10,1,8,4,1,2,10,23,56,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,29,2,10,23,29,2,10,1,16,4,1,2,9,23,30,2,9,23,1,1,1219,}, + {1,1449,2,198,1,264,4,1,2,139,1,1,4,1,1,111,4,1,2,9,23,41,2,33,23,14,2,10,4,1,1,21,23,1,2,9,23,44,2,28,23,44,2,9,4,1,1,20,2,9,23,55,2,11,1,7,2,11,23,56,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,29,4,1,2,9,23,30,2,9,23,1,1,15,23,1,2,9,23,29,2,10,1,1220,}, + {1,1448,4,1,2,198,1,262,4,1,1,2,2,139,1,113,2,10,23,38,2,38,23,11,2,10,23,1,1,21,4,1,2,9,23,42,2,34,23,42,2,9,1,20,2,9,23,56,2,10,23,1,1,5,23,1,2,10,23,57,2,8,23,1,1,14,2,8,23,22,2,80,1,31,23,1,2,9,23,30,2,9,4,1,1,13,4,1,2,9,23,30,2,9,23,1,1,1220,}, + {1,1446,23,2,2,199,1,259,23,2,2,145,1,110,4,1,2,9,23,37,2,42,23,8,2,11,4,1,1,21,2,10,23,40,2,38,23,40,2,9,4,1,1,19,2,9,23,57,2,10,23,1,1,3,4,1,2,10,23,58,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,30,4,1,2,10,23,29,2,9,23,1,1,13,23,1,2,9,23,29,2,10,1,3,4,1,1,1217,}, + {1,1446,23,2,2,198,23,1,1,259,23,1,4,1,2,145,1,109,4,1,2,9,23,36,2,46,23,6,2,10,4,1,1,21,4,1,2,9,23,39,2,42,23,39,2,9,1,19,2,9,23,58,2,10,4,1,1,1,4,1,2,10,23,59,2,8,23,1,1,14,2,8,23,22,2,9,23,70,4,1,1,28,4,1,1,3,23,1,2,9,23,30,2,9,4,1,1,11,4,1,2,9,23,30,2,9,4,1,1,1221,}, + {1,1443,23,3,2,201,1,259,23,2,2,147,1,107,23,1,2,9,23,35,2,48,23,4,2,10,4,1,1,22,2,9,23,38,2,46,23,37,2,9,4,1,1,18,2,9,23,25,2,1,23,33,2,10,4,1,2,11,23,32,2,2,23,25,2,8,23,1,1,14,2,8,23,22,2,8,4,1,1,104,2,10,23,29,2,10,1,11,2,10,23,29,2,10,1,1222,}, + {1,1443,23,3,2,201,1,259,23,2,2,147,1,106,4,1,2,9,23,34,2,18,23,1,4,2,1,9,4,2,23,1,2,19,23,1,2,10,23,1,1,22,4,1,2,9,23,36,2,49,23,37,2,9,1,18,2,9,23,25,2,2,23,32,2,21,23,32,2,3,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,105,4,1,2,9,23,30,2,9,4,1,1,9,4,1,2,9,23,29,2,10,4,1,1,1222,}, + {1,1443,23,3,2,201,1,259,23,2,2,147,1,106,23,1,2,9,23,33,2,15,23,1,4,1,1,19,4,1,23,1,2,25,23,1,1,23,2,9,23,36,2,18,23,2,4,11,23,2,2,19,23,35,2,9,4,1,1,17,2,9,23,25,2,3,23,32,2,19,23,33,2,3,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,106,23,1,2,9,23,29,2,10,4,1,1,7,4,1,2,9,23,30,2,9,23,1,1,1223,}, + {1,1443,2,206,1,257,23,2,2,147,4,1,1,104,4,1,2,9,23,33,2,14,4,1,1,25,4,1,23,1,2,22,4,1,1,22,4,1,2,9,23,35,2,16,23,1,4,2,1,14,4,4,23,1,2,16,23,35,2,9,4,1,1,16,2,9,23,25,2,4,23,32,2,17,23,33,2,4,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,106,4,1,2,10,23,29,2,9,23,1,1,7,23,1,2,9,23,29,2,10,4,1,1,1223,}, + {1,1443,2,206,1,257,23,2,2,147,4,1,1,104,23,1,2,9,23,32,2,13,4,2,1,28,4,1,23,1,2,19,4,1,1,23,2,9,23,34,2,15,23,1,4,1,1,23,4,2,23,1,2,14,23,34,2,9,4,1,1,16,2,9,23,25,2,4,23,33,2,16,23,32,2,5,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,107,23,1,2,9,23,30,2,9,4,1,1,3,4,3,2,9,23,30,2,9,4,1,1,1224,}, + {1,1442,4,1,2,208,23,1,4,3,1,6,4,1,23,1,4,6,1,235,4,2,23,2,2,147,23,1,1,104,2,9,23,32,2,12,4,1,1,33,4,1,2,17,23,1,1,23,4,1,2,9,23,33,2,14,4,2,1,29,23,1,2,13,23,34,2,8,23,1,1,16,2,9,23,25,2,5,23,33,2,14,23,32,2,6,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,108,2,10,23,29,2,9,23,1,1,4,23,1,2,10,23,29,2,10,1,1225,}, + {1,1442,4,1,2,208,23,1,4,3,1,6,4,8,1,235,4,2,23,2,2,147,23,1,1,103,4,1,2,9,23,31,2,11,23,1,1,1,4,1,1,35,23,1,2,14,23,1,1,2,4,1,1,21,23,1,2,8,23,33,2,13,4,2,1,33,23,1,2,12,23,33,2,9,4,1,1,15,2,9,23,25,2,6,23,32,2,13,23,32,2,7,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,108,23,1,2,9,23,30,2,9,4,1,1,2,4,1,2,10,23,30,2,9,4,1,1,1225,}, + {1,1442,2,227,23,1,4,1,1,232,4,1,2,152,1,103,23,1,2,8,23,31,2,11,4,1,1,39,4,1,2,13,4,1,1,24,2,9,23,32,2,12,4,2,1,36,4,1,23,1,2,11,23,33,2,8,23,1,1,15,2,9,23,25,2,6,23,33,2,11,23,33,2,7,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,109,2,10,23,29,2,10,4,1,1,1,2,11,23,29,2,10,1,1226,}, + {1,1442,2,227,23,2,1,232,4,1,2,152,1,103,2,9,23,30,2,11,4,1,1,41,4,1,2,11,4,1,1,24,4,1,2,8,23,32,2,12,4,1,1,40,4,1,2,11,23,32,2,9,1,15,2,9,23,25,2,7,23,33,2,9,23,33,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,109,4,1,2,10,23,29,2,9,23,1,4,1,2,10,23,30,2,9,4,1,1,1226,}, + {1,1442,2,227,23,2,1,232,4,1,2,152,1,102,4,1,2,8,23,30,2,11,4,1,1,44,2,9,4,1,1,24,4,1,2,9,23,31,2,11,23,1,4,1,1,42,4,1,2,11,23,32,2,8,4,1,1,14,2,9,23,25,2,8,23,33,2,8,23,32,2,9,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,110,23,1,2,9,23,29,2,21,23,29,2,9,23,1,1,1227,}, + {1,1438,4,2,23,2,2,229,1,230,4,2,2,153,1,102,2,9,23,29,2,11,1,47,23,1,2,6,23,1,1,25,4,1,2,8,23,31,2,11,4,2,1,44,4,1,2,11,23,31,2,9,1,14,2,9,23,25,2,9,23,32,2,7,23,32,2,10,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,110,4,1,2,10,23,29,2,19,23,29,2,10,4,1,1,1227,}, + {1,1438,4,2,23,2,2,229,1,229,4,2,1,1,2,153,1,101,4,1,2,9,23,28,2,10,23,1,1,49,23,1,2,5,1,26,23,1,2,8,23,31,2,10,4,1,1,44,4,1,1,3,23,1,2,10,23,30,2,9,1,14,2,9,23,25,2,10,23,32,2,5,23,33,2,10,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,111,23,1,2,9,23,29,2,18,23,30,2,9,23,1,1,1228,}, + {1,1438,2,233,4,1,1,228,2,155,4,1,1,101,23,1,2,8,23,29,2,9,23,1,4,1,1,50,23,1,2,3,1,27,2,9,23,30,2,10,4,1,1,49,4,1,23,1,2,10,23,30,2,8,4,1,1,13,2,9,23,25,2,10,23,33,2,3,23,33,2,11,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,112,2,10,23,29,2,17,23,29,2,10,1,1229,}, + {1,1438,2,233,4,1,1,228,23,1,2,154,4,1,1,100,4,1,2,9,23,28,2,10,1,53,23,1,2,1,4,1,1,26,4,1,2,8,23,30,2,10,4,1,1,52,2,10,23,30,2,8,23,1,1,13,2,9,23,25,2,11,23,33,2,1,23,33,2,12,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,112,4,1,2,9,23,30,2,15,23,30,2,9,4,1,1,1229,}, + {1,1438,2,233,4,1,1,226,2,158,4,5,1,95,4,1,2,8,23,28,2,10,4,1,1,82,23,1,2,8,23,30,2,9,4,1,1,54,2,10,23,29,2,9,1,13,2,9,23,25,2,12,23,65,2,13,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,113,2,10,23,29,2,15,23,29,2,9,23,1,1,1230,}, + {1,1438,2,233,4,1,1,226,2,158,4,5,1,95,4,1,2,8,23,28,2,9,4,1,1,83,2,9,23,29,2,9,23,1,1,55,4,1,2,10,23,29,2,8,4,1,1,12,2,9,23,25,2,13,23,63,2,14,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,113,4,1,2,9,23,30,2,13,23,30,2,9,4,1,1,1230,}, + {1,1438,2,233,4,1,1,226,2,158,4,3,1,1,4,1,1,95,23,1,2,8,23,27,2,9,23,1,1,84,2,9,23,28,2,9,23,1,1,57,4,1,2,9,23,29,2,8,4,1,1,12,2,9,23,25,2,14,23,62,2,14,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,114,23,1,2,9,23,29,2,13,23,29,2,9,23,1,1,1231,}, + {1,1438,2,233,4,1,1,225,4,1,2,161,23,2,1,94,4,1,2,8,23,28,2,9,4,1,1,83,4,1,2,8,23,29,2,9,4,1,1,58,23,1,2,9,23,28,2,8,23,1,1,12,2,9,23,25,2,14,23,61,2,15,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,114,4,1,2,10,23,29,2,11,23,29,2,10,4,1,1,1231,}, + {1,1438,2,233,4,1,1,225,4,1,2,161,23,2,1,94,4,1,2,8,23,27,2,9,4,1,1,84,23,1,2,8,23,28,2,9,4,1,1,60,2,9,23,29,2,8,4,1,1,11,2,9,23,25,2,15,23,59,2,16,23,25,2,8,23,1,1,14,2,8,23,22,2,8,4,71,1,44,23,1,2,9,23,30,2,9,23,30,2,9,23,1,1,1232,}, + {1,1437,23,1,2,233,4,1,1,225,2,164,4,1,1,93,23,1,2,8,23,27,2,8,23,1,1,85,2,9,23,28,2,8,23,1,1,61,4,1,2,9,23,28,2,8,4,1,1,11,2,9,23,25,2,16,23,57,2,17,23,25,2,8,23,1,1,14,2,8,23,22,2,80,1,44,2,10,23,29,2,9,23,29,2,10,1,1233,}, + {1,1437,23,1,2,233,4,1,1,225,2,164,4,1,1,93,23,1,2,8,23,26,2,9,4,1,1,85,2,9,23,27,2,9,4,1,1,62,23,1,2,8,23,28,2,8,4,1,1,11,2,9,23,25,2,17,23,55,2,18,23,25,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,43,4,1,2,9,23,30,2,7,23,30,2,9,4,1,1,1233,}, + {1,1434,4,3,2,234,4,1,1,221,23,2,2,167,4,2,1,91,2,9,23,26,2,9,1,86,2,8,23,28,2,8,23,1,1,63,4,1,2,9,23,27,2,8,23,1,1,11,2,9,23,25,2,17,23,55,2,18,23,25,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,44,2,10,23,29,2,7,23,29,2,9,23,1,1,1234,}, + {1,1434,4,1,23,2,2,234,4,1,1,221,23,2,2,167,4,2,1,91,2,8,23,27,2,8,4,1,1,85,4,1,2,8,23,28,2,8,4,1,1,64,23,1,2,8,23,28,2,8,1,11,2,9,23,25,2,18,23,53,2,19,23,25,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,44,4,1,2,9,23,30,2,4,23,30,2,10,4,1,1,1234,}, + {1,1434,23,1,4,2,2,234,4,1,1,221,23,2,2,167,4,2,1,90,4,1,2,8,23,26,2,9,1,86,4,1,2,8,23,27,2,9,1,65,4,1,2,8,23,28,2,8,4,1,1,10,2,9,23,25,2,19,23,51,2,10,23,1,2,9,23,25,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,45,2,10,23,29,2,4,23,30,2,9,23,1,1,1235,}, + {1,1432,23,2,2,237,4,1,1,219,2,176,1,87,4,1,2,8,23,26,2,8,23,1,1,86,23,1,2,8,23,27,2,8,23,1,1,66,2,9,23,27,2,8,4,1,1,10,2,9,23,25,2,20,23,49,2,11,1,1,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,45,4,1,2,10,23,29,2,2,23,30,2,10,4,1,1,1235,}, + {1,1432,23,2,2,237,4,1,1,219,2,1,23,1,2,174,1,87,23,1,2,8,23,26,2,8,4,1,1,86,23,1,2,8,23,27,2,8,4,1,1,66,23,1,2,8,23,27,2,8,4,1,1,10,2,9,23,25,2,8,23,1,4,1,2,11,23,47,2,11,4,1,1,1,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,46,23,1,2,9,23,61,2,9,23,1,1,1236,}, + {1,1432,2,239,23,1,1,217,2,179,1,86,23,1,2,8,23,26,2,8,4,1,1,85,4,1,2,8,23,27,2,9,1,67,4,1,2,8,23,27,2,8,23,1,1,10,2,9,23,25,2,8,4,1,1,1,4,1,2,10,23,47,2,10,4,1,1,2,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,1,23,69,2,10,4,1,1,46,4,1,2,10,23,59,2,10,1,1237,}, + {1,1432,2,239,23,1,1,217,2,179,1,86,2,9,23,25,2,9,1,86,4,1,2,8,23,27,2,8,23,1,1,68,2,9,23,26,2,8,23,1,1,10,2,9,23,25,2,8,4,2,1,1,4,1,2,10,23,45,2,10,23,1,1,3,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,47,4,1,2,9,23,59,2,9,4,1,1,1237,}, + {1,1431,2,241,1,217,2,181,1,84,2,9,23,25,2,8,23,1,1,86,4,1,2,8,23,27,2,8,4,1,1,68,23,1,2,8,23,26,2,8,23,1,1,10,2,9,23,25,2,8,23,1,1,3,23,1,2,10,23,43,2,10,23,1,1,4,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,48,2,10,23,57,2,9,23,1,1,1238,}, + {1,1431,2,241,1,217,2,181,1,84,2,9,23,25,2,8,23,1,1,86,4,1,2,8,23,27,2,8,4,1,1,68,4,1,2,8,23,26,2,9,1,10,2,9,23,25,2,8,23,1,1,4,2,11,23,41,2,11,1,5,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,48,4,1,2,9,23,56,2,10,1,1239,}, + {1,1431,2,241,1,217,2,181,1,84,2,8,23,26,2,8,4,1,1,86,4,1,2,8,23,27,2,8,4,1,1,68,4,1,2,8,23,27,2,8,1,10,2,9,23,25,2,8,23,1,1,5,2,10,23,40,2,11,4,1,1,5,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,49,23,1,2,9,23,55,2,9,23,1,1,1239,}, + {1,1429,4,2,2,241,1,214,4,1,2,183,1,84,2,8,23,26,2,8,4,1,1,86,4,1,2,8,23,26,2,8,23,1,1,69,4,1,2,8,23,27,2,8,1,10,2,9,23,25,2,8,23,1,1,5,4,1,2,10,23,39,2,10,4,1,1,6,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,49,4,1,2,10,23,53,2,10,1,1240,}, + {1,1429,4,2,2,241,1,214,4,1,2,183,1,84,2,8,23,26,2,8,4,1,1,86,23,1,2,8,23,26,2,8,23,1,1,70,2,8,23,27,2,8,1,10,2,9,23,25,2,8,23,1,1,6,4,1,2,10,23,37,2,10,23,1,1,7,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,50,23,1,2,9,23,53,2,9,4,1,1,1240,}, + {1,1427,23,1,2,1,4,1,23,1,2,241,1,214,4,1,2,183,4,2,1,82,2,8,23,26,2,8,4,1,1,86,23,1,2,8,23,26,2,8,4,1,1,70,2,8,23,27,2,8,1,10,2,9,23,25,2,8,23,1,1,6,4,1,23,1,2,10,23,35,2,11,1,8,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,50,4,1,2,10,23,51,2,10,1,1241,}, + {1,1427,23,1,2,1,23,2,2,241,1,214,4,1,2,183,4,2,1,82,2,8,23,26,2,8,4,1,1,86,23,1,2,8,23,26,2,8,4,1,1,70,2,8,23,27,2,8,1,10,2,9,23,25,2,8,23,1,1,8,2,11,23,33,2,11,1,9,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,51,4,1,2,9,23,51,2,9,4,1,1,1241,}, + {1,1425,23,2,2,245,1,204,4,2,1,3,4,3,2,186,23,2,1,82,2,8,23,26,2,8,4,1,1,86,23,1,2,8,23,26,2,8,4,1,1,70,2,8,23,27,2,8,1,10,2,9,23,25,2,8,23,1,1,8,4,1,2,10,23,33,2,10,4,1,1,9,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,52,2,10,23,49,2,9,23,1,1,1242,}, + {1,1425,23,2,2,245,1,204,4,2,1,3,4,3,2,186,23,2,1,82,2,8,23,26,2,8,4,1,1,86,23,1,2,8,23,26,2,8,4,1,1,70,2,8,23,27,2,8,1,10,2,9,23,25,2,8,23,1,1,9,4,1,2,10,23,31,2,10,4,1,1,10,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,52,4,1,2,9,23,49,2,9,4,1,1,1242,}, + {1,1425,23,2,2,245,1,204,4,2,1,3,4,3,2,186,23,2,1,82,2,8,23,26,2,8,4,1,1,86,23,1,2,8,23,26,2,8,4,1,1,70,2,8,23,27,2,8,1,10,2,9,23,25,2,8,23,1,1,10,4,1,2,10,23,29,2,10,23,1,1,11,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,53,23,1,2,9,23,47,2,9,23,1,1,1243,}, + {1,1424,4,1,2,247,1,200,2,6,1,3,23,1,4,2,2,188,4,1,1,80,4,1,2,8,23,26,2,8,4,1,1,86,23,1,2,8,23,26,2,8,4,1,1,70,2,8,23,27,2,8,1,10,2,9,23,25,2,8,23,1,1,11,23,1,2,10,23,27,2,10,23,1,4,1,1,11,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,53,4,1,2,10,23,45,2,10,1,1244,}, + {1,1423,4,1,1,1,2,247,1,200,2,6,1,3,4,1,23,2,2,188,4,1,1,81,2,8,23,26,2,8,4,1,1,86,23,1,2,8,23,26,2,8,4,1,1,70,2,8,23,27,2,8,1,10,2,9,23,25,2,8,23,1,1,11,4,1,2,11,23,25,2,11,4,1,1,12,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,54,23,1,2,9,23,45,2,9,4,1,1,1244,}, + {1,1423,4,2,2,250,23,2,1,187,4,5,23,1,2,202,23,1,1,81,2,8,23,26,2,8,4,1,1,86,23,1,2,8,23,26,2,8,23,1,1,70,2,8,23,27,2,8,1,10,2,9,23,25,2,8,23,1,1,12,4,1,2,10,23,25,2,10,4,1,1,13,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,54,4,1,2,10,23,43,2,10,1,1245,}, + {1,1423,4,2,2,250,23,2,1,187,4,2,1,1,4,2,23,1,2,202,23,1,1,81,2,9,23,25,2,8,4,1,1,86,4,1,2,8,23,26,2,8,23,1,1,70,2,8,23,27,2,8,1,10,2,9,23,25,2,8,23,1,1,13,4,1,2,10,23,23,2,10,23,1,1,4,4,1,1,9,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,55,4,1,2,9,23,43,2,9,4,1,1,1245,}, + {1,1425,2,252,1,187,4,3,2,206,1,81,2,9,23,25,2,8,23,1,1,86,4,1,2,8,23,27,2,7,23,1,1,69,4,1,2,8,23,27,2,8,1,10,2,9,23,25,2,8,23,1,1,14,23,1,2,10,23,21,2,10,23,1,1,15,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,56,2,10,23,41,2,9,23,1,1,2,4,1,1,1243,}, + {1,1425,2,252,1,187,4,3,2,206,1,81,2,9,23,25,2,9,1,86,4,1,2,8,23,27,2,8,4,1,1,68,4,1,2,8,23,27,2,8,1,10,2,9,23,25,2,8,23,1,1,15,23,1,2,10,23,19,2,11,1,16,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,56,4,1,2,9,23,40,2,10,4,1,1,1246,}, + {1,1425,2,252,1,187,4,3,2,206,1,81,23,1,2,8,23,26,2,8,1,86,4,1,2,8,23,27,2,8,4,1,1,68,23,1,2,8,23,26,2,9,1,10,2,9,23,25,2,8,23,1,1,15,4,1,2,11,23,17,2,11,4,1,1,16,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,57,23,1,2,9,23,39,2,9,23,1,1,1247,}, + {1,1423,2,255,23,2,1,181,4,2,2,210,4,3,1,78,23,1,2,8,23,26,2,8,4,1,1,85,4,1,2,8,23,27,2,8,4,1,1,68,2,9,23,26,2,9,1,10,2,9,23,25,2,8,23,1,1,16,4,1,2,10,23,17,2,10,4,1,1,17,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,57,4,1,2,10,23,37,2,10,1,1248,}, + {1,1423,2,255,23,2,1,181,4,2,2,210,4,3,1,78,4,1,2,8,23,26,2,8,23,1,1,85,4,1,2,8,23,27,2,8,23,1,1,67,4,1,2,8,23,27,2,8,23,1,1,10,2,9,23,25,2,8,23,1,1,17,4,1,2,10,23,15,2,10,23,1,1,18,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,58,4,1,2,9,23,37,2,9,4,1,1,1248,}, + {1,1395,2,2,4,2,1,2,4,2,2,1,1,19,2,257,1,181,4,2,2,213,1,78,4,1,2,8,23,26,2,9,1,85,4,1,2,8,23,28,2,8,1,67,4,1,2,8,23,27,2,8,23,1,1,10,2,9,23,25,2,8,23,1,1,18,23,1,2,10,23,13,2,10,23,1,1,19,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,58,4,1,2,10,23,35,2,9,23,1,1,1249,}, + {1,1395,2,1,23,1,4,2,1,2,4,2,2,1,1,19,2,257,1,181,4,2,2,213,1,79,2,8,23,27,2,8,4,1,1,85,23,1,2,8,23,27,2,8,4,1,1,66,23,1,2,8,23,27,2,8,4,1,1,10,2,9,23,25,2,8,23,1,1,19,2,11,23,11,2,11,1,20,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,59,4,1,2,9,23,35,2,9,4,1,1,1249,}, + {1,1392,23,1,2,11,1,17,23,2,2,257,23,3,1,6,23,3,2,7,4,2,1,158,4,2,2,212,1,82,2,8,23,27,2,8,23,1,1,85,23,1,2,8,23,27,2,8,23,1,1,65,4,1,2,9,23,27,2,8,4,1,1,10,2,9,23,25,2,8,23,1,1,19,4,1,2,10,23,11,2,10,4,1,1,20,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,60,2,10,23,33,2,9,23,1,1,1250,}, + {1,1392,4,1,2,11,1,17,23,2,2,257,23,3,1,6,23,3,2,7,4,2,1,160,2,212,1,82,2,9,23,26,2,9,4,1,1,84,4,1,2,8,23,27,2,9,1,65,4,1,2,8,23,28,2,8,4,1,1,10,2,9,23,25,2,8,23,1,1,20,4,1,2,10,23,9,2,10,4,1,1,1,4,1,1,19,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,60,4,1,2,9,23,32,2,10,4,1,1,1250,}, + {1,1392,2,12,1,14,4,2,2,264,1,4,23,1,2,12,4,2,1,152,23,4,2,217,23,3,4,2,1,74,23,1,2,8,23,27,2,8,23,1,1,84,4,1,2,8,23,28,2,8,4,1,1,64,2,9,23,28,2,8,4,1,1,10,2,9,23,25,2,8,23,1,1,21,4,1,2,10,23,7,2,10,23,1,1,22,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,61,23,1,2,9,23,31,2,9,23,1,1,1251,}, + {1,1392,2,12,1,14,4,2,2,264,1,4,23,1,2,12,4,2,1,152,23,4,2,217,23,3,4,2,1,74,4,1,2,8,23,27,2,9,4,1,1,84,2,8,23,28,2,9,1,57,4,2,1,4,4,1,2,9,23,27,2,8,23,1,1,11,2,9,23,25,2,8,23,1,1,22,23,1,2,10,23,5,2,11,1,23,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,61,4,1,2,10,23,29,2,10,1,1252,}, + {1,1392,2,12,1,14,4,2,2,264,1,4,23,1,2,12,4,2,1,152,23,4,2,217,23,3,4,2,1,74,4,1,2,8,23,28,2,9,1,84,2,9,23,27,2,9,4,1,1,56,4,2,1,4,2,9,23,28,2,8,4,1,1,11,2,9,23,25,2,8,23,1,1,23,2,11,23,3,2,11,1,24,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,62,23,1,2,9,23,29,2,9,4,1,1,1252,}, + {1,1390,23,2,2,12,1,14,23,2,2,283,1,152,2,224,4,1,23,1,1,75,2,9,23,27,2,9,4,1,1,83,2,9,23,28,2,9,4,1,1,55,4,1,1,4,23,1,2,9,23,28,2,8,4,1,1,11,2,9,23,25,2,8,23,1,1,23,4,1,2,10,23,3,2,10,4,1,1,24,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,63,2,10,23,27,2,10,1,1253,}, + {1,1390,23,2,2,12,1,14,23,2,2,283,1,152,2,224,4,2,1,75,23,1,2,8,23,28,2,9,4,1,1,1,4,1,1,80,23,1,2,8,23,28,2,9,23,1,1,55,4,3,1,1,4,1,2,9,23,29,2,8,4,1,1,11,2,9,23,25,2,8,23,1,1,24,4,1,2,21,4,1,1,25,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,4,1,1,135,4,1,2,9,23,27,2,9,4,1,1,1253,}, + {1,1390,2,16,23,6,4,3,23,3,2,285,1,149,23,3,2,217,1,4,23,2,4,1,1,77,4,1,2,8,23,28,2,10,1,82,4,1,2,8,23,29,2,9,4,1,1,53,4,1,1,1,4,2,1,1,2,10,23,28,2,8,23,1,4,1,1,11,2,9,23,25,2,8,23,1,1,25,23,1,2,19,23,1,1,26,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,23,1,2,8,23,27,2,8,23,1,1,1254,}, + {1,1390,23,1,2,15,23,6,4,3,23,3,2,285,1,149,23,3,2,217,1,4,23,2,4,1,1,77,4,1,2,9,23,28,2,9,23,1,1,53,4,2,1,27,2,9,23,28,2,10,4,1,1,53,4,1,1,2,23,1,2,9,23,29,2,8,23,1,1,12,2,9,23,25,2,8,23,1,1,25,4,1,23,1,2,18,4,1,1,26,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1390,2,313,1,149,2,227,1,78,23,1,2,8,23,28,2,10,23,1,1,51,4,1,2,2,4,1,1,26,2,9,23,29,2,10,1,52,4,1,1,1,4,2,2,10,23,29,2,8,4,1,1,12,2,9,23,25,2,8,23,1,1,26,4,1,2,17,4,1,1,27,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1390,2,313,1,149,2,227,1,78,4,1,2,8,23,29,2,10,23,1,1,49,4,1,2,4,4,1,1,25,23,1,2,8,23,30,2,9,23,1,1,51,4,3,2,10,23,29,2,9,1,13,2,9,23,25,2,8,23,1,1,27,4,1,2,15,4,1,1,28,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1390,2,313,1,149,2,227,1,78,4,1,2,9,23,29,2,10,23,1,1,44,4,1,1,2,23,1,2,6,23,1,1,24,4,1,2,8,23,30,2,10,23,1,1,51,4,1,2,10,23,30,2,8,23,1,1,13,2,9,23,25,2,8,23,1,1,28,23,1,2,13,4,1,1,29,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1387,2,316,1,147,2,229,23,6,1,73,2,9,23,30,2,10,23,1,1,4,4,1,1,40,23,1,2,8,23,1,1,23,4,1,2,9,23,30,2,10,23,1,1,49,4,1,2,10,23,31,2,8,4,1,1,13,2,9,23,25,2,8,23,1,1,29,23,1,2,11,23,1,1,30,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1387,2,316,1,147,2,229,23,6,1,73,4,1,2,8,23,30,2,11,23,1,1,43,23,1,2,10,23,1,1,23,23,1,2,8,23,31,2,10,23,1,1,47,4,1,2,11,23,30,2,9,1,14,2,9,23,25,2,8,23,1,1,30,2,11,4,1,1,30,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1387,2,316,1,145,4,2,2,237,1,72,2,9,23,30,2,12,4,1,1,40,23,1,2,12,4,1,1,22,4,1,2,9,23,30,2,12,1,45,4,1,2,11,23,31,2,9,1,14,2,9,23,25,2,8,23,1,1,31,2,9,4,1,1,31,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1387,2,316,1,145,4,2,2,237,1,72,23,1,2,8,23,31,2,12,4,1,1,37,4,1,2,15,4,1,1,22,2,9,23,31,2,12,4,1,1,41,4,1,23,1,2,11,23,32,2,8,4,1,1,14,2,9,23,25,2,8,23,1,1,30,4,2,2,7,4,1,1,32,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1387,2,316,1,145,2,239,1,72,4,1,2,9,23,31,2,12,23,1,4,1,1,33,4,1,23,1,2,17,23,1,1,21,4,1,2,8,23,32,2,12,23,1,1,39,4,1,2,12,23,32,2,9,1,15,2,9,23,25,2,8,23,1,1,32,23,1,2,5,23,1,1,33,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1387,2,316,1,145,2,239,1,73,23,1,2,8,23,32,2,13,23,1,4,1,1,30,4,1,2,20,23,1,1,21,2,9,23,32,2,13,4,1,1,36,23,1,2,12,23,33,2,8,23,1,1,15,2,9,23,25,2,8,23,1,1,33,23,1,2,3,23,1,1,34,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1387,2,316,1,145,2,239,1,73,4,1,2,9,23,32,2,14,23,1,4,1,1,26,4,1,2,23,23,1,1,20,23,1,2,8,23,33,2,13,23,1,4,1,1,3,4,1,1,28,4,1,2,13,23,33,2,9,4,1,1,15,2,9,23,25,2,8,23,1,1,34,2,3,1,35,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1387,2,316,1,145,2,239,1,73,4,1,2,9,23,34,2,15,4,1,1,21,4,1,23,1,2,26,4,1,1,19,4,1,2,9,23,33,2,14,23,1,4,1,1,28,4,1,23,1,2,13,23,34,2,8,23,1,4,1,1,15,2,9,23,25,2,8,23,1,1,35,2,1,4,1,1,35,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1387,2,316,1,145,2,239,1,74,4,1,2,9,23,34,2,17,23,1,4,2,1,10,4,3,23,1,2,18,23,2,2,11,4,1,1,19,2,9,23,35,2,15,4,2,1,22,4,1,23,1,2,15,23,34,2,9,4,1,1,16,2,9,23,25,2,8,23,1,1,35,4,1,1,36,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1387,2,316,4,2,1,138,4,1,23,2,2,243,23,1,1,72,2,9,23,35,2,21,23,7,2,22,23,4,2,11,4,1,1,18,4,1,2,9,23,35,2,17,4,3,1,13,4,3,23,1,2,17,23,35,2,9,1,17,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1387,2,316,4,2,1,138,4,1,23,2,2,243,23,1,1,72,4,1,2,9,23,36,2,46,23,7,2,11,23,1,1,18,2,9,23,36,2,20,23,2,4,8,23,3,2,18,23,36,2,9,4,1,1,17,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1384,4,2,2,317,4,2,1,136,4,2,2,247,1,73,2,10,23,36,2,44,23,9,2,11,4,1,1,17,4,1,2,9,23,36,2,49,23,37,2,9,1,18,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1384,4,2,2,317,4,2,1,136,4,2,2,247,1,73,4,1,2,9,23,38,2,40,23,12,2,11,4,1,1,16,4,1,2,9,23,38,2,45,23,38,2,9,4,1,1,18,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1384,4,2,2,317,4,2,1,136,4,2,2,247,1,74,2,10,23,39,2,35,23,16,2,11,23,1,1,2,4,1,1,13,4,1,2,9,23,39,2,41,23,40,2,9,1,19,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1384,2,319,4,2,1,136,23,2,2,247,4,2,1,72,4,1,2,9,23,42,2,30,23,19,2,11,23,1,1,16,2,10,23,40,2,37,23,41,2,9,4,1,1,19,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1384,2,319,4,2,1,136,23,2,2,247,4,2,1,73,23,1,2,9,23,44,2,24,23,23,2,11,23,1,1,15,4,1,2,9,23,42,2,33,23,42,2,10,1,20,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1382,23,2,2,319,4,2,1,134,4,2,2,255,4,2,1,67,4,1,2,10,23,48,2,14,23,29,2,11,4,1,1,15,2,10,23,45,2,26,23,45,2,9,4,1,1,20,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1382,23,2,2,319,4,2,1,134,4,2,2,255,4,2,1,68,4,1,2,10,23,91,2,11,4,1,1,14,4,1,2,9,23,49,2,17,23,49,2,9,23,1,1,21,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1381,4,1,2,321,4,2,1,133,4,1,2,259,1,69,2,10,23,92,2,11,23,1,1,14,23,1,2,9,23,113,2,10,4,1,1,21,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1381,4,1,2,321,4,2,1,133,4,1,2,259,1,69,4,1,2,10,23,92,2,11,23,1,1,14,2,10,23,112,2,9,4,1,1,22,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1381,4,1,2,321,4,2,1,133,4,1,2,259,1,70,4,1,2,10,23,92,2,11,4,1,1,13,4,1,2,10,23,110,2,10,1,23,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1381,2,324,23,1,1,129,23,3,2,261,23,1,4,1,1,68,23,1,2,10,23,92,2,11,4,1,1,13,23,1,2,10,23,108,2,10,4,1,1,23,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1381,2,324,23,1,1,129,23,3,2,260,23,1,2,1,4,1,1,68,4,1,2,11,23,92,2,11,23,1,1,12,4,1,2,10,23,107,2,10,4,1,1,24,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1381,2,325,4,2,1,125,4,2,2,265,23,1,4,3,1,66,4,1,2,11,23,92,2,11,23,1,1,12,4,1,2,10,23,105,2,10,23,1,1,25,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1381,2,325,4,2,1,125,4,2,2,265,23,1,4,1,1,1,4,1,1,67,4,1,2,11,23,92,2,11,4,1,1,12,4,1,2,10,23,103,2,11,1,26,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1378,23,3,2,325,4,2,1,125,2,271,23,2,1,66,4,1,2,11,23,92,2,11,4,1,1,12,23,1,2,10,23,101,2,11,4,1,1,26,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1378,23,3,2,325,4,2,1,125,2,271,23,2,1,67,23,1,2,11,23,90,2,12,4,1,1,12,4,1,2,11,23,99,2,11,4,1,1,27,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1378,23,3,2,325,4,2,1,125,2,271,23,2,1,68,23,1,2,11,23,88,2,12,23,1,1,14,4,1,2,11,23,97,2,11,23,1,1,28,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1378,2,328,23,2,1,124,2,274,23,1,1,68,23,1,2,11,23,86,2,12,23,1,1,16,4,1,2,11,23,95,2,11,23,1,1,2,4,1,1,26,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1378,2,328,23,2,1,124,2,274,23,1,1,69,23,1,2,11,23,84,2,12,23,1,1,18,4,1,2,11,23,93,2,11,23,1,1,30,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1377,23,1,2,330,23,4,1,115,4,1,23,2,2,277,1,70,23,1,2,12,23,81,2,12,23,1,1,20,4,1,2,11,23,91,2,12,1,31,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1377,23,1,2,330,23,4,1,115,23,1,4,2,2,277,1,71,23,1,2,12,23,78,2,13,23,1,1,2,4,1,1,19,4,1,2,11,23,89,2,12,1,32,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1377,23,1,2,336,1,112,23,1,2,280,1,72,23,1,2,12,23,76,2,13,4,1,1,24,4,1,2,12,23,86,2,12,4,1,1,32,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1377,23,1,2,336,1,112,23,1,2,280,1,73,4,1,2,13,23,73,2,13,4,1,1,26,4,1,2,12,23,83,2,13,4,1,1,33,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1377,23,1,2,336,1,112,23,1,2,280,1,74,4,1,2,13,23,70,2,14,4,1,1,28,4,1,2,12,23,81,2,12,23,1,1,35,2,9,23,25,2,8,4,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1375,2,342,4,3,1,104,4,3,2,284,1,71,4,1,2,14,23,67,2,14,1,31,4,1,2,13,23,78,2,12,23,1,1,36,2,9,23,25,2,8,4,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1375,2,342,4,3,1,104,4,3,2,284,1,72,4,1,23,1,2,14,23,63,2,14,23,1,4,1,1,32,4,1,2,13,23,75,2,13,4,1,1,37,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1375,2,342,23,3,1,104,2,287,1,74,23,1,2,15,23,59,2,15,4,1,1,36,23,1,2,13,23,72,2,13,4,1,1,38,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1375,2,342,23,3,1,104,2,287,1,75,4,1,2,16,23,55,2,15,23,1,1,1,4,1,1,37,4,1,2,14,23,68,2,14,1,40,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1364,23,3,1,6,4,2,2,345,4,2,1,100,2,289,4,2,1,75,23,1,2,16,23,51,2,16,4,1,1,41,4,1,2,15,23,64,2,14,23,1,1,41,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1364,23,3,1,6,4,1,1,1,2,345,4,2,1,100,2,289,4,2,1,76,4,1,2,18,23,45,2,17,23,1,4,1,1,43,4,1,23,1,2,15,23,60,2,15,4,1,1,42,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1364,23,3,1,6,4,2,2,345,4,2,1,100,2,289,23,2,1,78,23,1,2,18,23,41,2,18,4,1,1,47,4,1,2,16,23,56,2,15,23,1,4,1,1,43,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1360,4,1,2,7,23,1,1,4,2,347,4,2,1,99,2,294,1,77,4,1,23,1,2,20,23,33,2,20,23,1,1,51,23,1,2,16,23,51,2,17,4,1,1,45,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1360,4,1,2,6,23,1,2,1,1,4,2,347,4,2,1,99,2,294,1,75,4,1,1,3,4,1,23,1,2,23,23,23,2,23,23,1,1,54,4,1,2,18,23,45,2,18,23,1,1,47,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,43,4,1,1,1254,}, + {1,1356,4,2,2,11,23,3,2,348,4,2,1,94,23,2,2,297,23,2,1,79,4,1,23,1,2,65,23,1,4,1,1,57,23,1,2,19,23,39,2,19,23,1,4,1,1,48,2,42,23,1,1,72,23,1,2,41,23,1,1,14,2,38,1,137,4,1,2,43,4,1,1,1254,}, + {1,1356,4,1,23,1,2,11,23,3,2,348,4,2,1,94,23,2,2,297,23,2,1,81,4,2,2,61,23,1,4,1,1,61,23,1,2,20,23,33,2,21,4,1,1,50,2,42,23,1,1,72,23,1,2,41,23,1,1,14,2,38,1,137,4,1,2,43,4,1,1,1254,}, + {1,1356,4,2,2,11,4,3,2,348,4,1,1,95,23,2,2,300,1,83,4,1,2,57,4,1,1,65,4,1,23,1,2,25,23,20,2,25,4,1,1,52,2,42,23,1,1,72,23,1,2,41,23,1,1,14,2,38,1,137,4,1,2,43,4,1,1,1254,}, + {1,1356,4,2,2,11,4,3,2,348,1,96,23,2,2,300,1,85,4,1,23,1,2,51,23,1,4,1,1,70,23,1,2,65,23,1,4,1,1,54,2,42,23,1,1,72,23,1,2,41,23,1,1,14,2,38,1,137,4,1,2,43,4,1,1,1254,}, + {1,1356,4,2,2,11,4,3,2,348,1,96,23,2,2,300,1,88,4,2,2,45,23,1,4,1,1,75,4,1,2,61,23,1,4,1,1,56,2,42,23,1,1,72,23,1,2,41,23,1,1,14,2,38,1,137,4,1,2,43,4,1,1,1254,}, + {1,1356,4,2,2,364,4,1,1,10,4,1,1,79,23,2,2,303,1,91,4,1,23,2,2,38,23,1,4,2,1,79,4,1,23,1,2,56,23,1,4,1,1,58,2,42,23,1,1,72,23,1,2,41,23,1,1,14,2,38,1,137,4,1,2,43,4,1,1,1254,}, + {1,1354,4,1,1,1,4,2,2,364,4,1,1,8,4,1,1,81,23,2,2,303,1,94,4,2,23,1,2,31,23,1,4,2,1,85,4,2,2,51,23,1,4,1,1,61,2,42,23,1,1,72,23,1,2,41,23,1,1,14,2,38,1,138,2,42,23,1,1,1255,}, + {1,1356,2,371,4,2,1,82,4,2,2,305,1,100,4,2,23,2,2,18,23,1,4,2,1,95,4,1,2,45,23,1,4,1,1,64,2,42,4,1,1,72,23,1,2,41,23,1,1,14,2,38,1,1436,}, + {1,1356,2,371,4,2,1,82,23,1,4,1,2,305,1,108,4,2,1,2,4,2,1,2,4,1,1,106,4,2,2,37,23,1,4,1,1,73,4,32,1,1,4,2,1,76,4,1,1,1,4,2,1,1,4,1,1,1,4,1,1,1,4,26,1,2,4,2,1,19,4,25,1,7,4,2,1,1438,}, + {1,1352,23,3,2,379,1,75,4,2,2,307,1,226,4,3,23,2,2,25,23,2,4,4,1,1716,}, + {1,1352,23,3,2,379,1,75,4,2,2,307,1,232,4,3,23,3,2,10,23,4,4,4,1,1722,}, + {1,1352,23,3,2,379,1,75,4,2,2,307,1,1978,}, + {1,1352,23,3,2,379,1,75,2,309,1,1978,}, + {1,1352,23,3,2,379,1,75,2,309,1,1978,}, + {1,1352,23,3,2,379,4,9,1,66,2,309,1,1978,}, + {1,1352,23,3,2,379,4,1,1,1,4,8,1,65,2,309,1,1978,}, + {1,1352,2,390,23,2,1,63,2,311,1,1978,}, + {1,1352,2,390,23,2,1,63,2,311,1,1978,}, + {1,1352,2,390,23,2,1,63,2,311,1,1978,}, + {1,1352,23,3,2,390,1,5,4,1,1,54,4,2,2,311,1,1978,}, + {1,1352,23,3,2,390,1,60,4,2,2,311,1,1978,}, + {1,1352,4,3,2,393,1,57,2,313,1,1978,}, + {1,1352,4,3,2,393,1,57,2,313,1,1978,}, + {1,1347,2,2,1,3,2,398,1,52,2,316,1,1978,}, + {1,1347,2,2,1,3,2,398,1,52,2,316,1,1978,}, + {1,1347,2,2,1,3,2,398,1,52,2,316,1,1978,}, + {1,1291,2,13,4,17,23,6,2,2,23,4,2,418,23,1,4,1,1,45,4,1,2,319,1,1978,}, + {1,1291,2,13,4,17,23,6,2,1,23,1,2,1,23,2,4,1,2,418,23,2,1,45,4,1,2,319,1,1978,}, + {1,1273,2,3,4,2,2,482,23,1,2,1,1,6,4,1,1,1,2,4,23,2,1,1,4,2,2,6,1,2,23,1,2,2,4,3,1,5,2,320,1,1978,}, + {1,1273,2,3,4,2,2,482,23,2,1,6,4,2,2,4,23,2,1,1,4,2,2,6,1,2,23,1,2,2,4,3,1,5,2,320,1,1978,}, + {1,1250,4,9,23,3,2,503,4,1,2,19,23,2,2,331,1,1978,}, + {1,1250,4,1,23,1,4,7,23,3,2,503,4,1,2,19,23,2,2,331,1,1978,}, + {1,1250,4,3,23,2,4,4,23,3,2,503,4,1,2,19,23,2,2,331,1,1978,}, + {1,1235,2,883,1,1978,}, + {1,1235,2,883,1,1978,}, + {1,1194,4,1,1,8,4,2,1,12,4,6,23,3,2,892,1,1978,}, + {1,1183,4,1,1,1,2,13,4,3,2,917,1,1978,}, + {1,1183,4,2,2,13,4,3,2,4,23,1,2,912,1,1978,}, + {1,1161,4,3,1,13,4,8,2,933,1,1978,}, + {1,1161,4,3,1,13,4,8,2,933,1,1978,}, + {1,1161,4,3,1,13,4,8,2,933,1,1978,}, + {1,1158,23,3,2,3,23,4,2,1,23,1,2,3,23,2,2,943,1,1978,}, + {1,1158,2,6,23,7,2,2,23,2,2,943,1,1978,}, + {1,1144,4,13,2,961,1,1978,}, + {1,1144,4,13,23,1,2,960,1,1978,}, + {1,1144,2,974,1,1978,}, + {1,1144,2,974,1,1978,}, + {1,1144,2,974,1,1978,}, + {1,1123,4,6,2,989,1,1978,}, + {1,1123,4,6,2,989,1,1978,}, + {1,1123,2,1037,4,1,1,1935,}, + {1,1123,2,1037,4,1,1,1935,}, + {1,1110,4,2,2,1049,4,1,1,1934,}, + {1,1103,4,1,1,6,4,2,2,1049,4,2,1,1933,}, + {1,1109,4,3,2,1049,1,1,4,1,1,1933,}, + {1,1099,23,3,2,1061,1,661,4,6,1,1266,}, + {1,1099,23,3,2,1061,1,660,4,7,1,1266,}, + {1,1095,4,3,2,1065,4,2,1,629,4,1,1,9,4,2,23,2,2,28,4,2,1,1258,}, + {1,1095,4,3,2,1065,4,2,1,629,4,1,1,9,4,3,23,1,2,28,4,2,1,1258,}, + {1,1092,4,2,23,1,2,1070,23,1,1,601,4,3,23,5,4,1,23,2,2,63,23,2,4,2,23,2,4,1,1,1248,}, + {1,1092,4,3,2,1070,23,1,1,601,4,3,23,5,4,1,23,2,2,63,23,2,4,1,23,1,4,1,23,1,4,2,1,1247,}, + {1,1092,4,2,23,1,2,1070,23,1,1,601,4,4,23,2,4,1,23,1,4,1,23,2,2,63,23,2,4,1,23,3,4,2,1,1247,}, + {1,1086,2,1080,4,3,1,590,23,3,2,88,23,1,4,1,1,1244,}, + {1,1086,23,2,2,1078,4,3,1,590,23,3,2,89,4,1,1,1244,}, + {1,1081,4,1,23,2,2,1085,4,1,1,578,4,6,23,2,2,104,4,4,1,1232,}, + {1,1081,4,1,23,2,2,1085,1,1,4,1,1,577,4,6,23,2,2,104,4,4,1,1232,}, + {1,1073,23,2,2,1096,4,1,1,570,4,4,23,1,2,121,4,1,1,1227,}, + {1,1073,23,1,4,1,2,1096,4,1,1,570,4,3,23,2,2,121,4,1,1,1227,}, + {1,1073,23,2,2,1096,4,1,1,570,4,3,23,2,2,121,4,1,1,1227,}, + {1,1045,4,1,1,10,4,6,2,1110,1,565,4,2,2,133,4,3,1,1221,}, + {1,1056,4,6,2,1110,1,565,4,2,2,133,4,3,1,2,4,1,1,1218,}, + {1,1053,2,1119,4,2,1,557,4,2,23,3,2,139,1,1221,}, + {1,1053,2,1119,4,2,1,557,4,2,23,3,2,139,1,1221,}, + {1,1045,4,2,2,1127,4,4,1,548,4,2,2,147,1,1221,}, + {1,1045,4,2,2,1127,4,4,1,548,4,2,2,147,1,1221,}, + {1,1045,4,2,2,1127,4,4,1,548,4,2,2,147,1,1221,}, + {1,1042,4,1,2,1135,1,542,4,2,23,2,2,151,1,1221,}, + {1,1042,4,1,2,1135,1,542,4,2,23,2,2,151,1,1221,}, + {1,1031,4,6,1,1,4,1,2,1141,23,2,1,532,4,3,2,156,23,2,1,1221,}, + {1,1031,4,8,2,1141,23,2,1,532,4,3,2,156,23,2,1,1221,}, + {1,1030,23,1,2,1151,1,527,4,2,23,2,2,160,23,2,1,1221,}, + {1,1030,23,1,2,1151,1,527,4,2,23,2,2,160,4,1,23,1,1,1221,}, + {1,1030,23,1,2,1151,1,527,4,2,23,2,2,160,23,2,1,1221,}, + {1,1022,4,3,2,1157,1,510,4,6,23,2,2,173,4,2,1,1221,}, + {1,1022,4,3,2,1157,1,510,4,6,23,2,2,173,4,2,1,1221,}, + {1,1020,2,1162,23,4,1,500,4,4,23,1,2,182,1,1223,}, + {1,1020,2,1162,23,4,1,500,4,3,23,2,2,182,1,1223,}, + {1,1013,2,1,23,1,2,1173,23,1,1,491,2,192,23,1,1,1223,}, + {1,1013,2,1175,23,1,1,491,23,2,2,190,23,1,1,1223,}, + {1,1013,23,1,2,1174,23,1,1,491,2,192,4,1,1,1223,}, + {1,1006,4,2,23,3,2,1178,23,5,4,1,1,453,4,1,23,27,2,196,1,1224,}, + {1,1006,4,2,23,3,2,1178,23,6,1,453,4,1,23,27,2,196,1,1224,}, + {1,987,4,1,1,16,4,2,2,1189,1,448,4,1,23,2,2,226,1,1224,}, + {1,1004,4,2,2,1189,1,448,4,1,23,2,2,226,1,1224,}, + {1,997,23,2,4,1,2,1195,1,442,4,1,2,231,23,3,1,1224,}, + {1,997,23,2,4,1,2,1195,1,442,4,1,2,231,23,3,1,1224,}, + {1,997,23,2,4,1,2,1195,1,442,4,1,2,231,4,1,23,2,1,1224,}, + {1,991,2,1204,1,436,4,1,23,3,2,234,4,3,1,1224,}, + {1,991,2,1204,1,436,4,1,23,3,2,234,4,3,1,1224,}, + {1,983,4,6,2,1206,1,431,4,1,2,241,23,1,1,1227,}, + {1,983,4,6,2,1206,1,431,4,1,2,241,23,1,1,1227,}, + {1,980,4,2,2,1213,1,425,4,1,23,2,2,245,1,1228,}, + {1,980,4,2,2,1213,1,425,4,1,23,2,2,245,1,1228,}, + {1,980,4,2,2,1213,1,425,4,1,23,2,2,245,1,1228,}, + {1,974,2,1217,23,2,1,421,4,2,2,250,4,1,1,1229,}, + {1,974,2,1217,23,2,1,421,4,2,2,250,1,1,4,1,1,1228,}, + {1,969,2,2,1,1,4,2,2,1215,23,2,4,2,1,416,4,1,23,2,2,252,1,1232,}, + {1,967,4,2,2,2,1,1,4,2,2,1215,23,2,4,2,1,416,4,1,23,2,2,252,1,1232,}, + {1,957,4,8,2,1223,1,415,4,1,2,259,1,1233,}, + {1,957,4,4,1,1,4,3,2,1221,23,1,2,1,1,415,4,1,2,259,1,1233,}, + {1,957,4,8,2,1223,1,415,4,1,2,259,1,1233,}, + {1,955,2,1231,1,412,4,1,23,2,2,259,1,1236,}, + {1,955,2,1231,1,412,4,1,23,2,2,259,1,1236,}, + {1,955,2,1228,1,407,23,2,2,266,4,2,1,1236,}, + {1,955,2,1228,1,407,23,2,2,266,4,2,1,1236,}, + {1,949,23,6,2,1222,23,1,4,2,1,2,23,1,1,406,2,268,23,1,1,1238,}, + {1,949,23,6,2,1222,23,1,4,2,1,2,23,1,1,406,2,269,1,1238,}, + {1,949,23,6,2,1222,23,1,4,2,1,2,23,1,1,406,2,268,23,1,1,1238,}, + {1,944,23,2,2,1228,1,405,4,2,2,276,4,1,1,1238,}, + {1,944,23,2,2,1228,1,405,4,2,2,276,4,1,1,1238,}, + {1,940,4,3,23,1,2,1227,4,1,1,403,23,4,2,278,1,1239,}, + {1,940,4,3,23,1,2,1227,4,1,1,403,23,4,2,278,1,1239,}, + {1,938,4,2,2,1231,1,401,4,1,2,282,4,2,1,1239,}, + {1,938,4,2,2,1231,1,401,4,1,2,282,4,2,1,1239,}, + {1,938,4,2,2,1231,1,401,4,1,2,282,4,2,1,1239,}, + {1,929,4,2,23,2,4,2,2,1236,1,1,23,2,1,393,4,3,2,282,23,3,1,1241,}, + {1,929,4,2,23,2,4,2,2,1236,1,1,23,2,1,393,4,3,2,282,23,3,1,1241,}, + {1,929,2,1245,23,3,1,390,23,3,2,282,1,1244,}, + {1,929,2,1245,23,3,1,390,23,3,2,282,1,1244,}, + {1,921,4,5,2,1252,4,2,1,381,4,1,2,289,4,1,1,1244,}, + {1,921,4,5,2,1252,4,2,1,381,4,1,2,289,4,1,1,1244,}, + {1,921,4,5,2,1252,4,2,1,381,4,1,2,289,4,1,1,1244,}, + {1,920,2,1262,23,1,4,3,1,375,23,1,2,289,1,1245,}, + {1,920,2,1262,23,1,4,3,1,375,23,1,2,289,1,1245,}, + {1,906,4,3,1,3,4,3,2,1273,4,1,1,364,4,5,2,291,4,2,1,1245,}, + {1,901,4,1,1,4,4,3,1,3,4,3,2,1273,4,1,1,364,4,5,2,291,4,2,1,1245,}, + {1,903,4,3,2,1285,4,2,1,357,4,3,2,294,23,2,1,1247,}, + {1,903,4,3,2,1285,4,2,1,357,4,3,2,294,23,2,1,1247,}, + {1,903,4,3,2,1285,4,2,1,357,4,3,2,294,23,2,1,1247,}, + {1,903,4,3,2,1293,4,3,1,347,4,1,2,296,23,1,1,1249,}, + {1,903,4,3,2,1293,4,3,1,347,4,1,2,296,23,1,1,1249,}, + {1,903,2,1299,1,339,23,6,2,299,1,1250,}, + {1,903,2,1299,1,339,23,6,2,299,1,1250,}, + {1,900,23,1,2,1310,23,3,4,11,1,307,4,4,23,2,2,305,4,3,1,1250,}, + {1,900,23,1,2,1310,23,3,4,11,1,307,4,4,23,2,2,305,4,3,1,1250,}, + {1,900,23,1,2,1310,23,3,4,11,1,307,4,4,23,1,2,306,4,3,1,1250,}, + {1,894,23,6,2,1325,23,5,1,302,2,309,23,2,1,1253,}, + {1,894,23,6,2,1325,23,5,1,302,2,309,23,2,1,1253,}, + {1,884,2,5,23,1,2,1342,4,15,1,283,2,310,4,1,1,1255,}, + {1,884,2,5,4,1,2,1342,4,15,1,283,2,310,4,1,1,1255,}, + {1,883,4,1,2,1364,23,5,2,1,23,2,4,3,1,262,4,1,23,5,2,311,4,2,1,1256,}, + {1,883,4,1,2,1364,23,5,2,1,23,2,4,3,1,262,4,1,23,5,2,311,4,2,1,1256,}, + {1,883,4,1,2,1364,23,5,2,1,23,2,4,3,1,262,4,1,23,5,2,311,4,2,1,1256,}, + {1,883,4,1,2,1375,1,253,4,1,1,6,2,317,4,2,1,1258,}, + {1,883,4,1,2,1375,1,258,4,1,1,1,2,317,4,2,1,1258,}, + {1,881,4,2,23,1,2,1378,23,3,1,243,23,3,2,323,4,2,1,1260,}, + {1,881,4,2,23,1,2,1378,23,3,1,243,23,3,2,323,4,2,1,1260,}, + {1,875,4,3,2,1395,1,9,4,5,1,217,23,2,2,324,4,2,1,1264,}, + {1,875,4,3,2,1395,1,1,4,1,1,7,4,5,1,217,23,2,2,324,4,2,1,1264,}, + {1,875,4,3,2,1395,4,1,1,8,4,5,1,217,23,2,2,324,4,2,1,1264,}, + {1,864,4,2,23,1,4,3,1,2,4,1,23,2,2,1409,23,3,1,204,4,2,23,4,4,1,23,1,4,1,2,329,1,1267,}, + {1,864,4,2,23,1,4,3,1,2,4,1,23,2,2,1409,23,3,1,204,4,2,23,4,4,1,23,1,4,1,2,329,1,1267,}, + {1,862,4,2,2,1424,4,2,1,2,23,1,2,3,1,7,4,2,2,2,23,2,1,179,2,339,4,2,1,1267,}, + {1,862,4,2,2,1424,4,2,1,2,23,1,2,3,1,7,4,2,2,2,23,2,1,179,2,339,4,2,1,1267,}, + {1,862,4,2,2,1437,23,3,2,5,4,1,1,166,2,348,1,1272,}, + {1,862,4,2,2,1437,23,4,2,4,4,1,1,166,2,348,1,1272,}, + {1,862,4,2,2,1437,23,4,2,4,4,1,1,166,2,348,1,1272,}, + {1,855,4,1,2,3,1,2,23,1,2,1457,4,2,1,14,23,1,1,137,23,1,2,349,4,1,1,1272,}, + {1,855,4,1,2,3,1,2,23,1,2,1457,4,2,1,14,4,1,1,137,23,1,2,349,4,1,1,1272,}, + {1,847,4,4,23,2,2,1480,23,2,2,5,4,6,1,9,4,2,1,83,4,16,1,11,4,4,23,2,2,348,23,2,1,1273,}, + {1,847,4,4,23,2,2,1480,23,2,2,5,4,6,1,9,4,2,1,83,4,2,1,1,4,14,1,10,4,4,23,2,2,348,23,1,2,1,1,1273,}, + {1,847,23,3,2,1494,4,2,1,9,2,3,1,82,2,381,4,1,1,1274,}, + {1,847,23,3,2,1494,4,2,1,9,2,3,1,82,2,18,23,1,2,362,4,1,1,1274,}, + {1,847,23,3,2,1494,4,2,1,9,2,3,1,82,2,381,4,2,1,1273,}, + {1,847,23,3,2,1511,23,1,4,10,1,63,4,5,2,378,23,1,1,1277,}, + {1,847,23,3,2,1511,4,1,23,1,4,9,1,63,4,5,2,378,23,1,1,1277,}, + {1,839,4,3,23,5,2,1527,23,1,1,40,4,2,23,3,2,2,1,6,4,1,23,5,2,381,23,3,1,1278,}, + {1,839,4,3,23,5,2,1527,23,1,1,40,4,2,23,3,2,2,1,6,4,1,23,5,2,381,23,3,1,1278,}, + {1,834,4,3,1,1,2,1976,23,1,1,1281,}, + {1,834,4,2,1,1,4,1,2,1975,23,2,1,1281,}, + {1,834,4,3,1,1,2,1975,23,2,1,1281,}, + {1,834,2,1979,1,1283,}, + {1,833,23,1,2,1978,4,1,1,1283,}, + {1,833,2,1979,4,1,1,1283,}, + {1,827,4,1,23,3,2,1,23,1,2,1979,1,1284,}, + {1,827,4,1,23,4,2,1980,1,1284,}, + {1,827,2,1983,4,2,1,1284,}, + {1,827,2,1983,4,2,1,1284,}, + {1,827,2,1983,4,2,1,1284,}, + {1,818,4,1,2,1989,1,1,4,1,1,1286,}, + {1,818,4,1,2,1989,4,1,1,1287,}, + {1,814,2,1992,4,2,1,1288,}, + {1,814,2,1992,4,2,1,1288,}, + {1,812,4,2,2,1990,4,2,1,1290,}, + {1,812,4,2,2,1990,4,2,1,1290,}, + {1,812,4,2,2,1990,4,2,1,1290,}, + {1,805,23,3,1,4,2,1990,4,2,1,1292,}, + {1,805,23,3,1,4,2,1990,4,2,1,1292,}, + {1,804,4,1,2,1994,23,2,1,1295,}, + {1,802,4,2,1,1,2,1994,23,2,1,1295,}, + {1,802,4,3,2,1991,4,3,1,1297,}, + {1,802,4,3,2,1991,4,3,1,1297,}, + {1,802,4,3,2,1991,4,3,1,1297,}, + {1,801,4,1,23,3,2,1990,4,1,1,1300,}, + {1,801,4,1,23,3,2,1990,4,1,1,1300,}, + {1,796,4,1,2,1996,23,2,1,1301,}, + {1,796,4,1,2,1996,23,2,1,1301,}, + {1,791,23,2,2,2000,1,1303,}, + {1,791,23,2,2,2000,1,1303,}, + {1,791,23,2,2,1999,23,1,1,1303,}, + {1,790,23,1,2,2000,1,1305,}, + {1,790,23,1,2,2000,1,1305,}, + {1,782,4,6,2,2002,23,1,1,1305,}, + {1,782,4,6,2,2002,23,1,1,1305,}, + {1,779,4,1,23,2,2,2005,23,3,1,1306,}, + {1,780,23,2,2,2005,23,3,1,1306,}, + {1,780,23,2,2,2005,23,3,1,1306,}, + {1,771,4,2,1,4,2,2009,23,1,1,1309,}, + {1,771,4,1,1,1,4,1,1,3,2,1,23,1,2,2006,23,1,2,1,1,1309,}, + {1,768,23,3,2,2014,1,1311,}, + {1,768,23,3,2,2014,1,1311,}, + {1,768,2,2016,1,1312,}, + {1,766,4,1,1,1,2,2016,1,1312,}, + {1,768,2,2016,1,1312,}, + {1,763,23,1,4,1,2,2017,4,2,1,1312,}, + {1,763,23,2,2,2017,4,2,1,1312,}, + {1,762,2,2017,4,3,1,1314,}, + {1,762,2,2017,4,3,1,1314,}, + {1,756,4,1,23,3,2,2016,23,2,1,1318,}, + {1,756,4,1,23,3,2,2016,23,2,1,1318,}, + {1,750,4,1,1,5,4,1,23,3,2,2016,23,2,1,1318,}, + {1,751,2,2025,1,1320,}, + {1,751,2,2025,1,1320,}, + {1,746,2,2029,1,1321,}, + {1,746,2,2027,23,2,1,1321,}, + {1,745,23,1,2,2027,1,1323,}, + {1,745,23,1,2,2027,1,1323,}, + {1,745,23,1,2,2027,1,1323,}, + {1,741,4,2,2,2027,4,3,1,1323,}, + {1,741,4,2,2,2027,4,3,1,1323,}, + {1,739,23,2,2,2028,23,1,1,1326,}, + {1,739,2,2031,1,1326,}, + {1,726,4,9,23,2,2,2030,4,2,1,1327,}, + {1,726,4,9,23,2,2,2030,4,2,1,1327,}, + {1,726,4,9,23,2,2,2030,4,2,1,1327,}, + {1,726,2,2039,4,2,1,1329,}, + {1,726,2,2039,23,2,1,1329,}, + {1,726,2,2038,4,1,1,1331,}, + {1,726,2,2038,4,1,1,1331,}, + {1,725,4,1,2,2036,23,2,1,1332,}, + {1,725,4,1,2,2036,23,2,1,1332,}, + {1,725,4,1,2,2036,23,2,1,1332,}, + {1,719,2,2043,4,2,1,1332,}, + {1,719,2,2043,4,2,1,1332,}, + {1,711,23,4,2,2044,4,3,1,1334,}, + {1,711,23,4,2,2044,4,3,1,1334,}, + {1,709,2,2049,4,1,1,1337,}, + {1,709,2,2049,4,1,1,1337,}, + {1,709,2,2049,4,1,1,1337,}, + {1,709,2,2047,4,2,1,1338,}, + {1,709,2,2047,4,2,1,1338,}, + {1,707,4,1,2,2046,4,2,1,1340,}, + {1,708,2,2046,4,2,1,1340,}, + {1,700,4,6,2,2047,4,1,1,1342,}, + {1,700,4,6,2,2047,4,1,1,1342,}, + {1,700,4,6,2,2047,4,1,1,1342,}, + {1,697,23,1,2,2053,23,1,2,1,1,1343,}, + {1,697,23,1,2,2052,23,1,2,2,1,1343,}, + {1,687,4,8,2,2055,1,1346,}, + {1,687,4,8,2,2055,1,1346,}, + {1,683,2,2065,1,1348,}, + {1,683,2,2065,1,1348,}, + {1,683,2,2065,1,1348,}, + {1,672,4,3,1,2,4,3,2,2065,23,1,2,1,1,1349,}, + {1,672,4,4,1,2,4,2,2,2066,23,1,1,1349,}, + {1,670,2,2072,23,3,1,1351,}, + {1,670,2,2072,23,3,1,1351,}, + {1,670,2,2072,1,1354,}, + {1,670,2,2072,1,1354,}, + {1,670,2,2072,1,1354,}, + {1,663,23,1,1,3,4,2,23,1,2,2071,4,1,1,1354,}, + {1,663,23,1,1,3,4,2,23,1,2,2071,4,1,1,1354,}, + {1,661,2,2080,1,1355,}, + {1,661,2,2080,1,1355,}, + {1,658,23,1,2,2080,4,2,1,1355,}, + {1,658,23,1,2,2080,4,2,1,1355,}, + {1,658,23,1,2,2080,4,2,1,1355,}, + {1,653,4,2,2,2084,1,1357,}, + {1,653,4,2,2,2084,1,1357,}, + {1,647,4,3,2,145,23,1,4,2,23,3,2,1936,23,2,1,1357,}, + {1,647,4,3,2,142,23,1,4,14,23,2,2,1928,23,2,1,1357,}, + {1,647,2,143,23,1,4,23,23,1,2,1922,4,2,1,1357,}, + {1,647,2,140,23,1,4,28,2,1921,4,2,1,1357,}, + {1,647,2,1,23,1,2,135,23,1,4,32,23,1,2,1919,4,2,1,1357,}, + {1,641,4,3,2,138,4,37,2,1918,4,2,1,1357,}, + {1,641,4,3,2,136,4,40,23,1,2,1916,4,2,1,1357,}, + {1,635,2,144,4,43,2,1915,4,2,1,1357,}, + {1,635,2,143,4,45,23,1,2,1913,4,2,1,1357,}, + {1,629,4,6,2,142,4,48,2,1912,4,2,1,1357,}, + {1,629,4,6,2,141,23,1,4,49,23,1,2,1910,4,2,1,1357,}, + {1,629,4,6,2,140,23,1,4,52,2,1909,4,2,1,1357,}, + {1,627,4,2,2,145,23,1,4,53,23,1,2,1908,4,2,1,1357,}, + {1,627,4,2,2,145,4,55,2,1908,4,2,1,1357,}, + {1,624,4,3,2,146,4,56,2,1908,23,2,1,1357,}, + {1,624,4,3,2,145,4,24,23,10,4,1,1,1,4,22,2,1907,23,2,1,1357,}, + {1,618,4,2,2,2,23,2,2,147,4,22,23,17,4,20,23,1,2,1908,1,1357,}, + {1,618,4,2,2,2,23,2,2,146,23,1,4,19,23,21,4,20,2,1908,1,1357,}, + {1,618,4,2,2,2,23,2,2,145,23,1,4,18,23,25,4,18,23,1,2,1907,1,1357,}, + {1,618,2,151,23,1,4,17,23,27,4,18,2,1907,1,1357,}, + {1,618,2,151,4,17,1,1,23,29,4,16,23,1,2,1906,1,1357,}, + {1,615,23,1,2,153,4,16,1,1,23,31,4,16,2,1906,23,2,1,1355,}, + {1,615,23,1,2,153,4,16,23,32,4,16,23,1,2,1905,23,2,1,1355,}, + {1,609,2,160,4,15,23,34,4,16,2,1907,4,1,1,1354,}, + {1,609,2,159,23,1,4,14,23,35,4,16,23,1,2,1906,4,1,1,1354,}, + {1,607,2,161,4,15,23,36,4,15,23,1,2,1907,1,1354,}, + {1,607,2,161,4,14,1,1,23,36,1,1,4,14,23,1,2,1907,1,1354,}, + {1,607,2,161,4,14,23,38,4,15,2,1907,1,1354,}, + {1,604,23,1,2,163,4,14,23,38,1,1,4,14,2,1907,4,3,1,1351,}, + {1,599,4,1,1,4,23,1,2,162,23,1,4,14,23,39,4,14,2,1907,23,1,4,2,1,1351,}, + {1,598,23,1,2,168,4,15,23,39,4,14,2,1910,23,2,1,1349,}, + {1,598,23,1,2,168,4,14,1,1,23,38,4,15,2,1910,23,2,1,1349,}, + {1,598,2,169,4,15,23,38,4,15,2,1912,4,1,1,1348,}, + {1,598,2,169,4,15,23,38,4,14,23,1,2,1912,4,1,1,1348,}, + {1,598,2,169,23,1,4,15,23,36,4,15,2,1913,4,1,1,1348,}, + {1,588,4,2,23,2,4,2,2,174,4,15,23,36,4,15,2,1916,1,1346,}, + {1,588,4,2,23,2,4,2,2,174,4,15,23,36,4,14,23,1,2,1916,1,1346,}, + {1,587,4,1,2,181,4,15,23,34,4,15,2,1917,23,1,4,2,1,1343,}, + {1,587,4,1,2,181,4,15,23,33,1,1,4,15,2,1917,4,1,23,2,1,1343,}, + {1,582,4,2,1,1,4,2,2,182,23,1,4,15,23,31,4,17,2,1920,1,1343,}, + {1,582,4,5,2,183,4,17,23,28,4,17,23,1,2,1920,1,1343,}, + {1,581,23,1,2,188,4,18,23,26,1,1,4,17,2,1922,1,1342,}, + {1,581,23,1,2,188,23,1,4,18,23,24,4,19,2,1922,1,1342,}, + {1,579,2,192,4,19,23,22,1,1,4,18,23,1,2,1924,1,1340,}, + {1,579,2,192,4,20,1,1,23,17,4,22,2,1925,1,1340,}, + {1,577,23,1,2,193,23,1,4,24,1,1,23,8,1,1,4,25,2,1925,23,2,1,1338,}, + {1,577,23,2,2,193,4,57,23,1,2,1926,23,2,1,1338,}, + {1,577,2,1,23,1,2,194,4,55,23,1,2,1927,23,1,2,1,1,1338,}, + {1,571,4,2,2,201,4,53,23,1,2,1931,4,3,1,1334,}, + {1,571,4,2,2,202,4,51,23,1,2,1932,4,3,1,1334,}, + {1,565,4,3,23,2,2,206,23,1,4,48,23,1,2,1938,4,1,1,1331,}, + {1,565,4,3,2,1,23,1,2,207,23,1,4,46,23,1,2,1937,23,1,2,1,4,1,1,1331,}, + {1,560,4,4,1,1,23,3,2,211,4,44,23,1,2,1941,23,1,2,1,1,1329,}, + {1,559,4,3,1,1,4,1,1,1,23,3,2,212,4,42,2,1944,23,1,1,1329,}, + {1,559,4,5,1,1,23,3,2,213,4,40,2,1944,23,1,2,1,1,1329,}, + {1,559,23,1,2,4,23,1,2,217,23,1,4,37,2,1949,1,1327,}, + {1,559,23,1,2,4,23,1,2,218,23,1,4,35,2,1950,1,1327,}, + {1,559,23,1,2,225,23,1,4,29,23,1,2,1954,4,2,1,1324,}, + {1,559,23,1,2,229,23,1,4,21,23,1,2,1958,1,1,4,2,1,1323,}, + {1,554,4,2,23,3,2,235,23,1,4,12,23,2,2,1964,23,2,1,1321,}, + {1,554,4,2,23,3,2,239,23,2,4,4,23,1,2,1968,23,2,1,1321,}, + {1,554,4,2,23,3,2,2214,23,2,1,1321,}, + {1,553,2,2222,4,1,1,1320,}, + {1,553,2,2222,4,1,1,1320,}, + {1,553,2,2222,4,1,1,1320,}, + {1,553,2,2222,4,1,1,1320,}, + {1,549,2,2227,1,1320,}, + {1,549,2,2227,1,1320,}, + {1,549,2,2227,1,1320,}, + {1,548,2,2228,4,2,1,1318,}, + {1,548,23,1,2,2227,4,2,1,1318,}, + {1,548,23,1,2,2227,23,2,1,1318,}, + {1,548,23,1,2,2227,23,2,1,1318,}, + {1,548,2,2230,4,1,1,1317,}, + {1,548,2,2230,4,1,1,1317,}, + {1,548,2,2230,4,1,1,1317,}, + {1,545,4,3,2,2231,1,1317,}, + {1,545,4,3,2,2231,1,1317,}, + {1,545,4,3,2,2234,4,2,1,1312,}, + {1,545,4,3,2,2234,4,1,1,1313,}, + {1,548,23,1,2,2235,1,1312,}, + {1,548,23,1,2,2235,1,1312,}, + {1,548,23,1,2,2235,1,1312,}, + {1,548,23,1,2,2236,1,1311,}, + {1,548,23,1,2,2236,1,1311,}, + {1,549,23,4,2,2232,23,2,1,1309,}, + {1,549,23,4,2,2232,23,2,1,1309,}, + {1,553,4,1,2,2233,4,3,1,1306,}, + {1,553,4,1,2,2233,4,3,1,1306,}, + {1,554,2,2233,4,3,1,1306,}, + {1,556,2,2234,23,1,1,1305,}, + {1,556,2,2234,4,1,1,1305,}, + {1,556,4,6,23,2,2,2227,4,2,1,1303,}, + {1,556,4,4,1,1,4,2,23,1,2,2227,4,2,1,1303,}, + {1,562,4,2,2,2229,23,1,4,1,1,1301,}, + {1,562,4,2,2,2229,4,1,23,1,1,1301,}, + {1,562,4,2,2,2229,4,2,1,1301,}, + {1,564,2,2231,1,1301,}, + {1,564,2,2231,1,1301,}, + {1,568,2,2227,4,1,1,1300,}, + {1,568,2,2227,4,1,1,1300,}, + {1,570,2,2226,4,3,1,1297,}, + {1,568,4,1,1,1,2,2226,4,3,1,1297,}, + {1,570,2,2226,4,1,1,1,4,1,1,1297,}, + {1,570,2,1,23,1,2,2227,4,2,1,1295,}, + {1,570,2,2229,4,2,1,1295,}, + {1,573,2,2228,23,1,1,1294,}, + {1,573,2,2228,23,1,1,1294,}, + {1,573,2,3,1,1,23,1,2,2224,23,1,2,1,1,1292,}, + {1,573,2,3,1,1,2,2226,23,1,1,1292,}, + {1,573,2,3,1,1,23,1,2,2224,23,1,2,1,1,1292,}, + {1,573,4,3,1,3,4,1,1,1,2,2225,4,2,1,1288,}, + {1,573,4,3,1,4,4,1,2,2225,4,1,1,1289,}, + {1,581,2,2227,4,1,1,1287,}, + {1,581,2,2227,4,2,1,1286,}, + {1,582,23,3,2,2225,1,1286,}, + {1,582,23,3,2,2224,23,1,1,1286,}, + {1,587,4,1,2,2222,4,2,1,1284,}, + {1,587,23,1,2,2222,4,2,1,1284,}, + {1,587,4,1,2,2222,23,1,4,1,1,1284,}, + {1,587,4,1,2,2224,1,1284,}, + {1,587,4,1,2,2224,1,1284,}, + {1,590,4,2,2,2220,23,1,1,1283,}, + {1,590,4,2,2,2220,23,1,1,1283,}, + {1,533,23,10,4,2,1,47,23,1,4,3,2,2217,23,1,4,1,1,1281,}, + {1,533,23,10,4,2,1,47,4,1,23,1,4,2,2,2217,4,2,1,1281,}, + {1,533,23,10,4,2,1,47,4,4,2,2217,4,2,1,1281,}, + {1,533,2,18,1,43,4,2,2,2219,23,3,1,1278,}, + {1,533,2,18,1,43,4,2,2,2219,23,3,1,1278,}, + {1,527,4,1,23,5,2,20,23,41,4,2,1,2,23,1,2,2220,4,2,1,1275,}, + {1,527,4,1,23,4,4,1,2,20,23,41,4,2,1,2,23,1,2,2220,4,2,1,1275,}, + {1,527,23,1,2,2293,1,1275,}, + {1,527,23,1,2,2293,1,1275,}, + {1,527,23,1,2,2293,1,1275,}, + {1,523,4,2,2,2296,4,2,1,1273,}, + {1,523,23,1,4,1,2,2296,4,2,1,1273,}, + {1,522,4,1,2,2300,1,1273,}, + {1,522,4,1,2,2300,1,1273,}, + {1,522,4,1,2,2300,23,1,1,1272,}, + {1,522,4,1,2,2300,23,1,1,1272,}, + {1,522,4,1,2,2300,23,1,1,1272,}, + {1,522,4,1,2,2304,1,1269,}, + {1,522,4,1,2,2304,4,2,1,1267,}, + {1,523,23,1,2,2305,4,1,1,1266,}, + {1,523,23,2,2,2304,23,1,1,1266,}, + {1,522,4,1,2,2307,4,2,1,1264,}, + {1,522,4,1,2,2307,4,2,1,1264,}, + {1,522,4,1,2,2307,4,2,1,1264,}, + {1,522,4,1,2,2309,23,2,4,2,1,1260,}, + {1,522,4,1,2,2310,23,1,4,2,1,1260,}, + {1,522,4,1,2,2313,4,2,1,1258,}, + {1,522,4,1,2,2313,4,2,1,1258,}, + {1,522,4,1,2,2315,4,2,1,1256,}, + {1,522,4,1,2,2315,4,2,1,1256,}, + {1,522,4,1,2,2315,4,2,1,1256,}, + {1,523,2,1916,23,17,2,384,23,1,1,1255,}, + {1,523,2,1916,23,17,2,384,23,1,1,1255,}, + {1,522,4,1,2,1874,1,1,4,7,1,1,4,1,2,8,1,2,23,9,4,8,23,5,1,18,4,1,1,1,23,3,2,381,1,1253,}, + {1,522,4,1,2,1874,1,1,4,3,1,1,4,5,2,8,1,2,2,1,23,8,4,4,1,1,4,3,23,5,1,18,4,2,23,3,2,381,1,1253,}, + {1,522,4,1,2,1851,23,4,2,5,23,14,1,12,4,3,1,59,4,2,23,1,2,2,23,3,1,9,23,2,2,353,4,3,1,1250,}, + {1,522,4,1,2,1851,23,4,2,5,23,11,4,1,23,2,1,12,4,3,1,59,4,2,23,1,2,2,23,3,1,9,23,2,2,353,4,3,1,1250,}, + {1,522,4,1,2,1851,23,4,2,5,23,14,1,12,4,3,1,59,4,2,23,1,2,2,4,1,23,2,1,9,23,2,2,353,4,3,1,1250,}, + {1,523,23,2,2,1847,1,6,4,5,1,93,4,3,1,11,4,29,23,2,2,325,1,1250,}, + {1,523,23,2,2,1847,1,6,4,5,1,94,4,1,1,12,4,29,23,2,2,325,1,1250,}, + {1,525,2,1830,23,3,2,1,23,2,2,1,23,1,1,1,23,2,2,4,1,157,4,1,23,2,2,316,23,1,1,1249,}, + {1,525,2,1829,23,6,2,1,23,2,1,1,23,2,2,1,23,2,2,1,1,157,4,1,23,2,2,316,23,1,1,1249,}, + {1,525,4,2,2,1820,4,6,1,177,4,8,23,1,2,308,1,1249,}, + {1,525,4,2,2,1820,4,6,1,177,4,8,2,309,1,1249,}, + {1,525,4,2,2,1820,4,6,1,177,4,8,23,1,2,308,1,1249,}, + {1,527,2,1813,4,2,1,199,4,3,2,305,1,1247,}, + {1,525,4,1,1,1,2,1813,4,2,1,199,4,3,2,305,1,1247,}, + {1,527,2,1806,4,7,1,205,4,4,2,300,4,2,1,1245,}, + {1,527,23,1,2,1805,4,7,1,205,4,4,23,1,2,299,4,2,1,1245,}, + {1,527,4,1,2,1796,4,1,1,228,4,2,2,296,4,1,1,1244,}, + {1,527,4,1,2,1796,4,1,1,228,4,2,2,296,4,1,1,1244,}, + {1,527,4,1,2,1796,4,1,1,228,4,2,2,296,4,1,1,1244,}, + {1,528,4,3,2,1774,23,2,4,3,23,2,2,2,4,5,1,237,4,4,23,2,2,290,4,3,1,1241,}, + {1,528,4,3,2,1774,23,2,4,3,23,2,2,2,4,5,1,237,4,2,23,1,4,2,23,1,2,290,4,3,1,1241,}, + {1,533,23,1,2,1759,23,1,2,1,23,1,1,285,23,2,2,272,1,1241,}, + {1,533,23,1,2,1760,23,1,2,1,1,285,23,2,2,272,1,1241,}, + {1,534,4,2,2,1748,4,3,23,1,4,1,23,4,1,8,4,2,1,281,4,2,23,3,2,266,4,2,1,1239,}, + {1,534,23,2,2,1748,4,3,23,6,1,8,4,2,1,281,4,2,23,3,2,266,4,2,1,1239,}, + {1,534,23,1,4,1,2,1748,4,3,23,6,1,8,4,2,1,281,4,2,23,3,2,266,4,2,1,1239,}, + {1,536,2,1746,23,2,1,308,4,1,23,2,2,262,1,1239,}, + {1,536,2,1746,23,2,1,309,23,2,2,262,1,1239,}, + {1,536,4,3,2,1732,23,2,1,325,4,1,2,258,23,1,1,1238,}, + {1,536,4,3,2,1732,23,2,1,325,4,1,2,258,23,1,1,1238,}, + {1,539,4,1,2,1724,1,4,4,2,1,333,4,1,2,254,4,2,1,1236,}, + {1,539,4,1,2,1724,1,4,4,2,1,333,23,1,2,254,4,2,1,1236,}, + {1,540,4,2,23,1,2,1708,23,2,1,354,23,5,2,248,4,1,1,1235,}, + {1,540,4,2,23,1,2,1708,23,2,1,354,23,5,2,248,1,1236,}, + {1,543,23,2,2,1700,4,6,1,363,4,2,23,2,2,245,4,1,1,1232,}, + {1,543,23,2,2,1700,4,6,1,363,4,2,23,2,2,245,4,1,1,1232,}, + {1,545,4,3,2,1675,23,9,4,1,1,385,4,2,23,6,2,238,23,2,1,1230,}, + {1,545,4,3,2,1675,23,9,4,2,1,384,4,2,23,6,2,238,23,2,1,1230,}, + {1,545,4,3,2,1675,23,9,4,1,1,386,4,1,23,6,2,238,23,2,1,1230,}, + {1,547,4,4,2,1672,1,403,4,5,23,1,2,234,23,2,1,1228,}, + {1,548,4,3,2,1672,1,403,4,5,23,1,2,234,23,2,1,1228,}, + {1,553,2,1661,23,2,2,1,1,421,23,19,2,211,23,1,1,1227,}, + {1,553,2,1661,23,2,2,1,1,421,23,19,2,211,23,1,1,1227,}, + {1,553,2,1653,4,5,1,446,4,6,23,2,2,204,4,3,1,1224,}, + {1,553,2,1653,4,5,1,446,4,6,23,2,2,204,4,3,1,1224,}, + {1,553,2,1653,4,5,1,446,4,6,23,2,2,204,4,3,1,1224,}, + {1,559,2,1641,1,471,23,1,2,200,1,1224,}, + {1,559,2,1641,1,471,23,1,2,200,1,1224,}, + {1,562,23,2,2,1625,4,4,1,6,23,1,4,1,1,473,4,2,2,197,4,1,1,1222,}, + {1,562,23,2,2,1625,4,4,1,6,23,1,4,2,1,472,4,2,2,197,4,2,1,1221,}, + {1,565,2,1624,1,491,4,2,2,193,1,1221,}, + {1,565,2,1624,1,491,4,2,2,192,23,1,1,1221,}, + {1,565,2,1617,1,1,4,3,23,2,4,1,1,494,4,2,23,1,2,189,1,1221,}, + {1,565,2,1617,1,1,4,3,23,2,4,1,1,494,4,2,23,1,2,189,1,1221,}, + {1,565,2,1617,1,1,4,3,23,2,4,1,1,494,4,2,23,1,2,189,1,1221,}, + {1,565,4,3,2,1606,4,3,1,6,4,2,1,504,23,2,2,184,1,1221,}, + {1,565,4,3,2,1606,4,3,1,8,4,1,1,503,23,2,2,184,1,1221,}, + {1,571,23,2,4,2,23,1,2,1596,4,2,1,521,4,3,23,2,2,175,1,1221,}, + {1,571,23,2,4,1,23,2,2,1596,4,2,1,522,4,2,23,2,2,175,1,1221,}, + {1,577,2,1594,23,1,1,528,4,2,23,1,2,172,1,1221,}, + {1,577,2,1594,23,1,1,528,4,1,1,1,23,1,2,172,1,1221,}, + {1,577,2,1594,23,1,1,528,4,2,23,1,2,172,1,1221,}, + {1,582,4,1,23,1,4,1,2,1587,23,6,1,530,4,1,23,15,2,151,4,2,1,1219,}, + {1,582,23,1,4,2,2,1587,23,6,1,530,4,1,23,15,2,151,4,2,1,1219,}, + {1,582,23,1,4,1,23,1,2,1601,4,2,1,1,2,2,4,3,1,1,4,6,1,1,2,3,4,1,1,518,4,2,1,1,4,3,2,145,23,2,1,1219,}, + {1,582,4,1,23,2,2,1601,4,1,1,2,2,2,4,3,1,1,4,7,2,3,4,1,1,519,4,5,2,145,23,2,1,1219,}, + {1,587,4,1,23,2,2,1618,23,2,4,1,1,522,4,3,23,1,2,140,1,1219,}, + {1,587,4,1,23,2,2,1618,23,2,4,1,1,522,4,3,23,1,2,140,1,1219,}, + {1,587,4,1,23,2,2,1618,23,2,4,1,1,522,4,3,23,1,2,140,1,1219,}, + {1,592,4,2,2,1622,1,523,23,2,2,136,23,1,1,1218,}, + {1,592,4,2,2,1622,1,523,23,2,2,136,23,1,1,1218,}, + {1,596,2,1623,1,523,4,3,23,2,2,130,23,1,1,1218,}, + {1,594,4,1,1,1,2,1623,1,523,4,3,23,2,2,130,23,1,1,1218,}, + {1,596,4,3,2,1621,4,3,2,2,4,1,1,521,4,6,23,1,2,123,23,1,1,1218,}, + {1,596,4,3,2,1621,4,3,2,2,4,1,1,521,4,6,23,1,2,123,23,1,1,1218,}, + {1,596,4,3,2,1621,4,3,2,2,4,1,1,521,4,6,23,1,2,123,23,1,1,1218,}, + {1,598,4,1,2,1626,23,1,1,539,4,2,23,1,2,1,23,1,2,107,4,1,1,1218,}, + {1,598,4,1,2,1626,23,1,1,539,4,2,2,2,23,1,2,107,4,1,1,1218,}, + {1,599,2,6,4,2,2,1619,1,547,4,5,2,9,4,6,2,76,23,3,4,5,1,1219,}, + {1,599,2,6,4,2,2,1619,1,547,4,5,2,9,23,1,4,5,2,76,23,3,4,5,1,1219,}, + {1,607,23,2,2,1619,1,571,4,2,23,1,2,22,4,3,1,24,4,1,23,3,2,8,23,1,1,1232,}, + {1,607,4,1,23,1,2,1619,1,571,4,2,2,23,4,3,1,24,4,1,2,1,23,2,2,8,23,1,1,1232,}, + {1,607,23,2,2,1619,1,571,4,2,2,23,4,3,1,24,4,1,23,1,2,1,23,1,2,8,23,1,1,1232,}, + {1,607,23,2,2,1617,23,1,2,1,1,1868,}, + {1,607,23,2,2,1617,23,2,1,1868,}, + {1,616,23,2,2,1608,23,2,1,1868,}, + {1,616,23,2,2,1608,23,2,1,1868,}, + {1,618,2,1608,23,1,2,1,1,1868,}, + {1,618,2,1608,23,2,1,1868,}, + {1,618,2,1608,23,2,1,1868,}, + {1,622,2,1606,1,1868,}, + {1,622,2,1606,1,1868,}, + {1,624,4,2,23,1,2,1599,4,2,1,1868,}, + {1,624,4,2,23,1,2,1599,4,2,1,1868,}, + {1,629,2,1597,1,1870,}, + {1,629,2,1597,1,1870,}, + {1,629,2,1597,1,1870,}, + {1,632,23,6,2,1587,23,1,1,1870,}, + {1,632,23,6,2,1587,23,1,1,1870,}, + {1,638,4,3,1,1,2,1583,4,1,1,1870,}, + {1,638,4,3,1,1,2,1583,4,1,1,1870,}, + {1,642,2,1583,4,1,1,1870,}, + {1,642,2,1583,4,1,1,1870,}, + {1,642,2,1583,4,1,1,1870,}, + {1,644,4,2,2,1579,4,1,1,1870,}, + {1,644,4,1,1,1,2,1579,4,1,1,1870,}, + {1,646,4,4,1,3,2,1572,4,1,1,1870,}, + {1,646,4,4,1,3,2,1572,4,1,1,1870,}, + {1,653,4,6,2,1566,4,1,1,1870,}, + {1,653,4,6,2,1566,4,1,1,1870,}, + {1,653,4,6,2,1566,4,1,1,1870,}, + {1,664,23,5,1,1,4,2,2,1545,23,2,1,4,2,2,4,1,1,1870,}, + {1,664,23,5,1,1,4,2,2,1545,23,2,1,4,2,2,4,1,1,1870,}, + {1,675,4,3,2,1539,1,1879,}, + {1,675,4,3,2,1539,1,1879,}, + {1,683,4,3,2,1533,1,1877,}, + {1,683,4,3,2,1533,1,1877,}, + {1,683,4,3,2,1533,1,1877,}, + {1,686,4,1,2,1529,4,1,1,1879,}, + {1,686,4,1,2,1,23,1,2,1527,4,1,1,1879,}, + {1,687,4,2,2,2,23,1,1,3,4,2,2,1514,4,3,1,1882,}, + {1,687,4,2,2,2,23,1,1,3,4,2,2,1514,4,3,1,1882,}, + {1,700,4,2,23,2,4,2,2,1504,4,1,1,1885,}, + {1,700,4,2,23,2,4,2,2,1504,4,1,1,1885,}, + {1,700,4,2,23,2,4,2,2,1504,4,1,1,1885,}, + {1,715,23,2,2,1499,23,1,1,1879,}, + {1,715,23,2,2,1499,23,1,1,1879,}, + {1,715,23,2,2,1499,23,1,1,1879,}, + {1,715,23,2,2,1499,23,1,1,1879,}, + {1,717,4,2,1,1,2,1496,23,1,1,1879,}, + {1,717,4,1,1,2,2,1496,23,1,1,1879,}, + {1,717,4,1,1,2,2,1496,23,1,1,1879,}, + {1,726,23,9,2,1481,23,1,1,1879,}, + {1,726,23,9,2,1481,23,1,1,1879,}, + {1,735,23,2,2,1479,23,1,1,1879,}, + {1,735,23,2,2,1479,23,1,1,1879,}, + {1,735,4,2,23,1,2,1,23,2,2,1473,23,2,4,1,1,1879,}, + {1,735,4,2,23,4,2,1473,23,2,4,1,1,1879,}, + {1,735,4,2,23,4,2,1473,23,2,4,1,1,1879,}, + {1,741,2,1473,23,1,2,1,1,1880,}, + {1,741,2,1474,23,1,1,1880,}, + {1,741,23,2,2,1473,1,1880,}, + {1,741,23,2,2,1473,1,1880,}, + {1,743,4,8,23,1,2,1464,1,1880,}, + {1,743,4,8,23,1,2,1464,1,1880,}, + {1,743,4,8,23,1,2,1464,1,1880,}, + {1,752,23,1,4,1,2,1460,23,2,1,1880,}, + {1,752,4,1,23,1,2,1460,23,2,1,1880,}, + {1,754,23,1,4,5,2,1454,23,2,1,1880,}, + {1,754,4,2,1,1,4,3,2,1454,23,2,1,1880,}, + {1,768,2,1443,4,3,1,1882,}, + {1,768,2,1443,4,3,1,1882,}, + {1,768,2,1443,4,3,1,1882,}, + {1,768,2,1443,23,3,1,1882,}, + {1,768,2,1443,23,3,1,1882,}, + {1,771,2,1440,1,1885,}, + {1,771,2,1440,1,1885,}, + {1,773,4,1,23,3,2,1434,1,1885,}, + {1,773,4,1,23,3,2,1434,1,1885,}, + {1,773,4,1,23,3,2,1434,1,1885,}, + {1,782,2,1429,1,1885,}, + {1,782,2,1429,1,1885,}, + {1,786,4,1,1,1,2,1423,1,1885,}, + {1,786,4,2,2,1423,1,1885,}, + {1,788,4,2,1,1,23,2,2,1418,1,1885,}, + {1,788,4,2,1,1,23,2,2,1418,1,1885,}, + {1,788,4,2,1,1,23,2,2,1418,1,1885,}, + {1,802,23,5,2,1403,1,1886,}, + {1,802,23,1,2,1,23,3,2,1403,1,1886,}, + {1,807,4,1,2,1400,4,2,1,1886,}, + {1,807,4,1,2,1400,4,2,1,1886,}, + {1,807,4,1,2,1,23,1,2,1396,4,2,1,1888,}, + {1,807,4,1,2,1398,4,2,1,1888,}, + {1,807,4,1,2,1398,4,2,1,1888,}, + {1,812,4,4,2,2,4,1,23,2,2,1385,1,1890,}, + {1,812,4,4,2,2,4,1,23,2,2,1385,1,1890,}, + {1,825,2,1374,1,1897,}, + {1,825,2,1374,1,1897,}, + {1,825,4,2,2,1,4,5,2,1366,23,1,1,1896,}, + {1,836,4,1,23,1,2,1362,23,2,1,1894,}, + {1,836,4,2,2,1362,23,2,1,1894,}, + {1,836,23,1,4,1,2,1362,23,2,1,1894,}, + {1,842,4,3,2,1357,1,1894,}, + {1,842,4,3,2,1357,1,1894,}, + {1,851,2,1351,1,1894,}, + {1,851,2,1351,1,1894,}, + {1,855,23,1,4,3,2,1346,4,1,1,1890,}, + {1,855,23,1,4,3,2,1343,23,1,2,1,23,1,4,1,1,1890,}, + {1,855,23,1,4,3,2,1344,23,2,4,1,1,1890,}, + {1,861,23,1,2,1344,1,1890,}, + {1,861,23,1,2,1344,1,1890,}, + {1,864,23,3,2,1339,1,1890,}, + {1,864,23,3,2,1339,1,1890,}, + {1,873,2,1333,1,1890,}, + {1,871,4,1,1,1,2,1333,1,1890,}, + {1,873,2,1333,1,1890,}, + {1,881,4,2,23,4,1,2,4,1,23,2,2,1314,1,1890,}, + {1,881,4,2,23,4,1,2,4,1,23,2,2,1314,1,1890,}, + {1,894,4,2,2,4,1,1,4,5,1,1,2,1299,1,1890,}, + {1,894,4,2,2,4,1,1,4,5,1,1,2,1299,1,1890,}, + {1,912,2,1288,4,2,1,1894,}, + {1,911,4,1,2,1288,4,2,1,1894,}, + {1,912,2,1288,4,2,1,1894,}, + {1,912,4,1,1,1,4,2,2,1284,1,1896,}, + {1,912,4,4,2,1284,1,1896,}, + {1,921,23,3,2,1,23,2,2,1,23,3,2,1268,4,1,1,1896,}, + {1,921,23,3,2,1,23,2,2,1,23,3,2,1268,4,1,1,1896,}, + {1,933,4,2,2,1262,4,2,1,1897,}, + {1,933,4,2,2,1262,4,2,1,1897,}, + {1,932,4,3,2,1262,4,2,1,1897,}, + {1,938,4,2,2,1257,4,2,1,1897,}, + {1,938,4,1,1,1,2,1257,4,1,1,1898,}, + {1,944,4,5,2,1246,4,1,1,1900,}, + {1,944,4,5,2,1246,1,1,4,1,1,1899,}, + {1,949,23,1,2,1245,1,1901,}, + {1,949,2,1246,1,1901,}, + {1,949,2,1246,1,1901,}, + {1,955,23,2,4,3,2,1235,1,1901,}, + {1,955,23,2,4,3,2,1235,1,1901,}, + {1,960,4,1,2,1234,1,1901,}, + {1,960,4,1,2,1234,1,1901,}, + {1,971,2,1222,1,1903,}, + {1,971,2,1222,1,1903,}, + {1,971,2,1222,1,1903,}, + {1,980,23,1,4,1,2,1,23,2,1,6,2,1202,1,1,4,1,1,1901,}, + {1,980,4,2,2,1,23,2,1,6,2,1202,4,1,1,1902,}, + {1,991,23,3,2,1197,23,2,1,1903,}, + {1,991,23,3,2,1197,23,2,1,1903,}, + {1,994,4,15,1,2,2,1180,23,2,1,1903,}, + {1,994,4,15,1,2,2,1180,23,2,1,1903,}, + {1,995,4,14,1,2,2,1180,23,2,1,1903,}, + {1,1017,4,2,23,1,4,2,1,9,2,1160,23,2,1,1903,}, + {1,1017,4,2,23,1,4,2,1,9,2,1160,23,2,4,1,1,1902,}, + {1,1030,4,1,2,5,1,1,4,16,23,1,2,1137,1,1905,}, + {1,1031,2,5,4,17,23,1,2,1137,1,1905,}, + {1,1031,2,3,4,2,1,26,23,2,2,1127,1,1905,}, + {1,1031,2,3,4,2,1,26,23,2,2,1127,1,1905,}, + {1,1031,2,3,4,2,1,26,23,2,2,1127,1,1905,}, + {1,1031,4,3,1,31,4,2,2,1122,4,2,1,1905,}, + {1,1031,4,3,1,31,4,2,2,1122,4,2,1,1905,}, + {1,1067,2,1122,1,1907,}, + {1,1067,2,1122,1,1907,}, + {1,1067,23,3,2,3,4,3,2,1113,1,1907,}, + {1,1067,23,3,2,3,4,3,2,1113,1,1907,}, + {1,1067,23,3,2,3,4,3,2,1113,1,1907,}, + {1,1086,23,2,2,1101,1,1907,}, + {1,1086,23,2,2,6,23,1,2,1094,1,1907,}, + {1,1090,4,3,1,2,4,3,2,1090,1,1908,}, + {1,1085,4,1,1,4,4,3,1,2,4,3,2,1090,4,1,1,1907,}, + {1,1099,4,2,2,1087,1,1908,}, + {1,1099,4,2,2,1087,1,1908,}, + {1,1099,4,2,2,1087,1,1908,}, + {1,1108,2,768,23,2,1,3,2,307,4,1,1,1907,}, + {1,1108,2,768,23,2,1,3,2,307,4,1,1,1907,}, + {1,1112,4,1,1,5,23,1,2,753,1,4,2,2,1,3,4,3,2,305,1,1907,}, + {1,1112,4,1,1,5,23,1,2,753,1,4,2,2,1,3,4,3,2,305,1,1907,}, + {1,1121,4,2,1,2,4,2,23,5,2,735,23,3,4,2,1,4,23,1,4,1,1,6,4,2,23,2,4,1,2,300,1,1907,}, + {1,1121,4,2,1,2,4,2,23,5,2,735,23,3,4,2,1,4,23,1,4,1,1,6,4,2,23,3,2,300,1,1907,}, + {1,1121,4,2,1,2,4,2,23,5,2,735,23,1,4,1,23,1,4,2,1,4,23,1,4,1,1,6,4,2,23,3,2,300,1,1907,}, + {1,1132,23,3,2,732,1,24,23,2,2,295,23,1,1,1907,}, + {1,1132,23,3,2,730,23,1,2,1,1,24,23,2,2,295,23,1,1,1907,}, + {1,1144,4,2,23,6,2,709,4,2,1,30,2,295,1,1908,}, + {1,1144,4,2,23,6,2,709,4,2,1,30,2,295,1,1908,}, + {1,1152,4,3,1,2,23,1,2,697,4,6,1,32,4,2,1,2,2,15,1,2,23,1,2,271,4,2,1,1908,}, + {1,1152,4,4,1,1,23,1,2,697,4,3,1,1,4,2,1,32,4,2,1,2,2,15,1,2,23,1,2,271,4,2,1,1908,}, + {1,1152,4,3,1,2,23,1,2,697,4,6,1,32,4,2,1,2,2,15,1,2,23,1,2,271,4,2,1,1908,}, + {1,1157,23,1,2,697,4,3,1,40,4,2,2,2,23,1,2,9,1,2,4,1,2,2,23,2,2,267,23,2,1,1908,}, + {1,1157,23,1,2,697,4,3,1,40,4,2,2,12,1,2,4,1,2,2,23,2,2,267,23,2,1,1908,}, + {1,1158,2,697,1,48,4,3,23,2,2,1,1,6,4,2,1,4,2,265,23,2,1,1908,}, + {1,1158,2,697,1,48,4,3,23,2,2,1,1,6,4,2,1,4,2,265,23,2,1,1908,}, + {1,1161,2,685,23,2,2,2,4,2,1,54,4,3,1,12,2,265,4,2,1,1908,}, + {1,1160,4,1,2,685,23,3,2,1,4,2,1,54,4,3,1,12,2,265,4,2,1,1908,}, + {1,1161,2,685,23,2,2,1,23,1,4,2,1,54,4,3,1,12,2,265,4,2,1,1908,}, + {1,1161,2,682,23,1,4,2,1,77,2,263,1,1910,}, + {1,1161,2,682,23,1,4,2,1,77,2,263,1,1910,}, + {1,1161,4,2,2,678,23,2,1,83,2,257,23,3,1,1910,}, + {1,1161,4,2,2,678,23,2,1,83,2,257,23,3,1,1910,}, + {1,1164,2,675,1,87,23,2,2,258,1,1910,}, + {1,1164,2,675,1,87,23,2,2,258,1,1910,}, + {1,1164,2,675,1,87,23,2,2,258,1,1910,}, + {1,1164,2,674,1,93,2,252,1,1913,}, + {1,1164,2,674,1,93,2,252,1,1913,}, + {1,1164,4,2,2,660,4,4,23,1,4,1,23,1,1,99,2,13,1,1,4,5,2,235,1,1910,}, + {1,1164,4,2,2,660,4,6,23,1,1,99,2,13,1,1,4,5,2,235,1,1910,}, + {1,1168,2,658,1,106,2,13,1,7,2,234,4,3,1,1907,}, + {1,1168,2,658,1,106,2,13,1,7,2,234,4,3,1,1907,}, + {1,1168,2,658,1,106,2,13,1,7,2,234,4,3,1,1907,}, + {1,1168,2,648,4,1,23,4,4,1,1,115,2,6,23,2,1,13,2,225,1,1913,}, + {1,1168,2,648,23,5,4,1,1,115,2,6,4,1,23,1,1,13,2,225,1,1913,}, + {1,1168,4,1,2,642,4,2,1,147,2,226,1,1910,}, + {1,1168,23,1,2,642,4,2,1,147,2,226,1,1910,}, + {1,1168,4,1,2,630,23,5,1,1,2,2,23,1,2,1,23,2,4,2,1,147,4,1,23,1,2,224,1,1910,}, + {1,1168,4,1,2,630,23,5,1,1,2,2,23,4,4,2,1,147,4,2,2,224,1,1910,}, + {1,1168,4,1,2,630,23,5,1,1,2,2,23,4,4,2,1,147,4,2,2,224,1,1910,}, + {1,1169,2,629,23,1,1,6,4,2,1,156,2,223,1,1910,}, + {1,1169,2,629,23,1,1,6,4,2,1,156,2,223,1,1910,}, + {1,1169,2,619,23,6,4,2,23,2,1,168,2,211,1,5,23,1,1,1913,}, + {1,1169,2,619,23,6,4,2,23,2,1,168,2,211,1,5,23,1,1,1913,}, + {1,1171,4,1,2,155,4,1,23,2,2,452,4,6,1,178,4,2,2,214,1,1914,}, + {1,1172,2,155,4,1,23,1,4,1,2,452,1,1,4,1,1,1,4,3,1,179,4,1,2,214,1,1914,}, + {1,1172,2,155,4,1,23,2,2,452,4,6,1,178,4,2,2,214,1,1914,}, + {1,1172,23,2,2,150,23,3,4,1,1,8,23,3,1,2,23,1,2,1,23,4,2,413,23,10,4,1,1,198,2,1,23,1,2,198,23,2,4,1,23,8,1,1916,}, + {1,1172,23,2,2,150,23,3,4,1,1,8,23,3,1,2,2,1,23,5,2,413,23,10,4,1,1,198,23,2,2,198,23,2,4,1,23,8,1,1916,}, + {1,1174,2,150,1,23,2,412,23,1,1,209,23,2,2,200,1,1925,}, + {1,1174,2,150,1,6,4,1,1,16,2,412,23,1,1,209,23,2,2,200,1,1925,}, + {1,1174,2,150,4,3,1,37,2,4,23,4,2,353,23,1,2,1,23,5,2,4,23,8,2,9,4,1,1,219,2,198,23,1,1,1924,}, + {1,1174,2,150,4,3,1,37,23,2,2,1,23,1,2,1,23,3,2,353,23,1,2,2,23,1,2,2,23,2,2,3,23,8,2,6,23,1,2,2,23,1,1,219,2,198,23,1,1,1924,}, + {1,1174,2,150,4,3,1,37,2,3,23,5,2,354,23,1,2,3,23,3,2,3,23,8,2,9,23,1,1,219,2,199,1,1924,}, + {1,1174,4,1,2,155,4,2,1,40,4,3,1,2,4,18,2,14,4,9,2,285,23,2,4,8,23,1,2,9,4,2,1,9,4,2,1,8,4,4,1,226,2,197,23,1,1,1924,}, + {1,1174,4,1,2,155,4,2,1,40,4,3,1,3,4,17,2,14,4,9,2,285,23,2,4,7,23,1,4,1,2,9,4,2,1,9,4,2,1,8,4,4,1,226,2,197,23,1,1,1924,}, + {1,1175,2,157,1,93,4,2,2,132,1,2,2,90,23,1,2,9,4,2,1,9,2,11,4,1,1,10,2,3,1,280,2,194,23,1,1,1924,}, + {1,1175,2,157,1,93,4,2,2,132,1,2,2,100,4,2,1,9,2,11,4,1,1,10,2,3,1,280,2,194,23,1,1,1924,}, + {1,1175,4,2,2,155,1,117,4,10,1,6,4,21,1,5,4,5,23,1,2,3,4,11,1,19,4,11,2,9,23,2,4,4,1,22,4,7,2,32,4,15,1,20,4,8,1,317,4,2,2,192,1,1925,}, + {1,1175,4,2,2,155,1,117,4,10,1,6,4,21,1,2,4,1,1,2,4,5,23,1,2,3,4,11,1,19,4,11,2,9,23,2,4,4,1,22,4,7,2,32,4,15,1,20,4,8,1,317,4,2,2,192,1,1925,}, + {1,1175,4,2,2,155,1,117,4,10,1,6,4,21,1,4,4,6,23,1,2,3,4,11,1,19,4,11,2,10,23,1,4,4,1,22,4,7,2,32,4,15,1,20,4,8,1,317,4,2,2,192,1,1925,}, + {1,1177,23,3,2,150,4,2,1,648,2,192,1,1924,}, + {1,1177,23,3,2,150,4,2,1,648,2,192,1,1924,}, + {1,1180,2,150,4,2,1,648,23,2,2,192,1,1922,}, + {1,1180,2,150,4,2,1,648,23,2,2,192,1,1922,}, + {1,1177,4,1,1,2,2,150,4,2,1,648,4,1,1,1,2,192,4,1,1,1921,}, + {1,1180,2,150,4,2,1,650,2,192,1,1922,}, + {1,1180,2,150,4,2,1,648,4,1,1,1,2,192,4,1,1,1921,}, + {1,1180,4,1,2,149,4,2,1,650,4,3,2,192,1,1919,}, + {1,1180,4,1,2,149,4,2,1,650,4,3,2,192,1,1919,}, + {1,1181,2,149,4,2,1,654,2,188,23,3,1,1919,}, + {1,1181,4,2,23,2,2,145,4,2,1,654,4,2,23,2,2,187,4,1,1,1918,}, + {1,1181,4,2,23,2,2,145,4,2,1,654,4,2,23,2,2,187,4,1,1,1918,}, + {1,1183,4,2,2,145,4,2,1,658,23,1,2,186,4,1,1,1918,}, + {1,1183,4,1,1,1,2,145,4,2,1,658,23,1,2,186,4,1,1,1918,}, + {1,1183,4,2,2,145,4,2,1,658,23,1,2,186,4,1,1,1918,}, + {1,1183,4,2,2,147,1,659,4,3,2,183,4,1,1,1918,}, + {1,1183,4,2,2,147,1,659,4,3,2,183,4,1,1,1918,}, + {1,1183,4,2,2,147,1,662,23,2,2,181,4,1,1,1918,}, + {1,1183,4,2,2,147,1,662,23,2,2,181,4,1,1,1918,}, + {1,1185,2,147,1,664,4,1,2,180,4,1,1,1918,}, + {1,1184,4,1,2,147,1,664,4,1,2,180,4,1,1,1918,}, + {1,1185,2,147,1,664,4,1,2,180,4,1,1,1918,}, + {1,1185,23,1,2,146,1,665,23,2,2,178,4,1,1,1918,}, + {1,1185,23,1,2,146,1,665,23,2,2,178,4,1,1,1918,}, + {1,1189,2,144,1,666,4,2,2,176,4,1,1,1918,}, + {1,1189,2,144,1,666,4,2,2,176,4,1,1,1918,}, + {1,1186,4,2,1,1,2,143,4,1,1,668,4,2,2,174,4,1,1,1918,}, + {1,1186,4,3,2,143,4,1,1,668,4,2,2,174,4,1,1,1918,}, + {1,1186,4,3,2,143,4,1,1,668,4,2,2,174,4,1,1,1918,}, + {1,1186,4,3,2,143,1,673,2,169,23,3,1,1919,}, + {1,1186,4,3,2,143,1,673,2,169,23,3,1,1919,}, + {1,1189,2,143,1,675,2,164,23,1,1,1924,}, + {1,1189,2,143,1,675,2,164,23,1,1,1924,}, + {1,1189,23,2,2,141,1,676,2,17,23,2,4,1,23,1,2,142,23,1,1,1924,}, + {1,1189,23,2,2,141,1,676,2,17,23,2,4,2,2,142,23,1,1,1924,}, + {1,1189,23,2,2,141,1,676,2,17,23,2,4,2,2,142,23,1,1,1924,}, + {1,1189,4,2,23,1,4,1,23,1,2,138,1,678,4,3,23,1,2,10,23,1,1,4,4,2,2,141,1,1924,}, + {1,1189,4,2,23,1,4,2,2,138,1,678,4,3,23,1,2,11,1,4,4,2,2,141,1,1924,}, + {1,1194,2,138,1,682,4,2,2,8,4,1,1,6,23,2,2,141,1,1922,}, + {1,1194,2,138,1,682,4,2,2,8,4,1,1,6,23,2,2,141,1,1922,}, + {1,1194,2,138,1,684,4,2,23,1,2,5,4,1,1,9,2,140,1,1922,}, + {1,1194,2,138,1,684,4,2,23,1,2,5,4,1,1,9,2,140,1,1922,}, + {1,1194,2,138,1,684,4,2,23,1,2,5,4,1,1,9,2,140,1,1922,}, + {1,1194,2,138,1,704,2,138,1,1922,}, + {1,1194,2,138,1,704,2,138,1,1922,}, + {1,1195,2,137,1,706,4,2,2,134,1,1922,}, + {1,1195,2,137,1,706,4,2,2,134,1,1922,}, + {1,1198,2,134,1,708,4,2,2,132,1,1922,}, + {1,1198,2,134,1,708,4,2,2,132,1,1922,}, + {1,1198,2,134,1,708,4,2,2,132,1,1922,}, + {1,1198,2,134,1,713,2,132,4,1,1,1918,}, + {1,1198,2,134,1,713,2,132,4,1,1,1918,}, + {1,1200,2,132,1,711,4,1,1,1,2,132,4,1,1,1918,}, + {1,1199,4,1,2,132,1,713,2,132,4,1,1,1918,}, + {1,1200,2,132,1,713,4,2,2,130,4,1,1,1918,}, + {1,1200,2,132,1,713,4,2,2,130,4,1,1,1918,}, + {1,1200,2,132,1,713,4,2,2,130,4,1,1,1918,}, + {1,1201,2,131,1,713,4,5,2,127,1,1919,}, + {1,1201,2,131,1,713,4,5,2,127,1,1919,}, + {1,1203,2,129,1,721,4,1,1,1,2,119,23,3,1,1919,}, + {1,1203,2,129,1,722,4,1,2,119,23,3,1,1919,}, + {1,1203,4,2,2,127,1,728,4,1,2,114,23,2,1,1919,}, + {1,1203,4,2,2,127,1,729,2,116,1,1919,}, + {1,1203,4,2,2,127,1,728,4,1,2,116,1,1919,}, + {1,1203,4,2,2,127,1,730,4,2,2,110,23,1,2,2,1,1919,}, + {1,1203,4,2,2,127,1,730,4,2,2,110,23,3,1,1919,}, + {1,1203,4,2,2,127,1,732,4,3,2,107,23,3,1,1919,}, + {1,1203,4,2,2,127,1,732,4,3,2,107,23,1,2,2,1,1919,}, + {1,1205,2,127,1,735,4,1,2,109,1,1919,}, + {1,1205,2,1,23,1,2,125,1,735,4,1,2,109,1,1919,}, + {1,1205,2,127,1,735,4,1,2,109,1,1919,}, + {1,1205,4,2,2,125,1,736,4,2,1,2,2,105,4,1,1,1918,}, + {1,1205,4,2,2,125,1,736,4,2,1,2,2,105,4,1,1,1918,}, + {1,1207,2,125,1,740,2,105,4,1,1,1918,}, + {1,1207,2,125,1,740,23,1,2,104,4,1,1,1918,}, + {1,1211,2,122,1,740,4,3,2,98,23,1,4,1,23,1,4,1,1,1918,}, + {1,1211,2,122,1,740,4,3,2,98,23,3,4,1,1,1918,}, + {1,1211,2,122,1,740,4,3,2,98,23,3,4,1,1,1918,}, + {1,1211,2,122,1,740,4,3,2,98,1,1922,}, + {1,1211,2,122,1,740,4,3,2,98,1,1922,}, + {1,1211,23,1,2,121,1,743,4,2,23,1,4,2,1,2,4,2,2,92,4,1,1,1918,}, + {1,1211,23,1,2,121,1,743,4,2,23,1,4,2,1,2,4,2,2,92,4,1,1,1918,}, + {1,1211,4,1,2,121,1,752,2,89,1,3,4,1,1,1918,}, + {1,1211,4,1,2,121,1,752,2,89,1,1922,}, + {1,1211,4,1,2,121,1,752,2,89,1,3,4,1,1,1918,}, + {1,1212,4,2,23,3,2,116,23,3,1,754,2,84,4,4,1,1918,}, + {1,1212,4,2,23,3,2,116,23,3,1,754,2,84,4,4,1,1918,}, + {1,1214,2,119,1,757,2,87,4,1,1,1918,}, + {1,1214,2,119,1,757,2,87,4,1,1,1918,}, + {1,1214,2,119,1,756,4,1,2,87,4,1,1,1918,}, + {1,1214,2,119,1,757,2,87,4,1,1,1918,}, + {1,1214,2,119,1,757,2,87,4,1,1,1918,}, + {1,1214,4,4,2,115,1,762,4,1,2,81,4,1,1,1918,}, + {1,1214,4,4,2,115,1,762,4,1,2,81,4,1,1,1918,}, + {1,1220,2,113,1,771,23,2,2,68,23,3,1,1919,}, + {1,1220,2,113,1,771,23,2,2,68,23,1,2,1,23,1,1,1919,}, + {1,1222,4,1,23,3,2,107,1,773,23,1,2,67,4,3,1,1919,}, + {1,1222,4,1,23,3,2,107,1,773,23,1,2,67,4,3,1,1919,}, + {1,1222,4,1,23,3,2,107,1,773,23,1,2,67,4,3,1,1919,}, + {1,1223,4,3,2,107,1,773,4,1,2,67,1,1922,}, + {1,1223,4,3,2,107,1,773,4,1,2,67,1,1922,}, + {1,1226,4,2,2,105,1,778,4,2,2,59,23,2,1,1922,}, + {1,1226,4,2,2,105,1,778,4,2,2,59,23,2,1,1922,}, + {1,1228,4,1,2,104,1,782,2,62,1,1919,}, + {1,1228,4,1,2,104,1,781,4,1,2,62,1,1919,}, + {1,1229,4,2,23,2,4,1,23,1,2,98,1,782,4,2,23,7,4,1,23,1,2,46,23,2,4,3,1,1919,}, + {1,1229,4,2,23,4,2,98,1,782,4,2,23,8,4,1,2,46,23,2,4,3,1,1919,}, + {1,1229,4,2,23,4,2,98,1,782,4,2,23,9,2,46,23,2,4,3,1,1919,}, + {1,1235,4,2,2,96,1,793,4,1,1,2,4,3,2,39,23,1,1,1,4,1,1,1922,}, + {1,1235,4,2,2,96,1,796,4,3,2,40,1,1924,}, + {1,1237,2,96,1,800,2,2,1,3,2,36,4,3,1,1919,}, + {1,1237,2,96,1,800,2,2,1,3,2,36,4,3,1,1919,}, + {1,1239,4,1,2,93,4,3,1,797,4,2,1,6,4,9,23,2,2,25,4,1,1,1918,}, + {1,1239,4,1,2,93,4,3,1,797,4,2,1,6,4,8,1,1,23,2,2,25,4,1,1,1918,}, + {1,1239,4,1,2,93,4,3,1,797,4,2,1,6,4,8,1,1,23,2,2,25,4,1,1,1918,}, + {1,1240,23,2,2,91,4,3,1,814,4,2,23,2,2,23,4,1,1,1918,}, + {1,1240,23,2,2,91,4,3,1,814,4,2,23,2,2,23,4,1,1,1918,}, + {1,1242,4,3,1,1,2,87,1,821,4,3,2,12,4,2,23,1,2,5,1,1919,}, + {1,1242,4,3,1,1,2,87,1,821,4,3,2,12,4,2,23,1,2,5,1,1919,}, + {1,1246,2,86,1,2764,}, + {1,1246,2,86,1,2764,}, + {1,1246,2,86,1,2764,}, + {1,1246,4,2,2,82,4,2,1,2764,}, + {1,1246,4,2,2,82,4,2,1,2764,}, + {1,1248,2,2,1,1,4,3,2,76,4,2,1,2764,}, + {1,1248,2,2,1,1,4,3,2,76,4,2,1,2764,}, + {1,1256,2,74,4,2,1,2764,}, + {1,1256,2,74,4,2,1,2764,}, + {1,1256,2,74,4,2,1,2764,}, + {1,1256,2,74,4,2,1,2764,}, + {1,1256,2,74,4,2,1,2764,}, + {1,1257,4,2,2,71,4,2,1,2764,}, + {1,1257,4,2,2,71,4,2,1,2764,}, + {1,1259,4,3,2,68,4,2,1,2764,}, + {1,1259,4,3,2,68,4,2,1,2764,}, + {1,1259,4,3,2,68,4,2,1,2764,}, + {1,1259,4,3,2,68,4,2,1,2764,}, + {1,1259,4,3,2,68,4,2,1,2764,}, + {1,1259,4,3,2,68,1,2766,}, + {1,1259,4,3,2,68,1,2766,}, + {1,1259,4,3,2,68,1,2766,}, + {1,1259,4,3,2,68,1,2766,}, + {1,1259,4,3,2,68,1,2766,}, + {1,1262,23,1,2,67,1,2766,}, + {1,1262,23,1,2,67,1,2766,}, + {1,1265,4,2,23,1,2,62,1,2766,}, + {1,1265,4,2,23,1,2,62,1,2766,}, + {1,1271,2,59,1,2766,}, + {1,1271,2,57,23,1,2,1,1,2766,}, + {1,1271,2,59,1,2766,}, + {1,1273,2,1,23,2,2,54,4,2,1,2764,}, + {1,1273,23,3,2,54,4,2,1,2764,}, + {1,1276,2,54,4,2,1,2764,}, + {1,1276,2,54,4,2,1,2764,}, + {1,1276,2,54,4,2,1,2764,}, + {1,1276,2,54,4,2,1,2764,}, + {1,1276,2,54,4,2,1,2764,}, + {1,1278,4,2,2,50,1,2766,}, + {1,1280,4,2,2,46,23,2,1,2766,}, + {1,1280,4,2,2,46,23,2,1,2766,}, + {1,1282,2,45,4,1,1,2768,}, + {1,1282,2,45,23,1,1,2768,}, + {1,1282,2,45,4,1,1,2768,}, + {1,1285,23,2,2,43,4,2,1,2764,}, + {1,1285,23,2,2,43,4,2,1,2764,}, + {1,1285,4,2,2,43,4,2,1,2764,}, + {1,1285,4,2,2,43,4,2,1,2764,}, + {1,1287,4,2,2,41,4,2,1,2764,}, + {1,1287,4,2,2,41,4,2,1,2764,}, + {1,1287,4,2,2,41,4,2,1,2764,}, + {1,1289,4,2,2,39,4,2,1,2764,}, + {1,1289,4,2,2,39,4,2,1,2764,}, + {1,1294,4,1,1,1,2,36,1,2764,}, + {1,1295,4,1,2,36,1,2764,}, + {1,1296,2,37,1,2763,}, + {1,1296,2,37,1,2763,}, + {1,1296,2,37,1,2763,}, + {1,1299,2,34,1,2763,}, + {1,1299,2,34,1,2763,}, + {1,1300,2,33,1,2763,}, + {1,1300,2,33,1,2763,}, + {1,1302,4,3,2,28,1,2763,}, + {1,1302,4,3,2,28,1,2763,}, + {1,1302,4,3,2,28,1,2763,}, + {1,1305,4,2,23,1,2,25,1,2763,}, + {1,1305,4,3,2,25,1,2763,}, + {1,1308,4,2,2,23,1,2763,}, + {1,1308,4,2,2,23,1,2763,}, + {1,1311,2,22,1,2763,}, + {1,1311,2,22,1,2763,}, + {1,1311,2,22,1,2763,}, + {1,1311,2,22,1,2763,}, + {1,1311,2,22,1,2763,}, + {1,1313,2,19,23,1,1,2763,}, + {1,1313,2,19,23,1,1,2763,}, + {1,1313,4,2,23,2,2,13,23,2,1,2764,}, + {1,1313,4,2,23,2,2,13,23,2,1,2764,}, + {1,1319,2,9,23,2,1,2766,}, + {1,1319,2,9,23,2,1,2766,}, + {1,1319,2,9,23,2,1,2766,}, + {1,1321,23,3,4,3,1,2769,}, + {1,1321,23,3,4,3,1,2769,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, +} +} \ No newline at end of file diff --git a/maps/crab_defender/flame_boots.lua b/maps/crab_defender/flame_boots.lua new file mode 100644 index 00000000..ecc2c984 --- /dev/null +++ b/maps/crab_defender/flame_boots.lua @@ -0,0 +1,52 @@ +local Event = require 'utils.event' +local FDT = require 'maps.crab_defender.table' + +local function on_player_changed_position(event) + local flame_boots = FDT.get('flame_boots') + if not flame_boots then + return + end + local player = game.players[event.player_index] + if not player.character then + return + end + if player.character.driving then + return + end + + if not flame_boots[player.index] then + flame_boots[player.index] = {} + end + + if not flame_boots[player.index].fuel then + return + end + + if flame_boots[player.index].fuel < 0 then + player.print('Your flame boots have worn out.', {r = 0.22, g = 0.77, b = 0.44}) + flame_boots[player.index] = {} + return + end + + if flame_boots[player.index].fuel % 500 == 0 then + player.print('Fuel remaining: ' .. flame_boots[player.index].fuel, {r = 0.22, g = 0.77, b = 0.44}) + end + + if not flame_boots[player.index].step_history then + flame_boots[player.index].step_history = {} + end + + local elements = #flame_boots[player.index].step_history + + flame_boots[player.index].step_history[elements + 1] = {x = player.position.x, y = player.position.y} + + if elements < 50 then + return + end + + player.surface.create_entity({name = 'fire-flame', position = flame_boots[player.index].step_history[elements - 2]}) + + flame_boots[player.index].fuel = flame_boots[player.index].fuel - 1 +end + +Event.add(defines.events.on_player_changed_position, on_player_changed_position) diff --git a/maps/crab_defender/laser_pointer.lua b/maps/crab_defender/laser_pointer.lua new file mode 100644 index 00000000..87c64f93 --- /dev/null +++ b/maps/crab_defender/laser_pointer.lua @@ -0,0 +1,37 @@ +local Event = require 'utils.event' +local FDT = require 'maps.crab_defender.table' +local radius = 32 + +local function on_player_used_capsule(event) + local laser_pointer_unlocked = FDT.get('laser_pointer_unlocked') + if not laser_pointer_unlocked then + return + end + + local player = game.players[event.player_index] + local position = event.position + local used_item = event.item + if used_item.name ~= 'artillery-targeting-remote' then + return + end + + for _, unit in pairs(player.surface.find_enemy_units(position, radius, 'player')) do + if math.random(1, 2) == 1 then + unit.set_command( + { + type = defines.command.go_to_location, + destination = position, + radius = 2, + distraction = defines.distraction.none, + pathfind_flags = { + allow_destroy_friendly_entities = false, + prefer_straight_paths = false, + low_priority = false + } + } + ) + end + end +end + +Event.add(defines.events.on_player_used_capsule, on_player_used_capsule) diff --git a/maps/crab_defender/main.lua b/maps/crab_defender/main.lua new file mode 100644 index 00000000..11afd1be --- /dev/null +++ b/maps/crab_defender/main.lua @@ -0,0 +1,1470 @@ +--require "modules.rpg" + +require 'maps.crab_defender.terrain' +require 'maps.crab_defender.market' +require 'maps.crab_defender.commands' +require 'maps.crab_defender.shotgun_buff' +require 'maps.crab_defender.on_entity_damaged' +require 'modules.rocket_launch_always_yields_science' +require 'modules.launch_fish_to_win' +require 'modules.biters_yield_coins' +require 'modules.dangerous_goods' +require 'modules.custom_death_messages' + +local Unit_health_booster = require 'modules.biter_health_booster' +local Difficulty = require 'modules.difficulty_vote' +local Map = require 'modules.map_info' +local Event = require 'utils.event' +local Reset = require 'functions.soft_reset' +local Server = require 'utils.server' +local Poll = require 'comfy_panel.poll' +local boss_biter = require 'maps.crab_defender.boss_biters' +local FDT = require 'maps.crab_defender.table' +local Score = require 'comfy_panel.score' +local math_random = math.random +local insert = table.insert +local enable_start_grace_period = true + +local branch_version = '0.18.35' +local sub = string.sub + +local Public = {} + +local starting_items = { + ['pistol'] = 1, + ['firearm-magazine'] = 16, + ['raw-fish'] = 3, + ['iron-plate'] = 32, + ['stone'] = 12 +} + +local function shuffle(tbl) + local size = #tbl + for i = size, 1, -1 do + local rand = math.random(size) + tbl[i], tbl[rand] = tbl[rand], tbl[i] + end + return tbl +end + +local biter_count_limit = 1024 --maximum biters on the east side of the map, next wave will be delayed if the maximum has been reached + +local function create_wave_gui(player) + if player.gui.top['crab_defender_waves'] then + player.gui.top['crab_defender_waves'].destroy() + end + local this = FDT.get() + local frame = player.gui.top.add({type = 'frame', name = 'crab_defender_waves', tooltip = 'Click to show map info'}) + frame.style.maximal_height = 38 + + local wave_count = 0 + if this.wave_count then + wave_count = this.wave_count + end + + if not this.wave_grace_period then + local label = frame.add({type = 'label', caption = 'Wave: ' .. wave_count}) + label.style.font_color = {r = 0.88, g = 0.88, b = 0.88} + label.style.font = 'default-listbox' + label.style.left_padding = 4 + label.style.right_padding = 4 + label.style.minimal_width = 68 + label.style.font_color = {r = 0.33, g = 0.66, b = 0.9} + + local next_level_progress = game.tick % this.wave_interval / this.wave_interval + + local progressbar = frame.add({type = 'progressbar', value = next_level_progress}) + progressbar.style.minimal_width = 120 + progressbar.style.maximal_width = 120 + progressbar.style.top_padding = 10 + else + local time_remaining = math.floor(((this.wave_grace_period - (game.tick % this.wave_grace_period)) / 60) / 60) + if time_remaining <= 0 then + this.wave_grace_period = nil + return + end + + local label = frame.add({type = 'label', caption = 'Waves will start in ' .. time_remaining .. ' minutes.'}) + label.style.font_color = {r = 0.88, g = 0.88, b = 0.88} + label.style.font = 'default-listbox' + label.style.left_padding = 4 + label.style.right_padding = 4 + label.style.font_color = {r = 0.33, g = 0.66, b = 0.9} + + if not enable_start_grace_period then + this.wave_grace_period = nil + return + end + end +end + +local function show_fd_stats(player) + local gui_id = 'fd-stats' + local table_id = gui_id .. 'table' + local this = FDT.get() + + if player.gui.left[gui_id] then + player.gui.left[gui_id].destroy() + end + + local frame = + player.gui.left.add { + type = 'frame', + name = gui_id + } + local table = + frame.add { + type = 'table', + name = table_id, + column_count = 2 + } + + local table_header = {'Building', 'Placed' .. '/' .. 'Limit'} + for k, v in pairs(table_header) do + local h = table.add {type = 'label', caption = v} + h.style.font = 'heading-2' + end + + for k, v in pairs(this.entity_limits) do + local name = v.str + local placed = v.placed + local limit = v.limit + local entry = {name, placed .. '/' .. limit} + for _, value_entry in pairs(entry) do + table.add { + type = 'label', + caption = value_entry + } + end + end +end + +local function update_fd_stats() + for _, player in pairs(game.connected_players) do + if player.gui.left['fd-stats'] then + show_fd_stats(player) + end + end +end + +local function add_fd_stats_button(player) + local button_id = 'fd-stats-button' + if player.gui.top[button_id] then + player.gui.top[button_id].destroy() + end + + player.gui.top.add { + type = 'sprite-button', + name = button_id, + sprite = 'item/submachine-gun' + } +end + +local function on_gui_click(event) + if not event.element.valid then + return + end + if event.element.name ~= 'fd-stats-button' then + return + end + local player = game.players[event.player_index] + local frame = player.gui.left['fd-stats'] + if frame == nil then + show_fd_stats(player) + else + frame.destroy() + end +end + +local function on_market_item_purchased() + update_fd_stats() +end + +local threat_values = { + ['small_biter'] = 1, + ['medium_biter'] = 3, + ['big_biter'] = 5, + ['behemoth_biter'] = 10, + ['small_spitter'] = 1, + ['medium_spitter'] = 3, + ['big_spitter'] = 5, + ['behemoth_spitter'] = 10 +} + +local function get_biter_initial_pool() + local this = FDT.get() + local biter_pool + if this.wave_count > 1750 then + biter_pool = { + {name = 'behemoth-biter', threat = threat_values.behemoth_biter, weight = 2}, + {name = 'behemoth-spitter', threat = threat_values.behemoth_spitter, weight = 1} + } + return biter_pool + end + if this.wave_count > 1500 then + biter_pool = { + {name = 'big-biter', threat = threat_values.big_biter, weight = 1}, + {name = 'behemoth-biter', threat = threat_values.behemoth_biter, weight = 2}, + {name = 'behemoth-spitter', threat = threat_values.behemoth_spitter, weight = 1} + } + return biter_pool + end + if this.wave_count > 1250 then + biter_pool = { + {name = 'big-biter', threat = threat_values.big_biter, weight = 2}, + {name = 'behemoth-biter', threat = threat_values.behemoth_biter, weight = 2}, + {name = 'behemoth-spitter', threat = threat_values.behemoth_spitter, weight = 1} + } + return biter_pool + end + if this.wave_count > 1000 then + biter_pool = { + {name = 'big-biter', threat = threat_values.big_biter, weight = 3}, + {name = 'behemoth-biter', threat = threat_values.behemoth_biter, weight = 2}, + {name = 'behemoth-spitter', threat = threat_values.behemoth_spitter, weight = 1} + } + return biter_pool + end + if game.forces.enemy.evolution_factor < 0.1 then + biter_pool = { + {name = 'small-biter', threat = threat_values.small_biter, weight = 3}, + {name = 'small-spitter', threat = threat_values.small_spitter, weight = 1} + } + return biter_pool + end + if game.forces.enemy.evolution_factor < 0.2 then + biter_pool = { + {name = 'small-biter', threat = threat_values.small_biter, weight = 10}, + {name = 'medium-biter', threat = threat_values.medium_biter, weight = 2}, + {name = 'small-spitter', threat = threat_values.small_spitter, weight = 5}, + {name = 'medium-spitter', threat = threat_values.medium_spitter, weight = 1} + } + return biter_pool + end + if game.forces.enemy.evolution_factor < 0.3 then + biter_pool = { + {name = 'small-biter', threat = threat_values.small_biter, weight = 18}, + {name = 'medium-biter', threat = threat_values.medium_biter, weight = 6}, + {name = 'small-spitter', threat = threat_values.small_spitter, weight = 8}, + {name = 'medium-spitter', threat = threat_values.medium_spitter, weight = 3}, + {name = 'big-biter', threat = threat_values.big_biter, weight = 1} + } + return biter_pool + end + if game.forces.enemy.evolution_factor < 0.4 then + biter_pool = { + {name = 'small-biter', threat = threat_values.small_biter, weight = 2}, + {name = 'medium-biter', threat = threat_values.medium_biter, weight = 8}, + {name = 'big-biter', threat = threat_values.big_biter, weight = 2}, + {name = 'small-spitter', threat = threat_values.small_spitter, weight = 1}, + {name = 'medium-spitter', threat = threat_values.medium_spitter, weight = 4}, + {name = 'big-spitter', threat = threat_values.big_spitter, weight = 1} + } + return biter_pool + end + if game.forces.enemy.evolution_factor < 0.5 then + biter_pool = { + {name = 'small-biter', threat = threat_values.small_biter, weight = 2}, + {name = 'medium-biter', threat = threat_values.medium_biter, weight = 4}, + {name = 'big-biter', threat = threat_values.big_biter, weight = 8}, + {name = 'small-spitter', threat = threat_values.small_spitter, weight = 1}, + {name = 'medium-spitter', threat = threat_values.medium_spitter, weight = 2}, + {name = 'big-spitter', threat = threat_values.big_spitter, weight = 4} + } + return biter_pool + end + if game.forces.enemy.evolution_factor < 0.6 then + biter_pool = { + {name = 'medium-biter', threat = threat_values.medium_biter, weight = 4}, + {name = 'big-biter', threat = threat_values.big_biter, weight = 8}, + {name = 'medium-spitter', threat = threat_values.medium_spitter, weight = 2}, + {name = 'big-spitter', threat = threat_values.big_spitter, weight = 4} + } + return biter_pool + end + if game.forces.enemy.evolution_factor < 0.7 then + biter_pool = { + {name = 'behemoth-biter', threat = threat_values.small_biter, weight = 2}, + {name = 'medium-biter', threat = threat_values.medium_biter, weight = 12}, + {name = 'big-biter', threat = threat_values.big_biter, weight = 20}, + {name = 'behemoth-spitter', threat = threat_values.small_spitter, weight = 1}, + {name = 'medium-spitter', threat = threat_values.medium_spitter, weight = 6}, + {name = 'big-spitter', threat = threat_values.big_spitter, weight = 10} + } + return biter_pool + end + if game.forces.enemy.evolution_factor < 0.8 then + biter_pool = { + {name = 'behemoth-biter', threat = threat_values.small_biter, weight = 2}, + {name = 'medium-biter', threat = threat_values.medium_biter, weight = 4}, + {name = 'big-biter', threat = threat_values.big_biter, weight = 10}, + {name = 'behemoth-spitter', threat = threat_values.small_spitter, weight = 1}, + {name = 'medium-spitter', threat = threat_values.medium_spitter, weight = 2}, + {name = 'big-spitter', threat = threat_values.big_spitter, weight = 5} + } + return biter_pool + end + if game.forces.enemy.evolution_factor <= 0.9 then + biter_pool = { + {name = 'big-biter', threat = threat_values.big_biter, weight = 12}, + {name = 'behemoth-biter', threat = threat_values.behemoth_biter, weight = 2}, + {name = 'big-spitter', threat = threat_values.big_spitter, weight = 6}, + {name = 'behemoth-spitter', threat = threat_values.behemoth_spitter, weight = 1} + } + return biter_pool + end + if game.forces.enemy.evolution_factor <= 1 then + biter_pool = { + {name = 'big-biter', threat = threat_values.big_biter, weight = 4}, + {name = 'behemoth-biter', threat = threat_values.behemoth_biter, weight = 2}, + {name = 'big-spitter', threat = threat_values.big_spitter, weight = 2}, + {name = 'behemoth-spitter', threat = threat_values.behemoth_spitter, weight = 1} + } + return biter_pool + end +end + +local function get_biter_pool() + local biter_pool = get_biter_initial_pool() + local biter_raffle = {} + for _, biter_type in pairs(biter_pool) do + for _ = 1, biter_type.weight, 1 do + insert(biter_raffle, {name = biter_type.name, threat = biter_type.threat}) + end + end + return biter_raffle +end + +local function spawn_biter(pos, biter_pool) + local this = FDT.get() + if this.attack_wave_threat < 1 then + return false + end + + local surface = game.surfaces[this.active_surface_index] + if not surface or not surface.valid then + return + end + + biter_pool = shuffle(biter_pool) + this.attack_wave_threat = this.attack_wave_threat - biter_pool[1].threat + local valid_pos = surface.find_non_colliding_position(biter_pool[1].name, pos, 100, 2) + local biter = surface.create_entity({name = biter_pool[1].name, position = valid_pos}) + biter.ai_settings.allow_destroy_when_commands_fail = false + biter.ai_settings.allow_try_return_to_spawner = false + return biter +end + +local function get_y_coord_raffle_table() + local t = {} + + t[#t + 1] = -65 + t[#t + 1] = -282 + t[#t + 1] = -65 + t[#t + 1] = -282 + t[#t + 1] = -65 + t[#t + 1] = -282 + t[#t + 1] = -65 + t[#t + 1] = -282 + t[#t + 1] = -65 + t[#t + 1] = -282 + shuffle(t) + return t +end + +local function get_x_coord_raffle_table() + local t = {} + + t[#t + 1] = 671 + t[#t + 1] = -535 + t[#t + 1] = 671 + t[#t + 1] = -535 + t[#t + 1] = 671 + t[#t + 1] = -535 + t[#t + 1] = 671 + t[#t + 1] = -535 + t[#t + 1] = 671 + t[#t + 1] = -535 + shuffle(t) + return t +end + +local attack_group_count_thresholds = { + {0, 1}, + {50, 2}, + {100, 3}, + {150, 4}, + {200, 5}, + {1000, 6}, + {2000, 7}, + {3000, 8} +} + +local function get_number_of_attack_groups() + local n = 1 + local this = FDT.get() + for _, entry in pairs(attack_group_count_thresholds) do + if this.wave_count >= entry[1] then + n = entry[2] + end + end + return n +end + +local function clear_corpses(surface) + local this = FDT.get() + + if not this.wave_count then + return + end + local chance = 4 + if this.wave_count > 250 then + chance = 3 + end + if this.wave_count > 500 then + chance = 2 + end + + local area = {{-96, 34}, {96, 187}} + for _, entity in pairs(surface.find_entities_filtered {area = area, type = 'corpse'}) do + if math_random(1, chance) == 1 then + entity.destroy() + end + end +end + +local function send_unit_group(unit_group) + local commands = {} + local this = FDT.get() + for x = unit_group.position.x, this.market.position.x, -64 do + local destination = + unit_group.surface.find_non_colliding_position('stone-wall', {x = x, y = unit_group.position.y}, 32, 4) + if destination then + commands[#commands + 1] = { + type = defines.command.attack_area, + destination = destination, + radius = 24, + distraction = defines.distraction.by_enemy + } + end + end + if math_random(1, 2) == 1 then + commands[#commands + 1] = { + type = defines.command.attack_area, + destination = {x = this.market.position.x, y = unit_group.position.y}, + radius = 24, + distraction = defines.distraction.by_enemy + } + else + commands[#commands + 1] = { + type = defines.command.attack, + target = this.market, + distraction = defines.distraction.by_enemy + } + end + unit_group.set_command( + { + type = defines.command.compound, + structure_type = defines.compound_command.logical_and, + commands = commands + } + ) +end + +local function spawn_boss_units(surface) + local Diff = Difficulty.get() + local this = FDT.get() + if this.wave_count <= 2000 then + game.print( + {'crab_defender.boss_message', this.wave_count, {'crab_defender.' .. this.wave_count}}, + {r = 0.8, g = 0.1, b = 0.1} + ) + else + game.print({'crab_defender.boss_message', this.wave_count}, {r = 0.8, g = 0.1, b = 0.1}) + end + + if not this.boss_waves[this.wave_count] then + local amount = this.wave_count + if amount > 1000 then + amount = 1000 + end + this.boss_waves[this.wave_count] = { + {name = 'behemoth-biter', count = math.floor(amount / 20)}, + {name = 'behemoth-spitter', count = math.floor(amount / 40)} + } + end + + local health_factor = this.difficulties_votes[Diff.difficulty_vote_index].boss_modifier + if this.wave_count == 100 then + health_factor = health_factor * 2 + end + + local position = {x = 216, y = 0} + local biter_group = surface.create_unit_group({position = position}) + for _, entry in pairs(this.boss_waves[this.wave_count]) do + for _ = 1, entry.count, 1 do + local pos = surface.find_non_colliding_position(entry.name, position, 64, 3) + if pos then + local biter = surface.create_entity({name = entry.name, position = pos}) + biter.ai_settings.allow_destroy_when_commands_fail = false + biter.ai_settings.allow_try_return_to_spawner = false + this.boss_biters[biter.unit_number] = biter + Unit_health_booster.add_boss_unit(biter, this.biter_health_boost * health_factor, 0.55) + biter_group.add_member(biter) + end + end + end + + send_unit_group(biter_group) +end + +local function wake_up_the_biters(surface) + local this = FDT.get() + if not this.market or not this.market.valid then + return + end + + local units = surface.find_entities_filtered({type = 'unit'}) + units = shuffle(units) + local unit_groups = {} + local x_raffle = get_x_coord_raffle_table() + local y_raffle = get_y_coord_raffle_table() + for i = 1, 2, 1 do + if not units[i] then + break + end + if not units[i].valid then + break + end + local x = units[i].position.x + if x > 256 then + x = x_raffle[i] + end + local y = units[i].position.y + if y > 96 or y < -96 then + y = y_raffle[i] + end + + unit_groups[i] = surface.create_unit_group({position = {x = x, y = y}}) + local biters = surface.find_enemy_units(units[i].position, 36, 'player') + for _, biter in pairs(biters) do + unit_groups[i].add_member(biter) + end + end + + for i = 1, #unit_groups, 1 do + if unit_groups[i].valid then + if #unit_groups[i].members > 0 then + send_unit_group(unit_groups[i]) + else + unit_groups[i].destroy() + end + end + end + + surface.set_multi_command( + { + command = { + type = defines.command.attack, + target = this.market, + distraction = defines.distraction.none + }, + unit_count = 16, + force = 'enemy', + unit_search_distance = 36 + } + ) +end + +local function biter_attack_wave() + local Diff = Difficulty.get() + local this = FDT.get() + + if not this.market or not this.market.valid then + return + end + if this.wave_grace_period then + return + end + local surface = game.surfaces[this.active_surface_index] + if not surface or not surface.valid then + return + end + + clear_corpses(surface) + wake_up_the_biters(surface) + + if surface.count_entities_filtered({type = 'unit'}) > biter_count_limit then + --game.print("Biter limit reached, wave delayed.", {r = 0.7, g = 0.1, b = 0.1}) + return + end + + if not this.wave_count then + this.wave_count = 1 + else + this.wave_count = this.wave_count + 1 + end + + local m = 0.0015 + if Diff.difficulty_vote_index then + m = m * this.difficulties_votes[Diff.difficulty_vote_index].strength_modifier + end + game.forces.enemy.set_ammo_damage_modifier('melee', this.wave_count * m) + game.forces.enemy.set_ammo_damage_modifier('biological', this.wave_count * m) + this.biter_health_boost = 1 + (this.wave_count * (m * 2)) + + m = 4 + if Diff.difficulty_vote_index then + m = m * this.difficulties_votes[Diff.difficulty_vote_index].amount_modifier + end + + if this.wave_count % 50 == 0 then + this.attack_wave_threat = math.floor(this.wave_count * (m * 1.5)) + spawn_boss_units(surface) + if this.attack_wave_threat > 10000 then + this.attack_wave_threat = 10000 + end + else + this.attack_wave_threat = math.floor(this.wave_count * m) + if this.attack_wave_threat > 10000 then + this.attack_wave_threat = 10000 + end + end + + local evolution = this.wave_count * 0.00125 + if evolution > 1 then + evolution = 1 + end + game.forces.enemy.evolution_factor = evolution + + local y_raffle = get_y_coord_raffle_table() + local x_raffle = get_x_coord_raffle_table() + + local unit_groups = {} + if this.wave_count > 50 and math_random(1, 8) == 1 then + for i = 1, 10, 1 do + unit_groups[i] = surface.create_unit_group({position = {x = x_raffle[i], y = y_raffle[i]}}) + end + else + for i = 1, get_number_of_attack_groups(), 1 do + unit_groups[i] = surface.create_unit_group({position = {x = x_raffle[i], y = y_raffle[i]}}) + end + end + + local biter_pool = get_biter_pool() + + while this.attack_wave_threat > 0 do + for i = 1, #unit_groups, 1 do + local biter = spawn_biter(unit_groups[i].position, biter_pool) + if biter then + unit_groups[i].add_member(biter) + else + break + end + end + end + + for i = 1, #unit_groups, 1 do + send_unit_group(unit_groups[i]) + end +end + +local function get_sorted_list(column_name, score_list) + for _ = 1, #score_list, 1 do + for y = 1, #score_list, 1 do + if not score_list[y + 1] then + break + end + if score_list[y][column_name] < score_list[y + 1][column_name] then + local key = score_list[y] + score_list[y] = score_list[y + 1] + score_list[y + 1] = key + end + end + end + return score_list +end + +local function get_mvps() + local get_score = Score.get_table().score_table + if not get_score['player'] then + return false + end + local score = get_score['player'] + local score_list = {} + for _, p in pairs(game.players) do + local killscore = 0 + if score.players[p.name].killscore then + killscore = score.players[p.name].killscore + end + local deaths = 0 + if score.players[p.name].deaths then + deaths = score.players[p.name].deaths + end + local built_entities = 0 + if score.players[p.name].built_entities then + built_entities = score.players[p.name].built_entities + end + local mined_entities = 0 + if score.players[p.name].mined_entities then + mined_entities = score.players[p.name].mined_entities + end + table.insert( + score_list, + { + name = p.name, + killscore = killscore, + deaths = deaths, + built_entities = built_entities, + mined_entities = mined_entities + } + ) + end + local mvp = {} + score_list = get_sorted_list('killscore', score_list) + mvp.killscore = {name = score_list[1].name, score = score_list[1].killscore} + score_list = get_sorted_list('deaths', score_list) + mvp.deaths = {name = score_list[1].name, score = score_list[1].deaths} + score_list = get_sorted_list('built_entities', score_list) + mvp.built_entities = {name = score_list[1].name, score = score_list[1].built_entities} + return mvp +end + +local function is_game_lost() + local this = FDT.get() + + if not this.game_has_ended then + return + end + + for _, player in pairs(game.connected_players) do + if player.gui.left['crab_defender_game_lost'] then + return + end + local f = + player.gui.left.add( + { + type = 'frame', + name = 'crab_defender_game_lost', + caption = 'The crab market was overrun! The biters are having a feast :3', + direction = 'vertical' + } + ) + f.style.font_color = {r = 0.65, g = 0.1, b = 0.99} + + local t = f.add({type = 'table', column_count = 2}) + + local survival_time_label = t.add({type = 'label', caption = 'Survival Time >> '}) + survival_time_label.style.font = 'default-listbox' + survival_time_label.style.font_color = {r = 0.22, g = 0.77, b = 0.44} + + local market_age_label + + if this.market_age then + if this.market_age >= 216000 then + market_age_label = + t.add( + { + type = 'label', + caption = math.floor(((this.market_age / 60) / 60) / 60) .. + ' hours ' .. math.ceil((this.market_age % 216000 / 60) / 60) .. ' minutes' + } + ) + market_age_label.style.font = 'default-bold' + market_age_label.style.font_color = {r = 0.33, g = 0.66, b = 0.9} + else + market_age_label = + t.add({type = 'label', caption = math.ceil((this.market_age % 216000 / 60) / 60) .. ' minutes'}) + market_age_label.style.font = 'default-bold' + market_age_label.style.font_color = {r = 0.33, g = 0.66, b = 0.9} + end + end + + local mvp = get_mvps() + if mvp then + local mvp_defender_label = t.add({type = 'label', caption = 'MVP Defender >> '}) + mvp_defender_label.style.font = 'default-listbox' + mvp_defender_label.style.font_color = {r = 0.22, g = 0.77, b = 0.44} + + local mvp_killscore_label = + t.add({type = 'label', caption = mvp.killscore.name .. ' with a score of ' .. mvp.killscore.score}) + mvp_killscore_label.style.font = 'default-bold' + mvp_killscore_label.style.font_color = {r = 0.33, g = 0.66, b = 0.9} + + local mvp_builder_label = t.add({type = 'label', caption = 'MVP Builder >> '}) + mvp_builder_label.style.font = 'default-listbox' + mvp_builder_label.style.font_color = {r = 0.22, g = 0.77, b = 0.44} + + local mvp_built_ent_label = + t.add( + { + type = 'label', + caption = mvp.built_entities.name .. ' built ' .. mvp.built_entities.score .. ' things' + } + ) + mvp_built_ent_label.style.font = 'default-bold' + mvp_built_ent_label.style.font_color = {r = 0.33, g = 0.66, b = 0.9} + + local mvp_deaths_label = t.add({type = 'label', caption = 'MVP Deaths >> '}) + mvp_deaths_label.style.font = 'default-listbox' + mvp_deaths_label.style.font_color = {r = 0.22, g = 0.77, b = 0.44} + + local mvp_deaths_name_label = + t.add({type = 'label', caption = mvp.deaths.name .. ' died ' .. mvp.deaths.score .. ' times'}) + mvp_deaths_name_label.style.font = 'default-bold' + mvp_deaths_name_label.style.font_color = {r = 0.33, g = 0.66, b = 0.9} + + if not this.results_sent then + local result = {} + insert(result, 'MVP Defender: \\n') + insert(result, mvp.killscore.name .. ' with a score of ' .. mvp.killscore.score .. '\\n') + insert(result, '\\n') + insert(result, 'MVP Builder: \\n') + insert(result, mvp.built_entities.name .. ' built ' .. mvp.built_entities.score .. ' things\\n') + insert(result, '\\n') + insert(result, 'MVP Deaths: \\n') + insert(result, mvp.deaths.name .. ' died ' .. mvp.deaths.score .. ' times') + local message = table.concat(result) + Server.to_discord_embed(message) + this.results_sent = true + end + end + + player.play_sound {path = 'utility/game_lost', volume_modifier = 0.75} + end + + game.map_settings.enemy_expansion.enabled = true + game.map_settings.enemy_expansion.max_expansion_distance = 15 + game.map_settings.enemy_expansion.settler_group_min_size = 15 + game.map_settings.enemy_expansion.settler_group_max_size = 30 + game.map_settings.enemy_expansion.min_expansion_cooldown = 600 + game.map_settings.enemy_expansion.max_expansion_cooldown = 600 +end + +local function damage_entities_in_radius(surface, position, radius, damage) + local entities_to_damage = + surface.find_entities_filtered( + {area = {{position.x - radius, position.y - radius}, {position.x + radius, position.y + radius}}} + ) + for _, entity in pairs(entities_to_damage) do + if entity.valid then + if entity.health and entity.name ~= 'land-mine' then + if entity.force.name ~= 'enemy' then + if entity.name == 'character' then + entity.damage(damage, 'enemy') + else + entity.health = entity.health - damage + if entity.health <= 0 then + entity.die('enemy') + end + end + end + end + end + end +end + +local function market_kill_visuals() + local this = FDT.get() + local surface = game.surfaces[this.active_surface_index] + if not surface or not surface.valid then + return + end + + local is_branch_18 = sub(branch_version, 3, 4) + local get_active_version = sub(game.active_mods.base, 3, 4) + + if not surface or not surface.valid then + return + end + + if not this.market or not this.market.valid then + return + end + + local m = 32 + local m2 = m * 0.005 + if get_active_version >= is_branch_18 then + for i = 1, 1024, 1 do + surface.create_particle( + { + name = 'branch-particle', + position = this.market.position, + frame_speed = 0.1, + vertical_speed = 0.1, + height = 0.1, + movement = {m2 - (math.random(0, m) * 0.01), m2 - (math.random(0, m) * 0.01)} + } + ) + end + else + for i = 1, 1024, 1 do + surface.create_entity( + { + name = 'branch-particle', + position = this.market.position, + frame_speed = 0.1, + vertical_speed = 0.1, + height = 0.1, + movement = {m2 - (math.random(0, m) * 0.01), m2 - (math.random(0, m) * 0.01)} + } + ) + end + end + for x = -5, 5, 0.5 do + for y = -5, 5, 0.5 do + if math_random(1, 2) == 1 then + surface.create_trivial_smoke( + { + name = 'smoke-fast', + position = {this.market.position.x + (x * 0.35), this.market.position.y + (y * 0.35)} + } + ) + end + if math_random(1, 3) == 1 then + surface.create_trivial_smoke( + { + name = 'train-smoke', + position = {this.market.position.x + (x * 0.35), this.market.position.y + (y * 0.35)} + } + ) + end + end + end + surface.spill_item_stack(this.market.position, {name = 'raw-fish', count = 1024}, true) +end + +local biter_splash_damage = { + ['medium-biter'] = { + visuals = {'blood-explosion-big', 'big-explosion'}, + radius = 1.5, + damage_min = 50, + damage_max = 100, + chance = 32 + }, + ['big-biter'] = { + visuals = {'blood-explosion-huge', 'ground-explosion'}, + radius = 2, + damage_min = 75, + damage_max = 150, + chance = 48 + }, + ['behemoth-biter'] = { + visuals = {'blood-explosion-huge', 'big-artillery-explosion'}, + radius = 2.5, + damage_min = 100, + damage_max = 200, + chance = 64 + } +} + +local function on_entity_died(event) + if not event.entity.valid then + return + end + + local this = FDT.get() + + if event.entity.force.name == 'enemy' then + local surface = event.entity.surface + + if this.boss_biters[event.entity.unit_number] then + boss_biter.died(event) + end + + local splash = biter_splash_damage[event.entity.name] + if splash then + if math_random(1, splash.chance) == 1 then + for _, visual in pairs(splash.visuals) do + surface.create_entity({name = visual, position = event.entity.position}) + end + damage_entities_in_radius( + surface, + event.entity.position, + splash.radius, + math_random(splash.damage_min, splash.damage_max) + ) + return + end + end + + if event.entity.name == 'behemoth-biter' then + if math_random(1, 16) == 1 then + local p = surface.find_non_colliding_position('big-biter', event.entity.position, 3, 0.5) + if p then + surface.create_entity {name = 'big-biter', position = p} + end + end + for i = 1, math_random(1, 2), 1 do + local p = surface.find_non_colliding_position('medium-biter', event.entity.position, 3, 0.5) + if p then + surface.create_entity {name = 'medium-biter', position = p} + end + end + end + return + end + + if event.entity == this.market then + market_kill_visuals() + this.market.die() + this.market = nil + this.market_age = game.tick - this.last_reset + this.game_has_ended = true + is_game_lost() + return + end + + if this.entity_limits[event.entity.name] then + this.entity_limits[event.entity.name].placed = this.entity_limits[event.entity.name].placed - 1 + update_fd_stats() + end +end + +local function on_player_joined_game(event) + local player = game.players[event.player_index] + local this = FDT.get() + local surface = game.surfaces[this.active_surface_index] + if not surface or not surface.valid then + return + end + + if player.online_time == 0 then + for item, amount in pairs(starting_items) do + player.insert({name = item, count = amount}) + end + + if global.show_floating_killscore then + global.show_floating_killscore[player.name] = false + end + end + + local spawn = player.force.get_spawn_position(surface) + local pos = surface.find_non_colliding_position('character', spawn, 3, 0.5) + + if not pos and player.online_time < 2 then + player.teleport(spawn, surface) + elseif player.online_time < 2 or player.surface.index ~= this.active_surface_index then + player.teleport(pos, surface) + end + + create_wave_gui(player) + add_fd_stats_button(player) + + if game.tick > 900 then + is_game_lost() + end + + --if this.charting_done then return end + --game.forces.player.chart(game.surfaces["crab_defender"], {{-256, -512},{768, 512}}) + --this.charting_done = true +end + +local function on_built_entity(event) + local get_score = Score.get_table().score_table + local this = FDT.get() + local entity = event.created_entity + local surface = entity.surface + + if not surface or not surface.valid then + return + end + + if not entity.valid then + return + end + + local e = {x = entity.position.x, y = entity.position.y} + local get_tile = surface.get_tile(e) + + if this.entity_limits[entity.name] then + if this.entity_limits[entity.name].placed < this.entity_limits[entity.name].limit then + this.entity_limits[entity.name].placed = this.entity_limits[entity.name].placed + 1 + surface.create_entity( + { + name = 'flying-text', + position = entity.position, + text = this.entity_limits[entity.name].placed .. + ' / ' .. + this.entity_limits[entity.name].limit .. ' ' .. this.entity_limits[entity.name].str .. 's', + color = {r = 0.98, g = 0.66, b = 0.22} + } + ) + update_fd_stats() + else + surface.create_entity( + { + name = 'flying-text', + position = entity.position, + text = this.entity_limits[entity.name].str .. ' limit reached.', + color = {r = 0.82, g = 0.11, b = 0.11} + } + ) + local player = game.players[event.player_index] + player.insert({name = entity.name, count = 1}) + if get_score then + if get_score[player.force.name] then + if get_score[player.force.name].players[player.name] then + get_score[player.force.name].players[player.name].built_entities = + get_score[player.force.name].players[player.name].built_entities - 1 + end + end + end + entity.destroy() + end + end + + if get_tile.valid and get_tile.name == 'tutorial-grid' then + entity.destroy() + return + end +end + +local function on_robot_built_entity(event) + local entity = event.created_entity + local surface = entity.surface + + if not surface or not surface.valid then + return + end + + if not entity.valid then + return + end + + local e = {x = entity.position.x, y = entity.position.y} + local get_tile = surface.get_tile(e) + local this = FDT.get() + if this.entity_limits[entity.name] then + if this.entity_limits[entity.name].placed < this.entity_limits[entity.name].limit then + this.entity_limits[entity.name].placed = this.entity_limits[entity.name].placed + 1 + surface.create_entity( + { + name = 'flying-text', + position = entity.position, + text = this.entity_limits[entity.name].placed .. + ' / ' .. + this.entity_limits[entity.name].limit .. ' ' .. this.entity_limits[entity.name].str .. 's', + color = {r = 0.98, g = 0.66, b = 0.22} + } + ) + update_fd_stats() + else + surface.create_entity( + { + name = 'flying-text', + position = entity.position, + text = this.entity_limits[entity.name].str .. ' limit reached.', + color = {r = 0.82, g = 0.11, b = 0.11} + } + ) + local inventory = event.robot.get_inventory(defines.inventory.robot_cargo) + inventory.insert({name = entity.name, count = 1}) + entity.destroy() + end + end + + if get_tile.valid and get_tile.name == 'tutorial-grid' then + entity.destroy() + return + end +end + +local function on_player_changed_position(event) + local player = game.players[event.player_index] + local this = FDT.get() + local surface = game.surfaces[this.active_surface_index] + if not surface or not surface.valid then + return + end + + local p = {x = player.position.x, y = player.position.y} + local get_tile = surface.get_tile(p) + if get_tile.valid and get_tile.name == 'tutorial-grid' then + if player.character and player.character.valid then + player.character.health = player.character.health - math.random(20, 40) + player.character.surface.create_entity({name = 'water-splash', position = player.position}) + + if player.character.health <= 0 then + player.character.die('enemy') + return + end + end + end +end + +local function on_player_or_robot_built_tile(event) + local surface = game.surfaces[event.surface_index] + + local tiles = event.tiles + if not tiles then + return + end + for k, v in pairs(tiles) do + local old_tile = v.old_tile + if old_tile.name == 'tutorial-grid' then + surface.set_tiles({{name = 'tutorial-grid', position = v.position}}, true) + end + end +end + +local function on_player_mined_entity(event) + local this = FDT.get() + if this.entity_limits[event.entity.name] then + this.entity_limits[event.entity.name].placed = this.entity_limits[event.entity.name].placed - 1 + update_fd_stats() + end +end + +local function on_robot_mined_entity(event) + local this = FDT.get() + if this.entity_limits[event.entity.name] then + this.entity_limits[event.entity.name].placed = this.entity_limits[event.entity.name].placed - 1 + update_fd_stats() + end +end + +local function on_research_finished(event) + local research = event.research.name + if research ~= 'tanks' then + return + end + game.forces['player'].technologies['artillery'].researched = true + game.forces.player.recipes['artillery-wagon'].enabled = false +end + +local function on_player_respawned(event) + local this = FDT.get() + if not this.market_age then + return + end + local player = game.players[event.player_index] + player.character.destructible = false +end + +local function has_the_game_ended() + local this = FDT.get() + if this.market_age then + if not this.game_restart_timer then + this.game_restart_timer = 5400 + else + if this.game_restart_timer < 0 then + return + end + + this.game_restart_timer = this.game_restart_timer - 30 + end + local cause_msg + if this.restart then + cause_msg = 'restart' + elseif this.shutdown then + cause_msg = 'shutdown' + elseif this.soft_reset then + cause_msg = 'soft-reset' + end + + if this.game_restart_timer % 1800 == 0 then + if this.game_restart_timer > 0 then + this.game_reset = true + game.print( + 'Game will ' .. cause_msg .. ' in ' .. this.game_restart_timer / 60 .. ' seconds!', + {r = 0.22, g = 0.88, b = 0.22} + ) + end + if this.soft_reset and this.game_restart_timer == 0 then + this.game_reset_tick = nil + Public.reset_game() + return + end + if this.restart and this.game_restart_timer == 0 then + if not this.announced_message then + game.print('Soft-reset is disabled. Server will restart!', {r = 0.22, g = 0.88, b = 0.22}) + local message = 'Soft-reset is disabled. Server will restart!' + Server.to_discord_bold(table.concat {'*** ', message, ' ***'}) + Server.start_scenario('Crab_Defender') + this.announced_message = true + return + end + end + if this.shutdown and this.game_restart_timer == 0 then + if not this.announced_message then + game.print('Soft-reset is disabled. Server is shutting down!', {r = 0.22, g = 0.88, b = 0.22}) + local message = 'Soft-reset is disabled. Server is shutting down!' + Server.to_discord_bold(table.concat {'*** ', message, ' ***'}) + Server.stop_scenario() + this.announced_message = true + return + end + end + end + end +end + +function Public.reset_game() + FDT.reset_table() + Poll.reset() + local this = FDT.get() + local is_branch_18 = sub(branch_version, 3, 4) + local get_active_version = sub(game.active_mods.base, 3, 4) + + Difficulty.reset_difficulty_poll() + Difficulty.set_poll_closing_timeout = game.tick + 36000 + + local players = game.connected_players + for i = 1, #players do + local player = players[i] + Score.init_player_table(player) + if player.gui.left['crab_defender_game_lost'] then + player.gui.left['crab_defender_game_lost'].destroy() + end + end + + local map_gen_settings = {} + map_gen_settings.seed = math_random(10000, 99999) + map_gen_settings.height = 2048 + map_gen_settings.water = 0.10 + map_gen_settings.terrain_segmentation = 3 + map_gen_settings.cliff_settings = {cliff_elevation_interval = 32, cliff_elevation_0 = 32} + map_gen_settings.autoplace_controls = { + ['coal'] = {frequency = 4, size = 1.5, richness = 2}, + ['stone'] = {frequency = 4, size = 1.5, richness = 2}, + ['copper-ore'] = {frequency = 4, size = 1.5, richness = 2}, + ['iron-ore'] = {frequency = 4, size = 1.5, richness = 2}, + ['uranium-ore'] = {frequency = 0, size = 0, richness = 0}, + ['crude-oil'] = {frequency = 5, size = 1.25, richness = 2}, + ['trees'] = {frequency = 2, size = 1, richness = 1}, + ['enemy-base'] = {frequency = 'none', size = 'none', richness = 'none'} + } + map_gen_settings.autoplace_settings = { + ['tile'] = { + settings = { + ['deepwater'] = {frequency = 1, size = 0, richness = 1}, + ['deepwater-green'] = {frequency = 1, size = 0, richness = 1}, + ['water'] = {frequency = 1, size = 0, richness = 1}, + ['water-green'] = {frequency = 1, size = 0, richness = 1}, + ['water-mud'] = {frequency = 1, size = 0, richness = 1}, + ['water-shallow'] = {frequency = 1, size = 0, richness = 1} + }, + treat_missing_as_default = true + } + } + + if not this.active_surface_index then + this.active_surface_index = game.create_surface('crab_defender', map_gen_settings).index + else + this.active_surface_index = + Reset.soft_reset_map(game.surfaces[this.active_surface_index], map_gen_settings, starting_items).index + end + + local surface = game.surfaces[this.active_surface_index] + if not surface or not surface.valid then + return + end + + surface.peaceful_mode = false + + local r = 320 + local p = {x = -131, y = 5} + game.forces.player.chart( + surface, + { + {p.x - r - 200, p.y - r - 200}, + {p.x + r + 600, p.y + r} + } + ) + + game.map_settings.enemy_expansion.enabled = false + game.map_settings.enemy_evolution.destroy_factor = 0 + game.map_settings.enemy_evolution.time_factor = 0 + game.map_settings.enemy_evolution.pollution_factor = 0 + game.map_settings.pollution.enabled = false + + game.forces['player'].technologies['atomic-bomb'].enabled = false + --game.forces["player"].technologies["landfill"].enabled = false + + if not game.forces.decoratives then + game.create_force('decoratives') + end + + game.forces['decoratives'].set_cease_fire('enemy', true) + game.forces['enemy'].set_cease_fire('decoratives', true) + game.forces['player'].set_cease_fire('decoratives', true) + game.remove_offline_players() + + game.map_settings.enemy_expansion.enabled = false + game.forces['player'].technologies['artillery'].researched = false + + is_branch_18 = is_branch_18 .. sub(branch_version, 6, 7) + get_active_version = get_active_version .. sub(game.active_mods.base, 6, 7) + if get_active_version >= is_branch_18 then + game.reset_time_played() + end + + this.market_health = 500 + this.market_max_health = 500 + this.spawn_area_generated = false +end + +function Public.on_init() + Public.reset_game() + + local T = Map.Pop_info() + T.localised_category = 'crab_defender' + T.main_caption_color = {r = 0.11, g = 0.8, b = 0.44} + T.sub_caption_color = {r = 0.33, g = 0.66, b = 0.9} +end + +local function on_tick() + local Diff = Difficulty.get() + local this = FDT.get() + local surface = game.surfaces[this.active_surface_index] + if not surface or not surface.valid then + return + end + if game.tick % 30 == 0 then + has_the_game_ended() + if this.market then + for _, player in pairs(game.connected_players) do + if surface.peaceful_mode == false then + create_wave_gui(player) + end + end + end + if game.tick % 180 == 0 then + if surface then + game.forces.player.chart(surface, {{-428, -24}, {-575, -126}}) + game.forces.player.chart(surface, {{577, -24}, {724, -126}}) + if Diff.difficulty_vote_index then + this.wave_interval = this.difficulties_votes[Diff.difficulty_vote_index].wave_interval + end + end + end + end + + if game.tick % this.wave_interval == this.wave_interval - 1 then + if surface.peaceful_mode == true then + return + end + biter_attack_wave() + end +end + +local on_init = Public.on_init + +Event.add(defines.events.on_gui_click, on_gui_click) +Event.add(defines.events.on_market_item_purchased, on_market_item_purchased) +Event.add(defines.events.on_player_respawned, on_player_respawned) +Event.add(defines.events.on_built_entity, on_built_entity) +Event.add(defines.events.on_entity_died, on_entity_died) +Event.add(defines.events.on_player_changed_position, on_player_changed_position) +Event.add(defines.events.on_player_joined_game, on_player_joined_game) +Event.add(defines.events.on_player_mined_entity, on_player_mined_entity) +Event.add(defines.events.on_research_finished, on_research_finished) +Event.add(defines.events.on_robot_built_entity, on_robot_built_entity) +Event.add(defines.events.on_robot_mined_entity, on_robot_mined_entity) +Event.add(defines.events.on_player_built_tile, on_player_or_robot_built_tile) +Event.add(defines.events.on_robot_built_tile, on_player_or_robot_built_tile) +Event.add(defines.events.on_tick, on_tick) +Event.on_init(on_init) + +return Public diff --git a/maps/crab_defender/market.lua b/maps/crab_defender/market.lua new file mode 100644 index 00000000..28c225d2 --- /dev/null +++ b/maps/crab_defender/market.lua @@ -0,0 +1,345 @@ +require 'maps.crab_defender.flame_boots' +require 'maps.crab_defender.trapped_capsules' +require 'maps.crab_defender.ultra_mines' +require 'maps.crab_defender.crumbly_walls' +require 'maps.crab_defender.vehicle_nanobots' +require 'maps.crab_defender.laser_pointer' + +local Event = require 'utils.event' +local FDT = require 'maps.crab_defender.table' +local Server = require 'utils.server' + +local slot_upgrade_offers = { + [1] = {'gun-turret', 'gun turret'}, + [2] = {'laser-turret', 'laser turret'}, + [3] = {'artillery-turret', 'artillery turret'}, + [4] = {'flamethrower-turret', 'flamethrower turret'}, + [5] = {'land-mine', 'land mine'} +} + +local special_descriptions = { + ['flame-boots'] = 'Flame Boots - Get yourself some hot boots.', + ['explosive-bullets'] = 'Unlock Explosive Bullets - Submachine-Gun and Pistol gains a chance to deal splash damage.', + ['bouncy-shells'] = 'Unlock Bouncy Shells - Shotgun projectiles may bounce to multiple targets.', + ['trapped-capsules'] = 'Unlock Trapped Capsules - Combat robots will send a last deadly projectile to a nearby enemy when killed.', + ['ultra-mines'] = 'Unlock Ultra Mines - Careful with these...', + ['railgun-enhancer'] = 'Unlock Railgun Enhancer - Turns the railgun into a powerful forking gun.', + ['crumbly-walls'] = 'Unlock Crumbly Walls - Fortifications which crumble, may turn into rocks.', + ['vehicle-nanobots'] = 'Unlock Vehicle Nanobots - Vehicles repair rapidly while driving.', + ['laser-pointer'] = 'Unlock Laser Pointer - The biters are on a quest to slay the red (artillery) dot.' +} + +local function refresh_market_offers() + local this = FDT.get() + if not this.market or not this.market.valid then + return + end + for i = 1, 100, 1 do + local a = this.market.remove_market_item(1) + if a == false then + break + end + end + + local str1 = + 'Gun Turret Slot for ' .. + tostring(this.entity_limits['gun-turret'].limit * this.entity_limits['gun-turret'].slot_price) + str1 = str1 .. ' Coins.' + + local str2 = + 'Laser Turret Slot for ' .. + tostring(this.entity_limits['laser-turret'].limit * this.entity_limits['laser-turret'].slot_price) + str2 = str2 .. ' Coins.' + + local str3 = + 'Artillery Slot for ' .. + tostring(this.entity_limits['artillery-turret'].limit * this.entity_limits['artillery-turret'].slot_price) + str3 = str3 .. ' Coins.' + + local current_limit = 1 + if this.entity_limits['flamethrower-turret'].limit ~= 0 then + current_limit = current_limit + this.entity_limits['flamethrower-turret'].limit + end + local str4 = + 'Flamethrower Turret Slot for ' .. + tostring(current_limit * this.entity_limits['flamethrower-turret'].slot_price) + str4 = str4 .. ' Coins.' + + local str5 = + 'Landmine Slot for ' .. + tostring(math.ceil((this.entity_limits['land-mine'].limit / 3) * this.entity_limits['land-mine'].slot_price)) + str5 = str5 .. ' Coins.' + + local market_items = { + {price = {}, offer = {type = 'nothing', effect_description = str1}}, + {price = {}, offer = {type = 'nothing', effect_description = str2}}, + {price = {}, offer = {type = 'nothing', effect_description = str3}}, + {price = {}, offer = {type = 'nothing', effect_description = str4}}, + {price = {}, offer = {type = 'nothing', effect_description = str5}}, + {price = {{'coin', 5}}, offer = {type = 'give-item', item = 'raw-fish', count = 1}}, + {price = {{'coin', 1}}, offer = {type = 'give-item', item = 'wood', count = 8}}, + {price = {{'coin', 8}}, offer = {type = 'give-item', item = 'grenade', count = 1}}, + {price = {{'coin', 32}}, offer = {type = 'give-item', item = 'cluster-grenade', count = 1}}, + {price = {{'coin', 1}}, offer = {type = 'give-item', item = 'land-mine', count = 1}}, + {price = {{'coin', 80}}, offer = {type = 'give-item', item = 'car', count = 1}}, + {price = {{'coin', 1200}}, offer = {type = 'give-item', item = 'tank', count = 1}}, + {price = {{'coin', 3}}, offer = {type = 'give-item', item = 'cannon-shell', count = 1}}, + {price = {{'coin', 7}}, offer = {type = 'give-item', item = 'explosive-cannon-shell', count = 1}}, + {price = {{'coin', 50}}, offer = {type = 'give-item', item = 'gun-turret', count = 1}}, + {price = {{'coin', 300}}, offer = {type = 'give-item', item = 'laser-turret', count = 1}}, + {price = {{'coin', 450}}, offer = {type = 'give-item', item = 'artillery-turret', count = 1}}, + {price = {{'coin', 10}}, offer = {type = 'give-item', item = 'artillery-shell', count = 1}}, + {price = {{'coin', 25}}, offer = {type = 'give-item', item = 'artillery-targeting-remote', count = 1}}, + {price = {{'coin', 1}}, offer = {type = 'give-item', item = 'firearm-magazine', count = 1}}, + {price = {{'coin', 4}}, offer = {type = 'give-item', item = 'piercing-rounds-magazine', count = 1}}, + {price = {{'coin', 2}}, offer = {type = 'give-item', item = 'shotgun-shell', count = 1}}, + {price = {{'coin', 6}}, offer = {type = 'give-item', item = 'piercing-shotgun-shell', count = 1}}, + {price = {{'coin', 30}}, offer = {type = 'give-item', item = 'submachine-gun', count = 1}}, + {price = {{'coin', 250}}, offer = {type = 'give-item', item = 'combat-shotgun', count = 1}}, + {price = {{'coin', 450}}, offer = {type = 'give-item', item = 'flamethrower', count = 1}}, + {price = {{'coin', 25}}, offer = {type = 'give-item', item = 'flamethrower-ammo', count = 1}}, + {price = {{'coin', 125}}, offer = {type = 'give-item', item = 'rocket-launcher', count = 1}}, + {price = {{'coin', 2}}, offer = {type = 'give-item', item = 'rocket', count = 1}}, + {price = {{'coin', 7}}, offer = {type = 'give-item', item = 'explosive-rocket', count = 1}}, + {price = {{'coin', 7500}}, offer = {type = 'give-item', item = 'atomic-bomb', count = 1}}, + {price = {{'coin', 325}}, offer = {type = 'give-item', item = 'railgun', count = 1}}, + {price = {{'coin', 8}}, offer = {type = 'give-item', item = 'railgun-dart', count = 1}}, + {price = {{'coin', 40}}, offer = {type = 'give-item', item = 'poison-capsule', count = 1}}, + {price = {{'coin', 4}}, offer = {type = 'give-item', item = 'defender-capsule', count = 1}}, + {price = {{'coin', 10}}, offer = {type = 'give-item', item = 'light-armor', count = 1}}, + {price = {{'coin', 125}}, offer = {type = 'give-item', item = 'heavy-armor', count = 1}}, + {price = {{'coin', 350}}, offer = {type = 'give-item', item = 'modular-armor', count = 1}}, + {price = {{'coin', 1500}}, offer = {type = 'give-item', item = 'power-armor', count = 1}}, + {price = {{'coin', 12000}}, offer = {type = 'give-item', item = 'power-armor-mk2', count = 1}}, + {price = {{'coin', 50}}, offer = {type = 'give-item', item = 'solar-panel-equipment', count = 1}}, + {price = {{'coin', 2250}}, offer = {type = 'give-item', item = 'fusion-reactor-equipment', count = 1}}, + {price = {{'coin', 100}}, offer = {type = 'give-item', item = 'battery-equipment', count = 1}}, + {price = {{'coin', 200}}, offer = {type = 'give-item', item = 'energy-shield-equipment', count = 1}}, + {price = {{'coin', 850}}, offer = {type = 'give-item', item = 'personal-laser-defense-equipment', count = 1}}, + {price = {{'coin', 175}}, offer = {type = 'give-item', item = 'exoskeleton-equipment', count = 1}}, + {price = {{'coin', 125}}, offer = {type = 'give-item', item = 'night-vision-equipment', count = 1}}, + {price = {{'coin', 200}}, offer = {type = 'give-item', item = 'belt-immunity-equipment', count = 1}}, + {price = {{'coin', 250}}, offer = {type = 'give-item', item = 'personal-roboport-equipment', count = 1}}, + {price = {{'coin', 35}}, offer = {type = 'give-item', item = 'construction-robot', count = 1}}, + {price = {{'coin', 25}}, offer = {type = 'give-item', item = 'cliff-explosives', count = 1}}, + {price = {{'coin', 80}}, offer = {type = 'nothing', effect_description = special_descriptions['flame-boots']}} + } + + for _, item in pairs(market_items) do + this.market.add_market_item(item) + end + + if not this.railgun_enhancer_unlocked then + this.market.add_market_item( + { + price = {{'coin', 1500}}, + offer = {type = 'nothing', effect_description = special_descriptions['railgun-enhancer']} + } + ) + end + if not this.trapped_capsules_unlocked then + this.market.add_market_item( + { + price = {{'coin', 3500}}, + offer = {type = 'nothing', effect_description = special_descriptions['trapped-capsules']} + } + ) + end + if not this.explosive_bullets_unlocked then + this.market.add_market_item( + { + price = {{'coin', 4500}}, + offer = {type = 'nothing', effect_description = special_descriptions['explosive-bullets']} + } + ) + end + if not this.bouncy_shells_unlocked then + this.market.add_market_item( + { + price = {{'coin', 10000}}, + offer = {type = 'nothing', effect_description = special_descriptions['bouncy-shells']} + } + ) + end + if not this.vehicle_nanobots_unlocked then + this.market.add_market_item( + { + price = {{'coin', 15000}}, + offer = {type = 'nothing', effect_description = special_descriptions['vehicle-nanobots']} + } + ) + end + --[[ + if not this.crumbly_walls_unlocked then + this.market.add_market_item({price = {{"coin", 35000}}, offer = {type = 'nothing', effect_description = special_descriptions["crumbly-walls"]}}) + end + if not this.ultra_mines_unlocked then + this.market.add_market_item({price = {{"coin", 45000}}, offer = {type = 'nothing', effect_description = special_descriptions["ultra-mines"]}}) + end + ]] + if not this.laser_pointer_unlocked then + this.market.add_market_item( + { + price = {{'coin', 65000}}, + offer = {type = 'nothing', effect_description = special_descriptions['laser-pointer']} + } + ) + end +end + +local function slot_upgrade(player, offer_index) + local this = FDT.get() + local price = + this.entity_limits[slot_upgrade_offers[offer_index][1]].limit * + this.entity_limits[slot_upgrade_offers[offer_index][1]].slot_price + + local gain = 1 + if offer_index == 5 then + price = + math.ceil( + (this.entity_limits[slot_upgrade_offers[offer_index][1]].limit / 3) * + this.entity_limits[slot_upgrade_offers[offer_index][1]].slot_price + ) + gain = 3 + end + + if slot_upgrade_offers[offer_index][1] == 'flamethrower-turret' then + price = + (this.entity_limits[slot_upgrade_offers[offer_index][1]].limit + 1) * + this.entity_limits[slot_upgrade_offers[offer_index][1]].slot_price + end + + local coins_removed = player.remove_item({name = 'coin', count = price}) + if coins_removed ~= price then + if coins_removed > 0 then + player.insert({name = 'coin', count = coins_removed}) + end + player.print('Not enough coins.', {r = 0.22, g = 0.77, b = 0.44}) + return false + end + + this.entity_limits[slot_upgrade_offers[offer_index][1]].limit = + this.entity_limits[slot_upgrade_offers[offer_index][1]].limit + gain + game.print( + player.name .. ' has bought a ' .. slot_upgrade_offers[offer_index][2] .. ' slot for ' .. price .. ' coins!', + {r = 0.22, g = 0.77, b = 0.44} + ) + if math.random(1, 2) == 1 then + Server.to_discord_bold( + table.concat { + '*** ' .. + player.name .. + ' has bought a ' .. + slot_upgrade_offers[offer_index][2] .. ' slot for ' .. price .. ' coins! ***' + } + ) + end + refresh_market_offers() +end + +local function on_market_item_purchased(event) + local player = game.players[event.player_index] + local market = event.market + local offer_index = event.offer_index + local offers = market.get_market_items() + local bought_offer = offers[offer_index].offer + if bought_offer.type ~= 'nothing' then + return + end + local this = FDT.get() + + if slot_upgrade_offers[offer_index] then + if slot_upgrade(player, offer_index) then + return + end + end + + if offer_index < 50 then + return + end + + if bought_offer.effect_description == special_descriptions['flame-boots'] then + game.print(player.name .. ' has bought themselves some flame boots.', {r = 0.22, g = 0.77, b = 0.44}) + if not this.flame_boots[player.index].fuel then + this.flame_boots[player.index].fuel = math.random(1500, 3000) + else + this.flame_boots[player.index].fuel = this.flame_boots[player.index].fuel + math.random(1500, 3000) + end + + player.print('Fuel remaining: ' .. this.flame_boots[player.index].fuel, {r = 0.22, g = 0.77, b = 0.44}) + refresh_market_offers() + return + end + + if bought_offer.effect_description == special_descriptions['explosive-bullets'] then + game.print(player.name .. ' has unlocked explosive bullets.', {r = 0.22, g = 0.77, b = 0.44}) + this.explosive_bullets_unlocked = true + refresh_market_offers() + return + end + + if bought_offer.effect_description == special_descriptions['bouncy-shells'] then + game.print(player.name .. ' has unlocked bouncy shells.', {r = 0.22, g = 0.77, b = 0.44}) + this.bouncy_shells_unlocked = true + refresh_market_offers() + return + end + + if bought_offer.effect_description == special_descriptions['trapped-capsules'] then + game.print(player.name .. ' has unlocked trapped capsules!', {r = 0.22, g = 0.77, b = 0.44}) + this.trapped_capsules_unlocked = true + refresh_market_offers() + return + end + + if bought_offer.effect_description == special_descriptions['ultra-mines'] then + game.print(player.name .. ' has unlocked ultra mines!', {r = 0.22, g = 0.77, b = 0.44}) + this.ultra_mines_unlocked = true + refresh_market_offers() + return + end + + if bought_offer.effect_description == special_descriptions['laser-pointer'] then + game.print(player.name .. ' has unleashed the quest to slay the red dot!', {r = 0.22, g = 0.77, b = 0.44}) + this.laser_pointer_unlocked = true + refresh_market_offers() + return + end + + if bought_offer.effect_description == special_descriptions['railgun-enhancer'] then + game.print(player.name .. ' has unlocked the enhanced railgun!', {r = 0.22, g = 0.77, b = 0.44}) + this.railgun_enhancer_unlocked = true + refresh_market_offers() + return + end + + if bought_offer.effect_description == special_descriptions['crumbly-walls'] then + game.print(player.name .. ' has unlocked crumbly walls!', {r = 0.22, g = 0.77, b = 0.44}) + this.crumbly_walls_unlocked = true + refresh_market_offers() + return + end + + if bought_offer.effect_description == special_descriptions['vehicle-nanobots'] then + game.print(player.name .. ' has unlocked vehicle nanobots!', {r = 0.22, g = 0.77, b = 0.44}) + this.vehicle_nanobots_unlocked = true + refresh_market_offers() + return + end +end + +local function on_gui_opened(event) + if not event.entity then + return + end + if not event.entity.valid then + return + end + if event.entity.name == 'market' then + refresh_market_offers() + return + end +end + +Event.add(defines.events.on_market_item_purchased, on_market_item_purchased) +Event.add(defines.events.on_gui_opened, on_gui_opened) diff --git a/maps/crab_defender/on_entity_damaged.lua b/maps/crab_defender/on_entity_damaged.lua new file mode 100644 index 00000000..89c0355b --- /dev/null +++ b/maps/crab_defender/on_entity_damaged.lua @@ -0,0 +1,65 @@ +require 'maps.crab_defender.boss_biters' + +local Event = require 'utils.event' +local enhance_railgun = require 'maps.crab_defender.railgun_enhancer' +local explosive_bullets = require 'maps.crab_defender.explosive_gun_bullets' +local bouncy_shells = require 'maps.crab_defender.bouncy_shells' +local FDT = require 'maps.crab_defender.table' + +local function protect_market(event) + if event.entity.name ~= 'market' then + return + end + if event.cause then + if event.cause.force.name == 'enemy' then + return + end + end + event.entity.health = event.entity.health + event.final_damage_amount + return true +end + +local function on_entity_damaged(event) + if not event.entity then + return + end + if not event.entity.valid then + return + end + + if protect_market(event) then + return + end + + if not event.cause then + return + end + local explosive_bullets_unlocked = FDT.get('explosive_bullets_unlocked') + local bouncy_shells_unlocked = FDT.get('bouncy_shells_unlocked') + + --if event.cause.unit_number then + -- if this.boss_biters[event.cause.unit_number] then + -- boss_biter.damaged_entity(event) + -- end + --end + + if event.cause.name ~= 'character' then + return + end + + if enhance_railgun(event) then + return + end + if explosive_bullets_unlocked then + if explosive_bullets(event) then + return + end + end + if bouncy_shells_unlocked then + if bouncy_shells(event) then + return + end + end +end + +Event.add(defines.events.on_entity_damaged, on_entity_damaged) diff --git a/maps/crab_defender/railgun_enhancer.lua b/maps/crab_defender/railgun_enhancer.lua new file mode 100644 index 00000000..0f1f9a27 --- /dev/null +++ b/maps/crab_defender/railgun_enhancer.lua @@ -0,0 +1,157 @@ +-- improves the damage of the railgun and adds visual effects -- by mewmew +-- laser turret research will increase it´s damage even further -- + +local FDT = require 'maps.crab_defender.table' + +local damage_min = 400 +local damage_max = 800 +local math_random = math.random +local additional_visual_effects = true + +local biological_target_types = { + ['unit'] = true, + ['player'] = true, + ['turret'] = true, + ['unit-spawner'] = true +} + +local function create_visuals(source_entity, target_entity) + if not source_entity.valid then + return + end + if not target_entity.valid then + return + end + if not additional_visual_effects then + return + end + local surface = target_entity.surface + surface.create_entity({name = 'water-splash', position = target_entity.position}) + if biological_target_types[target_entity.type] then + surface.create_entity({name = 'blood-explosion-big', position = target_entity.position}) + for x = -8, 8, 1 do + for y = -8, 8, 1 do + if math_random(1, 16) == 1 then + surface.create_entity( + { + name = 'blood-fountain', + position = {target_entity.position.x + (x * 0.1), target_entity.position.y + (y * 0.1)} + } + ) + surface.create_entity( + { + name = 'blood-fountain-big', + position = {target_entity.position.x + (x * 0.1), target_entity.position.y + (y * 0.1)} + } + ) + end + end + end + else + if math_random(1, 3) ~= 1 then + surface.create_entity({name = 'fire-flame', position = target_entity.position}) + end + for x = -3, 3, 1 do + for y = -3, 3, 1 do + if math_random(1, 3) == 1 then + surface.create_trivial_smoke( + { + name = 'smoke-fast', + position = {target_entity.position.x + (x * 0.35), target_entity.position.y + (y * 0.35)} + } + ) + end + if math_random(1, 5) == 1 then + surface.create_trivial_smoke( + { + name = 'train-smoke', + position = {target_entity.position.x + (x * 0.35), target_entity.position.y + (y * 0.35)} + } + ) + end + end + end + end +end + +local function do_splash_damage_around_entity(source_entity, player) + if not source_entity.valid then + return + end + local research_damage_bonus = player.force.get_ammo_damage_modifier('laser-turret') + 1 + local research_splash_radius_bonus = player.force.get_ammo_damage_modifier('laser-turret') * 0.5 + local splash_area = { + { + source_entity.position.x - (2.5 + research_splash_radius_bonus), + source_entity.position.y - (2.5 + research_splash_radius_bonus) + }, + { + source_entity.position.x + (2.5 + research_splash_radius_bonus), + source_entity.position.y + (2.5 + research_splash_radius_bonus) + } + } + local entities = source_entity.surface.find_entities_filtered({area = splash_area}) + for _, entity in pairs(entities) do + if entity.valid then + if entity.health and entity ~= source_entity and entity ~= player then + if additional_visual_effects then + local surface = entity.surface + surface.create_entity( + { + name = 'railgun-beam', + position = source_entity.position, + source = source_entity.position, + target = entity.position + } + ) + surface.create_entity({name = 'water-splash', position = entity.position}) + if biological_target_types[entity.type] then + surface.create_entity({name = 'blood-fountain', position = entity.position}) + end + end + local damage = + math_random( + math.ceil((damage_min * research_damage_bonus) / 16), + math.ceil((damage_max * research_damage_bonus) / 16) + ) + entity.damage(damage, player.force, 'physical') + end + end + end +end + +local function enhance(event) + local railgun_enhancer_unlocked = FDT.get('railgun_enhancer_unlocked') + if not railgun_enhancer_unlocked then + return + end + if event.damage_type.name ~= 'physical' then + return + end + if event.original_damage_amount ~= 100 then + return + end + + local player = event.cause + if player.shooting_state.state == defines.shooting.not_shooting then + return + end + local selected_weapon = player.get_inventory(defines.inventory.character_guns)[player.selected_gun_index] + if selected_weapon.name ~= 'railgun' then + return + end + + create_visuals(event.cause, event.entity) + + do_splash_damage_around_entity(event.entity, player) + + event.entity.health = event.entity.health + event.final_damage_amount + + local research_damage_bonus = player.force.get_ammo_damage_modifier('laser-turret') + 1 + local damage = + math_random(math.ceil(damage_min * research_damage_bonus), math.ceil(damage_max * research_damage_bonus)) + event.entity.damage(damage, player.force, 'physical') + return true +end + +return enhance diff --git a/maps/crab_defender/shotgun_buff.lua b/maps/crab_defender/shotgun_buff.lua new file mode 100644 index 00000000..0756e6ca --- /dev/null +++ b/maps/crab_defender/shotgun_buff.lua @@ -0,0 +1,31 @@ +local Event = require 'utils.event' +local FDT = require 'maps.crab_defender.table' +local gain_multiplier = 4 + +local function on_research_finished(event) + local research = event.research + local force_name = research.force.name + local this = FDT.get() + + if not this.shotgun_shell_damage_modifier_old[force_name] then + this.shotgun_shell_damage_modifier_old[force_name] = + game.forces[force_name].get_ammo_damage_modifier('shotgun-shell') - 0.1 + end + + if string.sub(research.name, 0, 26) == 'physical-projectile-damage' then + local current_damage = game.forces[force_name].get_ammo_damage_modifier('shotgun-shell') + local vanilla_gain = current_damage - this.shotgun_shell_damage_modifier_old[force_name] + local additional_gain = vanilla_gain * (gain_multiplier - 1) + game.forces[force_name].set_ammo_damage_modifier('shotgun-shell', current_damage + additional_gain) + end + + this.shotgun_shell_damage_modifier_old[force_name] = + game.forces[force_name].get_ammo_damage_modifier('shotgun-shell') +end + +local function on_init() + game.forces.player.set_ammo_damage_modifier('shotgun-shell', 1) +end + +Event.on_init(on_init) +Event.add(defines.events.on_research_finished, on_research_finished) diff --git a/maps/crab_defender/table.lua b/maps/crab_defender/table.lua new file mode 100644 index 00000000..86e97b79 --- /dev/null +++ b/maps/crab_defender/table.lua @@ -0,0 +1,102 @@ +-- one table to rule them all! +local Global = require 'utils.global' +local Event = require 'utils.event' + +local this = {} +local Public = {} + +Global.register( + this, + function(tbl) + this = tbl + end +) + +function Public.reset_table() + -- @start + -- these 3 are in case of stop/start/reloading the instance. + this.soft_reset = true + this.restart = false + this.shutdown = false + this.announced_message = false + this.force_chunk = false + -- @end + this.game_has_ended = false + this.game_reset = false + this.spawn_area_generated = false + this.results_sent = false + + this.explosive_bullets_unlocked = false + this.bouncy_shells_unlocked = false + this.trapped_capsules_unlocked = false + this.ultra_mines_unlocked = false + this.laser_pointer_unlocked = false + this.railgun_enhancer_unlocked = false + this.crumbly_walls_unlocked = false + this.vehicle_nanobots_unlocked = false + this.game_restart_timer = nil + this.wave_count = 0 + this.attack_wave_threat = nil + this.market = nil + this.market_age = nil + this.last_reset = game.tick + this.wave_interval = 3600 + this.wave_grace_period = game.tick + 3600 * 20 + -- this.wave_grace_period = game.tick + 3600 + this.boss_biters = {} + this.acid_lines_delay = {} + this.entity_limits = { + ['gun-turret'] = {placed = 1, limit = 1, str = 'gun turret', slot_price = 75}, + ['laser-turret'] = {placed = 0, limit = 1, str = 'laser turret', slot_price = 300}, + ['artillery-turret'] = {placed = 0, limit = 1, str = 'artillery turret', slot_price = 500}, + ['flamethrower-turret'] = {placed = 0, limit = 0, str = 'flamethrower turret', slot_price = 50000}, + ['land-mine'] = {placed = 0, limit = 1, str = 'mine', slot_price = 20} + } + this.difficulties_votes = { + [1] = {wave_interval = 4500, amount_modifier = 0.52, strength_modifier = 0.40, boss_modifier = 3.0}, + [2] = {wave_interval = 4100, amount_modifier = 0.76, strength_modifier = 0.65, boss_modifier = 4.0}, + [3] = {wave_interval = 3800, amount_modifier = 0.92, strength_modifier = 0.85, boss_modifier = 5.0}, + [4] = {wave_interval = 3600, amount_modifier = 1.00, strength_modifier = 1.00, boss_modifier = 6.0}, + [5] = {wave_interval = 3400, amount_modifier = 1.08, strength_modifier = 1.25, boss_modifier = 7.0}, + [6] = {wave_interval = 3100, amount_modifier = 1.24, strength_modifier = 1.75, boss_modifier = 8.0}, + [7] = {wave_interval = 2700, amount_modifier = 1.48, strength_modifier = 2.50, boss_modifier = 9.0} + } + this.boss_waves = { + [50] = {{name = 'big-biter', count = 3}}, + [100] = {{name = 'behemoth-biter', count = 1}}, + [150] = {{name = 'behemoth-spitter', count = 4}, {name = 'big-spitter', count = 16}}, + [200] = { + {name = 'behemoth-biter', count = 4}, + {name = 'behemoth-spitter', count = 2}, + {name = 'big-biter', count = 32} + }, + [250] = { + {name = 'behemoth-biter', count = 8}, + {name = 'behemoth-spitter', count = 4}, + {name = 'big-spitter', count = 32} + }, + [300] = {{name = 'behemoth-biter', count = 16}, {name = 'behemoth-spitter', count = 8}} + } + this.comfylatron_habitat = { + left_top = {x = -1500, y = -1500}, + right_bottom = {x = -80, y = 1500} + } + this.shotgun_shell_damage_modifier_old = {} + this.flame_boots = {} +end + +function Public.get(key) + if key then + return this[key] + else + return this + end +end + +local on_init = function() + Public.reset_table() +end + +Event.on_init(on_init) + +return Public diff --git a/maps/crab_defender/terrain.lua b/maps/crab_defender/terrain.lua new file mode 100644 index 00000000..3d682228 --- /dev/null +++ b/maps/crab_defender/terrain.lua @@ -0,0 +1,300 @@ +local Event = require 'utils.event' +local Builder = require 'maps.crab_defender.b' +local map_functions = require 'tools.map_functions' +local simplex_noise = require 'utils.simplex_noise'.d2 +local FDT = require 'maps.crab_defender.table' +local math_random = math.random +local math_abs = math.abs + +local function shuffle(tbl) + local size = #tbl + for i = size, 1, -1 do + local rand = math.random(size) + tbl[i], tbl[rand] = tbl[rand], tbl[i] + end + return tbl +end + +local function get_replacement_tile(surface, position) + for i = 1, 128, 1 do + local vectors = {{0, i}, {0, i * -1}, {i, 0}, {i * -1, 0}} + shuffle(vectors) + for k, v in pairs(vectors) do + local tile = surface.get_tile(position.x + v[1], position.y + v[2]) + if not tile.collides_with('resource-layer') then + return tile.name + end + end + end + return 'grass-1' +end + +local function is_enemy_territory(surface, p) + local get_tile = surface.get_tile(p) + if get_tile.valid and get_tile.name == 'tutorial-grid' then + return true + end + + return false +end + +local function place_crab_market(surface, position) + local market = surface.create_entity({name = 'market', position = position, force = 'player'}) + market.minable = false + return market +end + +local function enemy_territory(surface, left_top) + if left_top.x > 778 then + return + end + if left_top.x < -607 then + return + end + if left_top.y < -590 then + return + end + if left_top.y > -150 then + return + end + + local area = {{left_top.x, left_top.y}, {left_top.x + 32, left_top.y + 32}} + local find_entities_filtered = surface.find_entities_filtered + + for x = 0, 31, 1 do + for y = 0, 31, 1 do + local pos = {x = left_top.x + x, y = left_top.y + y} + local get_tile = surface.get_tile(pos) + + if is_enemy_territory(surface, pos) then + if get_tile.valid and get_tile.name == 'tutorial-grid' then + if math_random(1, 1024) == 1 then + if surface.can_place_entity({name = 'biter-spawner', force = 'decoratives', position = pos}) then + local entity + if math_random(1, 4) == 1 then + entity = + surface.create_entity( + {name = 'spitter-spawner', force = 'decoratives', position = pos} + ) + else + entity = + surface.create_entity( + {name = 'biter-spawner', force = 'decoratives', position = pos} + ) + end + entity.active = false + entity.destructible = false + end + end + end + end + end + end + + for _, entity in pairs(find_entities_filtered({area = area, type = 'resource'})) do + if is_enemy_territory(surface, entity.position) then + surface.create_entity({name = 'uranium-ore', position = entity.position, amount = math_random(200, 8000)}) + entity.destroy() + end + end +end + +local function render_market_hp() + local this = FDT.get() + local surface = game.surfaces[this.active_surface_index] + if not surface or not surface.valid then + return + end + + this.caption = + rendering.draw_text { + text = 'Crab Market', + surface = surface, + target = this.market, + target_offset = {0, -3.4}, + color = {0, 255, 0}, + scale = 1.80, + font = 'default-game', + alignment = 'center', + scale_with_zoom = false + } +end + +local function generate_spawn_area(this, surface) + if this.spawn_area_generated then + return + end + local find_entities_filtered = surface.find_entities_filtered + + surface.request_to_generate_chunks({x = 0, y = 0}, 1) + surface.request_to_generate_chunks({x = 32, y = 118}, 1) + + if not surface.is_chunk_generated({-7, 0}) then + return + end + if not surface.is_chunk_generated({5, 0}) then + return + end + + local spawn_position_x = 32 + local spawn_position_y = 120 + + surface.create_entity({name = 'electric-beam', position = {-532, -10}, source = {-532, -10}, target = {-471, -124}}) + surface.create_entity({name = 'electric-beam', position = {665, -10}, source = {665, -10}, target = {601, -127}}) + + for _, tile in pairs(surface.find_tiles_filtered({name = {'water', 'deepwater'}, area = {{-145, -133}, {32, 59}}})) do + local noise = + math_abs( + simplex_noise(tile.position.x * 0.02, tile.position.y * 0.02, game.surfaces[1].map_gen_settings.seed) * 16 + ) + if tile.position.x > -160 + noise then + surface.set_tiles( + {{name = get_replacement_tile(surface, tile.position), position = {tile.position.x, tile.position.y}}}, + true + ) + end + end + + for _, entity in pairs( + find_entities_filtered( + { + type = {'resource', 'cliff'}, + area = { + {spawn_position_x - 128, spawn_position_y - 132}, + {spawn_position_x + 64, spawn_position_y + 32} + } + } + ) + ) do + entity.destroy() + end + + local decorative_names = {} + for k, v in pairs(game.decorative_prototypes) do + if v.autoplace_specification then + decorative_names[#decorative_names + 1] = k + end + end + for x = -4, 4, 1 do + for y = -3, 3, 1 do + surface.regenerate_decorative(decorative_names, {{x, y}}) + end + end + + local ore_positions = { + {x = spawn_position_x - 80, y = spawn_position_y + 50}, + {x = spawn_position_x - 40, y = spawn_position_y + 50}, + {x = spawn_position_x, y = spawn_position_y + 50}, + {x = spawn_position_x + 40, y = spawn_position_y + 50}, + {x = spawn_position_x + 80, y = spawn_position_y + 50} + } + shuffle(ore_positions) + map_functions.draw_smoothed_out_ore_circle(ore_positions[1], 'copper-ore', surface, 15, 2500) + map_functions.draw_smoothed_out_ore_circle(ore_positions[2], 'iron-ore', surface, 15, 2500) + map_functions.draw_smoothed_out_ore_circle(ore_positions[3], 'coal', surface, 15, 1500) + map_functions.draw_smoothed_out_ore_circle(ore_positions[4], 'stone', surface, 15, 1500) + map_functions.draw_noise_tile_circle({x = spawn_position_x, y = spawn_position_y + 25}, 'water', surface, 16) + map_functions.draw_oil_circle(ore_positions[5], 'crude-oil', surface, 8, 200000) + + local pos = surface.find_non_colliding_position('market', {spawn_position_x, spawn_position_y}, 50, 1) + this.market = place_crab_market(surface, pos) + + render_market_hp() + + local r = 32 + for _, entity in pairs( + find_entities_filtered( + { + area = { + {this.market.position.x - r, this.market.position.y - r}, + {this.market.position.x + r, this.market.position.y + r} + }, + type = 'tree' + } + ) + ) do + entity.destroy() + end + + local turret_pos = + surface.find_non_colliding_position('gun-turret', {spawn_position_x, spawn_position_y - 5}, 50, 1) + local turret = surface.create_entity({name = 'gun-turret', position = turret_pos, force = 'player'}) + turret.insert({name = 'firearm-magazine', count = 32}) + + for x = -20, 20, 1 do + for y = -20, 20, 1 do + local market_pos = {x = this.market.position.x + x, y = this.market.position.y + y} + local distance_to_center = x ^ 2 + y ^ 2 + if distance_to_center > 64 and distance_to_center < 225 then + if + math_random(1, 3) == 1 and + surface.can_place_entity({name = 'wooden-chest', position = market_pos, force = 'player'}) + then + surface.create_entity({name = 'wooden-chest', position = market_pos, force = 'player'}) + end + end + end + end + + local area = {{x = -160, y = -96}, {x = 160, y = 96}} + for _, tile in pairs(surface.find_tiles_filtered({name = 'water', area = area})) do + if math_random(1, 32) == 1 then + surface.create_entity({name = 'fish', position = tile.position}) + end + end + + local character_pos = + surface.find_non_colliding_position('character', {spawn_position_x + 1, spawn_position_y}, 50, 1) + game.forces['player'].set_spawn_position(character_pos, surface) + for _, player in pairs(game.connected_players) do + local spawn_pos = + surface.find_non_colliding_position('character', {spawn_position_x + 1, spawn_position_y}, 50, 1) + player.teleport(spawn_pos, surface) + end + this.spawn_area_generated = true +end + +local function process_chunk(left_top) + local this = FDT.get() + local surface = game.surfaces[this.active_surface_index] + if not surface or not surface.valid then + return + end + local find_entities_filtered = surface.find_entities_filtered + + generate_spawn_area(this, surface, left_top) + enemy_territory(surface, left_top) + + for _, entity in pairs( + find_entities_filtered( + { + area = {{left_top.x - 32, left_top.y - 32}, {left_top.x + 32, left_top.y + 32}}, + type = {'tree', 'simple-entity', 'cliff'} + } + ) + ) do + if is_enemy_territory(surface, entity.position) then + entity.destroy() + end + end + + game.forces.player.chart(surface, {{left_top.x, left_top.y}, {left_top.x + 31, left_top.y + 31}}) + if this.market and this.market.valid then + this.game_reset = false + end +end + +local function on_chunk_generated(event) + local map_name = 'crab_defender' + + if string.sub(event.surface.name, 0, #map_name) ~= map_name then + return + end + + local left_top = event.area.left_top + Builder.make_chunk(event) + + process_chunk(left_top) +end + +Event.add(defines.events.on_chunk_generated, on_chunk_generated) diff --git a/maps/crab_defender/trapped_capsules.lua b/maps/crab_defender/trapped_capsules.lua new file mode 100644 index 00000000..3f79f83e --- /dev/null +++ b/maps/crab_defender/trapped_capsules.lua @@ -0,0 +1,61 @@ +local Event = require 'utils.event' +local FDT = require 'maps.crab_defender.table' + +local radius = 20 + +local whitelist = { + ['defender'] = 'explosive-cannon-projectile', + ['distractor'] = 'explosive-uranium-cannon-projectile', + ['destroyer'] = 'explosive-uranium-cannon-projectile' +} + +local function on_entity_died(event) + local trapped_capsules_unlocked = FDT.get('trapped_capsules_unlocked') + if not trapped_capsules_unlocked then + return + end + + if not event.entity.valid then + return + end + if not whitelist[event.entity.name] then + return + end + + local valid_targets = {} + local position = event.entity.position + + for _, e in pairs( + event.entity.surface.find_entities_filtered( + { + area = {{position.x - radius, position.y - radius}, {position.x + radius, position.y + radius}}, + force = 'enemy' + } + ) + ) do + if e.health then + local distance_from_center = math.sqrt((e.position.x - position.x) ^ 2 + (e.position.y - position.y) ^ 2) + if distance_from_center <= radius then + valid_targets[#valid_targets + 1] = e + end + end + end + + if not valid_targets[1] then + return + end + + event.entity.surface.create_entity( + { + name = whitelist[event.entity.name], + position = position, + force = 'player', + source = position, + target = valid_targets[math.random(1, #valid_targets)].position, + max_range = 20, + speed = 0.1 + } + ) +end + +Event.add(defines.events.on_entity_died, on_entity_died) diff --git a/maps/crab_defender/ultra_mines.lua b/maps/crab_defender/ultra_mines.lua new file mode 100644 index 00000000..332c6a9f --- /dev/null +++ b/maps/crab_defender/ultra_mines.lua @@ -0,0 +1,52 @@ +local Event = require 'utils.event' +local FDT = require 'maps.crab_defender.table' +local radius = 8 + +local function damage_entities_around_target(entity, damage) + for _, e in pairs( + entity.surface.find_entities_filtered( + { + area = { + {entity.position.x - radius, entity.position.y - radius}, + {entity.position.x + radius, entity.position.y + radius} + } + } + ) + ) do + if e.health then + if e.force.name ~= 'player' then + local distance_from_center = + math.sqrt((e.position.x - entity.position.x) ^ 2 + (e.position.y - entity.position.y) ^ 2) + if distance_from_center <= radius then + e.damage(damage, 'player', 'explosion') + end + end + end + end +end + +local function on_entity_died(event) + local ultra_mines_unlocked = FDT.get('ultra_mines_unlocked') + if not ultra_mines_unlocked then + return + end + if not event.entity.valid then + return + end + if event.entity.name ~= 'land-mine' then + return + end + + event.entity.surface.create_entity( + { + name = 'big-artillery-explosion', + position = event.entity.position + } + ) + + local damage = (1 + event.entity.force.get_ammo_damage_modifier('grenade')) * 250 + + damage_entities_around_target(event.entity, damage) +end + +Event.add(defines.events.on_entity_died, on_entity_died) diff --git a/maps/crab_defender/vehicle_nanobots.lua b/maps/crab_defender/vehicle_nanobots.lua new file mode 100644 index 00000000..ae92356a --- /dev/null +++ b/maps/crab_defender/vehicle_nanobots.lua @@ -0,0 +1,29 @@ +local Event = require 'utils.event' +local FDT = require 'maps.crab_defender.table' + +local function on_player_changed_position(event) + local vehicle_nanobots_unlocked = FDT.get('vehicle_nanobots_unlocked') + + if not vehicle_nanobots_unlocked then + return + end + local player = game.players[event.player_index] + if not player.character then + return + end + if not player.character.driving then + return + end + if not player.vehicle then + return + end + if not player.vehicle.valid then + return + end + if player.vehicle.health == player.vehicle.prototype.max_health then + return + end + player.vehicle.health = player.vehicle.health + player.vehicle.prototype.max_health * 0.005 +end + +Event.add(defines.events.on_player_changed_position, on_player_changed_position) diff --git a/maps/fish_defender_v2/b.lua b/maps/fish_defender_v2/b.lua new file mode 100644 index 00000000..7b51b6cf --- /dev/null +++ b/maps/fish_defender_v2/b.lua @@ -0,0 +1,221 @@ +local simplex_noise = require 'utils.simplex_noise'.d2 +-- local map_data = require 'maps.fish_defender_v2.fish_defender_layout' +local map_data = require 'maps.fish_defender_v2.cat_defender_layout_v2' + +local random = math.random +local abs = math.abs +local floor = math.floor +local scale = 1 + +local Public = {} + +local tile_map = { + [1] = false, + [2] = true, + [3] = 'concrete', + [4] = 'deepwater-green', + [5] = 'deepwater', + [6] = 'dirt-1', + [7] = 'dirt-2', + [8] = 'dirt-3', + [9] = 'dirt-4', + [10] = 'dirt-5', + [11] = 'dirt-6', + [12] = 'dirt-7', + [13] = 'dry-dirt', + [14] = 'grass-1', + [15] = 'grass-2', + [16] = 'grass-3', + [17] = 'grass-4', + [18] = 'hazard-concrete-left', + [19] = 'hazard-concrete-right', + [20] = 'lab-dark-1', + [21] = 'lab-dark-2', + [22] = 'lab-white', + [23] = 'out-of-map', + [24] = 'red-desert-0', + [25] = 'red-desert-1', + [26] = 'red-desert-2', + [27] = 'red-desert-3', + [28] = 'sand-1', + [29] = 'sand-2', + [30] = 'sand-3', + [31] = 'stone-path', + [32] = 'water-green', + [33] = 'water' +} + +local rock_raffle = { + 'sand-rock-big', + 'sand-rock-big', + 'rock-big', + 'rock-big', + 'rock-big', + 'rock-big', + 'rock-big', + 'rock-big', + 'rock-huge' +} + +local function decompress() + local decompressed = {} + local data = map_data.data + local height = map_data.height + local width = map_data.width + + for y = 1, height do + local row = data[y] + local u_row = {} + decompressed[y] = u_row + local x = 1 + for index = 1, #row, 2 do + local pixel = row[index] + local count = row[index + 1] + + for _ = 1, count do + u_row[x] = pixel + x = x + 1 + end + end + end + + return decompressed, width, height +end +local tile_data, width, height = decompress() + +local function get_pos(x, y) + -- the plus one is because lua tables are one based. + local half_width = floor(width / 2) + 1 + local half_height = floor(height / 2) + 1 + x = x / scale + y = y / scale + x = floor(x) + y = floor(y) + local x2 = x + half_width + local y2 = y + half_height + + if y2 > 0 and y2 <= height and x2 > 0 and x2 <= width then + return tile_map[tile_data[y2][x2]] + end +end + +local ores = {'coal', 'iron-ore', 'copper-ore', 'stone'} + +local function plankton_territory(position, seed, ent) + local noise = simplex_noise(position.x * 0.009, position.y * 0.009, seed) + local d = 196 + + if get_pos(position.x, position.y) then + return + end + + if + position.x + position.y > (d * -1) - (abs(noise) * d * 3) and + position.x > position.y - (d + (abs(noise) * d * 3)) + then + return 'out-of-map' + end + + local noise_2 = simplex_noise(position.x * 0.0075, position.y * 0.0075, seed + 10000) + --if noise_2 > 0.87 then surface.set_tiles({{name = "deepwater-green", position = position}}, true) return true end + if noise_2 > 0.87 then + return 'deepwater-green' + end + if noise_2 > 0.75 then + local i = floor(noise * 6) % 4 + 1 + --surface.set_tiles({{name = "grass-" .. i, position = position}}, true) + ent[#ent + 1] = {name = ores[i], position = position, amount = 1 + 2500 * abs(noise_2 * 3)} + return ('grass-' .. i) + end + if noise_2 < -0.76 then + local i = floor(noise * 6) % 4 + 1 + --surface.set_tiles({{name = "grass-" .. i, position = position}}, true) + if noise_2 < -0.86 then + ent[#ent + 1] = {name = 'uranium-ore', position = position, amount = 1 + 1000 * abs(noise_2 * 2)} + + return ('grass-' .. i) + end + if random(1, 3) ~= 1 then + ent[#ent + 1] = {name = rock_raffle[random(1, #rock_raffle)], position = position} + end + return ('grass-' .. i) + end + + if noise < 0.12 and noise > -0.12 then + local i = floor(noise * 32) % 4 + 1 + --surface.set_tiles({{name = "grass-" .. i, position = position}}, true) + if random(1, 5) == 1 then + ent[#ent + 1] = {name = rock_raffle[random(1, #rock_raffle)], position = position} + end + return ('grass-' .. i) + end + + --surface.set_tiles({{name = "water", position = position}}, true) + if random(1, 128) == 1 then + ent[#ent + 1] = {name = 'fish', position = position} + end + + return 'water' +end + +local function get_random_ore(position) + local noise = (position.x * 0.009) + local i = floor(noise * 6) % 4 + 1 + local ore = ores[i] + + return ore +end + +function Public.make_chunk(event) + local map_name = 'fish_defender' + + if string.sub(event.surface.name, 0, #map_name) ~= map_name then + return + end + + local surface = event.surface + + local x1 = event.area.left_top.x + local y1 = event.area.left_top.y + local x2 = event.area.right_bottom.x + local y2 = event.area.right_bottom.y + + local seed = game.surfaces[1].map_gen_settings.seed + + local noise = {} + local tiles = {} + local ent = {} + + for x = x1, x2 do + for y = y1, y2 do + local pos = {x = x, y = y} + local new = get_pos(x, y) + local ore = get_random_ore(pos) + + if new and type(new) == 'string' then + if new == 'lab-dark-2' then + ent[#ent + 1] = {name = ore, position = pos, amount = 2500} + else + tiles[#tiles + 1] = {name = new, position = pos} + end + else + local tile_to_set = plankton_territory(pos, seed, ent) + if tile_to_set then + noise[#noise + 1] = {name = tile_to_set, position = pos} + end + end + end + end + + surface.set_tiles(tiles, true) + surface.set_tiles(noise, true) + for i = 1, #ent do + if ent[i].amount then + surface.create_entity({name = ent[i].name, position = ent[i].position, amount = ent[i].amount}) + else + surface.create_entity({name = ent[i].name, position = ent[i].position}) + end + end +end + +return Public diff --git a/maps/fish_defender_v2/cat_defender_layout.lua b/maps/fish_defender_v2/cat_defender_layout.lua new file mode 100644 index 00000000..3daf8700 --- /dev/null +++ b/maps/fish_defender_v2/cat_defender_layout.lua @@ -0,0 +1,2054 @@ +return { +height = 2048, +width = 4096, +data = { + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,2441,4,2,23,1,2,110,4,2,1,1540,}, + {1,2441,4,2,23,1,2,110,23,1,4,2,1,1539,}, + {1,2442,4,1,23,1,2,110,23,1,4,3,1,1538,}, + {1,2442,4,1,23,1,2,111,23,2,4,2,1,1537,}, + {1,2441,4,2,23,1,2,113,23,1,4,1,1,1537,}, + {1,2436,4,6,23,1,2,114,23,1,4,6,1,1532,}, + {1,2435,4,2,23,5,2,116,23,5,4,2,1,1531,}, + {1,2435,4,2,23,1,2,125,23,1,4,2,1,1530,}, + {1,2417,4,19,23,1,2,127,23,1,4,18,1,1513,}, + {1,2416,4,3,23,17,2,128,23,18,4,3,1,1511,}, + {1,2416,4,1,23,1,2,164,23,1,4,2,1,1511,}, + {1,2415,4,2,23,1,2,165,23,1,4,1,1,1511,}, + {1,2415,4,2,2,166,23,1,4,1,1,1511,}, + {1,2415,4,2,2,166,23,1,4,1,1,1511,}, + {1,2415,4,1,23,1,2,166,23,1,4,2,1,1510,}, + {1,2413,4,3,23,1,2,166,23,2,4,2,1,1509,}, + {1,2412,4,2,23,2,2,169,23,1,4,2,1,1508,}, + {1,2412,4,2,23,1,2,171,23,1,4,1,1,1508,}, + {1,2400,4,13,23,1,2,173,23,1,4,15,1,1493,}, + {1,2399,4,3,23,11,2,174,23,15,4,2,1,1492,}, + {1,2399,4,2,23,1,2,200,23,1,4,2,1,1491,}, + {1,2399,4,1,23,1,2,201,23,1,4,2,1,1491,}, + {1,2399,4,1,23,1,2,202,4,2,1,1491,}, + {1,2399,4,1,23,1,2,202,4,2,1,1491,}, + {1,2399,4,1,23,1,2,202,23,1,4,1,1,1491,}, + {1,2399,4,1,23,1,2,202,23,1,4,3,1,1489,}, + {1,2399,4,1,23,1,2,203,23,2,4,2,1,1488,}, + {1,2394,4,1,1,4,4,1,23,1,2,205,23,1,4,2,1,1487,}, + {1,2390,4,10,23,1,2,205,23,1,4,7,1,1482,}, + {1,2389,4,3,23,8,2,207,23,5,4,2,1,1482,}, + {1,2389,4,2,23,1,2,220,23,1,4,1,1,1482,}, + {1,2389,4,2,2,222,23,1,4,2,1,1480,}, + {1,2389,4,2,2,223,23,1,4,2,1,1479,}, + {1,2389,4,2,2,224,23,1,4,1,1,1479,}, + {1,2389,4,2,2,225,23,1,4,2,1,1477,}, + {1,2389,4,2,2,225,23,2,4,2,1,1476,}, + {1,2389,4,2,2,227,23,1,4,2,1,1475,}, + {1,2382,4,8,23,1,2,228,23,1,4,2,1,1,4,5,1,1468,}, + {1,2380,4,9,23,2,2,228,23,2,4,9,1,1466,}, + {1,2380,4,1,23,2,2,4,23,1,2,234,23,2,2,3,23,2,4,1,1,1466,}, + {1,2379,4,2,23,1,2,246,23,1,4,2,1,1,4,1,1,1463,}, + {1,2379,4,2,23,1,2,247,23,1,4,6,1,1460,}, + {1,2379,4,2,23,1,2,248,23,5,4,2,1,1459,}, + {1,2379,4,2,23,1,2,253,23,1,4,1,1,1459,}, + {1,2379,4,2,23,1,2,253,23,1,4,1,1,1459,}, + {1,2379,4,2,23,1,2,253,23,1,4,1,1,1459,}, + {1,2379,4,2,23,1,2,253,23,1,4,1,1,1459,}, + {1,2379,4,2,23,1,2,253,23,1,4,3,1,1457,}, + {1,2379,4,2,23,1,2,254,23,1,4,3,1,1456,}, + {1,2379,4,2,23,1,2,255,23,2,4,1,1,1456,}, + {1,2379,4,2,23,1,2,256,23,1,4,6,1,1451,}, + {1,2379,4,2,23,1,2,257,23,1,4,6,1,1450,}, + {1,2379,4,2,23,1,2,75,23,57,2,127,23,4,4,2,1,1449,}, + {1,2379,4,2,23,1,2,74,23,1,4,57,23,1,2,130,23,1,4,1,1,1449,}, + {1,2379,4,2,23,1,2,73,23,1,4,2,1,55,4,2,23,1,2,129,23,1,4,1,1,1449,}, + {1,2380,4,1,23,1,2,65,23,8,4,3,1,55,4,3,23,8,2,121,23,1,4,1,1,1449,}, + {1,2379,4,2,23,1,2,64,23,1,4,10,1,58,4,9,23,1,2,120,23,1,4,1,1,1449,}, + {1,2378,4,2,23,1,2,65,23,1,4,1,1,75,4,1,23,1,2,120,23,1,4,1,1,1449,}, + {1,2377,4,2,23,1,2,64,23,2,4,2,1,75,4,1,23,1,2,120,23,1,4,1,1,1449,}, + {1,2376,4,2,23,1,2,64,23,1,4,3,1,76,4,1,23,1,2,120,23,1,4,1,1,1449,}, + {1,2375,4,2,23,1,2,65,23,1,4,1,1,78,4,1,23,1,2,120,23,1,4,6,1,1444,}, + {1,2374,4,2,23,1,2,46,23,1,2,17,23,2,4,2,1,78,4,2,23,2,2,6,23,1,2,112,23,2,4,5,1,1443,}, + {1,2373,4,2,23,1,2,45,23,1,4,22,1,80,4,12,23,1,2,113,23,2,4,1,1,1443,}, + {1,2373,4,1,23,2,2,44,23,1,4,22,1,82,4,12,23,1,2,113,23,1,4,2,1,1442,}, + {1,2373,4,2,23,1,2,43,23,1,4,2,1,114,4,2,23,1,2,113,23,1,4,3,1,1440,}, + {1,2374,4,2,23,1,2,24,23,18,4,2,1,116,4,2,23,11,2,103,23,2,4,1,1,1440,}, + {1,2375,4,2,23,1,2,22,23,1,4,19,1,118,4,12,23,1,2,103,23,1,4,2,1,1439,}, + {1,2376,4,2,23,1,2,21,23,1,4,1,1,147,4,2,23,1,2,103,23,1,4,1,1,1439,}, + {1,2377,4,2,23,1,2,18,23,2,4,2,1,147,4,3,23,1,2,102,23,1,4,1,1,1439,}, + {1,2378,4,2,23,1,2,17,23,1,4,2,1,149,4,3,23,1,2,101,23,1,4,1,1,1439,}, + {1,2379,4,2,23,1,2,15,23,1,4,1,1,153,4,2,23,1,2,100,23,1,4,1,1,1439,}, + {1,2379,4,2,23,1,2,13,23,2,4,2,1,154,4,2,23,1,2,99,4,2,1,1439,}, + {1,2380,4,1,23,1,2,12,23,2,4,2,1,155,4,3,23,1,2,98,4,2,1,1439,}, + {1,2379,4,2,23,1,2,12,23,1,4,1,1,159,4,2,23,1,2,97,23,1,4,2,1,1438,}, + {1,2379,4,2,23,2,2,9,23,2,4,2,1,160,4,2,23,1,2,96,23,2,4,2,1,1437,}, + {1,2380,4,15,1,161,4,9,23,2,2,90,23,1,4,2,1,1436,}, + {1,2381,4,13,1,164,4,8,23,1,2,91,23,1,4,2,1,1435,}, + {1,2566,4,1,23,1,2,90,23,2,4,2,1,1434,}, + {1,2566,4,2,23,2,2,90,23,1,4,2,1,1433,}, + {1,2567,4,2,23,1,2,91,23,1,4,2,1,1432,}, + {1,2569,4,1,23,1,2,91,23,1,4,2,1,1431,}, + {1,2569,4,1,23,1,2,92,23,1,4,2,1,1430,}, + {1,2569,4,1,23,1,2,93,23,1,4,1,1,1430,}, + {1,2569,4,1,23,1,2,93,23,1,4,2,1,1429,}, + {1,2569,4,2,23,4,2,90,4,2,1,1429,}, + {1,2569,4,6,23,2,2,87,23,1,4,2,1,1429,}, + {1,2572,4,1,1,1,4,2,23,1,2,88,23,1,4,2,1,1428,}, + {1,2575,4,2,23,1,2,87,23,2,4,2,1,1427,}, + {1,2576,4,2,23,2,2,87,23,1,4,2,1,1426,}, + {1,2577,4,2,23,1,2,88,23,1,4,3,1,1424,}, + {1,2578,4,2,2,88,23,1,4,7,1,1420,}, + {1,2578,4,2,2,90,23,4,4,2,1,1420,}, + {1,2578,4,2,2,94,23,1,4,1,1,1420,}, + {1,2578,4,2,23,1,2,93,23,1,4,1,1,1420,}, + {1,2579,4,2,23,8,2,85,23,1,4,1,1,1420,}, + {1,2579,4,10,23,1,2,84,23,1,4,1,1,1420,}, + {1,2588,4,2,23,1,2,83,23,1,4,1,1,1420,}, + {1,2588,4,2,23,2,2,82,23,1,4,1,1,1420,}, + {1,2589,4,3,23,1,2,81,23,1,4,1,1,1420,}, + {1,2591,4,2,23,1,2,80,23,1,4,1,1,1420,}, + {1,2592,4,1,23,2,2,79,23,1,4,1,1,1420,}, + {1,2592,4,3,23,1,2,78,23,1,4,1,1,1420,}, + {1,2593,4,3,23,1,2,77,23,1,4,2,1,1419,}, + {1,2595,4,1,23,2,2,77,23,1,4,3,1,1417,}, + {1,2595,4,3,23,1,2,77,23,1,4,2,1,1417,}, + {1,2596,4,3,23,1,2,77,23,1,4,2,1,1416,}, + {1,2598,4,1,23,1,2,77,23,1,4,2,1,1416,}, + {1,2598,4,1,23,1,2,78,4,2,1,1416,}, + {1,2598,4,1,23,1,2,78,4,2,1,1416,}, + {1,2598,4,1,23,1,2,78,23,1,4,2,1,1415,}, + {1,2598,4,1,23,1,2,78,23,2,4,2,1,1414,}, + {1,2598,4,1,23,1,2,80,23,1,4,2,1,1413,}, + {1,2598,4,1,23,1,2,81,23,1,4,2,1,1412,}, + {1,2598,4,2,23,1,2,80,23,2,4,2,1,1411,}, + {1,2598,4,3,23,1,2,81,23,1,4,2,1,1410,}, + {1,2600,4,2,23,1,2,81,23,1,4,2,1,1409,}, + {1,2601,4,2,23,1,2,81,23,1,4,3,1,1407,}, + {1,2602,4,2,23,5,2,77,23,1,4,2,1,1407,}, + {1,2602,4,7,23,1,2,77,23,1,4,1,1,1407,}, + {1,2607,4,2,23,1,2,77,23,1,4,2,1,1406,}, + {1,2608,4,1,23,1,2,77,23,1,4,2,1,1406,}, + {1,2608,4,1,23,1,2,77,23,1,4,2,1,1406,}, + {1,2608,4,1,23,1,2,77,23,1,4,2,1,1406,}, + {1,2608,4,2,23,1,2,76,23,1,4,2,1,1406,}, + {1,2609,4,2,23,2,2,74,23,1,4,2,1,1406,}, + {1,2610,4,2,23,1,2,74,23,1,4,2,1,1406,}, + {1,2611,4,2,23,1,2,73,23,1,4,2,1,1406,}, + {1,2612,4,2,23,1,2,72,23,1,4,1,1,1407,}, + {1,2613,4,2,23,1,2,71,23,1,4,2,1,1406,}, + {1,2614,4,2,23,1,2,71,23,1,4,3,1,1404,}, + {1,2615,4,2,23,2,2,70,23,1,4,2,1,1404,}, + {1,2616,4,2,23,1,2,71,23,1,4,2,1,1403,}, + {1,2617,4,2,23,1,2,71,23,1,4,6,1,1398,}, + {1,2617,4,2,23,1,2,72,23,4,4,3,1,1397,}, + {1,2618,4,1,23,1,2,76,23,2,4,1,1,1397,}, + {1,2617,4,2,23,1,2,77,23,1,4,1,1,1397,}, + {1,2618,4,2,23,1,2,76,23,1,4,1,1,1397,}, + {1,2618,4,3,23,1,2,75,23,1,4,1,1,1397,}, + {1,2620,4,2,23,1,2,74,23,1,4,1,1,1397,}, + {1,2621,4,1,23,1,2,74,23,1,4,1,1,1397,}, + {1,2621,4,1,23,1,2,74,23,1,4,1,1,1397,}, + {1,2621,4,1,23,1,2,74,23,1,4,1,1,1397,}, + {1,2621,4,1,23,1,2,74,23,1,4,1,1,1397,}, + {1,2621,4,1,23,1,2,74,23,1,4,1,1,1397,}, + {1,2621,4,1,23,1,2,74,23,1,4,1,1,1397,}, + {1,2621,4,1,23,1,2,74,23,1,4,1,1,1397,}, + {1,2621,4,1,23,1,2,74,23,1,4,1,1,1397,}, + {1,2621,4,1,23,1,2,74,23,1,4,1,1,1397,}, + {1,2621,4,1,23,1,2,74,23,1,4,1,1,1397,}, + {1,2621,4,1,23,1,2,74,23,1,4,1,1,1397,}, + {1,2621,4,1,23,1,2,74,23,1,4,1,1,1397,}, + {1,2621,4,1,23,1,2,74,23,1,4,1,1,1397,}, + {1,2621,4,1,23,2,2,73,23,1,4,1,1,1397,}, + {1,2621,4,3,23,1,2,72,23,1,4,1,1,1397,}, + {1,2622,4,3,23,1,2,71,23,1,4,1,1,1397,}, + {1,2624,4,2,23,1,2,70,23,1,4,1,1,1397,}, + {1,2625,4,2,23,1,2,69,23,1,4,1,1,1397,}, + {1,2625,4,3,23,1,2,68,23,1,4,1,1,1397,}, + {1,2627,4,2,2,68,23,1,4,3,1,1395,}, + {1,2627,4,2,2,69,23,2,4,2,1,1394,}, + {1,2627,4,2,2,71,23,1,4,1,1,1394,}, + {1,2627,4,2,23,1,2,70,23,1,4,6,1,1389,}, + {1,2627,4,2,23,2,2,70,23,4,4,3,1,1388,}, + {1,2628,4,3,23,1,2,74,23,1,4,2,1,1387,}, + {1,2629,4,3,23,1,2,74,23,1,4,1,1,1387,}, + {1,2630,4,2,23,1,2,74,23,1,4,1,1,1387,}, + {1,2631,4,1,23,1,2,74,23,1,4,1,1,1387,}, + {1,2630,4,2,23,1,2,74,23,1,4,1,1,1387,}, + {1,2630,4,2,23,1,2,74,23,1,4,1,1,1387,}, + {1,2630,4,2,23,1,2,74,23,1,4,1,1,1387,}, + {1,2630,4,2,23,1,2,74,23,1,4,1,1,1387,}, + {1,2630,4,2,23,1,2,74,23,1,4,1,1,1387,}, + {1,2631,4,1,23,1,2,74,23,1,4,1,1,1387,}, + {1,2631,4,1,23,1,2,74,23,1,4,1,1,1387,}, + {1,2631,4,1,23,1,2,74,23,1,4,1,1,1387,}, + {1,2631,4,1,23,1,2,74,23,1,4,1,1,1387,}, + {1,2631,4,1,23,1,2,74,23,1,4,1,1,1387,}, + {1,2631,4,1,23,1,2,74,23,1,4,1,1,1387,}, + {1,2631,4,1,23,1,2,74,23,1,4,1,1,1387,}, + {1,2631,4,1,23,1,2,74,23,1,4,1,1,1387,}, + {1,2631,4,1,23,1,2,74,23,1,4,1,1,1387,}, + {1,2631,4,1,23,1,2,74,23,1,4,1,1,1387,}, + {1,2631,4,1,23,1,2,74,23,1,4,1,1,1387,}, + {1,2631,4,1,23,1,2,74,23,1,4,1,1,1387,}, + {1,2631,4,1,23,1,2,74,23,1,4,1,1,1387,}, + {1,2631,4,1,23,1,2,74,23,1,4,1,1,1387,}, + {1,2631,4,1,23,1,2,74,23,1,4,1,1,1387,}, + {1,2631,4,1,23,1,2,74,23,1,4,1,1,1387,}, + {1,2631,4,1,23,1,2,74,23,1,4,1,1,1387,}, + {1,2631,4,1,23,1,2,74,23,1,4,1,1,1387,}, + {1,2631,4,1,23,1,2,74,23,1,4,1,1,1387,}, + {1,2631,4,1,23,1,2,74,23,1,4,1,1,1387,}, + {1,2631,4,1,23,1,2,74,23,1,4,1,1,1387,}, + {1,2631,4,1,23,1,2,74,23,1,4,1,1,1387,}, + {1,2631,4,1,23,1,2,74,23,1,4,1,1,1387,}, + {1,2631,4,1,23,1,2,74,23,1,4,1,1,1387,}, + {1,2631,4,1,23,1,2,74,23,1,4,1,1,1387,}, + {1,2631,4,1,23,1,2,74,23,1,4,1,1,1387,}, + {1,2631,4,1,23,1,2,74,23,1,4,1,1,1387,}, + {1,2631,4,1,23,1,2,74,23,1,4,1,1,1387,}, + {1,2631,4,1,23,1,2,74,23,1,4,1,1,1387,}, + {1,2631,4,1,23,1,2,74,23,1,4,1,1,1387,}, + {1,2631,4,1,23,1,2,74,23,1,4,1,1,1387,}, + {1,2631,4,1,23,1,2,74,23,1,4,2,1,1386,}, + {1,2631,4,1,23,1,2,74,23,2,4,2,1,1385,}, + {1,2631,4,1,23,1,2,76,23,1,4,2,1,1384,}, + {1,2631,4,1,23,1,2,77,23,1,4,1,1,1384,}, + {1,2631,4,1,23,1,2,77,23,1,4,1,1,1384,}, + {1,2631,4,1,23,1,2,77,23,1,4,1,1,1384,}, + {1,2631,4,1,23,1,2,77,23,1,4,1,1,1384,}, + {1,2631,4,1,23,1,2,77,23,1,4,3,1,1382,}, + {1,2631,4,1,23,1,2,78,23,1,4,3,1,1381,}, + {1,2631,4,1,23,1,2,79,23,2,4,1,1,1381,}, + {1,2631,4,1,23,1,2,80,23,1,4,3,1,1379,}, + {1,2631,4,1,23,1,2,81,23,1,4,2,1,1379,}, + {1,2631,4,1,23,1,2,84,1,1379,}, + {1,2631,4,1,23,1,2,84,1,1379,}, + {1,2631,4,1,23,1,2,84,1,1379,}, + {1,2631,4,1,23,1,2,84,1,1379,}, + {1,2631,4,1,23,1,2,84,1,1379,}, + {1,2631,4,1,23,1,2,84,1,1379,}, + {1,2631,4,1,23,1,2,84,1,1379,}, + {1,2631,4,1,23,1,2,84,1,1379,}, + {1,2631,4,1,23,1,2,84,1,1379,}, + {1,2631,4,1,23,1,2,84,1,1379,}, + {1,2631,4,1,23,1,2,84,1,1379,}, + {1,2631,4,1,23,1,2,84,1,1379,}, + {1,2631,4,1,23,1,2,84,1,1379,}, + {1,2631,4,1,23,1,2,84,1,1379,}, + {1,2631,4,1,23,1,2,84,1,1379,}, + {1,2631,4,1,23,1,2,84,1,1379,}, + {1,2631,4,1,23,1,2,84,1,1379,}, + {1,2631,4,1,23,1,2,84,1,1379,}, + {1,2631,4,1,23,1,2,84,1,1379,}, + {1,2631,4,1,23,1,2,84,1,1379,}, + {1,2631,4,1,23,1,2,84,1,1379,}, + {1,2630,4,2,23,1,2,84,1,1379,}, + {1,2631,4,1,23,1,2,84,1,1379,}, + {1,2631,4,1,23,1,2,84,1,1379,}, + {1,2631,4,1,23,1,2,84,1,1379,}, + {1,2631,4,1,23,1,2,84,1,1379,}, + {1,2631,4,1,23,1,2,84,1,1379,}, + {1,2631,4,1,23,1,2,84,1,1379,}, + {1,2631,4,1,23,1,2,84,1,1379,}, + {1,2039,2,3,1,588,4,2,23,1,2,84,1,1379,}, + {1,2039,2,6,1,73,4,1,1,8,2,25,1,478,4,2,23,1,2,84,1,1379,}, + {1,2039,2,16,1,65,2,38,1,472,4,2,23,1,2,84,1,1379,}, + {1,2039,2,17,1,62,2,41,1,471,4,2,23,1,2,84,1,1379,}, + {1,2039,2,4,1,2,2,13,1,56,2,16,1,19,2,14,1,467,4,2,23,1,2,84,1,1379,}, + {1,2039,2,5,1,1,2,15,1,46,4,1,1,3,2,18,1,3,4,1,1,20,2,14,1,464,4,2,23,1,2,84,1,1379,}, + {1,2041,2,3,1,3,4,1,1,8,2,5,1,49,2,7,1,42,2,8,1,464,4,1,23,1,2,84,1,1379,}, + {1,2041,2,4,1,12,2,5,1,44,2,10,1,20,2,8,1,18,2,8,1,461,4,1,23,1,2,84,1,1379,}, + {1,2042,2,4,1,11,2,6,1,41,2,10,1,13,2,25,1,10,2,10,1,458,4,2,2,85,1,1379,}, + {1,2042,2,4,1,13,2,5,1,40,2,4,1,18,2,27,1,14,2,5,1,456,4,3,23,1,2,85,1,1379,}, + {1,2044,2,3,1,12,4,1,2,5,1,36,2,7,1,9,2,42,1,9,2,7,1,453,4,1,23,2,2,86,1,1379,}, + {1,2044,2,4,1,13,2,6,1,33,2,7,1,9,2,45,1,8,2,7,1,451,4,2,23,1,2,87,1,1379,}, + {1,2045,2,4,1,13,2,5,1,32,2,5,1,11,2,8,1,31,2,8,1,10,2,5,1,445,4,6,23,1,2,88,1,1379,}, + {1,2045,2,4,1,14,2,5,1,29,2,5,1,8,2,11,1,35,2,10,1,7,2,6,1,442,4,2,23,5,2,89,1,1379,}, + {1,2046,2,3,1,15,2,5,1,27,2,6,4,1,1,6,2,10,1,39,2,9,1,7,2,6,1,441,4,1,23,1,2,94,1,1379,}, + {1,2047,2,2,1,16,2,5,1,25,2,4,1,10,2,5,1,48,2,5,1,9,2,5,1,440,4,1,23,1,2,94,1,1379,}, + {1,2047,2,4,1,6,2,4,1,5,2,5,1,23,2,5,1,6,2,8,1,50,2,8,1,6,2,5,1,439,4,1,23,1,2,94,1,1379,}, + {1,2048,2,4,1,5,2,6,1,4,2,5,1,21,2,5,1,6,2,8,1,52,2,8,1,5,2,7,1,437,4,1,23,1,2,94,1,1379,}, + {1,2046,4,1,1,1,2,4,1,4,2,7,1,5,2,5,1,19,2,4,1,7,2,5,1,60,2,4,1,7,2,5,1,437,4,1,23,1,2,94,1,1379,}, + {1,2049,2,3,1,5,2,7,1,5,2,4,1,18,2,5,1,5,2,6,1,61,2,6,1,6,2,6,1,435,4,1,23,1,2,94,1,1379,}, + {1,2050,2,3,1,4,2,7,1,6,2,5,1,16,2,4,1,5,2,6,1,63,2,6,1,6,2,6,1,434,4,1,23,1,2,94,1,1379,}, + {1,2050,2,4,1,5,2,6,1,6,2,4,1,16,2,2,1,7,2,4,1,68,2,3,1,2,4,1,1,5,2,4,1,434,4,1,23,1,2,94,1,1379,}, + {1,2050,2,5,1,4,2,8,1,4,2,5,1,13,2,4,1,5,2,5,1,70,2,5,4,1,1,5,2,5,1,432,4,1,23,1,2,94,1,1379,}, + {1,2051,2,4,1,4,2,8,1,5,2,5,1,12,2,4,1,4,2,5,1,71,2,5,1,7,2,5,1,431,4,1,23,1,2,94,1,1379,}, + {1,2051,2,4,1,4,2,4,1,2,2,2,1,7,2,4,1,10,2,5,1,4,2,4,1,57,4,1,1,17,2,3,1,7,2,4,1,431,4,1,23,1,2,94,1,1379,}, + {1,2051,2,4,1,4,2,5,1,1,2,4,1,5,2,5,1,9,2,4,1,4,2,4,1,66,4,1,1,9,2,5,1,5,2,6,1,429,4,1,23,1,2,94,1,1379,}, + {1,2053,2,2,1,4,2,5,1,1,2,5,1,5,2,4,1,9,2,3,1,4,2,4,1,58,2,3,1,11,4,1,1,5,2,4,1,7,2,4,1,429,4,1,23,1,2,94,1,1379,}, + {1,2053,2,2,1,4,2,5,1,3,2,3,1,7,2,3,1,8,2,2,1,5,2,4,1,56,2,7,1,17,2,3,1,6,2,5,1,428,4,1,23,1,2,94,1,1379,}, + {1,2053,2,3,1,4,2,4,1,3,2,5,1,5,2,4,1,6,2,3,1,4,2,5,1,47,2,20,1,13,2,5,1,5,2,5,1,427,4,1,23,1,2,94,1,1379,}, + {1,2053,2,4,1,3,2,4,1,4,2,4,1,6,2,4,1,4,2,4,1,4,2,3,1,48,2,21,4,1,1,13,2,4,1,6,2,5,1,426,4,1,23,1,2,94,1,1379,}, + {1,2053,2,4,1,4,2,3,1,5,2,4,1,7,2,3,1,3,2,4,1,4,2,2,1,48,2,7,1,11,2,5,1,15,2,3,1,6,2,5,4,1,1,424,4,1,23,1,2,94,1,1379,}, + {1,2053,2,5,1,4,2,2,1,5,2,6,1,5,2,4,1,2,2,4,1,2,2,4,1,44,4,1,2,10,1,12,2,6,1,13,2,5,1,4,2,5,1,425,4,1,23,1,2,94,1,1379,}, + {1,2053,2,5,1,4,2,2,1,7,2,4,1,5,2,5,1,1,2,4,1,2,2,4,1,43,2,8,1,17,2,5,1,14,2,4,1,6,2,4,1,424,4,1,23,1,2,94,1,1379,}, + {1,2054,2,4,1,4,2,2,1,3,4,1,1,3,2,5,1,6,2,8,1,1,2,4,1,44,2,4,1,24,2,3,1,15,2,2,1,7,2,4,1,423,4,1,23,1,2,94,1,1379,}, + {1,2054,2,4,1,4,2,3,1,7,2,5,1,5,2,8,1,1,2,4,1,43,2,5,1,12,4,1,1,3,2,3,1,5,2,5,1,10,4,1,1,2,2,4,1,5,2,5,1,422,4,1,23,1,2,94,1,1379,}, + {1,2054,2,4,1,4,2,3,1,8,2,5,1,5,2,11,1,44,2,5,1,14,2,6,1,5,2,4,4,1,1,12,2,5,1,5,2,4,1,422,4,1,23,1,2,94,1,1379,}, + {1,2054,2,4,1,4,2,4,1,8,2,5,1,5,2,9,1,45,2,4,1,15,2,7,1,6,2,3,1,14,2,3,1,7,2,2,1,422,4,1,23,1,2,94,1,1379,}, + {1,2054,2,4,1,4,2,4,1,8,2,6,1,5,2,8,1,45,2,5,1,13,2,9,1,5,2,5,1,13,2,4,1,5,2,4,1,420,4,1,23,1,2,94,1,1379,}, + {1,2055,2,3,1,4,2,4,1,10,2,5,1,7,2,5,1,45,2,5,1,13,2,10,1,5,2,4,1,6,4,1,1,6,2,5,1,4,2,4,1,2,4,1,1,415,4,2,23,2,2,94,1,1379,}, + {1,2055,2,3,1,4,2,4,1,11,2,5,1,7,2,4,1,2,4,1,1,42,2,5,1,13,2,10,1,6,2,4,1,13,2,4,1,4,2,5,1,416,4,2,23,1,2,94,23,2,1,1379,}, + {1,2055,2,3,1,4,2,4,1,11,2,6,1,6,2,4,1,46,2,8,1,10,2,9,1,7,2,4,1,12,2,5,1,4,2,4,1,415,4,2,23,1,2,94,23,1,4,2,1,1379,}, + {1,2056,2,2,1,4,2,4,1,13,2,5,1,5,2,4,1,46,2,9,1,12,2,5,1,8,2,5,1,1,4,1,1,11,2,4,1,4,2,4,1,414,4,2,23,1,2,93,23,1,4,3,1,1379,}, + {1,2056,2,2,1,4,2,4,1,14,2,5,1,4,2,4,1,46,4,1,1,1,2,11,1,15,4,1,1,6,2,4,1,13,2,4,1,5,2,4,1,413,4,2,23,1,2,92,23,1,4,2,1,1381,}, + {1,2053,4,1,1,2,2,2,1,4,2,4,1,14,2,14,1,48,2,14,1,18,2,5,1,12,2,5,1,4,2,4,1,413,4,2,23,1,2,91,23,1,4,2,1,1382,}, + {1,2056,2,2,1,4,2,4,1,16,2,12,1,53,2,10,1,19,2,3,1,14,2,3,1,4,2,4,1,409,4,6,2,91,23,1,4,2,1,1383,}, + {1,2056,2,2,1,4,2,4,1,18,2,10,1,56,2,11,1,15,2,3,1,15,2,3,1,4,2,4,1,406,4,6,23,2,2,90,23,1,4,2,1,1384,}, + {1,2056,2,2,1,4,2,4,1,19,2,8,1,58,2,13,1,12,2,3,1,1,4,1,1,13,2,4,1,2,4,1,1,1,2,3,1,406,4,2,23,1,2,94,23,1,4,2,1,1385,}, + {1,2056,2,2,1,4,2,4,1,90,2,9,1,10,2,3,1,17,2,4,1,3,2,3,1,406,4,1,23,1,2,94,23,1,4,2,1,1386,}, + {1,2056,2,2,1,4,2,4,1,93,2,19,1,18,2,4,1,3,2,3,1,405,4,1,23,1,2,94,23,1,4,1,1,1387,}, + {1,2056,2,2,1,4,2,4,1,94,2,18,1,19,2,4,1,2,2,4,1,404,4,1,23,1,2,94,23,1,4,1,1,1387,}, + {1,2055,2,3,1,4,2,4,1,101,2,10,1,20,2,5,1,1,2,4,1,404,4,1,23,1,2,94,23,1,4,1,1,1387,}, + {1,2055,2,3,1,4,2,4,1,103,2,6,1,23,2,9,1,404,4,1,23,1,2,94,23,1,4,1,1,1387,}, + {1,2055,2,3,1,4,2,4,1,105,2,3,1,25,2,8,1,404,4,1,23,1,2,94,23,1,4,1,1,1387,}, + {1,2054,2,4,1,4,2,4,1,134,2,7,1,404,4,1,23,1,2,94,23,1,4,1,1,1387,}, + {1,2054,2,4,1,4,2,4,1,134,2,7,1,404,4,1,23,1,2,94,23,1,4,1,1,1387,}, + {1,2054,2,4,1,4,2,3,1,135,2,8,1,403,4,1,23,1,2,94,23,1,4,1,1,1387,}, + {1,2050,4,1,1,3,2,4,1,4,2,3,1,135,2,8,1,403,4,1,23,1,2,94,23,1,4,1,1,1387,}, + {1,2054,2,4,1,4,2,2,1,78,2,2,1,50,4,1,1,4,2,9,1,403,4,1,23,1,2,94,23,1,4,1,1,1387,}, + {1,2054,2,4,1,4,2,2,1,75,2,7,1,52,2,10,1,403,4,1,23,1,2,94,23,1,4,1,1,1387,}, + {1,2054,2,4,1,4,2,2,1,75,2,8,1,50,2,4,1,3,2,3,1,404,4,1,23,1,2,94,23,1,4,1,1,1387,}, + {1,2053,2,5,1,4,2,2,1,75,2,12,1,45,2,5,1,3,2,3,1,403,4,2,23,1,2,94,23,1,4,1,1,1387,}, + {1,2053,2,5,1,4,2,2,1,75,2,13,1,43,2,5,1,3,2,4,1,402,4,2,23,2,2,94,23,1,4,1,1,1387,}, + {1,2053,2,5,1,3,2,3,1,76,2,3,1,5,2,5,1,41,2,4,1,5,2,4,1,401,4,2,23,1,2,96,23,1,4,1,1,1387,}, + {1,2053,2,4,1,3,2,4,1,75,4,1,1,1,2,2,1,6,2,8,1,36,2,5,1,5,2,4,1,401,4,1,23,1,2,97,23,1,4,1,1,1387,}, + {1,2053,2,3,1,4,2,4,1,77,2,4,1,6,2,7,1,30,4,1,1,2,2,6,1,6,2,4,1,401,4,1,23,1,2,97,23,1,4,1,1,1387,}, + {1,2053,2,2,1,5,2,4,1,77,2,4,1,7,4,1,2,6,1,32,2,4,1,8,2,2,1,403,4,1,23,1,2,97,23,1,4,1,1,1387,}, + {1,2053,2,2,1,4,2,5,1,77,2,6,1,3,4,1,1,3,2,11,1,22,2,8,1,7,2,3,1,403,4,1,23,1,2,97,23,1,4,1,1,1387,}, + {1,2053,2,2,1,4,2,5,1,78,2,6,1,8,2,11,1,18,2,8,1,8,2,4,1,403,4,1,23,1,2,97,23,1,4,1,1,1387,}, + {1,2053,2,2,1,4,2,5,1,80,2,5,1,12,2,9,1,12,2,8,1,10,2,4,1,404,4,1,23,1,2,97,23,1,4,1,1,1387,}, + {1,2052,2,3,1,4,2,4,1,82,2,7,1,10,2,27,1,11,2,4,1,404,4,1,23,1,2,97,23,1,4,1,1,1387,}, + {1,2051,2,4,1,4,2,4,1,83,2,7,1,11,2,23,1,13,2,4,1,404,4,1,23,1,2,97,23,1,4,1,1,1387,}, + {1,2051,2,4,1,4,2,3,1,87,2,5,1,46,2,4,1,404,4,1,23,1,2,97,23,1,4,1,1,1387,}, + {1,2051,2,4,1,4,2,2,1,89,2,9,1,34,2,1,1,6,2,4,1,404,4,1,23,1,2,97,23,1,4,1,1,1387,}, + {1,2050,2,5,1,4,2,2,1,90,2,9,1,32,2,3,1,1,4,1,1,3,2,4,1,403,4,2,23,1,2,97,23,1,4,1,1,1387,}, + {1,2050,2,5,1,4,2,2,1,94,2,6,1,30,2,4,1,5,2,3,1,399,4,6,23,1,2,98,23,1,4,1,1,1387,}, + {1,2050,2,4,1,4,2,3,1,95,2,39,1,5,2,3,1,398,4,2,23,5,2,99,23,1,4,1,1,1387,}, + {1,2050,2,3,1,4,2,4,1,97,2,37,1,5,2,2,1,399,4,2,23,1,2,103,23,1,4,1,1,1387,}, + {1,2050,2,2,1,5,2,4,1,103,2,23,1,4,2,4,1,5,2,2,1,397,4,3,23,1,2,104,23,1,4,1,1,1387,}, + {1,2049,2,3,1,4,2,5,1,105,2,20,1,5,2,4,1,4,2,3,1,396,4,2,23,2,2,105,23,1,4,1,1,1387,}, + {1,2048,2,4,1,4,2,4,1,130,2,3,1,5,2,4,1,396,4,2,23,1,2,106,23,1,4,1,1,1387,}, + {1,2048,2,4,1,4,2,4,1,129,2,4,1,4,2,4,1,397,4,1,23,1,2,107,23,1,4,1,1,1387,}, + {1,2048,2,4,1,4,2,3,1,130,2,4,1,4,2,4,1,397,4,1,23,1,2,107,23,1,4,1,1,1387,}, + {1,2047,2,5,1,4,2,2,1,130,2,4,1,5,2,4,1,397,4,1,23,1,2,107,23,1,4,1,1,1387,}, + {1,2047,2,4,1,5,2,2,1,130,2,4,1,4,4,1,2,3,1,398,4,1,23,1,2,107,23,1,4,1,1,1387,}, + {1,2047,2,3,1,4,2,4,1,17,2,12,1,101,2,3,1,5,2,3,1,399,4,1,23,1,2,107,23,1,4,1,1,1387,}, + {1,2047,2,3,1,4,2,4,1,16,2,13,1,97,4,1,1,3,2,2,1,5,2,4,1,399,4,1,23,1,2,107,23,1,4,1,1,1387,}, + {1,1505,4,4,1,537,2,3,1,4,2,5,1,13,2,16,1,99,2,4,1,4,2,5,1,399,4,1,23,1,2,107,23,1,4,1,1,1387,}, + {1,1484,4,28,1,533,2,4,1,4,2,5,1,11,2,18,1,98,2,5,1,4,2,4,1,400,4,1,23,1,2,107,23,1,4,1,1,1387,}, + {1,1483,4,2,23,25,4,2,1,533,2,4,1,4,2,4,1,11,2,5,1,9,2,5,1,98,2,4,1,5,2,4,1,400,4,1,23,1,2,107,23,1,4,1,1,1387,}, + {1,1483,4,2,23,1,2,24,23,1,4,2,1,532,2,4,1,4,2,3,1,9,2,7,1,10,2,5,1,98,2,3,1,6,2,2,1,402,4,1,23,1,2,107,23,1,4,1,1,1387,}, + {1,1481,4,3,23,1,2,26,23,1,4,2,1,530,2,4,1,5,2,3,1,7,2,9,1,6,4,1,1,3,2,4,1,98,2,3,1,6,2,3,1,402,4,1,23,1,2,107,23,1,4,1,1,1387,}, + {1,1480,4,3,23,1,2,28,23,1,4,2,1,529,2,3,1,5,2,3,1,7,2,5,1,11,2,8,1,97,2,4,1,5,2,4,1,402,4,1,23,1,2,107,23,1,4,1,1,1387,}, + {1,1480,4,1,23,2,2,30,23,1,4,2,1,528,2,2,1,5,2,4,1,5,2,7,1,8,2,12,1,96,2,4,1,4,2,5,1,402,4,1,23,1,2,107,23,1,4,1,1,1387,}, + {1,1480,4,1,23,1,2,32,23,1,4,2,1,526,2,3,1,5,2,4,1,3,2,8,1,7,2,14,1,95,2,4,1,5,2,4,1,403,4,1,23,1,2,107,23,1,4,1,1,1387,}, + {1,1480,4,1,23,1,2,33,23,1,4,2,1,524,2,4,1,4,2,5,1,2,2,6,1,9,2,6,1,2,2,4,1,1,2,3,1,94,2,2,1,7,2,3,1,404,4,1,23,1,2,106,23,1,4,2,1,1387,}, + {1,1480,4,1,23,1,2,34,23,1,4,2,1,523,2,4,1,4,2,11,1,8,2,8,1,3,2,4,1,2,2,3,1,92,2,3,1,6,2,3,1,405,4,1,23,1,2,104,23,2,4,2,1,1388,}, + {1,1476,4,1,1,1,4,3,23,1,2,35,23,1,4,1,1,522,2,4,1,5,2,11,1,7,2,8,1,4,2,4,1,2,2,4,1,90,2,4,1,5,2,4,1,404,4,2,23,1,2,104,23,1,4,1,1,1390,}, + {1,1474,4,6,23,1,2,36,23,1,4,1,1,522,2,3,1,6,2,8,1,10,2,4,1,9,2,3,1,3,2,3,1,89,2,5,1,4,2,5,1,403,4,2,23,1,2,104,23,1,4,2,1,1390,}, + {1,1473,4,2,23,4,2,38,23,1,4,1,1,522,2,3,1,5,2,9,1,6,2,7,1,10,4,1,2,2,1,3,2,5,1,87,2,4,1,5,2,4,1,403,4,2,23,1,2,103,23,2,4,2,1,1391,}, + {1,1473,4,2,23,1,2,41,23,1,4,1,1,520,2,4,1,5,2,9,1,6,2,7,1,12,2,3,1,3,2,5,1,85,2,4,1,6,2,3,1,403,4,2,23,1,2,103,23,1,4,3,1,1392,}, + {1,1318,4,5,1,150,4,2,2,42,23,1,4,1,1,520,2,4,1,5,2,7,1,7,2,5,1,15,2,3,1,3,4,1,2,4,1,85,2,3,1,7,2,2,1,403,4,2,23,1,2,104,23,1,4,2,1,1393,}, + {1,1317,4,2,23,2,4,2,1,150,4,2,2,42,23,1,4,1,1,520,2,4,1,5,2,6,1,2,4,1,1,3,2,6,1,16,2,4,1,4,2,5,1,81,2,5,1,5,2,4,1,402,4,2,23,1,2,103,23,2,4,2,1,1394,}, + {1,1317,4,1,23,1,2,2,23,1,4,1,1,150,4,1,23,1,2,42,23,1,4,1,1,519,2,4,1,6,2,4,1,7,2,6,1,18,2,4,1,4,2,5,1,80,2,4,1,5,2,5,1,401,4,2,23,1,2,103,23,1,4,3,1,1395,}, + {1,1317,4,1,23,1,2,2,23,1,4,1,1,149,4,2,23,1,2,42,23,1,4,3,1,517,2,3,1,18,2,3,1,21,2,4,1,5,2,4,1,80,2,2,1,7,2,3,1,402,4,2,23,1,2,104,23,1,4,1,1,1397,}, + {1,1317,4,1,23,1,2,2,23,1,4,1,1,148,4,2,23,1,2,44,23,2,4,2,1,515,2,4,1,15,2,5,1,23,2,4,1,5,2,5,1,76,2,4,1,6,2,3,1,402,4,2,23,1,2,105,23,1,4,1,1,1397,}, + {1,1317,4,1,23,1,2,2,23,1,4,2,1,146,4,2,23,1,2,46,23,2,4,1,1,514,2,4,1,14,2,7,1,24,2,4,1,5,2,5,1,75,2,4,1,5,2,4,1,401,4,2,23,1,2,106,23,1,4,1,1,1397,}, + {1,1317,4,1,23,1,2,3,23,1,4,2,1,140,4,6,23,1,2,48,23,1,4,2,1,513,2,4,1,14,2,4,1,27,2,4,1,6,2,4,1,74,2,4,1,5,2,5,1,401,4,1,23,1,2,107,23,1,4,1,1,1397,}, + {1,1317,4,1,23,1,2,3,23,2,4,2,1,138,4,4,23,3,2,50,23,1,4,3,1,510,2,5,1,12,2,6,1,28,2,4,1,6,2,6,1,70,2,4,1,6,2,4,1,402,4,1,23,1,2,107,23,1,4,1,1,1397,}, + {1,1317,4,1,23,1,2,5,23,1,4,2,1,137,4,1,23,2,2,55,23,2,4,1,1,510,2,3,1,13,2,6,1,30,2,4,1,6,2,5,1,69,2,4,1,6,2,4,1,403,4,1,23,1,2,107,23,1,4,1,1,1397,}, + {1,1317,4,1,23,1,2,5,23,1,4,2,1,136,4,2,23,1,2,57,23,1,4,2,1,508,2,4,1,12,2,5,1,33,2,4,1,8,2,3,1,67,2,5,1,5,2,4,1,404,4,1,23,1,2,107,23,1,4,1,1,1397,}, + {1,1317,4,1,23,1,2,6,23,2,4,6,1,128,4,3,23,1,2,59,23,1,4,3,1,505,2,4,1,2,4,1,1,9,2,6,1,34,2,4,1,7,2,6,1,63,2,5,1,5,2,5,1,404,4,1,23,1,2,107,23,1,4,1,1,1397,}, + {1,1317,4,1,23,1,2,8,23,4,4,2,1,127,4,2,23,2,2,61,23,2,4,1,1,505,2,4,1,11,2,5,1,36,2,5,1,7,2,6,1,61,2,5,1,6,2,4,1,405,4,1,23,1,2,107,23,1,4,1,1,1397,}, + {1,1317,4,1,23,1,2,12,23,1,4,1,1,127,4,2,23,1,2,63,23,1,4,2,1,503,2,3,1,13,2,4,1,39,2,4,1,8,2,5,1,59,2,5,1,6,2,3,1,407,4,1,23,1,2,107,23,1,4,1,1,1397,}, + {1,1317,4,1,23,1,2,12,23,1,4,1,1,127,4,2,2,65,23,1,4,1,1,502,2,4,1,12,2,5,1,40,2,5,1,7,2,8,1,53,2,6,1,6,2,4,1,407,4,1,23,1,2,107,23,1,4,1,1,1397,}, + {1,1317,4,1,23,1,2,12,23,1,4,1,1,127,4,2,2,65,23,1,4,1,1,501,2,5,1,11,2,4,1,43,2,5,1,8,2,7,1,52,2,5,1,6,2,4,1,408,4,1,23,1,2,107,23,1,4,1,1,1397,}, + {1,1317,4,1,23,1,2,12,23,1,4,1,1,127,4,1,23,1,2,65,23,1,4,1,1,501,2,4,1,11,2,4,1,46,2,4,1,10,2,5,1,50,2,5,1,7,2,2,1,410,4,1,23,1,2,107,23,1,4,1,1,1397,}, + {1,1317,4,1,23,1,2,12,23,1,4,1,1,126,4,2,23,1,2,65,23,1,4,1,1,500,2,5,1,10,2,5,1,46,2,6,1,8,2,9,1,43,2,7,1,6,2,4,1,410,4,1,23,1,2,107,23,1,4,1,1,1397,}, + {1,1317,4,1,23,1,2,12,23,1,4,2,1,124,4,2,23,1,2,66,23,1,4,1,1,500,2,3,1,12,2,4,1,49,2,5,1,10,2,8,1,40,2,6,1,7,2,4,1,411,4,1,23,1,2,107,23,1,4,1,1,1397,}, + {1,1317,4,1,23,1,2,12,23,1,4,1,1,124,4,2,23,1,2,67,23,1,4,1,1,499,2,4,1,3,4,1,1,7,2,4,1,52,2,5,1,11,2,7,1,37,2,5,1,8,2,4,1,412,4,1,23,1,2,107,23,1,4,1,1,1397,}, + {1,1317,4,1,23,1,2,12,23,1,4,1,1,119,4,6,23,1,2,68,23,1,4,1,1,498,2,5,1,10,2,4,1,54,2,7,1,9,2,12,1,27,2,8,1,7,2,5,1,413,4,1,23,1,2,107,23,1,4,1,1,1397,}, + {1,1317,4,1,23,1,2,12,23,1,4,1,1,118,4,5,23,2,2,69,23,1,4,1,1,498,2,4,1,11,2,4,1,55,2,6,1,12,2,11,1,24,2,7,1,8,2,5,1,414,4,2,2,107,23,1,4,1,1,1397,}, + {1,1317,4,1,23,1,2,12,23,1,4,1,1,118,4,1,23,2,2,73,23,1,4,1,1,498,2,4,1,10,2,3,1,60,2,4,1,14,2,13,4,1,1,14,2,9,1,9,2,4,1,416,4,1,23,1,2,107,23,1,4,1,1,1397,}, + {1,1317,4,1,23,1,2,12,23,1,4,1,1,117,4,2,23,1,2,74,23,1,4,1,1,497,2,4,1,9,2,5,1,60,2,9,1,11,2,34,1,8,2,6,1,416,4,1,23,1,2,107,23,1,4,1,1,1397,}, + {1,1317,4,1,23,1,2,12,23,1,4,1,1,117,4,2,23,1,2,74,23,1,4,1,1,497,2,3,1,5,4,1,1,4,2,4,1,53,4,1,1,10,2,7,1,17,2,22,1,12,2,5,1,416,4,2,23,2,2,107,23,1,4,1,1,1397,}, + {1,1317,4,1,23,1,2,12,23,1,4,1,1,117,4,2,23,1,2,74,23,1,4,1,1,496,2,4,1,8,4,1,2,4,1,67,2,8,1,7,4,1,1,12,2,12,1,15,2,5,1,416,4,2,23,1,2,109,23,1,4,1,1,1397,}, + {1,1317,4,1,23,1,2,12,23,1,4,1,1,117,4,2,2,75,23,1,4,1,1,495,2,5,1,7,2,5,1,69,2,11,1,19,2,7,1,13,2,8,1,417,4,1,23,1,2,110,23,1,4,1,1,1397,}, + {1,1317,4,1,23,1,2,12,23,2,4,2,1,114,4,2,23,1,2,75,23,1,4,1,1,495,2,4,1,8,2,4,1,74,2,8,1,37,2,7,1,417,4,2,23,2,2,110,23,1,4,1,1,1397,}, + {1,1317,4,1,23,1,2,13,23,2,4,2,1,112,4,2,23,1,2,76,23,1,4,1,1,495,2,3,1,7,2,5,1,77,2,11,1,30,2,7,1,418,4,2,23,2,2,111,23,1,4,1,1,1397,}, + {1,1317,4,1,23,1,2,15,23,1,4,2,1,110,4,2,23,1,2,77,23,1,4,1,1,494,2,3,1,5,2,7,1,80,2,19,1,13,2,13,1,419,4,1,23,1,2,113,23,1,4,1,1,1397,}, + {1,1317,4,1,23,1,2,16,23,1,4,6,1,100,4,6,23,1,2,78,23,1,4,1,1,493,2,4,1,4,2,7,1,86,2,16,1,9,2,11,1,421,4,3,23,1,2,113,23,1,4,1,1,1397,}, + {1,1317,4,2,23,1,2,15,23,5,4,3,1,98,4,3,23,4,2,79,23,1,4,1,1,493,2,13,1,92,2,30,1,422,4,2,23,2,2,114,23,1,4,1,1,1397,}, + {1,1318,4,2,23,2,2,18,23,1,4,2,1,98,4,1,23,2,2,83,23,1,4,1,1,494,2,11,1,95,2,27,1,2,4,1,1,419,4,2,23,1,2,116,23,1,4,1,1,1397,}, + {1,1319,4,2,23,1,2,19,23,1,4,1,1,98,4,1,23,1,2,84,23,1,4,1,1,1049,4,2,23,1,2,116,23,1,4,1,1,1397,}, + {1,1320,4,2,23,1,2,18,23,1,4,1,1,98,4,1,23,1,2,84,23,1,4,1,1,1049,4,2,2,116,23,1,4,2,1,1397,}, + {1,1321,4,2,23,2,2,16,23,1,4,1,1,98,4,1,23,1,2,84,23,1,4,1,1,1049,4,2,2,114,23,2,4,3,1,1397,}, + {1,1323,4,1,23,1,2,16,23,1,4,1,1,97,4,2,23,1,2,84,23,1,4,1,1,1049,4,2,2,114,23,1,4,2,1,1399,}, + {1,1324,4,1,23,1,2,15,23,1,4,1,1,96,4,2,23,1,2,85,23,1,4,1,1,1049,4,2,23,1,2,112,23,1,4,2,1,1400,}, + {1,1324,4,2,23,2,2,13,23,1,4,1,1,95,4,2,23,1,2,86,23,1,4,1,1,1049,4,2,23,1,2,111,23,1,4,2,1,1401,}, + {1,1325,4,2,23,1,2,13,23,1,4,1,1,94,4,2,23,1,2,87,23,1,4,1,1,1049,4,2,2,111,23,1,4,2,1,1402,}, + {1,1326,4,2,23,1,2,12,23,1,4,1,1,89,4,6,23,1,2,88,23,1,4,1,1,1049,4,2,2,110,23,1,4,2,1,1403,}, + {1,1327,4,1,23,1,2,12,23,1,4,1,1,88,4,2,23,5,2,89,23,1,4,1,1,1049,4,2,2,109,23,1,4,2,1,1404,}, + {1,1326,4,2,23,1,2,12,23,1,4,1,1,88,4,1,23,1,2,94,23,1,4,1,1,1049,4,2,2,108,23,1,4,2,1,1405,}, + {1,1326,4,2,23,1,2,12,23,1,4,1,1,88,4,1,23,1,2,94,23,1,4,1,1,1049,4,2,23,1,2,106,23,1,4,2,1,1406,}, + {1,1326,4,2,23,1,2,12,23,1,4,1,1,88,4,1,23,1,2,94,23,1,4,1,1,1050,4,1,23,1,2,106,23,1,4,1,1,1407,}, + {1,1326,4,2,23,1,2,12,23,1,4,1,1,88,4,1,23,1,2,94,23,1,4,1,1,1049,4,2,23,1,2,106,23,1,4,1,1,1407,}, + {1,1326,4,2,23,1,2,12,23,1,4,2,1,86,4,2,23,1,2,94,23,1,4,1,1,1049,4,1,23,1,2,107,23,1,4,1,1,1407,}, + {1,1326,4,2,23,1,2,13,23,1,4,3,1,82,4,3,23,1,2,95,23,1,4,1,1,1047,4,2,23,2,2,107,23,1,4,1,1,1407,}, + {1,1326,4,2,23,1,2,14,23,1,4,2,1,82,4,2,23,1,2,96,23,1,4,1,1,1046,4,2,23,1,2,109,23,1,4,1,1,1407,}, + {1,1326,4,2,23,1,2,15,23,1,4,2,1,80,4,2,23,1,2,97,23,1,4,1,1,1045,4,2,23,1,2,110,23,1,4,1,1,1407,}, + {1,1326,4,2,23,1,2,16,23,1,4,6,1,70,4,6,23,1,2,98,23,1,4,1,1,1040,4,7,23,1,2,110,23,1,4,1,1,1407,}, + {1,1326,4,2,23,1,2,17,23,5,4,2,1,68,4,2,23,5,2,99,23,1,4,1,1,1040,4,2,23,4,2,112,23,1,4,1,1,1407,}, + {1,1326,4,2,23,1,2,21,23,1,4,2,1,68,4,2,23,1,2,103,23,1,4,1,1,1040,4,1,23,1,2,116,23,1,4,1,1,1407,}, + {1,1326,4,2,23,1,2,22,23,1,4,1,1,68,4,1,23,1,2,104,23,1,4,1,1,1040,4,1,23,1,2,116,23,1,4,1,1,1407,}, + {1,1327,4,1,23,1,2,22,23,1,4,1,1,68,4,1,23,1,2,104,23,1,4,1,1,1040,4,1,23,1,2,116,23,1,4,1,1,1407,}, + {1,1326,4,2,23,1,2,22,23,1,4,1,1,68,4,1,23,1,2,104,23,1,4,1,1,1040,4,1,23,1,2,116,23,1,4,2,1,1406,}, + {1,1325,4,2,23,1,2,23,4,2,1,67,4,2,23,1,2,104,23,1,4,1,1,1040,4,1,23,1,2,116,23,1,4,2,1,1406,}, + {1,1324,4,2,23,2,2,23,4,2,1,65,4,3,23,1,2,105,23,1,4,1,1,1040,4,1,23,1,2,115,23,1,4,2,1,1407,}, + {1,1323,4,2,23,1,2,25,4,2,1,65,4,2,23,1,2,106,23,1,4,1,1,1040,4,1,23,1,2,114,23,1,4,3,1,1407,}, + {1,1319,4,5,23,1,2,26,23,1,4,2,1,59,4,6,23,1,2,107,23,1,4,1,1,1040,4,1,23,1,2,113,23,1,4,2,1,1409,}, + {1,1318,4,5,23,2,2,26,23,2,4,2,1,57,4,6,23,1,2,108,23,1,4,1,1,1040,4,1,23,1,2,113,23,1,4,1,1,1410,}, + {1,1317,4,2,23,1,2,33,23,1,4,2,1,56,4,1,23,2,2,112,23,1,4,1,1,1040,4,1,23,1,2,113,23,1,4,1,1,1410,}, + {1,1316,4,2,23,1,2,35,23,1,4,2,1,54,4,2,23,1,2,113,23,1,4,1,1,1040,4,1,23,1,2,113,23,1,4,1,1,1410,}, + {1,1282,4,35,23,1,2,36,23,2,4,9,1,38,4,9,23,1,2,114,23,1,4,1,1,1040,4,1,23,1,2,113,23,1,4,1,1,1410,}, + {1,1281,4,2,23,34,2,39,23,8,4,2,1,36,4,2,23,8,2,115,23,1,4,1,1,391,4,3,23,3,2,13,23,4,4,3,1,623,4,1,23,1,2,113,23,1,4,1,1,1410,}, + {1,1281,4,1,23,1,2,80,23,1,4,2,1,35,4,2,23,1,2,123,23,1,4,1,1,262,4,6,23,11,4,6,1,100,4,3,23,2,2,28,23,1,4,3,1,518,4,1,1,99,4,1,23,1,2,113,23,1,4,1,1,1410,}, + {1,1281,4,1,23,1,2,81,23,1,4,1,1,34,4,2,23,1,2,124,23,1,4,1,1,255,4,1,1,1,4,2,23,2,2,23,23,2,4,3,1,93,4,2,23,1,2,37,23,1,4,2,1,360,4,48,1,4,4,1,1,52,4,48,1,102,4,1,23,1,2,113,23,1,4,1,1,1410,}, + {1,1281,4,1,23,1,2,81,23,1,4,1,1,33,4,2,23,1,2,125,23,1,4,1,1,253,4,1,23,1,2,35,23,1,4,2,1,2,4,1,1,83,4,1,23,1,2,45,23,1,4,1,1,345,4,1,1,10,4,1,2,48,4,1,1,55,4,1,2,48,4,1,1,101,4,1,23,1,2,108,23,5,4,2,1,1410,}, + {1,1281,4,1,23,1,2,81,23,1,4,1,1,32,4,2,23,1,2,126,23,1,4,1,1,249,4,1,23,1,2,43,23,1,4,1,1,80,4,1,23,1,2,52,4,1,1,61,23,1,2,46,23,1,1,61,23,1,2,47,4,1,1,14,2,110,4,1,1,10,23,1,2,48,1,55,2,48,23,1,1,102,4,1,23,1,2,107,23,1,4,6,1,1411,}, + {1,1276,4,6,23,1,2,81,23,1,4,6,1,26,4,2,23,1,2,127,23,1,4,1,1,245,4,2,23,1,2,50,4,2,1,73,4,2,2,57,23,1,4,1,1,2,4,1,1,55,2,48,23,1,1,56,4,1,1,2,23,1,2,48,23,1,1,14,2,110,4,1,1,10,4,1,2,48,4,1,1,53,23,1,2,48,1,103,4,1,23,1,2,107,4,2,1,1416,}, + {1,1275,4,3,23,4,2,82,23,5,4,3,1,24,4,2,23,2,2,127,23,1,4,1,1,244,4,1,23,1,2,54,23,1,4,1,1,61,4,1,1,2,4,1,1,4,4,1,23,1,2,62,4,1,1,56,2,49,4,2,1,56,4,1,2,49,23,1,1,14,2,110,4,1,1,11,23,1,2,48,1,52,4,1,2,48,4,1,1,103,4,1,23,1,2,106,23,1,4,2,1,1416,}, + {1,1275,4,1,23,2,2,91,23,2,4,1,1,23,4,2,23,1,2,129,23,1,4,1,1,241,4,1,23,1,2,60,4,1,1,65,4,1,23,1,2,66,4,1,1,54,2,50,4,1,1,55,4,1,2,50,23,1,1,14,2,110,4,1,1,12,2,48,23,1,1,51,23,1,2,48,1,104,4,1,23,1,2,106,23,1,4,2,1,1416,}, + {1,1257,4,19,23,1,2,93,23,1,4,25,23,1,2,130,4,2,1,239,4,1,2,65,4,2,1,1,4,1,1,58,4,1,23,1,2,24,23,22,2,24,23,1,1,52,2,51,4,1,1,54,2,51,23,1,1,14,2,110,4,1,1,12,4,1,2,48,4,1,1,49,4,1,2,48,4,1,1,103,4,2,23,1,2,107,4,2,1,1416,}, + {1,1255,4,19,23,2,2,95,23,1,4,23,23,1,2,130,23,1,4,2,1,237,4,1,2,26,23,17,2,26,23,1,1,57,4,1,23,1,2,20,23,33,2,21,4,1,1,50,2,52,4,1,1,52,23,1,2,51,23,1,1,14,2,110,4,1,1,13,2,48,23,1,1,49,2,48,23,1,1,102,4,3,23,1,2,108,4,2,1,1416,}, + {1,1255,4,2,23,2,2,2,23,2,2,1,23,10,2,99,23,1,2,2,23,18,2,130,23,2,4,2,1,236,4,1,2,22,23,29,2,22,4,2,1,52,4,1,23,1,2,19,23,40,2,19,4,1,1,48,2,52,23,1,1,51,4,1,2,52,23,1,1,14,2,110,4,1,1,13,4,1,2,11,23,27,2,10,4,1,1,47,4,1,2,9,23,28,2,11,1,102,4,2,23,2,2,109,4,2,1,1416,}, + {1,1254,4,2,23,1,2,267,23,1,4,2,1,235,4,1,23,1,2,20,23,36,2,20,4,1,1,50,4,1,2,18,23,46,2,17,23,1,4,1,1,46,2,53,4,1,1,48,4,2,2,53,23,1,1,14,2,110,4,1,1,14,23,1,2,9,23,30,2,9,1,47,2,9,23,30,2,9,23,1,1,102,4,2,23,1,2,109,23,1,4,2,1,1416,}, + {1,1252,4,3,23,2,2,266,23,1,4,1,1,236,4,1,2,18,23,43,2,18,23,1,1,2,4,1,1,45,2,17,23,52,2,16,4,1,1,45,2,9,23,35,2,10,4,1,1,47,4,1,2,10,23,36,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,14,4,1,2,10,23,29,2,9,4,1,1,45,23,1,2,9,23,29,2,10,1,103,4,2,2,110,23,1,4,2,1,1416,}, + {1,1252,4,2,23,1,2,266,23,2,4,2,1,234,4,1,2,17,23,49,2,17,4,1,1,44,23,1,2,16,23,56,2,15,23,1,4,1,1,43,2,9,23,36,2,10,4,1,1,1,4,1,1,44,2,10,23,37,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,15,23,1,2,9,23,30,2,9,4,1,1,43,4,1,2,9,23,29,2,10,4,1,1,103,4,2,2,108,23,2,4,2,1,1417,}, + {1,1251,4,2,23,1,2,266,23,2,4,2,1,234,23,1,2,16,23,53,2,16,23,1,4,1,1,40,4,1,2,15,23,61,2,15,23,1,4,1,1,41,2,9,23,37,2,10,1,45,23,1,2,9,23,38,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,15,4,1,2,10,23,29,2,9,23,1,1,43,23,1,2,8,23,30,2,10,1,1,4,1,1,102,4,2,2,107,23,2,4,2,1,1418,}, + {1,1252,4,1,23,1,2,266,23,1,4,1,1,233,4,2,2,16,23,58,2,15,4,1,1,38,4,1,2,15,23,64,2,14,23,1,1,1,4,1,1,39,2,9,23,37,2,10,23,1,1,43,4,1,2,10,23,38,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,16,4,1,2,9,23,30,2,9,4,1,1,41,4,1,2,9,23,29,2,10,4,1,1,103,4,2,23,1,2,107,23,1,4,1,1,1420,}, + {1,1251,4,2,23,1,2,266,23,1,4,1,1,233,4,1,2,15,23,61,2,15,23,1,4,1,1,35,23,1,2,14,23,68,2,14,4,1,1,39,2,9,23,38,2,10,4,1,1,39,4,1,1,1,4,1,2,10,23,39,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,17,2,10,23,29,2,9,23,1,1,41,2,9,23,30,2,9,23,1,1,103,4,2,23,1,2,108,23,1,4,1,1,1420,}, + {1,1251,4,2,23,1,2,266,23,1,4,1,1,232,23,1,2,14,23,65,2,15,4,1,1,33,2,14,23,72,2,13,23,1,1,38,2,9,23,39,2,10,4,1,1,36,4,1,1,2,4,1,2,10,23,40,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,17,4,1,2,10,23,29,2,9,4,1,1,39,4,1,2,9,23,29,2,10,4,1,1,102,4,2,23,1,2,109,23,1,4,1,1,1420,}, + {1,1243,4,10,2,267,23,1,4,1,1,230,4,1,2,14,23,69,2,14,4,1,1,30,4,1,2,13,23,75,2,13,23,1,1,37,2,9,23,40,2,10,1,39,2,10,23,41,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,18,23,1,2,9,23,30,2,9,1,39,2,9,23,30,2,9,23,1,1,102,4,2,23,1,2,110,23,1,4,1,1,1420,}, + {1,1242,4,3,23,8,2,266,23,1,4,2,1,229,4,1,2,13,23,73,2,13,4,1,1,28,4,1,2,13,23,78,2,13,1,36,2,9,23,40,2,11,1,4,4,1,1,32,23,1,2,9,23,42,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,17,4,2,2,10,23,29,2,9,23,1,1,1,4,1,1,35,23,1,2,9,23,29,2,10,4,1,1,100,4,3,23,1,2,111,23,1,4,1,1,1420,}, + {1,1242,4,2,23,1,2,273,23,1,4,2,1,229,4,1,2,13,23,75,2,13,4,1,1,26,4,1,2,12,23,81,2,13,4,1,1,34,2,9,23,41,2,10,23,1,1,35,4,1,2,10,23,42,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,19,23,1,2,9,23,30,2,9,4,1,1,35,4,1,2,9,23,30,2,9,4,1,1,100,4,3,23,1,2,112,23,1,4,1,1,1420,}, + {1,1241,4,2,23,1,2,273,23,1,4,2,1,229,4,1,2,12,23,78,2,13,23,1,1,24,23,1,2,12,23,83,2,13,1,34,2,9,23,42,2,10,4,1,1,3,4,1,1,29,4,1,2,10,23,43,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,20,2,10,23,29,2,9,23,1,1,35,2,10,23,29,2,10,1,102,4,1,23,1,2,113,23,1,4,1,1,1420,}, + {1,1240,4,2,23,1,2,274,23,1,4,1,1,229,23,1,2,12,23,81,2,12,23,1,1,22,23,1,2,12,23,86,2,12,1,33,2,9,23,43,2,10,4,1,1,32,2,10,23,44,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,20,4,1,2,9,23,30,2,9,4,1,1,33,4,1,2,9,23,29,2,10,4,1,1,102,4,1,23,1,2,113,23,1,4,1,1,1420,}, + {1,1239,4,2,23,1,2,275,23,1,4,1,1,228,23,1,2,12,23,83,2,11,23,1,1,21,23,1,2,11,23,89,2,12,4,1,1,31,2,9,23,44,2,10,4,1,1,30,2,10,23,45,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,21,2,10,23,30,2,9,1,33,2,9,23,30,2,9,23,1,1,103,4,1,23,1,2,113,23,1,4,1,1,1420,}, + {1,1238,4,2,23,1,2,276,23,1,4,1,1,227,4,1,2,12,23,85,2,10,4,1,1,20,4,1,2,11,23,91,2,12,1,31,2,9,23,44,2,10,23,1,1,29,23,1,2,10,23,45,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,21,4,1,2,10,23,29,2,9,4,1,1,31,23,1,2,9,23,29,2,10,4,1,1,103,4,1,23,1,2,113,23,1,4,1,1,1420,}, + {1,1236,4,3,23,1,2,277,23,1,4,1,1,226,4,1,2,11,23,86,2,10,4,1,1,20,4,1,2,11,23,93,2,12,1,30,2,9,23,45,2,10,23,1,1,27,4,1,2,10,23,46,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,22,23,1,2,9,23,30,2,9,1,30,4,1,2,9,23,30,2,9,23,1,1,104,4,1,23,1,2,113,23,1,4,1,1,1420,}, + {1,1236,4,2,23,1,2,278,23,1,4,1,1,225,23,1,2,11,23,86,2,10,23,1,1,20,4,1,2,11,23,95,2,11,23,1,1,29,2,9,23,46,2,10,4,1,1,25,4,1,2,10,23,47,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,22,4,1,2,10,23,29,2,9,23,1,1,29,23,1,2,9,23,29,2,10,1,105,4,1,23,1,2,113,23,1,4,1,1,1420,}, + {1,1235,4,2,23,1,2,279,23,1,4,1,1,224,4,1,2,11,23,87,2,10,1,20,4,1,2,11,23,97,2,11,23,1,1,2,4,1,1,25,2,9,23,47,2,10,4,1,1,23,4,1,2,10,23,48,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,23,4,1,2,9,23,30,2,9,4,1,1,27,4,1,2,9,23,30,2,9,4,1,1,105,4,1,23,1,2,113,23,1,4,1,1,1420,}, + {1,1234,4,2,23,1,2,280,23,1,4,1,1,223,4,1,2,11,23,87,2,10,4,1,1,20,23,1,2,10,23,99,2,11,4,1,1,5,4,1,1,21,2,9,23,48,2,10,1,22,4,1,23,1,2,10,23,48,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,24,2,10,23,29,2,9,23,1,1,27,2,10,23,29,2,9,23,1,1,106,4,1,23,1,2,113,23,1,4,1,1,1420,}, + {1,1232,4,3,23,1,2,281,23,1,4,1,1,219,4,1,1,2,4,1,2,11,23,87,2,10,4,1,1,20,23,1,2,10,23,101,2,11,4,1,1,26,2,9,23,48,2,10,23,1,1,21,23,1,2,10,23,49,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,24,4,1,2,10,23,29,2,9,4,1,1,25,4,1,2,9,23,29,2,10,4,1,1,106,4,1,23,1,2,113,23,1,4,1,1,1420,}, + {1,1232,4,2,23,1,2,282,23,1,4,1,1,221,4,1,2,11,23,87,2,10,23,1,1,20,4,1,2,10,23,103,2,11,1,26,2,9,23,49,2,10,4,1,1,1,4,1,1,17,23,1,2,10,23,50,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,24,4,1,2,10,23,29,2,10,1,25,2,10,23,29,2,9,23,1,1,1,4,1,1,105,4,1,23,1,2,113,23,1,4,1,1,1420,}, + {1,1232,4,1,23,1,2,283,23,1,4,1,1,221,23,1,2,10,23,88,2,10,1,20,4,1,2,10,23,105,2,10,23,1,1,25,2,9,23,50,2,10,4,1,1,17,4,1,2,10,23,51,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,25,4,1,2,9,23,30,2,9,4,1,1,23,23,1,2,9,23,29,2,10,4,1,1,106,4,2,23,1,2,113,23,1,4,1,1,1420,}, + {1,1232,4,1,23,1,2,283,23,1,4,1,1,220,4,1,2,10,23,88,2,10,4,1,1,19,4,1,2,10,23,107,2,10,23,1,1,24,2,9,23,51,2,10,1,1,4,1,1,14,4,1,2,10,23,52,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,26,23,1,2,9,23,30,2,9,4,1,1,2,4,1,1,19,2,9,23,30,2,9,23,1,1,105,4,3,23,1,2,113,23,1,4,2,1,1420,}, + {1,1232,4,1,23,1,2,283,23,1,4,1,1,219,4,1,2,10,23,88,2,10,4,1,1,20,23,1,2,10,23,108,2,10,4,1,1,23,2,9,23,51,2,11,1,15,23,1,2,10,23,52,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,26,4,1,2,10,23,29,2,9,23,1,1,21,2,10,23,29,2,10,1,106,4,1,23,2,2,109,23,2,4,6,1,1420,}, + {1,1232,4,1,23,1,2,283,23,1,4,1,1,219,2,10,23,88,2,10,23,1,1,20,4,1,2,10,23,110,2,9,23,1,1,23,2,9,23,52,2,10,23,1,1,13,23,1,2,10,23,53,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,27,23,1,2,9,23,30,2,9,4,1,1,19,4,1,2,9,23,30,2,9,4,1,1,106,4,1,23,1,2,110,23,1,4,5,1,1422,}, + {1,1232,4,1,23,1,2,283,23,1,4,1,1,218,4,1,2,10,23,49,2,9,23,29,2,10,23,1,1,4,4,1,1,16,2,10,23,112,2,9,4,1,1,22,2,9,23,53,2,10,23,1,1,11,4,1,2,10,23,54,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,26,4,1,1,1,2,10,23,29,2,10,1,1,4,1,1,17,23,1,2,9,23,29,2,10,4,1,1,105,4,2,23,1,2,110,23,1,4,1,1,1426,}, + {1,1232,4,1,23,1,2,283,23,1,4,1,1,217,4,1,2,10,23,44,2,21,23,23,2,10,1,21,23,1,2,9,23,55,2,2,23,2,2,1,23,53,2,10,4,1,1,21,2,9,23,54,2,10,4,1,1,9,4,1,2,10,23,55,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,28,4,1,2,9,23,30,2,9,4,1,1,16,4,1,23,1,2,9,23,29,2,10,4,1,1,106,4,2,23,1,2,110,23,1,4,1,1,1426,}, + {1,1231,4,2,23,1,2,283,23,1,4,1,1,217,23,1,2,9,23,42,2,28,23,18,2,10,4,1,1,20,4,1,2,9,23,49,2,18,23,48,2,9,23,1,1,21,2,9,23,55,2,10,4,1,1,7,4,1,2,10,23,56,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,29,2,10,23,29,2,10,1,16,4,1,2,9,23,30,2,9,23,1,1,107,4,2,23,1,2,110,4,2,1,1426,}, + {1,1223,4,9,23,2,2,283,23,1,4,1,1,216,4,1,2,9,23,41,2,33,23,14,2,10,4,1,1,2,4,1,1,18,23,1,2,9,23,44,2,27,23,45,2,9,4,1,1,20,2,9,23,55,2,11,1,7,2,11,23,56,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,29,4,1,2,10,23,29,2,9,23,1,1,15,23,1,2,9,23,29,2,10,4,1,1,108,4,1,23,1,2,109,23,1,4,2,1,1426,}, + {1,1222,4,2,23,9,2,284,23,1,4,1,1,216,2,10,23,38,2,38,23,11,2,10,23,1,1,1,4,2,1,18,4,1,2,9,23,42,2,34,23,41,2,10,1,20,2,9,23,56,2,10,23,1,1,5,23,1,2,10,23,57,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,30,23,1,2,9,23,30,2,9,4,1,1,13,4,1,2,9,23,30,2,9,23,1,1,108,4,2,23,1,2,108,23,1,4,2,1,1427,}, + {1,1222,4,2,23,1,2,292,23,1,4,1,1,215,23,1,2,9,23,37,2,42,23,8,2,11,4,1,1,20,4,1,2,10,23,40,2,38,23,40,2,9,4,1,1,19,2,9,23,57,2,10,23,1,1,3,4,1,2,10,23,58,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,30,4,1,2,10,23,29,2,9,23,1,1,13,23,1,2,9,23,29,2,10,1,109,4,2,23,1,2,107,23,1,4,2,1,1428,}, + {1,1222,4,2,2,293,23,1,4,1,1,214,4,1,2,9,23,36,2,46,23,6,2,10,4,1,1,21,4,1,2,9,23,39,2,42,23,39,2,9,1,19,2,9,23,58,2,10,4,1,1,1,4,1,2,10,23,59,2,8,23,1,1,14,2,8,23,22,2,9,23,70,4,1,1,32,23,1,2,9,23,30,2,9,4,1,1,9,4,1,1,1,4,1,2,9,23,30,2,9,4,1,1,110,4,1,23,1,2,106,23,1,4,2,1,1429,}, + {1,1222,4,1,23,1,2,71,4,2,2,220,23,1,4,1,1,214,23,1,2,9,23,35,2,48,23,4,2,10,4,1,1,22,2,9,23,38,2,46,23,37,2,9,23,1,1,18,2,9,23,25,2,1,23,32,2,11,4,1,2,11,23,32,2,2,23,25,2,8,23,1,1,14,2,8,23,22,2,8,4,1,1,104,2,10,23,29,2,9,23,1,1,11,2,10,23,29,2,10,1,111,4,1,23,1,2,106,23,1,4,2,1,1429,}, + {1,1222,4,1,23,1,2,68,4,14,2,211,23,1,4,1,1,213,4,1,2,9,23,34,2,18,23,1,4,2,1,8,4,3,23,1,2,19,23,1,2,10,23,1,1,22,4,1,2,9,23,36,2,49,23,37,2,9,1,18,2,9,23,25,2,2,23,32,2,21,23,32,2,3,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,105,4,1,2,9,23,30,2,9,4,1,1,9,23,1,2,9,23,29,2,10,4,1,1,110,4,2,23,1,2,106,23,1,4,2,1,1429,}, + {1,1222,4,2,2,65,23,1,4,23,2,204,23,1,4,1,1,213,23,1,2,9,23,33,2,15,23,1,4,1,1,19,4,1,23,1,2,25,23,1,1,23,2,9,23,36,2,18,23,2,4,11,23,2,2,19,23,35,2,9,4,1,1,17,2,9,23,25,2,3,23,32,2,19,23,33,2,3,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,106,23,1,2,9,23,29,2,10,1,8,4,1,2,9,23,30,2,9,23,1,1,110,4,3,2,107,23,1,4,2,1,1429,}, + {1,1222,4,2,2,63,4,27,2,202,23,1,4,2,1,212,4,1,2,9,23,33,2,14,4,2,1,24,4,1,23,1,2,22,4,1,1,22,4,1,2,9,23,34,2,16,23,2,4,2,1,15,4,3,23,1,2,16,23,35,2,9,1,17,2,9,23,25,2,3,23,33,2,17,23,33,2,4,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,105,4,2,2,10,23,29,2,9,23,1,1,7,23,1,2,9,23,29,2,10,4,1,1,109,4,2,23,2,2,107,23,1,4,2,1,1429,}, + {1,1222,4,2,2,60,23,1,4,31,2,198,23,2,4,2,1,213,23,1,2,9,23,32,2,13,4,2,1,28,4,1,23,1,2,19,4,1,1,23,2,9,23,34,2,15,23,1,4,1,1,16,4,1,1,6,4,2,23,1,2,14,23,34,2,9,4,1,1,16,2,9,23,25,2,4,23,33,2,16,23,32,2,5,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,107,23,1,2,9,23,29,2,10,4,1,1,4,4,2,2,9,23,30,2,9,4,1,1,109,4,2,23,2,2,108,23,1,4,2,1,1429,}, + {1,1219,4,1,1,2,4,1,23,1,2,57,23,1,4,36,2,196,23,1,4,2,1,213,4,1,2,9,23,32,2,12,4,2,1,23,4,1,1,8,4,1,2,17,23,1,1,23,4,1,2,9,23,33,2,14,4,2,1,29,23,1,2,13,23,34,2,8,23,1,1,16,2,9,23,25,2,5,23,32,2,15,23,32,2,6,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,108,2,10,23,29,2,9,23,1,4,1,1,3,2,11,23,29,2,10,1,110,4,1,23,1,2,110,23,1,4,2,1,1429,}, + {1,1216,4,6,23,2,2,55,4,40,2,194,23,1,4,2,1,214,4,1,2,9,23,31,2,11,23,1,1,37,4,1,2,14,23,1,1,24,23,1,2,8,23,33,2,13,4,1,1,34,23,1,2,12,23,33,2,9,4,1,1,15,2,9,23,25,2,6,23,32,2,13,23,32,2,7,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,108,23,1,2,9,23,30,2,9,4,1,1,2,4,1,2,10,23,30,2,9,4,1,1,108,4,3,23,1,2,110,23,1,4,2,1,1429,}, + {1,1216,4,2,23,4,2,56,4,42,2,191,23,2,4,2,1,215,23,1,2,8,23,31,2,11,4,1,1,39,4,1,2,13,1,25,2,9,23,32,2,12,23,1,1,37,4,1,23,1,2,11,23,33,2,8,23,1,1,15,2,9,23,25,2,6,23,33,2,11,23,33,2,7,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,109,2,10,23,29,2,10,1,2,2,11,23,29,2,10,1,108,4,2,23,2,2,111,23,1,4,2,1,1429,}, + {1,1215,4,2,23,1,2,59,4,45,2,189,23,1,4,2,1,216,2,9,23,30,2,11,4,1,1,41,4,1,2,11,4,1,1,24,4,1,2,8,23,32,2,12,4,1,1,39,4,2,2,11,23,32,2,9,1,15,2,9,23,25,2,7,23,33,2,9,23,33,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,109,4,1,2,10,23,29,2,9,23,2,2,10,23,29,2,10,4,1,1,108,4,1,23,1,2,113,23,1,4,2,1,1429,}, + {1,1201,4,15,23,1,2,59,4,47,2,187,23,1,4,2,1,216,4,1,2,8,23,30,2,11,4,1,1,1,4,1,1,36,4,1,1,5,23,1,2,8,4,1,1,25,2,9,23,31,2,11,23,1,4,1,1,42,4,1,2,11,23,32,2,8,4,1,1,14,2,9,23,25,2,8,23,33,2,8,23,32,2,9,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,110,23,1,2,9,23,29,2,21,23,29,2,9,23,1,1,1,4,1,1,105,4,3,23,1,2,113,23,1,4,2,1,1429,}, + {1,1200,4,2,23,14,2,60,4,48,2,186,23,1,4,1,1,217,2,9,23,29,2,11,1,47,23,1,2,6,23,1,1,25,4,1,2,8,23,31,2,11,4,1,1,46,2,11,23,31,2,9,1,14,2,9,23,25,2,9,23,32,2,7,23,32,2,10,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,110,4,1,2,10,23,29,2,19,23,29,2,10,4,1,1,106,4,2,23,2,2,115,4,2,1,1429,}, + {1,1199,4,2,23,1,2,73,4,50,2,185,23,1,4,2,1,215,4,1,2,9,23,28,2,11,1,49,23,1,2,5,1,26,23,1,2,8,23,31,2,10,4,1,1,47,4,1,23,1,2,10,23,30,2,9,1,14,2,9,23,25,2,10,23,32,2,5,23,32,2,11,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,111,23,1,2,9,23,30,2,17,23,30,2,9,4,1,1,107,4,1,23,1,2,116,23,1,4,2,1,1429,}, + {1,1199,4,2,23,1,2,72,4,53,2,183,23,1,4,2,1,215,23,1,2,8,23,29,2,9,23,1,4,1,1,50,23,1,2,3,1,27,2,9,23,30,2,10,23,1,1,2,4,1,1,47,23,1,2,10,23,30,2,8,4,1,1,13,2,9,23,25,2,10,23,33,2,3,23,33,2,11,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,110,4,1,1,1,2,10,23,29,2,17,23,29,2,10,4,1,1,107,4,1,23,1,2,116,23,1,4,2,1,1429,}, + {1,1199,4,2,2,72,4,54,23,1,2,182,23,1,4,2,1,214,4,1,2,9,23,28,2,10,4,1,1,52,23,2,4,1,1,26,4,1,2,8,23,30,2,10,4,1,1,52,2,10,23,30,2,8,23,1,1,13,2,9,23,25,2,11,23,33,2,1,23,33,2,12,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,112,23,1,2,9,23,30,2,15,23,30,2,9,4,1,1,108,4,1,23,1,2,115,23,1,4,2,1,1430,}, + {1,1199,4,2,2,71,4,56,2,182,23,1,4,2,1,214,4,1,2,8,23,28,2,10,4,1,1,82,23,1,2,8,23,30,2,9,4,1,1,54,2,10,23,29,2,9,1,13,2,9,23,25,2,12,23,65,2,13,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,113,2,10,23,29,2,15,23,29,2,9,23,1,1,109,4,1,23,1,2,114,23,1,4,3,1,1430,}, + {1,1198,4,2,23,1,2,70,4,24,23,10,4,23,2,182,23,1,4,2,1,214,4,1,2,8,23,28,2,9,4,1,1,83,2,9,23,29,2,9,23,1,1,55,4,1,2,10,23,29,2,8,4,1,1,12,2,9,23,25,2,13,23,63,2,14,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,113,4,1,2,9,23,30,2,13,23,30,2,9,4,1,1,109,4,1,23,1,2,113,23,1,4,2,1,1432,}, + {1,1197,4,2,23,2,2,70,4,21,23,17,4,20,2,180,23,2,4,1,1,215,23,1,2,8,23,27,2,9,23,1,1,84,2,8,23,29,2,9,23,1,1,57,4,1,2,9,23,29,2,8,4,1,1,12,2,9,23,25,2,14,23,61,2,15,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,113,4,1,23,1,2,9,23,29,2,13,23,29,2,9,23,1,1,110,4,1,23,1,2,112,23,1,4,2,1,1433,}, + {1,1196,4,2,23,1,2,70,4,20,23,21,4,19,23,1,2,178,23,1,4,3,1,214,4,1,2,8,23,28,2,9,4,1,1,83,4,1,2,8,23,29,2,9,4,1,1,58,23,1,2,9,23,28,2,8,23,1,1,12,2,9,23,25,2,14,23,61,2,15,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,114,4,1,2,10,23,29,2,11,23,29,2,10,4,1,1,110,4,1,23,1,2,111,23,1,4,2,1,1434,}, + {1,1183,4,10,1,2,4,2,23,1,2,71,4,18,23,25,4,18,2,177,23,1,4,2,1,216,4,1,2,8,23,27,2,9,4,1,1,84,4,1,2,8,23,28,2,9,4,1,1,59,4,1,2,9,23,29,2,8,4,1,1,11,2,9,23,25,2,15,23,59,2,16,23,25,2,8,23,1,1,14,2,8,23,22,2,8,4,71,1,44,23,1,2,9,23,30,2,9,23,30,2,9,23,1,1,111,4,1,23,1,2,110,23,1,4,2,1,1435,}, + {1,1180,4,16,23,2,2,71,4,17,23,27,1,1,4,17,2,176,23,1,4,1,1,217,23,1,2,8,23,27,2,8,23,1,1,85,2,9,23,28,2,8,23,1,1,61,4,1,2,9,23,28,2,8,4,1,1,11,2,9,23,25,2,16,23,57,2,17,23,25,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,43,2,10,23,29,2,9,23,29,2,10,4,1,1,111,4,1,23,1,2,109,23,1,4,2,1,1436,}, + {1,1180,4,2,23,14,2,72,4,17,1,1,23,29,4,16,2,176,23,1,4,1,1,217,23,1,2,8,23,26,2,9,4,1,1,85,2,9,23,27,2,9,4,1,1,62,23,1,2,8,23,28,2,8,4,1,1,11,2,9,23,25,2,17,23,55,2,18,23,25,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,43,4,1,2,9,23,30,2,7,23,30,2,9,4,1,1,112,4,1,23,1,2,108,23,1,4,2,1,1437,}, + {1,1180,4,1,23,1,2,86,4,17,23,31,4,16,2,175,23,1,4,1,1,217,2,9,23,26,2,9,1,1,4,1,1,83,4,1,2,8,23,28,2,8,23,1,1,63,4,1,2,9,23,27,2,8,23,1,1,11,2,9,23,25,2,17,23,55,2,18,23,25,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,44,2,10,23,29,2,7,23,29,2,9,23,1,1,113,4,1,23,1,2,107,23,1,4,2,1,1438,}, + {1,1180,4,1,23,1,2,86,4,15,1,1,23,32,4,16,2,175,23,1,4,1,1,217,2,8,23,27,2,8,4,1,1,85,4,1,2,8,23,28,2,8,4,1,1,64,23,1,2,8,23,28,2,8,1,11,2,9,23,25,2,18,23,53,2,19,23,25,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,44,4,1,2,9,23,30,2,4,23,30,2,10,4,1,1,113,4,1,23,1,2,107,4,2,1,1439,}, + {1,1180,4,1,23,1,2,86,4,15,23,34,4,16,2,174,23,1,4,1,1,216,4,1,2,8,23,26,2,9,1,86,4,1,2,8,23,27,2,8,23,1,1,65,4,1,2,8,23,28,2,8,4,1,1,10,2,9,23,25,2,19,23,51,2,10,23,1,2,9,23,25,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,45,23,1,2,9,23,29,2,4,23,30,2,9,23,1,1,114,4,1,23,1,2,107,4,2,1,1439,}, + {1,1180,4,1,23,1,2,86,4,14,23,35,4,16,2,174,23,1,4,2,1,215,4,1,2,8,23,26,2,9,1,86,23,1,2,8,23,27,2,8,23,1,1,65,4,1,2,9,23,27,2,8,4,1,1,10,2,9,23,25,2,20,23,49,2,11,1,1,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,45,4,1,2,10,23,29,2,2,23,30,2,10,4,1,1,114,4,1,23,1,2,107,23,1,4,1,1,1439,}, + {1,1180,4,1,23,1,2,85,4,15,23,36,4,15,2,174,23,1,4,1,1,216,23,1,2,8,23,26,2,8,4,1,1,86,23,1,2,8,23,27,2,8,4,1,1,66,23,1,2,8,23,27,2,8,4,1,1,10,2,9,23,25,2,8,23,1,4,1,2,11,23,47,2,11,4,1,1,1,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,46,23,1,2,9,23,61,2,9,4,1,1,115,4,1,23,1,2,107,23,1,4,1,1,1439,}, + {1,1180,4,1,23,1,2,85,4,15,23,36,4,15,23,1,2,173,23,1,4,1,1,216,23,1,2,8,23,26,2,8,4,1,1,85,4,1,2,8,23,27,2,9,1,67,4,1,2,8,23,27,2,8,23,1,1,10,2,9,23,25,2,8,4,1,1,1,4,1,2,10,23,47,2,10,4,1,1,2,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,1,23,69,2,10,4,1,1,46,4,1,2,10,23,59,2,10,1,116,4,1,23,1,2,107,23,1,4,1,1,1439,}, + {1,1180,4,1,23,1,2,85,4,14,23,38,4,15,2,173,23,1,4,1,1,216,2,9,23,26,2,8,1,86,4,1,2,8,23,27,2,8,23,1,1,68,2,9,23,26,2,8,23,1,1,10,2,9,23,25,2,8,4,1,1,2,4,1,2,10,23,45,2,10,23,1,1,3,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,47,4,1,2,9,23,59,2,9,4,1,1,116,4,1,23,1,2,107,23,1,4,1,1,1439,}, + {1,1172,4,9,23,1,2,85,4,14,23,38,1,1,4,13,2,174,23,1,4,3,1,214,2,9,23,25,2,8,23,1,1,86,4,1,2,8,23,27,2,8,4,1,1,68,23,1,2,8,23,26,2,8,23,1,1,10,2,9,23,25,2,8,23,1,1,3,23,1,2,10,23,43,2,10,23,1,1,4,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,48,2,10,23,57,2,9,23,1,1,109,4,9,23,1,2,107,23,1,4,1,1,1439,}, + {1,1171,4,9,23,1,2,86,4,14,23,39,4,14,2,174,23,1,4,3,1,213,2,8,23,26,2,8,23,1,1,86,4,1,2,8,23,27,2,8,4,1,1,68,4,1,2,8,23,26,2,9,1,10,2,9,23,25,2,8,23,1,1,4,23,1,2,10,23,41,2,11,1,5,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,48,4,1,2,9,23,57,2,9,1,108,4,10,23,1,2,108,23,1,4,1,1,1439,}, + {1,1170,4,2,23,2,2,92,23,1,4,14,23,39,4,14,2,175,23,2,4,1,1,213,2,8,23,26,2,8,4,1,1,86,4,1,2,8,23,27,2,8,1,69,4,1,2,8,23,27,2,8,1,10,2,9,23,25,2,8,23,1,1,4,4,1,2,10,23,40,2,11,4,1,1,5,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,49,23,1,2,9,23,55,2,9,23,1,1,2,4,1,1,105,4,2,23,2,2,115,23,1,4,1,1,1439,}, + {1,1170,4,1,23,1,2,94,4,15,23,38,4,15,2,176,23,1,4,1,1,213,2,8,23,26,2,8,4,1,1,86,4,1,2,8,23,26,2,8,23,1,1,69,4,1,2,8,23,27,2,8,1,10,2,9,23,25,2,8,23,1,1,5,4,1,2,10,23,39,2,10,4,1,1,6,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,49,4,1,2,10,23,53,2,10,1,109,4,1,23,1,2,117,23,1,4,1,1,1439,}, + {1,1170,4,1,23,1,2,94,4,15,23,38,4,15,2,176,23,1,4,1,1,213,2,8,23,26,2,8,4,1,1,86,4,1,2,8,23,26,2,8,23,1,1,70,2,8,23,27,2,8,1,10,2,9,23,25,2,8,23,1,1,6,4,1,2,10,23,37,2,10,23,1,1,7,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,50,23,1,2,9,23,53,2,9,4,1,1,109,4,1,23,1,2,117,23,1,4,1,1,1439,}, + {1,1170,4,1,23,1,2,94,4,15,23,38,4,14,2,177,23,1,4,2,1,211,4,1,2,8,23,26,2,8,4,1,1,86,23,1,2,8,23,26,2,8,4,1,1,70,2,8,23,27,2,8,1,10,2,9,23,25,2,8,23,1,1,3,4,1,1,2,4,1,23,1,2,10,23,35,2,10,23,1,4,1,1,7,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,51,2,10,23,51,2,10,1,110,4,1,23,1,2,117,23,1,4,1,1,1439,}, + {1,1170,4,1,23,1,2,95,4,15,23,36,4,15,2,177,23,1,4,2,1,211,4,1,2,8,23,26,2,8,4,1,1,86,23,1,2,8,23,26,2,8,4,1,1,70,2,8,23,27,2,8,4,1,1,9,2,9,23,25,2,8,23,1,1,7,4,1,2,11,23,33,2,11,1,9,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,51,4,1,2,9,23,51,2,9,4,1,1,110,4,1,23,1,2,117,4,2,1,1439,}, + {1,1170,4,1,23,1,2,95,4,15,23,36,4,15,2,178,23,1,4,2,1,211,2,8,23,26,2,8,4,1,1,86,23,1,2,8,23,26,2,8,4,1,1,70,2,8,23,27,2,8,1,10,2,9,23,25,2,8,23,1,1,8,4,1,2,10,23,33,2,10,4,1,1,9,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,52,2,10,23,49,2,9,23,1,1,111,4,1,23,1,2,116,23,1,4,2,1,1439,}, + {1,1170,4,1,23,1,2,95,4,15,23,36,4,14,2,180,23,1,4,2,1,210,2,8,23,26,2,8,4,1,1,86,23,1,2,8,23,26,2,8,4,1,1,70,2,8,23,27,2,8,1,10,2,9,23,25,2,8,23,1,1,9,4,1,2,10,23,31,2,10,4,1,1,10,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,52,4,1,2,9,23,48,2,10,4,1,1,111,4,1,23,1,2,115,23,1,4,2,1,1440,}, + {1,1170,4,1,23,1,2,96,4,15,23,34,4,15,2,181,23,1,4,2,1,208,4,1,2,8,23,26,2,8,4,1,1,86,23,1,2,8,23,26,2,8,4,1,1,70,2,8,23,27,2,8,1,10,2,9,23,25,2,8,23,1,1,10,4,1,2,10,23,29,2,10,23,1,4,1,1,10,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,53,23,1,2,9,23,47,2,9,23,1,1,112,4,1,23,1,2,114,23,1,4,3,1,1440,}, + {1,1170,4,1,23,1,2,96,4,15,23,33,1,1,4,15,2,182,23,1,4,2,1,208,2,8,23,26,2,8,4,1,1,86,23,1,2,8,23,26,2,8,4,1,1,70,2,8,23,27,2,8,1,10,2,9,23,25,2,8,23,1,1,11,23,1,2,10,23,27,2,10,23,1,4,1,1,11,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,51,4,1,1,1,4,1,2,10,23,45,2,10,1,113,4,1,23,1,2,113,23,1,4,2,1,1442,}, + {1,1170,4,1,23,1,2,97,4,15,23,31,1,1,4,15,23,1,2,183,23,1,4,3,1,206,2,8,23,26,2,8,4,1,1,86,23,1,2,8,23,26,2,8,4,1,1,70,2,8,23,27,2,8,1,10,2,9,23,25,2,8,23,1,1,11,4,1,2,11,23,25,2,11,4,1,1,12,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,54,23,1,2,9,23,45,2,9,4,1,1,113,4,1,23,1,2,112,23,1,4,2,1,1443,}, + {1,1170,4,1,23,1,2,97,4,17,23,28,1,1,4,16,2,185,23,1,4,2,1,206,2,8,23,26,2,8,4,1,1,86,4,1,2,8,23,26,2,8,23,1,1,70,2,8,23,27,2,8,1,10,2,9,23,25,2,8,23,1,1,12,4,1,2,10,23,25,2,10,4,1,1,13,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,54,4,1,2,10,23,43,2,10,1,114,4,1,23,1,2,111,23,1,4,2,1,1444,}, + {1,1170,4,1,23,1,2,97,4,18,23,26,4,18,2,186,23,1,4,1,1,206,2,8,23,26,2,8,23,1,1,86,4,1,2,8,23,26,2,8,23,1,1,70,2,8,23,27,2,8,1,10,2,9,23,25,2,8,23,1,1,13,4,1,2,10,23,23,2,10,23,1,1,4,4,1,1,9,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,55,4,1,2,9,23,43,2,9,4,1,1,114,4,1,23,1,2,110,23,1,4,2,1,1445,}, + {1,1170,4,1,23,1,2,98,4,18,23,24,4,18,23,1,2,186,23,1,4,1,1,206,2,9,23,25,2,8,23,1,1,86,4,1,2,8,23,26,2,8,23,1,1,69,4,1,2,8,23,27,2,8,1,10,2,9,23,25,2,8,23,1,1,14,23,1,2,10,23,21,2,10,23,1,1,15,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,56,2,10,23,41,2,9,23,1,1,115,4,1,23,1,2,109,23,1,4,2,1,1446,}, + {1,1170,4,1,23,1,2,98,4,19,23,22,4,19,2,187,23,1,4,1,1,206,2,9,23,26,2,8,1,86,4,1,2,8,23,27,2,8,4,1,1,68,4,1,2,8,23,27,2,8,1,10,2,9,23,25,2,8,23,1,1,15,23,1,2,10,23,19,2,11,1,16,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,56,4,1,2,9,23,40,2,10,4,1,1,115,4,1,23,1,2,108,23,1,4,3,1,1446,}, + {1,1170,4,1,23,1,2,99,4,20,23,17,4,22,2,187,23,1,4,1,1,206,23,1,2,8,23,26,2,8,1,86,4,1,2,8,23,27,2,8,4,1,1,68,23,1,2,8,23,26,2,9,1,10,2,9,23,25,2,8,23,1,1,15,4,1,2,11,23,17,2,11,4,1,1,16,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,57,23,1,2,9,23,39,2,9,23,1,1,116,4,1,23,1,2,107,23,1,4,2,1,1448,}, + {1,1170,4,1,23,1,2,99,4,24,1,1,23,8,4,26,2,187,23,1,4,1,1,206,23,1,2,8,23,26,2,8,4,1,1,85,4,1,2,8,23,27,2,8,4,1,1,68,2,9,23,26,2,9,1,10,2,9,23,25,2,8,23,1,1,14,4,1,1,1,4,1,2,10,23,17,2,10,4,1,1,17,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,57,4,1,2,10,23,37,2,10,1,117,4,1,23,1,2,107,23,1,4,1,1,1449,}, + {1,1170,4,1,23,1,2,99,4,57,23,1,2,188,23,1,4,1,1,206,4,1,2,8,23,26,2,8,23,1,1,85,4,1,2,8,23,27,2,8,23,1,1,68,2,8,23,27,2,8,23,1,1,10,2,9,23,25,2,8,23,1,1,17,4,1,2,10,23,15,2,10,23,1,1,18,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,58,23,1,2,9,23,37,2,9,4,1,1,117,4,1,23,1,2,107,23,1,4,1,1,1449,}, + {1,1170,4,1,23,1,2,100,4,55,2,190,23,1,4,1,1,206,4,1,2,8,23,26,2,9,1,85,4,1,2,8,23,27,2,9,4,1,1,66,4,1,2,8,23,27,2,8,23,1,1,10,2,9,23,25,2,8,23,1,1,18,23,1,2,10,23,13,2,10,23,1,1,19,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,58,4,1,2,10,23,35,2,9,23,1,1,118,4,1,23,1,2,107,23,1,4,1,1,1449,}, + {1,1170,4,1,23,1,2,101,4,53,2,191,23,1,4,1,1,207,2,8,23,27,2,8,4,1,1,85,23,1,2,8,23,27,2,8,4,1,1,66,23,1,2,8,23,27,2,8,4,1,1,10,2,9,23,25,2,8,23,1,1,19,2,11,23,11,2,11,1,20,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,59,4,1,2,9,23,35,2,9,4,1,1,118,4,1,23,1,2,107,23,1,4,1,1,1449,}, + {1,1170,4,1,23,1,2,102,4,51,2,192,23,1,4,1,1,207,2,8,23,27,2,8,23,1,1,85,23,1,2,8,23,27,2,8,23,1,1,65,4,1,2,9,23,27,2,8,4,1,1,10,2,9,23,25,2,8,23,1,1,19,4,1,2,10,23,11,2,10,4,1,1,20,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,60,2,10,23,33,2,9,23,1,1,119,4,1,23,1,2,107,23,1,4,1,1,1449,}, + {1,1170,4,1,23,1,2,104,4,48,2,193,23,1,4,1,1,207,2,9,23,26,2,9,4,1,1,84,4,1,2,8,23,27,2,9,1,65,4,1,2,8,23,28,2,8,4,1,1,10,2,9,23,25,2,8,23,1,1,20,4,1,2,10,23,9,2,10,4,1,1,21,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,59,4,2,2,9,23,32,2,10,4,1,1,119,4,1,23,1,2,107,23,1,4,1,1,1449,}, + {1,1170,4,1,23,1,2,105,4,46,2,194,23,1,4,1,1,207,23,1,2,8,23,27,2,8,23,1,1,84,4,1,2,8,23,28,2,8,4,1,1,64,2,9,23,28,2,8,1,11,2,9,23,25,2,8,23,1,1,21,4,1,2,10,23,7,2,10,23,1,1,22,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,61,23,1,2,9,23,31,2,9,23,1,1,120,4,1,23,1,2,107,23,1,4,1,1,1449,}, + {1,1170,4,1,23,1,2,106,4,44,2,195,23,1,4,1,1,207,4,1,2,8,23,27,2,9,4,1,1,84,2,8,23,28,2,9,1,57,4,2,1,4,4,1,2,9,23,27,2,8,23,1,1,11,2,9,23,25,2,8,23,1,1,22,23,1,2,10,23,5,2,11,1,1,4,1,1,21,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,58,4,1,1,1,4,2,2,10,23,29,2,10,1,121,4,1,23,1,2,107,23,1,4,1,1,1449,}, + {1,1170,4,1,23,1,2,107,4,42,2,196,23,1,4,1,1,207,4,1,2,8,23,28,2,9,1,84,2,9,23,27,2,9,4,1,1,56,4,2,1,4,2,9,23,28,2,8,4,1,1,11,2,9,23,25,2,8,23,1,1,20,4,1,1,2,2,11,23,4,2,10,4,1,1,23,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,62,23,1,2,9,23,29,2,9,4,1,1,121,4,1,23,1,2,107,23,1,4,1,1,1449,}, + {1,1169,4,2,23,1,2,108,4,40,2,197,23,1,4,1,1,208,23,1,2,8,23,27,2,9,23,1,1,83,2,9,23,28,2,9,4,1,1,55,4,2,1,3,23,1,2,9,23,28,2,8,4,1,1,11,2,9,23,25,2,8,23,1,1,23,4,1,2,10,23,3,2,10,4,1,1,24,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,63,2,10,23,27,2,10,1,122,4,1,23,1,2,107,23,1,4,1,1,1449,}, + {1,1168,4,2,23,2,2,110,4,37,2,198,23,1,4,1,1,208,23,1,2,8,23,28,2,9,4,1,1,82,23,1,2,8,23,28,2,9,23,1,1,55,4,1,1,1,4,1,1,1,4,1,2,9,23,29,2,8,4,1,1,11,2,9,23,25,2,8,23,1,1,24,4,1,2,21,4,1,1,25,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,4,1,1,68,4,1,1,66,4,1,2,9,23,27,2,9,4,1,1,122,4,1,23,1,2,107,23,1,4,1,1,1449,}, + {1,1167,4,2,23,1,2,113,4,34,23,1,2,199,23,1,4,1,1,208,4,1,2,8,23,28,2,10,4,1,1,81,4,1,2,8,23,29,2,9,4,1,1,54,4,1,1,3,2,10,23,28,2,8,23,1,1,12,2,9,23,25,2,8,23,1,1,24,4,1,23,1,2,19,23,1,1,26,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,23,1,2,8,23,27,2,8,23,1,1,123,4,1,23,1,2,107,23,1,4,1,1,1449,}, + {1,1166,4,2,23,1,2,116,4,28,23,1,2,203,23,1,4,1,1,208,4,1,2,9,23,28,2,9,23,1,1,53,4,2,1,27,2,9,23,28,2,10,4,1,1,52,4,3,1,1,4,1,2,9,23,29,2,8,4,1,1,12,2,9,23,25,2,8,23,1,1,26,2,19,4,1,1,26,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,123,4,1,23,1,2,107,23,1,4,1,1,1449,}, + {1,1164,4,3,23,1,2,121,4,21,2,207,23,1,4,1,1,209,23,1,2,8,23,28,2,10,23,1,1,51,4,1,2,2,4,1,1,26,2,9,23,29,2,10,1,53,4,3,2,10,23,29,2,8,4,1,1,12,2,9,23,25,2,8,23,1,1,26,4,1,2,17,4,1,1,27,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,4,1,1,123,4,1,23,1,2,107,23,1,4,1,1,1449,}, + {1,1164,4,2,23,1,2,127,4,12,23,1,2,210,23,1,4,1,1,209,4,1,2,8,23,29,2,10,23,1,1,49,4,1,2,4,4,1,1,25,23,1,2,8,23,30,2,9,23,1,1,50,4,2,1,1,4,1,2,10,23,29,2,9,1,13,2,9,23,25,2,8,23,1,1,27,4,1,2,15,4,1,1,28,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,123,4,1,23,1,2,107,23,1,4,1,1,1449,}, + {1,1163,4,2,23,1,2,133,4,4,2,214,23,1,4,1,1,209,4,1,2,9,23,29,2,10,23,1,1,47,23,1,2,6,23,1,1,24,4,1,2,8,23,30,2,10,23,1,1,51,4,1,2,10,23,30,2,9,1,13,2,9,23,25,2,8,23,1,1,28,23,1,2,13,4,1,1,29,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,123,4,1,23,1,2,107,23,1,4,1,1,1449,}, + {1,1162,4,2,23,1,2,352,23,1,4,1,1,210,2,9,23,30,2,10,23,1,4,1,1,44,4,1,2,8,23,1,1,24,2,9,23,30,2,10,23,1,1,49,4,1,2,10,23,31,2,8,4,1,1,13,2,9,23,25,2,8,23,1,1,29,23,1,2,11,23,1,1,30,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,121,4,3,23,1,2,107,23,1,4,1,1,1449,}, + {1,1162,23,3,2,352,23,1,4,1,1,210,4,1,2,8,23,30,2,11,23,1,4,1,1,42,23,1,2,10,4,1,1,23,23,1,2,8,23,31,2,10,23,1,1,46,4,2,2,11,23,30,2,9,1,14,2,9,23,25,2,8,23,1,1,30,2,11,4,1,1,30,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,120,4,2,23,2,2,108,23,1,4,1,1,1449,}, + {1,1162,2,355,23,1,4,1,1,211,2,9,23,30,2,11,23,1,4,1,1,40,23,1,2,12,4,1,1,22,4,1,2,9,23,30,2,11,23,1,1,3,4,1,1,41,4,1,2,11,23,31,2,9,1,14,2,9,23,25,2,8,23,1,1,31,2,9,4,1,1,31,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,120,4,1,23,1,2,110,23,1,4,1,1,1449,}, + {1,1162,2,355,23,1,4,1,1,211,23,1,2,8,23,31,2,12,4,1,1,37,4,1,2,15,4,2,1,21,2,9,23,31,2,12,4,1,1,35,4,1,1,6,23,1,2,11,23,32,2,8,4,1,1,14,2,9,23,25,2,8,23,1,1,30,4,2,2,7,4,1,1,32,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,120,4,1,23,1,2,110,23,1,4,1,1,1449,}, + {1,1162,2,355,23,1,4,1,1,211,4,1,2,9,23,31,2,12,23,1,4,1,1,33,4,1,23,1,2,17,4,2,1,20,4,1,2,8,23,32,2,12,23,1,1,32,4,1,1,6,4,1,2,12,23,32,2,9,1,15,2,9,23,25,2,8,23,1,1,32,23,1,2,5,23,1,1,33,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,120,4,1,23,1,2,110,23,1,4,1,1,1449,}, + {1,1162,2,355,23,1,4,1,1,212,2,9,23,32,2,13,23,1,4,1,1,29,4,2,2,20,23,1,1,20,4,1,2,9,23,32,2,13,4,1,1,31,4,1,1,4,23,1,2,12,23,33,2,8,23,1,1,15,2,9,23,25,2,8,23,1,1,33,23,1,2,3,23,1,1,34,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,120,4,1,23,1,2,110,23,1,4,1,1,1449,}, + {1,1162,2,355,23,1,4,1,1,212,4,1,2,9,23,32,2,14,23,1,4,1,1,25,4,2,2,23,23,1,1,20,23,1,2,8,23,33,2,13,23,1,4,1,1,31,4,2,2,13,23,33,2,9,4,1,1,15,2,9,23,25,2,8,23,1,1,33,4,1,2,3,1,35,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,116,4,5,23,1,2,110,23,1,4,1,1,1449,}, + {1,1162,2,355,23,1,4,1,1,212,4,1,2,9,23,34,2,15,4,1,1,21,4,1,23,1,2,26,4,1,1,19,4,1,2,9,23,33,2,14,23,1,4,1,1,28,4,1,2,14,23,34,2,8,23,1,1,16,2,9,23,25,2,8,23,1,1,35,2,1,4,1,1,35,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,114,4,6,23,1,2,111,23,1,4,1,1,1449,}, + {1,1162,2,355,23,1,4,1,1,213,4,1,2,9,23,34,2,17,23,1,4,2,1,10,4,3,23,1,2,18,23,2,2,11,4,1,1,19,2,9,23,35,2,15,4,1,1,23,4,1,23,1,2,15,23,34,2,9,4,1,1,16,2,9,23,25,2,8,23,1,1,35,4,1,1,36,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,113,4,2,23,3,2,114,23,1,4,1,1,1449,}, + {1,1162,2,355,23,1,4,1,1,214,2,9,23,35,2,21,23,7,2,22,23,4,2,11,23,1,1,18,4,1,2,9,23,35,2,17,4,3,1,13,4,3,23,1,2,17,23,35,2,9,1,17,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,113,4,2,23,1,2,116,23,1,4,1,1,1449,}, + {1,1162,2,355,23,1,4,1,1,214,4,1,2,9,23,36,2,46,23,7,2,11,23,1,1,18,2,9,23,36,2,20,23,1,4,9,23,3,2,18,23,36,2,9,4,1,1,17,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,113,4,1,23,1,2,117,23,1,4,1,1,1449,}, + {1,1162,2,355,23,1,4,1,1,215,2,10,23,36,2,44,23,9,2,11,23,1,1,17,4,1,2,9,23,36,2,49,23,37,2,9,4,1,1,2,4,1,1,14,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,113,4,1,23,1,2,117,23,1,4,1,1,1449,}, + {1,1162,2,355,23,1,4,1,1,215,4,1,2,9,23,38,2,40,23,12,2,11,4,1,1,17,2,9,23,38,2,45,23,38,2,9,4,1,1,18,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,113,4,1,23,1,2,117,23,1,4,1,1,1449,}, + {1,1162,2,355,23,1,4,1,1,216,2,10,23,39,2,36,23,15,2,11,23,1,1,15,4,2,2,9,23,39,2,41,23,40,2,9,1,19,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,113,4,1,23,1,2,116,23,1,4,2,1,1449,}, + {1,1162,2,355,23,1,4,1,1,216,4,1,2,9,23,42,2,30,23,19,2,11,23,1,1,16,2,10,23,40,2,38,23,40,2,9,4,1,1,19,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,113,4,1,23,1,2,115,23,2,4,2,1,1449,}, + {1,1162,2,355,23,1,4,1,1,217,23,1,2,9,23,44,2,24,23,23,2,11,23,1,1,15,4,1,2,9,23,42,2,33,23,42,2,9,23,1,4,1,1,19,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,113,4,1,23,1,2,114,23,1,4,3,1,1450,}, + {1,1162,2,355,23,1,4,1,1,217,4,1,2,10,23,48,2,14,23,29,2,11,4,1,1,15,2,10,23,45,2,26,23,45,2,9,4,1,1,20,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,113,4,1,23,1,2,113,23,1,4,2,1,1452,}, + {1,1162,2,355,23,1,4,1,1,218,4,1,2,10,23,91,2,11,4,2,1,13,4,1,2,10,23,48,2,17,23,49,2,9,23,1,1,21,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,113,4,1,23,1,2,112,23,2,4,2,1,1452,}, + {1,1162,2,355,23,1,4,1,1,219,2,10,23,92,2,11,23,1,1,14,23,1,2,9,23,113,2,10,4,1,1,21,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,113,4,1,23,1,2,111,23,1,4,3,1,1453,}, + {1,1162,2,355,23,1,4,2,1,218,4,1,2,10,23,92,2,11,23,1,1,14,2,10,23,112,2,9,23,1,1,22,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,113,4,1,23,1,2,110,23,1,4,2,1,1455,}, + {1,1162,2,356,23,1,4,3,1,217,4,1,2,10,23,92,2,11,4,1,1,13,4,1,2,10,23,110,2,10,1,23,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,113,4,1,23,1,2,109,23,2,4,1,1,1456,}, + {1,1162,2,357,23,1,4,2,1,218,23,1,2,10,23,92,2,11,4,1,1,13,23,1,2,10,23,108,2,10,4,1,1,23,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,113,4,1,23,1,2,108,23,1,4,3,1,1456,}, + {1,1162,2,358,23,1,4,1,1,218,4,1,2,11,23,92,2,11,23,1,1,12,4,1,2,10,23,107,2,10,23,1,1,24,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,113,4,1,23,1,2,107,23,1,4,3,1,1457,}, + {1,1162,2,358,23,1,4,1,1,219,4,1,2,11,23,92,2,11,23,1,1,12,4,1,2,10,23,105,2,10,23,1,1,25,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,113,4,1,23,1,2,107,23,1,4,1,1,1459,}, + {1,1162,2,358,23,1,4,1,1,220,4,1,2,11,23,92,2,11,4,1,1,12,4,1,2,10,23,103,2,11,1,26,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,113,4,1,23,1,2,107,23,1,4,1,1,1459,}, + {1,1162,2,358,23,1,4,1,1,220,4,2,2,11,23,92,2,11,4,2,1,11,23,1,2,10,23,101,2,11,1,27,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,113,4,1,23,1,2,107,23,1,4,1,1,1459,}, + {1,1162,2,358,23,1,4,3,1,220,23,1,2,11,23,90,2,12,4,2,1,12,2,11,23,99,2,11,4,1,1,27,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,113,4,1,23,1,2,107,23,1,4,1,1,1459,}, + {1,1162,2,359,23,2,4,2,1,217,4,1,1,2,23,1,2,11,23,88,2,12,23,1,1,14,4,1,2,11,23,97,2,11,23,1,1,28,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,113,4,1,23,1,2,107,23,1,4,1,1,1459,}, + {1,1162,2,361,23,1,4,2,1,220,23,1,2,11,23,86,2,12,23,1,1,16,4,1,2,11,23,95,2,11,23,1,4,1,1,28,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,113,4,1,23,1,2,107,23,1,4,1,1,1459,}, + {1,1162,2,362,23,1,4,2,1,220,23,1,2,11,23,84,2,12,23,1,1,18,4,1,2,11,23,93,2,11,23,1,1,30,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,113,4,1,23,1,2,107,23,1,4,1,1,1459,}, + {1,1162,2,362,23,2,4,2,1,220,23,1,2,12,23,81,2,12,23,1,1,20,4,1,2,11,23,91,2,12,1,31,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,113,4,1,23,1,2,107,23,1,4,1,1,1459,}, + {1,1162,2,364,23,1,4,2,1,220,23,1,2,12,23,78,2,13,23,1,1,22,4,1,2,11,23,89,2,12,1,32,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,113,4,1,23,1,2,107,23,1,4,1,1,1459,}, + {1,1162,2,365,4,2,1,221,23,1,2,12,23,76,2,13,4,1,1,20,4,1,1,3,4,1,2,12,23,86,2,12,4,1,1,32,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,113,4,1,23,1,2,107,23,1,4,1,1,1459,}, + {1,1162,2,365,23,1,4,1,1,222,4,1,2,13,23,73,2,13,4,1,1,26,4,1,2,12,23,83,2,13,1,34,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,113,4,2,2,107,23,1,4,1,1,1459,}, + {1,1162,23,3,2,362,23,1,4,1,1,223,4,1,2,13,23,70,2,14,4,1,1,28,4,1,2,12,23,81,2,12,23,1,1,3,4,1,1,31,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,113,4,2,2,107,23,1,4,1,1,1459,}, + {1,1162,4,3,23,1,2,361,23,1,4,1,1,224,4,1,2,14,23,67,2,13,23,1,1,31,4,1,2,13,23,78,2,12,23,1,1,36,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,113,4,1,23,1,2,107,23,1,4,1,1,1459,}, + {1,1163,4,2,23,1,2,361,23,1,4,1,1,225,4,1,23,1,2,14,23,63,2,14,23,1,1,33,4,1,2,13,23,75,2,13,4,1,1,37,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,111,4,3,23,1,2,107,23,1,4,1,1,1459,}, + {1,1164,4,2,23,2,2,359,23,1,4,1,1,227,23,1,2,15,23,59,2,15,4,1,1,35,4,1,23,1,2,13,23,72,2,13,4,1,1,38,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,111,4,1,23,2,2,108,23,1,4,1,1,1459,}, + {1,1165,4,3,23,1,2,358,23,1,4,1,1,228,4,1,2,16,23,55,2,15,23,1,4,1,1,38,4,1,2,14,23,68,2,14,1,40,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,110,4,2,23,1,2,109,23,1,4,1,1,1459,}, + {1,1167,4,1,23,1,2,358,23,1,4,1,1,228,4,2,23,1,2,16,23,51,2,16,4,1,1,41,4,1,2,15,23,64,2,14,23,1,1,41,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,105,4,6,23,1,2,110,23,1,4,1,1,1459,}, + {1,1167,4,2,23,2,2,356,23,1,4,1,1,227,4,1,1,3,4,1,2,18,23,45,2,17,23,1,4,1,1,43,4,1,23,1,2,15,23,60,2,15,4,1,1,42,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,104,4,2,23,5,2,111,23,1,4,1,1,1459,}, + {1,1168,4,3,23,1,2,355,23,1,4,1,1,229,4,1,1,3,4,1,2,18,23,41,2,18,4,1,1,42,4,1,1,4,4,1,2,16,23,56,2,15,23,1,4,1,1,43,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,103,4,2,23,1,2,116,23,1,4,1,1,1459,}, + {1,1169,4,2,23,1,2,355,23,1,4,1,1,234,4,1,23,1,2,20,23,33,2,20,23,1,4,1,1,50,23,1,2,16,23,51,2,17,4,1,1,45,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,103,4,2,23,1,2,116,23,1,4,1,1,1459,}, + {1,1170,4,1,23,1,2,355,23,1,4,1,1,236,4,1,23,1,2,23,23,23,2,23,23,1,1,54,4,1,2,18,23,45,2,18,23,1,1,47,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,43,4,1,1,103,4,2,2,117,23,1,4,1,1,1459,}, + {1,1170,4,1,23,1,2,355,23,1,4,1,1,238,4,1,23,1,2,65,23,1,4,1,1,57,4,1,2,19,23,39,2,19,23,1,4,1,1,2,4,1,1,1,4,1,1,43,2,42,23,1,1,72,23,1,2,41,23,1,1,14,2,38,1,137,4,1,2,43,4,1,1,103,4,2,2,117,23,1,4,1,1,1459,}, + {1,1170,4,1,23,1,2,355,23,1,4,1,1,240,4,2,2,61,23,1,4,1,1,60,4,1,23,1,2,20,23,33,2,21,4,1,1,50,2,42,23,1,1,72,23,1,2,41,23,1,1,14,2,38,1,137,4,1,2,43,4,1,1,103,4,2,23,1,2,116,23,1,4,1,1,1459,}, + {1,1170,4,1,23,1,2,355,23,1,4,1,1,243,4,1,2,57,23,1,1,66,23,1,2,24,23,21,2,25,4,1,1,52,2,42,23,1,1,72,23,1,2,41,23,1,1,14,2,38,1,137,4,1,2,43,4,1,1,103,4,2,23,1,2,115,23,1,4,2,1,1459,}, + {1,1170,4,1,23,1,2,355,23,1,4,1,1,245,4,1,23,1,2,51,23,1,4,1,1,70,23,1,2,66,4,1,1,54,2,42,23,1,1,72,23,1,2,41,23,1,1,14,2,38,1,137,4,1,2,43,4,1,1,103,4,2,23,1,2,114,23,2,4,2,1,1459,}, + {1,1170,4,1,23,1,2,355,23,1,4,1,1,248,4,1,23,1,2,45,23,1,4,1,1,75,4,1,2,61,23,1,4,1,1,56,2,42,23,1,1,72,23,1,2,41,23,1,1,14,2,38,1,137,4,1,2,43,4,1,1,103,4,2,23,1,2,113,23,1,4,3,1,1460,}, + {1,1170,4,1,23,1,2,355,23,1,4,1,1,251,4,1,23,2,2,38,23,1,4,1,1,80,4,1,23,1,2,56,23,1,4,1,1,58,2,42,4,1,1,72,23,1,2,41,23,1,1,14,2,38,1,137,4,1,2,43,4,1,1,103,4,2,23,1,2,113,23,1,4,1,1,1462,}, + {1,1170,4,1,23,1,2,355,23,1,4,1,1,254,4,2,23,2,2,30,23,1,4,3,1,84,4,2,2,51,23,1,4,1,1,61,2,42,23,1,1,72,23,1,2,41,23,1,1,14,2,38,1,138,2,42,23,1,1,104,4,2,23,1,2,113,23,1,4,1,1,1462,}, + {1,1170,4,1,23,1,2,355,23,1,4,1,1,260,4,2,23,2,2,17,23,2,4,2,1,95,4,1,23,1,2,44,23,1,4,1,1,64,2,42,4,1,1,72,23,1,2,41,4,1,1,3,4,1,1,10,2,38,1,285,4,2,23,1,2,113,23,1,4,1,1,1462,}, + {1,1170,4,1,23,1,2,355,23,1,4,2,1,267,4,3,1,5,4,1,1,106,4,2,2,37,23,1,4,2,1,69,4,1,1,4,4,29,1,2,4,2,1,1,4,1,1,76,4,2,1,2,4,1,1,1,4,31,1,18,4,2,1,1,4,1,1,1,4,17,1,1,4,9,1,2,4,1,1,287,4,2,23,1,2,113,23,1,4,1,1,1462,}, + {1,1170,4,1,23,1,2,356,23,1,4,3,1,383,4,3,23,2,2,25,23,2,4,4,1,565,4,2,23,1,2,113,23,1,4,1,1,1462,}, + {1,1170,4,1,23,1,2,357,23,1,4,2,1,389,4,4,23,2,2,11,23,3,4,5,1,570,4,2,23,1,2,113,23,1,4,1,1,1462,}, + {1,1170,4,1,23,1,2,358,23,1,4,1,1,984,4,2,23,1,2,113,23,1,4,1,1,1462,}, + {1,1170,4,2,23,1,2,357,23,1,4,1,1,984,4,2,23,1,2,113,23,1,4,1,1,1462,}, + {1,1171,4,5,23,2,2,352,23,1,4,1,1,984,4,2,23,1,2,113,23,1,4,1,1,1462,}, + {1,1172,4,6,23,1,2,351,23,1,4,1,1,984,4,2,23,1,2,113,23,1,4,1,1,1462,}, + {1,1177,4,1,23,1,2,351,23,1,4,1,1,984,4,2,23,1,2,113,23,1,4,1,1,1462,}, + {1,1177,4,2,23,2,2,349,23,1,4,1,1,984,4,2,23,1,2,113,23,1,4,1,1,1462,}, + {1,1178,4,3,23,1,2,348,23,1,4,1,1,984,4,2,23,1,2,113,23,1,4,1,1,1462,}, + {1,1180,4,1,23,1,2,348,23,1,4,3,1,982,4,2,23,1,2,112,23,1,4,2,1,1462,}, + {1,1180,4,1,23,1,2,349,23,2,4,2,1,981,4,2,23,1,2,111,23,2,4,2,1,1462,}, + {1,1180,4,1,23,1,2,351,23,1,4,1,1,981,4,2,23,1,2,110,23,1,4,3,1,1463,}, + {1,1180,4,1,23,1,2,351,23,1,4,2,1,980,4,2,23,1,2,109,23,1,4,2,1,1465,}, + {1,1180,4,1,23,1,2,351,23,1,4,1,1,982,4,1,23,1,2,108,23,2,4,1,1,1466,}, + {1,1180,4,1,23,1,2,351,23,1,4,1,1,981,4,2,23,1,2,107,23,1,4,3,1,1466,}, + {1,1180,4,1,23,1,2,351,23,1,4,3,1,979,4,1,23,1,2,107,23,1,4,2,1,1468,}, + {1,1180,4,1,23,1,2,352,23,1,4,3,1,978,23,2,2,107,23,1,4,1,1,1469,}, + {1,1180,4,1,23,1,2,353,23,2,4,1,1,978,2,109,23,1,4,2,1,1468,}, + {1,1180,4,1,23,1,2,354,23,1,4,2,1,977,2,109,23,1,4,2,1,1468,}, + {1,1180,4,1,23,1,2,355,23,1,4,3,1,975,2,109,23,1,4,1,1,1469,}, + {1,1180,4,1,23,1,2,356,23,2,4,2,1,974,2,107,23,2,4,2,1,1469,}, + {1,1180,4,1,23,1,2,357,23,1,4,2,1,974,2,106,23,1,4,3,1,1470,}, + {1,1180,4,1,23,1,2,358,23,1,4,1,1,974,2,106,23,1,4,1,1,1472,}, + {1,1180,4,2,23,8,2,350,23,1,4,1,1,974,2,106,23,1,4,1,1,1472,}, + {1,1181,4,9,23,1,2,349,23,1,4,1,1,974,2,106,23,1,4,1,1,1472,}, + {1,1189,4,2,23,1,2,348,23,1,4,1,1,974,2,106,23,1,4,1,1,1472,}, + {1,1190,4,1,23,1,2,348,23,1,4,1,1,974,2,106,23,1,4,1,1,1472,}, + {1,1190,4,1,23,1,2,348,23,1,4,1,1,974,2,106,23,1,4,1,1,1472,}, + {1,1190,4,1,23,1,2,348,23,1,4,1,1,974,2,106,23,1,4,1,1,1472,}, + {1,1190,4,1,23,2,2,347,23,1,4,1,1,974,2,106,23,1,4,1,1,1472,}, + {1,1190,4,3,23,1,2,346,23,1,4,1,1,974,2,106,23,1,4,1,1,1472,}, + {1,1191,4,3,23,1,2,345,23,1,4,1,1,974,2,106,23,1,4,1,1,1472,}, + {1,1192,4,3,23,1,2,344,23,1,4,1,1,974,2,106,23,1,4,1,1,1472,}, + {1,1193,4,3,23,8,2,336,23,1,4,1,1,974,2,106,23,1,4,1,1,1472,}, + {1,1194,4,9,23,1,2,336,23,1,4,1,1,974,2,106,23,1,4,1,1,1472,}, + {1,1203,4,1,23,1,2,335,23,1,4,1,1,974,2,106,23,1,4,1,1,1472,}, + {1,1203,4,2,23,2,2,333,23,1,4,1,1,974,2,101,23,5,4,2,1,1472,}, + {1,1204,4,2,23,2,2,332,23,1,4,1,1,974,2,100,23,1,4,6,1,1473,}, + {1,1206,4,1,23,1,2,332,23,1,4,1,1,974,2,100,4,2,1,2,4,1,1,1475,}, + {1,1206,4,2,23,1,2,331,23,1,4,1,1,974,2,100,4,2,1,1478,}, + {1,1207,4,2,23,2,2,329,23,1,4,1,1,974,2,100,4,2,1,1478,}, + {1,1208,4,2,23,1,2,329,23,1,4,2,1,953,4,2,23,1,2,116,23,1,4,2,1,1478,}, + {1,1209,4,2,23,1,2,328,23,2,4,2,1,950,4,3,23,1,2,117,23,1,4,2,1,1478,}, + {1,1210,4,3,23,7,4,1,23,3,2,318,23,1,4,2,1,949,4,2,23,1,2,116,23,2,4,2,1,1479,}, + {1,1211,4,12,23,1,2,319,23,1,4,1,1,949,4,1,23,1,2,116,23,1,4,3,1,1480,}, + {1,1222,4,2,23,1,2,318,23,2,4,2,1,947,4,1,23,1,2,116,23,1,4,2,1,1481,}, + {1,1223,4,2,23,5,2,315,23,1,4,2,1,946,4,1,23,1,2,116,23,1,4,1,1,1482,}, + {1,1224,4,6,23,1,2,315,23,1,4,2,1,944,4,2,23,1,2,116,23,1,4,1,1,1482,}, + {1,1229,4,1,23,1,2,315,23,2,4,2,1,938,4,6,23,1,2,117,23,1,4,1,1,1482,}, + {1,1229,4,2,23,2,2,314,23,2,4,2,1,937,4,2,23,5,2,117,23,1,4,2,1,1481,}, + {1,1230,4,3,23,1,2,315,23,1,4,2,1,935,4,2,23,1,2,122,23,1,4,2,1,1481,}, + {1,1232,4,1,23,1,2,316,4,2,1,930,4,6,23,1,2,123,23,1,4,2,1,1481,}, + {1,1232,4,1,23,1,2,316,4,2,1,929,4,3,23,4,2,124,23,1,4,2,1,1481,}, + {1,1232,4,1,23,1,2,316,4,2,1,929,4,1,23,2,2,128,23,1,4,2,1,1481,}, + {1,1232,4,1,23,1,2,316,4,2,1,929,4,1,23,1,2,129,23,1,4,2,1,1481,}, + {1,1232,4,1,23,1,2,316,4,2,1,929,4,1,23,1,2,129,23,1,4,2,1,1481,}, + {1,1232,4,1,23,1,2,316,4,2,1,929,4,1,23,1,2,129,23,1,4,2,1,1481,}, + {1,1232,4,1,23,1,2,316,4,2,1,928,4,2,23,1,2,129,23,1,4,1,1,1482,}, + {1,1232,4,1,23,1,2,316,4,2,1,428,4,115,1,380,4,6,23,1,2,130,23,1,4,2,1,1481,}, + {1,1232,4,1,23,1,2,316,4,2,1,427,4,2,23,113,4,2,1,378,4,2,23,5,2,131,23,1,4,2,1,1481,}, + {1,1232,4,1,23,1,2,316,4,2,1,426,4,2,23,1,2,113,23,1,4,1,1,378,4,2,23,1,2,135,23,1,4,1,1,1482,}, + {1,1232,4,1,23,1,2,316,23,1,4,2,1,296,4,130,23,1,2,114,23,1,4,173,1,187,4,20,23,1,2,136,23,1,4,1,1,1482,}, + {1,1232,4,1,23,1,2,317,23,1,4,2,1,295,4,2,23,129,2,115,23,171,4,2,1,187,4,2,23,18,2,136,23,1,4,2,1,1482,}, + {1,1232,4,1,23,1,2,318,23,1,4,2,1,293,4,2,23,1,2,415,23,1,4,2,1,186,4,1,23,1,2,152,23,2,4,2,1,1483,}, + {1,1232,4,1,23,1,2,319,23,1,4,2,1,291,4,2,23,1,2,417,23,1,4,2,1,184,4,2,23,1,2,152,23,1,4,1,1,1485,}, + {1,1232,4,2,23,2,2,318,23,1,4,3,1,288,4,2,23,1,2,419,23,1,4,2,1,183,4,2,23,1,2,150,23,2,4,2,1,1485,}, + {1,1233,4,9,23,1,2,312,23,1,4,2,1,287,4,2,23,1,2,421,23,1,4,2,1,183,4,1,23,1,2,146,23,2,4,5,1,1486,}, + {1,1234,4,9,23,1,2,312,23,1,4,2,1,285,4,2,23,1,2,423,23,1,4,5,1,178,4,2,2,147,23,1,4,5,1,1487,}, + {1,1242,4,1,23,1,2,313,23,1,4,3,1,282,4,2,23,1,2,424,23,2,4,6,1,174,4,3,23,1,2,147,4,2,1,1491,}, + {1,1242,4,1,23,1,2,314,23,1,4,2,1,281,4,2,23,1,2,427,23,5,4,1,1,174,4,1,23,2,2,147,23,1,4,2,1,1491,}, + {1,1242,4,1,23,1,2,315,23,1,4,2,1,279,4,2,23,1,2,432,23,1,4,2,1,172,4,2,23,1,2,149,4,2,1,1491,}, + {1,1242,4,1,23,1,2,315,23,1,4,2,1,235,4,45,23,1,2,434,23,1,4,78,1,54,4,42,23,1,2,149,23,1,4,2,1,1491,}, + {1,1242,4,1,23,1,2,315,23,1,4,2,1,234,4,2,23,44,2,436,23,76,4,3,1,52,4,2,23,41,2,151,4,2,1,1491,}, + {1,1242,4,1,23,1,2,315,23,1,4,2,1,234,4,2,23,1,2,555,23,1,4,2,1,52,4,1,23,1,2,192,4,2,1,1491,}, + {1,1242,4,1,23,1,2,315,23,1,4,2,1,233,4,2,23,1,2,557,23,1,4,6,1,47,4,1,23,1,2,192,4,2,1,1491,}, + {1,1242,4,1,23,1,2,315,23,1,4,1,1,232,4,2,23,2,2,559,23,4,4,3,1,46,4,1,23,1,2,192,4,2,1,1491,}, + {1,1242,4,1,23,1,2,315,23,1,4,1,1,232,4,1,23,2,2,564,23,2,4,1,1,46,4,1,23,1,2,192,4,2,1,1491,}, + {1,1242,4,1,23,1,2,315,23,1,4,3,1,230,4,1,23,1,2,566,23,1,4,2,1,44,4,2,23,1,2,192,4,2,1,1491,}, + {1,1242,4,2,23,1,2,315,23,1,4,3,1,229,4,1,23,1,2,567,23,1,4,3,1,40,4,3,23,1,2,193,4,2,1,1491,}, + {1,1242,4,3,23,1,2,315,23,2,4,1,1,229,4,1,23,1,2,568,23,2,4,2,1,39,4,2,23,1,2,194,4,2,1,1491,}, + {1,1244,4,2,23,1,2,315,23,1,4,3,1,1,4,27,1,114,4,83,1,1,4,2,23,1,2,569,23,1,4,38,1,1,4,3,23,1,2,195,4,2,1,1491,}, + {1,1245,4,1,23,1,2,316,23,1,4,32,1,109,4,88,23,1,2,571,23,2,4,39,23,1,2,196,4,2,1,1491,}, + {1,1245,4,1,23,1,2,318,23,30,4,2,1,108,4,2,23,86,2,574,23,39,2,197,4,2,1,1491,}, + {1,1245,4,1,23,1,2,348,23,1,4,2,1,106,4,2,23,1,2,895,23,1,4,2,1,1491,}, + {1,1245,4,2,23,1,2,348,23,1,4,12,1,2,4,50,1,32,4,12,23,1,2,896,23,1,4,2,1,1491,}, + {1,1245,4,3,23,4,2,345,23,11,4,5,23,47,4,2,1,30,4,2,23,11,2,892,23,5,4,2,1,1492,}, + {1,1246,4,6,23,1,2,355,23,1,4,3,23,1,2,47,23,1,4,1,1,30,4,1,23,1,2,902,23,1,4,7,1,1492,}, + {1,1251,4,2,23,1,2,354,23,1,4,2,23,1,2,49,23,1,4,2,1,26,4,3,23,1,2,902,23,1,4,1,1,1498,}, + {1,1251,4,2,23,1,2,355,23,2,2,50,23,2,4,2,1,24,4,2,23,2,2,901,23,2,4,2,1,1498,}, + {1,1251,4,2,23,1,2,409,23,1,4,2,1,23,4,1,23,1,2,902,23,1,4,3,1,1499,}, + {1,1252,4,1,23,1,2,410,23,1,4,24,23,1,2,903,23,1,4,2,1,1500,}, + {1,1252,4,2,23,1,2,409,23,2,4,22,23,2,2,903,23,1,4,1,1,1501,}, + {1,1252,4,3,23,1,2,1337,23,1,4,1,1,1501,}, + {1,1254,4,2,23,1,2,1336,23,1,4,1,1,1501,}, + {1,1255,4,1,23,1,2,1336,23,1,4,1,1,1501,}, + {1,1255,4,1,23,1,2,1336,23,1,4,1,1,1501,}, + {1,1255,4,1,23,1,2,1336,23,1,4,1,1,1501,}, + {1,1255,4,1,23,2,2,1335,23,1,4,1,1,1501,}, + {1,1255,4,2,23,5,2,1331,23,1,4,1,1,1501,}, + {1,1255,4,7,23,1,2,1330,23,1,4,1,1,1501,}, + {1,1261,4,2,2,1330,23,1,4,1,1,1501,}, + {1,1262,4,1,2,1330,23,1,4,1,1,1501,}, + {1,1261,4,2,2,1330,23,1,4,1,1,1501,}, + {1,1261,4,2,23,1,2,1328,23,1,4,2,1,1501,}, + {1,1262,4,1,23,2,2,1327,23,1,4,2,1,1501,}, + {1,1262,4,3,23,1,2,1324,23,2,4,2,1,1502,}, + {1,1263,4,3,23,1,2,1322,23,1,4,3,1,1503,}, + {1,1265,4,1,23,1,2,1322,23,1,4,1,1,1505,}, + {1,1264,4,2,23,1,2,1317,23,5,4,2,1,1505,}, + {1,1264,4,2,23,1,2,1316,23,1,4,6,1,1506,}, + {1,1264,4,2,23,1,2,1316,23,1,4,1,1,1511,}, + {1,1264,4,2,23,1,2,1316,23,1,4,1,1,1511,}, + {1,1264,4,2,23,1,2,1316,23,1,4,1,1,1511,}, + {1,1264,4,2,23,1,2,1316,23,1,4,1,1,1511,}, + {1,1264,4,2,23,1,2,1315,23,1,4,2,1,1511,}, + {1,1264,4,2,23,1,2,1313,23,1,4,3,1,1512,}, + {1,1264,4,2,23,1,2,1313,23,1,4,2,1,1513,}, + {1,1264,4,2,23,2,2,1311,23,1,4,2,1,1514,}, + {1,1265,4,5,23,2,2,1305,23,2,4,2,1,1515,}, + {1,1267,4,5,23,1,2,1303,23,2,4,2,1,1516,}, + {1,1271,4,1,23,1,2,1303,23,1,4,1,1,1518,}, + {1,1271,4,1,23,1,2,1301,23,2,4,2,1,1518,}, + {1,1271,4,1,23,1,2,1300,23,1,4,3,1,1519,}, + {1,1271,4,2,23,1,2,1299,23,1,4,1,1,1521,}, + {1,1271,4,3,23,1,2,1298,23,1,4,1,1,1521,}, + {1,1272,4,3,23,1,2,1297,23,1,4,1,1,1521,}, + {1,1274,4,2,2,1297,23,1,4,1,1,1521,}, + {1,1274,4,2,23,1,2,1295,23,1,4,2,1,1521,}, + {1,1274,4,2,23,1,2,1294,23,1,4,3,1,1521,}, + {1,1274,4,2,2,1294,23,1,4,2,1,1523,}, + {1,1274,4,2,2,1294,23,1,4,1,1,1524,}, + {1,1274,4,2,2,1294,23,1,4,1,1,1524,}, + {1,1274,4,2,2,1294,23,1,4,1,1,1524,}, + {1,1274,4,2,2,1294,23,1,4,1,1,1524,}, + {1,1274,4,2,2,1294,23,1,4,1,1,1524,}, + {1,1274,4,2,2,1294,23,1,4,1,1,1524,}, + {1,1274,4,2,2,1293,23,2,4,1,1,1524,}, + {1,1274,4,2,2,1289,23,5,4,2,1,1524,}, + {1,1274,4,2,2,1288,23,1,4,6,1,1525,}, + {1,1274,4,2,2,1287,23,1,4,2,1,1530,}, + {1,1274,4,2,2,1286,23,1,4,2,1,1531,}, + {1,1274,4,2,2,1285,23,1,4,3,1,1531,}, + {1,1274,4,2,2,1284,23,1,4,3,1,1532,}, + {1,1274,4,2,2,1284,23,1,4,1,1,1534,}, + {1,1274,4,2,2,1284,23,1,4,1,1,1534,}, + {1,1274,4,2,2,1284,23,1,4,1,1,1534,}, + {1,1274,4,2,2,1284,23,1,4,1,1,1534,}, + {1,1274,4,2,2,1284,23,1,4,1,1,1534,}, + {1,1274,4,2,2,1284,23,1,4,1,1,1534,}, + {1,1274,4,2,2,1284,23,1,4,1,1,1534,}, + {1,1274,4,2,2,1284,23,1,4,1,1,1534,}, + {1,1274,4,2,2,1284,23,1,4,1,1,1534,}, + {1,1274,4,2,2,1284,23,1,4,1,1,1534,}, + {1,1274,4,2,2,1284,23,1,4,1,1,1534,}, + {1,1274,4,2,2,1284,23,1,4,1,1,1534,}, + {1,1274,4,2,2,1284,23,1,4,1,1,1534,}, + {1,1274,4,2,2,1284,23,1,4,1,1,1534,}, + {1,1274,4,2,2,1284,23,1,4,1,1,1534,}, + {1,1274,4,2,2,1284,23,1,4,1,1,1534,}, + {1,1274,4,2,2,1284,23,1,4,1,1,1534,}, + {1,1274,4,2,2,1284,23,1,4,1,1,1534,}, + {1,1274,4,2,2,1284,23,1,4,1,1,1534,}, + {1,1274,4,2,2,1284,23,1,4,1,1,1534,}, + {1,1274,4,2,23,1,2,1283,23,1,4,1,1,1534,}, + {1,1274,4,2,2,1284,23,1,4,1,1,1534,}, + {1,1274,4,2,2,1284,23,1,4,1,1,1534,}, + {1,1274,4,2,2,1283,23,1,4,2,1,1534,}, + {1,1274,4,2,2,1281,23,2,4,2,1,1535,}, + {1,1274,4,2,23,1,2,1280,23,1,4,2,1,1536,}, + {1,1274,4,2,23,1,2,1280,23,2,4,2,1,1535,}, + {1,1275,4,2,23,2,2,1279,23,2,4,2,1,1534,}, + {1,1276,4,3,23,1,2,1280,23,1,4,1,1,1534,}, + {1,1278,4,1,23,1,2,1280,23,1,4,1,1,1534,}, + {1,1278,4,2,23,2,2,1278,23,1,4,1,1,1534,}, + {1,1279,4,3,23,1,2,1277,23,1,4,1,1,1534,}, + {1,1281,4,1,23,1,2,1277,23,1,4,1,1,1534,}, + {1,1281,4,2,23,1,2,1276,23,1,4,1,1,1534,}, + {1,1282,4,3,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,1,23,1,2,1274,23,1,4,1,1,1534,}, + {1,1284,4,2,23,1,2,1273,23,1,4,1,1,1534,}, + {1,1285,4,1,23,2,2,1272,23,1,4,1,1,1534,}, + {1,1285,4,3,23,1,2,1271,23,1,4,1,1,1534,}, + {1,1287,4,2,23,1,2,1270,23,1,4,1,1,1534,}, + {1,1288,4,2,23,1,2,1269,23,1,4,1,1,1534,}, + {1,1288,4,3,23,1,2,1268,23,1,4,1,1,1534,}, + {1,1290,4,2,23,1,2,1267,23,1,4,2,1,1533,}, + {1,1291,4,2,23,1,2,1267,23,1,4,3,1,1531,}, + {1,1291,4,3,23,1,2,1267,23,2,4,1,1,1531,}, + {1,1293,4,2,23,1,2,1267,23,1,4,1,1,1531,}, + {1,1294,4,1,23,1,2,1267,23,1,4,2,1,1530,}, + {1,1294,4,1,23,1,2,1267,23,1,4,1,1,1531,}, + {1,1294,4,1,23,1,2,1267,23,1,4,2,1,1530,}, + {1,1294,4,1,23,1,2,1267,23,1,4,2,1,1530,}, + {1,1294,4,1,23,1,2,1267,23,1,4,2,1,1530,}, + {1,1294,4,1,23,1,2,1267,23,1,4,2,1,1530,}, + {1,1294,4,1,23,1,2,1267,23,1,4,2,1,1530,}, + {1,1294,4,1,23,1,2,1267,23,1,4,2,1,1530,}, + {1,1294,4,1,23,1,2,1267,23,1,4,2,1,1530,}, + {1,1294,4,1,23,1,2,1267,23,1,4,2,1,1530,}, + {1,1294,4,1,23,1,2,1267,23,1,4,2,1,1530,}, + {1,1294,4,1,23,1,2,1267,23,1,4,2,1,1530,}, + {1,1294,4,1,23,1,2,1268,4,2,1,1530,}, + {1,1294,4,1,23,1,2,1268,23,1,4,3,1,1528,}, + {1,1294,4,1,23,1,2,1269,23,1,4,2,1,1528,}, + {1,1294,4,1,23,1,2,1270,23,1,4,2,1,1527,}, + {1,1294,4,1,23,1,2,1271,23,1,4,2,1,1526,}, + {1,1294,4,1,23,1,2,1272,23,1,4,3,1,1524,}, + {1,1294,4,1,23,1,2,1273,23,1,4,2,1,1524,}, + {1,1294,4,1,23,1,2,1274,23,1,4,1,1,1524,}, + {1,1294,4,1,23,1,2,1274,23,1,4,1,1,1524,}, + {1,1294,4,1,23,1,2,1274,23,1,4,1,1,1524,}, + {1,1294,4,1,23,1,2,1274,23,1,4,1,1,1524,}, + {1,1294,4,1,23,1,2,1274,23,1,4,1,1,1524,}, + {1,1294,4,1,23,1,2,1274,23,1,4,1,1,1524,}, + {1,1294,4,1,23,1,2,1274,23,1,4,1,1,1524,}, + {1,1294,4,2,23,1,2,1273,23,1,4,1,1,1524,}, + {1,1294,4,2,23,2,2,1272,23,1,4,1,1,1524,}, + {1,1295,4,3,23,1,2,1271,23,1,4,1,1,1524,}, + {1,1297,4,1,23,1,2,1271,23,1,4,1,1,1524,}, + {1,1297,4,1,23,1,2,1271,23,1,4,1,1,1524,}, + {1,1297,4,1,23,1,2,1271,23,1,4,1,1,1524,}, + {1,1297,4,1,23,1,2,1271,23,1,4,1,1,1524,}, + {1,1297,4,1,23,1,2,1271,23,1,4,1,1,1524,}, + {1,1297,4,1,23,1,2,1271,23,1,4,1,1,1524,}, + {1,1297,4,1,23,1,2,1271,23,1,4,1,1,1524,}, + {1,1297,4,1,23,1,2,1271,23,1,4,1,1,1524,}, + {1,1297,4,1,23,1,2,1271,23,1,4,1,1,1524,}, + {1,1297,4,1,23,1,2,1271,23,1,4,1,1,1524,}, + {1,1297,4,1,23,1,2,1271,23,1,4,1,1,1524,}, + {1,1297,4,1,23,1,2,1271,23,1,4,1,1,1524,}, + {1,1297,4,1,23,1,2,1271,23,1,4,1,1,1524,}, + {1,1297,4,1,23,1,2,1271,23,1,4,1,1,1524,}, + {1,1297,4,1,23,1,2,1271,23,1,4,1,1,1524,}, + {1,1297,4,1,23,1,2,1271,23,1,4,1,1,1524,}, + {1,1297,4,1,23,1,2,1271,23,1,4,1,1,1524,}, + {1,1297,4,1,23,1,2,1271,23,1,4,1,1,1524,}, + {1,1297,4,1,23,1,2,1271,23,1,4,1,1,1524,}, + {1,1297,4,1,23,1,2,1271,23,1,4,1,1,1524,}, + {1,1297,4,2,23,1,2,1270,23,1,4,1,1,1524,}, + {1,1297,4,3,23,5,2,1265,23,1,4,1,1,1524,}, + {1,1299,4,5,23,2,2,1264,23,1,4,1,1,1524,}, + {1,1304,4,1,23,1,2,1264,23,1,4,1,1,1524,}, + {1,1304,4,1,23,1,2,1264,23,1,4,1,1,1524,}, + {1,1304,4,1,23,1,2,1264,23,1,4,1,1,1524,}, + {1,1304,4,1,23,1,2,1264,23,1,4,1,1,1524,}, + {1,1304,4,1,23,1,2,1264,23,1,4,1,1,1524,}, + {1,1304,4,1,23,1,2,1264,23,1,4,1,1,1524,}, + {1,1304,4,1,23,1,2,1264,23,1,4,1,1,1524,}, + {1,1304,4,1,23,1,2,1264,23,1,4,1,1,1524,}, + {1,1304,4,1,23,1,2,1264,23,1,4,1,1,1524,}, + {1,1304,4,1,23,1,2,1264,23,1,4,1,1,1524,}, + {1,1304,4,1,23,1,2,1264,23,1,4,1,1,1524,}, + {1,1304,4,1,23,1,2,1264,23,1,4,1,1,1524,}, + {1,1304,4,1,23,1,2,1264,23,1,4,1,1,1524,}, + {1,1304,4,1,23,1,2,1264,23,1,4,1,1,1524,}, + {1,1304,4,2,23,2,2,1262,23,1,4,1,1,1524,}, + {1,1305,4,3,23,1,2,1261,23,1,4,1,1,1524,}, + {1,1307,4,1,23,1,2,1261,23,1,4,1,1,1524,}, + {1,1307,4,1,23,1,2,1261,23,1,4,1,1,1524,}, + {1,1307,4,1,23,1,2,1261,23,1,4,1,1,1524,}, + {1,1307,4,1,23,1,2,1261,23,1,4,1,1,1524,}, + {1,1307,4,1,23,1,2,1261,23,1,4,1,1,1524,}, + {1,1307,4,1,23,1,2,1261,23,1,4,1,1,1524,}, + {1,1307,4,1,23,1,2,1261,23,1,4,1,1,1524,}, + {1,1307,4,1,23,1,2,1261,23,1,4,1,1,1524,}, + {1,1307,4,1,23,1,2,1261,23,1,4,1,1,1524,}, + {1,1307,4,1,23,1,2,1261,23,1,4,1,1,1524,}, + {1,1307,4,1,23,1,2,1261,23,1,4,1,1,1524,}, + {1,1307,4,1,23,1,2,1261,23,1,4,1,1,1524,}, + {1,1307,4,1,23,1,2,1261,23,1,4,1,1,1524,}, + {1,1307,4,1,23,1,2,1261,23,1,4,1,1,1524,}, + {1,1307,4,1,23,1,2,1261,23,1,4,1,1,1524,}, + {1,1307,4,1,23,1,2,1261,23,1,4,1,1,1524,}, + {1,1307,4,1,23,1,2,1261,23,1,4,1,1,1524,}, + {1,1307,4,1,23,1,2,1261,23,1,4,1,1,1524,}, + {1,1307,4,1,23,1,2,1261,23,1,4,1,1,1524,}, + {1,1307,4,1,23,1,2,1261,23,1,4,1,1,1524,}, + {1,1307,4,1,23,1,2,1261,23,1,4,1,1,1524,}, + {1,1307,4,1,23,1,2,1261,23,1,4,1,1,1524,}, + {1,1307,4,1,23,1,2,1261,23,1,4,1,1,1524,}, + {1,1307,4,1,23,1,2,1261,23,1,4,1,1,1524,}, + {1,1307,4,1,23,1,2,1261,23,1,4,1,1,1524,}, + {1,1307,4,1,23,1,2,1261,23,1,4,1,1,1524,}, + {1,1307,4,1,23,1,2,1261,23,1,4,1,1,1524,}, + {1,1307,4,2,23,1,2,1260,23,1,4,1,1,1524,}, + {1,1308,4,2,23,2,2,1258,23,1,4,1,1,1524,}, + {1,1309,4,2,23,1,2,1258,23,1,4,1,1,1524,}, + {1,1310,4,2,23,1,2,1256,23,1,4,2,1,1524,}, + {1,1311,4,2,23,2,2,1253,23,1,4,3,1,1524,}, + {1,1312,4,3,23,1,2,1251,23,1,4,2,1,1526,}, + {1,1313,4,2,23,1,2,1250,23,1,4,2,1,1527,}, + {1,1314,4,2,23,2,2,1247,23,1,4,2,1,1528,}, + {1,1315,4,2,23,2,2,1245,23,1,4,2,1,1529,}, + {1,1316,4,2,23,1,2,1244,23,1,4,2,1,1530,}, + {1,1317,4,1,23,1,2,1244,23,1,4,2,1,1530,}, + {1,1317,4,1,23,1,2,1244,23,1,4,1,1,1531,}, + {1,1317,4,1,23,1,2,1244,23,1,4,1,1,1531,}, + {1,1317,4,1,23,1,2,1243,23,2,4,1,1,1531,}, + {1,1317,4,1,23,1,2,1242,23,1,4,3,1,1531,}, + {1,1317,4,1,23,1,2,1241,23,1,4,3,1,1532,}, + {1,1317,4,1,23,1,2,1241,23,1,4,1,1,1534,}, + {1,1317,4,1,23,1,2,1241,23,1,4,1,1,1534,}, + {1,1317,4,1,23,1,2,1241,23,1,4,1,1,1534,}, + {1,1317,4,1,23,1,2,1241,23,1,4,1,1,1534,}, + {1,1317,4,1,23,1,2,1241,23,1,4,1,1,1534,}, + {1,1317,4,1,23,1,2,1241,23,1,4,1,1,1534,}, + {1,1317,4,1,23,1,2,1241,23,1,4,1,1,1534,}, + {1,1317,4,1,23,1,2,1241,23,1,4,1,1,1534,}, + {1,1317,4,1,23,1,2,1241,23,1,4,1,1,1534,}, + {1,1317,4,1,23,1,2,1241,23,1,4,1,1,1534,}, + {1,1317,4,1,23,1,2,1241,23,1,4,1,1,1534,}, + {1,1317,4,1,23,1,2,1241,23,1,4,1,1,1534,}, + {1,1317,4,1,23,1,2,1241,23,1,4,1,1,1534,}, + {1,1317,4,1,23,1,2,1241,23,1,4,1,1,1534,}, + {1,1317,4,1,23,1,2,1241,23,1,4,1,1,1534,}, + {1,1317,4,1,23,1,2,1241,23,1,4,1,1,1534,}, + {1,1317,4,1,23,1,2,1241,23,1,4,1,1,1534,}, + {1,1317,4,1,23,1,2,1241,23,1,4,1,1,1534,}, + {1,1317,4,1,23,1,2,1241,23,1,4,1,1,1534,}, + {1,1317,4,1,23,1,2,1241,23,1,4,1,1,1534,}, + {1,1317,4,2,23,4,2,1237,23,1,4,1,1,1534,}, + {1,1318,4,6,23,1,2,1235,23,1,4,1,1,1534,}, + {1,1320,4,1,1,1,4,3,23,1,2,1234,23,1,4,1,1,1534,}, + {1,1324,4,1,23,2,2,1233,23,1,4,1,1,1534,}, + {1,1324,4,3,23,1,2,1232,23,1,4,1,1,1534,}, + {1,1325,4,3,2,1232,23,1,4,1,1,1534,}, + {1,1327,4,1,23,1,2,1231,23,1,4,1,1,1534,}, + {1,1327,4,1,23,1,2,1231,23,1,4,1,1,1534,}, + {1,1326,4,2,23,1,2,1231,23,1,4,1,1,1534,}, + {1,1326,4,2,23,1,2,1231,23,1,4,1,1,1534,}, + {1,1326,4,2,23,1,2,1226,23,5,4,2,1,1534,}, + {1,1326,4,2,23,1,2,1225,23,1,4,6,1,1535,}, + {1,1326,4,2,23,1,2,1224,23,1,4,2,1,1540,}, + {1,1326,4,2,23,1,2,1223,23,2,4,1,1,1541,}, + {1,1327,4,1,23,1,2,1222,23,1,4,3,1,1541,}, + {1,1326,4,2,23,1,2,1221,23,1,4,2,1,1543,}, + {1,1326,4,2,23,1,2,1221,23,1,4,2,1,1543,}, + {1,1326,4,2,23,1,2,1221,23,1,4,1,1,1544,}, + {1,1326,4,2,23,1,2,1221,23,1,4,2,1,1543,}, + {1,1326,4,2,23,1,2,1221,23,1,4,2,1,1543,}, + {1,1326,4,2,23,1,2,1221,23,1,4,2,1,1543,}, + {1,1327,4,1,23,1,2,1221,23,1,4,2,1,1543,}, + {1,1327,4,1,23,1,2,1221,23,1,4,2,1,1543,}, + {1,1327,4,2,23,5,2,1216,23,1,4,2,1,1543,}, + {1,1327,4,7,23,1,2,1215,23,1,4,2,1,1543,}, + {1,1333,4,1,23,1,2,1215,23,1,4,2,1,1543,}, + {1,1333,4,2,23,2,2,1213,23,1,4,2,1,1543,}, + {1,1334,4,3,23,1,2,1212,23,1,4,2,1,1543,}, + {1,1335,4,2,23,1,2,1212,23,1,4,2,1,1543,}, + {1,1336,4,2,2,1212,23,1,4,2,1,1543,}, + {1,1336,4,2,2,1212,23,1,4,2,1,1543,}, + {1,1336,4,2,2,1212,23,1,4,2,1,1543,}, + {1,1336,4,2,2,1212,23,1,4,1,1,1544,}, + {1,1336,4,2,2,1207,23,5,4,2,1,1544,}, + {1,1336,4,2,2,1206,23,1,4,6,1,1545,}, + {1,1336,4,2,2,1205,23,1,4,2,1,1550,}, + {1,1336,4,2,2,1204,23,2,4,2,1,1550,}, + {1,1336,4,2,2,1203,23,1,4,3,1,1551,}, + {1,1336,4,2,2,1203,4,2,1,1553,}, + {1,1336,4,1,23,1,2,1203,4,2,1,1553,}, + {1,1336,4,2,2,1203,4,2,1,1553,}, + {1,1336,4,2,23,1,2,1202,4,2,1,1553,}, + {1,1336,4,2,23,2,2,1201,4,2,1,1553,}, + {1,1337,4,3,23,4,2,1197,4,2,1,1553,}, + {1,1338,4,6,23,1,2,1196,4,2,1,1553,}, + {1,1343,4,1,23,2,2,1195,4,2,1,1553,}, + {1,1343,4,3,23,1,2,1194,4,2,1,1553,}, + {1,1344,4,3,23,1,2,1193,4,2,1,1553,}, + {1,1346,4,1,23,1,2,1193,4,2,1,1553,}, + {1,1346,4,1,23,1,2,1193,4,2,1,1553,}, + {1,1346,4,1,23,1,2,1193,4,2,1,1553,}, + {1,1346,4,1,23,1,2,1192,23,1,4,2,1,1553,}, + {1,1346,4,1,23,1,2,1191,23,2,4,1,1,1554,}, + {1,1346,4,1,23,1,2,1190,23,1,4,3,1,1554,}, + {1,1346,4,1,23,1,2,1189,23,1,4,2,1,1556,}, + {1,1346,4,1,23,1,2,1188,23,2,4,1,1,1557,}, + {1,1346,4,1,23,1,2,1184,23,4,4,3,1,1557,}, + {1,1346,4,1,23,1,2,1183,23,1,4,6,1,1558,}, + {1,1346,4,2,23,1,2,1182,23,1,4,1,1,1563,}, + {1,1346,4,3,23,1,2,1181,23,1,4,1,1,1563,}, + {1,1348,4,2,23,1,2,1180,23,1,4,1,1,1563,}, + {1,1349,4,2,23,1,2,1179,23,1,4,1,1,1563,}, + {1,1350,4,2,23,4,2,1175,23,1,4,1,1,1563,}, + {1,1350,4,6,23,2,2,1173,23,1,4,1,1,1563,}, + {1,1355,4,2,23,1,2,1173,23,1,4,1,1,1563,}, + {1,1356,4,1,23,1,2,1173,23,1,4,1,1,1563,}, + {1,1356,4,1,23,1,2,1173,23,1,4,1,1,1563,}, + {1,1356,4,1,23,1,2,1173,23,1,4,1,1,1563,}, + {1,1356,4,2,23,1,2,1172,23,1,4,1,1,1563,}, + {1,1357,4,2,23,1,2,1171,23,1,4,1,1,1563,}, + {1,1358,4,2,23,1,2,1170,23,1,4,1,1,1563,}, + {1,1359,4,1,23,1,2,1169,23,1,4,2,1,1563,}, + {1,1359,4,1,23,1,2,1168,23,1,4,3,1,1563,}, + {1,1359,4,1,23,1,2,1167,23,1,4,3,1,1564,}, + {1,1359,4,2,23,1,2,1166,4,2,1,1566,}, + {1,1359,4,2,23,5,2,1162,4,2,1,1566,}, + {1,1360,4,6,23,1,2,1161,4,2,1,1566,}, + {1,1365,4,2,23,1,2,1160,4,2,1,1566,}, + {1,1366,4,1,23,1,2,1160,4,2,1,1566,}, + {1,1366,4,1,23,1,2,1160,4,2,1,1566,}, + {1,1366,4,1,23,1,2,1160,4,2,1,1566,}, + {1,1366,4,1,23,2,2,1159,4,2,1,1566,}, + {1,1366,4,3,23,1,2,1158,4,2,1,1566,}, + {1,1368,4,2,23,1,2,1156,23,1,4,2,1,1566,}, + {1,1369,4,1,23,1,2,1156,23,1,4,2,1,1566,}, + {1,1369,4,1,23,1,2,1151,23,5,4,2,1,1567,}, + {1,1369,4,1,23,1,2,1150,23,1,4,7,1,1567,}, + {1,1369,4,1,23,1,2,1150,23,1,4,1,1,1573,}, + {1,1369,4,2,23,2,2,1148,23,1,4,1,1,1573,}, + {1,1370,4,3,23,1,2,1147,23,1,4,1,1,1573,}, + {1,1372,4,1,23,1,2,1147,23,1,4,1,1,1573,}, + {1,1372,4,2,23,1,2,1145,23,1,4,2,1,1573,}, + {1,1373,4,3,23,1,2,1141,23,2,4,2,1,1574,}, + {1,1374,4,2,23,2,2,1140,23,1,4,2,1,1575,}, + {1,1376,4,1,23,1,2,1140,23,1,4,1,1,1576,}, + {1,1376,4,2,23,2,2,1138,23,1,4,1,1,1576,}, + {1,1377,4,3,23,1,2,1137,23,1,4,1,1,1576,}, + {1,1379,4,1,23,1,2,1137,23,1,4,1,1,1576,}, + {1,1379,4,1,23,1,2,1137,23,1,4,1,1,1576,}, + {1,1379,4,1,23,1,2,1137,23,1,4,1,1,1576,}, + {1,1378,4,2,23,1,2,1137,23,1,4,1,1,1576,}, + {1,1379,4,1,23,1,2,1137,23,1,4,1,1,1576,}, + {1,1379,4,1,23,1,2,1137,23,1,4,1,1,1576,}, + {1,1379,4,1,23,1,2,1137,23,1,4,1,1,1576,}, + {1,1379,4,2,23,1,2,1136,23,1,4,1,1,1576,}, + {1,1379,4,5,23,1,4,3,23,2,2,1128,23,1,4,1,1,1576,}, + {1,1381,4,9,2,1128,23,1,4,1,1,1576,}, + {1,1388,4,2,23,1,2,1127,23,1,4,1,1,1576,}, + {1,1389,4,1,23,1,2,1127,23,1,4,1,1,1576,}, + {1,1388,4,2,23,1,2,1127,23,1,4,1,1,1576,}, + {1,1388,4,2,23,1,2,1127,23,1,4,1,1,1576,}, + {1,1388,4,2,2,1128,23,1,4,1,1,1576,}, + {1,1388,4,2,23,1,2,1127,23,1,4,1,1,1576,}, + {1,1388,4,2,23,1,2,1127,23,1,4,1,1,1576,}, + {1,1389,4,2,23,7,2,1120,23,1,4,1,1,1576,}, + {1,1389,4,9,23,2,2,1118,23,1,4,1,1,1576,}, + {1,1391,4,4,1,1,4,3,23,1,2,1118,23,1,4,1,1,1576,}, + {1,1398,4,2,2,1118,23,1,4,1,1,1576,}, + {1,1398,4,2,2,1118,23,1,4,1,1,1576,}, + {1,1398,4,2,2,1118,23,1,4,1,1,1576,}, + {1,1398,4,2,2,1118,23,1,4,1,1,1576,}, + {1,1398,4,2,2,1118,23,1,4,1,1,1576,}, + {1,1398,4,2,2,1118,23,1,4,1,1,1576,}, + {1,1398,4,2,23,1,2,1117,23,1,4,1,1,1576,}, + {1,1398,4,3,23,1,2,1116,23,1,4,1,1,1576,}, + {1,1399,4,3,23,1,2,1115,23,1,4,1,1,1576,}, + {1,1401,4,2,23,1,2,1114,23,1,4,1,1,1576,}, + {1,1402,4,2,23,4,2,1110,23,1,4,1,1,1576,}, + {1,1402,4,6,23,2,2,1108,23,1,4,1,1,1576,}, + {1,1405,4,4,23,1,2,1108,23,1,4,1,1,1576,}, + {1,1408,4,1,23,1,2,1108,23,1,4,1,1,1576,}, + {1,1408,4,1,23,1,2,1108,23,1,4,1,1,1576,}, + {1,1408,4,1,23,1,2,1108,23,1,4,1,1,1576,}, + {1,1408,4,2,23,1,2,1107,23,1,4,1,1,1576,}, + {1,1408,4,3,23,1,2,1106,23,1,4,1,1,1576,}, + {1,1409,4,3,23,1,2,1105,23,1,4,1,1,1576,}, + {1,1411,4,2,2,1105,23,1,4,1,1,1576,}, + {1,1411,4,2,2,1105,23,1,4,1,1,1576,}, + {1,1411,4,2,2,1105,23,1,4,1,1,1576,}, + {1,1411,4,2,2,1105,23,1,4,1,1,1576,}, + {1,1411,4,2,2,1105,23,1,4,1,1,1576,}, + {1,1411,4,2,2,1105,23,1,4,1,1,1576,}, + {1,1411,4,2,2,1105,23,1,4,1,1,1576,}, + {1,1411,4,2,2,1105,23,1,4,1,1,1576,}, + {1,1411,4,2,2,1105,23,1,4,1,1,1576,}, + {1,1411,4,2,2,1105,23,1,4,1,1,1576,}, + {1,1411,4,2,23,1,2,1104,23,1,4,1,1,1576,}, + {1,1412,4,2,23,5,2,1099,23,1,4,1,1,1576,}, + {1,1412,4,7,23,1,2,1098,23,1,4,1,1,1576,}, + {1,1418,4,1,23,1,2,1098,23,1,4,1,1,1576,}, + {1,1418,4,2,23,2,2,1096,23,1,4,1,1,1576,}, + {1,1419,4,3,23,1,2,1095,23,1,4,1,1,1576,}, + {1,1421,4,1,23,1,2,1095,23,1,4,1,1,1576,}, + {1,1421,4,1,23,1,2,1095,23,1,4,1,1,1576,}, + {1,1421,4,1,23,1,2,1095,23,1,4,1,1,1576,}, + {1,1421,4,1,23,1,2,1095,23,1,4,2,1,1575,}, + {1,1421,4,1,23,1,2,1095,23,2,4,2,1,1574,}, + {1,1421,4,1,23,1,2,1097,23,1,4,2,1,1573,}, + {1,1421,4,1,23,1,2,1098,23,1,4,1,1,1573,}, + {1,1421,4,2,23,1,2,1097,23,1,4,1,1,1573,}, + {1,1422,4,2,23,1,2,1096,23,1,4,1,1,1573,}, + {1,1422,4,3,23,1,2,1095,23,1,4,1,1,1573,}, + {1,1424,4,2,23,1,2,1094,23,1,4,7,1,1567,}, + {1,1425,4,2,23,1,2,1094,23,5,4,2,1,1567,}, + {1,1425,4,3,23,1,2,1098,23,1,4,2,1,1566,}, + {1,1427,4,2,23,1,2,1097,23,1,4,2,1,1566,}, + {1,1428,4,2,23,1,2,1097,4,2,1,1566,}, + {1,1428,4,3,23,1,2,1096,4,2,1,1566,}, + {1,1430,4,2,23,1,2,1095,4,2,1,1566,}, + {1,1431,4,1,23,1,2,1095,4,2,1,1566,}, + {1,1431,4,1,23,1,2,1095,4,2,1,1566,}, + {1,1431,4,1,23,1,2,1095,4,2,1,1566,}, + {1,1431,4,1,23,1,2,1095,4,2,1,1566,}, + {1,1431,4,1,23,1,2,1095,4,2,1,1566,}, + {1,1431,4,1,23,1,2,1095,4,2,1,1566,}, + {1,1431,4,1,23,1,2,1095,23,1,4,3,1,1564,}, + {1,1431,4,1,23,1,2,298,23,42,2,189,23,17,2,550,23,1,4,2,1,1564,}, + {1,1431,4,1,23,1,2,296,23,2,4,42,23,2,2,186,23,1,4,17,23,1,2,550,23,1,4,2,1,1563,}, + {1,1431,4,1,23,1,2,296,23,1,4,1,1,37,4,6,23,1,2,185,23,1,4,2,1,15,4,2,23,1,2,550,23,1,4,1,1,1563,}, + {1,1431,4,1,23,1,2,295,23,1,4,2,1,42,4,2,23,2,2,182,23,1,4,2,1,17,4,1,23,2,2,549,23,1,4,1,1,1563,}, + {1,1431,4,1,23,1,2,287,23,2,4,8,1,44,4,51,23,2,2,111,23,2,4,22,1,17,4,16,23,1,2,535,23,1,4,1,1,1563,}, + {1,1431,4,1,23,1,2,286,23,1,4,9,1,46,4,51,23,1,2,111,23,1,4,22,1,19,4,16,23,1,2,534,23,1,4,1,1,1563,}, + {1,1431,4,1,23,1,2,286,23,1,4,1,1,104,4,2,23,1,2,109,23,1,4,2,1,55,4,2,23,1,2,533,23,1,4,1,1,1563,}, + {1,1431,4,1,23,1,2,286,23,1,4,1,1,105,4,2,23,8,2,96,23,5,4,2,1,56,4,3,23,4,2,529,23,1,4,1,1,1563,}, + {1,1431,4,1,23,1,2,286,23,1,4,1,1,106,4,9,23,1,2,94,23,1,4,6,1,58,4,6,23,1,2,528,23,1,4,1,1,1563,}, + {1,1431,4,1,23,1,2,286,23,1,4,1,1,114,4,2,23,1,2,92,23,2,4,1,1,68,4,2,23,1,2,527,23,1,4,3,1,1561,}, + {1,1431,4,1,23,1,2,284,23,2,4,2,1,114,4,3,23,93,4,2,1,69,4,2,23,27,2,129,23,5,2,367,23,2,4,2,1,1560,}, + {1,1431,4,1,23,1,2,283,23,1,4,3,1,116,4,96,1,70,4,29,23,1,2,128,23,1,4,4,23,1,2,368,23,1,4,1,1,1560,}, + {1,1431,4,1,23,1,2,283,23,1,4,1,1,209,4,1,1,84,4,4,1,6,4,2,1,1,4,2,1,3,4,2,23,1,2,126,23,1,4,2,1,2,4,2,23,1,2,367,23,1,4,1,1,1560,}, + {1,1431,4,2,23,5,2,278,23,1,4,1,1,313,4,2,23,126,4,2,1,4,4,1,23,15,2,353,23,1,4,1,1,1560,}, + {1,1432,4,6,23,1,2,277,23,1,4,1,1,314,4,129,1,4,4,16,23,1,2,352,23,1,4,1,1,1560,}, + {1,1433,4,1,1,2,4,3,23,1,2,276,23,1,4,1,1,316,4,123,1,23,4,2,23,1,2,351,23,1,4,6,1,1555,}, + {1,1438,4,1,23,2,2,275,23,1,4,1,1,462,4,2,23,1,2,352,23,2,4,5,1,1554,}, + {1,1438,4,3,23,1,2,274,23,1,4,1,1,463,4,1,23,1,2,356,23,2,4,2,1,1553,}, + {1,1439,4,3,23,1,2,273,23,1,4,1,1,463,4,1,23,1,2,357,23,1,4,2,1,1553,}, + {1,1441,4,1,23,1,2,273,23,1,4,1,1,463,4,1,23,1,2,358,4,2,1,1553,}, + {1,1441,4,1,23,1,2,273,23,1,4,1,1,463,4,1,23,1,2,358,4,2,1,1553,}, + {1,1441,4,1,23,1,2,273,23,1,4,1,1,462,4,2,23,1,2,358,4,2,1,1553,}, + {1,1441,4,1,23,1,2,272,23,1,4,2,1,463,4,1,23,1,2,358,4,2,1,1553,}, + {1,1441,4,1,23,1,2,271,23,1,4,3,1,463,4,2,23,8,2,350,4,2,1,1553,}, + {1,1441,4,1,23,1,2,270,23,1,4,3,1,465,4,9,23,1,2,349,4,2,1,1553,}, + {1,1441,4,1,23,1,2,269,23,1,4,2,1,475,4,2,2,349,4,2,1,1553,}, + {1,1441,4,1,23,1,2,268,23,2,4,1,1,476,4,2,2,349,4,2,1,1553,}, + {1,1441,4,1,23,1,2,267,23,1,4,3,1,476,4,2,2,349,4,2,1,1553,}, + {1,1441,4,1,23,1,2,266,23,1,4,2,1,478,4,2,23,1,2,348,4,2,1,1553,}, + {1,1441,4,1,23,1,2,265,23,1,4,2,1,479,4,2,23,2,2,347,4,2,1,1553,}, + {1,1441,4,1,23,1,2,264,23,1,4,3,1,480,4,3,23,1,2,346,4,2,1,1553,}, + {1,1441,4,1,23,1,2,263,23,1,4,2,1,483,4,3,23,1,2,345,4,2,1,1553,}, + {1,1441,4,1,23,1,2,263,23,1,4,1,1,486,4,1,23,2,2,344,4,2,1,1553,}, + {1,1441,4,1,23,1,2,263,23,1,4,1,1,486,4,3,23,4,2,340,4,2,1,1553,}, + {1,1441,4,1,23,1,2,263,23,1,4,1,1,487,4,6,23,1,2,339,4,2,1,1553,}, + {1,1441,4,1,23,1,2,263,23,1,4,1,1,492,4,2,23,1,2,338,4,2,1,1553,}, + {1,1441,4,1,23,1,2,263,23,1,4,1,1,493,4,2,23,1,2,337,4,2,1,1553,}, + {1,1441,4,1,23,1,2,263,23,1,4,1,1,494,4,2,23,1,2,336,4,2,1,1553,}, + {1,1441,4,1,23,1,2,263,23,1,4,1,1,495,4,2,2,336,23,1,4,9,1,1545,}, + {1,1441,4,1,23,1,2,263,23,1,4,1,1,495,4,2,23,1,2,335,23,8,4,3,1,1544,}, + {1,1440,4,2,23,1,2,263,23,1,4,1,1,495,4,2,23,1,2,343,23,2,4,1,1,1544,}, + {1,1441,4,1,23,1,2,263,23,1,4,1,1,495,4,2,23,1,2,344,23,1,4,2,1,1543,}, + {1,1441,4,1,23,1,2,262,23,1,4,2,1,496,4,1,23,2,2,343,23,1,4,2,1,1543,}, + {1,1441,4,1,23,1,2,261,23,1,4,3,1,496,4,3,23,1,2,342,23,1,4,2,1,1543,}, + {1,1441,4,1,23,1,2,260,23,1,4,2,1,500,4,2,23,1,2,341,23,1,4,2,1,1543,}, + {1,1441,4,1,23,1,2,259,23,1,4,2,1,502,4,1,23,2,2,340,23,1,4,2,1,1543,}, + {1,1441,4,2,23,5,2,249,23,5,4,2,1,503,4,2,23,2,2,339,23,1,4,2,1,1543,}, + {1,1442,4,6,23,1,2,247,23,2,4,6,1,504,4,3,23,1,2,338,23,1,4,2,1,1543,}, + {1,1447,4,2,23,1,2,246,23,1,4,2,1,511,4,1,23,2,2,337,23,1,4,2,1,1543,}, + {1,1447,4,3,23,1,2,245,23,1,4,1,1,512,4,2,23,2,2,336,23,1,4,2,1,1543,}, + {1,1449,4,2,23,1,2,244,23,1,4,1,1,513,4,3,23,1,2,335,23,1,4,2,1,1543,}, + {1,1450,4,2,2,244,23,1,4,1,1,515,4,1,23,1,2,335,23,1,4,2,1,1543,}, + {1,1450,4,2,23,1,2,243,23,1,4,1,1,515,4,2,2,335,23,1,4,2,1,1543,}, + {1,1450,4,2,23,1,2,243,23,1,4,1,1,515,4,2,2,335,23,1,4,2,1,1543,}, + {1,1450,4,2,23,1,2,243,23,1,4,1,1,515,4,2,2,335,23,1,4,2,1,1543,}, + {1,1450,4,2,23,1,2,243,23,1,4,1,1,515,4,2,2,335,23,1,4,1,1,1544,}, + {1,1450,4,2,23,1,2,243,23,1,4,1,1,515,4,2,2,335,23,1,4,2,1,1543,}, + {1,1450,4,2,23,1,2,243,23,1,4,1,1,515,4,2,2,335,23,1,4,3,1,1542,}, + {1,1450,4,2,23,1,2,243,23,1,4,1,1,515,4,2,2,336,23,1,4,6,1,1538,}, + {1,1450,4,2,23,1,2,243,23,1,4,1,1,515,4,2,2,337,23,5,4,2,1,1537,}, + {1,1450,4,2,23,1,2,243,23,1,4,1,1,515,4,2,2,341,23,1,4,2,1,1537,}, + {1,1450,4,2,2,244,23,1,4,1,1,515,4,2,2,342,23,1,4,3,1,1535,}, + {1,1450,4,2,2,243,23,1,4,2,1,515,4,1,23,1,2,343,23,2,4,2,1,1534,}, + {1,1450,4,2,23,1,2,240,23,1,4,4,1,515,4,2,2,345,23,1,4,1,1,1534,}, + {1,1450,4,2,23,1,2,240,23,1,4,1,1,518,4,2,23,1,2,344,23,1,4,1,1,1534,}, + {1,1450,4,2,23,1,2,236,23,1,2,1,23,2,4,2,1,518,4,2,23,2,2,3,23,3,2,337,23,1,4,1,1,1534,}, + {1,1450,4,2,23,1,2,234,23,2,4,5,1,520,4,9,23,2,2,335,23,1,4,1,1,1534,}, + {1,1450,4,2,23,1,2,234,4,6,1,522,4,9,23,1,2,335,23,1,4,2,1,1533,}, + {1,1450,4,2,23,1,2,233,23,1,4,2,1,534,4,1,23,1,2,336,23,1,4,2,1,1532,}, + {1,1450,4,2,23,1,2,233,23,1,4,2,1,534,4,1,23,1,2,337,23,1,4,2,1,1531,}, + {1,1450,4,2,23,1,2,233,23,1,4,2,1,534,4,1,23,1,2,338,23,1,4,2,1,1530,}, + {1,1450,4,2,23,1,2,233,23,1,4,2,1,534,4,1,23,1,2,339,23,1,4,6,1,1525,}, + {1,1450,4,2,23,1,2,231,23,2,4,2,1,535,4,1,23,1,2,340,23,5,4,2,1,1524,}, + {1,1450,4,2,2,231,23,1,4,3,1,536,4,1,23,1,2,344,23,2,4,1,1,1524,}, + {1,1450,4,2,2,231,23,1,4,1,1,538,4,2,23,1,2,344,23,1,4,1,1,1524,}, + {1,1450,4,2,2,230,23,1,4,2,1,538,4,2,23,2,2,343,23,1,4,1,1,1524,}, + {1,1450,4,2,23,1,2,227,23,2,4,2,1,540,4,3,23,1,2,342,23,1,4,1,1,1524,}, + {1,1450,4,2,23,1,2,227,23,1,4,2,1,543,4,2,23,1,2,341,23,1,4,2,1,1523,}, + {1,1450,4,2,2,227,23,1,4,2,1,545,4,1,23,2,2,341,23,1,4,2,1,1522,}, + {1,1451,4,1,2,225,23,1,4,4,1,545,4,3,23,1,2,341,23,1,4,2,1,1521,}, + {1,1450,4,2,23,1,2,224,23,1,4,2,1,549,4,2,23,1,2,341,23,1,4,2,1,2,4,1,1,1517,}, + {1,1451,4,1,23,1,2,224,4,2,1,551,4,1,23,2,2,341,23,1,4,6,1,1515,}, + {1,1451,4,2,23,2,2,222,4,2,1,551,4,3,23,1,2,342,23,4,4,1,1,1515,}, + {1,1451,4,4,23,1,2,221,4,2,1,552,4,3,23,1,2,344,23,1,4,2,1,1514,}, + {1,1454,4,1,23,1,2,221,4,2,1,554,4,1,23,1,2,345,23,1,4,3,1,1512,}, + {1,1454,4,1,23,1,2,221,23,1,4,1,1,554,4,1,23,1,2,346,23,2,4,2,1,1511,}, + {1,1453,4,2,23,1,2,221,23,1,4,1,1,554,4,1,23,1,2,347,23,2,4,1,1,1511,}, + {1,1454,4,1,23,1,2,220,23,1,4,2,1,554,4,1,23,1,2,348,23,1,4,1,1,1511,}, + {1,1454,4,1,23,1,2,219,23,2,4,2,1,554,4,1,23,1,2,348,23,1,4,1,1,1511,}, + {1,1454,4,1,23,1,2,218,23,1,4,3,1,555,4,1,23,1,2,348,23,1,4,1,1,1511,}, + {1,1454,4,1,23,1,2,217,23,1,4,2,1,557,4,1,23,1,2,348,23,1,4,6,1,1506,}, + {1,1454,4,1,23,1,2,217,23,1,4,2,1,557,4,1,23,1,2,349,23,2,4,5,1,1505,}, + {1,1454,4,1,23,1,2,217,23,1,4,2,1,557,4,1,23,1,2,353,23,2,4,1,1,1505,}, + {1,1454,4,1,23,1,2,217,23,1,4,2,1,557,4,1,23,1,2,354,23,1,4,2,1,1504,}, + {1,1454,4,1,23,1,2,217,23,1,4,2,1,557,4,2,23,1,2,354,23,1,4,3,1,1502,}, + {1,1454,4,1,23,1,2,217,23,1,4,2,1,557,4,3,23,1,2,354,23,2,4,2,1,1501,}, + {1,1454,4,1,23,1,2,217,23,1,4,2,1,558,4,3,23,1,2,354,23,1,4,2,1,1501,}, + {1,1454,4,1,23,1,2,217,23,1,4,2,1,560,4,2,23,1,2,354,23,1,4,1,1,1501,}, + {1,1454,4,1,23,1,2,217,23,1,4,2,1,561,4,2,23,1,2,353,23,1,4,1,1,1501,}, + {1,1454,4,1,23,1,2,217,23,1,4,2,1,562,4,2,23,1,2,352,23,1,4,1,1,1501,}, + {1,1454,4,1,23,1,2,217,23,1,4,2,1,563,4,2,23,1,2,351,23,1,4,6,1,1496,}, + {1,1454,4,1,23,1,2,217,23,1,4,2,1,564,4,2,23,1,2,351,23,4,4,3,1,1495,}, + {1,1454,4,1,23,1,2,217,23,1,4,2,1,564,4,3,23,1,2,354,23,2,4,1,1,1495,}, + {1,1454,4,1,23,1,2,217,23,1,4,2,1,566,4,2,23,1,2,354,23,1,4,6,1,1490,}, + {1,1454,4,1,23,1,2,217,23,1,4,2,1,567,4,1,23,1,2,355,23,2,4,5,1,1489,}, + {1,1454,4,1,23,1,2,217,23,1,4,2,1,567,4,1,23,1,2,359,23,2,4,2,1,1488,}, + {1,1454,4,1,23,1,2,217,23,1,4,2,1,566,4,2,23,1,2,361,23,1,4,2,1,1487,}, + {1,1454,4,1,23,1,2,217,23,1,4,2,1,566,4,2,23,1,2,361,23,2,4,2,1,1486,}, + {1,1454,4,1,23,1,2,217,23,1,4,2,1,566,4,2,23,1,2,363,23,1,4,2,1,1485,}, + {1,1454,4,1,23,1,2,217,23,1,4,2,1,566,4,2,23,1,2,364,23,1,4,1,1,1485,}, + {1,1454,4,1,23,1,2,217,23,1,4,2,1,567,4,1,23,1,2,364,23,2,4,3,1,1482,}, + {1,1454,4,1,23,1,2,217,23,1,4,2,1,567,4,2,23,2,2,363,23,2,4,2,1,1482,}, + {1,1454,4,1,23,1,2,217,23,1,4,2,1,568,4,2,23,2,2,364,23,1,4,1,1,1482,}, + {1,1454,4,1,23,1,2,217,23,1,4,2,1,570,4,1,23,1,2,364,23,1,4,1,1,1482,}, + {1,1454,4,1,23,1,2,217,23,1,4,2,1,570,4,1,23,1,2,364,23,1,4,2,1,1481,}, + {1,1454,4,1,23,1,2,217,23,1,4,2,1,570,4,1,23,1,2,364,23,1,4,2,1,1481,}, + {1,1454,4,1,23,1,2,217,23,1,4,2,1,570,4,1,23,1,2,364,23,1,4,1,1,1482,}, + {1,1454,4,1,23,1,2,217,23,1,4,2,1,570,4,2,23,1,2,363,23,1,4,2,1,1481,}, + {1,1454,4,1,23,1,2,217,23,1,4,2,1,570,4,6,23,2,2,358,23,1,4,2,1,1481,}, + {1,1454,4,1,23,1,2,217,23,1,4,2,1,572,4,5,23,1,2,358,23,1,4,2,1,1481,}, + {1,1454,4,1,23,1,2,217,23,1,4,2,1,576,4,2,2,358,23,1,4,2,1,1481,}, + {1,1454,4,1,23,1,2,217,23,1,4,2,1,576,4,2,2,358,23,1,4,2,1,1481,}, + {1,1454,4,1,23,1,2,217,23,1,4,2,1,576,4,2,23,1,2,357,23,1,4,2,1,1481,}, + {1,1454,4,1,23,1,2,217,23,1,4,2,1,576,4,2,23,1,2,357,23,1,4,2,1,1481,}, + {1,1454,4,1,23,1,2,216,23,1,4,2,1,578,4,2,23,1,2,356,23,1,4,2,1,1481,}, + {1,1454,4,1,23,1,2,214,23,2,4,3,1,579,4,2,23,1,2,355,23,1,4,2,1,1481,}, + {1,1454,4,1,23,1,2,214,23,1,4,2,1,582,4,2,23,1,2,354,23,1,4,2,1,1481,}, + {1,1454,4,1,23,1,2,213,23,1,4,2,1,584,4,2,23,1,2,353,23,1,4,2,1,1481,}, + {1,1454,4,1,23,1,2,212,23,1,4,2,1,586,4,2,23,1,2,352,23,1,4,2,1,1481,}, + {1,1454,4,1,23,1,2,211,23,1,4,2,1,588,4,2,23,1,2,351,23,1,4,2,1,1481,}, + {1,1454,4,1,23,1,2,210,23,1,4,2,1,590,4,2,23,1,2,350,23,1,4,2,1,1481,}, + {1,1454,4,1,23,1,2,208,23,2,4,2,1,592,4,2,23,1,2,349,23,1,4,2,1,1481,}, + {1,1454,4,1,23,1,2,208,23,1,4,2,1,594,4,2,23,1,2,348,23,1,4,2,1,1481,}, + {1,1454,4,1,23,1,2,208,4,2,1,596,4,2,23,1,2,347,23,1,4,2,1,1481,}, + {1,1454,4,1,23,1,2,208,4,2,1,597,4,2,23,1,2,346,23,1,4,2,1,1481,}, + {1,1454,4,1,23,1,2,208,4,2,1,598,4,2,23,1,2,345,23,1,4,2,1,1481,}, + {1,1454,4,1,23,1,2,208,4,2,1,599,4,2,2,345,23,1,4,2,1,1481,}, + {1,1454,4,1,23,1,2,208,4,2,1,599,4,2,2,345,23,1,4,2,1,1481,}, + {1,1454,4,1,23,1,2,208,4,2,1,599,4,2,2,345,23,1,4,2,1,1481,}, + {1,1454,4,1,23,1,2,208,4,2,1,599,4,2,23,1,2,344,23,1,4,2,1,1481,}, + {1,1454,4,1,23,1,2,208,4,2,1,600,4,1,23,4,2,341,23,1,4,2,1,1481,}, + {1,1454,4,1,23,1,2,208,4,2,1,600,4,6,23,2,2,338,23,1,4,2,1,1481,}, + {1,1454,4,1,23,1,2,208,4,2,1,602,4,1,1,2,4,2,23,1,2,338,23,1,4,2,1,1481,}, + {1,1453,4,2,23,1,2,208,4,2,1,606,4,1,23,1,2,338,23,1,4,2,1,1481,}, + {1,1454,4,1,23,1,2,208,4,2,1,606,4,1,23,1,2,338,23,1,4,2,1,1481,}, + {1,1454,4,1,23,1,2,208,4,2,1,606,4,1,23,1,2,338,23,1,4,2,1,1481,}, + {1,1454,4,1,23,1,2,208,4,2,1,606,4,2,23,1,2,337,23,1,4,2,1,1481,}, + {1,1454,4,1,23,1,2,208,4,2,1,606,4,3,23,1,2,336,23,1,4,2,1,1481,}, + {1,1453,4,2,23,1,2,208,4,2,1,607,4,3,23,1,2,335,23,1,4,2,1,1481,}, + {1,1452,4,2,23,1,2,209,4,2,1,609,4,1,23,1,2,335,23,1,4,2,1,1481,}, + {1,1451,4,2,23,2,2,209,4,2,1,609,4,2,2,164,23,7,2,164,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,211,4,2,1,609,4,1,23,1,2,163,23,1,4,7,23,2,2,162,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,211,4,2,1,609,4,1,23,1,2,163,4,2,1,1,4,3,1,2,4,1,23,1,2,162,23,1,4,2,1,1481,}, + {1,1450,4,2,2,212,4,2,1,609,4,1,23,1,2,163,4,2,1,6,4,2,23,1,2,161,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,211,4,2,1,609,4,1,23,1,2,163,4,2,1,7,4,2,23,2,2,159,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,211,4,2,1,609,4,2,2,162,23,1,4,2,1,9,4,1,23,1,2,159,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,211,23,1,4,1,1,609,4,2,23,1,2,161,23,1,4,1,1,10,4,2,23,1,2,158,23,1,4,2,1,1481,}, + {1,1450,4,2,2,212,23,1,4,1,1,610,4,3,23,4,2,154,23,1,4,3,1,11,4,3,23,14,2,143,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,211,4,2,1,611,4,6,23,1,2,152,23,1,4,3,1,13,4,15,23,1,2,143,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,210,23,1,4,2,1,616,4,1,23,1,2,152,23,1,4,1,1,29,4,2,23,1,2,142,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,205,23,5,4,2,1,617,4,2,23,2,2,150,23,1,4,1,1,30,4,2,23,5,2,137,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,204,23,1,4,7,1,618,4,3,23,1,2,149,23,1,4,1,1,31,4,6,23,1,2,136,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,204,23,1,4,1,1,626,4,1,23,1,2,149,23,1,4,1,1,36,4,1,23,1,2,136,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,202,23,2,4,2,1,626,4,1,23,1,2,149,23,1,4,1,1,36,4,1,23,1,2,136,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,201,23,1,4,3,1,627,4,1,23,1,2,149,23,1,4,1,1,36,4,1,23,1,2,136,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,201,23,1,4,1,1,629,4,1,23,1,2,149,23,1,4,1,1,36,4,1,23,1,2,136,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,201,23,1,4,1,1,629,4,2,23,1,2,148,23,1,4,2,1,35,4,1,23,1,2,136,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,201,23,1,4,1,1,630,4,2,23,2,2,146,23,1,4,1,1,36,4,1,23,1,2,136,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,201,23,1,4,1,1,631,4,2,23,1,2,146,23,1,4,1,1,36,4,1,23,1,2,136,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,201,23,1,4,1,1,633,4,1,23,1,2,145,23,1,4,1,1,36,4,2,23,1,2,135,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,201,23,1,4,1,1,633,4,3,23,4,2,140,23,1,4,1,1,36,4,3,23,15,2,120,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,201,23,1,4,1,1,634,4,6,23,1,2,139,23,1,4,1,1,37,4,16,23,1,2,120,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,201,23,1,4,1,1,639,4,1,23,1,2,139,23,1,4,1,1,53,4,1,23,1,2,119,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,201,23,1,4,1,1,639,4,1,23,1,2,139,23,1,4,1,1,53,4,2,23,2,2,117,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,201,23,1,4,1,1,639,4,1,23,1,2,139,23,1,4,1,1,54,4,2,23,1,2,117,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,201,23,1,4,1,1,639,4,1,23,1,2,139,23,1,4,1,1,55,4,2,23,1,2,116,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,201,23,1,4,1,1,639,4,2,23,1,2,138,23,1,4,1,1,56,4,1,23,1,2,116,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,201,23,1,4,1,1,639,4,3,23,2,2,136,23,1,4,1,1,56,4,1,23,1,2,116,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,201,23,1,4,1,1,641,4,2,23,1,2,136,23,1,4,2,1,55,4,1,23,1,2,116,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,201,23,1,4,1,1,642,4,1,23,1,2,136,23,1,4,1,1,56,4,1,23,2,2,115,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,201,23,1,4,1,1,642,4,1,23,1,2,136,23,1,4,1,1,56,4,6,23,2,2,110,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,201,23,1,4,1,1,642,4,1,23,1,2,136,23,1,4,1,1,57,4,6,23,1,2,110,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,201,23,1,4,1,1,642,4,1,23,1,2,136,23,1,4,1,1,62,4,2,23,1,2,109,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,201,23,1,4,1,1,642,4,1,23,1,2,136,23,1,4,1,1,63,4,2,23,2,2,107,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,201,23,1,4,1,1,642,4,1,23,1,2,136,23,1,4,2,1,63,4,2,23,1,2,107,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,201,23,1,4,1,1,642,4,2,23,1,2,136,23,1,4,9,1,56,4,2,23,1,2,106,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,201,23,1,4,1,1,642,4,3,23,1,2,136,23,8,4,2,1,55,4,2,23,1,2,106,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,201,23,1,4,1,1,643,4,3,23,1,2,143,23,1,4,1,1,55,4,2,2,107,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,201,4,2,1,645,4,2,23,1,2,142,23,1,4,1,1,55,4,2,2,107,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,199,23,2,4,2,1,646,4,2,23,1,2,141,23,1,4,1,1,55,4,2,2,107,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,198,23,1,4,3,1,647,4,3,23,1,2,140,23,1,4,1,1,55,4,2,2,107,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,197,23,1,4,2,1,651,4,2,23,1,2,139,23,1,4,1,1,55,4,2,23,1,2,106,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,196,23,2,4,2,1,652,4,1,23,2,2,138,23,1,4,1,1,55,4,2,23,2,2,105,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,195,23,1,4,3,1,653,4,3,23,1,2,137,23,1,4,1,1,56,4,3,23,1,2,104,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,194,23,1,4,2,1,657,4,2,23,1,2,136,23,1,4,1,1,58,4,2,23,1,2,103,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,194,23,1,4,1,1,659,4,1,23,1,2,136,23,1,4,1,1,59,4,1,23,1,2,103,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,192,23,2,4,2,1,659,4,1,23,1,2,136,23,1,4,1,1,59,4,1,23,1,2,103,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,191,23,1,4,3,1,660,4,1,23,1,2,136,23,1,4,1,1,59,4,1,23,1,2,103,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,191,23,1,4,1,1,662,4,1,23,1,2,136,23,1,4,1,1,59,4,1,23,1,2,103,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,191,23,1,4,1,1,662,4,1,23,1,2,136,23,1,4,1,1,59,4,2,23,5,2,98,23,1,4,1,1,1482,}, + {1,1450,4,2,23,1,2,191,23,1,4,1,1,662,4,1,23,1,2,136,23,1,4,1,1,60,4,6,23,1,2,97,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,191,23,1,4,1,1,662,4,1,23,1,2,136,23,1,4,1,1,65,4,2,23,1,2,96,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,191,23,1,4,1,1,662,4,1,23,1,2,136,23,1,4,1,1,65,4,2,23,2,2,95,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,191,23,1,4,1,1,662,4,1,23,1,2,136,23,1,4,1,1,66,4,3,23,1,2,94,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,191,23,1,4,1,1,662,4,1,23,1,2,136,23,1,4,1,1,67,4,3,2,94,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,191,23,1,4,1,1,662,4,2,23,1,2,135,23,1,4,1,1,69,4,1,23,1,2,93,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,191,23,1,4,1,1,662,4,3,23,1,2,134,23,1,4,1,1,68,4,2,23,1,2,93,23,1,4,2,1,1481,}, + {1,1450,4,2,23,1,2,191,23,1,4,1,1,664,4,2,23,1,2,133,23,1,4,1,1,68,4,2,2,94,23,1,4,1,1,1482,}, + {1,1450,4,2,23,1,2,191,23,1,4,1,1,665,4,2,23,1,2,132,23,1,4,1,1,68,4,2,2,94,23,1,4,1,1,1482,}, + {1,1450,4,2,23,1,2,191,23,1,4,1,1,666,4,2,23,1,2,131,23,1,4,1,1,68,4,2,2,92,23,1,4,3,1,1482,}, + {1,1450,4,2,23,1,2,191,23,1,4,1,1,667,4,2,23,1,2,130,23,1,4,1,1,68,4,2,23,1,2,90,23,1,4,3,1,1483,}, + {1,1450,4,2,23,1,2,191,23,1,4,1,1,668,4,2,23,1,2,129,23,1,4,1,1,68,4,2,23,1,2,90,23,1,4,1,1,1485,}, + {1,1450,4,2,23,1,2,191,23,1,4,1,1,669,4,2,23,1,2,128,23,1,4,1,1,69,4,2,23,1,2,87,23,2,4,2,1,1485,}, + {1,1450,4,2,23,1,2,191,23,1,4,1,1,670,4,2,23,1,2,127,23,1,4,1,1,70,4,2,23,1,2,85,23,1,4,3,1,1486,}, + {1,1450,4,2,23,1,2,191,23,1,4,1,1,671,4,2,23,1,2,126,23,1,4,1,1,71,4,2,23,1,2,84,4,2,1,1488,}, + {1,1450,4,2,23,1,2,191,23,1,4,1,1,671,4,2,23,1,2,126,23,1,4,1,1,72,4,2,23,1,2,81,23,2,4,2,1,1488,}, + {1,1450,4,2,23,1,2,191,23,1,4,1,1,671,4,2,23,1,2,126,23,1,4,1,1,73,4,2,23,1,2,79,23,1,4,3,1,1489,}, + {1,1450,4,2,23,1,2,191,23,1,4,1,1,671,4,2,23,1,2,126,23,1,4,1,1,74,4,2,23,1,2,78,4,2,1,1491,}, + {1,1450,4,2,23,1,2,191,23,1,4,1,1,671,4,2,23,1,2,126,23,1,4,1,1,75,4,1,23,1,2,77,23,1,4,2,1,1491,}, + {1,1450,4,2,23,1,2,191,23,1,4,1,1,671,4,2,23,1,2,126,23,1,4,1,1,75,4,1,23,1,2,77,23,1,4,2,1,1491,}, + {1,1450,4,2,23,1,2,191,23,1,4,1,1,671,4,2,23,1,2,126,23,1,4,1,1,75,4,1,23,1,2,78,4,2,1,1491,}, + {1,1450,4,2,23,1,2,190,23,2,4,1,1,671,4,2,23,1,2,126,23,1,4,1,1,75,4,2,23,1,2,77,4,2,1,1491,}, + {1,1450,4,2,23,1,2,189,23,1,4,3,1,671,4,2,23,1,2,126,23,1,4,1,1,75,4,3,23,1,2,76,4,2,1,1491,}, + {1,1450,4,2,23,1,2,188,23,1,4,3,1,672,4,2,23,1,2,126,23,1,4,1,1,76,4,3,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,188,23,1,4,1,1,674,4,2,23,1,2,126,23,1,4,1,1,78,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,188,23,1,4,1,1,674,4,2,23,1,2,126,23,1,4,1,1,78,4,2,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,188,23,1,4,1,1,674,4,2,23,1,2,126,23,1,4,1,1,78,4,2,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,188,4,2,1,674,4,2,23,1,2,126,23,1,4,1,1,78,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,186,23,2,4,2,1,674,4,2,23,1,2,126,23,1,4,1,1,78,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,185,23,1,4,3,1,675,4,2,23,1,2,126,23,1,4,1,1,78,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,185,23,1,4,2,1,676,4,2,23,1,2,126,23,1,4,1,1,78,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,183,23,2,4,2,1,677,4,2,23,1,2,126,23,1,4,1,1,78,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,182,23,1,4,3,1,678,4,2,23,1,2,126,23,1,4,1,1,78,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,181,23,1,4,3,1,679,4,2,23,1,2,126,23,1,4,1,1,78,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,181,23,1,4,2,1,680,4,2,23,1,2,126,23,1,4,1,1,78,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,181,23,1,4,1,1,682,4,2,23,5,2,121,23,1,4,1,1,78,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,181,23,1,4,1,1,683,4,6,23,1,2,120,23,1,4,1,1,78,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,181,23,1,4,2,1,687,4,1,23,1,2,120,23,1,4,1,1,78,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,181,23,1,4,2,1,687,4,1,23,1,2,120,23,1,4,1,1,78,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,181,23,1,4,1,1,688,4,1,23,1,2,120,23,1,4,1,1,78,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,181,23,1,4,1,1,688,4,2,2,120,23,1,4,1,1,78,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,180,23,1,4,2,1,688,4,2,23,2,2,118,23,1,4,1,1,78,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,179,23,1,4,3,1,689,4,3,23,1,2,117,23,1,4,1,1,78,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,178,23,1,4,2,1,693,4,1,23,1,2,117,23,1,4,1,1,78,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,178,23,1,4,1,1,694,4,2,2,116,23,1,4,2,1,78,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,178,23,1,4,1,1,694,4,2,2,115,23,1,4,3,1,78,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,178,23,1,4,1,1,694,4,2,2,114,23,1,4,2,1,80,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,178,23,1,4,1,1,694,4,2,2,113,23,1,4,2,1,81,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,178,23,1,4,1,1,694,4,2,2,112,23,1,4,2,1,82,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,178,23,1,4,1,1,694,4,2,2,111,23,1,4,3,1,82,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,178,23,1,4,1,1,694,4,2,2,110,23,1,4,2,1,84,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,178,23,1,4,1,1,694,4,2,2,109,23,1,4,2,1,85,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,178,23,1,4,1,1,694,4,2,2,108,23,1,4,2,1,86,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,178,23,1,4,1,1,694,4,2,2,107,23,1,4,2,1,87,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,178,23,1,4,1,1,694,4,2,2,107,23,1,4,1,1,88,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,178,23,1,4,1,1,694,4,2,2,107,23,1,4,1,1,88,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,178,23,1,4,1,1,694,4,2,2,107,23,1,4,1,1,88,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,178,23,1,4,1,1,694,4,2,2,107,23,1,4,1,1,88,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,178,23,1,4,1,1,694,4,2,2,107,23,1,4,1,1,88,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,178,23,1,4,1,1,694,4,2,2,107,23,1,4,1,1,88,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,178,23,1,4,1,1,694,4,2,2,107,23,1,4,1,1,88,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,178,23,1,4,1,1,694,4,2,2,107,23,1,4,1,1,88,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,178,23,1,4,1,1,694,4,2,2,107,23,1,4,1,1,88,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,178,23,1,4,1,1,694,4,2,2,107,23,1,4,1,1,88,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,173,23,5,4,2,1,694,4,2,2,107,23,1,4,1,1,88,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,172,23,1,4,6,1,695,4,2,2,107,23,1,4,1,1,88,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,171,23,1,4,2,1,700,4,2,2,107,23,1,4,1,1,88,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,170,23,2,4,1,1,701,4,2,2,107,23,1,4,1,1,88,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,169,23,1,4,3,1,701,4,2,2,107,23,1,4,1,1,88,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,168,23,1,4,3,1,702,4,2,2,107,23,1,4,1,1,88,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,168,23,1,4,1,1,704,4,2,2,107,23,1,4,1,1,88,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,168,23,1,4,1,1,704,4,2,2,107,23,1,4,1,1,88,4,1,23,1,2,75,4,2,1,1491,}, + {1,1450,4,2,23,1,2,168,23,1,4,1,1,704,4,2,2,107,23,1,4,2,1,87,4,1,23,1,2,74,23,1,4,2,1,1491,}, + {1,1450,4,2,23,1,2,168,23,1,4,1,1,704,4,2,2,107,23,1,4,1,1,88,4,1,23,1,2,74,23,1,4,2,1,1491,}, + {1,1450,4,2,23,1,2,168,23,1,4,1,1,704,4,2,2,99,23,8,4,2,1,88,4,1,23,1,2,73,23,1,4,2,1,1492,}, + {1,1450,4,2,23,1,2,168,23,1,4,1,1,704,4,2,2,98,23,1,4,9,1,89,4,1,23,1,2,72,23,1,4,2,1,1493,}, + {1,1450,4,2,23,1,2,168,23,1,4,1,1,704,4,2,2,97,23,1,4,2,1,97,4,1,23,1,2,71,23,1,4,2,1,1494,}, + {1,1451,4,1,23,1,2,168,23,1,4,2,1,703,4,2,2,97,23,1,4,2,1,97,4,1,23,1,2,70,23,1,4,2,1,1495,}, + {1,1451,4,1,23,1,2,168,23,1,4,2,1,703,4,2,2,97,23,1,4,2,1,97,4,1,23,1,2,68,23,2,4,2,1,1496,}, + {1,1449,4,2,23,1,2,169,23,1,4,2,1,702,4,2,23,1,2,97,23,1,4,2,1,97,4,1,23,1,2,68,23,1,4,2,1,1497,}, + {1,1448,4,2,23,2,2,169,23,1,4,2,1,701,4,2,23,2,2,98,4,2,1,97,4,1,23,1,2,67,23,1,4,2,1,1498,}, + {1,1447,4,2,23,1,2,171,23,1,4,2,1,700,4,2,23,1,2,100,4,2,1,97,4,1,23,1,2,65,23,2,4,2,1,1499,}, + {1,1447,4,2,23,1,2,171,23,1,4,2,1,700,4,1,23,1,2,100,23,1,4,2,1,97,4,1,23,1,2,65,23,1,4,2,1,1500,}, + {1,1447,4,1,23,1,2,172,23,1,4,2,1,698,4,2,23,2,2,100,23,1,4,1,1,98,4,1,23,1,2,65,23,1,4,1,1,1501,}, + {1,1447,4,1,23,1,2,172,23,1,4,2,1,697,4,2,23,1,2,100,23,2,4,2,1,98,4,1,23,1,2,65,23,1,4,1,1,1501,}, + {1,1447,4,1,23,1,2,172,23,1,4,2,1,697,4,1,23,1,2,100,23,1,4,3,1,99,4,1,23,1,2,65,23,1,4,1,1,1501,}, + {1,1445,4,3,23,1,2,172,23,1,4,2,1,695,4,3,23,1,2,100,23,1,4,2,1,100,4,1,23,1,2,65,23,1,4,1,1,1501,}, + {1,1444,4,2,23,2,2,173,23,1,4,2,1,694,4,2,23,1,2,102,23,1,4,1,1,101,4,1,23,1,2,65,23,1,4,1,1,1501,}, + {1,1444,4,1,23,2,2,174,23,1,4,2,1,693,4,2,23,1,2,103,23,1,4,1,1,101,4,1,23,1,2,65,23,1,4,1,1,1501,}, + {1,1443,4,2,23,1,2,175,23,1,4,1,1,694,4,2,23,1,2,103,23,1,4,1,1,101,4,1,23,1,2,65,23,1,4,1,1,1501,}, + {1,1441,4,3,23,1,2,176,23,1,4,2,1,694,4,1,23,1,2,102,23,1,4,2,1,101,4,1,23,1,2,65,23,1,4,1,1,1501,}, + {1,1441,4,1,23,2,2,177,23,1,4,2,1,693,4,2,23,1,2,101,23,1,4,3,1,101,4,1,23,1,2,65,23,1,4,1,1,1501,}, + {1,1441,4,1,23,1,2,178,23,1,4,1,1,694,4,2,23,1,2,100,23,1,4,2,1,103,4,2,2,65,23,1,4,1,1,1501,}, + {1,1440,4,2,23,1,2,177,23,1,4,2,1,694,4,2,23,1,2,99,23,1,4,2,1,104,4,2,2,65,23,1,4,1,1,1501,}, + {1,1441,4,1,23,1,2,176,23,1,4,2,1,696,4,1,23,1,2,97,23,2,4,2,1,105,4,2,2,65,23,1,4,1,1,1501,}, + {1,1441,4,1,23,1,2,175,23,1,4,2,1,696,4,2,23,1,2,97,23,1,4,2,1,106,4,1,23,1,2,65,23,1,4,1,1,1501,}, + {1,1441,4,1,23,1,2,174,23,1,4,2,1,697,4,2,23,1,2,96,23,1,4,2,1,105,4,3,23,1,2,65,23,1,4,1,1,1501,}, + {1,1441,4,1,23,1,2,173,23,1,4,2,1,698,4,2,23,1,2,94,23,2,4,2,1,105,4,2,23,2,2,66,23,1,4,1,1,1501,}, + {1,1441,4,1,23,1,2,172,23,1,4,2,1,699,4,2,23,1,2,94,23,1,4,2,1,106,4,1,23,1,2,68,23,1,4,1,1,1501,}, + {1,1441,4,1,23,1,2,171,23,1,4,2,1,700,4,2,23,1,2,93,23,1,4,2,1,107,4,1,23,1,2,68,23,1,4,1,1,1501,}, + {1,1441,4,1,23,1,2,170,23,1,4,2,1,701,4,2,23,1,2,93,23,1,4,1,1,108,4,1,23,1,2,68,23,1,4,1,1,1501,}, + {1,1441,4,1,23,1,2,169,23,1,4,3,1,701,4,2,23,1,2,93,23,1,4,1,1,108,4,1,23,1,2,68,23,1,4,1,1,1501,}, + {1,1441,4,1,23,1,2,169,4,2,1,703,4,2,23,1,2,93,23,1,4,2,1,107,4,1,23,1,2,68,23,1,4,1,1,1501,}, + {1,1441,4,1,23,1,2,168,23,1,4,2,1,703,4,2,23,1,2,93,23,1,4,2,1,107,4,1,23,1,2,68,23,1,4,1,1,1501,}, + {1,1441,4,1,23,1,2,168,23,1,4,2,1,704,4,1,23,1,2,93,23,1,4,2,1,107,4,1,23,1,2,68,23,1,4,1,1,1501,}, + {1,1441,4,1,23,1,2,168,23,1,4,2,1,703,4,2,23,1,2,93,23,1,4,1,1,107,4,2,23,1,2,68,23,1,4,1,1,1501,}, + {1,1441,4,1,23,1,2,168,23,1,4,2,1,704,4,1,23,1,2,92,23,2,4,1,1,105,4,3,23,1,2,69,23,1,4,1,1,1501,}, + {1,1441,4,1,23,1,2,169,4,2,1,704,4,1,23,1,2,88,23,2,4,5,1,105,4,2,23,1,2,70,23,1,4,1,1,1501,}, + {1,1441,4,1,23,1,2,168,23,1,4,2,1,703,4,2,23,1,2,87,23,1,4,6,1,105,4,2,23,1,2,71,23,1,4,1,1,1501,}, + {1,1441,4,1,23,1,2,168,23,1,4,2,1,701,4,3,23,1,2,87,23,1,4,2,1,108,4,3,23,1,2,72,23,1,4,1,1,1501,}, + {1,1441,4,1,23,1,2,168,23,1,4,2,1,701,4,2,23,1,2,87,23,1,4,2,1,109,4,2,23,1,2,73,23,1,4,1,1,1501,}, + {1,1441,4,1,23,1,2,168,23,1,4,2,1,700,4,2,23,1,2,87,23,1,4,2,1,110,4,1,23,1,2,74,23,1,4,1,1,1501,}, + {1,1441,4,1,23,1,2,168,23,1,4,2,1,695,4,6,23,1,2,88,4,2,1,110,4,2,23,1,2,74,23,1,4,1,1,1501,}, + {1,1441,4,1,23,1,2,168,23,1,4,2,1,694,4,2,23,5,2,89,4,2,1,110,4,2,2,75,23,1,4,1,1,1501,}, + {1,1441,4,1,23,1,2,168,23,1,4,2,1,694,4,1,23,1,2,94,4,2,1,110,4,2,23,1,2,74,23,1,4,1,1,1501,}, + {1,1441,4,1,23,1,2,168,23,1,4,2,1,694,4,1,23,1,2,94,4,2,1,110,4,2,23,1,2,73,23,1,4,2,1,1501,}, + {1,1441,4,1,23,1,2,168,23,1,4,2,1,694,4,1,23,1,2,94,4,2,1,110,4,2,23,1,2,69,23,5,4,2,1,1501,}, + {1,1441,4,1,23,1,2,168,23,1,4,2,1,694,4,1,23,1,2,94,4,2,1,110,4,2,23,1,2,68,23,1,4,6,1,1502,}, + {1,1441,4,1,23,1,2,168,23,1,4,2,1,694,4,1,23,1,2,94,4,2,1,110,4,2,23,1,2,67,23,1,4,6,1,1503,}, + {1,1441,4,1,23,1,2,168,23,1,4,2,1,694,4,1,23,1,2,94,4,2,1,110,4,2,23,1,2,66,23,1,4,2,1,1508,}, + {1,1441,4,1,23,1,2,169,4,2,1,694,4,1,23,1,2,94,4,2,1,110,4,2,23,1,2,65,23,1,4,2,1,1509,}, + {1,1441,4,1,23,1,2,168,23,1,4,2,1,694,4,1,23,1,2,94,4,2,1,110,4,2,23,1,2,64,23,1,4,2,1,1510,}, + {1,1441,4,1,23,1,2,169,4,2,1,694,4,1,23,1,2,94,23,1,4,1,1,110,4,2,23,1,2,64,23,1,4,1,1,1511,}, + {1,1441,4,1,23,1,2,169,4,2,1,694,4,1,23,1,2,94,23,1,4,1,1,110,4,2,23,1,2,64,23,1,4,1,1,1511,}, + {1,1441,4,1,23,1,2,168,23,1,4,2,1,694,4,1,23,1,2,94,4,2,1,110,4,2,23,1,2,64,23,1,4,1,1,1511,}, + {1,1441,4,1,23,1,2,168,23,1,4,2,1,694,4,1,23,1,2,93,23,1,4,2,1,110,4,2,23,1,2,64,23,1,4,1,1,1511,}, + {1,1441,4,1,23,1,2,167,23,1,4,2,1,695,4,1,23,1,2,85,23,8,4,3,1,110,4,2,23,1,2,64,23,1,4,1,1,1511,}, + {1,1441,4,1,23,1,2,166,23,1,4,2,1,695,4,2,23,1,2,84,23,1,4,10,1,111,4,2,23,1,2,64,23,1,4,1,1,1511,}, + {1,1441,4,1,23,1,2,165,23,1,4,2,1,696,4,2,23,1,2,84,23,1,4,1,1,120,4,2,23,1,2,64,23,1,4,1,1,1511,}, + {1,1441,4,1,23,1,2,164,23,1,4,2,1,695,4,3,23,1,2,85,23,1,4,1,1,120,4,2,23,1,2,64,23,1,4,1,1,1511,}, + {1,1441,4,1,23,1,2,163,23,1,4,2,1,696,4,1,23,2,2,86,23,1,4,1,1,120,4,2,23,1,2,64,23,1,4,1,1,1511,}, + {1,1441,4,1,23,1,2,162,23,1,4,2,1,692,4,6,23,1,2,87,23,1,4,1,1,120,4,2,23,1,2,64,23,1,4,1,1,1511,}, + {1,1441,4,1,23,1,2,161,23,1,4,2,1,692,4,6,23,1,2,88,23,1,4,1,1,120,4,2,23,1,2,64,23,1,4,1,1,1511,}, + {1,1441,4,1,23,1,2,159,23,2,4,3,1,691,4,2,23,2,2,92,23,1,4,1,1,120,4,2,23,1,2,64,23,1,4,1,1,1511,}, + {1,1441,4,1,23,1,2,159,23,1,4,2,1,693,4,1,23,1,2,94,23,1,4,1,1,120,4,2,23,1,2,64,23,1,4,1,1,1511,}, + {1,1441,4,1,23,1,2,159,23,1,4,1,1,694,4,1,23,1,2,93,23,1,4,2,1,120,4,2,23,1,2,64,23,1,4,1,1,1511,}, + {1,1441,4,1,23,1,2,159,23,1,4,1,1,694,4,1,23,1,2,88,23,5,4,3,1,120,4,2,23,1,2,64,23,1,4,1,1,1511,}, + {1,1441,4,1,23,1,2,159,23,1,4,1,1,694,4,1,23,1,2,88,23,1,4,6,1,121,4,2,23,1,2,64,23,1,4,1,1,1511,}, + {1,1441,4,1,23,1,2,159,23,1,4,1,1,694,4,1,23,1,2,87,23,1,4,1,1,127,4,2,23,1,2,63,23,2,4,1,1,1511,}, + {1,1441,4,1,23,1,2,159,23,1,4,1,1,694,4,1,23,1,2,85,23,2,4,2,1,127,4,2,23,1,2,62,23,2,4,2,1,1511,}, + {1,1441,4,1,23,1,2,159,23,1,4,1,1,694,4,1,23,1,2,85,23,1,4,2,1,128,4,2,23,1,2,61,23,1,4,3,1,1512,}, + {1,1441,4,1,23,1,2,159,23,1,4,1,1,693,4,2,23,1,2,84,23,1,4,2,1,129,4,2,23,1,2,61,23,1,4,1,1,1514,}, + {1,1441,4,1,23,1,2,159,23,1,4,1,1,691,4,3,23,1,2,85,23,1,4,1,1,130,4,2,23,1,2,61,4,2,1,1514,}, + {1,1441,4,1,23,1,2,159,23,1,4,1,1,691,4,2,23,1,2,86,23,1,4,1,1,131,4,1,2,62,4,2,1,1514,}, + {1,1441,4,1,23,1,2,159,23,1,4,1,1,691,4,1,23,1,2,87,23,1,4,1,1,129,4,3,2,62,23,1,4,1,1,1514,}, + {1,1441,4,1,23,1,2,159,23,1,4,1,1,691,4,1,23,1,2,86,23,1,4,2,1,128,4,3,23,1,2,62,23,1,4,1,1,1514,}, + {1,1441,4,1,23,1,2,159,23,1,4,1,1,691,4,1,23,1,2,85,23,1,4,3,1,127,4,2,23,2,2,63,4,2,1,1514,}, + {1,1440,4,2,23,1,2,159,23,1,4,1,1,691,4,1,23,1,2,84,23,1,4,2,1,129,4,2,23,1,2,64,23,1,4,1,1,1514,}, + {1,1441,4,1,23,1,2,159,23,1,4,1,1,691,4,1,23,1,2,83,23,1,4,2,1,130,4,1,23,1,2,65,23,1,4,1,1,1514,}, + {1,1441,4,1,23,1,2,159,23,1,4,1,1,691,4,1,23,1,2,82,23,1,4,2,1,131,4,1,23,1,2,65,23,1,4,1,1,1514,}, + {1,1440,4,2,23,1,2,159,23,1,4,1,1,691,4,1,23,1,2,81,23,1,4,3,1,131,4,1,23,1,2,65,23,1,4,1,1,1514,}, + {1,1439,4,2,23,1,2,160,23,1,4,1,1,685,4,7,23,1,2,80,23,1,4,2,1,128,4,6,23,1,2,65,23,1,4,1,1,1514,}, + {1,1438,4,2,23,2,2,160,23,1,4,1,1,685,4,2,23,5,2,80,23,1,4,2,1,128,4,2,23,5,2,66,23,1,4,1,1,1514,}, + {1,1437,4,2,23,1,2,162,23,1,4,1,1,684,4,2,23,1,2,84,23,1,4,2,1,129,4,1,23,1,2,71,23,1,4,1,1,1514,}, + {1,1437,4,2,23,1,2,162,23,1,4,1,1,683,4,2,23,1,2,84,23,1,4,2,1,130,4,1,23,1,2,71,23,1,4,1,1,1514,}, + {1,1437,4,2,2,163,23,1,4,1,1,681,4,3,23,1,2,85,23,1,4,1,1,131,4,1,23,1,2,71,23,1,4,1,1,1514,}, + {1,1437,4,2,2,163,23,1,4,1,1,681,4,2,23,1,2,86,23,1,4,1,1,131,4,1,23,1,2,71,23,1,4,1,1,1514,}, + {1,1436,4,2,23,1,2,163,4,2,1,681,4,1,23,1,2,87,23,1,4,1,1,131,4,1,23,1,2,71,4,2,1,1514,}, + {1,1435,4,3,23,1,2,162,23,1,4,2,1,681,4,1,23,1,2,87,23,1,4,1,1,131,4,1,23,1,2,70,23,1,4,2,1,1514,}, + {1,1434,4,2,23,2,2,161,23,2,4,2,1,682,4,1,23,1,2,87,23,1,4,1,1,131,4,1,23,1,2,65,23,5,4,2,1,1515,}, + {1,1434,4,1,23,2,2,162,23,1,4,2,1,683,4,1,23,1,2,87,23,1,4,1,1,131,4,1,23,1,2,64,23,1,4,6,1,1516,}, + {1,1432,4,3,23,1,2,162,23,1,4,1,1,685,4,1,23,1,2,87,23,1,4,1,1,131,4,1,23,1,2,64,23,1,4,1,1,1521,}, + {1,1431,4,2,23,2,2,161,23,2,4,2,1,685,4,1,23,1,2,85,23,2,4,2,1,131,4,1,23,1,2,64,23,1,4,1,1,1521,}, + {1,1431,4,1,23,1,2,162,23,2,4,2,1,686,4,1,23,1,2,84,23,1,4,3,1,132,4,1,23,1,2,64,23,1,4,1,1,1521,}, + {1,1431,4,1,23,1,2,162,23,1,4,1,1,679,4,10,23,1,2,84,23,1,4,1,1,134,4,1,23,1,2,64,23,1,4,1,1,1521,}, + {1,1431,4,1,23,1,2,160,23,2,4,2,1,678,4,3,23,8,2,85,23,1,4,1,1,134,4,1,23,1,2,64,23,1,4,1,1,1521,}, + {1,1431,4,1,23,1,2,159,23,2,4,2,1,679,4,2,23,1,2,93,23,1,4,1,1,134,4,1,23,1,2,64,23,1,4,1,1,1521,}, + {1,1431,4,1,23,1,2,159,23,1,4,1,1,681,4,1,23,1,2,94,23,1,4,1,1,133,4,2,23,1,2,64,23,1,4,1,1,1521,}, + {1,1431,4,1,23,1,2,159,23,1,4,1,1,681,4,1,23,1,2,93,23,1,4,2,1,131,4,3,23,1,2,65,23,1,4,1,1,1521,}, + {1,1431,4,1,23,1,2,159,23,1,4,1,1,681,4,1,23,1,2,88,23,2,4,6,1,131,4,1,23,2,2,66,23,1,4,1,1,1521,}, + {1,1431,4,1,23,1,2,159,23,1,4,1,1,681,4,1,23,1,2,88,23,1,4,5,1,132,4,2,23,1,2,67,23,1,4,1,1,1521,}, + {1,1431,4,1,23,1,2,159,23,1,4,1,1,681,4,1,23,1,2,87,23,1,4,2,1,136,4,2,2,67,23,2,4,1,1,1521,}, + {1,1431,4,1,23,1,2,159,23,1,4,1,1,681,4,2,2,85,23,2,4,2,1,138,4,1,23,1,2,65,23,1,4,3,1,1521,}, + {1,1431,4,1,23,1,2,159,23,1,4,1,1,681,4,1,23,1,2,85,4,3,1,138,4,2,2,65,23,1,4,2,1,1523,}, + {1,1431,4,1,23,1,2,159,23,1,4,1,1,672,4,10,23,1,2,84,23,1,4,1,1,138,4,3,23,1,2,65,23,1,4,1,1,1524,}, + {1,1431,4,1,23,1,2,159,23,1,4,1,1,672,4,2,23,8,2,85,23,1,4,1,1,137,4,2,23,2,2,66,23,1,4,1,1,1524,}, + {1,1431,4,1,23,1,2,159,23,1,4,1,1,671,4,2,23,1,2,93,23,1,4,1,1,137,4,2,23,1,2,67,23,1,4,1,1,1524,}, + {1,1431,4,1,23,1,2,159,23,1,4,1,1,671,4,2,23,1,2,93,23,1,4,1,1,137,4,1,23,1,2,68,23,1,4,1,1,1524,}, + {1,1431,4,1,23,1,2,159,23,1,4,1,1,671,4,2,2,90,23,4,4,2,1,137,4,1,23,1,2,68,23,1,4,1,1,1524,}, + {1,1431,4,1,23,1,2,159,23,1,4,1,1,671,4,2,2,88,23,1,4,7,1,137,4,1,23,1,2,68,23,1,4,1,1,1524,}, + {1,1430,4,2,23,1,2,159,23,1,4,1,1,671,4,2,23,1,2,87,23,1,4,5,1,138,4,2,23,1,2,68,23,1,4,1,1,1524,}, + {1,1428,4,3,23,1,2,160,23,1,4,1,1,671,4,2,23,1,2,86,23,1,4,2,1,141,4,2,23,2,2,68,23,1,4,1,1,1524,}, + {1,1428,4,2,23,1,2,161,23,1,4,1,1,671,4,2,23,1,2,84,23,2,4,2,1,141,4,2,23,1,2,70,23,1,4,1,1,1524,}, + {1,1424,4,2,1,1,4,2,23,1,2,162,23,1,4,1,1,664,4,1,1,1,4,3,1,2,4,2,2,85,23,1,4,1,1,113,4,31,23,1,2,71,23,1,4,1,1,1524,}, + {1,1422,4,6,23,1,2,163,23,1,4,1,1,662,4,10,23,1,2,85,4,2,1,111,4,32,23,1,2,72,23,1,4,1,1,1524,}, + {1,1421,4,2,23,5,2,164,23,1,4,1,1,662,4,2,23,8,2,85,23,1,4,2,1,111,4,1,23,31,2,73,23,1,4,1,1,1524,}, + {1,1421,4,2,23,1,2,168,23,1,4,1,1,662,4,1,23,1,2,93,23,1,4,2,1,110,4,2,23,1,2,103,23,1,4,1,1,1524,}, + {1,1421,4,1,23,1,2,168,23,1,4,2,1,662,4,1,23,1,2,93,23,1,4,2,1,108,4,3,23,1,2,103,23,1,4,2,1,1524,}, + {1,1421,4,1,23,1,2,167,23,2,4,2,1,662,4,1,23,1,2,88,23,5,4,2,1,108,4,3,23,1,2,103,23,2,4,2,1,1524,}, + {1,1421,4,1,23,1,2,166,23,1,4,3,1,663,4,1,23,1,2,87,23,1,4,7,1,108,4,2,23,1,2,103,23,1,4,3,1,1525,}, + {1,1421,4,1,23,1,2,165,23,1,4,2,1,665,4,1,23,1,2,87,23,1,4,1,1,114,4,1,23,1,2,103,23,1,4,2,1,1527,}, + {1,1421,4,1,23,1,2,164,23,2,4,1,1,666,4,1,23,1,2,85,23,2,4,2,1,114,4,1,23,1,2,102,23,2,4,1,1,1528,}, + {1,1421,4,1,23,1,2,163,23,1,4,3,1,666,4,1,23,1,2,84,23,2,4,2,1,115,4,1,23,1,2,101,23,1,4,3,1,1528,}, + {1,1420,4,2,23,1,2,163,4,2,1,663,4,6,23,1,2,84,23,1,4,2,1,111,4,6,23,1,2,100,23,1,4,2,1,1530,}, + {1,1418,4,3,23,2,2,162,23,1,4,2,1,662,4,5,23,2,2,85,23,1,4,1,1,111,4,6,23,1,2,101,23,1,4,2,1,1530,}, + {1,1418,4,2,23,1,2,164,23,1,4,2,1,661,4,2,23,2,2,89,23,1,4,1,1,111,4,1,23,2,2,105,23,1,4,2,1,1530,}, + {1,1418,4,1,23,1,2,165,23,1,4,2,1,660,4,2,23,1,2,91,23,1,4,1,1,110,4,2,23,1,2,106,23,1,4,2,1,1530,}, + {1,1418,4,1,23,1,2,165,23,1,4,1,1,656,4,7,23,1,2,91,23,1,4,1,1,108,4,3,23,1,2,107,23,1,4,1,1,1531,}, + {1,1418,4,1,23,1,2,163,23,2,4,2,1,656,4,2,23,4,2,93,23,1,4,1,1,108,4,1,23,2,2,106,23,2,4,2,1,1531,}, + {1,1418,4,1,23,1,2,162,23,1,4,3,1,657,4,1,23,1,2,97,4,2,1,107,4,2,23,1,2,106,23,1,4,3,1,1532,}, + {1,1416,4,3,23,1,2,162,23,1,4,1,1,659,4,1,23,1,2,96,23,1,4,2,1,107,4,2,2,107,23,1,4,1,1,1534,}, + {1,1415,4,2,23,2,2,163,23,1,4,1,1,659,4,1,23,1,2,92,23,4,4,3,1,107,4,1,23,1,2,107,23,1,4,1,1,1534,}, + {1,1415,4,1,23,1,2,165,23,1,4,1,1,659,4,1,23,1,2,91,23,1,4,6,1,108,4,2,2,107,23,1,4,1,1,1534,}, + {1,1410,4,6,2,166,23,1,4,1,1,657,4,3,2,91,23,1,4,2,1,108,4,6,23,1,2,107,23,1,4,1,1,1534,}, + {1,1409,4,2,23,5,2,166,23,1,4,1,1,656,4,2,23,2,2,90,23,1,4,2,1,108,4,3,23,5,2,107,23,1,4,1,1,1534,}, + {1,1408,4,2,23,1,2,171,23,1,4,1,1,656,4,1,23,1,2,90,23,2,4,2,1,109,4,1,23,2,2,112,23,1,4,1,1,1534,}, + {1,1381,4,3,1,14,4,11,23,1,2,172,23,1,4,1,1,651,4,5,23,2,2,90,23,1,4,2,1,108,4,3,23,1,2,113,23,1,4,1,1,1534,}, + {1,1379,4,6,1,10,4,13,23,2,2,172,23,1,4,1,1,649,4,6,23,2,2,91,23,1,4,1,1,108,4,3,23,1,2,114,23,1,4,1,1,1534,}, + {1,1379,4,2,23,3,4,1,1,10,4,2,23,2,2,183,23,1,4,1,1,649,4,2,23,1,2,96,23,1,4,1,1,108,4,1,23,2,2,115,23,1,4,1,1,1534,}, + {1,1378,4,2,23,1,2,2,23,1,4,2,1,2,4,1,1,6,4,1,23,1,2,185,23,1,4,1,1,648,4,2,23,1,2,97,23,1,4,1,1,107,4,2,23,1,2,116,23,1,4,1,1,1534,}, + {1,1373,4,6,23,1,2,4,23,1,4,6,1,2,4,2,23,2,2,184,23,2,4,1,1,647,4,2,23,1,2,98,23,1,4,1,1,108,4,1,23,1,2,116,23,1,4,1,1,1534,}, + {1,1373,4,1,23,5,2,6,23,5,4,4,23,2,2,184,23,2,4,2,1,646,4,2,23,1,2,99,23,1,4,1,1,108,4,1,23,1,2,116,23,1,4,1,1,1534,}, + {1,1372,4,2,23,1,2,14,23,1,4,3,23,1,2,185,23,1,4,3,1,647,4,1,23,1,2,100,23,1,4,1,1,107,4,2,23,1,2,116,23,1,4,1,1,1534,}, + {1,1367,4,6,23,1,2,16,23,1,4,1,23,2,2,185,23,1,4,1,1,646,4,3,23,1,2,101,23,1,4,1,1,102,4,6,23,1,2,117,23,1,4,1,1,1534,}, + {1,1366,4,2,23,5,2,18,23,2,2,186,23,1,4,1,1,646,4,2,23,2,2,101,23,1,4,1,1,101,4,3,23,4,2,113,23,5,4,2,1,1534,}, + {1,1366,4,1,23,1,2,211,23,1,4,1,1,645,4,2,23,1,2,103,23,1,4,1,1,101,4,1,23,2,2,116,23,1,4,6,1,1535,}, + {1,1348,4,19,23,1,2,211,23,1,4,1,1,582,4,64,23,1,2,104,23,1,4,1,1,100,4,2,23,1,2,117,23,1,4,3,1,1538,}, + {1,1346,4,3,23,18,2,212,23,1,4,1,1,581,4,2,23,64,2,102,23,2,4,2,1,98,4,3,23,1,2,118,4,2,1,1540,}, + {1,1346,4,2,23,1,2,230,23,1,4,1,1,580,4,2,23,1,2,165,23,1,4,3,1,99,4,1,23,2,2,119,4,2,1,1540,}, + {1,1346,4,2,2,231,23,1,4,1,1,580,4,1,23,1,2,166,23,1,4,2,1,100,4,1,23,1,2,119,23,1,4,2,1,1540,}, + {1,1346,4,1,23,1,2,231,23,1,4,1,1,580,4,1,23,1,2,165,23,1,4,2,1,101,4,1,23,2,2,118,23,1,4,2,1,1540,}, + {1,1346,4,1,23,1,2,231,23,1,4,1,1,580,4,1,23,1,2,160,23,3,4,4,1,102,4,3,23,8,2,108,23,1,4,3,1,1541,}, + {1,1346,4,1,23,1,2,231,23,1,4,1,1,580,4,1,23,1,2,159,23,1,4,6,1,104,4,9,23,1,2,107,23,2,4,2,1,1542,}, + {1,1346,4,1,23,1,2,231,23,1,4,1,1,580,4,1,23,1,2,159,23,1,4,1,1,117,4,2,23,1,2,106,23,1,4,1,1,1544,}, + {1,1346,4,1,23,1,2,231,23,1,4,1,1,580,4,1,23,1,2,159,23,1,4,1,1,117,4,2,23,1,2,106,23,1,4,1,1,1544,}, + {1,1346,4,1,23,1,2,231,23,1,4,1,1,580,4,1,23,1,2,159,23,1,4,1,1,117,4,2,23,1,2,106,23,1,4,2,1,1543,}, + {1,1337,4,10,23,1,2,231,23,1,4,1,1,579,4,2,23,1,2,159,23,1,4,1,1,117,4,2,23,1,2,106,23,1,4,2,1,1543,}, + {1,1337,4,2,23,8,2,232,23,1,4,1,1,577,4,3,23,1,2,158,23,2,4,2,1,117,4,2,23,1,2,106,23,1,4,2,1,1543,}, + {1,1336,4,2,23,1,2,240,23,1,4,1,1,577,4,1,23,2,2,158,23,1,4,3,1,118,4,2,23,1,2,106,23,1,4,2,1,1543,}, + {1,1336,4,2,23,1,2,240,23,1,4,1,1,575,4,3,23,1,2,159,23,1,4,1,1,120,4,2,23,1,2,106,23,1,4,1,1,1544,}, + {1,1336,4,2,2,240,23,1,4,2,1,574,4,3,23,1,2,156,23,1,2,1,23,2,4,2,1,120,4,2,23,1,2,102,23,4,4,2,1,1544,}, + {1,1336,4,2,2,238,23,1,4,3,1,575,4,1,23,2,2,155,23,1,4,6,1,121,4,2,23,1,2,100,23,2,4,6,1,1544,}, + {1,1336,4,2,2,238,23,1,4,2,1,575,4,2,23,1,2,155,23,1,4,6,1,122,4,2,23,1,2,100,23,1,4,6,1,1545,}, + {1,1336,4,2,2,237,23,1,4,1,1,575,4,3,23,1,2,155,23,2,4,1,1,127,4,2,23,1,2,99,23,1,4,2,1,1550,}, + {1,1336,4,2,2,235,23,2,4,2,1,575,4,1,23,2,2,155,23,1,4,3,1,127,4,2,23,1,2,97,23,2,4,2,1,1551,}, + {1,1336,4,2,2,235,4,3,1,575,4,2,23,1,2,155,23,1,4,3,1,128,4,2,23,1,2,97,23,1,4,2,1,1552,}, + {1,1336,4,2,2,234,23,1,4,2,1,576,4,2,2,156,23,1,4,2,1,129,4,2,23,1,2,97,4,2,1,1553,}, + {1,1336,4,2,2,234,23,1,4,2,1,576,4,2,2,156,23,1,4,1,1,130,4,2,23,1,2,97,4,2,1,1553,}, + {1,1336,4,2,2,234,23,1,4,2,1,576,4,2,2,156,23,1,4,1,1,130,4,2,23,1,2,97,4,2,1,1553,}, + {1,1336,4,2,2,234,23,1,4,1,1,577,4,2,2,156,23,1,4,1,1,130,4,2,23,1,2,96,23,1,4,2,1,1553,}, + {1,1336,4,2,2,233,23,1,4,2,1,577,4,2,2,151,23,5,4,2,1,131,4,2,23,97,4,1,1,1554,}, + {1,1336,4,2,2,231,23,2,4,2,1,578,4,2,2,150,23,1,4,7,1,131,4,100,1,1554,}, + {1,1336,4,2,2,231,23,1,4,2,1,579,4,2,2,149,23,1,4,3,1,1790,}, + {1,1336,4,2,2,231,23,1,4,1,1,580,4,2,2,148,23,2,4,1,1,1792,}, + {1,1336,4,2,2,231,23,1,4,1,1,580,4,2,2,147,23,1,4,3,1,1792,}, + {1,1336,4,2,2,231,23,1,4,1,1,580,4,2,2,146,23,1,4,2,1,1794,}, + {1,1336,4,2,2,231,23,1,4,1,1,580,4,2,2,146,23,1,4,1,1,1795,}, + {1,1336,4,2,2,231,23,1,4,1,1,580,4,2,2,146,23,1,4,1,1,1795,}, + {1,1336,4,2,2,231,23,1,4,1,1,580,4,2,2,146,23,1,4,1,1,1795,}, + {1,1336,4,2,2,230,23,2,4,1,1,580,4,2,2,146,23,1,4,1,1,1795,}, + {1,1336,4,2,2,226,23,5,4,2,1,580,4,2,2,144,23,2,4,2,1,1795,}, + {1,1336,4,2,2,225,23,1,4,6,1,581,4,2,2,143,23,1,4,3,1,1796,}, + {1,1336,4,2,2,224,23,1,4,2,1,586,4,2,23,1,2,142,23,1,4,1,1,1798,}, + {1,1336,4,2,2,223,23,1,4,2,1,588,4,2,23,4,2,133,23,5,4,2,1,1798,}, + {1,1336,4,2,2,222,23,1,4,3,1,588,4,6,23,2,2,130,23,1,4,6,1,1799,}, + {1,1336,4,2,2,221,23,1,4,2,1,594,4,3,23,1,2,130,23,1,4,2,1,1803,}, + {1,1336,4,2,2,221,23,1,4,2,1,596,4,1,23,1,2,130,4,2,1,1804,}, + {1,1336,4,2,2,221,23,1,4,2,1,596,4,1,23,1,2,130,4,2,1,1804,}, + {1,1336,4,2,23,1,2,220,23,1,4,2,1,596,4,1,23,1,2,130,4,2,1,1804,}, + {1,1336,4,2,23,1,2,220,23,1,4,1,1,597,4,2,23,1,2,129,4,2,1,1804,}, + {1,1337,4,2,23,15,2,203,23,1,4,3,1,597,4,3,23,1,2,128,4,2,1,1804,}, + {1,1338,4,16,23,1,2,201,23,1,4,2,1,600,4,3,23,1,2,127,4,2,1,1804,}, + {1,1352,4,2,23,1,2,200,23,2,4,1,1,603,4,1,23,1,2,126,23,1,4,2,1,1804,}, + {1,1353,4,2,23,18,2,28,23,41,2,109,23,5,4,2,1,603,4,1,23,1,2,121,23,5,4,2,1,1805,}, + {1,1354,4,19,23,1,2,26,23,1,4,40,23,1,2,108,23,1,4,6,1,604,4,1,23,1,2,120,23,1,4,7,1,1805,}, + {1,1372,4,2,23,1,2,24,23,1,4,2,1,38,4,2,23,1,2,107,4,2,1,609,4,1,23,1,2,120,23,1,4,1,1,1811,}, + {1,1372,4,2,23,25,4,3,1,39,4,1,23,1,2,107,4,2,1,609,4,1,23,1,2,118,23,2,4,2,1,1811,}, + {1,1373,4,28,1,40,4,1,23,1,2,107,4,2,1,609,4,1,23,1,2,117,23,1,4,3,1,1812,}, + {1,1375,4,19,1,1,4,2,1,1,4,1,1,42,4,1,23,1,2,107,4,2,1,609,4,1,23,1,2,117,23,1,4,1,1,1814,}, + {1,1441,4,1,23,1,2,107,4,2,1,609,4,1,23,1,2,117,23,1,4,1,1,1814,}, + {1,1441,4,1,23,1,2,107,4,2,1,609,4,1,23,1,2,117,23,1,4,1,1,1814,}, + {1,1440,4,2,23,1,2,106,23,1,4,2,1,609,4,1,23,1,2,117,4,2,1,1814,}, + {1,1441,4,1,23,2,2,105,23,1,4,2,1,609,4,2,23,1,2,115,23,1,4,2,1,1814,}, + {1,1441,4,3,23,8,2,82,23,15,4,2,1,610,4,3,23,115,4,2,1,1815,}, + {1,1442,4,9,23,1,2,81,23,1,4,16,1,612,4,119,1,1815,}, + {1,1450,4,2,23,1,2,80,23,1,4,1,1,2561,}, + {1,1450,4,2,23,1,2,78,23,2,4,2,1,2561,}, + {1,1450,4,2,23,1,2,77,23,1,4,3,1,2562,}, + {1,1450,4,2,23,1,2,77,23,1,4,1,1,2564,}, + {1,1450,4,2,23,1,2,77,23,1,4,1,1,2564,}, + {1,1450,4,2,23,1,2,77,23,1,4,1,1,2564,}, + {1,1450,4,2,23,1,2,77,23,1,4,1,1,2564,}, + {1,1450,4,2,2,78,23,1,4,1,1,2564,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, +} +} \ No newline at end of file diff --git a/maps/fish_defender_v2/cat_defender_layout_v2.lua b/maps/fish_defender_v2/cat_defender_layout_v2.lua new file mode 100644 index 00000000..5de85157 --- /dev/null +++ b/maps/fish_defender_v2/cat_defender_layout_v2.lua @@ -0,0 +1,2054 @@ +return { +height = 2048, +width = 4096, +data = { + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,2445,2,107,1,1544,}, + {1,2445,2,107,1,1544,}, + {1,2445,2,107,1,1544,}, + {1,2445,2,108,1,1543,}, + {1,2445,2,108,1,1543,}, + {1,2445,2,110,1,1541,}, + {1,2445,2,111,1,1540,}, + {1,2445,2,111,1,1540,}, + {1,2439,2,123,1,1534,}, + {1,2438,2,124,1,1534,}, + {1,2438,2,125,1,1533,}, + {1,2437,2,127,1,1532,}, + {1,2419,2,163,1,1514,}, + {1,2419,2,163,1,1514,}, + {1,2419,2,162,1,1515,}, + {1,2419,2,163,1,1514,}, + {1,2419,2,163,1,1514,}, + {1,2417,2,166,1,1513,}, + {1,2416,2,168,1,1512,}, + {1,2415,2,170,1,1511,}, + {1,2415,2,171,1,1510,}, + {1,2403,2,187,1,1,2,1,1,1,2,3,1,1,2,4,1,1495,}, + {1,2402,2,199,1,1495,}, + {1,2403,2,198,1,1495,}, + {1,2403,2,198,1,1495,}, + {1,2403,2,198,1,1495,}, + {1,2403,2,198,1,1495,}, + {1,2403,2,200,1,1493,}, + {1,2403,2,201,1,1492,}, + {1,2402,2,203,1,4,4,1,1,1486,}, + {1,2402,2,203,1,1491,}, + {1,2393,2,218,1,1485,}, + {1,2393,2,218,1,1485,}, + {1,2393,2,219,1,1484,}, + {1,2393,2,221,1,1482,}, + {1,2393,2,221,1,1482,}, + {1,2393,2,222,1,1481,}, + {1,2393,2,223,1,1480,}, + {1,2393,2,225,1,1478,}, + {1,2392,2,226,1,1478,}, + {1,2392,2,226,1,1478,}, + {1,2383,2,244,1,1469,}, + {1,2383,2,244,1,1469,}, + {1,2383,2,245,1,1468,}, + {1,2383,2,250,1,1463,}, + {1,2383,2,251,1,1462,}, + {1,2383,2,251,1,1462,}, + {1,2383,2,251,1,1462,}, + {1,2383,2,251,1,1462,}, + {1,2383,2,251,1,1462,}, + {1,2383,2,73,1,59,2,121,1,1460,}, + {1,2383,2,72,1,61,2,121,1,1459,}, + {1,2383,2,72,1,61,2,121,1,1459,}, + {1,2383,2,65,1,1,2,1,1,1,2,3,1,63,2,1,1,1,2,2,1,1,2,116,1,1458,}, + {1,2383,2,62,1,81,2,117,1,1453,}, + {1,2383,2,62,1,81,2,117,1,1453,}, + {1,2383,2,61,1,83,2,116,1,1453,}, + {1,2383,2,60,1,84,2,116,1,1453,}, + {1,2383,2,59,1,85,2,116,1,1453,}, + {1,2382,2,59,1,86,2,116,1,1453,}, + {1,2380,2,40,1,118,2,105,1,1453,}, + {1,2379,2,5,23,1,21,4,2,4,23,1,21,1,23,1,2,23,1,120,2,105,1,1452,}, + {1,2379,2,4,23,1,21,5,23,4,21,3,23,2,2,21,1,120,2,105,1,1452,}, + {1,2378,2,4,23,1,21,15,2,3,1,150,2,94,1,1451,}, + {1,2379,2,3,21,16,23,1,2,1,1,152,2,98,1,1446,}, + {1,2380,2,1,23,1,21,17,4,1,1,152,2,99,1,1445,}, + {1,2380,2,1,21,19,1,153,2,99,1,1444,}, + {1,2381,21,20,1,154,2,98,1,1443,}, + {1,2379,4,1,21,21,4,1,1,153,2,98,1,1443,}, + {1,2379,21,23,4,1,1,153,2,97,1,1443,}, + {1,2379,21,24,1,155,2,95,1,1443,}, + {1,2377,4,1,21,26,4,1,1,153,2,95,1,1443,}, + {1,2377,21,28,1,154,2,94,1,1443,}, + {1,2376,4,1,21,28,4,1,1,162,2,85,1,1443,}, + {1,2376,21,31,1,161,2,85,1,1443,}, + {1,2376,21,32,1,161,2,85,1,1442,}, + {1,2374,21,35,1,161,2,85,1,1441,}, + {1,2374,21,35,4,1,1,161,2,85,1,1440,}, + {1,2374,21,36,1,162,2,85,1,1439,}, + {1,2374,21,36,4,1,1,161,2,86,1,1438,}, + {1,2373,4,1,21,37,1,161,2,88,1,1436,}, + {1,2373,21,38,4,1,1,160,2,88,1,1436,}, + {1,2372,21,40,1,160,2,89,1,1435,}, + {1,2372,21,40,4,1,1,164,2,86,1,1433,}, + {1,2371,4,1,21,41,1,165,2,85,1,1433,}, + {1,2370,4,1,21,42,1,165,2,85,1,1433,}, + {1,2370,21,43,4,1,1,166,2,83,1,1433,}, + {1,2370,21,44,1,168,2,81,1,1433,}, + {1,2369,21,45,1,168,2,81,1,1433,}, + {1,2369,21,46,1,167,2,83,1,1431,}, + {1,2369,21,46,1,167,2,84,1,1430,}, + {1,2368,21,47,1,167,2,85,1,1429,}, + {1,2367,21,49,1,166,2,86,1,1428,}, + {1,2367,21,49,1,175,2,82,1,1423,}, + {1,2367,21,49,1,175,2,82,1,1423,}, + {1,2367,21,49,4,1,1,175,2,81,1,1423,}, + {1,2367,21,50,1,176,2,80,1,1423,}, + {1,2366,21,51,1,177,2,79,1,1423,}, + {1,2366,21,51,1,178,2,78,1,1423,}, + {1,2366,21,51,1,179,2,77,1,1423,}, + {1,2365,21,52,1,181,2,75,1,1423,}, + {1,2365,21,52,1,181,2,75,1,1423,}, + {1,2365,21,53,1,181,2,74,1,1423,}, + {1,2365,21,53,1,183,2,72,1,1423,}, + {1,2365,21,53,1,184,2,71,1,1423,}, + {1,2365,21,53,1,184,2,73,1,1421,}, + {1,2365,21,53,1,184,2,74,1,1420,}, + {1,2365,21,53,1,184,2,74,1,1420,}, + {1,2365,21,53,1,184,2,74,1,1420,}, + {1,2365,21,53,1,184,2,74,1,1420,}, + {1,2365,21,52,4,1,1,184,2,74,1,1420,}, + {1,2365,21,52,1,184,2,76,1,1419,}, + {1,2362,4,1,21,54,1,186,2,76,1,1417,}, + {1,2362,21,55,1,187,2,75,1,1417,}, + {1,2362,21,55,1,187,2,76,1,1416,}, + {1,2360,4,1,21,56,1,192,2,72,1,1415,}, + {1,2361,21,56,1,194,2,72,1,1413,}, + {1,2361,4,2,21,54,1,194,2,72,1,1413,}, + {1,2364,21,53,4,1,1,193,2,73,1,1412,}, + {1,2364,21,54,4,1,1,192,2,74,1,1411,}, + {1,2364,4,1,21,55,1,191,2,75,1,1410,}, + {1,2365,4,1,21,55,4,1,1,189,2,75,1,1410,}, + {1,2367,21,55,4,1,1,190,2,73,1,1410,}, + {1,2367,21,56,1,191,2,72,1,1410,}, + {1,2368,21,57,4,1,1,188,2,72,1,1410,}, + {1,2368,4,1,21,57,4,1,1,188,2,71,1,1410,}, + {1,2369,21,58,4,1,1,189,2,69,1,1410,}, + {1,2368,4,1,21,59,4,1,1,188,2,69,1,1410,}, + {1,2367,21,62,4,1,1,188,2,68,1,1410,}, + {1,2366,4,1,21,63,4,1,1,189,2,66,1,1410,}, + {1,2366,21,65,1,190,2,65,1,1410,}, + {1,2365,4,1,21,65,4,1,1,189,2,66,1,1409,}, + {1,2364,4,1,21,68,1,188,2,68,1,1407,}, + {1,2364,21,69,4,1,1,187,2,68,1,1407,}, + {1,2363,4,1,21,70,1,187,2,69,1,1406,}, + {1,2363,21,71,1,189,2,72,1,1401,}, + {1,2362,21,72,1,190,2,72,1,1400,}, + {1,2361,4,1,21,71,4,2,1,189,2,72,1,1400,}, + {1,2361,21,70,4,1,1,192,2,72,1,1400,}, + {1,2361,21,69,1,194,2,72,1,1400,}, + {1,2360,21,67,4,1,1,196,2,72,1,1400,}, + {1,2360,21,66,1,198,2,72,1,1400,}, + {1,2359,21,65,1,200,2,72,1,1400,}, + {1,2358,4,1,21,64,4,1,1,200,2,72,1,1400,}, + {1,2358,21,63,4,1,1,202,2,72,1,1400,}, + {1,2357,4,1,21,62,1,204,2,72,1,1400,}, + {1,2357,21,61,1,206,2,72,1,1400,}, + {1,2357,21,60,4,1,1,206,2,72,1,1400,}, + {1,2356,4,1,21,60,1,207,2,72,1,1400,}, + {1,2357,21,59,4,1,1,207,2,72,1,1400,}, + {1,2358,4,2,21,56,1,208,2,72,1,1400,}, + {1,2360,4,3,21,51,1,212,2,70,1,1400,}, + {1,2365,21,49,1,213,2,68,1,1401,}, + {1,2367,4,2,21,34,1,1,4,2,21,6,1,1,4,1,1,213,2,69,1,1400,}, + {1,2370,4,2,21,31,1,3,21,5,1,217,2,68,1,1400,}, + {1,2373,21,30,1,3,21,3,4,1,21,1,1,219,2,66,1,1400,}, + {1,2374,4,1,21,26,1,6,21,1,1,223,2,65,1,1400,}, + {1,2375,4,1,1,1,21,24,1,6,4,1,1,223,2,64,1,1401,}, + {1,2377,4,1,21,22,1,231,2,65,1,1400,}, + {1,2379,21,20,4,1,1,231,2,65,1,1400,}, + {1,2379,4,1,21,19,1,232,2,65,1,1400,}, + {1,2381,21,17,4,1,1,233,2,66,1,1398,}, + {1,2381,21,17,1,236,2,65,1,1397,}, + {1,2381,21,5,4,1,21,11,1,236,2,66,1,1396,}, + {1,2381,21,3,1,4,21,10,1,236,2,66,1,1396,}, + {1,2382,4,1,1,5,4,1,21,9,1,236,2,71,1,1391,}, + {1,2387,4,1,21,10,1,236,2,71,1,1391,}, + {1,2387,21,11,4,1,1,235,2,71,1,1391,}, + {1,2387,21,12,1,235,2,71,1,1391,}, + {1,2386,21,13,4,1,1,234,2,71,1,1391,}, + {1,2385,21,15,4,1,1,233,2,71,1,1391,}, + {1,2385,21,16,4,1,1,232,2,71,1,1391,}, + {1,2383,4,1,21,18,4,1,1,231,2,71,1,1391,}, + {1,2382,4,1,21,20,1,231,2,71,1,1391,}, + {1,2382,21,22,1,230,2,71,1,1391,}, + {1,2381,4,1,21,22,1,230,2,71,1,1391,}, + {1,2381,21,24,1,229,2,71,1,1391,}, + {1,2381,21,24,4,1,1,228,2,71,1,1391,}, + {1,2380,21,26,1,228,2,71,1,1391,}, + {1,2379,21,28,1,227,2,71,1,1391,}, + {1,2378,21,30,1,226,2,71,1,1391,}, + {1,2378,21,30,1,226,2,71,1,1391,}, + {1,2377,4,1,21,31,4,1,1,224,2,71,1,1391,}, + {1,2377,21,33,1,224,2,71,1,1391,}, + {1,2377,21,33,1,224,2,71,1,1391,}, + {1,2376,4,1,21,34,4,1,1,222,2,71,1,1391,}, + {1,2376,21,36,1,222,2,71,1,1391,}, + {1,2376,21,36,1,222,2,71,1,1391,}, + {1,2634,2,71,1,1391,}, + {1,2634,2,71,1,1391,}, + {1,2634,2,71,1,1391,}, + {1,2634,2,71,1,1391,}, + {1,2634,2,71,1,1391,}, + {1,2634,2,71,1,1391,}, + {1,2634,2,71,1,1391,}, + {1,2634,2,71,1,1391,}, + {1,2634,2,71,1,1391,}, + {1,2634,2,71,1,1391,}, + {1,2634,2,71,1,1391,}, + {1,2634,2,71,1,1391,}, + {1,2634,2,71,1,1391,}, + {1,2634,2,71,1,1391,}, + {1,2634,2,71,1,1391,}, + {1,2634,2,71,1,1391,}, + {1,2634,2,71,1,1391,}, + {1,2634,2,72,1,1390,}, + {1,2634,2,73,1,1389,}, + {1,2634,2,75,1,1387,}, + {1,2634,2,75,1,1387,}, + {1,2634,2,75,1,1387,}, + {1,2634,2,75,1,1387,}, + {1,2634,2,75,1,1387,}, + {1,2634,2,75,1,1387,}, + {1,2634,2,77,1,1385,}, + {1,2634,2,78,1,1384,}, + {1,2634,2,79,1,1383,}, + {1,2634,2,80,1,1382,}, + {1,2634,2,83,1,1379,}, + {1,2634,2,83,1,1379,}, + {1,2634,2,83,1,1379,}, + {1,2634,2,83,1,1379,}, + {1,2634,2,83,1,1379,}, + {1,2634,2,83,1,1379,}, + {1,2634,2,83,1,1379,}, + {1,2634,2,83,1,1379,}, + {1,2634,2,83,1,1379,}, + {1,2634,2,83,1,1379,}, + {1,2634,2,83,1,1379,}, + {1,2634,2,83,1,1379,}, + {1,2634,2,83,1,1379,}, + {1,2634,2,83,1,1379,}, + {1,2634,2,83,1,1379,}, + {1,2634,2,83,1,1379,}, + {1,2634,2,83,1,1379,}, + {1,2634,2,83,1,1379,}, + {1,2634,2,83,1,1379,}, + {1,2634,2,83,1,1379,}, + {1,2634,2,83,1,1379,}, + {1,2634,2,83,1,1379,}, + {1,2634,2,83,1,1379,}, + {1,2634,2,83,1,1379,}, + {1,2634,2,83,1,1379,}, + {1,2634,2,83,1,1379,}, + {1,2634,2,83,1,1379,}, + {1,2634,2,83,1,1379,}, + {1,2634,2,83,1,1379,}, + {1,2634,2,83,1,1379,}, + {1,2634,2,83,1,1379,}, + {1,2634,2,83,1,1379,}, + {1,2634,2,83,1,1379,}, + {1,2634,2,83,1,1379,}, + {1,2634,2,83,1,1379,}, + {1,2634,2,83,1,1379,}, + {1,2634,2,83,1,1379,}, + {1,2634,2,83,1,1379,}, + {1,2633,2,84,1,1379,}, + {1,2631,2,86,1,1379,}, + {1,2631,2,86,1,1379,}, + {1,2630,2,87,1,1379,}, + {1,2625,2,2,1,1,2,89,1,1379,}, + {1,2624,2,93,1,1379,}, + {1,2624,2,93,1,1379,}, + {1,2624,2,93,1,1379,}, + {1,2624,2,93,1,1379,}, + {1,2624,2,93,1,1379,}, + {1,2624,2,93,1,1379,}, + {1,2624,2,93,1,1379,}, + {1,2624,2,93,1,1379,}, + {1,2624,2,93,1,1379,}, + {1,2624,2,93,1,1379,}, + {1,2624,2,93,1,1379,}, + {1,2624,2,93,1,1379,}, + {1,2624,2,93,1,1379,}, + {1,2624,2,93,1,1379,}, + {1,2624,2,93,1,1379,}, + {1,2624,2,93,1,1379,}, + {1,2624,2,93,1,1379,}, + {1,2624,2,93,1,1379,}, + {1,2624,2,93,1,1379,}, + {1,2624,2,93,1,1379,}, + {1,2624,2,93,1,1379,}, + {1,2624,2,92,1,1380,}, + {1,2624,2,89,1,1383,}, + {1,2624,2,88,1,1384,}, + {1,2623,2,89,1,1384,}, + {1,2622,2,88,1,1386,}, + {1,2621,2,88,1,1387,}, + {1,2621,2,88,1,1387,}, + {1,2621,2,87,1,1388,}, + {1,2621,2,85,1,1390,}, + {1,2621,2,84,1,1391,}, + {1,2620,2,85,1,1391,}, + {1,2615,2,90,1,1391,}, + {1,2615,2,90,1,1391,}, + {1,2615,2,90,1,1391,}, + {1,2615,2,90,1,1391,}, + {1,2615,2,90,1,1391,}, + {1,2615,2,90,1,1391,}, + {1,2615,2,90,1,1391,}, + {1,2615,2,90,1,1391,}, + {1,2615,2,90,1,1391,}, + {1,2615,2,90,1,1391,}, + {1,2615,2,90,1,1391,}, + {1,2615,2,90,1,1391,}, + {1,2615,2,90,1,1391,}, + {1,2615,2,90,1,1391,}, + {1,2614,2,91,1,1391,}, + {1,2613,2,92,1,1391,}, + {1,2611,2,94,1,1391,}, + {1,2611,2,94,1,1391,}, + {1,2611,2,94,1,1391,}, + {1,2611,2,94,1,1391,}, + {1,2611,2,94,1,1391,}, + {1,2611,2,94,1,1391,}, + {1,2611,2,94,1,1391,}, + {1,2611,2,94,1,1391,}, + {1,2611,2,94,1,1391,}, + {1,2611,2,94,1,1391,}, + {1,2611,2,94,1,1391,}, + {1,2611,2,94,1,1391,}, + {1,2610,2,95,1,1391,}, + {1,2605,2,100,1,1391,}, + {1,2604,2,101,1,1391,}, + {1,2604,2,101,1,1391,}, + {1,2602,2,103,1,1391,}, + {1,2601,2,104,1,1391,}, + {1,2602,2,103,1,1391,}, + {1,2602,2,103,1,1391,}, + {1,2602,2,103,1,1391,}, + {1,2602,2,103,1,1391,}, + {1,2602,2,103,1,1391,}, + {1,2602,2,103,1,1391,}, + {1,2602,2,103,1,1391,}, + {1,2602,2,103,1,1391,}, + {1,2602,2,103,1,1391,}, + {1,1281,2,22,1,1299,2,103,1,1391,}, + {1,1280,2,23,1,1299,2,103,1,1391,}, + {1,1280,2,24,1,1298,2,102,1,1392,}, + {1,1278,2,27,1,1297,2,101,1,1393,}, + {1,1277,2,29,1,1296,2,100,1,1394,}, + {1,1277,2,30,1,1295,2,99,1,1395,}, + {1,1277,2,31,1,1294,2,98,1,1396,}, + {1,1277,2,33,1,1291,2,98,1,1397,}, + {1,1277,2,33,1,1290,2,98,1,1398,}, + {1,1276,2,34,1,1288,2,99,1,1399,}, + {1,1271,2,38,1,1289,2,98,1,1400,}, + {1,1271,2,38,1,1288,2,99,1,1,4,1,1,1398,}, + {1,1271,2,38,1,1286,2,101,1,1400,}, + {1,1271,2,39,1,1284,2,102,1,1400,}, + {1,1271,2,39,1,1284,2,102,1,1400,}, + {1,1270,2,40,1,1282,2,104,1,1400,}, + {1,1268,2,44,1,1280,2,104,1,1400,}, + {1,1268,2,45,1,1279,2,104,1,1400,}, + {1,1267,2,46,1,1279,2,104,1,1400,}, + {1,1114,2,2,1,151,2,47,1,1278,2,104,1,1400,}, + {1,1114,2,3,1,144,2,55,1,1276,2,104,1,1400,}, + {1,1115,2,3,1,142,2,57,1,1275,2,104,1,1400,}, + {1,1114,2,4,1,142,2,58,1,1274,2,104,1,1400,}, + {1,1114,2,10,1,134,2,61,1,1273,2,104,1,1400,}, + {1,1115,2,9,1,134,2,61,1,1273,2,104,1,1400,}, + {1,1114,2,10,1,134,2,61,1,1273,2,104,1,1400,}, + {1,1114,2,10,1,134,2,61,1,1273,2,104,1,1400,}, + {1,1114,2,10,1,134,2,61,1,1273,2,104,1,1400,}, + {1,1114,2,10,1,133,2,62,1,1273,2,104,1,1400,}, + {1,1114,2,10,1,131,2,64,1,1273,2,104,1,1400,}, + {1,1114,2,10,1,130,2,65,1,1273,2,104,1,1400,}, + {1,1113,2,11,1,130,2,65,1,1273,2,104,1,1400,}, + {1,1113,2,11,1,129,2,66,1,1273,2,104,1,1400,}, + {1,1112,2,12,1,124,2,71,1,1272,2,105,1,1400,}, + {1,1112,2,12,1,124,2,71,1,1272,2,105,1,1400,}, + {1,1112,2,12,1,124,2,71,1,1269,2,108,1,1400,}, + {1,1112,2,12,1,124,2,71,1,1269,2,108,1,1400,}, + {1,1111,2,13,1,124,2,71,1,1268,2,109,1,1400,}, + {1,1111,2,14,1,122,2,72,1,1266,2,111,1,1400,}, + {1,1111,2,16,1,118,2,74,1,1266,2,111,1,1400,}, + {1,1110,2,17,1,117,2,75,1,1265,2,112,1,1400,}, + {1,1110,2,18,1,116,2,75,1,1264,2,111,1,1402,}, + {1,1110,2,20,1,113,2,76,1,1263,2,111,1,1403,}, + {1,1110,2,23,1,105,2,81,1,1263,2,111,1,1403,}, + {1,1109,2,24,1,105,2,81,1,1263,2,110,1,1404,}, + {1,1108,2,25,1,105,2,81,1,1263,2,108,1,1406,}, + {1,1108,2,25,1,105,2,81,1,1263,2,108,1,1406,}, + {1,1108,2,25,1,105,2,81,1,1263,2,107,1,1407,}, + {1,1108,2,25,1,104,2,82,1,1263,2,105,1,1409,}, + {1,1107,2,26,1,102,2,84,1,1263,2,104,1,1410,}, + {1,1107,2,27,1,101,2,84,1,1263,2,104,1,1410,}, + {1,1106,2,29,1,99,2,85,1,1263,2,104,1,1410,}, + {1,1106,2,30,1,93,2,90,1,1263,2,104,1,1410,}, + {1,1105,2,31,1,93,2,90,1,1263,2,104,1,1410,}, + {1,1105,2,31,1,92,2,91,1,1263,2,104,1,1410,}, + {1,1105,2,31,1,93,2,90,1,1263,2,104,1,1410,}, + {1,1104,2,33,1,91,2,91,1,1262,2,105,1,1410,}, + {1,1104,2,34,1,90,2,91,1,1261,2,106,1,1410,}, + {1,1103,2,35,1,88,2,93,1,1260,2,107,1,1410,}, + {1,1103,2,36,1,86,2,94,1,1259,2,108,1,1410,}, + {1,1102,2,37,1,86,2,94,1,1259,2,108,1,1410,}, + {1,1102,2,37,1,85,2,95,1,1253,2,114,1,1410,}, + {1,1102,2,41,1,76,2,100,1,1253,2,114,1,1410,}, + {1,1101,2,42,1,76,2,100,1,604,23,3,2,13,23,3,21,1,1,629,2,114,1,1410,}, + {1,1100,2,43,1,76,2,100,1,478,21,1,23,10,1,109,23,2,2,27,23,2,1,624,2,112,1,1412,}, + {1,1100,2,43,1,76,2,100,1,469,21,1,23,1,2,24,23,1,1,98,23,1,2,37,23,1,1,620,2,111,1,1413,}, + {1,1100,2,43,1,76,2,100,1,464,21,1,2,35,23,1,1,89,21,1,2,45,23,1,1,358,2,48,1,57,2,48,1,105,2,111,1,1413,}, + {1,1099,2,44,1,75,2,101,1,460,23,1,2,43,23,1,1,82,23,1,2,52,1,62,23,1,2,46,23,1,1,61,23,1,2,47,1,15,2,110,1,11,23,1,2,48,1,55,2,48,23,1,1,105,2,111,1,1413,}, + {1,1099,2,44,1,73,2,103,1,457,23,1,2,50,1,77,2,57,23,1,1,59,2,48,23,1,1,59,21,1,2,48,23,1,1,14,2,110,1,12,2,48,1,54,23,1,2,48,1,106,2,110,1,1414,}, + {1,1099,2,44,1,72,2,104,1,455,23,1,2,54,23,1,1,71,23,1,2,62,1,57,2,49,1,59,2,49,23,1,1,14,2,110,1,12,23,1,2,48,1,53,2,48,1,107,2,110,1,1414,}, + {1,1098,2,46,1,71,2,104,1,452,23,1,2,60,1,67,23,1,2,66,1,55,2,50,1,57,2,50,23,1,1,14,2,110,1,13,2,48,23,1,1,51,23,1,2,48,1,107,2,110,1,1414,}, + {1,1098,2,47,1,69,2,105,1,450,2,65,21,1,1,62,23,1,2,24,23,22,2,24,21,1,1,52,2,51,1,55,2,51,23,1,1,14,2,110,1,14,2,48,1,51,2,48,1,108,2,111,1,1413,}, + {1,1097,2,49,1,63,2,110,1,448,2,26,23,17,2,26,23,1,1,58,23,1,2,20,23,33,2,21,1,51,2,52,1,53,23,1,2,51,23,1,1,14,2,110,1,14,2,48,23,1,1,49,2,48,23,1,1,108,2,111,1,1413,}, + {1,1096,2,51,1,61,2,111,1,446,2,22,23,29,2,22,23,1,1,54,23,1,2,19,23,40,2,19,1,49,2,52,23,1,1,52,2,52,23,1,1,14,2,110,1,15,2,11,23,27,2,10,1,49,2,9,23,28,2,11,1,109,2,110,1,1414,}, + {1,1095,2,53,1,60,2,111,1,444,23,1,2,20,23,36,2,20,1,52,2,18,23,46,2,17,23,1,1,47,2,53,1,51,2,53,23,1,1,14,2,110,1,15,23,1,2,9,23,30,2,9,1,47,2,9,23,30,2,9,23,1,1,109,2,105,1,1419,}, + {1,1079,2,77,1,43,2,120,1,442,21,1,2,19,23,42,2,18,23,1,1,48,2,17,23,52,2,16,1,46,2,9,23,35,2,10,1,49,2,10,23,36,2,8,23,1,1,14,2,8,23,94,2,8,1,16,2,10,23,29,2,9,1,46,23,1,2,9,23,29,2,10,1,110,2,104,1,1420,}, + {1,1079,2,77,1,43,2,120,1,441,2,17,23,49,2,17,1,45,23,1,2,16,23,56,2,15,23,1,1,44,2,9,23,36,2,10,1,47,2,10,23,37,2,8,23,1,1,14,2,8,23,94,2,8,1,16,23,1,2,9,23,30,2,9,1,45,2,9,23,30,2,9,21,1,1,110,2,104,1,1420,}, + {1,1078,2,78,1,42,2,21,21,2,2,98,1,439,23,1,2,16,23,53,2,16,23,1,1,42,2,15,23,61,2,15,23,1,1,42,2,9,23,37,2,10,1,45,23,1,2,9,23,38,2,8,23,1,1,14,2,8,23,94,2,8,1,17,2,10,23,29,2,9,23,1,1,43,2,9,23,30,2,9,23,1,1,111,2,104,1,1420,}, + {1,1078,2,78,1,41,2,22,21,2,2,98,1,438,2,16,23,58,2,15,1,40,2,14,23,65,2,14,23,1,1,41,2,9,23,37,2,10,23,1,1,44,2,10,23,38,2,8,23,1,1,14,2,8,23,94,2,8,1,18,2,9,23,30,2,9,1,43,2,9,23,29,2,10,1,112,2,104,1,1420,}, + {1,1078,2,78,1,39,2,23,21,4,2,97,1,437,2,15,23,61,2,15,23,1,1,36,23,1,2,14,23,68,2,14,1,40,2,9,23,38,2,10,1,43,2,10,23,39,2,8,23,1,1,14,2,8,23,94,2,8,1,18,2,10,23,29,2,9,23,1,1,41,2,9,23,30,2,9,23,1,1,112,2,104,1,1420,}, + {1,1078,2,79,1,38,2,23,21,4,2,97,1,435,23,1,2,14,23,65,2,15,1,34,2,14,23,72,2,13,1,39,2,9,23,39,2,10,1,41,2,10,23,40,2,8,23,1,1,14,2,8,23,94,2,8,1,19,2,10,23,29,2,9,1,40,21,1,2,9,23,29,2,10,1,113,2,104,1,1420,}, + {1,1077,2,81,1,3,2,1,1,31,2,24,21,6,2,95,1,435,2,14,23,69,2,14,1,32,2,13,23,75,2,13,23,1,1,37,2,9,23,40,2,10,1,39,2,10,23,41,2,8,23,1,1,14,2,8,23,94,2,8,1,19,23,1,2,9,23,29,2,10,1,39,2,9,23,30,2,9,23,1,1,113,2,104,1,1420,}, + {1,1072,2,91,1,29,2,25,21,6,2,94,1,435,2,13,23,73,2,13,1,30,2,13,23,78,2,13,1,36,2,9,23,41,2,10,1,37,23,1,2,9,23,42,2,8,23,1,1,14,2,8,23,94,2,8,1,20,2,10,23,29,2,9,23,1,1,37,23,1,2,9,23,29,2,10,1,114,2,104,1,1420,}, + {1,1071,2,92,1,29,2,24,21,8,2,92,1,435,2,13,23,75,2,13,1,28,2,12,23,81,2,13,1,35,2,9,23,41,2,10,23,1,1,36,2,10,23,42,2,8,23,1,1,14,2,8,23,94,2,8,1,20,23,1,2,9,23,30,2,9,1,37,2,9,23,30,2,9,1,114,2,104,1,1421,}, + {1,1070,2,94,1,27,2,25,21,8,2,92,1,433,21,1,2,12,23,79,2,12,23,1,1,24,23,1,2,12,23,83,2,12,23,1,1,34,2,9,23,42,2,10,1,35,2,10,23,43,2,8,23,1,1,14,2,8,23,94,2,8,1,21,2,10,23,29,2,9,23,1,1,35,2,10,23,29,2,10,1,112,2,104,1,1423,}, + {1,1052,2,163,21,10,2,89,1,434,21,1,2,12,23,81,2,12,23,1,1,22,21,1,2,12,23,86,2,12,1,33,2,9,23,43,2,10,1,33,2,10,23,44,2,8,23,1,1,14,2,8,23,94,2,8,1,22,2,9,23,30,2,9,1,35,2,9,23,29,2,10,1,113,2,104,1,1423,}, + {1,1052,2,163,21,10,2,88,1,434,21,1,2,12,23,83,2,11,23,1,1,21,23,1,2,11,23,89,2,12,1,32,2,9,23,44,2,10,1,31,23,1,2,9,23,45,2,8,23,1,1,14,2,8,23,94,2,8,1,22,2,10,23,30,2,9,1,33,2,9,23,30,2,9,23,1,1,113,2,104,1,1423,}, + {1,1051,2,163,21,12,2,87,1,434,2,12,23,85,2,10,1,22,2,11,23,91,2,12,1,31,2,9,23,44,2,10,23,1,1,29,23,1,2,10,23,45,2,8,23,1,1,14,2,8,23,94,2,8,1,23,2,10,23,29,2,9,1,32,21,1,2,9,23,29,2,10,1,114,2,104,1,1423,}, + {1,1049,2,165,21,12,2,87,1,432,21,1,2,11,23,86,2,10,1,22,2,11,23,93,2,12,1,30,2,9,23,45,2,10,23,1,1,28,2,10,23,46,2,8,23,1,1,14,2,8,23,94,2,8,1,23,23,1,2,9,23,30,2,9,1,31,2,9,23,30,2,9,21,1,1,114,2,104,1,1423,}, + {1,1049,2,164,21,14,2,86,1,431,21,1,2,11,23,86,2,10,23,1,1,21,2,11,23,95,2,11,23,1,1,29,2,9,23,46,2,10,1,27,2,10,23,47,2,8,23,1,1,14,2,8,23,94,2,8,1,24,2,10,23,29,2,9,23,1,1,29,23,1,2,9,23,29,2,10,1,114,2,105,1,1423,}, + {1,1049,2,164,21,14,2,86,1,431,2,11,23,87,2,10,1,21,2,11,23,97,2,11,23,1,1,28,2,9,23,47,2,10,1,25,2,10,23,48,2,8,23,1,1,14,2,8,23,94,2,8,1,25,2,9,23,30,2,9,1,29,2,9,23,30,2,9,1,113,2,107,1,1423,}, + {1,1049,2,163,21,16,2,83,1,432,2,11,23,87,2,10,1,21,2,11,23,99,2,11,1,28,2,9,23,48,2,10,1,23,23,1,2,10,23,48,2,8,23,1,1,14,2,8,23,94,2,8,1,25,2,10,23,29,2,9,23,1,1,27,23,1,2,9,23,29,2,10,1,112,2,108,1,1423,}, + {1,1049,2,163,21,16,2,82,1,432,2,11,23,87,2,10,1,21,23,1,2,10,23,101,2,11,1,27,2,9,23,48,2,10,23,1,1,21,23,1,2,10,23,49,2,8,23,1,1,14,2,8,23,94,2,8,1,26,2,9,23,30,2,9,1,27,2,9,23,29,2,10,1,113,2,108,1,1423,}, + {1,1049,2,162,21,18,2,81,1,431,2,11,23,87,2,10,23,1,1,21,2,10,23,103,2,11,1,26,2,9,23,49,2,10,1,21,2,10,23,50,2,8,23,1,1,14,2,8,23,94,2,8,1,26,23,1,2,9,23,29,2,10,1,25,2,10,23,29,2,9,23,1,1,111,2,110,1,1423,}, + {1,1047,2,164,21,18,2,80,1,431,23,1,2,10,23,88,2,10,1,21,2,10,23,105,2,10,23,1,1,25,2,9,23,50,2,10,1,19,2,10,23,51,2,8,23,1,1,14,2,8,23,94,2,8,1,27,2,9,23,30,2,9,1,24,21,1,2,9,23,29,2,10,1,111,2,111,1,1423,}, + {1,1039,2,171,21,20,2,79,1,431,2,10,23,88,2,10,1,21,2,10,23,107,2,10,23,1,1,24,2,9,23,51,2,10,1,17,2,10,23,52,2,8,23,1,1,14,2,8,23,94,2,8,1,27,23,1,2,9,23,30,2,9,1,23,2,9,23,30,2,9,21,1,1,111,2,111,1,1423,}, + {1,1039,2,171,21,20,2,79,1,430,2,10,23,88,2,10,1,21,23,1,2,10,23,108,2,10,1,24,2,9,23,51,2,11,1,15,2,11,23,52,2,8,23,1,1,14,2,8,23,94,2,8,1,28,2,10,23,29,2,9,23,1,1,21,23,1,2,9,23,29,2,10,1,112,2,111,1,1423,}, + {1,1038,2,167,21,30,2,74,1,429,2,10,23,88,2,10,23,1,1,21,2,10,23,110,2,9,23,1,1,23,2,9,23,52,2,10,23,1,1,13,23,1,2,10,23,53,2,8,23,1,1,14,2,8,23,22,2,80,1,28,23,1,2,9,23,30,2,9,1,21,2,9,23,30,2,9,1,114,2,110,1,1423,}, + {1,1036,2,162,21,44,2,67,1,429,2,10,23,49,2,10,23,28,2,10,23,1,1,21,2,10,23,112,2,9,1,23,2,9,23,53,2,10,21,1,1,12,2,10,23,54,2,8,23,1,1,14,2,8,23,22,2,80,1,29,2,10,23,29,2,10,1,19,23,1,2,9,23,29,2,10,1,114,2,110,1,1423,}, + {1,1036,2,155,21,58,2,60,1,428,2,10,23,44,2,21,23,23,2,10,1,21,23,1,2,9,23,55,2,1,23,3,2,1,23,53,2,10,1,22,2,9,23,54,2,10,1,11,2,10,23,55,2,8,23,1,1,14,2,8,23,22,2,80,1,30,2,9,23,30,2,9,1,18,21,1,2,9,23,29,2,10,1,115,2,110,1,1423,}, + {1,1035,2,152,21,66,2,56,1,427,23,1,2,9,23,42,2,27,23,19,2,10,1,22,2,9,23,49,2,18,23,48,2,9,23,1,1,21,2,9,23,55,2,10,1,9,2,10,23,56,2,8,23,1,1,14,2,8,23,22,2,80,1,30,2,10,23,29,2,10,1,17,2,9,23,30,2,9,23,1,1,115,2,110,1,1423,}, + {1,1033,2,155,21,64,2,57,1,427,2,9,23,40,2,34,23,14,2,10,1,22,23,1,2,9,23,44,2,27,23,45,2,9,1,21,2,9,23,55,2,11,1,7,2,11,23,56,2,8,23,1,1,14,2,8,23,22,2,80,1,31,2,10,23,29,2,9,23,1,1,15,23,1,2,9,23,29,2,10,1,115,2,111,1,1423,}, + {1,1033,2,156,21,62,2,58,1,426,2,10,23,38,2,38,23,11,2,10,23,1,1,22,2,9,23,42,2,34,23,42,2,9,1,20,2,9,23,56,2,11,1,5,23,1,2,10,23,57,2,8,23,1,1,14,2,8,23,22,2,80,1,31,23,1,2,9,23,30,2,9,1,15,2,9,23,30,2,9,1,116,2,111,1,1423,}, + {1,1032,2,158,21,60,2,59,1,425,21,1,2,9,23,37,2,42,23,8,2,11,1,22,2,10,23,40,2,38,23,40,2,9,1,20,2,9,23,57,2,10,23,1,1,4,2,10,23,58,2,8,23,1,1,14,2,8,23,22,2,80,1,32,2,10,23,29,2,9,23,1,1,13,23,1,2,9,23,29,2,10,1,116,2,106,1,1428,}, + {1,1030,2,161,21,58,2,60,1,425,2,9,23,37,2,45,23,6,2,10,1,23,2,9,23,39,2,42,23,39,2,9,1,19,2,9,23,58,2,10,1,3,2,10,23,59,2,8,23,1,1,14,2,8,23,22,2,9,23,70,1,33,23,1,2,9,23,30,2,9,1,13,2,9,23,30,2,9,1,117,2,105,1,1429,}, + {1,1029,2,163,21,56,2,61,1,424,23,1,2,9,23,35,2,48,23,4,2,10,1,23,2,9,23,38,2,46,23,37,2,9,21,1,1,18,2,9,23,25,2,1,23,32,2,11,1,1,2,11,23,32,2,2,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,105,2,10,23,29,2,10,1,11,2,10,23,29,2,10,1,117,2,104,1,1430,}, + {1,1029,2,164,21,54,2,62,1,424,2,9,23,34,2,18,23,1,1,3,4,1,1,9,23,1,2,19,23,1,2,10,23,1,1,23,2,9,23,36,2,49,23,37,2,9,1,18,2,9,23,25,2,2,23,32,2,21,23,32,2,3,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,68,4,1,1,37,2,9,23,30,2,9,1,10,21,1,2,9,23,29,2,10,1,116,2,106,1,1430,}, + {1,1030,2,164,21,52,2,63,1,423,21,1,2,9,23,33,2,15,23,1,1,21,23,1,2,25,23,1,1,23,2,9,23,36,2,18,23,2,21,12,23,1,2,19,23,35,2,9,1,18,2,9,23,25,2,3,23,32,2,19,23,33,2,3,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,106,23,1,2,9,23,29,2,10,1,9,2,9,23,30,2,9,23,1,1,115,2,107,1,1430,}, + {1,1030,2,165,21,50,2,64,1,423,2,9,23,33,2,14,1,27,23,1,2,22,1,24,2,9,23,34,2,17,21,2,4,1,1,15,21,3,23,1,2,16,23,35,2,9,1,17,2,9,23,25,2,3,23,33,2,17,23,33,2,4,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,107,2,10,23,29,2,9,23,1,1,7,23,1,2,9,23,29,2,10,1,116,2,107,1,1430,}, + {1,1030,2,166,21,48,2,65,1,422,23,1,2,9,23,32,2,13,1,31,2,20,1,24,2,9,23,34,2,15,23,1,21,1,4,1,1,22,21,2,23,1,2,14,23,34,2,9,1,17,2,9,23,25,2,4,23,33,2,16,23,32,2,5,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,107,23,1,2,9,23,30,2,9,1,7,2,9,23,30,2,9,1,117,2,107,1,1430,}, + {1,1030,2,167,21,46,2,66,1,422,2,9,23,32,2,12,1,35,2,17,21,1,1,24,2,9,23,33,2,14,21,1,4,1,1,29,21,1,2,13,23,34,2,8,23,1,1,16,2,9,23,25,2,5,23,32,2,15,23,32,2,6,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,108,2,10,23,29,2,9,23,1,1,4,2,11,23,29,2,10,1,117,2,105,1,1432,}, + {1,1030,2,168,21,44,2,67,1,422,2,9,23,31,2,11,23,1,1,37,21,1,2,14,23,1,1,24,23,1,2,8,23,33,2,13,21,1,1,34,21,1,2,12,23,33,2,9,1,16,2,9,23,25,2,6,23,32,2,13,23,32,2,7,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,108,23,1,2,9,23,30,2,9,1,4,2,10,23,30,2,9,1,118,2,104,1,1433,}, + {1,1029,2,170,21,42,2,68,1,421,23,1,2,8,23,31,2,11,1,41,2,13,1,25,2,9,23,32,2,12,21,1,1,37,21,1,23,1,2,11,23,33,2,8,23,1,1,15,2,9,23,25,2,6,23,33,2,11,23,33,2,7,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,109,2,10,23,29,2,10,1,2,2,11,23,29,2,10,1,118,2,104,1,1433,}, + {1,1029,2,171,21,40,2,69,1,421,2,9,23,30,2,11,1,43,2,11,1,26,2,8,23,32,2,12,21,1,1,39,21,2,2,11,23,32,2,9,1,15,2,9,23,25,2,7,23,33,2,9,23,33,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,110,2,10,23,29,2,9,23,1,21,1,2,10,23,29,2,10,1,119,2,104,1,1433,}, + {1,1020,2,181,21,38,2,71,1,420,2,8,23,30,2,11,1,45,23,1,2,8,1,26,23,1,2,8,23,31,2,11,23,1,4,1,1,41,4,1,21,1,2,11,23,32,2,8,1,15,2,9,23,25,2,8,23,33,2,8,23,32,2,9,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,110,2,10,23,29,2,21,23,29,2,9,23,1,1,119,2,104,1,1433,}, + {1,1020,2,182,21,36,2,72,1,419,2,9,23,29,2,11,1,47,23,1,2,6,23,1,1,26,2,8,23,31,2,11,21,1,1,46,2,11,23,31,2,9,1,14,2,9,23,25,2,9,23,32,2,7,23,32,2,10,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,111,2,10,23,29,2,19,23,29,2,10,1,120,2,104,1,1433,}, + {1,1020,2,183,21,34,2,72,1,420,2,9,23,28,2,11,1,49,23,1,2,5,1,26,21,1,2,8,23,31,2,10,21,1,1,48,23,1,2,10,23,30,2,9,1,14,2,9,23,25,2,10,23,32,2,5,23,32,2,11,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,111,23,1,2,9,23,29,2,18,23,30,2,9,21,1,1,120,2,104,1,1433,}, + {1,1020,2,183,21,34,2,71,1,420,23,1,2,8,23,29,2,9,23,1,1,51,23,1,2,3,1,27,2,9,23,30,2,10,21,1,1,2,21,1,1,47,23,1,2,10,23,30,2,8,1,14,2,9,23,25,2,10,23,33,2,3,23,33,2,11,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,112,2,10,23,29,2,17,23,29,2,10,1,121,2,104,1,1433,}, + {1,1020,2,183,21,34,2,70,1,421,2,9,23,28,2,10,1,53,23,1,2,1,1,28,2,8,23,30,2,10,21,1,1,49,4,1,1,2,2,10,23,30,2,8,23,1,1,13,2,9,23,25,2,11,23,33,2,1,23,33,2,12,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,113,2,9,23,30,2,15,23,30,2,9,1,122,2,104,1,1433,}, + {1,1020,2,183,21,34,2,69,1,422,2,8,23,28,2,10,1,83,23,1,2,8,23,30,2,9,21,1,1,51,4,1,1,2,2,10,23,29,2,9,1,13,2,9,23,25,2,12,23,65,2,13,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,113,2,10,23,29,2,15,23,29,2,9,23,1,1,120,2,106,1,1433,}, + {1,1020,2,183,21,34,2,69,1,422,2,8,23,28,2,9,1,84,2,9,23,29,2,9,21,1,1,55,21,1,2,10,23,29,2,8,4,1,1,12,2,9,23,25,2,13,23,63,2,14,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,114,2,9,23,30,2,13,23,30,2,9,1,120,2,107,1,1433,}, + {1,1020,2,182,21,36,2,66,1,423,23,1,2,8,23,27,2,9,23,1,1,84,2,8,23,29,2,9,23,1,1,57,21,1,2,9,23,29,2,8,21,1,1,12,2,9,23,25,2,14,23,62,2,14,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,114,23,1,2,9,23,29,2,13,23,29,2,9,23,1,1,119,2,108,1,1433,}, + {1,1020,2,182,21,36,2,65,1,422,4,1,1,1,2,8,23,28,2,9,1,85,2,8,23,29,2,9,21,1,1,58,23,1,2,9,23,28,2,9,1,12,2,9,23,25,2,14,23,61,2,15,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,115,2,10,23,29,2,11,23,29,2,10,1,120,2,108,1,1433,}, + {1,1019,2,183,21,36,2,65,1,424,2,8,23,27,2,9,1,85,21,1,2,8,23,28,2,9,21,1,1,60,2,9,23,29,2,8,1,12,2,9,23,25,2,15,23,59,2,16,23,25,2,8,23,1,1,14,2,8,23,22,2,8,21,1,1,114,23,1,2,9,23,30,2,9,23,30,2,9,21,1,1,118,2,110,1,1433,}, + {1,1013,2,189,21,36,2,65,1,423,21,1,2,8,23,27,2,8,23,1,1,85,2,9,23,28,2,8,23,1,1,61,21,1,2,9,23,28,2,8,1,12,2,9,23,25,2,16,23,57,2,17,23,25,2,8,23,1,1,14,2,8,23,22,2,80,1,44,2,10,23,29,2,9,23,29,2,10,1,118,2,111,1,1433,}, + {1,1013,2,189,21,36,2,65,1,423,23,1,2,8,23,26,2,9,1,86,2,9,23,27,2,9,4,1,1,62,23,1,2,8,23,28,2,8,1,12,2,9,23,25,2,17,23,55,2,18,23,25,2,8,23,1,1,14,2,8,23,22,2,80,1,45,2,9,23,30,2,7,23,30,2,9,1,118,2,112,1,1433,}, + {1,1012,2,190,21,36,2,65,1,423,2,9,23,26,2,9,1,86,2,8,23,28,2,8,23,1,1,63,21,1,2,9,23,27,2,8,23,1,1,11,2,9,23,25,2,17,23,55,2,18,23,25,2,8,23,1,1,14,2,8,23,22,2,80,1,45,2,10,23,29,2,7,23,29,2,9,23,1,1,117,2,111,1,1435,}, + {1,997,2,5,1,2,2,1,1,2,2,81,21,5,4,1,21,1,4,1,2,105,21,38,2,64,1,423,2,8,23,27,2,8,1,87,2,8,23,28,2,8,21,1,1,64,23,1,2,8,23,28,2,8,1,11,2,9,23,25,2,18,23,53,2,19,23,25,2,8,23,1,1,14,2,8,23,22,2,80,1,46,2,9,23,30,2,4,23,30,2,10,1,117,2,111,1,1436,}, + {1,997,2,89,21,1,4,11,21,1,4,1,21,2,2,99,21,38,2,64,1,423,2,8,23,26,2,9,1,87,2,8,23,27,2,9,1,65,21,1,2,8,23,28,2,8,1,11,2,9,23,25,2,19,23,51,2,10,23,1,2,9,23,25,2,8,23,1,1,14,2,8,23,22,2,80,1,46,23,1,2,9,23,29,2,4,23,30,2,9,23,1,1,117,2,111,1,1436,}, + {1,997,2,87,4,1,21,1,4,15,21,4,2,96,21,17,2,4,21,17,2,64,1,422,4,1,2,8,23,26,2,9,1,86,23,1,2,8,23,27,2,8,21,1,1,65,4,1,2,9,23,27,2,8,1,11,2,9,23,25,2,20,23,49,2,11,1,1,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,80,1,47,2,10,23,29,2,2,23,30,2,10,1,118,2,110,1,1437,}, + {1,997,2,85,4,1,21,2,4,19,21,2,2,95,21,15,2,8,21,15,2,62,1,424,21,1,2,8,23,26,2,8,1,87,23,1,2,8,23,27,2,8,21,1,1,66,23,1,2,8,23,27,2,8,1,11,2,9,23,25,2,8,23,1,1,1,2,11,23,47,2,11,1,2,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,80,1,47,21,1,2,9,23,61,2,9,21,1,1,118,2,108,1,1439,}, + {1,997,2,83,21,2,4,9,21,5,4,1,21,1,4,7,21,2,2,94,21,13,2,12,21,13,2,61,1,425,23,1,2,8,23,26,2,8,1,87,2,8,23,27,2,9,1,67,21,1,2,8,23,27,2,8,23,1,1,10,2,9,23,25,2,8,1,3,2,10,23,47,2,10,1,3,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,1,23,70,2,9,1,48,2,10,23,59,2,10,1,119,2,108,1,1439,}, + {1,996,2,82,21,3,4,7,21,1,23,9,21,1,4,6,21,3,2,93,21,11,2,16,21,11,2,61,1,425,2,9,23,26,2,8,1,87,2,8,23,27,2,8,23,1,1,68,2,9,23,26,2,8,23,1,1,10,2,9,23,25,2,8,21,1,1,3,2,10,23,45,2,10,23,1,1,3,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,1,49,2,9,23,59,2,9,1,120,2,107,1,1440,}, + {1,995,2,81,21,1,4,10,21,1,23,12,21,2,4,7,2,91,21,11,2,18,21,11,2,60,1,425,2,9,23,25,2,8,23,1,1,87,2,8,23,27,2,8,21,1,1,68,23,1,2,8,23,26,2,8,23,1,1,10,2,9,23,25,2,8,23,1,1,3,23,1,2,10,23,43,2,10,23,1,1,4,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,1,49,2,10,23,57,2,9,23,1,1,120,2,105,1,1442,}, + {1,994,2,82,4,9,21,1,23,17,21,1,4,5,21,1,2,90,21,9,2,22,21,9,2,59,1,426,2,8,23,26,2,8,21,1,1,87,2,8,23,27,2,8,21,1,1,68,21,1,2,8,23,26,2,9,1,10,2,9,23,25,2,8,1,5,2,11,23,41,2,11,1,5,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,1,50,2,9,23,57,2,9,1,121,2,104,1,1443,}, + {1,993,2,82,21,1,4,7,21,1,23,20,21,1,4,5,21,1,2,89,21,7,2,26,21,7,2,59,1,426,2,8,23,26,2,8,1,88,2,8,23,27,2,8,1,69,21,1,2,8,23,27,2,8,1,10,2,9,23,25,2,8,23,1,1,5,2,11,23,39,2,11,1,6,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,1,50,2,10,23,55,2,9,23,1,1,121,2,104,1,1443,}, + {1,993,2,82,4,6,21,1,23,23,21,1,4,3,21,1,4,1,21,1,2,88,21,5,2,30,21,5,2,60,1,425,2,8,23,26,2,8,1,87,21,1,2,8,23,26,2,8,23,1,1,69,21,1,2,8,23,27,2,8,1,10,2,9,23,25,2,8,21,1,1,6,2,10,23,39,2,10,1,7,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,1,51,2,10,23,53,2,10,1,122,2,104,1,1443,}, + {1,977,2,97,21,1,4,5,23,26,21,1,4,1,21,1,4,3,21,1,2,87,21,3,2,34,21,3,2,60,1,425,2,8,23,26,2,8,1,87,23,1,2,8,23,26,2,8,23,1,1,70,2,8,23,27,2,8,1,10,2,9,23,25,2,8,21,1,1,7,2,10,23,37,2,10,23,1,1,7,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,1,51,23,1,2,9,23,53,2,9,1,123,2,104,1,1443,}, + {1,977,2,97,4,5,21,1,23,27,21,1,4,2,21,1,4,3,2,86,21,1,2,38,21,1,2,60,1,425,2,8,23,26,2,8,1,87,21,1,2,8,23,26,2,8,21,1,1,70,2,8,23,27,2,8,1,10,2,9,23,25,2,8,21,1,1,7,23,1,2,10,23,35,2,10,23,1,1,8,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,1,52,2,10,23,51,2,10,1,123,2,104,1,1443,}, + {1,977,2,96,21,1,4,3,21,2,23,29,21,1,4,4,21,1,2,186,1,425,2,8,23,26,2,8,1,87,21,1,2,8,23,26,2,8,21,1,1,70,2,8,23,27,2,8,1,10,2,9,23,25,2,8,21,1,1,8,2,11,23,33,2,11,1,9,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,1,53,2,9,23,51,2,9,1,125,2,103,1,1443,}, + {1,977,2,96,4,5,21,1,23,30,4,4,21,1,2,186,1,425,2,8,23,26,2,8,1,87,21,1,2,8,23,26,2,8,21,1,1,70,2,8,23,27,2,8,1,10,2,9,23,25,2,8,21,1,1,9,2,10,23,33,2,10,1,10,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,1,53,2,10,23,49,2,9,23,1,1,125,2,103,1,1443,}, + {1,977,2,95,21,2,4,4,23,32,4,3,21,2,2,185,1,425,2,8,23,26,2,8,1,87,21,1,2,8,23,26,2,8,21,1,1,70,2,8,23,27,2,8,1,10,2,9,23,25,2,8,21,1,1,10,2,10,23,31,2,10,1,11,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,1,54,2,9,23,48,2,10,1,125,2,104,1,1443,}, + {1,977,2,95,4,5,21,1,23,32,21,1,4,3,21,1,2,185,1,425,2,8,23,26,2,8,1,87,21,1,2,8,23,26,2,8,21,1,1,70,2,8,23,27,2,8,1,10,2,9,23,25,2,8,21,1,1,10,21,1,2,10,23,29,2,10,23,1,1,11,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,1,54,23,1,2,9,23,47,2,9,23,1,1,125,2,104,1,1443,}, + {1,977,2,95,4,5,23,34,21,1,4,1,21,2,2,185,1,425,2,8,23,26,2,8,1,87,23,1,2,8,23,26,2,8,21,1,1,70,2,8,23,27,2,8,1,10,2,9,23,25,2,8,21,1,1,11,23,1,2,10,23,27,2,11,1,12,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,1,55,2,10,23,45,2,10,1,126,2,104,1,1443,}, + {1,977,2,94,21,1,4,4,21,1,23,34,21,1,4,1,21,2,2,185,1,425,2,8,23,26,2,8,1,87,21,1,2,8,23,26,2,8,21,1,1,70,2,8,23,27,2,8,1,10,2,9,23,25,2,8,21,1,1,12,2,11,23,25,2,11,1,13,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,1,55,23,1,2,9,23,45,2,9,1,127,2,104,1,1443,}, + {1,977,2,94,21,1,4,3,21,1,23,35,21,2,4,1,21,2,2,184,1,425,2,8,23,26,2,8,1,87,23,1,2,8,23,26,2,8,21,1,1,70,2,8,23,27,2,8,1,10,2,9,23,25,2,8,21,1,1,13,2,10,23,25,2,10,1,14,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,1,56,2,10,23,43,2,10,1,126,2,105,1,1443,}, + {1,976,2,95,21,1,4,3,21,1,23,35,21,1,4,3,21,1,2,186,1,423,2,8,23,26,2,8,1,87,21,1,2,8,23,26,2,8,23,1,1,70,2,8,23,27,2,8,1,10,2,9,23,25,2,8,21,1,1,14,2,10,23,23,2,10,21,1,1,14,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,1,57,2,9,23,43,2,9,1,119,2,113,1,1443,}, + {1,968,2,103,21,1,4,3,21,1,23,35,21,1,4,3,21,1,2,187,1,422,2,9,23,25,2,8,23,1,1,87,2,8,23,26,2,8,23,1,1,69,21,1,2,8,23,27,2,8,1,10,2,9,23,25,2,8,21,1,1,14,23,1,2,10,23,21,2,10,23,1,1,15,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,1,57,2,10,23,41,2,9,23,1,1,119,2,113,1,1443,}, + {1,968,2,103,21,1,4,3,21,1,23,35,21,1,4,3,21,1,2,187,1,422,2,9,23,25,2,9,1,87,2,8,23,27,2,8,21,1,1,68,21,1,2,8,23,27,2,8,1,10,2,9,23,25,2,8,21,1,1,15,23,1,2,10,23,19,2,11,1,16,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,1,58,2,9,23,40,2,10,1,120,2,113,1,1443,}, + {1,968,2,104,21,1,4,2,21,1,23,35,21,1,4,3,21,1,2,187,1,422,23,1,2,8,23,26,2,8,1,87,2,8,23,27,2,8,21,1,1,68,23,1,2,8,23,26,2,9,1,10,2,9,23,25,2,8,21,1,1,16,2,11,23,17,2,11,1,17,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,1,58,23,1,2,9,23,39,2,9,23,1,1,120,2,111,1,1445,}, + {1,968,2,104,21,1,4,2,21,1,23,35,21,1,4,2,21,2,2,187,1,422,23,1,2,8,23,26,2,8,1,87,2,8,23,27,2,8,21,1,1,68,2,9,23,26,2,9,1,10,2,9,23,25,2,8,21,1,1,17,2,10,23,17,2,10,1,18,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,1,59,2,10,23,37,2,10,1,121,2,111,1,1445,}, + {1,968,2,104,21,1,4,3,23,35,4,4,2,188,1,423,2,8,23,26,2,8,23,1,1,86,2,8,23,27,2,8,23,1,21,1,1,66,21,1,2,8,23,27,2,8,23,1,1,10,2,9,23,25,2,8,21,1,1,18,2,10,23,15,2,10,21,1,1,18,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,1,60,2,9,23,37,2,9,1,122,2,110,1,1446,}, + {1,968,2,104,4,4,21,1,23,33,21,1,4,4,2,189,1,422,2,8,23,26,2,9,1,86,2,8,23,27,2,9,21,1,1,66,21,1,2,8,23,27,2,8,23,1,1,10,2,9,23,25,2,8,21,1,1,18,23,1,2,10,23,13,2,10,23,1,1,19,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,80,1,60,2,10,23,35,2,9,23,1,1,122,2,108,1,1448,}, + {1,968,2,105,4,3,21,1,23,33,21,1,4,3,21,1,2,191,1,420,2,8,23,27,2,8,1,86,2,9,23,27,2,8,21,1,1,66,23,1,2,8,23,27,2,8,1,11,2,9,23,25,2,8,21,1,1,19,2,11,23,11,2,11,1,20,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,80,1,61,2,9,23,35,2,9,1,123,2,107,1,1449,}, + {1,968,2,105,21,1,4,2,21,1,23,32,21,1,4,4,2,192,1,420,2,8,23,27,2,8,23,1,1,85,23,1,2,8,23,27,2,8,23,1,1,65,21,1,2,9,23,27,2,8,1,11,2,9,23,25,2,8,21,1,1,20,2,10,23,11,2,10,1,21,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,80,1,61,23,1,2,9,23,33,2,9,23,1,1,123,2,107,1,1449,}, + {1,968,2,105,21,1,4,3,23,31,21,1,4,4,21,1,2,193,1,419,2,9,23,26,2,9,1,86,2,8,23,27,2,9,1,65,21,1,2,8,23,28,2,8,1,11,2,9,23,25,2,8,21,1,1,21,2,10,23,9,2,10,1,22,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,80,1,62,2,9,23,32,2,10,1,124,2,105,1,1451,}, + {1,968,2,105,21,1,4,3,21,1,23,29,21,1,4,4,21,1,2,196,1,417,23,1,2,8,23,27,2,8,23,1,1,85,2,8,23,28,2,8,21,1,1,64,2,9,23,28,2,8,1,11,2,9,23,25,2,8,21,1,1,22,2,10,23,7,2,10,23,1,1,22,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,80,1,62,23,1,2,9,23,31,2,9,23,1,1,124,2,104,1,1452,}, + {1,968,2,105,21,1,4,4,21,1,23,27,21,1,4,5,21,1,2,196,1,418,2,8,23,27,2,9,1,85,2,8,23,28,2,9,1,57,4,2,1,4,21,1,2,9,23,27,2,8,23,1,1,11,2,9,23,25,2,8,21,1,1,22,23,1,2,10,23,5,2,11,1,23,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,80,1,63,2,10,23,29,2,10,1,125,2,104,1,1452,}, + {1,968,2,106,21,1,4,3,21,2,23,25,21,1,4,5,21,1,2,198,1,417,2,8,23,28,2,9,1,84,2,9,23,27,2,9,21,2,1,55,4,2,1,4,2,9,23,28,2,8,21,1,1,11,2,9,23,25,2,8,21,1,1,23,2,11,23,4,2,10,1,24,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,80,1,63,23,1,2,9,23,29,2,9,4,1,1,125,2,103,1,1453,}, + {1,968,2,107,4,5,21,1,23,23,21,1,4,5,21,1,4,1,2,198,1,417,23,1,2,8,23,27,2,9,21,1,1,83,2,9,23,28,2,9,21,2,1,54,4,2,1,3,23,1,2,9,23,28,2,8,1,12,2,9,23,25,2,8,21,1,1,24,2,10,23,3,2,10,1,25,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,80,1,64,2,10,23,27,2,10,1,126,2,103,1,1453,}, + {1,968,2,108,21,1,4,5,21,1,23,20,21,1,4,6,21,1,2,198,1,418,23,1,2,8,23,28,2,9,1,83,21,1,2,8,23,28,2,9,23,1,1,55,21,1,4,2,1,1,21,1,2,9,23,29,2,8,1,12,2,9,23,25,2,8,21,1,1,25,2,21,1,26,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,2,9,23,27,2,9,1,127,2,103,1,1453,}, + {1,968,2,109,21,1,4,6,23,17,21,1,4,6,21,3,2,199,1,418,2,8,23,28,2,10,1,83,2,8,23,29,2,9,21,1,1,54,21,1,1,3,23,1,2,9,23,28,2,9,1,12,2,9,23,25,2,8,21,1,1,25,23,1,2,19,23,1,1,26,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,23,1,2,8,23,27,2,8,23,1,1,127,2,103,1,1453,}, + {1,968,2,110,21,1,4,5,21,1,23,14,21,2,4,6,21,2,2,200,1,419,2,9,23,28,2,9,23,1,1,82,2,9,23,28,2,10,21,1,1,52,21,2,4,1,1,1,21,1,2,9,23,29,2,8,21,1,1,12,2,9,23,25,2,8,21,1,1,26,2,19,1,27,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,128,2,103,1,1453,}, + {1,968,2,111,21,2,4,1,21,1,4,3,21,1,4,2,21,1,4,8,21,1,4,7,21,2,2,201,1,419,23,1,2,8,23,28,2,10,23,1,1,52,2,2,1,27,2,9,23,29,2,10,1,54,21,2,2,10,23,29,2,8,1,13,2,9,23,25,2,8,21,1,1,27,2,17,1,28,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,136,4,1,1,1,2,8,23,27,2,8,1,128,2,103,1,1453,}, + {1,968,2,113,21,1,4,23,21,1,2,203,1,420,2,8,23,29,2,10,23,1,1,50,2,4,1,26,23,1,2,8,23,30,2,9,23,1,1,52,21,2,2,10,23,29,2,9,1,13,2,9,23,25,2,8,21,1,1,28,2,15,1,29,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,128,2,103,1,1453,}, + {1,968,2,114,21,2,4,2,21,1,4,12,21,1,4,4,21,1,2,204,1,420,2,9,23,29,2,10,23,1,1,48,2,6,21,1,1,25,2,8,23,30,2,10,23,1,4,1,1,50,21,1,2,10,23,30,2,8,23,1,1,13,2,9,23,25,2,8,21,1,1,28,21,1,2,13,1,30,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,128,2,103,1,1453,}, + {1,968,2,115,21,2,4,2,21,1,4,9,21,2,4,1,21,3,2,206,1,420,23,1,2,8,23,30,2,10,23,1,1,45,21,1,2,8,21,1,1,24,2,9,23,30,2,10,23,1,1,49,21,1,2,10,23,31,2,8,1,14,2,9,23,25,2,8,21,1,1,29,23,1,2,11,23,1,1,30,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,128,2,103,1,1453,}, + {1,968,2,117,21,2,4,7,21,4,4,1,21,2,2,208,1,421,2,8,23,30,2,11,23,1,1,43,23,1,2,10,1,24,23,1,2,8,23,31,2,10,23,1,1,47,21,1,2,11,23,30,2,9,1,14,2,9,23,25,2,8,21,1,1,30,2,11,1,31,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,128,2,103,1,1453,}, + {1,968,2,341,1,421,2,9,23,30,2,11,23,1,1,41,23,1,2,12,1,24,2,9,23,30,2,12,1,45,21,1,2,11,23,31,2,9,1,14,2,9,23,25,2,8,21,1,1,31,2,9,1,32,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,128,2,103,1,1453,}, + {1,968,2,341,1,421,23,1,2,8,23,31,2,12,1,39,2,15,1,23,23,1,2,8,23,31,2,12,21,1,1,35,21,1,1,6,23,1,2,11,23,32,2,8,1,15,2,9,23,25,2,8,21,1,1,32,2,7,1,33,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,128,2,103,1,1453,}, + {1,968,2,341,1,422,2,9,23,31,2,12,23,1,1,35,23,1,2,17,21,1,1,22,2,8,23,32,2,12,23,1,1,4,21,1,1,27,4,1,1,6,21,1,2,12,23,32,2,9,1,15,2,9,23,25,2,8,21,1,1,32,23,1,2,5,23,1,1,33,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,128,2,103,1,1453,}, + {1,967,2,342,1,422,23,1,2,8,23,33,2,12,23,1,1,32,2,20,21,1,1,21,2,9,23,32,2,13,21,1,1,36,23,1,2,12,23,33,2,8,23,1,1,15,2,9,23,25,2,8,21,1,1,33,23,1,2,3,23,1,1,34,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,128,2,103,1,1453,}, + {1,966,2,343,1,423,2,9,23,32,2,14,23,1,1,28,2,23,21,1,1,20,23,1,2,8,23,33,2,13,23,1,21,1,1,32,21,1,2,13,23,33,2,9,1,16,2,9,23,25,2,8,21,1,1,34,2,3,1,35,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,128,2,103,1,1453,}, + {1,964,2,345,1,423,2,9,23,34,2,15,1,23,23,1,2,26,1,21,2,9,23,33,2,14,23,1,21,1,1,28,21,1,23,1,2,13,23,34,2,8,23,1,1,16,2,9,23,25,2,8,21,1,1,35,2,1,1,36,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,128,2,103,1,1453,}, + {1,964,2,345,1,424,2,9,23,34,2,17,23,1,1,14,21,1,23,1,2,18,23,2,2,11,21,1,1,19,2,9,23,35,2,15,21,1,4,1,1,22,21,1,23,1,2,15,23,34,2,9,1,17,2,9,23,25,2,8,21,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,128,2,103,1,1453,}, + {1,963,2,346,1,424,2,9,23,35,2,21,23,7,2,22,23,4,2,11,21,1,1,19,2,9,23,35,2,17,21,3,1,13,21,3,23,1,2,17,23,35,2,9,1,17,2,9,23,25,2,8,21,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,128,2,103,1,1453,}, + {1,961,2,348,1,425,2,9,23,36,2,46,23,7,2,11,21,1,1,18,2,9,23,36,2,20,23,1,21,9,23,3,2,18,23,36,2,9,1,18,2,9,23,25,2,8,21,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,127,2,104,1,1453,}, + {1,961,2,348,1,425,2,10,23,36,2,44,23,9,2,11,1,19,2,9,23,36,2,49,23,37,2,9,1,18,2,9,23,25,2,8,21,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,126,2,105,1,1453,}, + {1,960,2,349,1,426,2,9,23,38,2,40,23,12,2,11,1,18,2,9,23,38,2,45,23,38,2,9,1,19,2,9,23,25,2,8,21,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,125,2,106,1,1453,}, + {1,959,2,350,1,426,2,10,23,39,2,36,23,15,2,11,21,1,1,17,2,9,23,39,2,41,23,40,2,9,1,19,2,9,23,25,2,8,21,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,124,2,107,1,1453,}, + {1,956,2,353,1,427,2,9,23,42,2,30,23,19,2,11,21,1,1,16,2,10,23,40,2,38,23,40,2,9,1,20,2,9,23,25,2,8,21,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,124,2,107,1,1453,}, + {1,956,2,353,1,427,23,1,2,9,23,44,2,24,23,23,2,11,21,1,1,16,2,9,23,42,2,33,23,42,2,10,1,20,2,9,23,25,2,8,21,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,124,2,107,1,1453,}, + {1,956,2,353,1,428,2,10,23,48,2,14,23,29,2,11,1,16,2,10,23,45,2,26,23,45,2,9,1,21,2,9,23,25,2,8,21,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,124,2,107,1,1453,}, + {1,956,2,353,1,429,2,10,23,91,2,11,21,1,1,15,2,10,23,48,2,17,23,49,2,9,23,1,1,21,2,9,23,25,2,8,21,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,124,2,107,1,1453,}, + {1,956,2,353,1,429,2,10,23,92,2,11,21,1,1,14,23,1,2,9,23,113,2,10,1,22,2,9,23,25,2,8,21,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,123,2,108,1,1453,}, + {1,956,2,353,1,430,2,10,23,92,2,11,21,1,1,14,2,10,23,112,2,9,21,1,1,22,2,9,23,25,2,8,21,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,118,2,113,1,1453,}, + {1,956,2,353,1,431,2,10,23,92,2,11,1,15,2,10,23,110,2,10,1,23,2,9,23,25,2,8,21,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,118,2,114,1,1452,}, + {1,956,2,353,1,431,23,1,2,10,23,92,2,11,1,14,23,1,2,10,23,108,2,10,1,24,2,9,23,25,2,8,21,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,118,2,113,1,1453,}, + {1,956,2,353,1,432,2,11,23,92,2,11,21,1,1,13,2,10,23,107,2,10,21,1,1,24,2,9,23,25,2,8,21,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,118,2,112,1,1454,}, + {1,956,2,353,1,433,2,11,23,92,2,11,21,1,1,13,2,10,23,105,2,10,23,1,1,25,2,9,23,25,2,8,21,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,118,2,110,1,1456,}, + {1,956,2,353,1,434,2,11,23,92,2,11,1,14,2,10,23,103,2,11,1,26,2,9,23,25,2,8,21,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,118,2,110,1,1456,}, + {1,956,2,353,1,435,2,11,23,92,2,11,1,13,23,1,2,10,23,101,2,11,1,27,2,9,23,25,2,8,21,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,118,2,109,1,1457,}, + {1,956,2,353,1,435,23,1,2,11,23,90,2,12,1,14,2,11,23,99,2,11,1,28,2,9,23,25,2,8,21,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,118,2,108,1,1458,}, + {1,956,2,353,1,436,23,1,2,11,23,88,2,12,23,1,1,15,2,11,23,97,2,11,23,1,1,28,2,9,23,25,2,8,21,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,118,2,107,1,1459,}, + {1,956,2,353,1,437,23,1,2,11,23,86,2,12,23,1,1,17,2,11,23,95,2,11,23,1,1,29,2,9,23,25,2,8,21,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,118,2,106,1,1460,}, + {1,956,2,354,1,437,23,1,2,11,23,84,2,12,23,1,1,19,2,11,23,93,2,11,23,1,1,30,2,9,23,25,2,8,21,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,118,2,104,1,1462,}, + {1,956,2,354,1,438,23,1,2,12,23,81,2,12,23,1,1,21,2,11,23,91,2,12,1,31,2,9,23,25,2,8,21,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,118,2,104,1,1462,}, + {1,956,2,354,1,439,23,1,2,12,23,78,2,13,23,1,1,23,2,11,23,89,2,12,1,32,2,9,23,25,2,8,21,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,118,2,104,1,1462,}, + {1,956,2,355,1,439,23,1,2,12,23,76,2,13,21,1,1,25,2,12,23,86,2,12,1,33,2,9,23,25,2,8,21,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,118,2,104,1,1462,}, + {1,956,2,356,1,440,2,13,23,73,2,13,1,28,2,12,23,83,2,13,1,34,2,9,23,25,2,8,21,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,118,2,104,1,1462,}, + {1,956,2,357,1,440,2,13,23,70,2,14,1,30,2,12,23,81,2,12,23,1,1,35,2,9,23,25,2,8,21,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,118,2,104,1,1462,}, + {1,956,2,356,1,442,2,14,23,67,2,13,23,1,1,32,2,13,23,78,2,12,23,1,1,36,2,9,23,25,2,8,21,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,118,2,104,1,1462,}, + {1,956,2,357,1,442,23,1,2,14,23,63,2,14,23,1,1,34,2,13,23,75,2,13,1,38,2,9,23,25,2,8,21,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,118,2,104,1,1462,}, + {1,956,2,357,1,443,23,1,2,15,23,59,2,15,1,37,23,1,2,13,23,72,2,13,1,39,2,9,23,25,2,8,21,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,118,2,104,1,1462,}, + {1,956,2,358,1,444,2,16,23,55,2,15,23,1,1,40,2,14,23,68,2,14,1,40,2,9,23,25,2,8,21,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,118,2,104,1,1462,}, + {1,956,2,359,1,444,21,1,2,16,23,51,2,16,1,43,2,15,23,64,2,14,21,1,1,41,2,9,23,25,2,8,21,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,118,2,104,1,1462,}, + {1,956,2,360,1,445,2,18,23,45,2,17,23,1,1,45,23,1,2,15,23,60,2,15,1,43,2,9,23,25,2,8,21,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,118,2,104,1,1462,}, + {1,956,2,361,1,445,21,1,2,18,23,41,2,18,1,49,2,16,23,55,2,16,23,1,1,44,2,9,23,25,2,8,21,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,118,2,104,1,1462,}, + {1,959,2,359,1,446,23,1,2,21,23,32,2,20,23,1,1,51,23,1,2,16,23,51,2,17,1,46,2,9,23,25,2,8,21,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,8,23,27,2,8,1,118,2,104,1,1462,}, + {1,960,2,359,1,447,23,1,2,23,23,23,2,23,23,1,1,55,2,18,23,45,2,18,23,1,1,47,2,9,23,25,2,8,21,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,138,2,43,1,118,2,104,1,1462,}, + {1,961,2,358,1,449,23,1,2,65,23,1,1,7,4,1,1,50,21,1,2,19,23,39,2,19,23,1,1,49,2,42,21,1,1,72,23,1,2,41,23,1,1,14,2,26,23,1,2,11,1,138,2,43,1,118,2,104,1,1462,}, + {1,962,2,357,1,451,23,1,2,61,23,1,1,62,21,1,2,20,23,33,2,21,1,51,2,42,21,1,1,72,23,1,2,41,23,1,1,14,2,38,1,138,2,43,1,118,2,104,1,1462,}, + {1,963,2,356,1,454,2,57,21,1,1,66,23,1,2,24,23,21,2,25,1,53,2,42,21,1,1,72,23,1,2,41,23,1,1,14,2,38,1,138,2,43,1,117,2,105,1,1462,}, + {1,964,2,355,1,456,23,1,2,51,23,1,1,71,23,1,2,66,1,55,2,42,21,1,1,72,23,1,2,41,23,1,1,14,2,38,1,138,2,43,1,117,2,105,1,1462,}, + {1,964,2,355,1,459,21,1,2,45,23,1,1,77,2,61,23,1,1,57,2,42,21,1,1,72,23,1,2,41,23,1,1,14,2,38,1,138,2,43,1,115,2,107,1,1462,}, + {1,966,2,353,1,462,21,1,2,39,23,1,1,82,23,1,2,56,21,1,1,59,2,42,21,1,1,72,23,1,2,41,23,1,1,14,2,38,1,138,2,43,1,114,2,108,1,1462,}, + {1,967,2,352,1,463,21,3,23,1,2,31,23,1,1,89,2,51,23,1,1,62,2,42,1,73,23,1,2,41,23,1,1,14,2,38,1,138,2,42,21,1,1,114,2,108,1,1462,}, + {1,968,2,351,1,466,4,1,21,3,23,3,2,18,23,2,1,6,4,1,1,91,2,45,23,1,1,65,2,42,1,73,23,1,2,41,1,15,2,38,1,293,2,110,1,1462,}, + {1,967,2,352,1,472,4,1,21,4,23,10,1,104,21,2,23,2,2,37,23,1,1,568,2,114,1,1462,}, + {1,967,2,352,1,595,21,2,23,3,2,26,23,2,1,573,2,114,1,1462,}, + {1,967,2,352,1,599,4,1,21,3,23,3,21,1,23,1,2,11,23,2,21,1,1,579,2,113,1,1463,}, + {1,967,2,14,21,64,2,274,1,605,4,1,21,3,1,592,2,111,1,1465,}, + {1,967,2,14,21,64,2,274,1,1201,2,111,1,1465,}, + {1,967,2,14,21,64,2,274,1,1201,2,110,1,1466,}, + {1,967,2,14,21,64,2,274,1,1201,2,110,1,1466,}, + {1,967,2,14,21,64,2,274,1,1201,2,110,1,1466,}, + {1,967,2,14,21,64,2,274,1,1201,2,110,1,1466,}, + {1,968,2,13,21,64,2,274,1,1201,2,110,1,1466,}, + {1,968,2,13,21,64,2,274,1,1201,2,110,1,1466,}, + {1,968,2,13,21,64,2,274,1,1201,2,110,1,1466,}, + {1,968,2,13,21,64,2,275,1,1200,2,110,1,1466,}, + {1,969,4,1,2,11,21,64,2,277,1,1198,2,110,1,1466,}, + {1,971,2,10,21,64,2,278,1,1197,2,110,1,1466,}, + {1,972,2,9,21,64,2,278,1,1197,2,110,1,1466,}, + {1,973,2,8,21,64,2,278,1,1197,2,110,1,1466,}, + {1,974,2,7,21,64,2,278,1,1197,2,110,1,1466,}, + {1,975,2,6,21,64,2,277,1,1198,2,110,1,1466,}, + {1,977,2,4,21,64,2,277,1,1198,2,108,1,1468,}, + {1,978,2,3,21,64,2,277,1,1198,2,108,1,1468,}, + {1,977,2,346,1,1197,2,107,1,1469,}, + {1,977,2,346,1,1197,2,106,1,1470,}, + {1,977,2,348,1,1195,2,104,1,1472,}, + {1,978,2,348,1,1194,2,104,1,1472,}, + {1,977,2,349,1,1194,2,104,1,1472,}, + {1,977,2,349,1,1194,2,104,1,1472,}, + {1,977,2,349,1,1194,2,104,1,1472,}, + {1,977,2,349,1,1192,2,105,1,1473,}, + {1,977,2,351,1,1189,2,104,1,1475,}, + {1,977,2,352,1,1187,2,105,1,1475,}, + {1,977,2,353,1,1186,2,105,1,1475,}, + {1,978,2,352,1,1186,2,105,1,1475,}, + {1,986,2,346,1,1184,2,105,1,1475,}, + {1,987,2,346,1,1183,2,105,1,1475,}, + {1,987,2,345,1,1184,2,105,1,1475,}, + {1,987,2,345,1,1184,2,105,1,1475,}, + {1,987,2,345,1,1184,2,105,1,1475,}, + {1,987,2,345,1,1184,2,104,1,1476,}, + {1,988,2,344,1,1184,2,105,1,1475,}, + {1,989,2,343,1,1184,2,105,1,1475,}, + {1,990,2,342,1,1184,2,104,1,1476,}, + {1,998,2,334,1,1184,2,105,1,1475,}, + {1,999,2,333,1,1184,2,105,1,1475,}, + {1,1000,2,332,1,1184,2,104,1,1476,}, + {1,1000,2,332,1,1184,2,99,1,1481,}, + {1,1002,2,330,1,1184,2,98,1,1482,}, + {1,1003,2,329,1,1184,2,98,1,1482,}, + {1,1003,2,329,1,1184,2,98,1,1482,}, + {1,1005,2,327,1,1184,2,98,1,1482,}, + {1,1006,2,327,1,1183,2,98,1,1482,}, + {1,1007,2,326,1,1173,2,107,1,1483,}, + {1,1018,2,315,1,1167,2,111,1,1485,}, + {1,1019,2,315,1,1166,2,111,1,1485,}, + {1,1020,2,314,1,1164,2,113,1,1485,}, + {1,1020,2,315,1,1162,2,114,1,1485,}, + {1,1026,2,309,1,1162,2,114,1,1485,}, + {1,1026,2,310,1,1161,2,114,1,1485,}, + {1,1027,2,310,1,1160,2,114,1,1485,}, + {1,1028,2,305,21,3,2,2,1,1159,2,114,1,1485,}, + {1,1029,2,300,21,8,2,2,1,1158,2,114,1,1485,}, + {1,1030,2,295,21,13,2,2,1,1152,2,1,1,2,2,116,1,1485,}, + {1,1030,2,291,21,17,2,3,1,1149,2,121,1,1485,}, + {1,1030,2,287,21,21,2,4,1,1148,2,121,1,1485,}, + {1,1030,2,283,21,26,2,3,1,1146,2,123,1,1485,}, + {1,1030,2,279,21,30,2,3,1,1142,2,127,1,1485,}, + {1,1030,2,275,21,34,2,3,1,1142,2,127,1,1485,}, + {1,1030,2,271,21,38,2,3,1,1142,2,127,1,1485,}, + {1,1030,2,267,21,43,2,2,1,1142,2,127,1,1485,}, + {1,1030,2,263,21,47,2,2,1,1142,2,127,1,1485,}, + {1,1030,2,259,21,51,2,2,1,1141,2,128,1,1485,}, + {1,1030,2,255,21,49,4,1,21,5,2,2,1,1136,2,131,1,1487,}, + {1,1030,2,251,21,60,2,1,1,1135,2,131,1,1488,}, + {1,1029,2,248,21,62,2,4,1,1134,2,131,1,1488,}, + {1,1030,2,243,21,62,2,8,1,1132,2,127,1,1494,}, + {1,1038,2,230,21,63,2,14,1,1113,2,143,1,1495,}, + {1,1039,2,225,21,59,4,1,21,3,2,19,1,1112,2,143,1,1495,}, + {1,1039,2,221,21,63,2,23,1,1112,2,143,1,1495,}, + {1,1039,2,217,21,63,2,29,1,1110,2,143,1,1495,}, + {1,1039,2,213,21,62,2,35,1,1109,2,143,1,1495,}, + {1,1039,2,209,21,62,2,39,1,1107,2,145,1,1495,}, + {1,1039,2,205,21,62,2,44,1,1105,2,146,1,1495,}, + {1,1039,2,201,21,62,2,50,1,1102,2,147,1,1495,}, + {1,1039,2,197,21,62,2,54,1,1102,2,147,1,1495,}, + {1,1039,2,193,21,62,2,58,1,1061,21,1,23,2,2,185,1,1495,}, + {1,1039,2,189,21,62,2,62,1,1061,23,1,2,187,1,1495,}, + {1,1039,2,185,21,62,2,66,1,1061,23,1,2,187,1,1495,}, + {1,1039,2,181,21,62,2,70,1,1060,21,1,2,188,1,1495,}, + {1,1041,2,175,21,62,2,74,1,1060,23,1,2,188,1,1495,}, + {1,1042,2,170,21,62,2,78,1,504,2,14,23,2,21,5,1,70,4,1,21,8,4,1,1,39,21,4,23,2,2,12,23,3,21,2,1,393,23,1,2,188,1,1495,}, + {1,1043,2,165,21,62,2,82,1,305,21,6,1,7,2,13,1,153,2,4,1,6,2,36,23,1,21,1,1,25,21,3,2,2,1,20,21,3,23,1,2,28,23,4,21,13,23,3,2,38,23,1,21,2,1,383,21,1,23,1,2,189,1,1495,}, + {1,1043,2,161,21,62,2,88,1,291,21,2,23,1,2,86,1,5,2,8,1,20,2,47,1,10,2,94,23,7,2,105,21,1,4,1,1,377,21,1,2,191,1,1495,}, + {1,1043,2,157,21,62,2,93,1,264,21,3,1,10,21,3,23,1,2,396,23,2,21,1,1,373,21,1,2,192,1,1495,}, + {1,1043,2,153,21,62,2,97,1,260,21,1,2,419,21,1,1,372,23,1,2,191,1,1496,}, + {1,1043,2,149,21,62,2,102,1,255,21,1,23,1,2,424,1,51,21,2,1,308,21,7,23,3,2,187,1,1501,}, + {1,1049,2,139,21,62,2,138,1,114,21,1,23,38,21,15,1,54,2,428,21,1,1,40,21,1,23,2,2,9,21,2,1,298,21,1,23,1,2,202,1,1501,}, + {1,1049,2,135,21,62,2,142,1,114,23,1,2,68,23,5,21,5,1,27,21,1,2,430,23,1,21,1,1,11,21,1,23,8,21,2,1,14,21,1,23,1,2,14,21,1,1,284,23,1,1,9,23,1,2,205,1,1502,}, + {1,1049,2,130,21,63,2,147,1,112,21,1,2,88,23,2,21,3,1,12,2,434,23,1,1,7,21,2,23,1,2,12,23,1,21,1,1,10,21,1,2,18,21,1,1,10,2,2,23,2,21,4,1,15,21,1,23,1,2,4,23,1,21,2,1,239,2,1,23,1,1,7,21,1,2,206,1,1503,}, + {1,1049,2,126,21,63,2,162,1,8,2,45,1,37,2,8,23,3,2,100,23,2,21,2,2,439,23,1,21,2,23,3,2,17,23,3,21,4,23,1,2,23,21,1,4,1,1,2,4,1,23,1,2,39,23,2,21,3,1,228,23,1,2,1,21,1,23,1,1,4,21,1,2,206,1,1505,}, + {1,1049,2,122,21,63,2,167,1,7,2,45,1,36,2,659,21,1,1,226,21,1,2,3,23,1,1,3,2,208,1,1505,}, + {1,1049,2,118,21,63,2,172,1,5,2,47,1,34,2,662,21,1,1,41,21,3,1,179,23,1,2,5,1,2,2,209,1,1505,}, + {1,1051,2,112,21,46,4,1,21,15,2,178,1,3,2,50,1,31,2,665,23,1,1,18,21,2,2,3,1,10,4,1,1,2,21,2,2,4,23,2,21,1,1,175,2,7,21,1,2,210,1,1505,}, + {1,1052,2,107,21,62,2,235,1,30,2,665,21,4,23,1,2,1,4,1,1,2,23,1,2,17,21,1,1,7,21,1,2,11,23,2,21,2,1,8,4,1,21,2,23,3,21,5,4,1,1,132,4,1,1,16,21,1,2,7,23,1,2,211,1,1505,}, + {1,1052,2,103,21,62,2,240,1,28,2,717,23,2,21,4,23,1,2,12,23,1,21,3,1,119,21,4,23,1,2,5,23,1,21,3,23,2,21,6,1,2,21,1,23,1,2,221,1,1505,}, + {1,1052,2,99,21,15,4,1,21,46,2,245,1,26,2,741,23,1,21,4,1,95,21,4,1,11,21,1,23,1,2,249,1,1505,}, + {1,1052,2,95,21,62,2,1030,23,5,21,4,1,29,21,1,2,1,23,4,21,2,1,33,21,3,23,1,2,8,23,2,21,3,23,2,2,254,1,1505,}, + {1,1052,2,91,21,62,2,1045,23,1,21,1,4,1,1,18,2,34,21,1,23,1,1,5,21,1,1,1,23,1,2,1,23,1,2,274,1,1505,}, + {1,1053,2,86,21,62,2,1053,23,1,21,1,1,8,23,2,2,43,21,1,23,1,2,280,1,1505,}, + {1,1058,2,77,21,62,2,1394,1,1505,}, + {1,1059,2,72,21,46,4,1,21,15,2,1398,1,1505,}, + {1,1059,2,68,21,62,2,1402,1,1505,}, + {1,1059,2,64,21,62,2,1406,1,1505,}, + {1,1059,2,60,21,15,4,1,21,46,2,1410,1,1505,}, + {1,1059,2,56,21,62,2,1413,1,1506,}, + {1,1060,2,51,21,62,2,1416,1,1507,}, + {1,1061,2,46,21,62,2,1419,1,1508,}, + {1,1062,2,41,21,62,2,1419,1,2,2,1,1,1509,}, + {1,1062,2,37,21,46,4,1,21,15,2,1421,1,1514,}, + {1,1062,2,33,21,62,2,1425,1,1514,}, + {1,1063,2,27,21,63,2,1428,1,1515,}, + {1,1063,2,23,21,63,2,1432,1,1515,}, + {1,1063,2,19,21,63,2,1436,1,1515,}, + {1,1063,2,15,21,63,2,1440,1,1515,}, + {1,1063,2,11,21,62,2,1444,1,1516,}, + {1,1064,2,6,21,62,2,1447,1,1517,}, + {1,1064,2,4,21,60,2,1450,1,1518,}, + {1,1064,2,1,1,1,2,3,21,55,2,1453,1,1519,}, + {1,1066,2,3,21,51,2,1456,1,1520,}, + {1,1066,2,3,21,47,2,1459,1,1521,}, + {1,1066,2,3,21,43,2,1462,1,1522,}, + {1,1067,2,3,21,38,2,1464,1,1524,}, + {1,1067,2,3,21,34,2,61,21,14,2,1393,1,1524,}, + {1,1068,2,2,21,30,2,44,21,36,2,1392,1,1524,}, + {1,1069,2,1,21,26,2,48,21,36,2,1392,1,1524,}, + {1,1069,2,2,21,21,2,53,21,20,4,1,21,13,2,1393,1,1524,}, + {1,1069,2,2,21,17,2,58,21,33,2,1392,1,1525,}, + {1,1070,2,1,21,13,2,62,21,33,2,1391,1,1526,}, + {1,1070,2,1,21,9,2,67,21,31,2,1391,1,1527,}, + {1,1070,2,2,21,4,2,72,21,30,2,1391,1,1527,}, + {1,1071,2,78,21,28,2,1391,1,1528,}, + {1,1072,2,77,21,28,2,1391,1,1528,}, + {1,1072,2,78,21,26,2,1392,1,1528,}, + {1,1072,2,79,21,24,2,1393,1,1528,}, + {1,1072,2,79,21,2,4,1,21,21,2,1394,1,1527,}, + {1,1072,2,80,21,22,2,1395,1,1527,}, + {1,1072,2,80,21,22,2,1394,1,1528,}, + {1,1072,2,81,21,20,2,1390,1,1533,}, + {1,1072,2,82,21,18,2,1390,1,1534,}, + {1,1072,2,83,21,16,2,1391,1,1534,}, + {1,1072,2,84,21,15,2,1389,1,1536,}, + {1,1072,2,85,21,13,2,1389,1,1537,}, + {1,1072,2,85,21,9,4,1,21,2,2,1390,1,1537,}, + {1,1072,2,86,21,11,2,1389,1,1538,}, + {1,1072,2,86,21,10,2,1390,1,1538,}, + {1,1072,2,86,21,9,2,5,21,3,2,1384,1,1537,}, + {1,1072,2,86,21,10,2,3,21,4,2,1383,1,1538,}, + {1,1072,2,86,21,17,2,1383,1,1538,}, + {1,1072,2,86,21,17,2,1383,1,1538,}, + {1,1072,2,85,21,19,2,1382,1,1538,}, + {1,1072,2,85,21,20,2,1381,1,1538,}, + {1,1072,2,84,21,22,2,1380,1,1538,}, + {1,1072,2,83,21,23,4,1,2,1379,1,1538,}, + {1,1072,2,76,21,1,2,6,21,26,2,1377,1,1538,}, + {1,1072,2,75,21,3,2,4,21,28,2,1376,1,1538,}, + {1,1072,2,73,21,5,2,3,21,31,2,1374,1,1538,}, + {1,1072,2,72,21,6,2,3,21,34,2,1371,1,1538,}, + {1,1072,2,70,21,48,2,1368,1,1538,}, + {1,1072,2,70,21,50,2,1366,1,1538,}, + {1,1072,2,69,21,55,2,1362,1,1538,}, + {1,1072,2,68,21,59,2,1359,1,1538,}, + {1,1072,2,67,21,61,2,1358,1,1538,}, + {1,1072,2,67,21,60,2,196,21,14,2,1149,1,1538,}, + {1,1072,2,66,21,61,2,175,21,36,2,1149,1,1537,}, + {1,1072,2,65,21,62,2,175,21,36,2,1149,1,1537,}, + {1,1072,2,63,21,63,2,177,21,34,2,1150,1,1537,}, + {1,1072,2,62,21,64,2,178,21,33,2,1148,1,1539,}, + {1,1072,2,60,21,65,2,179,21,33,2,1147,1,1540,}, + {1,1072,2,59,4,1,21,65,2,180,21,31,2,1148,1,1540,}, + {1,1072,2,57,21,67,2,182,21,30,2,1148,1,1540,}, + {1,1073,2,54,21,69,2,183,21,28,2,1149,1,1540,}, + {1,1074,2,51,21,70,2,184,21,28,2,1149,1,1540,}, + {1,1074,2,49,21,72,2,185,21,26,2,1151,1,1539,}, + {1,1075,2,46,21,73,2,187,21,24,2,1153,1,1538,}, + {1,1075,2,47,21,72,2,187,21,24,2,1154,1,1537,}, + {1,1076,2,46,21,71,2,189,21,22,2,1155,1,1537,}, + {1,1077,2,45,21,70,2,190,21,22,2,1154,1,1538,}, + {1,1078,2,45,21,69,2,191,21,20,2,1155,1,1538,}, + {1,1080,2,43,21,68,2,193,21,18,2,1156,1,1538,}, + {1,1082,2,43,21,65,2,195,21,16,2,1157,1,1538,}, + {1,1082,2,43,21,65,2,196,21,15,2,1157,1,1538,}, + {1,1082,2,44,21,63,2,198,21,13,2,1158,1,1538,}, + {1,1082,2,45,21,62,2,198,21,12,2,1159,1,1538,}, + {1,1082,2,46,21,59,2,201,21,11,2,1159,1,1538,}, + {1,1082,2,47,21,58,2,201,21,10,2,1160,1,1538,}, + {1,1082,2,48,21,58,2,200,21,9,2,5,21,3,2,1153,1,1538,}, + {1,1082,2,49,21,58,2,199,21,10,2,3,21,4,2,1153,1,1538,}, + {1,1082,2,51,4,1,21,55,2,199,21,17,2,1153,1,1538,}, + {1,1082,2,52,21,56,2,198,21,2,4,1,21,14,2,1153,1,1538,}, + {1,1082,2,53,21,56,2,196,21,19,2,1152,1,1538,}, + {1,1082,2,54,21,56,2,195,21,20,2,1151,1,1538,}, + {1,1082,2,56,21,54,2,194,21,22,2,1150,1,1538,}, + {1,1082,2,57,21,54,2,192,21,24,2,1149,1,1538,}, + {1,1082,2,57,21,56,2,183,21,1,2,6,21,26,2,1147,1,1538,}, + {1,1082,2,57,21,57,2,181,21,3,2,4,21,28,2,1146,1,1538,}, + {1,1082,2,57,21,56,2,180,21,5,2,3,21,31,2,1144,1,1538,}, + {1,1082,2,57,21,55,2,180,21,6,2,3,21,34,2,1141,1,1538,}, + {1,1082,2,57,21,55,2,178,21,48,2,1138,1,1538,}, + {1,1082,2,57,21,54,2,179,21,50,2,1136,1,1538,}, + {1,1082,2,57,21,52,2,180,21,55,2,1132,1,1538,}, + {1,1082,2,56,21,53,2,179,21,59,2,1129,1,1538,}, + {1,1082,2,56,21,53,2,178,21,61,2,1128,1,1538,}, + {1,1082,2,56,21,53,2,178,21,60,2,1129,1,1538,}, + {1,1082,2,56,4,1,21,52,2,177,21,61,2,1129,1,1538,}, + {1,1082,2,56,21,53,2,176,21,62,2,1129,1,1538,}, + {1,1082,2,56,21,53,2,174,21,4,4,1,21,58,2,1130,1,1538,}, + {1,1082,2,56,21,53,2,173,21,64,2,1130,1,1538,}, + {1,1082,2,56,21,53,2,171,21,65,2,1131,1,1538,}, + {1,1082,2,56,21,53,2,170,21,66,2,1131,1,1538,}, + {1,1082,2,57,21,52,2,168,21,67,2,1132,1,1538,}, + {1,1082,2,57,21,51,2,167,21,69,2,1132,1,1538,}, + {1,1082,2,57,21,52,2,164,21,70,2,1133,1,1538,}, + {1,1082,2,57,21,51,2,163,21,72,2,1133,1,1538,}, + {1,1082,2,57,21,51,2,161,21,67,4,1,21,5,2,1134,1,1538,}, + {1,1082,2,57,21,50,2,163,21,72,2,1134,1,1538,}, + {1,1082,2,58,21,49,2,163,21,71,2,1135,1,1538,}, + {1,1082,2,58,21,49,2,163,21,70,2,1136,1,1538,}, + {1,1082,2,58,21,49,2,164,21,69,2,1136,1,1538,}, + {1,1082,2,59,21,48,2,164,21,68,2,1137,1,1538,}, + {1,1082,2,59,21,47,2,167,21,65,2,1138,1,1538,}, + {1,1082,2,59,21,46,2,168,21,65,2,1138,1,1538,}, + {1,1082,2,59,21,46,2,169,21,63,2,1139,1,1538,}, + {1,1082,2,60,21,44,2,171,21,62,2,1139,1,1538,}, + {1,1082,2,60,21,44,2,172,21,59,2,1141,1,1538,}, + {1,1082,2,61,21,43,2,173,21,58,2,1141,1,1538,}, + {1,1082,2,61,21,42,2,175,21,58,2,1140,1,1538,}, + {1,1082,2,61,21,41,2,177,21,58,2,1139,1,1538,}, + {1,1082,2,62,21,40,2,179,21,56,2,1139,1,1538,}, + {1,1082,2,62,21,40,2,180,21,56,2,1138,1,1538,}, + {1,1082,2,63,21,38,2,182,21,56,2,1137,1,1538,}, + {1,1082,2,63,21,37,2,184,21,56,2,1136,1,1538,}, + {1,1082,2,64,21,36,2,186,21,54,2,1136,1,1538,}, + {1,1082,2,64,21,36,2,187,21,54,2,1135,1,1538,}, + {1,1082,2,65,21,35,2,187,21,56,2,1133,1,1538,}, + {1,1082,2,66,21,33,2,188,21,57,2,1132,1,1538,}, + {1,1082,2,66,21,32,2,189,21,56,2,1133,1,1538,}, + {1,1082,2,68,21,30,2,189,21,55,2,1134,1,1538,}, + {1,1082,2,69,21,28,2,190,21,55,2,1134,1,1538,}, + {1,1082,2,69,21,28,2,190,21,54,2,1135,1,1538,}, + {1,1084,2,68,21,26,2,191,21,52,2,1137,1,1538,}, + {1,1084,2,69,21,24,2,191,21,53,2,1137,1,1538,}, + {1,1085,2,69,21,23,2,191,21,53,2,1137,1,1538,}, + {1,1086,2,69,21,21,2,192,21,53,2,1138,1,1537,}, + {1,1088,2,67,21,20,2,193,21,53,2,1137,1,1538,}, + {1,1088,2,68,21,19,2,193,21,53,2,1137,1,1538,}, + {1,1089,2,68,21,17,2,194,21,53,2,1138,1,1537,}, + {1,1091,2,67,21,16,2,194,21,1,4,1,21,51,2,1138,1,1537,}, + {1,1091,2,67,21,15,2,195,21,53,2,1139,1,1536,}, + {1,1091,2,69,21,3,2,4,21,5,2,196,21,53,2,1141,1,1534,}, + {1,1091,2,70,21,1,2,5,21,4,2,198,21,52,2,1141,1,1534,}, + {1,1092,2,277,21,51,2,1142,1,1534,}, + {1,1092,2,277,21,52,2,1141,1,1534,}, + {1,1092,2,277,21,51,2,1142,1,1534,}, + {1,1092,2,277,21,51,2,1142,1,1534,}, + {1,1091,2,278,21,50,2,1143,1,1534,}, + {1,1092,2,278,21,49,2,1143,1,1534,}, + {1,1092,2,278,21,49,2,1143,1,1534,}, + {1,1092,2,278,21,49,2,1143,1,1534,}, + {1,1092,2,279,21,48,2,1143,1,1534,}, + {1,1092,2,279,21,47,2,1144,1,1534,}, + {1,1092,2,279,21,46,2,1145,1,1534,}, + {1,1092,2,279,21,46,2,1145,1,1534,}, + {1,1092,2,280,21,42,4,1,21,1,2,1146,1,1534,}, + {1,1092,2,280,21,44,2,1147,1,1533,}, + {1,1092,2,281,21,43,2,1149,1,1531,}, + {1,1092,2,281,21,42,2,1150,1,1531,}, + {1,1092,2,281,21,41,2,1152,1,1530,}, + {1,1092,2,282,21,40,2,1154,1,1528,}, + {1,1092,2,282,21,39,4,1,2,1155,1,1527,}, + {1,1092,2,283,21,38,2,1156,1,1527,}, + {1,1092,2,283,21,2,4,1,21,34,2,1156,1,1528,}, + {1,1092,2,284,21,36,2,1156,1,1528,}, + {1,1091,2,285,21,36,2,1156,1,1528,}, + {1,1091,2,286,21,35,2,1156,1,1528,}, + {1,1092,2,286,21,33,2,1157,1,1528,}, + {1,1094,2,284,21,32,2,1158,1,1528,}, + {1,1094,2,286,21,30,2,1158,1,1528,}, + {1,1095,2,286,21,28,2,1159,1,1528,}, + {1,1095,2,286,21,28,2,1159,1,1528,}, + {1,1095,2,287,21,26,2,1160,1,1528,}, + {1,1095,2,288,21,24,2,1161,1,1528,}, + {1,1095,2,289,21,23,2,1161,1,1528,}, + {1,1095,2,290,21,21,2,1162,1,1528,}, + {1,1095,2,290,21,20,2,1163,1,1528,}, + {1,1095,2,291,21,19,2,1163,1,1528,}, + {1,1095,2,292,21,17,2,1164,1,1528,}, + {1,1095,2,293,21,16,2,1164,1,1528,}, + {1,1095,2,144,21,1,2,148,21,15,2,1165,1,1528,}, + {1,1095,2,141,21,4,2,150,21,3,2,4,21,5,2,1166,1,1528,}, + {1,1095,2,139,21,7,2,150,21,1,2,5,21,4,2,1167,1,1528,}, + {1,1095,2,139,21,7,2,1327,1,1528,}, + {1,1095,2,137,21,10,2,1326,1,1528,}, + {1,1095,2,136,21,11,2,1326,1,1528,}, + {1,1095,2,135,21,13,2,1325,1,1528,}, + {1,1095,2,134,21,14,2,1325,1,1528,}, + {1,1095,2,133,21,16,2,1324,1,1528,}, + {1,1095,2,132,21,17,2,1324,1,1528,}, + {1,1099,2,127,21,19,2,1323,1,1528,}, + {1,1101,2,125,21,20,2,1322,1,1528,}, + {1,1101,2,124,21,21,2,1322,1,1528,}, + {1,1101,2,123,21,23,2,1321,1,1528,}, + {1,1102,2,121,21,25,2,1320,1,1528,}, + {1,1102,2,120,21,20,4,1,21,5,2,1320,1,1528,}, + {1,1101,2,121,21,27,2,1319,1,1528,}, + {1,1101,2,103,21,9,2,8,21,29,2,1318,1,1528,}, + {1,1101,2,97,21,54,2,1316,1,1528,}, + {1,1101,2,94,21,58,2,1315,1,1528,}, + {1,1101,2,90,21,63,2,1314,1,1528,}, + {1,1096,4,1,1,4,2,88,21,67,2,1312,1,1528,}, + {1,1101,2,85,21,70,2,1312,1,1528,}, + {1,1101,2,83,21,73,2,31,21,2,2,1278,1,1528,}, + {1,1101,2,81,21,76,2,29,21,3,2,1278,1,1528,}, + {1,1101,2,79,21,78,2,27,21,5,2,1278,1,1528,}, + {1,1102,2,77,21,80,2,25,21,6,2,1278,1,1528,}, + {1,1103,2,74,21,83,2,23,21,7,2,1278,1,1528,}, + {1,1104,2,73,21,82,2,22,21,9,2,1278,1,1528,}, + {1,1105,2,71,21,80,2,24,21,10,2,1278,1,1528,}, + {1,1105,2,69,21,82,2,22,21,12,2,1278,1,1528,}, + {1,1105,2,68,21,83,2,20,21,14,2,1278,1,1528,}, + {1,1105,2,67,21,86,2,17,21,15,2,1278,1,1528,}, + {1,1105,2,66,21,88,2,15,21,16,2,1278,1,1528,}, + {1,1105,2,64,21,92,2,12,21,17,2,1278,1,1528,}, + {1,1105,2,63,21,94,2,10,21,18,2,1278,1,1528,}, + {1,1105,2,62,21,97,2,6,21,20,2,1278,1,1528,}, + {1,1105,2,60,21,125,2,1278,1,1528,}, + {1,1105,2,60,21,125,2,1278,1,1528,}, + {1,1105,2,59,21,126,2,1278,1,1528,}, + {1,1105,2,58,21,127,2,1278,1,1528,}, + {1,1105,2,59,21,126,2,1278,1,1528,}, + {1,1105,2,60,21,125,2,1278,1,1528,}, + {1,1105,2,60,21,125,2,1278,1,1528,}, + {1,1105,2,60,21,126,2,1277,1,1528,}, + {1,1105,2,60,21,126,2,1277,1,1528,}, + {1,1105,2,58,21,104,2,1,21,23,2,1277,1,1528,}, + {1,1105,2,58,21,103,2,3,21,22,2,1277,1,1528,}, + {1,1105,2,58,21,103,2,5,21,20,2,1277,1,1528,}, + {1,1105,2,58,21,103,2,6,21,18,4,1,2,1277,1,1528,}, + {1,1105,2,59,21,103,2,7,21,17,2,1277,1,1528,}, + {1,1105,2,60,21,103,2,7,21,16,2,1277,1,1528,}, + {1,1105,2,61,21,102,2,8,21,14,4,1,2,1277,1,1528,}, + {1,1104,2,64,21,100,2,10,21,13,2,1277,1,1528,}, + {1,1104,2,66,21,94,2,16,21,11,2,1277,1,1528,}, + {1,1104,2,67,21,92,2,18,21,10,2,1277,1,1528,}, + {1,1106,2,67,21,89,2,21,21,8,2,1278,1,1527,}, + {1,1107,2,67,21,87,2,24,21,6,2,1277,1,1528,}, + {1,1108,2,68,21,84,2,28,21,2,2,1278,1,1528,}, + {1,1109,2,69,21,82,2,1306,1,1530,}, + {1,1110,2,69,21,11,4,1,21,68,2,1306,1,1531,}, + {1,1111,2,72,21,75,2,1307,1,1531,}, + {1,1111,2,73,21,74,2,1305,1,1533,}, + {1,1113,2,74,21,6,4,1,21,63,2,1305,1,1534,}, + {1,1114,2,74,21,69,2,1305,1,1534,}, + {1,1114,2,77,21,66,2,1305,1,1534,}, + {1,1114,2,79,21,35,2,2,21,26,2,1306,1,1534,}, + {1,1115,2,79,21,33,2,3,21,26,2,1306,1,1534,}, + {1,1115,2,84,21,26,2,7,21,24,2,1305,1,1535,}, + {1,1114,2,87,21,1,2,1,21,21,2,10,21,21,2,1304,1,1537,}, + {1,1115,2,99,21,9,2,12,21,20,2,1304,1,1537,}, + {1,1114,2,100,21,7,2,16,21,17,2,1305,1,1537,}, + {1,1114,2,101,21,5,2,18,21,16,2,1304,1,1538,}, + {1,1114,2,103,21,3,2,20,21,14,2,1304,1,1538,}, + {1,1114,2,104,21,1,2,23,21,12,2,1304,1,1538,}, + {1,1114,2,130,21,9,2,1305,1,1538,}, + {1,1114,2,132,21,7,2,1305,1,1538,}, + {1,1114,2,134,21,5,2,1306,1,1537,}, + {1,1114,2,137,21,1,2,1306,1,1538,}, + {1,1114,2,1444,1,1538,}, + {1,1114,2,1444,1,1538,}, + {1,1114,2,1444,1,1538,}, + {1,1114,2,1444,1,1538,}, + {1,1114,2,1444,1,1538,}, + {1,1114,2,1444,1,1538,}, + {1,1114,2,1444,1,1538,}, + {1,1114,2,1444,1,1538,}, + {1,1114,2,1444,1,1538,}, + {1,1114,2,1444,1,1538,}, + {1,1114,2,1444,1,1538,}, + {1,1114,2,1444,1,1538,}, + {1,1115,2,1443,1,1538,}, + {1,1120,2,1438,1,1538,}, + {1,1120,2,1438,1,1538,}, + {1,1121,2,1437,1,1538,}, + {1,1122,2,1436,1,1538,}, + {1,1124,2,1434,1,1538,}, + {1,1124,2,246,21,1,2,5,21,4,2,1178,1,1538,}, + {1,1124,2,245,21,3,2,4,21,5,2,1178,1,1537,}, + {1,1124,2,243,21,15,2,1177,1,1537,}, + {1,1124,2,243,21,16,2,1175,1,1538,}, + {1,1124,2,242,21,17,2,1170,1,1543,}, + {1,1124,2,241,21,19,2,1168,1,1544,}, + {1,1124,2,240,21,20,2,1168,1,1544,}, + {1,1124,2,240,21,21,2,1165,1,1546,}, + {1,1124,2,239,21,23,2,1163,1,1547,}, + {1,1124,2,238,21,24,2,1163,1,1547,}, + {1,1124,2,237,21,26,2,1162,1,1547,}, + {1,1124,2,236,21,28,2,1161,1,1547,}, + {1,1124,2,236,21,28,2,1161,1,1547,}, + {1,1124,2,235,21,2,4,1,21,27,2,1160,1,1547,}, + {1,1124,2,233,21,32,2,1160,1,1547,}, + {1,1124,2,233,21,33,2,1159,1,1547,}, + {1,1124,2,232,21,35,2,1158,1,1547,}, + {1,1124,2,231,21,36,2,1158,1,1547,}, + {1,1130,2,225,21,36,2,1158,1,1547,}, + {1,1130,2,224,21,37,2,1158,1,1547,}, + {1,1131,2,223,21,38,2,1157,1,1547,}, + {1,1133,2,220,21,40,2,1156,1,1547,}, + {1,1134,2,219,21,40,2,1156,1,1547,}, + {1,1134,2,218,21,41,2,1156,1,1547,}, + {1,1134,2,218,21,42,2,1155,1,1547,}, + {1,1134,2,218,21,43,2,1154,1,1547,}, + {1,1134,2,217,21,44,2,1150,1,1551,}, + {1,1134,2,217,21,44,2,1148,1,1553,}, + {1,1134,2,216,21,46,2,1147,1,1553,}, + {1,1134,2,216,21,46,2,1146,1,1554,}, + {1,1134,2,216,21,47,2,1143,1,1556,}, + {1,1134,2,216,21,48,2,1141,1,1557,}, + {1,1134,2,215,21,49,2,1141,1,1557,}, + {1,1134,2,215,21,49,2,1141,1,1557,}, + {1,1134,2,215,21,49,2,1141,1,1557,}, + {1,1134,2,214,21,50,2,1141,1,1557,}, + {1,1134,2,214,21,51,2,1140,1,1557,}, + {1,1139,2,209,21,51,2,1140,1,1557,}, + {1,1140,2,208,21,52,2,1139,1,1557,}, + {1,1140,2,208,21,51,2,1140,1,1557,}, + {1,1141,2,207,21,52,2,1139,1,1557,}, + {1,1143,2,204,21,53,2,1139,1,1557,}, + {1,1143,2,204,21,53,2,1139,1,1557,}, + {1,1144,2,203,21,53,2,1139,1,1557,}, + {1,1144,2,203,21,53,2,1139,1,1557,}, + {1,1144,2,203,21,53,2,1139,1,1557,}, + {1,1144,2,203,21,53,2,1138,1,1558,}, + {1,1144,2,203,21,53,2,1136,1,1560,}, + {1,1144,2,203,21,53,2,1136,1,1560,}, + {1,1144,2,203,21,53,2,1131,1,1565,}, + {1,1144,2,204,21,52,2,1130,1,1566,}, + {1,1144,2,204,21,54,2,1128,1,1566,}, + {1,1144,2,204,21,55,2,1126,1,1567,}, + {1,1144,2,204,21,55,2,1126,1,1567,}, + {1,1146,2,202,21,56,2,1125,1,1567,}, + {1,1147,2,201,21,57,2,1124,1,1567,}, + {1,1147,2,201,21,56,2,1125,1,1567,}, + {1,1152,2,196,21,54,2,1127,1,1567,}, + {1,1153,2,194,21,54,2,1128,1,1567,}, + {1,1154,2,191,21,56,2,1128,1,1567,}, + {1,1154,2,190,21,56,2,1129,1,1567,}, + {1,1153,2,190,21,56,2,1130,1,1567,}, + {1,1153,2,189,21,56,2,1131,1,1567,}, + {1,1154,2,186,21,58,2,1131,1,1567,}, + {1,1156,2,183,21,58,2,1132,1,1567,}, + {1,1157,2,181,21,58,2,1133,1,1567,}, + {1,1157,2,180,21,59,2,1131,1,1569,}, + {1,1157,2,179,21,62,2,1128,1,1570,}, + {1,1157,2,178,21,63,2,1128,1,1570,}, + {1,1157,2,177,21,3,4,1,21,61,2,1127,1,1570,}, + {1,1162,2,172,21,65,2,1127,1,1570,}, + {1,1163,2,169,21,68,2,1126,1,1570,}, + {1,1163,2,169,21,69,2,1125,1,1570,}, + {1,1163,2,168,21,70,2,1125,1,1570,}, + {1,1163,2,168,21,71,2,1124,1,1570,}, + {1,1163,2,168,21,72,2,1123,1,1570,}, + {1,1164,2,166,21,73,2,1123,1,1570,}, + {1,1166,2,166,21,72,2,1122,1,1570,}, + {1,1166,2,168,21,70,2,1122,1,1570,}, + {1,1166,2,170,21,69,2,1115,1,1576,}, + {1,1167,2,171,21,67,2,1115,1,1576,}, + {1,1166,2,174,21,66,2,1114,1,1576,}, + {1,1167,2,174,21,65,2,1113,1,1577,}, + {1,1168,2,175,21,64,2,1113,1,1576,}, + {1,1169,2,175,21,63,2,1112,1,1577,}, + {1,1170,2,176,21,62,2,1110,1,1578,}, + {1,1170,2,177,21,61,2,1109,1,1579,}, + {1,1173,2,175,21,60,2,1108,1,1580,}, + {1,1173,2,175,21,61,2,1107,1,1580,}, + {1,1174,2,175,21,59,2,1108,1,1580,}, + {1,1176,2,174,21,55,2,1111,1,1580,}, + {1,1176,2,175,21,4,4,1,21,45,2,1115,1,1580,}, + {1,1176,2,175,21,48,2,1117,1,1580,}, + {1,1176,2,177,21,6,2,3,21,34,2,1120,1,1580,}, + {1,1176,2,178,21,5,2,3,21,31,2,1123,1,1580,}, + {1,1176,2,180,21,3,2,4,21,28,2,1125,1,1580,}, + {1,1176,2,181,21,1,2,6,21,26,2,1126,1,1580,}, + {1,1176,2,188,21,24,2,1128,1,1580,}, + {1,1176,2,189,21,22,2,1129,1,1580,}, + {1,1185,2,181,21,20,2,1130,1,1580,}, + {1,1186,2,180,21,19,2,1131,1,1580,}, + {1,1186,2,181,21,17,2,1132,1,1580,}, + {1,1186,2,181,21,17,2,1132,1,1580,}, + {1,1186,2,181,21,10,2,3,21,4,2,1132,1,1580,}, + {1,1186,2,181,21,9,2,5,21,3,2,1132,1,1580,}, + {1,1186,2,181,21,10,2,1139,1,1580,}, + {1,1186,2,181,21,11,2,1138,1,1580,}, + {1,1186,2,180,21,12,2,1138,1,1580,}, + {1,1186,2,180,21,11,4,1,21,1,2,1137,1,1580,}, + {1,1195,2,170,21,15,2,1136,1,1580,}, + {1,1196,2,168,21,16,2,1136,1,1580,}, + {1,1196,2,167,21,18,2,1135,1,1580,}, + {1,1196,2,166,21,20,2,1134,1,1580,}, + {1,1196,2,165,21,22,2,1133,1,1580,}, + {1,1196,2,165,21,22,2,1133,1,1580,}, + {1,1196,2,164,21,24,2,1132,1,1580,}, + {1,1196,2,164,21,24,2,1132,1,1580,}, + {1,1196,2,163,21,2,4,1,21,20,4,1,21,2,2,1131,1,1580,}, + {1,1196,2,162,21,28,2,1130,1,1580,}, + {1,1198,2,160,21,28,2,1130,1,1580,}, + {1,1199,2,158,21,30,2,1129,1,1580,}, + {1,1199,2,157,21,31,2,1129,1,1580,}, + {1,1205,2,150,21,33,2,1128,1,1580,}, + {1,1205,2,150,21,33,2,1128,1,1580,}, + {1,1206,2,148,21,34,2,1128,1,1580,}, + {1,1206,2,147,21,36,2,1127,1,1580,}, + {1,1206,2,147,21,36,2,1127,1,1580,}, + {1,1206,2,168,21,14,2,1128,1,1580,}, + {1,1206,2,1310,1,1580,}, + {1,1208,2,1308,1,1580,}, + {1,1209,2,1307,1,1580,}, + {1,1209,2,1307,1,1580,}, + {1,1209,2,1307,1,1580,}, + {1,1209,2,1307,1,1580,}, + {1,1209,2,1307,1,1580,}, + {1,1209,2,1307,1,1580,}, + {1,1209,2,1307,1,1580,}, + {1,1209,2,1307,1,1580,}, + {1,1209,2,173,21,1,2,1133,1,1580,}, + {1,1209,2,170,21,4,2,1133,1,1580,}, + {1,1209,2,168,21,7,2,1132,1,1580,}, + {1,1213,2,164,21,7,2,796,23,1,2,335,1,1580,}, + {1,1215,2,160,21,10,2,791,21,2,1,5,21,1,2,332,1,1580,}, + {1,1215,2,159,21,11,2,788,21,1,1,11,21,1,2,330,1,1580,}, + {1,1216,2,157,21,13,2,765,23,1,2,1,21,6,23,1,2,1,23,2,2,7,23,1,4,1,1,16,21,1,2,327,1,1580,}, + {1,1218,2,154,21,14,2,762,23,1,1,16,21,4,1,22,21,2,2,10,23,1,2,312,1,1580,}, + {1,1218,2,153,21,16,2,710,23,3,2,46,21,1,1,60,21,2,2,307,1,1580,}, + {1,1219,2,151,21,17,2,673,1,6,21,1,2,27,21,1,1,9,4,1,23,1,2,13,23,1,4,1,1,4,2,13,23,1,1,74,2,303,1,1580,}, + {1,1219,2,150,21,19,2,670,1,11,21,3,23,1,2,2,23,2,2,14,21,2,1,14,21,1,2,7,23,1,1,12,23,1,2,6,23,1,1,79,2,301,1,1580,}, + {1,1219,2,150,21,20,2,667,23,1,1,23,21,1,2,6,21,2,1,20,21,1,2,3,21,1,1,18,21,1,1,83,2,300,1,1580,}, + {1,1219,2,149,21,21,2,650,21,2,23,1,21,1,2,8,23,1,2,2,23,1,1,27,21,1,23,1,21,1,1,132,2,299,1,1580,}, + {1,1219,2,148,21,23,2,644,21,1,1,1,21,1,1,5,4,1,21,2,1,172,21,1,2,298,1,1580,}, + {1,1219,2,147,21,25,2,642,1,185,2,299,1,1579,}, + {1,1219,2,146,21,26,2,641,1,187,2,299,1,1578,}, + {1,1219,2,146,21,27,2,638,21,1,1,188,2,301,1,1576,}, + {1,1221,2,126,21,9,2,8,21,29,2,636,1,191,2,300,1,1576,}, + {1,1222,2,119,21,54,2,574,23,1,2,1,21,1,23,1,2,1,21,1,1,4,21,1,23,1,2,47,1,192,2,299,1,1577,}, + {1,1222,2,116,21,58,2,551,23,2,21,1,1,19,21,1,23,1,1,13,2,9,23,1,21,1,1,11,21,2,2,17,23,1,1,194,21,1,2,299,1,1576,}, + {1,1224,2,110,21,63,2,545,23,2,1,40,21,4,1,2,21,2,1,20,21,1,23,4,2,4,23,1,21,1,1,198,2,299,1,1576,}, + {1,1225,2,107,21,13,4,1,21,53,2,539,21,1,1,77,21,1,1,1,21,2,1,201,21,1,2,298,1,1576,}, + {1,1225,2,104,21,70,2,536,21,1,1,285,21,1,2,300,1,2,2,2,1,1570,}, + {1,1226,2,101,21,73,2,31,21,2,2,497,23,2,1,290,2,304,1,1570,}, + {1,1228,2,97,21,76,2,29,21,3,2,494,23,1,1,294,23,1,2,303,1,1570,}, + {1,1228,2,95,21,78,2,27,21,5,2,490,23,1,21,1,1,297,21,1,2,303,1,1570,}, + {1,1228,2,94,21,80,2,25,21,6,2,201,21,1,1,5,21,2,2,1,23,1,21,3,1,4,23,2,2,265,23,2,4,1,1,302,2,303,1,1570,}, + {1,1229,2,91,21,83,2,23,21,7,2,198,21,1,1,22,23,1,2,259,23,1,1,308,2,303,1,1570,}, + {1,1229,2,91,21,82,2,22,21,9,2,194,23,1,21,1,1,27,21,1,2,1,21,1,2,248,23,1,21,2,1,313,2,303,1,1570,}, + {1,1229,2,90,21,80,2,24,21,10,2,191,21,1,1,55,2,10,1,63,2,27,1,21,2,18,1,58,4,1,21,2,23,2,2,12,23,3,21,3,1,323,21,1,2,302,1,1570,}, + {1,1229,2,88,21,82,2,22,21,12,2,187,21,1,1,603,2,302,1,1570,}, + {1,1229,2,87,21,83,2,20,21,14,2,183,21,1,1,607,2,302,1,1570,}, + {1,1229,2,86,21,86,2,17,21,15,2,178,23,1,21,1,1,611,2,302,1,1570,}, + {1,1229,2,85,21,88,2,15,21,16,2,90,1,45,23,1,2,37,23,1,21,1,1,616,23,1,2,301,1,1570,}, + {1,1229,2,83,21,92,2,12,21,17,2,89,1,47,21,1,2,30,23,1,21,2,1,621,23,1,2,302,1,1569,}, + {1,1229,2,82,21,94,2,10,21,18,2,88,1,49,21,1,2,20,23,2,21,2,1,629,23,1,2,304,1,1567,}, + {1,1229,2,81,21,97,2,6,21,20,2,80,1,58,21,1,23,4,21,8,1,640,21,1,2,304,1,1567,}, + {1,1229,2,79,21,125,2,79,1,713,2,304,1,1567,}, + {1,1229,2,79,21,125,2,79,1,713,2,304,1,1567,}, + {1,1229,2,78,21,126,2,79,1,713,23,1,2,303,1,1567,}, + {1,1229,2,77,21,127,2,79,1,713,21,1,2,303,1,1567,}, + {1,1229,2,78,21,126,2,79,1,714,2,303,1,1567,}, + {1,1229,2,79,21,125,2,79,1,714,2,303,1,1567,}, + {1,1229,2,79,21,125,2,76,1,717,2,303,1,1567,}, + {1,1229,2,79,21,126,2,75,1,717,2,305,1,1565,}, + {1,1229,2,79,21,126,2,74,1,718,2,306,1,1564,}, + {1,1234,2,72,21,104,2,1,21,23,2,74,1,717,21,1,2,307,1,1563,}, + {1,1234,2,72,21,103,2,3,21,22,2,74,1,717,21,1,2,306,1,1564,}, + {1,1235,2,71,21,103,2,5,21,20,2,74,1,717,23,1,2,307,1,1563,}, + {1,1236,2,70,21,103,2,6,21,19,2,74,1,717,2,308,1,1563,}, + {1,1238,2,69,21,103,2,7,21,17,2,74,1,716,21,1,2,308,1,1563,}, + {1,1238,2,70,21,103,2,7,21,16,2,74,1,716,21,1,2,309,1,1562,}, + {1,1238,2,71,21,102,2,8,21,15,2,74,1,716,21,1,2,314,1,1557,}, + {1,1238,2,73,21,100,2,10,21,13,2,74,1,716,21,1,2,314,1,1557,}, + {1,1238,2,75,21,94,2,16,21,11,2,74,1,716,21,1,2,314,1,1557,}, + {1,1238,2,76,21,92,2,18,21,10,2,74,1,716,21,1,2,314,1,1557,}, + {1,1238,2,78,21,89,2,21,21,8,2,72,1,718,23,1,2,314,1,1557,}, + {1,1238,2,79,21,87,2,24,21,6,2,72,1,718,2,315,1,1557,}, + {1,1238,2,81,21,84,2,28,21,2,2,72,1,719,2,315,1,1557,}, + {1,1238,2,83,21,82,2,101,1,720,23,1,2,314,1,1557,}, + {1,1238,2,84,21,80,2,100,1,722,21,1,2,314,1,1557,}, + {1,1238,2,88,21,75,2,101,1,723,21,1,2,313,1,1557,}, + {1,1238,2,89,21,74,2,100,1,724,21,1,2,313,1,1557,}, + {1,1238,2,92,21,70,2,99,1,726,4,1,2,313,1,1557,}, + {1,1238,2,93,21,69,2,99,1,727,2,313,1,1557,}, + {1,1238,2,96,21,66,2,98,1,728,2,313,1,1557,}, + {1,1238,2,98,21,35,2,2,21,26,2,99,1,728,2,313,1,1557,}, + {1,1238,2,99,21,33,2,3,21,26,2,99,1,728,2,313,1,1557,}, + {1,1238,2,104,21,8,4,1,21,17,2,7,21,24,2,99,1,727,21,1,2,313,1,1557,}, + {1,1238,2,106,21,1,2,1,21,21,2,10,21,21,2,100,1,727,23,1,2,313,1,1557,}, + {1,1238,2,119,21,9,2,12,21,20,2,101,1,726,2,314,1,1557,}, + {1,1238,2,119,21,7,2,16,21,17,2,101,1,728,2,313,1,1557,}, + {1,1238,2,120,21,5,2,18,21,16,2,102,1,727,23,1,2,312,1,1557,}, + {1,1238,2,122,21,3,2,20,21,14,2,102,1,727,2,314,1,1556,}, + {1,1238,2,123,21,1,2,23,21,12,2,102,1,727,2,315,1,1555,}, + {1,1238,2,149,21,9,2,102,1,728,2,323,1,1547,}, + {1,1238,2,151,21,7,2,100,1,729,21,1,2,323,1,1547,}, + {1,1238,2,153,21,5,2,100,1,729,23,1,2,323,1,1547,}, + {1,1242,2,152,21,1,2,96,1,734,2,324,1,1547,}, + {1,1244,2,245,1,736,2,324,1,1547,}, + {1,1244,2,245,1,735,21,1,2,324,1,1547,}, + {1,1245,2,244,1,735,21,1,2,324,1,1547,}, + {1,1247,2,242,1,735,21,1,2,324,1,1547,}, + {1,1248,2,241,1,735,23,1,2,324,1,1547,}, + {1,1248,2,241,1,735,23,1,2,324,1,1547,}, + {1,1248,2,241,1,735,23,1,2,324,1,1547,}, + {1,1248,2,241,1,735,2,325,1,1547,}, + {1,1248,2,241,1,735,2,325,1,1547,}, + {1,1248,2,241,1,734,21,1,2,325,1,1547,}, + {1,1248,2,241,1,734,21,1,2,325,1,1547,}, + {1,1248,2,241,1,734,21,1,2,325,1,1547,}, + {1,1248,2,241,1,734,21,1,2,325,1,1547,}, + {1,1248,2,241,1,734,21,1,2,325,1,1547,}, + {1,1248,2,241,1,735,2,326,1,1546,}, + {1,1248,2,241,1,735,21,2,23,1,2,328,1,1541,}, + {1,1248,2,239,1,741,2,328,1,1540,}, + {1,1248,2,238,1,743,2,328,1,1539,}, + {1,1248,2,237,1,744,2,329,1,1538,}, + {1,1248,2,232,1,749,21,1,2,329,1,1537,}, + {1,1248,2,231,1,751,2,329,1,1537,}, + {1,1248,2,231,1,751,2,329,1,1537,}, + {1,1248,2,231,1,751,2,329,1,1537,}, + {1,1248,2,231,1,751,2,329,1,1537,}, + {1,1248,2,231,1,751,2,330,1,1536,}, + {1,1248,2,231,1,751,2,332,1,1534,}, + {1,1248,2,229,1,753,21,1,2,331,1,1534,}, + {1,1248,2,228,1,755,2,332,1,1533,}, + {1,1248,2,227,1,756,2,337,1,1528,}, + {1,1248,2,226,1,757,21,1,2,337,1,1527,}, + {1,1248,2,225,1,759,2,336,1,1528,}, + {1,1248,2,224,1,760,23,1,2,335,1,1528,}, + {1,1248,2,222,1,763,2,336,1,1527,}, + {1,1248,2,222,1,763,21,1,2,335,1,1527,}, + {1,1248,2,221,1,765,2,337,1,1525,}, + {1,1249,2,220,1,765,21,1,1,1,2,336,1,1524,}, + {1,1251,2,218,1,767,2,336,1,10,4,1,1,1513,}, + {1,1251,2,218,1,767,2,337,1,1523,}, + {1,1251,2,218,1,767,2,342,1,1518,}, + {1,1251,2,218,1,767,2,343,1,1517,}, + {1,1251,2,218,1,767,2,344,1,1516,}, + {1,1251,2,218,1,767,2,136,21,1,2,208,1,1515,}, + {1,1251,2,216,1,769,2,133,21,4,2,209,1,1514,}, + {1,1251,2,215,1,770,2,131,21,7,2,208,1,1514,}, + {1,1251,2,215,1,770,2,131,21,7,2,208,1,1514,}, + {1,1251,2,215,1,770,2,129,21,10,2,207,1,1514,}, + {1,1251,2,215,1,770,2,128,21,11,2,207,1,1514,}, + {1,1251,2,215,1,771,2,126,21,13,2,207,1,1513,}, + {1,1251,2,215,1,773,2,123,21,14,2,212,1,1508,}, + {1,1251,2,215,1,773,2,122,21,16,2,212,1,1507,}, + {1,1251,2,215,1,774,2,120,21,17,2,213,1,1506,}, + {1,1251,2,215,1,776,2,116,21,20,2,213,1,1505,}, + {1,1251,2,215,1,776,2,116,21,3,4,1,21,17,2,212,1,1505,}, + {1,1251,2,215,1,777,2,114,21,22,2,212,1,1505,}, + {1,1251,2,215,1,779,2,111,21,24,2,211,1,1505,}, + {1,1251,2,215,1,780,2,109,21,26,2,210,1,1505,}, + {1,1251,2,215,1,780,2,108,21,27,2,211,1,1504,}, + {1,1251,2,215,1,780,2,108,21,28,2,211,1,1503,}, + {1,1251,2,215,1,780,2,90,21,9,2,8,21,30,2,215,1,1498,}, + {1,1251,2,215,1,780,2,84,21,55,2,214,1,1497,}, + {1,1251,2,215,1,780,2,81,21,59,2,213,1,1497,}, + {1,1251,2,215,1,780,2,77,21,64,2,217,1,1492,}, + {1,1251,2,215,1,780,2,75,21,68,2,216,1,1491,}, + {1,1251,2,215,1,781,2,71,21,71,2,217,1,1490,}, + {1,1251,2,215,1,782,2,68,21,74,2,31,21,2,2,185,1,1488,}, + {1,1251,2,215,1,783,2,65,21,77,2,29,21,3,2,185,1,1488,}, + {1,1251,2,215,1,783,2,63,21,79,2,27,21,5,2,186,1,1487,}, + {1,1251,2,215,1,783,2,62,21,81,2,25,21,6,2,187,1,1486,}, + {1,1251,2,215,1,783,2,60,21,84,2,23,21,7,2,188,1,1485,}, + {1,1251,2,215,1,783,2,60,21,83,2,22,21,9,2,188,1,1485,}, + {1,1251,2,215,1,789,2,53,21,2,4,1,21,78,2,24,21,10,2,188,1,1485,}, + {1,1251,2,215,1,790,2,50,21,83,2,22,21,12,2,188,1,1485,}, + {1,1251,2,215,1,790,2,49,21,84,2,20,21,14,2,188,1,1485,}, + {1,1251,2,215,1,790,2,48,21,87,2,17,21,15,2,188,1,1485,}, + {1,1251,2,215,1,790,2,47,21,89,2,15,21,16,2,188,1,1485,}, + {1,1251,2,215,1,790,2,45,21,93,2,12,21,17,2,188,1,1485,}, + {1,1251,2,215,1,790,2,44,21,90,4,1,21,4,2,10,21,18,2,188,1,1485,}, + {1,1251,2,215,1,792,2,41,21,98,2,6,21,20,2,188,1,1485,}, + {1,1251,2,213,1,795,2,38,21,126,2,188,1,1485,}, + {1,1251,2,212,1,796,2,38,21,126,2,188,1,1485,}, + {1,1251,2,212,1,798,2,35,21,127,2,188,1,1485,}, + {1,1251,2,70,21,1,2,5,21,4,2,130,1,801,2,33,21,128,2,188,1,1485,}, + {1,1251,2,69,21,3,2,4,21,5,2,128,1,802,2,34,21,127,2,188,1,1485,}, + {1,1251,2,67,21,15,2,127,1,804,2,33,21,126,2,188,1,1485,}, + {1,1251,2,67,21,16,2,124,1,807,2,32,21,126,2,188,1,1485,}, + {1,1251,2,66,21,17,2,123,1,809,2,31,21,101,4,1,21,24,2,188,1,1485,}, + {1,1251,2,65,21,19,2,121,1,810,2,31,21,126,2,188,1,1485,}, + {1,1251,2,64,21,20,2,121,1,812,2,27,21,105,2,1,21,22,2,188,1,1485,}, + {1,1251,2,64,21,21,2,120,1,813,2,26,21,104,2,3,21,21,2,188,1,1485,}, + {1,1251,2,63,21,23,2,119,1,813,2,26,21,104,2,5,21,19,2,188,1,1485,}, + {1,1251,2,62,21,24,2,119,1,813,2,26,21,104,2,6,21,18,2,188,1,1485,}, + {1,1251,2,61,21,26,2,118,1,813,2,27,21,104,2,7,21,16,2,188,1,1485,}, + {1,1251,2,60,21,28,2,117,1,813,2,28,21,104,2,7,21,15,2,188,1,1485,}, + {1,1251,2,60,21,28,2,117,1,819,2,23,21,103,2,8,21,14,2,188,1,1485,}, + {1,1251,2,59,21,30,2,116,1,819,2,25,21,93,4,1,21,7,2,10,21,12,2,188,1,1485,}, + {1,1251,2,57,21,32,2,116,1,819,2,27,21,95,2,16,21,10,2,188,1,1485,}, + {1,1251,2,57,21,33,2,115,1,819,2,28,21,93,2,18,21,9,2,188,1,1485,}, + {1,1251,2,56,21,35,2,114,1,819,2,30,21,90,2,21,21,7,2,188,1,1485,}, + {1,1251,2,55,21,36,2,114,1,819,2,31,21,88,2,24,21,5,2,188,1,1485,}, + {1,1251,2,55,21,36,2,114,1,821,2,31,21,85,2,28,21,2,2,188,1,1485,}, + {1,1251,2,54,21,37,2,114,1,822,2,32,21,83,2,218,1,1485,}, + {1,1251,2,54,21,38,2,113,1,823,2,32,21,81,2,219,1,1485,}, + {1,1251,2,53,21,40,2,112,1,823,2,36,21,76,2,52,1,1,2,167,1,1485,}, + {1,1251,2,53,21,40,2,112,1,823,2,37,21,75,2,48,1,11,2,161,1,1485,}, + {1,1251,2,52,21,41,2,112,1,823,2,40,21,71,2,48,1,13,2,160,1,1485,}, + {1,1251,2,52,21,42,2,111,1,823,2,41,21,70,2,48,1,14,2,159,1,1485,}, + {1,1250,2,53,21,43,2,110,1,823,2,44,21,67,2,48,1,15,2,158,1,1485,}, + {1,1249,2,53,21,44,2,110,1,823,2,46,21,36,2,2,21,26,2,49,1,16,2,157,1,1485,}, + {1,1248,2,54,21,44,2,110,1,823,2,47,21,34,2,3,21,26,2,49,1,16,2,157,1,1485,}, + {1,1248,2,53,21,46,2,109,1,827,2,48,21,26,2,8,21,24,2,48,1,32,2,142,1,1485,}, + {1,1248,2,53,21,46,2,109,1,829,2,48,21,1,2,1,21,21,2,11,21,21,2,47,1,35,2,141,1,1485,}, + {1,1248,2,53,21,47,2,108,1,829,2,61,21,9,2,13,21,20,2,47,1,36,2,140,1,1485,}, + {1,1248,2,53,21,48,2,107,1,830,2,60,21,7,2,17,21,17,2,48,1,37,2,1,1,2,2,136,1,1485,}, + {1,1248,2,52,21,49,2,103,1,2,2,1,1,833,2,59,21,5,2,19,21,16,2,48,1,42,2,134,1,1485,}, + {1,1248,2,52,21,49,2,101,1,838,2,61,21,3,2,21,21,14,2,48,1,42,2,134,1,1485,}, + {1,1248,2,52,21,49,2,101,1,839,2,61,21,1,2,24,21,12,2,48,1,43,2,133,1,1485,}, + {1,1248,2,51,21,50,2,101,1,839,2,88,21,9,2,49,1,43,2,133,1,1485,}, + {1,1248,2,51,21,51,2,98,1,840,2,91,21,7,2,49,1,43,2,133,1,1485,}, + {1,1248,2,51,21,51,2,97,1,842,2,92,21,5,2,49,1,43,2,133,1,1485,}, + {1,1248,2,51,21,52,2,95,1,844,2,94,21,1,2,50,1,43,2,133,1,1485,}, + {1,1248,2,51,21,51,2,96,1,845,2,144,1,43,2,133,1,1485,}, + {1,1248,2,51,21,52,2,95,1,846,2,143,1,43,2,133,1,1485,}, + {1,1248,2,50,21,53,2,95,1,850,2,139,1,57,2,119,1,1485,}, + {1,1248,2,50,21,53,2,95,1,852,2,137,1,58,2,118,1,1485,}, + {1,1248,2,50,21,53,2,95,1,852,2,137,1,59,2,117,1,1485,}, + {1,1248,2,50,21,53,2,95,1,852,2,137,1,60,2,116,1,1485,}, + {1,1248,2,50,21,53,2,95,1,852,2,137,1,61,2,115,1,1485,}, + {1,1248,2,50,4,1,21,52,2,95,1,852,2,137,1,62,2,114,1,1485,}, + {1,1248,2,50,21,53,2,95,1,853,2,136,1,62,2,114,1,1485,}, + {1,1248,2,50,21,53,2,95,1,854,2,135,1,62,2,114,1,1485,}, + {1,1248,2,50,21,53,2,95,1,855,2,134,1,62,2,114,1,1485,}, + {1,1248,2,51,21,52,2,95,1,856,2,133,1,62,2,114,1,1485,}, + {1,1248,2,51,21,54,2,93,1,856,2,133,1,67,2,109,1,1485,}, + {1,1248,2,51,21,55,2,92,1,856,2,133,1,68,2,108,1,1485,}, + {1,1248,2,51,21,55,2,92,1,856,2,133,1,69,2,107,1,1485,}, + {1,1248,2,51,21,56,2,91,1,856,2,133,1,69,2,107,1,1485,}, + {1,1248,2,51,21,57,2,90,1,855,2,134,1,71,2,105,1,1485,}, + {1,1248,2,51,21,56,2,91,1,855,2,134,1,72,2,104,1,1485,}, + {1,1248,2,51,21,54,2,93,1,856,2,133,1,72,2,104,1,1485,}, + {1,1248,2,50,21,54,2,94,1,858,2,131,1,72,2,104,1,1485,}, + {1,1248,2,48,21,56,2,94,1,858,2,131,1,72,2,104,1,1485,}, + {1,1248,2,47,21,56,2,95,1,859,2,130,1,72,2,104,1,1485,}, + {1,1248,2,46,21,56,2,96,1,861,2,131,1,3,2,3,1,63,2,104,1,1485,}, + {1,1248,2,45,4,1,21,55,2,96,1,862,2,138,1,62,2,104,1,1485,}, + {1,1248,2,43,21,58,2,95,1,864,2,136,1,63,2,104,1,1485,}, + {1,1248,2,42,21,58,2,95,1,867,2,134,1,64,2,103,1,1485,}, + {1,1248,2,41,21,58,2,95,1,869,2,133,1,66,2,101,1,1485,}, + {1,1247,2,41,21,59,2,94,1,870,2,133,1,66,2,101,1,1485,}, + {1,1247,2,40,21,62,2,91,1,872,2,132,1,66,2,101,1,1485,}, + {1,1247,2,39,21,63,2,90,1,872,2,133,1,66,2,101,1,1485,}, + {1,1247,2,38,21,65,2,87,1,874,2,133,1,66,2,101,1,1485,}, + {1,1247,2,38,21,65,2,87,1,874,2,133,1,67,2,100,1,1485,}, + {1,1247,2,36,21,68,2,86,1,874,2,133,1,72,2,95,1,1485,}, + {1,1247,2,36,21,69,2,85,1,874,2,133,1,72,2,95,1,1485,}, + {1,1247,2,35,21,70,2,84,1,875,2,133,1,73,2,94,1,1485,}, + {1,1247,2,35,21,71,2,83,1,875,2,133,1,74,2,93,1,1485,}, + {1,1248,2,34,21,72,2,83,1,874,2,133,1,76,2,91,1,1485,}, + {1,1248,2,33,21,73,2,83,1,874,2,133,1,76,2,91,1,1485,}, + {1,1248,2,35,21,72,2,82,1,876,2,131,1,76,2,91,1,1485,}, + {1,1248,2,37,21,70,2,82,1,877,2,130,1,76,2,91,1,1485,}, + {1,1248,2,39,21,69,2,81,1,877,2,130,1,76,2,91,1,1485,}, + {1,1248,2,41,21,67,2,81,1,879,2,128,1,76,2,90,1,1486,}, + {1,1248,2,43,4,1,21,65,2,80,1,880,2,127,1,76,2,89,1,1487,}, + {1,1248,2,44,21,65,2,80,1,881,2,126,1,76,2,88,1,1488,}, + {1,1248,2,46,21,64,2,79,1,881,2,126,1,76,2,87,1,1489,}, + {1,1248,2,47,21,63,2,79,1,883,2,124,1,78,2,84,1,1490,}, + {1,1248,2,49,21,62,2,78,1,884,2,123,1,79,2,82,1,1491,}, + {1,1248,2,50,21,61,2,78,1,884,2,123,1,79,2,81,1,1492,}, + {1,1248,2,51,21,60,2,78,1,884,2,123,1,81,2,78,1,1493,}, + {1,1248,2,51,21,61,2,77,1,884,2,123,1,82,2,75,1,1495,}, + {1,1248,2,52,21,59,2,78,1,884,2,123,1,83,2,74,1,1495,}, + {1,1248,2,53,21,55,2,81,1,884,2,123,1,83,2,74,1,1495,}, + {1,1248,2,54,21,50,2,85,1,884,2,123,1,83,2,74,1,1495,}, + {1,1248,2,54,21,48,2,87,1,884,2,123,1,83,2,74,1,1495,}, + {1,1248,2,56,21,6,2,3,21,34,2,90,1,884,2,123,1,83,2,74,1,1495,}, + {1,1248,2,57,21,5,2,3,21,31,2,92,1,885,2,123,1,85,2,72,1,1495,}, + {1,1248,2,59,21,3,2,4,21,28,2,92,1,887,2,123,1,86,2,71,1,1495,}, + {1,1248,2,60,21,1,2,6,21,26,2,92,1,888,2,123,1,86,2,71,1,1495,}, + {1,1248,2,67,21,23,4,1,2,94,1,888,2,123,1,86,2,71,1,1495,}, + {1,1248,2,68,21,22,2,95,1,888,2,123,1,86,2,71,1,1495,}, + {1,1248,2,69,21,20,2,96,1,888,2,123,1,86,2,71,1,1495,}, + {1,1248,2,69,21,19,2,97,1,888,2,123,1,86,2,71,1,1495,}, + {1,1248,2,70,21,17,2,97,1,889,2,123,1,86,2,71,1,1495,}, + {1,1248,2,70,21,17,2,96,1,890,2,123,1,86,2,71,1,1495,}, + {1,1248,2,70,21,10,2,3,21,4,2,95,1,891,2,123,1,86,2,71,1,1495,}, + {1,1248,2,70,21,9,2,5,21,3,2,94,1,892,2,123,1,86,2,71,1,1495,}, + {1,1248,2,70,21,10,2,99,1,894,2,123,1,86,2,71,1,1495,}, + {1,1248,2,70,21,11,2,98,1,895,2,2,1,1,2,119,1,86,2,71,1,1495,}, + {1,1248,2,69,21,9,4,1,21,2,2,98,1,900,2,117,1,86,2,71,1,1495,}, + {1,1248,2,69,21,13,2,96,1,902,2,116,1,86,2,71,1,1495,}, + {1,1248,2,68,21,15,2,95,1,902,2,116,1,86,2,71,1,1495,}, + {1,1248,2,67,21,16,2,96,1,901,2,116,1,86,2,71,1,1495,}, + {1,1248,2,66,21,18,2,95,1,901,2,116,1,86,2,71,1,1495,}, + {1,1248,2,65,21,20,2,94,1,901,2,116,1,86,2,71,1,1495,}, + {1,1248,2,64,21,22,2,93,1,903,2,114,1,86,2,71,1,1495,}, + {1,1248,2,64,21,22,2,91,1,906,2,113,1,86,2,71,1,1495,}, + {1,1248,2,63,21,2,4,1,21,21,2,89,1,907,2,113,1,86,2,71,1,1495,}, + {1,1248,2,63,21,24,2,89,1,907,2,113,1,86,2,71,1,1495,}, + {1,1248,2,62,21,26,2,88,1,907,2,111,1,88,2,71,1,1495,}, + {1,1248,2,61,21,28,2,86,1,908,2,111,1,88,2,71,1,1495,}, + {1,1248,2,61,21,28,2,86,1,908,2,110,1,89,2,71,1,1495,}, + {1,1248,2,60,21,30,2,86,1,907,2,108,1,91,2,71,1,1495,}, + {1,1248,2,59,21,31,2,86,1,907,2,107,1,92,2,71,1,1495,}, + {1,1248,2,58,21,33,2,84,1,908,2,107,1,92,2,71,1,1495,}, + {1,1248,2,58,21,33,2,85,1,907,2,105,1,94,2,71,1,1495,}, + {1,1248,2,57,21,20,4,1,21,13,2,85,1,907,2,104,1,95,2,71,1,1495,}, + {1,1248,2,56,21,36,2,84,1,907,2,104,1,95,2,71,1,1495,}, + {1,1248,2,56,21,36,2,84,1,907,2,104,1,95,2,71,1,1495,}, + {1,1248,2,77,21,14,2,85,1,907,2,104,1,95,2,71,1,1495,}, + {1,1248,2,176,1,907,2,104,1,95,2,71,1,1495,}, + {1,1248,2,176,1,907,2,104,1,95,2,71,1,1495,}, + {1,1248,2,176,1,907,2,104,1,95,2,71,1,1495,}, + {1,1248,2,176,1,907,2,104,1,95,2,71,1,1495,}, + {1,1248,2,176,1,907,2,104,1,95,2,71,1,1495,}, + {1,1248,2,176,1,907,2,104,1,95,2,71,1,1495,}, + {1,1248,2,176,1,907,2,104,1,95,2,71,1,1495,}, + {1,1248,2,176,1,907,2,104,1,95,2,71,1,1495,}, + {1,1248,2,175,1,908,2,104,1,95,2,71,1,1495,}, + {1,1248,2,170,1,913,2,104,1,95,2,71,1,1495,}, + {1,1248,2,169,1,914,2,104,1,95,2,71,1,1495,}, + {1,1248,2,169,1,914,2,104,1,95,2,71,1,1495,}, + {1,1248,2,167,1,916,2,104,1,95,2,71,1,1495,}, + {1,1248,2,166,1,917,2,104,1,95,2,71,1,1495,}, + {1,1248,2,166,1,917,2,104,1,95,2,71,1,1495,}, + {1,1248,2,166,1,917,2,104,1,95,2,71,1,1495,}, + {1,1248,2,166,1,917,2,104,1,95,2,71,1,1495,}, + {1,1248,2,166,1,917,2,97,1,1,2,5,1,96,2,71,1,1495,}, + {1,1248,2,166,1,917,2,95,1,104,2,69,1,1497,}, + {1,1248,2,166,1,917,2,94,1,105,2,68,1,1498,}, + {1,1248,2,166,1,917,2,94,1,105,2,68,1,1498,}, + {1,1248,2,166,1,917,2,94,1,105,2,66,1,1500,}, + {1,1248,2,166,1,917,2,94,1,105,2,65,1,1501,}, + {1,1248,2,166,1,917,2,94,1,105,2,65,1,1501,}, + {1,1248,2,166,1,917,2,94,1,105,2,63,1,1503,}, + {1,1248,2,166,1,917,2,94,1,105,2,62,1,1504,}, + {1,1248,2,166,1,916,2,95,1,105,2,61,1,1505,}, + {1,1248,2,166,1,915,2,95,1,106,2,61,1,1505,}, + {1,1246,2,168,1,914,2,95,1,107,2,61,1,1505,}, + {1,1245,2,169,1,913,2,95,1,108,2,61,1,1505,}, + {1,1245,2,169,1,912,2,96,1,108,2,61,1,1505,}, + {1,1245,2,169,1,910,2,98,1,108,2,61,1,1505,}, + {1,1245,2,169,1,910,2,98,1,108,2,61,1,1505,}, + {1,1244,2,170,1,909,2,99,1,108,2,61,1,1505,}, + {1,1244,2,170,1,907,2,99,1,110,2,61,1,1505,}, + {1,1242,2,172,1,907,2,98,1,111,2,61,1,1505,}, + {1,1241,2,173,1,907,2,98,1,111,2,61,1,1505,}, + {1,1240,2,174,1,907,2,96,1,113,2,61,1,1505,}, + {1,1239,2,174,1,908,2,95,1,114,2,61,1,1505,}, + {1,1238,2,173,1,910,2,94,1,115,2,61,1,1505,}, + {1,1238,2,173,1,910,2,93,1,116,2,61,1,1505,}, + {1,1238,2,172,1,911,2,92,1,117,2,61,1,1505,}, + {1,1238,2,170,1,913,2,91,1,117,2,62,1,1505,}, + {1,1238,2,169,1,914,2,91,1,116,2,63,1,1505,}, + {1,1238,2,169,1,914,2,91,1,115,2,64,1,1505,}, + {1,1238,2,167,1,916,2,91,1,115,2,64,1,1505,}, + {1,1238,2,166,1,917,2,91,1,115,2,64,1,1505,}, + {1,1238,2,166,1,917,2,91,1,115,2,64,1,1505,}, + {1,1238,2,166,1,917,2,91,1,115,2,64,1,1505,}, + {1,1238,2,166,1,917,2,91,1,115,2,64,1,1505,}, + {1,1238,2,166,1,917,2,86,1,120,2,64,1,1505,}, + {1,1238,2,166,1,917,2,85,1,121,2,64,1,1505,}, + {1,1238,2,166,1,917,2,85,1,120,2,65,1,1505,}, + {1,1238,2,166,1,917,2,84,1,119,2,67,1,1505,}, + {1,1238,2,166,1,917,2,82,1,120,2,68,1,1505,}, + {1,1238,2,166,1,917,2,81,1,121,2,68,1,1505,}, + {1,1238,2,166,1,916,2,82,1,120,2,69,1,1505,}, + {1,1238,2,166,1,914,2,84,1,118,2,71,1,1505,}, + {1,1238,2,166,1,914,2,84,1,118,2,71,1,1505,}, + {1,1238,2,166,1,913,2,85,1,118,2,71,1,1505,}, + {1,1238,2,166,1,908,2,90,1,118,2,66,1,1510,}, + {1,1238,2,166,1,907,2,91,1,118,2,65,1,1511,}, + {1,1238,2,166,1,907,2,91,1,118,2,65,1,1511,}, + {1,1238,2,166,1,907,2,91,1,118,2,64,1,1512,}, + {1,1238,2,166,1,907,2,91,1,118,2,62,1,1514,}, + {1,1238,2,166,1,907,2,91,1,118,2,62,1,1514,}, + {1,1238,2,166,1,907,2,91,1,118,2,61,1,1515,}, + {1,1238,2,166,1,907,2,91,1,118,2,61,1,1515,}, + {1,1238,2,166,1,907,2,91,1,118,2,61,1,1515,}, + {1,1238,2,166,1,908,2,84,1,2,2,4,1,118,2,61,1,1515,}, + {1,1238,2,166,1,907,2,82,1,127,2,61,1,1515,}, + {1,1238,2,164,1,910,2,81,1,127,2,61,1,1515,}, + {1,1238,2,163,1,911,2,80,1,128,2,61,1,1515,}, + {1,1238,2,163,1,910,2,81,1,128,2,61,1,1515,}, + {1,1238,2,162,1,911,2,81,1,128,2,61,1,1515,}, + {1,1238,2,160,1,913,2,81,1,128,2,61,1,1515,}, + {1,1238,2,160,1,911,2,83,1,128,2,61,1,1515,}, + {1,1238,2,159,1,911,2,84,1,128,2,61,1,1515,}, + {1,1238,2,157,1,912,2,85,1,128,2,61,1,1515,}, + {1,1238,2,156,1,913,2,82,1,1,2,2,1,128,2,61,1,1515,}, + {1,1238,2,156,1,908,2,85,1,133,2,61,1,1515,}, + {1,1238,2,156,1,908,2,84,1,134,2,62,1,1514,}, + {1,1238,2,156,1,908,2,84,1,134,2,61,1,1515,}, + {1,1238,2,156,1,908,2,82,1,136,2,59,1,1517,}, + {1,1238,2,156,1,908,2,81,1,137,2,58,1,1518,}, + {1,1238,2,156,1,908,2,81,1,137,2,58,1,1518,}, + {1,1238,2,156,1,908,2,81,1,137,2,58,1,1518,}, + {1,1238,2,156,1,907,2,82,1,137,2,58,1,1518,}, + {1,1238,2,156,1,907,2,82,1,137,2,58,1,1518,}, + {1,1238,2,156,1,905,2,83,1,138,2,58,1,1518,}, + {1,1238,2,156,1,904,2,82,1,140,2,58,1,1518,}, + {1,1238,2,156,1,904,2,82,1,140,2,58,1,1518,}, + {1,1238,2,156,1,904,2,81,1,139,2,60,1,1518,}, + {1,1238,2,156,1,904,2,79,1,140,2,61,1,1518,}, + {1,1238,2,156,1,904,2,79,1,140,2,61,1,1518,}, + {1,1238,2,156,1,904,2,78,1,141,2,61,1,1518,}, + {1,1238,2,156,1,904,2,76,1,143,2,61,1,1518,}, + {1,1238,2,156,1,904,2,75,1,143,2,62,1,1518,}, + {1,1238,2,156,1,904,2,75,1,143,2,62,1,1518,}, + {1,1237,2,157,1,899,2,1,1,2,2,77,1,138,2,1,1,2,2,64,1,1518,}, + {1,1235,2,159,1,898,2,81,1,137,2,68,1,1518,}, + {1,1235,2,159,1,897,2,82,1,137,2,68,1,1518,}, + {1,1235,2,159,1,896,2,83,1,137,2,64,1,1522,}, + {1,1235,2,158,1,895,2,85,1,137,2,62,1,1524,}, + {1,1235,2,157,1,896,2,85,1,137,2,62,1,1524,}, + {1,1235,2,156,1,898,2,84,1,137,2,62,1,1524,}, + {1,1233,2,158,1,898,2,81,1,140,2,62,1,1524,}, + {1,1232,2,157,1,899,2,82,1,140,2,62,1,1524,}, + {1,1231,2,157,1,901,2,81,1,140,2,61,1,1525,}, + {1,1230,2,158,1,901,2,81,1,140,2,61,1,1525,}, + {1,1229,2,157,1,902,2,81,1,141,2,62,1,1524,}, + {1,1228,2,157,1,903,2,82,1,140,2,61,1,1525,}, + {1,1229,2,156,1,901,2,79,1,145,2,62,1,1524,}, + {1,1229,2,156,1,894,2,85,1,146,2,62,1,1524,}, + {1,1229,2,156,1,894,2,84,1,147,2,62,1,1524,}, + {1,1229,2,155,1,895,2,83,1,146,2,63,1,1525,}, + {1,1229,2,155,1,895,2,82,1,146,2,62,1,1527,}, + {1,1229,2,155,1,895,2,81,1,147,2,62,1,1527,}, + {1,1229,2,155,1,895,2,81,1,1,4,1,1,145,2,61,1,1528,}, + {1,1229,2,155,1,895,2,81,1,147,2,61,1,1528,}, + {1,1229,2,155,1,895,2,81,1,147,2,62,1,1527,}, + {1,1229,2,155,1,894,2,82,1,146,2,62,1,1528,}, + {1,1229,2,155,1,885,2,85,1,150,2,64,1,1528,}, + {1,1229,2,155,1,885,2,85,1,150,2,64,1,1528,}, + {1,1229,2,155,1,885,2,84,1,151,2,64,1,1528,}, + {1,1228,2,157,1,884,2,83,1,152,2,64,1,1528,}, + {1,1227,2,157,1,885,2,82,1,153,2,64,1,1528,}, + {1,1227,2,157,1,885,2,81,1,153,2,65,1,1528,}, + {1,1226,2,158,1,885,2,81,1,152,2,66,1,1528,}, + {1,1226,2,158,1,885,2,81,1,150,2,69,1,1527,}, + {1,1225,2,160,1,884,2,81,1,150,2,68,1,1528,}, + {1,1225,2,160,1,883,2,82,1,149,2,69,1,1528,}, + {1,1224,2,160,1,876,2,84,1,124,2,99,1,1529,}, + {1,1219,2,163,1,877,2,85,1,123,2,99,1,1530,}, + {1,1218,2,164,1,877,2,85,1,123,2,98,1,1531,}, + {1,1219,2,162,1,878,2,82,1,124,2,98,1,1533,}, + {1,1219,2,160,1,881,2,81,1,124,2,97,1,1534,}, + {1,1219,2,159,1,881,2,81,1,125,2,97,1,1534,}, + {1,1219,2,159,1,881,2,81,1,125,2,97,1,1534,}, + {1,1219,2,159,1,881,2,81,1,124,2,98,1,1534,}, + {1,1218,2,160,1,881,2,81,1,124,2,98,1,1534,}, + {1,1218,2,160,1,880,2,82,1,123,2,98,1,1535,}, + {1,1217,2,160,1,875,2,88,1,118,2,102,1,1536,}, + {1,1215,2,161,1,876,2,88,1,118,2,101,1,1537,}, + {1,1216,2,159,1,876,2,89,1,117,2,102,1,1537,}, + {1,1216,2,159,1,871,2,89,1,120,2,103,1,1538,}, + {1,1215,2,160,1,871,2,88,1,121,2,103,1,1538,}, + {1,1215,2,160,1,871,2,88,1,121,2,103,1,1538,}, + {1,1215,2,160,1,871,2,86,1,123,2,103,1,1538,}, + {1,1212,2,163,1,871,2,85,1,124,2,103,1,1538,}, + {1,1212,2,163,1,871,2,84,1,124,2,104,1,1538,}, + {1,1212,2,163,1,869,2,86,1,123,2,105,1,1538,}, + {1,1210,2,165,1,868,2,87,1,118,2,110,1,1538,}, + {1,1205,2,170,1,867,2,88,1,117,2,111,1,1538,}, + {1,1205,2,170,1,866,2,89,1,116,2,112,1,1538,}, + {1,1204,2,170,1,862,2,94,1,115,2,113,1,1538,}, + {1,1192,2,180,1,864,2,94,1,115,2,114,1,1537,}, + {1,1192,2,180,1,863,2,95,1,115,2,113,1,1538,}, + {1,1175,2,2,1,14,2,180,1,862,2,97,1,115,2,108,1,1543,}, + {1,1170,2,12,1,7,2,182,1,862,2,97,1,115,2,107,1,1544,}, + {1,1169,2,14,1,6,2,182,1,861,2,98,1,114,2,108,1,1544,}, + {1,1169,2,14,1,5,2,183,1,859,2,99,1,110,2,2,1,1,2,110,1,1544,}, + {1,1164,2,21,1,1,2,185,1,858,2,99,1,110,2,114,1,1544,}, + {1,1163,2,208,1,858,2,98,1,110,2,115,1,1544,}, + {1,1163,2,208,1,857,2,95,1,120,2,108,1,1545,}, + {1,1161,2,210,1,794,2,156,1,124,2,104,1,1547,}, + {1,1143,2,228,1,794,2,156,1,124,2,104,1,1547,}, + {1,1144,2,227,1,794,2,156,1,124,2,104,1,1547,}, + {1,1144,2,227,1,794,2,156,1,124,2,104,1,1547,}, + {1,1144,2,227,1,794,2,156,1,124,2,104,1,1547,}, + {1,1144,2,227,1,794,2,155,1,125,2,104,1,1547,}, + {1,1144,2,227,1,794,2,154,1,126,2,104,1,1547,}, + {1,1144,2,227,1,794,2,153,1,127,2,104,1,1547,}, + {1,1143,2,228,1,793,2,153,1,128,2,104,1,1547,}, + {1,1143,2,228,1,791,2,150,1,133,2,99,1,1552,}, + {1,1134,2,3,1,2,2,231,1,791,2,151,1,133,2,98,1,1553,}, + {1,1134,2,235,1,792,2,150,1,134,2,97,1,1554,}, + {1,1134,2,234,1,792,2,150,1,135,2,96,1,1555,}, + {1,1134,2,233,1,791,2,150,1,137,2,95,1,1556,}, + {1,1134,2,232,1,792,2,150,1,137,2,94,1,1557,}, + {1,1134,2,231,1,791,2,152,1,137,2,94,1,1557,}, + {1,1134,2,231,1,790,2,153,1,137,2,94,1,1557,}, + {1,1134,2,231,1,790,2,153,1,137,2,94,1,1557,}, + {1,1134,2,231,1,790,2,152,1,138,2,94,1,1557,}, + {1,1134,2,231,1,790,2,147,1,1794,}, + {1,1134,2,229,1,792,2,147,1,1794,}, + {1,1134,2,228,1,793,2,146,1,1795,}, + {1,1134,2,228,1,793,2,145,1,1796,}, + {1,1134,2,228,1,793,2,143,1,1798,}, + {1,1134,2,228,1,793,2,143,1,1798,}, + {1,1134,2,228,1,793,2,143,1,1798,}, + {1,1134,2,228,1,793,2,143,1,1798,}, + {1,1134,2,228,1,793,2,143,1,1798,}, + {1,1134,2,228,1,793,2,143,1,1798,}, + {1,1134,2,227,1,794,2,141,1,1800,}, + {1,1134,2,222,1,799,2,140,1,1801,}, + {1,1134,2,222,1,799,2,140,1,1801,}, + {1,1134,2,221,1,806,2,128,1,1807,}, + {1,1134,2,219,1,808,2,127,1,1808,}, + {1,1134,2,218,1,809,2,127,1,1808,}, + {1,1134,2,218,1,809,2,127,1,1808,}, + {1,1134,2,218,1,809,2,127,1,1808,}, + {1,1134,2,218,1,809,2,127,1,1808,}, + {1,1134,2,218,1,810,2,126,1,1808,}, + {1,1148,2,203,1,813,2,124,1,1808,}, + {1,1149,2,200,1,816,2,123,1,1808,}, + {1,1150,2,199,1,816,2,123,1,1808,}, + {1,1151,2,4,1,1,2,72,1,3,2,3,1,1,2,113,1,817,2,117,1,1814,}, + {1,1169,2,24,1,44,2,106,1,822,2,117,1,1814,}, + {1,1169,2,24,1,45,2,104,1,823,2,117,1,1814,}, + {1,1170,2,22,1,46,2,104,1,823,2,115,1,1816,}, + {1,1238,2,104,1,823,2,114,1,1817,}, + {1,1238,2,104,1,823,2,113,1,1818,}, + {1,1238,2,104,1,823,2,113,1,1818,}, + {1,1238,2,104,1,823,2,113,1,1818,}, + {1,1238,2,104,1,823,2,113,1,1818,}, + {1,1238,2,104,1,2754,}, + {1,1246,2,82,1,2768,}, + {1,1247,2,80,1,2769,}, + {1,1248,2,78,1,2770,}, + {1,1248,2,78,1,2770,}, + {1,1248,2,75,1,2773,}, + {1,1248,2,75,1,2773,}, + {1,1248,2,75,1,2773,}, + {1,1248,2,74,1,2774,}, + {1,1248,2,74,1,2774,}, + {1,1248,2,74,1,2774,}, + {1,1248,2,75,1,2773,}, + {1,1248,2,75,1,2773,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, +} +} \ No newline at end of file diff --git a/maps/fish_defender_v2/fish_defender_layout.lua b/maps/fish_defender_v2/fish_defender_layout.lua new file mode 100644 index 00000000..4da3e39d --- /dev/null +++ b/maps/fish_defender_v2/fish_defender_layout.lua @@ -0,0 +1,2054 @@ +return { +height = 2048, +width = 4096, +data = { + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,2437,2,3,1,1656,}, + {1,2437,2,6,1,82,2,25,1,1546,}, + {1,2437,2,16,1,65,2,38,1,1540,}, + {1,2437,2,17,1,62,2,41,1,1539,}, + {1,2437,2,4,1,2,2,13,1,56,2,16,1,19,2,14,1,1535,}, + {1,2437,2,5,1,1,2,15,1,50,2,18,1,24,2,14,1,1532,}, + {1,2439,2,3,1,12,2,5,1,49,2,7,1,42,2,8,1,1531,}, + {1,2439,2,4,1,12,2,5,1,44,2,10,1,20,2,8,1,18,2,8,1,1528,}, + {1,2440,2,4,1,11,2,6,1,41,2,10,1,13,2,25,1,10,2,10,1,1526,}, + {1,2440,2,4,1,13,2,5,1,40,2,4,1,18,2,27,1,14,2,5,1,1526,}, + {1,2442,2,3,1,13,2,5,1,36,2,7,1,9,2,42,1,9,2,7,1,1523,}, + {1,2442,2,4,1,13,2,6,1,33,2,7,1,9,2,45,1,8,2,7,1,1522,}, + {1,2443,2,4,1,13,2,5,1,32,2,5,1,11,2,8,1,31,2,8,1,10,2,5,1,1521,}, + {1,2443,2,4,1,14,2,5,1,29,2,5,1,8,2,11,1,35,2,10,1,7,2,6,1,1519,}, + {1,2444,2,3,1,15,2,5,1,27,2,6,1,7,2,10,1,39,2,9,1,7,2,6,1,1518,}, + {1,2445,2,2,1,16,2,5,1,25,2,4,1,10,2,5,1,48,2,5,1,9,2,5,1,1517,}, + {1,2445,2,4,1,6,2,4,1,5,2,5,1,23,2,5,1,6,2,8,1,50,2,8,1,6,2,5,1,1516,}, + {1,2446,2,4,1,5,2,6,1,4,2,5,1,21,2,5,1,6,2,8,1,52,2,8,1,5,2,7,1,1514,}, + {1,2446,2,4,1,4,2,7,1,5,2,5,1,19,2,4,1,7,2,5,1,60,2,4,1,7,2,5,1,1514,}, + {1,2447,2,3,1,5,2,7,1,5,2,4,1,18,2,5,1,5,2,6,1,61,2,6,1,6,2,6,1,1512,}, + {1,2448,2,3,1,4,2,7,1,6,2,5,1,16,2,4,1,5,2,6,1,63,2,6,1,6,2,6,1,1511,}, + {1,2448,2,4,1,5,2,6,1,6,2,4,1,16,2,2,1,7,2,4,1,68,2,3,1,8,2,4,1,1511,}, + {1,2448,2,5,1,4,2,8,1,4,2,5,1,13,2,4,1,5,2,5,1,70,2,5,1,6,2,5,1,1509,}, + {1,2449,2,4,1,4,2,8,1,5,2,5,1,12,2,4,1,4,2,5,1,71,2,5,1,7,2,5,1,1508,}, + {1,2449,2,4,1,4,2,4,1,2,2,2,1,7,2,4,1,10,2,5,1,4,2,4,1,75,2,3,1,7,2,4,1,1508,}, + {1,2449,2,4,1,4,2,5,1,1,2,4,1,5,2,5,1,9,2,4,1,4,2,4,1,76,2,5,1,5,2,6,1,1506,}, + {1,2451,2,2,1,4,2,5,1,1,2,5,1,5,2,4,1,9,2,3,1,4,2,4,1,58,2,3,1,17,2,4,1,7,2,4,1,1506,}, + {1,2451,2,2,1,4,2,5,1,3,2,3,1,7,2,3,1,8,2,2,1,5,2,4,1,56,2,7,1,17,2,3,1,6,2,5,1,1505,}, + {1,2451,2,3,1,4,2,4,1,3,2,5,1,5,2,4,1,6,2,3,1,4,2,5,1,47,2,20,1,13,2,5,1,5,2,5,1,1504,}, + {1,2451,2,4,1,3,2,4,1,4,2,4,1,6,2,4,1,4,2,4,1,4,2,3,1,48,2,21,1,14,2,4,1,6,2,5,1,1503,}, + {1,2451,2,4,1,4,2,3,1,5,2,4,1,7,2,3,1,3,2,4,1,4,2,2,1,48,2,7,1,11,2,5,1,15,2,3,1,6,2,5,1,1502,}, + {1,2451,2,5,1,4,2,2,1,5,2,6,1,5,2,4,1,2,2,4,1,2,2,4,1,45,2,10,1,12,2,6,1,13,2,5,1,4,2,5,1,1502,}, + {1,2451,2,5,1,4,2,2,1,7,2,4,1,5,2,5,1,1,2,4,1,2,2,4,1,43,2,8,1,17,2,5,1,14,2,4,1,6,2,4,1,1501,}, + {1,2452,2,4,1,4,2,2,1,7,2,5,1,6,2,8,1,1,2,4,1,44,2,4,1,24,2,3,1,15,2,2,1,7,2,4,1,1500,}, + {1,2452,2,4,1,4,2,3,1,7,2,5,1,5,2,8,1,1,2,4,1,43,2,5,1,16,2,3,1,5,2,5,1,13,2,4,1,5,2,5,1,1499,}, + {1,2452,2,4,1,4,2,3,1,8,2,5,1,5,2,11,1,44,2,5,1,14,2,6,1,5,2,4,1,13,2,5,1,5,2,4,1,1499,}, + {1,2452,2,4,1,4,2,4,1,8,2,5,1,5,2,9,1,45,2,4,1,15,2,7,1,6,2,3,1,14,2,3,1,7,2,2,1,1499,}, + {1,2452,2,4,1,4,2,4,1,8,2,6,1,5,2,8,1,45,2,5,1,13,2,9,1,5,2,5,1,13,2,4,1,5,2,4,1,1497,}, + {1,2453,2,3,1,4,2,4,1,10,2,5,1,7,2,5,1,45,2,5,1,13,2,10,1,5,2,4,1,13,2,5,1,4,2,4,1,1497,}, + {1,2453,2,3,1,4,2,4,1,11,2,5,1,7,2,4,1,45,2,5,1,13,2,10,1,6,2,4,1,13,2,4,1,4,2,5,1,1496,}, + {1,2453,2,3,1,4,2,4,1,11,2,6,1,6,2,4,1,46,2,8,1,10,2,9,1,7,2,4,1,12,2,5,1,4,2,4,1,1496,}, + {1,2454,2,2,1,4,2,4,1,13,2,5,1,5,2,4,1,46,2,9,1,12,2,5,1,8,2,5,1,13,2,4,1,4,2,4,1,1495,}, + {1,2454,2,2,1,4,2,4,1,14,2,5,1,4,2,4,1,48,2,11,1,22,2,4,1,13,2,4,1,5,2,4,1,1494,}, + {1,2454,2,2,1,4,2,4,1,14,2,14,1,48,2,14,1,18,2,5,1,12,2,5,1,4,2,4,1,1494,}, + {1,2454,2,2,1,4,2,4,1,16,2,12,1,53,2,10,1,19,2,3,1,14,2,3,1,4,2,4,1,1494,}, + {1,2454,2,2,1,4,2,4,1,8,4,1,1,9,2,10,1,56,2,11,1,15,2,3,1,15,2,3,1,4,2,4,1,1493,}, + {1,2454,2,2,1,4,2,4,1,19,2,8,1,58,2,13,1,12,2,3,1,15,2,4,1,4,2,3,1,1493,}, + {1,2454,2,2,1,4,2,4,1,90,2,9,1,10,2,3,1,17,2,4,1,3,2,3,1,1493,}, + {1,2454,2,2,1,4,2,4,1,93,2,19,1,18,2,4,1,3,2,3,1,1492,}, + {1,2454,2,2,1,4,2,4,1,94,2,18,1,19,2,4,1,2,2,4,1,1491,}, + {1,2453,2,3,1,4,2,4,1,101,2,10,1,20,2,5,1,1,2,4,1,1491,}, + {1,2453,2,3,1,4,2,4,1,103,2,6,1,23,2,9,1,1491,}, + {1,2452,4,1,2,3,1,4,2,4,1,105,2,3,1,25,2,8,1,1491,}, + {1,2452,2,4,1,4,2,4,1,134,2,7,1,1491,}, + {1,2452,2,4,1,4,2,4,1,134,2,7,1,1491,}, + {1,2452,2,4,1,4,2,3,1,135,2,8,1,1490,}, + {1,2452,2,4,1,4,2,3,1,135,2,8,1,1490,}, + {1,2452,2,4,1,4,2,2,1,78,2,2,1,55,2,9,1,1490,}, + {1,2452,2,4,1,4,2,2,1,75,2,7,1,52,2,10,1,1490,}, + {1,2452,2,4,1,4,2,2,1,75,2,8,1,50,2,4,1,3,2,3,1,1491,}, + {1,2451,2,5,1,4,2,2,1,75,2,12,1,45,2,5,1,3,2,3,1,1491,}, + {1,2451,2,5,1,4,2,2,1,75,2,13,1,43,2,5,1,3,2,4,1,1491,}, + {1,2451,2,5,1,3,2,3,1,76,2,3,1,5,2,5,1,41,2,4,1,5,2,4,1,1491,}, + {1,2451,2,4,1,3,2,4,1,77,2,2,1,6,2,8,1,36,2,5,1,5,2,4,1,1491,}, + {1,2451,2,3,1,4,2,4,1,77,2,4,1,6,2,7,1,33,2,6,1,6,2,4,1,1491,}, + {1,2451,2,2,1,5,2,4,1,77,2,4,1,8,2,6,1,32,2,4,1,8,2,2,1,1493,}, + {1,2451,2,2,1,4,2,5,1,77,2,6,1,7,2,11,1,22,2,8,1,7,2,3,1,1493,}, + {1,2451,2,2,1,4,2,5,1,78,2,6,1,8,2,11,1,18,2,8,1,8,2,4,1,1493,}, + {1,2451,2,2,1,4,2,5,1,80,2,5,1,12,2,9,1,12,2,8,1,10,2,4,1,1494,}, + {1,2450,2,3,1,4,2,4,1,82,2,7,1,10,2,27,1,11,2,4,1,1494,}, + {1,2449,2,4,1,4,2,4,1,83,2,7,1,11,2,23,1,13,2,4,1,1494,}, + {1,2449,2,4,1,4,2,3,1,87,2,5,1,46,2,4,1,1494,}, + {1,2449,2,4,1,4,2,2,1,89,2,9,1,34,2,1,1,6,2,4,1,1494,}, + {1,2005,4,8,1,435,2,5,1,4,2,2,1,90,2,9,1,32,2,3,1,5,2,4,1,1494,}, + {1,2005,4,8,1,435,2,5,1,4,2,2,1,94,2,6,1,30,2,4,1,5,2,3,1,1495,}, + {1,2003,23,2,2,9,4,2,1,432,2,4,1,4,2,3,1,95,2,39,1,5,2,3,1,1495,}, + {1,2003,23,2,2,9,4,2,1,432,2,3,1,4,2,4,1,97,2,37,1,5,2,2,1,1496,}, + {1,2003,23,2,2,9,4,2,1,432,2,2,1,5,2,4,1,103,2,23,1,4,2,4,1,5,2,2,1,1496,}, + {1,1997,4,2,2,15,23,2,1,431,2,3,1,4,2,5,1,105,2,20,1,5,2,4,1,4,2,3,1,1496,}, + {1,1997,4,2,2,15,23,2,1,430,2,4,1,4,2,4,1,130,2,3,1,5,2,4,1,1496,}, + {1,1565,23,5,4,3,1,421,23,3,2,19,1,430,2,4,1,4,2,4,1,129,2,4,1,4,2,4,1,1497,}, + {1,1565,23,5,4,3,1,421,23,3,2,19,1,430,2,4,1,4,2,3,1,130,2,4,1,4,2,4,1,1497,}, + {1,1564,4,1,2,8,1,421,2,24,1,427,2,5,1,4,2,2,1,130,2,4,1,5,2,4,1,1497,}, + {1,1565,2,8,1,421,2,24,1,427,2,4,1,5,2,2,1,130,2,4,1,5,2,3,1,1498,}, + {1,1564,4,1,2,8,1,421,2,24,1,427,2,3,1,4,2,4,1,17,2,12,1,101,2,3,1,5,2,3,1,1499,}, + {1,1558,4,1,23,2,1,3,2,10,1,416,4,1,2,28,1,426,2,3,1,4,2,4,1,16,2,13,1,101,2,2,1,5,2,4,1,1499,}, + {1,1558,4,1,23,2,1,3,2,10,4,1,1,415,4,1,2,28,1,425,2,3,1,4,2,5,1,13,2,16,1,99,2,4,1,4,2,5,1,1499,}, + {1,1558,23,1,2,17,1,409,2,34,1,424,2,4,1,3,4,1,2,5,1,11,2,18,1,98,2,5,1,4,2,4,1,1500,}, + {1,1558,23,1,2,17,1,409,2,34,1,424,2,4,1,4,2,4,1,11,2,5,1,9,2,5,1,98,2,4,1,5,2,4,1,1500,}, + {1,1556,4,2,2,18,4,2,1,404,23,3,2,34,1,424,2,4,1,4,2,3,1,9,2,7,1,10,2,5,1,98,2,3,1,6,2,2,1,1502,}, + {1,1556,4,2,2,18,4,2,1,404,23,3,2,34,1,423,2,4,1,5,2,3,1,7,2,9,1,10,2,4,1,98,2,3,1,6,2,3,1,1502,}, + {1,1556,4,2,2,18,4,2,1,404,23,3,2,33,23,1,1,423,2,3,1,5,2,3,1,7,2,5,1,11,2,8,1,97,2,4,1,5,2,4,1,1502,}, + {1,1558,2,20,1,404,23,3,2,34,1,423,2,2,1,5,2,4,1,5,2,7,1,8,2,12,1,96,2,4,1,4,2,5,1,1502,}, + {1,1556,4,2,2,20,1,404,23,3,2,34,1,422,2,3,1,5,2,4,1,3,2,8,1,7,2,14,1,95,2,4,1,5,2,4,1,1503,}, + {1,1553,4,2,1,1,2,22,4,1,1,403,2,37,4,3,1,418,2,4,1,4,2,5,1,2,2,6,1,9,2,6,1,2,2,4,1,1,2,3,1,94,2,2,1,7,2,3,1,1504,}, + {1,1553,4,1,1,1,4,1,2,22,4,1,1,403,2,37,4,3,1,418,2,4,1,4,2,11,1,8,2,8,1,3,2,4,1,2,2,3,1,92,2,3,1,6,2,3,1,1505,}, + {1,1550,23,2,2,26,4,1,1,401,2,39,4,3,1,417,2,4,1,5,2,11,1,7,2,8,1,4,2,4,1,2,2,4,1,90,2,4,1,5,2,4,1,1505,}, + {1,1550,23,2,2,26,23,1,1,401,2,39,4,3,1,417,2,3,1,6,2,8,1,10,2,4,1,9,2,3,1,3,2,3,1,89,2,5,1,4,2,5,1,1505,}, + {1,1550,23,2,2,26,23,1,1,401,2,39,4,3,1,417,2,3,1,5,2,9,1,6,2,7,1,11,2,2,1,3,2,5,1,87,2,4,1,5,2,4,1,1506,}, + {1,1547,4,3,2,29,1,395,2,48,1,415,2,4,1,5,2,9,1,6,2,7,1,12,2,3,1,3,2,5,1,85,2,4,1,6,2,3,1,1507,}, + {1,1547,4,3,2,28,23,1,1,395,2,48,1,415,2,4,1,5,2,7,1,7,2,5,1,15,2,3,1,4,2,4,1,85,2,3,1,7,2,2,1,1508,}, + {1,1544,4,3,2,35,4,2,1,389,4,1,2,48,1,415,2,4,1,5,2,6,1,6,2,6,1,16,2,4,1,4,2,5,1,81,2,5,1,5,2,4,1,1508,}, + {1,1544,4,3,2,35,4,2,1,389,4,1,2,48,1,414,2,4,1,6,2,4,1,7,2,6,1,18,2,4,1,4,2,5,1,80,2,4,1,5,2,5,1,1508,}, + {1,1544,4,3,2,37,4,1,1,388,4,1,2,50,1,412,2,3,1,18,2,3,1,21,2,4,1,5,2,4,1,80,2,2,1,7,2,3,1,1510,}, + {1,1544,4,3,2,37,4,1,1,388,4,1,2,50,1,411,2,4,1,15,2,5,1,23,2,4,1,5,2,5,1,76,2,4,1,6,2,3,1,1511,}, + {1,1544,4,3,2,37,4,1,1,388,4,1,2,50,1,410,2,4,1,14,2,7,1,24,2,4,1,5,2,5,1,75,2,4,1,5,2,4,1,1511,}, + {1,1544,2,41,23,4,2,2,1,10,4,1,2,2,23,2,4,1,1,366,2,51,1,410,2,4,1,14,2,4,1,27,2,4,1,6,2,4,1,74,2,4,1,5,2,5,1,1511,}, + {1,1544,2,41,23,4,2,2,1,11,2,2,23,2,4,1,1,366,2,51,1,409,2,5,1,12,2,6,1,28,2,4,1,6,2,6,1,70,2,4,1,6,2,4,1,1512,}, + {1,1544,2,62,23,1,1,362,4,2,2,53,1,409,2,3,1,13,2,6,1,30,2,4,1,6,2,5,1,69,2,4,1,6,2,4,1,1513,}, + {1,1544,2,62,23,1,1,362,4,2,2,53,1,408,2,4,1,12,2,5,1,33,2,4,1,8,2,3,1,67,2,5,1,5,2,4,1,1514,}, + {1,1537,4,2,2,1,23,1,1,1,4,2,2,63,23,3,4,2,1,356,4,1,2,55,4,1,1,406,2,4,1,12,2,6,1,34,2,4,1,7,2,6,1,63,2,5,1,5,2,5,1,1514,}, + {1,1537,4,2,23,2,1,1,4,2,2,63,23,3,4,2,1,356,4,1,2,55,4,1,1,406,2,4,1,3,4,1,1,7,2,5,1,36,2,5,1,7,2,6,1,61,2,5,1,6,2,4,1,1515,}, + {1,1537,4,2,23,2,1,1,4,2,2,63,23,3,4,2,1,356,4,1,2,55,4,1,1,405,2,3,1,13,2,4,1,39,2,4,1,8,2,5,1,59,2,5,1,6,2,3,1,1517,}, + {1,1537,23,2,2,73,23,1,4,2,1,348,2,61,4,1,1,404,2,4,1,12,2,5,1,40,2,5,1,7,2,8,1,53,2,6,1,6,2,4,1,1517,}, + {1,1537,23,2,2,73,23,1,4,2,1,348,2,61,4,1,1,403,2,5,1,11,2,4,1,43,2,5,1,8,2,7,1,52,2,5,1,6,2,4,1,1518,}, + {1,1537,2,76,23,2,1,347,23,1,2,61,4,1,1,403,2,4,1,11,2,4,1,46,2,4,1,10,2,5,1,50,2,5,1,7,2,2,1,1520,}, + {1,1537,2,76,23,2,1,347,23,1,2,61,4,1,1,402,2,5,1,10,2,5,1,46,2,6,1,8,2,9,1,43,2,7,1,6,2,4,1,1520,}, + {1,1536,4,1,2,76,23,2,1,347,4,1,2,61,4,1,1,402,2,3,1,12,2,4,1,49,2,5,1,10,2,8,1,40,2,6,1,7,2,4,1,1521,}, + {1,1537,2,76,23,2,1,347,4,1,2,61,4,1,1,401,2,4,1,11,2,4,1,52,2,5,1,11,2,7,1,37,2,5,1,8,2,4,1,1522,}, + {1,1536,4,1,2,76,23,2,1,347,4,1,2,61,4,1,1,400,2,5,1,10,2,4,1,53,4,1,2,7,1,9,2,12,1,27,2,8,1,7,2,5,1,1523,}, + {1,1536,2,77,1,347,4,3,2,62,1,400,2,4,1,11,2,4,1,55,2,6,1,12,2,11,1,24,2,7,1,8,2,5,1,1524,}, + {1,1536,2,77,1,347,4,2,23,1,2,62,1,400,2,4,1,10,2,3,1,60,2,4,1,14,2,13,1,15,2,9,1,9,2,4,1,1526,}, + {1,1536,2,77,23,2,1,343,4,2,2,65,1,399,2,4,1,9,2,5,1,60,2,9,1,11,2,34,1,8,2,6,1,1526,}, + {1,1536,2,77,23,2,1,343,4,2,2,65,1,399,2,3,1,10,2,4,1,64,2,7,1,17,2,22,1,12,2,5,1,1528,}, + {1,1533,2,80,23,2,1,343,23,2,2,67,1,396,2,4,1,9,2,4,1,67,2,8,1,20,2,12,1,15,2,5,1,1529,}, + {1,1533,2,80,23,2,1,343,23,2,2,67,1,395,2,5,1,7,2,5,1,69,2,11,1,19,2,7,1,9,4,1,1,3,2,8,1,1530,}, + {1,1533,2,80,23,2,1,343,23,2,2,67,1,395,2,4,1,8,2,4,1,74,2,8,1,37,2,7,1,1532,}, + {1,1530,23,1,2,82,23,2,1,343,23,2,2,67,1,395,2,3,1,7,2,5,1,77,2,11,1,30,2,7,1,1534,}, + {1,1530,23,1,2,82,23,2,1,343,23,2,2,67,1,394,2,3,1,5,2,7,1,80,2,19,1,13,2,13,1,1535,}, + {1,1530,23,1,2,82,23,2,1,343,2,69,1,393,2,4,1,4,2,7,1,86,2,16,1,9,2,11,1,1539,}, + {1,1530,23,1,2,82,23,2,1,343,2,69,1,393,2,13,1,92,2,30,1,1541,}, + {1,1528,2,87,4,2,1,332,4,2,2,76,1,394,2,11,1,95,2,27,1,1542,}, + {1,1528,2,87,4,2,1,332,4,2,2,76,1,2069,}, + {1,1528,2,87,4,2,1,332,4,2,2,76,1,2069,}, + {1,1528,2,87,23,2,1,332,4,2,2,76,23,2,2,2,1,1,4,1,1,2063,}, + {1,1528,2,87,23,2,1,332,4,2,2,76,23,2,2,2,4,2,1,2063,}, + {1,1477,4,2,2,1,4,3,1,42,4,3,2,89,4,2,1,330,2,82,23,2,1,2063,}, + {1,1477,4,2,2,1,4,3,1,42,4,3,2,89,4,2,1,330,2,82,23,2,1,2063,}, + {1,1474,4,1,2,8,4,2,1,37,2,97,1,326,4,1,2,87,4,1,1,2062,}, + {1,1474,4,1,2,8,4,2,1,37,23,1,2,96,1,326,4,1,2,87,1,2063,}, + {1,1474,4,1,2,8,4,2,1,37,2,97,1,326,4,1,2,87,1,2063,}, + {1,1468,4,2,23,2,2,13,1,35,4,2,2,97,4,2,1,321,4,1,23,2,2,88,1,2063,}, + {1,1468,4,2,23,1,2,14,1,35,4,2,2,97,4,2,1,320,4,2,23,2,2,88,1,2063,}, + {1,1468,23,1,4,1,2,15,4,1,1,34,23,2,2,97,4,2,1,320,23,2,2,90,4,1,1,2062,}, + {1,1468,4,1,23,1,2,15,4,1,1,33,4,1,23,2,2,97,4,2,1,320,23,2,2,90,1,2063,}, + {1,1466,4,2,2,20,4,3,1,28,2,102,23,4,4,1,1,314,4,1,2,92,1,1,4,2,1,2060,}, + {1,1466,4,2,2,20,4,3,1,19,4,1,1,8,2,102,23,5,1,314,4,1,2,92,1,1,4,3,1,312,4,3,23,3,2,13,23,4,4,3,1,1721,}, + {1,1465,4,1,2,25,1,22,4,1,1,2,4,3,2,107,1,310,2,95,23,2,1,1,23,2,4,2,1,181,4,7,23,11,4,5,1,101,4,3,23,2,2,28,23,1,4,3,1,1716,}, + {1,1465,4,1,2,25,1,1,4,1,1,20,4,1,1,2,4,3,2,107,1,310,2,95,23,2,1,1,23,2,4,2,1,176,4,4,23,2,2,22,23,2,4,3,1,93,4,2,23,1,2,37,23,1,4,2,1,360,4,47,1,58,4,48,1,1200,}, + {1,1465,4,1,2,25,1,2,4,1,1,17,4,1,1,1,4,1,1,2,4,3,2,107,1,3,4,1,1,306,2,95,23,2,1,1,23,2,4,2,1,173,4,1,23,1,2,35,23,1,4,2,1,86,4,1,23,1,2,45,23,1,4,1,1,66,4,1,1,153,4,1,1,135,4,1,2,48,4,1,1,55,4,1,2,48,1,1200,}, + {1,1463,4,2,2,29,1,3,4,3,1,9,4,2,2,3,23,5,2,107,1,308,2,97,23,2,1,1,23,2,2,2,4,2,1,166,4,2,23,1,2,43,23,1,4,1,1,80,4,1,23,1,2,52,4,1,1,61,23,1,2,46,23,1,1,61,23,1,2,47,4,1,1,14,2,110,4,1,1,10,23,1,2,48,1,54,4,1,2,48,23,1,1,1200,}, + {1,1463,4,2,2,29,1,3,4,3,1,9,4,2,2,3,23,4,2,108,1,308,2,97,23,2,1,1,23,2,2,2,4,2,1,164,4,1,23,1,2,50,4,2,1,73,4,2,23,1,2,56,23,1,4,1,1,58,2,48,23,1,1,59,23,1,2,48,23,1,1,14,2,110,4,1,1,10,4,1,2,48,4,1,1,53,23,1,2,48,1,1201,}, + {1,1463,2,31,4,2,2,4,1,2,23,1,2,126,1,303,2,106,1,164,4,1,23,1,2,54,23,1,4,1,1,69,4,1,23,1,2,62,4,1,1,56,2,49,4,1,1,57,4,1,2,49,23,1,1,14,2,110,4,1,1,11,23,1,2,48,1,52,4,1,2,48,4,1,1,1201,}, + {1,1463,2,31,4,2,2,4,1,2,23,1,2,126,1,303,2,106,1,161,4,1,23,1,2,60,4,1,1,65,4,1,23,1,2,66,4,1,1,54,2,50,4,1,1,55,4,1,2,50,23,1,1,14,2,110,4,1,1,12,2,48,23,1,1,51,23,1,2,48,1,1202,}, + {1,1460,4,3,2,167,23,1,2,10,23,2,1,285,4,3,2,107,1,159,4,1,2,65,23,1,1,9,4,1,1,51,4,1,23,1,2,24,23,22,2,24,23,1,1,2,4,1,1,2,4,1,1,46,2,51,4,1,1,54,2,51,23,1,1,14,2,110,4,1,1,12,4,1,2,48,4,1,1,49,4,1,2,48,4,1,1,1202,}, + {1,1460,4,3,2,168,23,1,2,9,23,2,1,285,4,3,2,107,1,157,4,1,2,26,23,18,2,25,4,1,1,57,4,1,23,1,2,20,23,33,2,21,4,1,1,50,2,52,1,53,23,1,2,51,23,1,1,14,2,110,4,1,1,13,23,1,2,47,23,1,1,49,2,48,23,1,1,1203,}, + {1,1460,4,3,2,168,23,1,2,9,23,2,1,285,4,3,2,107,1,155,4,1,2,22,23,29,2,22,4,1,1,4,4,1,1,48,4,1,23,1,2,19,23,40,2,19,4,1,1,48,2,52,23,1,1,51,4,1,2,52,23,1,1,14,2,110,4,1,1,13,4,1,2,11,23,28,2,9,4,1,1,47,4,1,2,9,23,28,2,11,1,1204,}, + {1,1460,2,186,1,282,2,110,1,146,4,1,1,6,4,1,23,1,2,20,23,36,2,20,4,1,1,45,4,1,1,2,4,1,1,1,4,1,2,18,23,46,2,17,23,1,4,1,1,46,2,53,4,1,1,49,4,1,2,53,23,1,1,14,2,110,4,1,1,14,23,1,2,9,23,30,2,9,1,47,2,9,23,30,2,9,23,1,1,1204,}, + {1,1460,2,186,1,282,2,110,1,152,23,1,2,19,23,42,2,18,23,1,1,48,2,17,23,52,2,16,4,1,1,45,2,9,23,35,2,10,4,1,1,47,4,1,2,10,23,36,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,14,4,1,2,10,23,29,2,9,4,1,1,45,23,1,2,9,23,29,2,10,1,1205,}, + {1,1459,2,187,1,280,23,2,2,112,23,2,1,146,4,1,2,17,23,49,2,17,4,1,1,44,23,1,2,16,23,56,2,15,23,1,4,1,1,43,2,9,23,36,2,10,1,47,2,10,23,37,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,15,23,1,2,9,23,30,2,9,4,1,1,43,4,1,2,9,23,30,2,9,4,1,1,1205,}, + {1,1459,2,187,1,280,23,2,2,112,23,2,1,145,23,1,2,16,23,54,2,15,23,1,4,1,1,40,4,1,2,15,23,61,2,15,23,1,1,42,2,9,23,37,2,10,1,45,23,1,2,9,23,38,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,15,4,1,2,10,23,29,2,9,23,1,1,1,4,1,1,41,23,1,2,8,23,30,2,10,1,1206,}, + {1,1457,2,189,1,280,2,116,1,143,4,1,2,16,23,57,2,16,4,1,1,38,4,1,2,14,23,65,2,14,23,1,1,41,2,9,23,37,2,10,23,1,1,43,4,1,2,10,23,38,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,16,4,1,2,9,23,30,2,9,4,1,1,41,4,1,2,9,23,29,2,10,4,1,1,1206,}, + {1,1457,2,189,1,276,4,1,1,3,2,116,1,142,4,1,2,15,23,61,2,15,23,1,4,1,1,35,23,1,2,14,23,68,2,14,4,1,1,39,2,9,23,38,2,10,4,1,1,41,4,1,2,10,23,39,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,14,4,1,1,2,2,10,23,29,2,9,23,1,1,41,2,9,23,30,2,9,23,1,1,1207,}, + {1,1457,2,189,1,280,2,116,1,140,4,1,23,1,2,14,23,65,2,15,4,1,1,33,2,14,23,72,2,13,4,1,1,38,2,9,23,39,2,10,4,1,1,39,4,1,2,10,23,40,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,17,4,1,2,10,23,29,2,9,4,1,1,39,23,1,2,9,23,29,2,10,4,1,1,1207,}, + {1,1455,4,2,2,189,1,277,4,2,2,119,1,137,4,1,2,14,23,69,2,14,4,1,1,30,4,1,2,13,23,75,2,13,23,1,1,37,2,9,23,40,2,10,4,1,1,38,2,10,23,41,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,18,23,1,2,9,23,30,2,9,1,39,2,9,23,30,2,9,23,1,1,1208,}, + {1,1450,4,1,1,4,4,2,2,189,1,277,4,2,2,119,1,136,4,1,2,13,23,73,2,13,4,1,1,28,4,1,2,13,23,78,2,13,1,36,2,9,23,41,2,9,23,1,1,37,23,1,2,10,23,41,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,17,4,2,2,10,23,29,2,9,23,1,1,37,23,1,2,9,23,29,2,10,1,1209,}, + {1,1455,2,191,1,277,23,2,2,117,23,1,2,1,1,133,4,1,1,1,4,1,2,13,23,75,2,13,4,1,1,26,4,1,2,12,23,81,2,13,4,1,1,34,2,9,23,41,2,10,23,1,1,35,4,1,2,10,23,42,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,19,23,1,2,9,23,30,2,9,4,1,1,35,4,1,2,9,23,30,2,9,4,1,1,1209,}, + {1,1455,2,191,1,277,23,2,2,119,1,134,4,1,2,12,23,78,2,13,23,1,1,24,23,1,2,12,23,84,2,12,1,34,2,9,23,42,2,10,4,2,1,32,4,1,2,10,23,43,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,20,2,10,23,29,2,9,23,1,1,35,2,10,23,29,2,10,1,1210,}, + {1,1455,2,191,1,277,2,119,23,2,1,133,23,1,2,12,23,81,2,12,23,1,1,22,23,1,2,12,23,86,2,12,1,33,2,9,23,43,2,10,4,1,1,32,2,10,23,44,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,20,4,1,2,9,23,30,2,9,4,1,1,33,4,1,2,9,23,29,2,10,4,1,1,1210,}, + {1,1455,2,191,1,277,2,119,23,2,1,132,23,1,2,12,23,83,2,11,23,1,1,21,23,1,2,11,23,89,2,12,1,32,2,9,23,44,2,10,4,1,1,30,2,10,23,45,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,21,2,10,23,30,2,9,1,33,2,9,23,30,2,9,23,1,1,1211,}, + {1,1455,2,191,1,277,2,119,23,2,1,131,4,1,2,12,23,85,2,10,4,1,1,20,4,1,2,11,23,91,2,12,1,31,2,9,23,44,2,10,23,1,1,29,23,1,2,10,23,45,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,21,4,1,2,10,23,29,2,9,4,1,1,31,23,1,2,9,23,29,2,10,4,1,1,1211,}, + {1,1454,23,1,2,188,23,1,2,2,1,275,4,2,2,122,23,2,1,127,4,1,2,11,23,86,2,10,4,1,1,20,4,1,2,11,23,93,2,12,1,30,2,9,23,45,2,10,23,1,1,27,23,1,2,10,23,46,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,22,23,1,2,9,23,30,2,9,4,1,1,29,4,1,2,9,23,30,2,9,23,1,1,1212,}, + {1,1454,23,1,2,188,23,1,2,2,1,275,4,2,2,121,23,3,1,126,23,1,2,11,23,86,2,10,23,1,1,20,4,1,2,11,23,95,2,11,23,1,1,29,2,9,23,46,2,10,4,1,1,25,4,1,2,10,23,47,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,22,4,1,2,10,23,29,2,9,23,1,1,29,23,1,2,9,23,29,2,10,1,1213,}, + {1,1454,2,192,1,273,4,2,2,126,4,3,1,122,4,1,2,11,23,87,2,10,1,16,4,1,1,3,4,1,2,11,23,97,2,11,23,1,1,28,2,9,23,47,2,10,4,1,1,23,4,1,2,10,23,48,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,23,4,1,2,9,23,30,2,9,4,1,1,27,4,1,2,9,23,30,2,9,4,1,1,1213,}, + {1,1454,2,192,1,273,4,2,2,126,4,3,1,121,4,1,2,11,23,87,2,10,4,1,1,20,23,1,2,10,23,99,2,11,4,1,1,27,2,9,23,48,2,10,4,1,1,21,4,1,23,1,2,10,23,48,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,24,2,10,23,29,2,9,23,1,1,27,23,1,2,9,23,29,2,9,23,1,1,1214,}, + {1,1451,23,3,2,192,1,271,2,130,4,3,1,120,4,1,2,11,23,87,2,10,4,1,1,20,23,1,2,10,23,102,2,10,4,1,1,26,2,9,23,48,2,10,23,1,1,21,23,1,2,10,23,49,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,24,4,1,2,9,23,30,2,9,4,1,1,25,4,1,2,9,23,29,2,10,4,1,1,1214,}, + {1,1451,23,3,2,192,1,271,2,130,4,3,1,120,2,11,23,87,2,10,23,1,1,20,4,1,2,10,23,103,2,11,1,26,2,9,23,49,2,10,4,1,1,19,4,1,2,10,23,50,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,25,2,10,23,29,2,10,1,25,2,10,23,29,2,9,23,1,1,1215,}, + {1,1451,23,3,2,192,1,271,2,130,4,3,1,119,23,1,2,10,23,87,2,11,1,20,4,1,2,10,23,105,2,10,23,1,1,25,2,9,23,50,2,10,4,1,1,17,4,1,2,10,23,51,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,25,4,1,2,10,23,29,2,9,4,1,1,23,23,1,2,9,23,29,2,10,4,1,1,1215,}, + {1,1448,4,1,2,194,4,3,1,271,2,130,23,3,1,118,4,1,2,10,23,88,2,10,4,1,1,19,4,1,2,10,23,107,2,10,23,1,1,24,2,9,23,51,2,10,4,2,1,14,4,1,2,10,23,52,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,26,23,1,2,9,23,30,2,9,4,1,1,2,4,1,1,19,2,9,23,30,2,9,23,1,1,1216,}, + {1,1448,4,1,2,194,4,3,1,271,2,130,23,3,1,117,4,1,2,10,23,88,2,10,4,1,1,20,23,1,2,10,23,108,2,10,4,1,1,23,2,9,23,51,2,11,1,15,2,11,23,52,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,26,4,1,2,10,23,29,2,9,23,1,1,21,23,1,2,9,23,29,2,10,1,1217,}, + {1,1448,4,1,2,197,1,271,2,133,1,117,23,1,2,9,23,88,2,10,23,1,1,20,4,1,2,10,23,110,2,9,23,1,1,23,2,9,23,52,2,10,23,1,1,13,23,1,2,10,23,53,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,27,23,1,2,9,23,30,2,9,4,1,1,19,4,1,2,9,23,29,2,10,4,1,1,1217,}, + {1,1448,4,1,2,197,23,1,1,267,2,136,1,116,4,1,2,10,23,49,2,10,23,28,2,10,23,1,1,21,2,10,23,112,2,9,4,1,1,22,2,9,23,53,2,10,23,1,1,11,4,1,2,10,23,54,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,28,2,10,23,29,2,10,1,19,23,1,2,9,23,29,2,10,4,1,1,1217,}, + {1,1448,4,1,2,197,23,1,1,267,2,136,1,115,4,1,2,10,23,44,2,21,23,23,2,10,1,21,23,1,2,9,23,55,2,1,23,57,2,10,4,1,1,21,2,9,23,54,2,10,4,2,1,8,4,1,2,10,23,55,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,28,4,1,2,9,23,30,2,9,4,1,1,17,23,1,2,9,23,29,2,10,4,1,1,1218,}, + {1,1448,4,1,2,197,23,1,1,267,2,136,1,115,23,1,2,9,23,42,2,27,23,19,2,10,4,1,1,20,4,1,2,9,23,49,2,18,23,48,2,9,23,1,1,21,2,9,23,55,2,10,1,8,4,1,2,10,23,56,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,29,2,10,23,29,2,10,1,16,4,1,2,9,23,30,2,9,23,1,1,1219,}, + {1,1449,2,198,1,264,4,1,2,139,1,1,4,1,1,111,4,1,2,9,23,41,2,33,23,14,2,10,4,1,1,21,23,1,2,9,23,44,2,28,23,44,2,9,4,1,1,20,2,9,23,55,2,11,1,7,2,11,23,56,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,29,4,1,2,9,23,30,2,9,23,1,1,15,23,1,2,9,23,29,2,10,1,1220,}, + {1,1448,4,1,2,198,1,262,4,1,1,2,2,139,1,113,2,10,23,38,2,38,23,11,2,10,23,1,1,21,4,1,2,9,23,42,2,34,23,42,2,9,1,20,2,9,23,56,2,10,23,1,1,5,23,1,2,10,23,57,2,8,23,1,1,14,2,8,23,22,2,80,1,31,23,1,2,9,23,30,2,9,4,1,1,13,4,1,2,9,23,30,2,9,23,1,1,1220,}, + {1,1446,23,2,2,199,1,259,23,2,2,145,1,110,4,1,2,9,23,37,2,42,23,8,2,11,4,1,1,21,2,10,23,40,2,38,23,40,2,9,4,1,1,19,2,9,23,57,2,10,23,1,1,3,4,1,2,10,23,58,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,30,4,1,2,10,23,29,2,9,23,1,1,13,23,1,2,9,23,29,2,10,1,3,4,1,1,1217,}, + {1,1446,23,2,2,198,23,1,1,259,23,1,4,1,2,145,1,109,4,1,2,9,23,36,2,46,23,6,2,10,4,1,1,21,4,1,2,9,23,39,2,42,23,39,2,9,1,19,2,9,23,58,2,10,4,1,1,1,4,1,2,10,23,59,2,8,23,1,1,14,2,8,23,22,2,9,23,70,4,1,1,28,4,1,1,3,23,1,2,9,23,30,2,9,4,1,1,11,4,1,2,9,23,30,2,9,4,1,1,1221,}, + {1,1443,23,3,2,201,1,259,23,2,2,147,1,107,23,1,2,9,23,35,2,48,23,4,2,10,4,1,1,22,2,9,23,38,2,46,23,37,2,9,4,1,1,18,2,9,23,25,2,1,23,33,2,10,4,1,2,11,23,32,2,2,23,25,2,8,23,1,1,14,2,8,23,22,2,8,4,1,1,104,2,10,23,29,2,10,1,11,2,10,23,29,2,10,1,1222,}, + {1,1443,23,3,2,201,1,259,23,2,2,147,1,106,4,1,2,9,23,34,2,18,23,1,4,2,1,9,4,2,23,1,2,19,23,1,2,10,23,1,1,22,4,1,2,9,23,36,2,49,23,37,2,9,1,18,2,9,23,25,2,2,23,32,2,21,23,32,2,3,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,105,4,1,2,9,23,30,2,9,4,1,1,9,4,1,2,9,23,29,2,10,4,1,1,1222,}, + {1,1443,23,3,2,201,1,259,23,2,2,147,1,106,23,1,2,9,23,33,2,15,23,1,4,1,1,19,4,1,23,1,2,25,23,1,1,23,2,9,23,36,2,18,23,2,4,11,23,2,2,19,23,35,2,9,4,1,1,17,2,9,23,25,2,3,23,32,2,19,23,33,2,3,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,106,23,1,2,9,23,29,2,10,4,1,1,7,4,1,2,9,23,30,2,9,23,1,1,1223,}, + {1,1443,2,206,1,257,23,2,2,147,4,1,1,104,4,1,2,9,23,33,2,14,4,1,1,25,4,1,23,1,2,22,4,1,1,22,4,1,2,9,23,35,2,16,23,1,4,2,1,14,4,4,23,1,2,16,23,35,2,9,4,1,1,16,2,9,23,25,2,4,23,32,2,17,23,33,2,4,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,106,4,1,2,10,23,29,2,9,23,1,1,7,23,1,2,9,23,29,2,10,4,1,1,1223,}, + {1,1443,2,206,1,257,23,2,2,147,4,1,1,104,23,1,2,9,23,32,2,13,4,2,1,28,4,1,23,1,2,19,4,1,1,23,2,9,23,34,2,15,23,1,4,1,1,23,4,2,23,1,2,14,23,34,2,9,4,1,1,16,2,9,23,25,2,4,23,33,2,16,23,32,2,5,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,107,23,1,2,9,23,30,2,9,4,1,1,3,4,3,2,9,23,30,2,9,4,1,1,1224,}, + {1,1442,4,1,2,208,23,1,4,3,1,6,4,1,23,1,4,6,1,235,4,2,23,2,2,147,23,1,1,104,2,9,23,32,2,12,4,1,1,33,4,1,2,17,23,1,1,23,4,1,2,9,23,33,2,14,4,2,1,29,23,1,2,13,23,34,2,8,23,1,1,16,2,9,23,25,2,5,23,33,2,14,23,32,2,6,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,108,2,10,23,29,2,9,23,1,1,4,23,1,2,10,23,29,2,10,1,1225,}, + {1,1442,4,1,2,208,23,1,4,3,1,6,4,8,1,235,4,2,23,2,2,147,23,1,1,103,4,1,2,9,23,31,2,11,23,1,1,1,4,1,1,35,23,1,2,14,23,1,1,2,4,1,1,21,23,1,2,8,23,33,2,13,4,2,1,33,23,1,2,12,23,33,2,9,4,1,1,15,2,9,23,25,2,6,23,32,2,13,23,32,2,7,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,108,23,1,2,9,23,30,2,9,4,1,1,2,4,1,2,10,23,30,2,9,4,1,1,1225,}, + {1,1442,2,227,23,1,4,1,1,232,4,1,2,152,1,103,23,1,2,8,23,31,2,11,4,1,1,39,4,1,2,13,4,1,1,24,2,9,23,32,2,12,4,2,1,36,4,1,23,1,2,11,23,33,2,8,23,1,1,15,2,9,23,25,2,6,23,33,2,11,23,33,2,7,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,109,2,10,23,29,2,10,4,1,1,1,2,11,23,29,2,10,1,1226,}, + {1,1442,2,227,23,2,1,232,4,1,2,152,1,103,2,9,23,30,2,11,4,1,1,41,4,1,2,11,4,1,1,24,4,1,2,8,23,32,2,12,4,1,1,40,4,1,2,11,23,32,2,9,1,15,2,9,23,25,2,7,23,33,2,9,23,33,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,109,4,1,2,10,23,29,2,9,23,1,4,1,2,10,23,30,2,9,4,1,1,1226,}, + {1,1442,2,227,23,2,1,232,4,1,2,152,1,102,4,1,2,8,23,30,2,11,4,1,1,44,2,9,4,1,1,24,4,1,2,9,23,31,2,11,23,1,4,1,1,42,4,1,2,11,23,32,2,8,4,1,1,14,2,9,23,25,2,8,23,33,2,8,23,32,2,9,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,110,23,1,2,9,23,29,2,21,23,29,2,9,23,1,1,1227,}, + {1,1438,4,2,23,2,2,229,1,230,4,2,2,153,1,102,2,9,23,29,2,11,1,47,23,1,2,6,23,1,1,25,4,1,2,8,23,31,2,11,4,2,1,44,4,1,2,11,23,31,2,9,1,14,2,9,23,25,2,9,23,32,2,7,23,32,2,10,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,110,4,1,2,10,23,29,2,19,23,29,2,10,4,1,1,1227,}, + {1,1438,4,2,23,2,2,229,1,229,4,2,1,1,2,153,1,101,4,1,2,9,23,28,2,10,23,1,1,49,23,1,2,5,1,26,23,1,2,8,23,31,2,10,4,1,1,44,4,1,1,3,23,1,2,10,23,30,2,9,1,14,2,9,23,25,2,10,23,32,2,5,23,33,2,10,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,111,23,1,2,9,23,29,2,18,23,30,2,9,23,1,1,1228,}, + {1,1438,2,233,4,1,1,228,2,155,4,1,1,101,23,1,2,8,23,29,2,9,23,1,4,1,1,50,23,1,2,3,1,27,2,9,23,30,2,10,4,1,1,49,4,1,23,1,2,10,23,30,2,8,4,1,1,13,2,9,23,25,2,10,23,33,2,3,23,33,2,11,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,112,2,10,23,29,2,17,23,29,2,10,1,1229,}, + {1,1438,2,233,4,1,1,228,23,1,2,154,4,1,1,100,4,1,2,9,23,28,2,10,1,53,23,1,2,1,4,1,1,26,4,1,2,8,23,30,2,10,4,1,1,52,2,10,23,30,2,8,23,1,1,13,2,9,23,25,2,11,23,33,2,1,23,33,2,12,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,112,4,1,2,9,23,30,2,15,23,30,2,9,4,1,1,1229,}, + {1,1438,2,233,4,1,1,226,2,158,4,5,1,95,4,1,2,8,23,28,2,10,4,1,1,82,23,1,2,8,23,30,2,9,4,1,1,54,2,10,23,29,2,9,1,13,2,9,23,25,2,12,23,65,2,13,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,113,2,10,23,29,2,15,23,29,2,9,23,1,1,1230,}, + {1,1438,2,233,4,1,1,226,2,158,4,5,1,95,4,1,2,8,23,28,2,9,4,1,1,83,2,9,23,29,2,9,23,1,1,55,4,1,2,10,23,29,2,8,4,1,1,12,2,9,23,25,2,13,23,63,2,14,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,113,4,1,2,9,23,30,2,13,23,30,2,9,4,1,1,1230,}, + {1,1438,2,233,4,1,1,226,2,158,4,3,1,1,4,1,1,95,23,1,2,8,23,27,2,9,23,1,1,84,2,9,23,28,2,9,23,1,1,57,4,1,2,9,23,29,2,8,4,1,1,12,2,9,23,25,2,14,23,62,2,14,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,114,23,1,2,9,23,29,2,13,23,29,2,9,23,1,1,1231,}, + {1,1438,2,233,4,1,1,225,4,1,2,161,23,2,1,94,4,1,2,8,23,28,2,9,4,1,1,83,4,1,2,8,23,29,2,9,4,1,1,58,23,1,2,9,23,28,2,8,23,1,1,12,2,9,23,25,2,14,23,61,2,15,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,114,4,1,2,10,23,29,2,11,23,29,2,10,4,1,1,1231,}, + {1,1438,2,233,4,1,1,225,4,1,2,161,23,2,1,94,4,1,2,8,23,27,2,9,4,1,1,84,23,1,2,8,23,28,2,9,4,1,1,60,2,9,23,29,2,8,4,1,1,11,2,9,23,25,2,15,23,59,2,16,23,25,2,8,23,1,1,14,2,8,23,22,2,8,4,71,1,44,23,1,2,9,23,30,2,9,23,30,2,9,23,1,1,1232,}, + {1,1437,23,1,2,233,4,1,1,225,2,164,4,1,1,93,23,1,2,8,23,27,2,8,23,1,1,85,2,9,23,28,2,8,23,1,1,61,4,1,2,9,23,28,2,8,4,1,1,11,2,9,23,25,2,16,23,57,2,17,23,25,2,8,23,1,1,14,2,8,23,22,2,80,1,44,2,10,23,29,2,9,23,29,2,10,1,1233,}, + {1,1437,23,1,2,233,4,1,1,225,2,164,4,1,1,93,23,1,2,8,23,26,2,9,4,1,1,85,2,9,23,27,2,9,4,1,1,62,23,1,2,8,23,28,2,8,4,1,1,11,2,9,23,25,2,17,23,55,2,18,23,25,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,43,4,1,2,9,23,30,2,7,23,30,2,9,4,1,1,1233,}, + {1,1434,4,3,2,234,4,1,1,221,23,2,2,167,4,2,1,91,2,9,23,26,2,9,1,86,2,8,23,28,2,8,23,1,1,63,4,1,2,9,23,27,2,8,23,1,1,11,2,9,23,25,2,17,23,55,2,18,23,25,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,44,2,10,23,29,2,7,23,29,2,9,23,1,1,1234,}, + {1,1434,4,1,23,2,2,234,4,1,1,221,23,2,2,167,4,2,1,91,2,8,23,27,2,8,4,1,1,85,4,1,2,8,23,28,2,8,4,1,1,64,23,1,2,8,23,28,2,8,1,11,2,9,23,25,2,18,23,53,2,19,23,25,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,44,4,1,2,9,23,30,2,4,23,30,2,10,4,1,1,1234,}, + {1,1434,23,1,4,2,2,234,4,1,1,221,23,2,2,167,4,2,1,90,4,1,2,8,23,26,2,9,1,86,4,1,2,8,23,27,2,9,1,65,4,1,2,8,23,28,2,8,4,1,1,10,2,9,23,25,2,19,23,51,2,10,23,1,2,9,23,25,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,45,2,10,23,29,2,4,23,30,2,9,23,1,1,1235,}, + {1,1432,23,2,2,237,4,1,1,219,2,176,1,87,4,1,2,8,23,26,2,8,23,1,1,86,23,1,2,8,23,27,2,8,23,1,1,66,2,9,23,27,2,8,4,1,1,10,2,9,23,25,2,20,23,49,2,11,1,1,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,45,4,1,2,10,23,29,2,2,23,30,2,10,4,1,1,1235,}, + {1,1432,23,2,2,237,4,1,1,219,2,1,23,1,2,174,1,87,23,1,2,8,23,26,2,8,4,1,1,86,23,1,2,8,23,27,2,8,4,1,1,66,23,1,2,8,23,27,2,8,4,1,1,10,2,9,23,25,2,8,23,1,4,1,2,11,23,47,2,11,4,1,1,1,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,46,23,1,2,9,23,61,2,9,23,1,1,1236,}, + {1,1432,2,239,23,1,1,217,2,179,1,86,23,1,2,8,23,26,2,8,4,1,1,85,4,1,2,8,23,27,2,9,1,67,4,1,2,8,23,27,2,8,23,1,1,10,2,9,23,25,2,8,4,1,1,1,4,1,2,10,23,47,2,10,4,1,1,2,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,1,23,69,2,10,4,1,1,46,4,1,2,10,23,59,2,10,1,1237,}, + {1,1432,2,239,23,1,1,217,2,179,1,86,2,9,23,25,2,9,1,86,4,1,2,8,23,27,2,8,23,1,1,68,2,9,23,26,2,8,23,1,1,10,2,9,23,25,2,8,4,2,1,1,4,1,2,10,23,45,2,10,23,1,1,3,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,47,4,1,2,9,23,59,2,9,4,1,1,1237,}, + {1,1431,2,241,1,217,2,181,1,84,2,9,23,25,2,8,23,1,1,86,4,1,2,8,23,27,2,8,4,1,1,68,23,1,2,8,23,26,2,8,23,1,1,10,2,9,23,25,2,8,23,1,1,3,23,1,2,10,23,43,2,10,23,1,1,4,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,48,2,10,23,57,2,9,23,1,1,1238,}, + {1,1431,2,241,1,217,2,181,1,84,2,9,23,25,2,8,23,1,1,86,4,1,2,8,23,27,2,8,4,1,1,68,4,1,2,8,23,26,2,9,1,10,2,9,23,25,2,8,23,1,1,4,2,11,23,41,2,11,1,5,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,48,4,1,2,9,23,56,2,10,1,1239,}, + {1,1431,2,241,1,217,2,181,1,84,2,8,23,26,2,8,4,1,1,86,4,1,2,8,23,27,2,8,4,1,1,68,4,1,2,8,23,27,2,8,1,10,2,9,23,25,2,8,23,1,1,5,2,10,23,40,2,11,4,1,1,5,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,49,23,1,2,9,23,55,2,9,23,1,1,1239,}, + {1,1429,4,2,2,241,1,214,4,1,2,183,1,84,2,8,23,26,2,8,4,1,1,86,4,1,2,8,23,26,2,8,23,1,1,69,4,1,2,8,23,27,2,8,1,10,2,9,23,25,2,8,23,1,1,5,4,1,2,10,23,39,2,10,4,1,1,6,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,49,4,1,2,10,23,53,2,10,1,1240,}, + {1,1429,4,2,2,241,1,214,4,1,2,183,1,84,2,8,23,26,2,8,4,1,1,86,23,1,2,8,23,26,2,8,23,1,1,70,2,8,23,27,2,8,1,10,2,9,23,25,2,8,23,1,1,6,4,1,2,10,23,37,2,10,23,1,1,7,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,50,23,1,2,9,23,53,2,9,4,1,1,1240,}, + {1,1427,23,1,2,1,4,1,23,1,2,241,1,214,4,1,2,183,4,2,1,82,2,8,23,26,2,8,4,1,1,86,23,1,2,8,23,26,2,8,4,1,1,70,2,8,23,27,2,8,1,10,2,9,23,25,2,8,23,1,1,6,4,1,23,1,2,10,23,35,2,11,1,8,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,50,4,1,2,10,23,51,2,10,1,1241,}, + {1,1427,23,1,2,1,23,2,2,241,1,214,4,1,2,183,4,2,1,82,2,8,23,26,2,8,4,1,1,86,23,1,2,8,23,26,2,8,4,1,1,70,2,8,23,27,2,8,1,10,2,9,23,25,2,8,23,1,1,8,2,11,23,33,2,11,1,9,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,51,4,1,2,9,23,51,2,9,4,1,1,1241,}, + {1,1425,23,2,2,245,1,204,4,2,1,3,4,3,2,186,23,2,1,82,2,8,23,26,2,8,4,1,1,86,23,1,2,8,23,26,2,8,4,1,1,70,2,8,23,27,2,8,1,10,2,9,23,25,2,8,23,1,1,8,4,1,2,10,23,33,2,10,4,1,1,9,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,52,2,10,23,49,2,9,23,1,1,1242,}, + {1,1425,23,2,2,245,1,204,4,2,1,3,4,3,2,186,23,2,1,82,2,8,23,26,2,8,4,1,1,86,23,1,2,8,23,26,2,8,4,1,1,70,2,8,23,27,2,8,1,10,2,9,23,25,2,8,23,1,1,9,4,1,2,10,23,31,2,10,4,1,1,10,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,52,4,1,2,9,23,49,2,9,4,1,1,1242,}, + {1,1425,23,2,2,245,1,204,4,2,1,3,4,3,2,186,23,2,1,82,2,8,23,26,2,8,4,1,1,86,23,1,2,8,23,26,2,8,4,1,1,70,2,8,23,27,2,8,1,10,2,9,23,25,2,8,23,1,1,10,4,1,2,10,23,29,2,10,23,1,1,11,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,53,23,1,2,9,23,47,2,9,23,1,1,1243,}, + {1,1424,4,1,2,247,1,200,2,6,1,3,23,1,4,2,2,188,4,1,1,80,4,1,2,8,23,26,2,8,4,1,1,86,23,1,2,8,23,26,2,8,4,1,1,70,2,8,23,27,2,8,1,10,2,9,23,25,2,8,23,1,1,11,23,1,2,10,23,27,2,10,23,1,4,1,1,11,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,53,4,1,2,10,23,45,2,10,1,1244,}, + {1,1423,4,1,1,1,2,247,1,200,2,6,1,3,4,1,23,2,2,188,4,1,1,81,2,8,23,26,2,8,4,1,1,86,23,1,2,8,23,26,2,8,4,1,1,70,2,8,23,27,2,8,1,10,2,9,23,25,2,8,23,1,1,11,4,1,2,11,23,25,2,11,4,1,1,12,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,54,23,1,2,9,23,45,2,9,4,1,1,1244,}, + {1,1423,4,2,2,250,23,2,1,187,4,5,23,1,2,202,23,1,1,81,2,8,23,26,2,8,4,1,1,86,23,1,2,8,23,26,2,8,23,1,1,70,2,8,23,27,2,8,1,10,2,9,23,25,2,8,23,1,1,12,4,1,2,10,23,25,2,10,4,1,1,13,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,54,4,1,2,10,23,43,2,10,1,1245,}, + {1,1423,4,2,2,250,23,2,1,187,4,2,1,1,4,2,23,1,2,202,23,1,1,81,2,9,23,25,2,8,4,1,1,86,4,1,2,8,23,26,2,8,23,1,1,70,2,8,23,27,2,8,1,10,2,9,23,25,2,8,23,1,1,13,4,1,2,10,23,23,2,10,23,1,1,4,4,1,1,9,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,55,4,1,2,9,23,43,2,9,4,1,1,1245,}, + {1,1425,2,252,1,187,4,3,2,206,1,81,2,9,23,25,2,8,23,1,1,86,4,1,2,8,23,27,2,7,23,1,1,69,4,1,2,8,23,27,2,8,1,10,2,9,23,25,2,8,23,1,1,14,23,1,2,10,23,21,2,10,23,1,1,15,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,56,2,10,23,41,2,9,23,1,1,2,4,1,1,1243,}, + {1,1425,2,252,1,187,4,3,2,206,1,81,2,9,23,25,2,9,1,86,4,1,2,8,23,27,2,8,4,1,1,68,4,1,2,8,23,27,2,8,1,10,2,9,23,25,2,8,23,1,1,15,23,1,2,10,23,19,2,11,1,16,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,56,4,1,2,9,23,40,2,10,4,1,1,1246,}, + {1,1425,2,252,1,187,4,3,2,206,1,81,23,1,2,8,23,26,2,8,1,86,4,1,2,8,23,27,2,8,4,1,1,68,23,1,2,8,23,26,2,9,1,10,2,9,23,25,2,8,23,1,1,15,4,1,2,11,23,17,2,11,4,1,1,16,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,57,23,1,2,9,23,39,2,9,23,1,1,1247,}, + {1,1423,2,255,23,2,1,181,4,2,2,210,4,3,1,78,23,1,2,8,23,26,2,8,4,1,1,85,4,1,2,8,23,27,2,8,4,1,1,68,2,9,23,26,2,9,1,10,2,9,23,25,2,8,23,1,1,16,4,1,2,10,23,17,2,10,4,1,1,17,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,57,4,1,2,10,23,37,2,10,1,1248,}, + {1,1423,2,255,23,2,1,181,4,2,2,210,4,3,1,78,4,1,2,8,23,26,2,8,23,1,1,85,4,1,2,8,23,27,2,8,23,1,1,67,4,1,2,8,23,27,2,8,23,1,1,10,2,9,23,25,2,8,23,1,1,17,4,1,2,10,23,15,2,10,23,1,1,18,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,94,2,8,4,1,1,58,4,1,2,9,23,37,2,9,4,1,1,1248,}, + {1,1395,2,2,4,2,1,2,4,2,2,1,1,19,2,257,1,181,4,2,2,213,1,78,4,1,2,8,23,26,2,9,1,85,4,1,2,8,23,28,2,8,1,67,4,1,2,8,23,27,2,8,23,1,1,10,2,9,23,25,2,8,23,1,1,18,23,1,2,10,23,13,2,10,23,1,1,19,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,58,4,1,2,10,23,35,2,9,23,1,1,1249,}, + {1,1395,2,1,23,1,4,2,1,2,4,2,2,1,1,19,2,257,1,181,4,2,2,213,1,79,2,8,23,27,2,8,4,1,1,85,23,1,2,8,23,27,2,8,4,1,1,66,23,1,2,8,23,27,2,8,4,1,1,10,2,9,23,25,2,8,23,1,1,19,2,11,23,11,2,11,1,20,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,59,4,1,2,9,23,35,2,9,4,1,1,1249,}, + {1,1392,23,1,2,11,1,17,23,2,2,257,23,3,1,6,23,3,2,7,4,2,1,158,4,2,2,212,1,82,2,8,23,27,2,8,23,1,1,85,23,1,2,8,23,27,2,8,23,1,1,65,4,1,2,9,23,27,2,8,4,1,1,10,2,9,23,25,2,8,23,1,1,19,4,1,2,10,23,11,2,10,4,1,1,20,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,60,2,10,23,33,2,9,23,1,1,1250,}, + {1,1392,4,1,2,11,1,17,23,2,2,257,23,3,1,6,23,3,2,7,4,2,1,160,2,212,1,82,2,9,23,26,2,9,4,1,1,84,4,1,2,8,23,27,2,9,1,65,4,1,2,8,23,28,2,8,4,1,1,10,2,9,23,25,2,8,23,1,1,20,4,1,2,10,23,9,2,10,4,1,1,1,4,1,1,19,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,60,4,1,2,9,23,32,2,10,4,1,1,1250,}, + {1,1392,2,12,1,14,4,2,2,264,1,4,23,1,2,12,4,2,1,152,23,4,2,217,23,3,4,2,1,74,23,1,2,8,23,27,2,8,23,1,1,84,4,1,2,8,23,28,2,8,4,1,1,64,2,9,23,28,2,8,4,1,1,10,2,9,23,25,2,8,23,1,1,21,4,1,2,10,23,7,2,10,23,1,1,22,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,61,23,1,2,9,23,31,2,9,23,1,1,1251,}, + {1,1392,2,12,1,14,4,2,2,264,1,4,23,1,2,12,4,2,1,152,23,4,2,217,23,3,4,2,1,74,4,1,2,8,23,27,2,9,4,1,1,84,2,8,23,28,2,9,1,57,4,2,1,4,4,1,2,9,23,27,2,8,23,1,1,11,2,9,23,25,2,8,23,1,1,22,23,1,2,10,23,5,2,11,1,23,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,61,4,1,2,10,23,29,2,10,1,1252,}, + {1,1392,2,12,1,14,4,2,2,264,1,4,23,1,2,12,4,2,1,152,23,4,2,217,23,3,4,2,1,74,4,1,2,8,23,28,2,9,1,84,2,9,23,27,2,9,4,1,1,56,4,2,1,4,2,9,23,28,2,8,4,1,1,11,2,9,23,25,2,8,23,1,1,23,2,11,23,3,2,11,1,24,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,62,23,1,2,9,23,29,2,9,4,1,1,1252,}, + {1,1390,23,2,2,12,1,14,23,2,2,283,1,152,2,224,4,1,23,1,1,75,2,9,23,27,2,9,4,1,1,83,2,9,23,28,2,9,4,1,1,55,4,1,1,4,23,1,2,9,23,28,2,8,4,1,1,11,2,9,23,25,2,8,23,1,1,23,4,1,2,10,23,3,2,10,4,1,1,24,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,80,4,1,1,63,2,10,23,27,2,10,1,1253,}, + {1,1390,23,2,2,12,1,14,23,2,2,283,1,152,2,224,4,2,1,75,23,1,2,8,23,28,2,9,4,1,1,1,4,1,1,80,23,1,2,8,23,28,2,9,23,1,1,55,4,3,1,1,4,1,2,9,23,29,2,8,4,1,1,11,2,9,23,25,2,8,23,1,1,24,4,1,2,21,4,1,1,25,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,4,1,1,135,4,1,2,9,23,27,2,9,4,1,1,1253,}, + {1,1390,2,16,23,6,4,3,23,3,2,285,1,149,23,3,2,217,1,4,23,2,4,1,1,77,4,1,2,8,23,28,2,10,1,82,4,1,2,8,23,29,2,9,4,1,1,53,4,1,1,1,4,2,1,1,2,10,23,28,2,8,23,1,4,1,1,11,2,9,23,25,2,8,23,1,1,25,23,1,2,19,23,1,1,26,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,23,1,2,8,23,27,2,8,23,1,1,1254,}, + {1,1390,23,1,2,15,23,6,4,3,23,3,2,285,1,149,23,3,2,217,1,4,23,2,4,1,1,77,4,1,2,9,23,28,2,9,23,1,1,53,4,2,1,27,2,9,23,28,2,10,4,1,1,53,4,1,1,2,23,1,2,9,23,29,2,8,23,1,1,12,2,9,23,25,2,8,23,1,1,25,4,1,23,1,2,18,4,1,1,26,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1390,2,313,1,149,2,227,1,78,23,1,2,8,23,28,2,10,23,1,1,51,4,1,2,2,4,1,1,26,2,9,23,29,2,10,1,52,4,1,1,1,4,2,2,10,23,29,2,8,4,1,1,12,2,9,23,25,2,8,23,1,1,26,4,1,2,17,4,1,1,27,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1390,2,313,1,149,2,227,1,78,4,1,2,8,23,29,2,10,23,1,1,49,4,1,2,4,4,1,1,25,23,1,2,8,23,30,2,9,23,1,1,51,4,3,2,10,23,29,2,9,1,13,2,9,23,25,2,8,23,1,1,27,4,1,2,15,4,1,1,28,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1390,2,313,1,149,2,227,1,78,4,1,2,9,23,29,2,10,23,1,1,44,4,1,1,2,23,1,2,6,23,1,1,24,4,1,2,8,23,30,2,10,23,1,1,51,4,1,2,10,23,30,2,8,23,1,1,13,2,9,23,25,2,8,23,1,1,28,23,1,2,13,4,1,1,29,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1387,2,316,1,147,2,229,23,6,1,73,2,9,23,30,2,10,23,1,1,4,4,1,1,40,23,1,2,8,23,1,1,23,4,1,2,9,23,30,2,10,23,1,1,49,4,1,2,10,23,31,2,8,4,1,1,13,2,9,23,25,2,8,23,1,1,29,23,1,2,11,23,1,1,30,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1387,2,316,1,147,2,229,23,6,1,73,4,1,2,8,23,30,2,11,23,1,1,43,23,1,2,10,23,1,1,23,23,1,2,8,23,31,2,10,23,1,1,47,4,1,2,11,23,30,2,9,1,14,2,9,23,25,2,8,23,1,1,30,2,11,4,1,1,30,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1387,2,316,1,145,4,2,2,237,1,72,2,9,23,30,2,12,4,1,1,40,23,1,2,12,4,1,1,22,4,1,2,9,23,30,2,12,1,45,4,1,2,11,23,31,2,9,1,14,2,9,23,25,2,8,23,1,1,31,2,9,4,1,1,31,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1387,2,316,1,145,4,2,2,237,1,72,23,1,2,8,23,31,2,12,4,1,1,37,4,1,2,15,4,1,1,22,2,9,23,31,2,12,4,1,1,41,4,1,23,1,2,11,23,32,2,8,4,1,1,14,2,9,23,25,2,8,23,1,1,30,4,2,2,7,4,1,1,32,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1387,2,316,1,145,2,239,1,72,4,1,2,9,23,31,2,12,23,1,4,1,1,33,4,1,23,1,2,17,23,1,1,21,4,1,2,8,23,32,2,12,23,1,1,39,4,1,2,12,23,32,2,9,1,15,2,9,23,25,2,8,23,1,1,32,23,1,2,5,23,1,1,33,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1387,2,316,1,145,2,239,1,73,23,1,2,8,23,32,2,13,23,1,4,1,1,30,4,1,2,20,23,1,1,21,2,9,23,32,2,13,4,1,1,36,23,1,2,12,23,33,2,8,23,1,1,15,2,9,23,25,2,8,23,1,1,33,23,1,2,3,23,1,1,34,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1387,2,316,1,145,2,239,1,73,4,1,2,9,23,32,2,14,23,1,4,1,1,26,4,1,2,23,23,1,1,20,23,1,2,8,23,33,2,13,23,1,4,1,1,3,4,1,1,28,4,1,2,13,23,33,2,9,4,1,1,15,2,9,23,25,2,8,23,1,1,34,2,3,1,35,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1387,2,316,1,145,2,239,1,73,4,1,2,9,23,34,2,15,4,1,1,21,4,1,23,1,2,26,4,1,1,19,4,1,2,9,23,33,2,14,23,1,4,1,1,28,4,1,23,1,2,13,23,34,2,8,23,1,4,1,1,15,2,9,23,25,2,8,23,1,1,35,2,1,4,1,1,35,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1387,2,316,1,145,2,239,1,74,4,1,2,9,23,34,2,17,23,1,4,2,1,10,4,3,23,1,2,18,23,2,2,11,4,1,1,19,2,9,23,35,2,15,4,2,1,22,4,1,23,1,2,15,23,34,2,9,4,1,1,16,2,9,23,25,2,8,23,1,1,35,4,1,1,36,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1387,2,316,4,2,1,138,4,1,23,2,2,243,23,1,1,72,2,9,23,35,2,21,23,7,2,22,23,4,2,11,4,1,1,18,4,1,2,9,23,35,2,17,4,3,1,13,4,3,23,1,2,17,23,35,2,9,1,17,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1387,2,316,4,2,1,138,4,1,23,2,2,243,23,1,1,72,4,1,2,9,23,36,2,46,23,7,2,11,23,1,1,18,2,9,23,36,2,20,23,2,4,8,23,3,2,18,23,36,2,9,4,1,1,17,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1384,4,2,2,317,4,2,1,136,4,2,2,247,1,73,2,10,23,36,2,44,23,9,2,11,4,1,1,17,4,1,2,9,23,36,2,49,23,37,2,9,1,18,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1384,4,2,2,317,4,2,1,136,4,2,2,247,1,73,4,1,2,9,23,38,2,40,23,12,2,11,4,1,1,16,4,1,2,9,23,38,2,45,23,38,2,9,4,1,1,18,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1384,4,2,2,317,4,2,1,136,4,2,2,247,1,74,2,10,23,39,2,35,23,16,2,11,23,1,1,2,4,1,1,13,4,1,2,9,23,39,2,41,23,40,2,9,1,19,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1384,2,319,4,2,1,136,23,2,2,247,4,2,1,72,4,1,2,9,23,42,2,30,23,19,2,11,23,1,1,16,2,10,23,40,2,37,23,41,2,9,4,1,1,19,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1384,2,319,4,2,1,136,23,2,2,247,4,2,1,73,23,1,2,9,23,44,2,24,23,23,2,11,23,1,1,15,4,1,2,9,23,42,2,33,23,42,2,10,1,20,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1382,23,2,2,319,4,2,1,134,4,2,2,255,4,2,1,67,4,1,2,10,23,48,2,14,23,29,2,11,4,1,1,15,2,10,23,45,2,26,23,45,2,9,4,1,1,20,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1382,23,2,2,319,4,2,1,134,4,2,2,255,4,2,1,68,4,1,2,10,23,91,2,11,4,1,1,14,4,1,2,9,23,49,2,17,23,49,2,9,23,1,1,21,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1381,4,1,2,321,4,2,1,133,4,1,2,259,1,69,2,10,23,92,2,11,23,1,1,14,23,1,2,9,23,113,2,10,4,1,1,21,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1381,4,1,2,321,4,2,1,133,4,1,2,259,1,69,4,1,2,10,23,92,2,11,23,1,1,14,2,10,23,112,2,9,4,1,1,22,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1381,4,1,2,321,4,2,1,133,4,1,2,259,1,70,4,1,2,10,23,92,2,11,4,1,1,13,4,1,2,10,23,110,2,10,1,23,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1381,2,324,23,1,1,129,23,3,2,261,23,1,4,1,1,68,23,1,2,10,23,92,2,11,4,1,1,13,23,1,2,10,23,108,2,10,4,1,1,23,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1381,2,324,23,1,1,129,23,3,2,260,23,1,2,1,4,1,1,68,4,1,2,11,23,92,2,11,23,1,1,12,4,1,2,10,23,107,2,10,4,1,1,24,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1381,2,325,4,2,1,125,4,2,2,265,23,1,4,3,1,66,4,1,2,11,23,92,2,11,23,1,1,12,4,1,2,10,23,105,2,10,23,1,1,25,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1381,2,325,4,2,1,125,4,2,2,265,23,1,4,1,1,1,4,1,1,67,4,1,2,11,23,92,2,11,4,1,1,12,4,1,2,10,23,103,2,11,1,26,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1378,23,3,2,325,4,2,1,125,2,271,23,2,1,66,4,1,2,11,23,92,2,11,4,1,1,12,23,1,2,10,23,101,2,11,4,1,1,26,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1378,23,3,2,325,4,2,1,125,2,271,23,2,1,67,23,1,2,11,23,90,2,12,4,1,1,12,4,1,2,11,23,99,2,11,4,1,1,27,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1378,23,3,2,325,4,2,1,125,2,271,23,2,1,68,23,1,2,11,23,88,2,12,23,1,1,14,4,1,2,11,23,97,2,11,23,1,1,28,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1378,2,328,23,2,1,124,2,274,23,1,1,68,23,1,2,11,23,86,2,12,23,1,1,16,4,1,2,11,23,95,2,11,23,1,1,2,4,1,1,26,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1378,2,328,23,2,1,124,2,274,23,1,1,69,23,1,2,11,23,84,2,12,23,1,1,18,4,1,2,11,23,93,2,11,23,1,1,30,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1377,23,1,2,330,23,4,1,115,4,1,23,2,2,277,1,70,23,1,2,12,23,81,2,12,23,1,1,20,4,1,2,11,23,91,2,12,1,31,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1377,23,1,2,330,23,4,1,115,23,1,4,2,2,277,1,71,23,1,2,12,23,78,2,13,23,1,1,2,4,1,1,19,4,1,2,11,23,89,2,12,1,32,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1377,23,1,2,336,1,112,23,1,2,280,1,72,23,1,2,12,23,76,2,13,4,1,1,24,4,1,2,12,23,86,2,12,4,1,1,32,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1377,23,1,2,336,1,112,23,1,2,280,1,73,4,1,2,13,23,73,2,13,4,1,1,26,4,1,2,12,23,83,2,13,4,1,1,33,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1377,23,1,2,336,1,112,23,1,2,280,1,74,4,1,2,13,23,70,2,14,4,1,1,28,4,1,2,12,23,81,2,12,23,1,1,35,2,9,23,25,2,8,4,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1375,2,342,4,3,1,104,4,3,2,284,1,71,4,1,2,14,23,67,2,14,1,31,4,1,2,13,23,78,2,12,23,1,1,36,2,9,23,25,2,8,4,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1375,2,342,4,3,1,104,4,3,2,284,1,72,4,1,23,1,2,14,23,63,2,14,23,1,4,1,1,32,4,1,2,13,23,75,2,13,4,1,1,37,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1375,2,342,23,3,1,104,2,287,1,74,23,1,2,15,23,59,2,15,4,1,1,36,23,1,2,13,23,72,2,13,4,1,1,38,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1375,2,342,23,3,1,104,2,287,1,75,4,1,2,16,23,55,2,15,23,1,1,1,4,1,1,37,4,1,2,14,23,68,2,14,1,40,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1364,23,3,1,6,4,2,2,345,4,2,1,100,2,289,4,2,1,75,23,1,2,16,23,51,2,16,4,1,1,41,4,1,2,15,23,64,2,14,23,1,1,41,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1364,23,3,1,6,4,1,1,1,2,345,4,2,1,100,2,289,4,2,1,76,4,1,2,18,23,45,2,17,23,1,4,1,1,43,4,1,23,1,2,15,23,60,2,15,4,1,1,42,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1364,23,3,1,6,4,2,2,345,4,2,1,100,2,289,23,2,1,78,23,1,2,18,23,41,2,18,4,1,1,47,4,1,2,16,23,56,2,15,23,1,4,1,1,43,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1360,4,1,2,7,23,1,1,4,2,347,4,2,1,99,2,294,1,77,4,1,23,1,2,20,23,33,2,20,23,1,1,51,23,1,2,16,23,51,2,17,4,1,1,45,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,8,23,27,2,8,4,1,1,1254,}, + {1,1360,4,1,2,6,23,1,2,1,1,4,2,347,4,2,1,99,2,294,1,75,4,1,1,3,4,1,23,1,2,23,23,23,2,23,23,1,1,54,4,1,2,18,23,45,2,18,23,1,1,47,2,9,23,25,2,8,23,1,1,72,23,1,2,8,23,25,2,8,23,1,1,14,2,8,23,22,2,8,1,137,4,1,2,43,4,1,1,1254,}, + {1,1356,4,2,2,11,23,3,2,348,4,2,1,94,23,2,2,297,23,2,1,79,4,1,23,1,2,65,23,1,4,1,1,57,23,1,2,19,23,39,2,19,23,1,4,1,1,48,2,42,23,1,1,72,23,1,2,41,23,1,1,14,2,38,1,137,4,1,2,43,4,1,1,1254,}, + {1,1356,4,1,23,1,2,11,23,3,2,348,4,2,1,94,23,2,2,297,23,2,1,81,4,2,2,61,23,1,4,1,1,61,23,1,2,20,23,33,2,21,4,1,1,50,2,42,23,1,1,72,23,1,2,41,23,1,1,14,2,38,1,137,4,1,2,43,4,1,1,1254,}, + {1,1356,4,2,2,11,4,3,2,348,4,1,1,95,23,2,2,300,1,83,4,1,2,57,4,1,1,65,4,1,23,1,2,25,23,20,2,25,4,1,1,52,2,42,23,1,1,72,23,1,2,41,23,1,1,14,2,38,1,137,4,1,2,43,4,1,1,1254,}, + {1,1356,4,2,2,11,4,3,2,348,1,96,23,2,2,300,1,85,4,1,23,1,2,51,23,1,4,1,1,70,23,1,2,65,23,1,4,1,1,54,2,42,23,1,1,72,23,1,2,41,23,1,1,14,2,38,1,137,4,1,2,43,4,1,1,1254,}, + {1,1356,4,2,2,11,4,3,2,348,1,96,23,2,2,300,1,88,4,2,2,45,23,1,4,1,1,75,4,1,2,61,23,1,4,1,1,56,2,42,23,1,1,72,23,1,2,41,23,1,1,14,2,38,1,137,4,1,2,43,4,1,1,1254,}, + {1,1356,4,2,2,364,4,1,1,10,4,1,1,79,23,2,2,303,1,91,4,1,23,2,2,38,23,1,4,2,1,79,4,1,23,1,2,56,23,1,4,1,1,58,2,42,23,1,1,72,23,1,2,41,23,1,1,14,2,38,1,137,4,1,2,43,4,1,1,1254,}, + {1,1354,4,1,1,1,4,2,2,364,4,1,1,8,4,1,1,81,23,2,2,303,1,94,4,2,23,1,2,31,23,1,4,2,1,85,4,2,2,51,23,1,4,1,1,61,2,42,23,1,1,72,23,1,2,41,23,1,1,14,2,38,1,138,2,42,23,1,1,1255,}, + {1,1356,2,371,4,2,1,82,4,2,2,305,1,100,4,2,23,2,2,18,23,1,4,2,1,95,4,1,2,45,23,1,4,1,1,64,2,42,4,1,1,72,23,1,2,41,23,1,1,14,2,38,1,1436,}, + {1,1356,2,371,4,2,1,82,23,1,4,1,2,305,1,108,4,2,1,2,4,2,1,2,4,1,1,106,4,2,2,37,23,1,4,1,1,73,4,32,1,1,4,2,1,76,4,1,1,1,4,2,1,1,4,1,1,1,4,1,1,1,4,26,1,2,4,2,1,19,4,25,1,7,4,2,1,1438,}, + {1,1352,23,3,2,379,1,75,4,2,2,307,1,226,4,3,23,2,2,25,23,2,4,4,1,1716,}, + {1,1352,23,3,2,379,1,75,4,2,2,307,1,232,4,3,23,3,2,10,23,4,4,4,1,1722,}, + {1,1352,23,3,2,379,1,75,4,2,2,307,1,1978,}, + {1,1352,23,3,2,379,1,75,2,309,1,1978,}, + {1,1352,23,3,2,379,1,75,2,309,1,1978,}, + {1,1352,23,3,2,379,4,9,1,66,2,309,1,1978,}, + {1,1352,23,3,2,379,4,1,1,1,4,8,1,65,2,309,1,1978,}, + {1,1352,2,390,23,2,1,63,2,311,1,1978,}, + {1,1352,2,390,23,2,1,63,2,311,1,1978,}, + {1,1352,2,390,23,2,1,63,2,311,1,1978,}, + {1,1352,23,3,2,390,1,5,4,1,1,54,4,2,2,311,1,1978,}, + {1,1352,23,3,2,390,1,60,4,2,2,311,1,1978,}, + {1,1352,4,3,2,393,1,57,2,313,1,1978,}, + {1,1352,4,3,2,393,1,57,2,313,1,1978,}, + {1,1347,2,2,1,3,2,398,1,52,2,316,1,1978,}, + {1,1347,2,2,1,3,2,398,1,52,2,316,1,1978,}, + {1,1347,2,2,1,3,2,398,1,52,2,316,1,1978,}, + {1,1291,2,13,4,17,23,6,2,2,23,4,2,418,23,1,4,1,1,45,4,1,2,319,1,1978,}, + {1,1291,2,13,4,17,23,6,2,1,23,1,2,1,23,2,4,1,2,418,23,2,1,45,4,1,2,319,1,1978,}, + {1,1273,2,3,4,2,2,482,23,1,2,1,1,6,4,1,1,1,2,4,23,2,1,1,4,2,2,6,1,2,23,1,2,2,4,3,1,5,2,320,1,1978,}, + {1,1273,2,3,4,2,2,482,23,2,1,6,4,2,2,4,23,2,1,1,4,2,2,6,1,2,23,1,2,2,4,3,1,5,2,320,1,1978,}, + {1,1250,4,9,23,3,2,503,4,1,2,19,23,2,2,331,1,1978,}, + {1,1250,4,1,23,1,4,7,23,3,2,503,4,1,2,19,23,2,2,331,1,1978,}, + {1,1250,4,3,23,2,4,4,23,3,2,503,4,1,2,19,23,2,2,331,1,1978,}, + {1,1235,2,883,1,1978,}, + {1,1235,2,883,1,1978,}, + {1,1194,4,1,1,8,4,2,1,12,4,6,23,3,2,892,1,1978,}, + {1,1183,4,1,1,1,2,13,4,3,2,917,1,1978,}, + {1,1183,4,2,2,13,4,3,2,4,23,1,2,912,1,1978,}, + {1,1161,4,3,1,13,4,8,2,933,1,1978,}, + {1,1161,4,3,1,13,4,8,2,933,1,1978,}, + {1,1161,4,3,1,13,4,8,2,933,1,1978,}, + {1,1158,23,3,2,3,23,4,2,1,23,1,2,3,23,2,2,943,1,1978,}, + {1,1158,2,6,23,7,2,2,23,2,2,943,1,1978,}, + {1,1144,4,13,2,961,1,1978,}, + {1,1144,4,13,23,1,2,960,1,1978,}, + {1,1144,2,974,1,1978,}, + {1,1144,2,974,1,1978,}, + {1,1144,2,974,1,1978,}, + {1,1123,4,6,2,989,1,1978,}, + {1,1123,4,6,2,989,1,1978,}, + {1,1123,2,1037,4,1,1,1935,}, + {1,1123,2,1037,4,1,1,1935,}, + {1,1110,4,2,2,1049,4,1,1,1934,}, + {1,1103,4,1,1,6,4,2,2,1049,4,2,1,1933,}, + {1,1109,4,3,2,1049,1,1,4,1,1,1933,}, + {1,1099,23,3,2,1061,1,661,4,6,1,1266,}, + {1,1099,23,3,2,1061,1,660,4,7,1,1266,}, + {1,1095,4,3,2,1065,4,2,1,629,4,1,1,9,4,2,23,2,2,28,4,2,1,1258,}, + {1,1095,4,3,2,1065,4,2,1,629,4,1,1,9,4,3,23,1,2,28,4,2,1,1258,}, + {1,1092,4,2,23,1,2,1070,23,1,1,601,4,3,23,5,4,1,23,2,2,63,23,2,4,2,23,2,4,1,1,1248,}, + {1,1092,4,3,2,1070,23,1,1,601,4,3,23,5,4,1,23,2,2,63,23,2,4,1,23,1,4,1,23,1,4,2,1,1247,}, + {1,1092,4,2,23,1,2,1070,23,1,1,601,4,4,23,2,4,1,23,1,4,1,23,2,2,63,23,2,4,1,23,3,4,2,1,1247,}, + {1,1086,2,1080,4,3,1,590,23,3,2,88,23,1,4,1,1,1244,}, + {1,1086,23,2,2,1078,4,3,1,590,23,3,2,89,4,1,1,1244,}, + {1,1081,4,1,23,2,2,1085,4,1,1,578,4,6,23,2,2,104,4,4,1,1232,}, + {1,1081,4,1,23,2,2,1085,1,1,4,1,1,577,4,6,23,2,2,104,4,4,1,1232,}, + {1,1073,23,2,2,1096,4,1,1,570,4,4,23,1,2,121,4,1,1,1227,}, + {1,1073,23,1,4,1,2,1096,4,1,1,570,4,3,23,2,2,121,4,1,1,1227,}, + {1,1073,23,2,2,1096,4,1,1,570,4,3,23,2,2,121,4,1,1,1227,}, + {1,1045,4,1,1,10,4,6,2,1110,1,565,4,2,2,133,4,3,1,1221,}, + {1,1056,4,6,2,1110,1,565,4,2,2,133,4,3,1,2,4,1,1,1218,}, + {1,1053,2,1119,4,2,1,557,4,2,23,3,2,139,1,1221,}, + {1,1053,2,1119,4,2,1,557,4,2,23,3,2,139,1,1221,}, + {1,1045,4,2,2,1127,4,4,1,548,4,2,2,147,1,1221,}, + {1,1045,4,2,2,1127,4,4,1,548,4,2,2,147,1,1221,}, + {1,1045,4,2,2,1127,4,4,1,548,4,2,2,147,1,1221,}, + {1,1042,4,1,2,1135,1,542,4,2,23,2,2,151,1,1221,}, + {1,1042,4,1,2,1135,1,542,4,2,23,2,2,151,1,1221,}, + {1,1031,4,6,1,1,4,1,2,1141,23,2,1,532,4,3,2,156,23,2,1,1221,}, + {1,1031,4,8,2,1141,23,2,1,532,4,3,2,156,23,2,1,1221,}, + {1,1030,23,1,2,1151,1,527,4,2,23,2,2,160,23,2,1,1221,}, + {1,1030,23,1,2,1151,1,527,4,2,23,2,2,160,4,1,23,1,1,1221,}, + {1,1030,23,1,2,1151,1,527,4,2,23,2,2,160,23,2,1,1221,}, + {1,1022,4,3,2,1157,1,510,4,6,23,2,2,173,4,2,1,1221,}, + {1,1022,4,3,2,1157,1,510,4,6,23,2,2,173,4,2,1,1221,}, + {1,1020,2,1162,23,4,1,500,4,4,23,1,2,182,1,1223,}, + {1,1020,2,1162,23,4,1,500,4,3,23,2,2,182,1,1223,}, + {1,1013,2,1,23,1,2,1173,23,1,1,491,2,192,23,1,1,1223,}, + {1,1013,2,1175,23,1,1,491,23,2,2,190,23,1,1,1223,}, + {1,1013,23,1,2,1174,23,1,1,491,2,192,4,1,1,1223,}, + {1,1006,4,2,23,3,2,1178,23,5,4,1,1,453,4,1,23,27,2,196,1,1224,}, + {1,1006,4,2,23,3,2,1178,23,6,1,453,4,1,23,27,2,196,1,1224,}, + {1,987,4,1,1,16,4,2,2,1189,1,448,4,1,23,2,2,226,1,1224,}, + {1,1004,4,2,2,1189,1,448,4,1,23,2,2,226,1,1224,}, + {1,997,23,2,4,1,2,1195,1,442,4,1,2,231,23,3,1,1224,}, + {1,997,23,2,4,1,2,1195,1,442,4,1,2,231,23,3,1,1224,}, + {1,997,23,2,4,1,2,1195,1,442,4,1,2,231,4,1,23,2,1,1224,}, + {1,991,2,1204,1,436,4,1,23,3,2,234,4,3,1,1224,}, + {1,991,2,1204,1,436,4,1,23,3,2,234,4,3,1,1224,}, + {1,983,4,6,2,1206,1,431,4,1,2,241,23,1,1,1227,}, + {1,983,4,6,2,1206,1,431,4,1,2,241,23,1,1,1227,}, + {1,980,4,2,2,1213,1,425,4,1,23,2,2,245,1,1228,}, + {1,980,4,2,2,1213,1,425,4,1,23,2,2,245,1,1228,}, + {1,980,4,2,2,1213,1,425,4,1,23,2,2,245,1,1228,}, + {1,974,2,1217,23,2,1,421,4,2,2,250,4,1,1,1229,}, + {1,974,2,1217,23,2,1,421,4,2,2,250,1,1,4,1,1,1228,}, + {1,969,2,2,1,1,4,2,2,1215,23,2,4,2,1,416,4,1,23,2,2,252,1,1232,}, + {1,967,4,2,2,2,1,1,4,2,2,1215,23,2,4,2,1,416,4,1,23,2,2,252,1,1232,}, + {1,957,4,8,2,1223,1,415,4,1,2,259,1,1233,}, + {1,957,4,4,1,1,4,3,2,1221,23,1,2,1,1,415,4,1,2,259,1,1233,}, + {1,957,4,8,2,1223,1,415,4,1,2,259,1,1233,}, + {1,955,2,1231,1,412,4,1,23,2,2,259,1,1236,}, + {1,955,2,1231,1,412,4,1,23,2,2,259,1,1236,}, + {1,955,2,1228,1,407,23,2,2,266,4,2,1,1236,}, + {1,955,2,1228,1,407,23,2,2,266,4,2,1,1236,}, + {1,949,23,6,2,1222,23,1,4,2,1,2,23,1,1,406,2,268,23,1,1,1238,}, + {1,949,23,6,2,1222,23,1,4,2,1,2,23,1,1,406,2,269,1,1238,}, + {1,949,23,6,2,1222,23,1,4,2,1,2,23,1,1,406,2,268,23,1,1,1238,}, + {1,944,23,2,2,1228,1,405,4,2,2,276,4,1,1,1238,}, + {1,944,23,2,2,1228,1,405,4,2,2,276,4,1,1,1238,}, + {1,940,4,3,23,1,2,1227,4,1,1,403,23,4,2,278,1,1239,}, + {1,940,4,3,23,1,2,1227,4,1,1,403,23,4,2,278,1,1239,}, + {1,938,4,2,2,1231,1,401,4,1,2,282,4,2,1,1239,}, + {1,938,4,2,2,1231,1,401,4,1,2,282,4,2,1,1239,}, + {1,938,4,2,2,1231,1,401,4,1,2,282,4,2,1,1239,}, + {1,929,4,2,23,2,4,2,2,1236,1,1,23,2,1,393,4,3,2,282,23,3,1,1241,}, + {1,929,4,2,23,2,4,2,2,1236,1,1,23,2,1,393,4,3,2,282,23,3,1,1241,}, + {1,929,2,1245,23,3,1,390,23,3,2,282,1,1244,}, + {1,929,2,1245,23,3,1,390,23,3,2,282,1,1244,}, + {1,921,4,5,2,1252,4,2,1,381,4,1,2,289,4,1,1,1244,}, + {1,921,4,5,2,1252,4,2,1,381,4,1,2,289,4,1,1,1244,}, + {1,921,4,5,2,1252,4,2,1,381,4,1,2,289,4,1,1,1244,}, + {1,920,2,1262,23,1,4,3,1,375,23,1,2,289,1,1245,}, + {1,920,2,1262,23,1,4,3,1,375,23,1,2,289,1,1245,}, + {1,906,4,3,1,3,4,3,2,1273,4,1,1,364,4,5,2,291,4,2,1,1245,}, + {1,901,4,1,1,4,4,3,1,3,4,3,2,1273,4,1,1,364,4,5,2,291,4,2,1,1245,}, + {1,903,4,3,2,1285,4,2,1,357,4,3,2,294,23,2,1,1247,}, + {1,903,4,3,2,1285,4,2,1,357,4,3,2,294,23,2,1,1247,}, + {1,903,4,3,2,1285,4,2,1,357,4,3,2,294,23,2,1,1247,}, + {1,903,4,3,2,1293,4,3,1,347,4,1,2,296,23,1,1,1249,}, + {1,903,4,3,2,1293,4,3,1,347,4,1,2,296,23,1,1,1249,}, + {1,903,2,1299,1,339,23,6,2,299,1,1250,}, + {1,903,2,1299,1,339,23,6,2,299,1,1250,}, + {1,900,23,1,2,1310,23,3,4,11,1,307,4,4,23,2,2,305,4,3,1,1250,}, + {1,900,23,1,2,1310,23,3,4,11,1,307,4,4,23,2,2,305,4,3,1,1250,}, + {1,900,23,1,2,1310,23,3,4,11,1,307,4,4,23,1,2,306,4,3,1,1250,}, + {1,894,23,6,2,1325,23,5,1,302,2,309,23,2,1,1253,}, + {1,894,23,6,2,1325,23,5,1,302,2,309,23,2,1,1253,}, + {1,884,2,5,23,1,2,1342,4,15,1,283,2,310,4,1,1,1255,}, + {1,884,2,5,4,1,2,1342,4,15,1,283,2,310,4,1,1,1255,}, + {1,883,4,1,2,1364,23,5,2,1,23,2,4,3,1,262,4,1,23,5,2,311,4,2,1,1256,}, + {1,883,4,1,2,1364,23,5,2,1,23,2,4,3,1,262,4,1,23,5,2,311,4,2,1,1256,}, + {1,883,4,1,2,1364,23,5,2,1,23,2,4,3,1,262,4,1,23,5,2,311,4,2,1,1256,}, + {1,883,4,1,2,1375,1,253,4,1,1,6,2,317,4,2,1,1258,}, + {1,883,4,1,2,1375,1,258,4,1,1,1,2,317,4,2,1,1258,}, + {1,881,4,2,23,1,2,1378,23,3,1,243,23,3,2,323,4,2,1,1260,}, + {1,881,4,2,23,1,2,1378,23,3,1,243,23,3,2,323,4,2,1,1260,}, + {1,875,4,3,2,1395,1,9,4,5,1,217,23,2,2,324,4,2,1,1264,}, + {1,875,4,3,2,1395,1,1,4,1,1,7,4,5,1,217,23,2,2,324,4,2,1,1264,}, + {1,875,4,3,2,1395,4,1,1,8,4,5,1,217,23,2,2,324,4,2,1,1264,}, + {1,864,4,2,23,1,4,3,1,2,4,1,23,2,2,1409,23,3,1,204,4,2,23,4,4,1,23,1,4,1,2,329,1,1267,}, + {1,864,4,2,23,1,4,3,1,2,4,1,23,2,2,1409,23,3,1,204,4,2,23,4,4,1,23,1,4,1,2,329,1,1267,}, + {1,862,4,2,2,1424,4,2,1,2,23,1,2,3,1,7,4,2,2,2,23,2,1,179,2,339,4,2,1,1267,}, + {1,862,4,2,2,1424,4,2,1,2,23,1,2,3,1,7,4,2,2,2,23,2,1,179,2,339,4,2,1,1267,}, + {1,862,4,2,2,1437,23,3,2,5,4,1,1,166,2,348,1,1272,}, + {1,862,4,2,2,1437,23,4,2,4,4,1,1,166,2,348,1,1272,}, + {1,862,4,2,2,1437,23,4,2,4,4,1,1,166,2,348,1,1272,}, + {1,855,4,1,2,3,1,2,23,1,2,1457,4,2,1,14,23,1,1,137,23,1,2,349,4,1,1,1272,}, + {1,855,4,1,2,3,1,2,23,1,2,1457,4,2,1,14,4,1,1,137,23,1,2,349,4,1,1,1272,}, + {1,847,4,4,23,2,2,1480,23,2,2,5,4,6,1,9,4,2,1,83,4,16,1,11,4,4,23,2,2,348,23,2,1,1273,}, + {1,847,4,4,23,2,2,1480,23,2,2,5,4,6,1,9,4,2,1,83,4,2,1,1,4,14,1,10,4,4,23,2,2,348,23,1,2,1,1,1273,}, + {1,847,23,3,2,1494,4,2,1,9,2,3,1,82,2,381,4,1,1,1274,}, + {1,847,23,3,2,1494,4,2,1,9,2,3,1,82,2,18,23,1,2,362,4,1,1,1274,}, + {1,847,23,3,2,1494,4,2,1,9,2,3,1,82,2,381,4,2,1,1273,}, + {1,847,23,3,2,1511,23,1,4,10,1,63,4,5,2,378,23,1,1,1277,}, + {1,847,23,3,2,1511,4,1,23,1,4,9,1,63,4,5,2,378,23,1,1,1277,}, + {1,839,4,3,23,5,2,1527,23,1,1,40,4,2,23,3,2,2,1,6,4,1,23,5,2,381,23,3,1,1278,}, + {1,839,4,3,23,5,2,1527,23,1,1,40,4,2,23,3,2,2,1,6,4,1,23,5,2,381,23,3,1,1278,}, + {1,834,4,3,1,1,2,1976,23,1,1,1281,}, + {1,834,4,2,1,1,4,1,2,1975,23,2,1,1281,}, + {1,834,4,3,1,1,2,1975,23,2,1,1281,}, + {1,834,2,1979,1,1283,}, + {1,833,23,1,2,1978,4,1,1,1283,}, + {1,833,2,1979,4,1,1,1283,}, + {1,827,4,1,23,3,2,1,23,1,2,1979,1,1284,}, + {1,827,4,1,23,4,2,1980,1,1284,}, + {1,827,2,1983,4,2,1,1284,}, + {1,827,2,1983,4,2,1,1284,}, + {1,827,2,1983,4,2,1,1284,}, + {1,818,4,1,2,1989,1,1,4,1,1,1286,}, + {1,818,4,1,2,1989,4,1,1,1287,}, + {1,814,2,1992,4,2,1,1288,}, + {1,814,2,1992,4,2,1,1288,}, + {1,812,4,2,2,1990,4,2,1,1290,}, + {1,812,4,2,2,1990,4,2,1,1290,}, + {1,812,4,2,2,1990,4,2,1,1290,}, + {1,805,23,3,1,4,2,1990,4,2,1,1292,}, + {1,805,23,3,1,4,2,1990,4,2,1,1292,}, + {1,804,4,1,2,1994,23,2,1,1295,}, + {1,802,4,2,1,1,2,1994,23,2,1,1295,}, + {1,802,4,3,2,1991,4,3,1,1297,}, + {1,802,4,3,2,1991,4,3,1,1297,}, + {1,802,4,3,2,1991,4,3,1,1297,}, + {1,801,4,1,23,3,2,1990,4,1,1,1300,}, + {1,801,4,1,23,3,2,1990,4,1,1,1300,}, + {1,796,4,1,2,1996,23,2,1,1301,}, + {1,796,4,1,2,1996,23,2,1,1301,}, + {1,791,23,2,2,2000,1,1303,}, + {1,791,23,2,2,2000,1,1303,}, + {1,791,23,2,2,1999,23,1,1,1303,}, + {1,790,23,1,2,2000,1,1305,}, + {1,790,23,1,2,2000,1,1305,}, + {1,782,4,6,2,2002,23,1,1,1305,}, + {1,782,4,6,2,2002,23,1,1,1305,}, + {1,779,4,1,23,2,2,2005,23,3,1,1306,}, + {1,780,23,2,2,2005,23,3,1,1306,}, + {1,780,23,2,2,2005,23,3,1,1306,}, + {1,771,4,2,1,4,2,2009,23,1,1,1309,}, + {1,771,4,1,1,1,4,1,1,3,2,1,23,1,2,2006,23,1,2,1,1,1309,}, + {1,768,23,3,2,2014,1,1311,}, + {1,768,23,3,2,2014,1,1311,}, + {1,768,2,2016,1,1312,}, + {1,766,4,1,1,1,2,2016,1,1312,}, + {1,768,2,2016,1,1312,}, + {1,763,23,1,4,1,2,2017,4,2,1,1312,}, + {1,763,23,2,2,2017,4,2,1,1312,}, + {1,762,2,2017,4,3,1,1314,}, + {1,762,2,2017,4,3,1,1314,}, + {1,756,4,1,23,3,2,2016,23,2,1,1318,}, + {1,756,4,1,23,3,2,2016,23,2,1,1318,}, + {1,750,4,1,1,5,4,1,23,3,2,2016,23,2,1,1318,}, + {1,751,2,2025,1,1320,}, + {1,751,2,2025,1,1320,}, + {1,746,2,2029,1,1321,}, + {1,746,2,2027,23,2,1,1321,}, + {1,745,23,1,2,2027,1,1323,}, + {1,745,23,1,2,2027,1,1323,}, + {1,745,23,1,2,2027,1,1323,}, + {1,741,4,2,2,2027,4,3,1,1323,}, + {1,741,4,2,2,2027,4,3,1,1323,}, + {1,739,23,2,2,2028,23,1,1,1326,}, + {1,739,2,2031,1,1326,}, + {1,726,4,9,23,2,2,2030,4,2,1,1327,}, + {1,726,4,9,23,2,2,2030,4,2,1,1327,}, + {1,726,4,9,23,2,2,2030,4,2,1,1327,}, + {1,726,2,2039,4,2,1,1329,}, + {1,726,2,2039,23,2,1,1329,}, + {1,726,2,2038,4,1,1,1331,}, + {1,726,2,2038,4,1,1,1331,}, + {1,725,4,1,2,2036,23,2,1,1332,}, + {1,725,4,1,2,2036,23,2,1,1332,}, + {1,725,4,1,2,2036,23,2,1,1332,}, + {1,719,2,2043,4,2,1,1332,}, + {1,719,2,2043,4,2,1,1332,}, + {1,711,23,4,2,2044,4,3,1,1334,}, + {1,711,23,4,2,2044,4,3,1,1334,}, + {1,709,2,2049,4,1,1,1337,}, + {1,709,2,2049,4,1,1,1337,}, + {1,709,2,2049,4,1,1,1337,}, + {1,709,2,2047,4,2,1,1338,}, + {1,709,2,2047,4,2,1,1338,}, + {1,707,4,1,2,2046,4,2,1,1340,}, + {1,708,2,2046,4,2,1,1340,}, + {1,700,4,6,2,2047,4,1,1,1342,}, + {1,700,4,6,2,2047,4,1,1,1342,}, + {1,700,4,6,2,2047,4,1,1,1342,}, + {1,697,23,1,2,2053,23,1,2,1,1,1343,}, + {1,697,23,1,2,2052,23,1,2,2,1,1343,}, + {1,687,4,8,2,2055,1,1346,}, + {1,687,4,8,2,2055,1,1346,}, + {1,683,2,2065,1,1348,}, + {1,683,2,2065,1,1348,}, + {1,683,2,2065,1,1348,}, + {1,672,4,3,1,2,4,3,2,2065,23,1,2,1,1,1349,}, + {1,672,4,4,1,2,4,2,2,2066,23,1,1,1349,}, + {1,670,2,2072,23,3,1,1351,}, + {1,670,2,2072,23,3,1,1351,}, + {1,670,2,2072,1,1354,}, + {1,670,2,2072,1,1354,}, + {1,670,2,2072,1,1354,}, + {1,663,23,1,1,3,4,2,23,1,2,2071,4,1,1,1354,}, + {1,663,23,1,1,3,4,2,23,1,2,2071,4,1,1,1354,}, + {1,661,2,2080,1,1355,}, + {1,661,2,2080,1,1355,}, + {1,658,23,1,2,2080,4,2,1,1355,}, + {1,658,23,1,2,2080,4,2,1,1355,}, + {1,658,23,1,2,2080,4,2,1,1355,}, + {1,653,4,2,2,2084,1,1357,}, + {1,653,4,2,2,2084,1,1357,}, + {1,647,4,3,2,145,23,1,4,2,23,3,2,1936,23,2,1,1357,}, + {1,647,4,3,2,142,23,1,4,14,23,2,2,1928,23,2,1,1357,}, + {1,647,2,143,23,1,4,23,23,1,2,1922,4,2,1,1357,}, + {1,647,2,140,23,1,4,28,2,1921,4,2,1,1357,}, + {1,647,2,1,23,1,2,135,23,1,4,32,23,1,2,1919,4,2,1,1357,}, + {1,641,4,3,2,138,4,37,2,1918,4,2,1,1357,}, + {1,641,4,3,2,136,4,40,23,1,2,1916,4,2,1,1357,}, + {1,635,2,144,4,43,2,1915,4,2,1,1357,}, + {1,635,2,143,4,45,23,1,2,1913,4,2,1,1357,}, + {1,629,4,6,2,142,4,48,2,1912,4,2,1,1357,}, + {1,629,4,6,2,141,23,1,4,49,23,1,2,1910,4,2,1,1357,}, + {1,629,4,6,2,140,23,1,4,52,2,1909,4,2,1,1357,}, + {1,627,4,2,2,145,23,1,4,53,23,1,2,1908,4,2,1,1357,}, + {1,627,4,2,2,145,4,55,2,1908,4,2,1,1357,}, + {1,624,4,3,2,146,4,56,2,1908,23,2,1,1357,}, + {1,624,4,3,2,145,4,24,23,10,4,1,1,1,4,22,2,1907,23,2,1,1357,}, + {1,618,4,2,2,2,23,2,2,147,4,22,23,17,4,20,23,1,2,1908,1,1357,}, + {1,618,4,2,2,2,23,2,2,146,23,1,4,19,23,21,4,20,2,1908,1,1357,}, + {1,618,4,2,2,2,23,2,2,145,23,1,4,18,23,25,4,18,23,1,2,1907,1,1357,}, + {1,618,2,151,23,1,4,17,23,27,4,18,2,1907,1,1357,}, + {1,618,2,151,4,17,1,1,23,29,4,16,23,1,2,1906,1,1357,}, + {1,615,23,1,2,153,4,16,1,1,23,31,4,16,2,1906,23,2,1,1355,}, + {1,615,23,1,2,153,4,16,23,32,4,16,23,1,2,1905,23,2,1,1355,}, + {1,609,2,160,4,15,23,34,4,16,2,1907,4,1,1,1354,}, + {1,609,2,159,23,1,4,14,23,35,4,16,23,1,2,1906,4,1,1,1354,}, + {1,607,2,161,4,15,23,36,4,15,23,1,2,1907,1,1354,}, + {1,607,2,161,4,14,1,1,23,36,1,1,4,14,23,1,2,1907,1,1354,}, + {1,607,2,161,4,14,23,38,4,15,2,1907,1,1354,}, + {1,604,23,1,2,163,4,14,23,38,1,1,4,14,2,1907,4,3,1,1351,}, + {1,599,4,1,1,4,23,1,2,162,23,1,4,14,23,39,4,14,2,1907,23,1,4,2,1,1351,}, + {1,598,23,1,2,168,4,15,23,39,4,14,2,1910,23,2,1,1349,}, + {1,598,23,1,2,168,4,14,1,1,23,38,4,15,2,1910,23,2,1,1349,}, + {1,598,2,169,4,15,23,38,4,15,2,1912,4,1,1,1348,}, + {1,598,2,169,4,15,23,38,4,14,23,1,2,1912,4,1,1,1348,}, + {1,598,2,169,23,1,4,15,23,36,4,15,2,1913,4,1,1,1348,}, + {1,588,4,2,23,2,4,2,2,174,4,15,23,36,4,15,2,1916,1,1346,}, + {1,588,4,2,23,2,4,2,2,174,4,15,23,36,4,14,23,1,2,1916,1,1346,}, + {1,587,4,1,2,181,4,15,23,34,4,15,2,1917,23,1,4,2,1,1343,}, + {1,587,4,1,2,181,4,15,23,33,1,1,4,15,2,1917,4,1,23,2,1,1343,}, + {1,582,4,2,1,1,4,2,2,182,23,1,4,15,23,31,4,17,2,1920,1,1343,}, + {1,582,4,5,2,183,4,17,23,28,4,17,23,1,2,1920,1,1343,}, + {1,581,23,1,2,188,4,18,23,26,1,1,4,17,2,1922,1,1342,}, + {1,581,23,1,2,188,23,1,4,18,23,24,4,19,2,1922,1,1342,}, + {1,579,2,192,4,19,23,22,1,1,4,18,23,1,2,1924,1,1340,}, + {1,579,2,192,4,20,1,1,23,17,4,22,2,1925,1,1340,}, + {1,577,23,1,2,193,23,1,4,24,1,1,23,8,1,1,4,25,2,1925,23,2,1,1338,}, + {1,577,23,2,2,193,4,57,23,1,2,1926,23,2,1,1338,}, + {1,577,2,1,23,1,2,194,4,55,23,1,2,1927,23,1,2,1,1,1338,}, + {1,571,4,2,2,201,4,53,23,1,2,1931,4,3,1,1334,}, + {1,571,4,2,2,202,4,51,23,1,2,1932,4,3,1,1334,}, + {1,565,4,3,23,2,2,206,23,1,4,48,23,1,2,1938,4,1,1,1331,}, + {1,565,4,3,2,1,23,1,2,207,23,1,4,46,23,1,2,1937,23,1,2,1,4,1,1,1331,}, + {1,560,4,4,1,1,23,3,2,211,4,44,23,1,2,1941,23,1,2,1,1,1329,}, + {1,559,4,3,1,1,4,1,1,1,23,3,2,212,4,42,2,1944,23,1,1,1329,}, + {1,559,4,5,1,1,23,3,2,213,4,40,2,1944,23,1,2,1,1,1329,}, + {1,559,23,1,2,4,23,1,2,217,23,1,4,37,2,1949,1,1327,}, + {1,559,23,1,2,4,23,1,2,218,23,1,4,35,2,1950,1,1327,}, + {1,559,23,1,2,225,23,1,4,29,23,1,2,1954,4,2,1,1324,}, + {1,559,23,1,2,229,23,1,4,21,23,1,2,1958,1,1,4,2,1,1323,}, + {1,554,4,2,23,3,2,235,23,1,4,12,23,2,2,1964,23,2,1,1321,}, + {1,554,4,2,23,3,2,239,23,2,4,4,23,1,2,1968,23,2,1,1321,}, + {1,554,4,2,23,3,2,2214,23,2,1,1321,}, + {1,553,2,2222,4,1,1,1320,}, + {1,553,2,2222,4,1,1,1320,}, + {1,553,2,2222,4,1,1,1320,}, + {1,553,2,2222,4,1,1,1320,}, + {1,549,2,2227,1,1320,}, + {1,549,2,2227,1,1320,}, + {1,549,2,2227,1,1320,}, + {1,548,2,2228,4,2,1,1318,}, + {1,548,23,1,2,2227,4,2,1,1318,}, + {1,548,23,1,2,2227,23,2,1,1318,}, + {1,548,23,1,2,2227,23,2,1,1318,}, + {1,548,2,2230,4,1,1,1317,}, + {1,548,2,2230,4,1,1,1317,}, + {1,548,2,2230,4,1,1,1317,}, + {1,545,4,3,2,2231,1,1317,}, + {1,545,4,3,2,2231,1,1317,}, + {1,545,4,3,2,2234,4,2,1,1312,}, + {1,545,4,3,2,2234,4,1,1,1313,}, + {1,548,23,1,2,2235,1,1312,}, + {1,548,23,1,2,2235,1,1312,}, + {1,548,23,1,2,2235,1,1312,}, + {1,548,23,1,2,2236,1,1311,}, + {1,548,23,1,2,2236,1,1311,}, + {1,549,23,4,2,2232,23,2,1,1309,}, + {1,549,23,4,2,2232,23,2,1,1309,}, + {1,553,4,1,2,2233,4,3,1,1306,}, + {1,553,4,1,2,2233,4,3,1,1306,}, + {1,554,2,2233,4,3,1,1306,}, + {1,556,2,2234,23,1,1,1305,}, + {1,556,2,2234,4,1,1,1305,}, + {1,556,4,6,23,2,2,2227,4,2,1,1303,}, + {1,556,4,4,1,1,4,2,23,1,2,2227,4,2,1,1303,}, + {1,562,4,2,2,2229,23,1,4,1,1,1301,}, + {1,562,4,2,2,2229,4,1,23,1,1,1301,}, + {1,562,4,2,2,2229,4,2,1,1301,}, + {1,564,2,2231,1,1301,}, + {1,564,2,2231,1,1301,}, + {1,568,2,2227,4,1,1,1300,}, + {1,568,2,2227,4,1,1,1300,}, + {1,570,2,2226,4,3,1,1297,}, + {1,568,4,1,1,1,2,2226,4,3,1,1297,}, + {1,570,2,2226,4,1,1,1,4,1,1,1297,}, + {1,570,2,1,23,1,2,2227,4,2,1,1295,}, + {1,570,2,2229,4,2,1,1295,}, + {1,573,2,2228,23,1,1,1294,}, + {1,573,2,2228,23,1,1,1294,}, + {1,573,2,3,1,1,23,1,2,2224,23,1,2,1,1,1292,}, + {1,573,2,3,1,1,2,2226,23,1,1,1292,}, + {1,573,2,3,1,1,23,1,2,2224,23,1,2,1,1,1292,}, + {1,573,4,3,1,3,4,1,1,1,2,2225,4,2,1,1288,}, + {1,573,4,3,1,4,4,1,2,2225,4,1,1,1289,}, + {1,581,2,2227,4,1,1,1287,}, + {1,581,2,2227,4,2,1,1286,}, + {1,582,23,3,2,2225,1,1286,}, + {1,582,23,3,2,2224,23,1,1,1286,}, + {1,587,4,1,2,2222,4,2,1,1284,}, + {1,587,23,1,2,2222,4,2,1,1284,}, + {1,587,4,1,2,2222,23,1,4,1,1,1284,}, + {1,587,4,1,2,2224,1,1284,}, + {1,587,4,1,2,2224,1,1284,}, + {1,590,4,2,2,2220,23,1,1,1283,}, + {1,590,4,2,2,2220,23,1,1,1283,}, + {1,533,23,10,4,2,1,47,23,1,4,3,2,2217,23,1,4,1,1,1281,}, + {1,533,23,10,4,2,1,47,4,1,23,1,4,2,2,2217,4,2,1,1281,}, + {1,533,23,10,4,2,1,47,4,4,2,2217,4,2,1,1281,}, + {1,533,2,18,1,43,4,2,2,2219,23,3,1,1278,}, + {1,533,2,18,1,43,4,2,2,2219,23,3,1,1278,}, + {1,527,4,1,23,5,2,20,23,41,4,2,1,2,23,1,2,2220,4,2,1,1275,}, + {1,527,4,1,23,4,4,1,2,20,23,41,4,2,1,2,23,1,2,2220,4,2,1,1275,}, + {1,527,23,1,2,2293,1,1275,}, + {1,527,23,1,2,2293,1,1275,}, + {1,527,23,1,2,2293,1,1275,}, + {1,523,4,2,2,2296,4,2,1,1273,}, + {1,523,23,1,4,1,2,2296,4,2,1,1273,}, + {1,522,4,1,2,2300,1,1273,}, + {1,522,4,1,2,2300,1,1273,}, + {1,522,4,1,2,2300,23,1,1,1272,}, + {1,522,4,1,2,2300,23,1,1,1272,}, + {1,522,4,1,2,2300,23,1,1,1272,}, + {1,522,4,1,2,2304,1,1269,}, + {1,522,4,1,2,2304,4,2,1,1267,}, + {1,523,23,1,2,2305,4,1,1,1266,}, + {1,523,23,2,2,2304,23,1,1,1266,}, + {1,522,4,1,2,2307,4,2,1,1264,}, + {1,522,4,1,2,2307,4,2,1,1264,}, + {1,522,4,1,2,2307,4,2,1,1264,}, + {1,522,4,1,2,2309,23,2,4,2,1,1260,}, + {1,522,4,1,2,2310,23,1,4,2,1,1260,}, + {1,522,4,1,2,2313,4,2,1,1258,}, + {1,522,4,1,2,2313,4,2,1,1258,}, + {1,522,4,1,2,2315,4,2,1,1256,}, + {1,522,4,1,2,2315,4,2,1,1256,}, + {1,522,4,1,2,2315,4,2,1,1256,}, + {1,523,2,1916,23,17,2,384,23,1,1,1255,}, + {1,523,2,1916,23,17,2,384,23,1,1,1255,}, + {1,522,4,1,2,1874,1,1,4,7,1,1,4,1,2,8,1,2,23,9,4,8,23,5,1,18,4,1,1,1,23,3,2,381,1,1253,}, + {1,522,4,1,2,1874,1,1,4,3,1,1,4,5,2,8,1,2,2,1,23,8,4,4,1,1,4,3,23,5,1,18,4,2,23,3,2,381,1,1253,}, + {1,522,4,1,2,1851,23,4,2,5,23,14,1,12,4,3,1,59,4,2,23,1,2,2,23,3,1,9,23,2,2,353,4,3,1,1250,}, + {1,522,4,1,2,1851,23,4,2,5,23,11,4,1,23,2,1,12,4,3,1,59,4,2,23,1,2,2,23,3,1,9,23,2,2,353,4,3,1,1250,}, + {1,522,4,1,2,1851,23,4,2,5,23,14,1,12,4,3,1,59,4,2,23,1,2,2,4,1,23,2,1,9,23,2,2,353,4,3,1,1250,}, + {1,523,23,2,2,1847,1,6,4,5,1,93,4,3,1,11,4,29,23,2,2,325,1,1250,}, + {1,523,23,2,2,1847,1,6,4,5,1,94,4,1,1,12,4,29,23,2,2,325,1,1250,}, + {1,525,2,1830,23,3,2,1,23,2,2,1,23,1,1,1,23,2,2,4,1,157,4,1,23,2,2,316,23,1,1,1249,}, + {1,525,2,1829,23,6,2,1,23,2,1,1,23,2,2,1,23,2,2,1,1,157,4,1,23,2,2,316,23,1,1,1249,}, + {1,525,4,2,2,1820,4,6,1,177,4,8,23,1,2,308,1,1249,}, + {1,525,4,2,2,1820,4,6,1,177,4,8,2,309,1,1249,}, + {1,525,4,2,2,1820,4,6,1,177,4,8,23,1,2,308,1,1249,}, + {1,527,2,1813,4,2,1,199,4,3,2,305,1,1247,}, + {1,525,4,1,1,1,2,1813,4,2,1,199,4,3,2,305,1,1247,}, + {1,527,2,1806,4,7,1,205,4,4,2,300,4,2,1,1245,}, + {1,527,23,1,2,1805,4,7,1,205,4,4,23,1,2,299,4,2,1,1245,}, + {1,527,4,1,2,1796,4,1,1,228,4,2,2,296,4,1,1,1244,}, + {1,527,4,1,2,1796,4,1,1,228,4,2,2,296,4,1,1,1244,}, + {1,527,4,1,2,1796,4,1,1,228,4,2,2,296,4,1,1,1244,}, + {1,528,4,3,2,1774,23,2,4,3,23,2,2,2,4,5,1,237,4,4,23,2,2,290,4,3,1,1241,}, + {1,528,4,3,2,1774,23,2,4,3,23,2,2,2,4,5,1,237,4,2,23,1,4,2,23,1,2,290,4,3,1,1241,}, + {1,533,23,1,2,1759,23,1,2,1,23,1,1,285,23,2,2,272,1,1241,}, + {1,533,23,1,2,1760,23,1,2,1,1,285,23,2,2,272,1,1241,}, + {1,534,4,2,2,1748,4,3,23,1,4,1,23,4,1,8,4,2,1,281,4,2,23,3,2,266,4,2,1,1239,}, + {1,534,23,2,2,1748,4,3,23,6,1,8,4,2,1,281,4,2,23,3,2,266,4,2,1,1239,}, + {1,534,23,1,4,1,2,1748,4,3,23,6,1,8,4,2,1,281,4,2,23,3,2,266,4,2,1,1239,}, + {1,536,2,1746,23,2,1,308,4,1,23,2,2,262,1,1239,}, + {1,536,2,1746,23,2,1,309,23,2,2,262,1,1239,}, + {1,536,4,3,2,1732,23,2,1,325,4,1,2,258,23,1,1,1238,}, + {1,536,4,3,2,1732,23,2,1,325,4,1,2,258,23,1,1,1238,}, + {1,539,4,1,2,1724,1,4,4,2,1,333,4,1,2,254,4,2,1,1236,}, + {1,539,4,1,2,1724,1,4,4,2,1,333,23,1,2,254,4,2,1,1236,}, + {1,540,4,2,23,1,2,1708,23,2,1,354,23,5,2,248,4,1,1,1235,}, + {1,540,4,2,23,1,2,1708,23,2,1,354,23,5,2,248,1,1236,}, + {1,543,23,2,2,1700,4,6,1,363,4,2,23,2,2,245,4,1,1,1232,}, + {1,543,23,2,2,1700,4,6,1,363,4,2,23,2,2,245,4,1,1,1232,}, + {1,545,4,3,2,1675,23,9,4,1,1,385,4,2,23,6,2,238,23,2,1,1230,}, + {1,545,4,3,2,1675,23,9,4,2,1,384,4,2,23,6,2,238,23,2,1,1230,}, + {1,545,4,3,2,1675,23,9,4,1,1,386,4,1,23,6,2,238,23,2,1,1230,}, + {1,547,4,4,2,1672,1,403,4,5,23,1,2,234,23,2,1,1228,}, + {1,548,4,3,2,1672,1,403,4,5,23,1,2,234,23,2,1,1228,}, + {1,553,2,1661,23,2,2,1,1,421,23,19,2,211,23,1,1,1227,}, + {1,553,2,1661,23,2,2,1,1,421,23,19,2,211,23,1,1,1227,}, + {1,553,2,1653,4,5,1,446,4,6,23,2,2,204,4,3,1,1224,}, + {1,553,2,1653,4,5,1,446,4,6,23,2,2,204,4,3,1,1224,}, + {1,553,2,1653,4,5,1,446,4,6,23,2,2,204,4,3,1,1224,}, + {1,559,2,1641,1,471,23,1,2,200,1,1224,}, + {1,559,2,1641,1,471,23,1,2,200,1,1224,}, + {1,562,23,2,2,1625,4,4,1,6,23,1,4,1,1,473,4,2,2,197,4,1,1,1222,}, + {1,562,23,2,2,1625,4,4,1,6,23,1,4,2,1,472,4,2,2,197,4,2,1,1221,}, + {1,565,2,1624,1,491,4,2,2,193,1,1221,}, + {1,565,2,1624,1,491,4,2,2,192,23,1,1,1221,}, + {1,565,2,1617,1,1,4,3,23,2,4,1,1,494,4,2,23,1,2,189,1,1221,}, + {1,565,2,1617,1,1,4,3,23,2,4,1,1,494,4,2,23,1,2,189,1,1221,}, + {1,565,2,1617,1,1,4,3,23,2,4,1,1,494,4,2,23,1,2,189,1,1221,}, + {1,565,4,3,2,1606,4,3,1,6,4,2,1,504,23,2,2,184,1,1221,}, + {1,565,4,3,2,1606,4,3,1,8,4,1,1,503,23,2,2,184,1,1221,}, + {1,571,23,2,4,2,23,1,2,1596,4,2,1,521,4,3,23,2,2,175,1,1221,}, + {1,571,23,2,4,1,23,2,2,1596,4,2,1,522,4,2,23,2,2,175,1,1221,}, + {1,577,2,1594,23,1,1,528,4,2,23,1,2,172,1,1221,}, + {1,577,2,1594,23,1,1,528,4,1,1,1,23,1,2,172,1,1221,}, + {1,577,2,1594,23,1,1,528,4,2,23,1,2,172,1,1221,}, + {1,582,4,1,23,1,4,1,2,1587,23,6,1,530,4,1,23,15,2,151,4,2,1,1219,}, + {1,582,23,1,4,2,2,1587,23,6,1,530,4,1,23,15,2,151,4,2,1,1219,}, + {1,582,23,1,4,1,23,1,2,1601,4,2,1,1,2,2,4,3,1,1,4,6,1,1,2,3,4,1,1,518,4,2,1,1,4,3,2,145,23,2,1,1219,}, + {1,582,4,1,23,2,2,1601,4,1,1,2,2,2,4,3,1,1,4,7,2,3,4,1,1,519,4,5,2,145,23,2,1,1219,}, + {1,587,4,1,23,2,2,1618,23,2,4,1,1,522,4,3,23,1,2,140,1,1219,}, + {1,587,4,1,23,2,2,1618,23,2,4,1,1,522,4,3,23,1,2,140,1,1219,}, + {1,587,4,1,23,2,2,1618,23,2,4,1,1,522,4,3,23,1,2,140,1,1219,}, + {1,592,4,2,2,1622,1,523,23,2,2,136,23,1,1,1218,}, + {1,592,4,2,2,1622,1,523,23,2,2,136,23,1,1,1218,}, + {1,596,2,1623,1,523,4,3,23,2,2,130,23,1,1,1218,}, + {1,594,4,1,1,1,2,1623,1,523,4,3,23,2,2,130,23,1,1,1218,}, + {1,596,4,3,2,1621,4,3,2,2,4,1,1,521,4,6,23,1,2,123,23,1,1,1218,}, + {1,596,4,3,2,1621,4,3,2,2,4,1,1,521,4,6,23,1,2,123,23,1,1,1218,}, + {1,596,4,3,2,1621,4,3,2,2,4,1,1,521,4,6,23,1,2,123,23,1,1,1218,}, + {1,598,4,1,2,1626,23,1,1,539,4,2,23,1,2,1,23,1,2,107,4,1,1,1218,}, + {1,598,4,1,2,1626,23,1,1,539,4,2,2,2,23,1,2,107,4,1,1,1218,}, + {1,599,2,6,4,2,2,1619,1,547,4,5,2,9,4,6,2,76,23,3,4,5,1,1219,}, + {1,599,2,6,4,2,2,1619,1,547,4,5,2,9,23,1,4,5,2,76,23,3,4,5,1,1219,}, + {1,607,23,2,2,1619,1,571,4,2,23,1,2,22,4,3,1,24,4,1,23,3,2,8,23,1,1,1232,}, + {1,607,4,1,23,1,2,1619,1,571,4,2,2,23,4,3,1,24,4,1,2,1,23,2,2,8,23,1,1,1232,}, + {1,607,23,2,2,1619,1,571,4,2,2,23,4,3,1,24,4,1,23,1,2,1,23,1,2,8,23,1,1,1232,}, + {1,607,23,2,2,1617,23,1,2,1,1,1868,}, + {1,607,23,2,2,1617,23,2,1,1868,}, + {1,616,23,2,2,1608,23,2,1,1868,}, + {1,616,23,2,2,1608,23,2,1,1868,}, + {1,618,2,1608,23,1,2,1,1,1868,}, + {1,618,2,1608,23,2,1,1868,}, + {1,618,2,1608,23,2,1,1868,}, + {1,622,2,1606,1,1868,}, + {1,622,2,1606,1,1868,}, + {1,624,4,2,23,1,2,1599,4,2,1,1868,}, + {1,624,4,2,23,1,2,1599,4,2,1,1868,}, + {1,629,2,1597,1,1870,}, + {1,629,2,1597,1,1870,}, + {1,629,2,1597,1,1870,}, + {1,632,23,6,2,1587,23,1,1,1870,}, + {1,632,23,6,2,1587,23,1,1,1870,}, + {1,638,4,3,1,1,2,1583,4,1,1,1870,}, + {1,638,4,3,1,1,2,1583,4,1,1,1870,}, + {1,642,2,1583,4,1,1,1870,}, + {1,642,2,1583,4,1,1,1870,}, + {1,642,2,1583,4,1,1,1870,}, + {1,644,4,2,2,1579,4,1,1,1870,}, + {1,644,4,1,1,1,2,1579,4,1,1,1870,}, + {1,646,4,4,1,3,2,1572,4,1,1,1870,}, + {1,646,4,4,1,3,2,1572,4,1,1,1870,}, + {1,653,4,6,2,1566,4,1,1,1870,}, + {1,653,4,6,2,1566,4,1,1,1870,}, + {1,653,4,6,2,1566,4,1,1,1870,}, + {1,664,23,5,1,1,4,2,2,1545,23,2,1,4,2,2,4,1,1,1870,}, + {1,664,23,5,1,1,4,2,2,1545,23,2,1,4,2,2,4,1,1,1870,}, + {1,675,4,3,2,1539,1,1879,}, + {1,675,4,3,2,1539,1,1879,}, + {1,683,4,3,2,1533,1,1877,}, + {1,683,4,3,2,1533,1,1877,}, + {1,683,4,3,2,1533,1,1877,}, + {1,686,4,1,2,1529,4,1,1,1879,}, + {1,686,4,1,2,1,23,1,2,1527,4,1,1,1879,}, + {1,687,4,2,2,2,23,1,1,3,4,2,2,1514,4,3,1,1882,}, + {1,687,4,2,2,2,23,1,1,3,4,2,2,1514,4,3,1,1882,}, + {1,700,4,2,23,2,4,2,2,1504,4,1,1,1885,}, + {1,700,4,2,23,2,4,2,2,1504,4,1,1,1885,}, + {1,700,4,2,23,2,4,2,2,1504,4,1,1,1885,}, + {1,715,23,2,2,1499,23,1,1,1879,}, + {1,715,23,2,2,1499,23,1,1,1879,}, + {1,715,23,2,2,1499,23,1,1,1879,}, + {1,715,23,2,2,1499,23,1,1,1879,}, + {1,717,4,2,1,1,2,1496,23,1,1,1879,}, + {1,717,4,1,1,2,2,1496,23,1,1,1879,}, + {1,717,4,1,1,2,2,1496,23,1,1,1879,}, + {1,726,23,9,2,1481,23,1,1,1879,}, + {1,726,23,9,2,1481,23,1,1,1879,}, + {1,735,23,2,2,1479,23,1,1,1879,}, + {1,735,23,2,2,1479,23,1,1,1879,}, + {1,735,4,2,23,1,2,1,23,2,2,1473,23,2,4,1,1,1879,}, + {1,735,4,2,23,4,2,1473,23,2,4,1,1,1879,}, + {1,735,4,2,23,4,2,1473,23,2,4,1,1,1879,}, + {1,741,2,1473,23,1,2,1,1,1880,}, + {1,741,2,1474,23,1,1,1880,}, + {1,741,23,2,2,1473,1,1880,}, + {1,741,23,2,2,1473,1,1880,}, + {1,743,4,8,23,1,2,1464,1,1880,}, + {1,743,4,8,23,1,2,1464,1,1880,}, + {1,743,4,8,23,1,2,1464,1,1880,}, + {1,752,23,1,4,1,2,1460,23,2,1,1880,}, + {1,752,4,1,23,1,2,1460,23,2,1,1880,}, + {1,754,23,1,4,5,2,1454,23,2,1,1880,}, + {1,754,4,2,1,1,4,3,2,1454,23,2,1,1880,}, + {1,768,2,1443,4,3,1,1882,}, + {1,768,2,1443,4,3,1,1882,}, + {1,768,2,1443,4,3,1,1882,}, + {1,768,2,1443,23,3,1,1882,}, + {1,768,2,1443,23,3,1,1882,}, + {1,771,2,1440,1,1885,}, + {1,771,2,1440,1,1885,}, + {1,773,4,1,23,3,2,1434,1,1885,}, + {1,773,4,1,23,3,2,1434,1,1885,}, + {1,773,4,1,23,3,2,1434,1,1885,}, + {1,782,2,1429,1,1885,}, + {1,782,2,1429,1,1885,}, + {1,786,4,1,1,1,2,1423,1,1885,}, + {1,786,4,2,2,1423,1,1885,}, + {1,788,4,2,1,1,23,2,2,1418,1,1885,}, + {1,788,4,2,1,1,23,2,2,1418,1,1885,}, + {1,788,4,2,1,1,23,2,2,1418,1,1885,}, + {1,802,23,5,2,1403,1,1886,}, + {1,802,23,1,2,1,23,3,2,1403,1,1886,}, + {1,807,4,1,2,1400,4,2,1,1886,}, + {1,807,4,1,2,1400,4,2,1,1886,}, + {1,807,4,1,2,1,23,1,2,1396,4,2,1,1888,}, + {1,807,4,1,2,1398,4,2,1,1888,}, + {1,807,4,1,2,1398,4,2,1,1888,}, + {1,812,4,4,2,2,4,1,23,2,2,1385,1,1890,}, + {1,812,4,4,2,2,4,1,23,2,2,1385,1,1890,}, + {1,825,2,1374,1,1897,}, + {1,825,2,1374,1,1897,}, + {1,825,4,2,2,1,4,5,2,1366,23,1,1,1896,}, + {1,836,4,1,23,1,2,1362,23,2,1,1894,}, + {1,836,4,2,2,1362,23,2,1,1894,}, + {1,836,23,1,4,1,2,1362,23,2,1,1894,}, + {1,842,4,3,2,1357,1,1894,}, + {1,842,4,3,2,1357,1,1894,}, + {1,851,2,1351,1,1894,}, + {1,851,2,1351,1,1894,}, + {1,855,23,1,4,3,2,1346,4,1,1,1890,}, + {1,855,23,1,4,3,2,1343,23,1,2,1,23,1,4,1,1,1890,}, + {1,855,23,1,4,3,2,1344,23,2,4,1,1,1890,}, + {1,861,23,1,2,1344,1,1890,}, + {1,861,23,1,2,1344,1,1890,}, + {1,864,23,3,2,1339,1,1890,}, + {1,864,23,3,2,1339,1,1890,}, + {1,873,2,1333,1,1890,}, + {1,871,4,1,1,1,2,1333,1,1890,}, + {1,873,2,1333,1,1890,}, + {1,881,4,2,23,4,1,2,4,1,23,2,2,1314,1,1890,}, + {1,881,4,2,23,4,1,2,4,1,23,2,2,1314,1,1890,}, + {1,894,4,2,2,4,1,1,4,5,1,1,2,1299,1,1890,}, + {1,894,4,2,2,4,1,1,4,5,1,1,2,1299,1,1890,}, + {1,912,2,1288,4,2,1,1894,}, + {1,911,4,1,2,1288,4,2,1,1894,}, + {1,912,2,1288,4,2,1,1894,}, + {1,912,4,1,1,1,4,2,2,1284,1,1896,}, + {1,912,4,4,2,1284,1,1896,}, + {1,921,23,3,2,1,23,2,2,1,23,3,2,1268,4,1,1,1896,}, + {1,921,23,3,2,1,23,2,2,1,23,3,2,1268,4,1,1,1896,}, + {1,933,4,2,2,1262,4,2,1,1897,}, + {1,933,4,2,2,1262,4,2,1,1897,}, + {1,932,4,3,2,1262,4,2,1,1897,}, + {1,938,4,2,2,1257,4,2,1,1897,}, + {1,938,4,1,1,1,2,1257,4,1,1,1898,}, + {1,944,4,5,2,1246,4,1,1,1900,}, + {1,944,4,5,2,1246,1,1,4,1,1,1899,}, + {1,949,23,1,2,1245,1,1901,}, + {1,949,2,1246,1,1901,}, + {1,949,2,1246,1,1901,}, + {1,955,23,2,4,3,2,1235,1,1901,}, + {1,955,23,2,4,3,2,1235,1,1901,}, + {1,960,4,1,2,1234,1,1901,}, + {1,960,4,1,2,1234,1,1901,}, + {1,971,2,1222,1,1903,}, + {1,971,2,1222,1,1903,}, + {1,971,2,1222,1,1903,}, + {1,980,23,1,4,1,2,1,23,2,1,6,2,1202,1,1,4,1,1,1901,}, + {1,980,4,2,2,1,23,2,1,6,2,1202,4,1,1,1902,}, + {1,991,23,3,2,1197,23,2,1,1903,}, + {1,991,23,3,2,1197,23,2,1,1903,}, + {1,994,4,15,1,2,2,1180,23,2,1,1903,}, + {1,994,4,15,1,2,2,1180,23,2,1,1903,}, + {1,995,4,14,1,2,2,1180,23,2,1,1903,}, + {1,1017,4,2,23,1,4,2,1,9,2,1160,23,2,1,1903,}, + {1,1017,4,2,23,1,4,2,1,9,2,1160,23,2,4,1,1,1902,}, + {1,1030,4,1,2,5,1,1,4,16,23,1,2,1137,1,1905,}, + {1,1031,2,5,4,17,23,1,2,1137,1,1905,}, + {1,1031,2,3,4,2,1,26,23,2,2,1127,1,1905,}, + {1,1031,2,3,4,2,1,26,23,2,2,1127,1,1905,}, + {1,1031,2,3,4,2,1,26,23,2,2,1127,1,1905,}, + {1,1031,4,3,1,31,4,2,2,1122,4,2,1,1905,}, + {1,1031,4,3,1,31,4,2,2,1122,4,2,1,1905,}, + {1,1067,2,1122,1,1907,}, + {1,1067,2,1122,1,1907,}, + {1,1067,23,3,2,3,4,3,2,1113,1,1907,}, + {1,1067,23,3,2,3,4,3,2,1113,1,1907,}, + {1,1067,23,3,2,3,4,3,2,1113,1,1907,}, + {1,1086,23,2,2,1101,1,1907,}, + {1,1086,23,2,2,6,23,1,2,1094,1,1907,}, + {1,1090,4,3,1,2,4,3,2,1090,1,1908,}, + {1,1085,4,1,1,4,4,3,1,2,4,3,2,1090,4,1,1,1907,}, + {1,1099,4,2,2,1087,1,1908,}, + {1,1099,4,2,2,1087,1,1908,}, + {1,1099,4,2,2,1087,1,1908,}, + {1,1108,2,768,23,2,1,3,2,307,4,1,1,1907,}, + {1,1108,2,768,23,2,1,3,2,307,4,1,1,1907,}, + {1,1112,4,1,1,5,23,1,2,753,1,4,2,2,1,3,4,3,2,305,1,1907,}, + {1,1112,4,1,1,5,23,1,2,753,1,4,2,2,1,3,4,3,2,305,1,1907,}, + {1,1121,4,2,1,2,4,2,23,5,2,735,23,3,4,2,1,4,23,1,4,1,1,6,4,2,23,2,4,1,2,300,1,1907,}, + {1,1121,4,2,1,2,4,2,23,5,2,735,23,3,4,2,1,4,23,1,4,1,1,6,4,2,23,3,2,300,1,1907,}, + {1,1121,4,2,1,2,4,2,23,5,2,735,23,1,4,1,23,1,4,2,1,4,23,1,4,1,1,6,4,2,23,3,2,300,1,1907,}, + {1,1132,23,3,2,732,1,24,23,2,2,295,23,1,1,1907,}, + {1,1132,23,3,2,730,23,1,2,1,1,24,23,2,2,295,23,1,1,1907,}, + {1,1144,4,2,23,6,2,709,4,2,1,30,2,295,1,1908,}, + {1,1144,4,2,23,6,2,709,4,2,1,30,2,295,1,1908,}, + {1,1152,4,3,1,2,23,1,2,697,4,6,1,32,4,2,1,2,2,15,1,2,23,1,2,271,4,2,1,1908,}, + {1,1152,4,4,1,1,23,1,2,697,4,3,1,1,4,2,1,32,4,2,1,2,2,15,1,2,23,1,2,271,4,2,1,1908,}, + {1,1152,4,3,1,2,23,1,2,697,4,6,1,32,4,2,1,2,2,15,1,2,23,1,2,271,4,2,1,1908,}, + {1,1157,23,1,2,697,4,3,1,40,4,2,2,2,23,1,2,9,1,2,4,1,2,2,23,2,2,267,23,2,1,1908,}, + {1,1157,23,1,2,697,4,3,1,40,4,2,2,12,1,2,4,1,2,2,23,2,2,267,23,2,1,1908,}, + {1,1158,2,697,1,48,4,3,23,2,2,1,1,6,4,2,1,4,2,265,23,2,1,1908,}, + {1,1158,2,697,1,48,4,3,23,2,2,1,1,6,4,2,1,4,2,265,23,2,1,1908,}, + {1,1161,2,685,23,2,2,2,4,2,1,54,4,3,1,12,2,265,4,2,1,1908,}, + {1,1160,4,1,2,685,23,3,2,1,4,2,1,54,4,3,1,12,2,265,4,2,1,1908,}, + {1,1161,2,685,23,2,2,1,23,1,4,2,1,54,4,3,1,12,2,265,4,2,1,1908,}, + {1,1161,2,682,23,1,4,2,1,77,2,263,1,1910,}, + {1,1161,2,682,23,1,4,2,1,77,2,263,1,1910,}, + {1,1161,4,2,2,678,23,2,1,83,2,257,23,3,1,1910,}, + {1,1161,4,2,2,678,23,2,1,83,2,257,23,3,1,1910,}, + {1,1164,2,675,1,87,23,2,2,258,1,1910,}, + {1,1164,2,675,1,87,23,2,2,258,1,1910,}, + {1,1164,2,675,1,87,23,2,2,258,1,1910,}, + {1,1164,2,674,1,93,2,252,1,1913,}, + {1,1164,2,674,1,93,2,252,1,1913,}, + {1,1164,4,2,2,660,4,4,23,1,4,1,23,1,1,99,2,13,1,1,4,5,2,235,1,1910,}, + {1,1164,4,2,2,660,4,6,23,1,1,99,2,13,1,1,4,5,2,235,1,1910,}, + {1,1168,2,658,1,106,2,13,1,7,2,234,4,3,1,1907,}, + {1,1168,2,658,1,106,2,13,1,7,2,234,4,3,1,1907,}, + {1,1168,2,658,1,106,2,13,1,7,2,234,4,3,1,1907,}, + {1,1168,2,648,4,1,23,4,4,1,1,115,2,6,23,2,1,13,2,225,1,1913,}, + {1,1168,2,648,23,5,4,1,1,115,2,6,4,1,23,1,1,13,2,225,1,1913,}, + {1,1168,4,1,2,642,4,2,1,147,2,226,1,1910,}, + {1,1168,23,1,2,642,4,2,1,147,2,226,1,1910,}, + {1,1168,4,1,2,630,23,5,1,1,2,2,23,1,2,1,23,2,4,2,1,147,4,1,23,1,2,224,1,1910,}, + {1,1168,4,1,2,630,23,5,1,1,2,2,23,4,4,2,1,147,4,2,2,224,1,1910,}, + {1,1168,4,1,2,630,23,5,1,1,2,2,23,4,4,2,1,147,4,2,2,224,1,1910,}, + {1,1169,2,629,23,1,1,6,4,2,1,156,2,223,1,1910,}, + {1,1169,2,629,23,1,1,6,4,2,1,156,2,223,1,1910,}, + {1,1169,2,619,23,6,4,2,23,2,1,168,2,211,1,5,23,1,1,1913,}, + {1,1169,2,619,23,6,4,2,23,2,1,168,2,211,1,5,23,1,1,1913,}, + {1,1171,4,1,2,155,4,1,23,2,2,452,4,6,1,178,4,2,2,214,1,1914,}, + {1,1172,2,155,4,1,23,1,4,1,2,452,1,1,4,1,1,1,4,3,1,179,4,1,2,214,1,1914,}, + {1,1172,2,155,4,1,23,2,2,452,4,6,1,178,4,2,2,214,1,1914,}, + {1,1172,23,2,2,150,23,3,4,1,1,8,23,3,1,2,23,1,2,1,23,4,2,413,23,10,4,1,1,198,2,1,23,1,2,198,23,2,4,1,23,8,1,1916,}, + {1,1172,23,2,2,150,23,3,4,1,1,8,23,3,1,2,2,1,23,5,2,413,23,10,4,1,1,198,23,2,2,198,23,2,4,1,23,8,1,1916,}, + {1,1174,2,150,1,23,2,412,23,1,1,209,23,2,2,200,1,1925,}, + {1,1174,2,150,1,6,4,1,1,16,2,412,23,1,1,209,23,2,2,200,1,1925,}, + {1,1174,2,150,4,3,1,37,2,4,23,4,2,353,23,1,2,1,23,5,2,4,23,8,2,9,4,1,1,219,2,198,23,1,1,1924,}, + {1,1174,2,150,4,3,1,37,23,2,2,1,23,1,2,1,23,3,2,353,23,1,2,2,23,1,2,2,23,2,2,3,23,8,2,6,23,1,2,2,23,1,1,219,2,198,23,1,1,1924,}, + {1,1174,2,150,4,3,1,37,2,3,23,5,2,354,23,1,2,3,23,3,2,3,23,8,2,9,23,1,1,219,2,199,1,1924,}, + {1,1174,4,1,2,155,4,2,1,40,4,3,1,2,4,18,2,14,4,9,2,285,23,2,4,8,23,1,2,9,4,2,1,9,4,2,1,8,4,4,1,226,2,197,23,1,1,1924,}, + {1,1174,4,1,2,155,4,2,1,40,4,3,1,3,4,17,2,14,4,9,2,285,23,2,4,7,23,1,4,1,2,9,4,2,1,9,4,2,1,8,4,4,1,226,2,197,23,1,1,1924,}, + {1,1175,2,157,1,93,4,2,2,132,1,2,2,90,23,1,2,9,4,2,1,9,2,11,4,1,1,10,2,3,1,280,2,194,23,1,1,1924,}, + {1,1175,2,157,1,93,4,2,2,132,1,2,2,100,4,2,1,9,2,11,4,1,1,10,2,3,1,280,2,194,23,1,1,1924,}, + {1,1175,4,2,2,155,1,117,4,10,1,6,4,21,1,5,4,5,23,1,2,3,4,11,1,19,4,11,2,9,23,2,4,4,1,22,4,7,2,32,4,15,1,20,4,8,1,317,4,2,2,192,1,1925,}, + {1,1175,4,2,2,155,1,117,4,10,1,6,4,21,1,2,4,1,1,2,4,5,23,1,2,3,4,11,1,19,4,11,2,9,23,2,4,4,1,22,4,7,2,32,4,15,1,20,4,8,1,317,4,2,2,192,1,1925,}, + {1,1175,4,2,2,155,1,117,4,10,1,6,4,21,1,4,4,6,23,1,2,3,4,11,1,19,4,11,2,10,23,1,4,4,1,22,4,7,2,32,4,15,1,20,4,8,1,317,4,2,2,192,1,1925,}, + {1,1177,23,3,2,150,4,2,1,648,2,192,1,1924,}, + {1,1177,23,3,2,150,4,2,1,648,2,192,1,1924,}, + {1,1180,2,150,4,2,1,648,23,2,2,192,1,1922,}, + {1,1180,2,150,4,2,1,648,23,2,2,192,1,1922,}, + {1,1177,4,1,1,2,2,150,4,2,1,648,4,1,1,1,2,192,4,1,1,1921,}, + {1,1180,2,150,4,2,1,650,2,192,1,1922,}, + {1,1180,2,150,4,2,1,648,4,1,1,1,2,192,4,1,1,1921,}, + {1,1180,4,1,2,149,4,2,1,650,4,3,2,192,1,1919,}, + {1,1180,4,1,2,149,4,2,1,650,4,3,2,192,1,1919,}, + {1,1181,2,149,4,2,1,654,2,188,23,3,1,1919,}, + {1,1181,4,2,23,2,2,145,4,2,1,654,4,2,23,2,2,187,4,1,1,1918,}, + {1,1181,4,2,23,2,2,145,4,2,1,654,4,2,23,2,2,187,4,1,1,1918,}, + {1,1183,4,2,2,145,4,2,1,658,23,1,2,186,4,1,1,1918,}, + {1,1183,4,1,1,1,2,145,4,2,1,658,23,1,2,186,4,1,1,1918,}, + {1,1183,4,2,2,145,4,2,1,658,23,1,2,186,4,1,1,1918,}, + {1,1183,4,2,2,147,1,659,4,3,2,183,4,1,1,1918,}, + {1,1183,4,2,2,147,1,659,4,3,2,183,4,1,1,1918,}, + {1,1183,4,2,2,147,1,662,23,2,2,181,4,1,1,1918,}, + {1,1183,4,2,2,147,1,662,23,2,2,181,4,1,1,1918,}, + {1,1185,2,147,1,664,4,1,2,180,4,1,1,1918,}, + {1,1184,4,1,2,147,1,664,4,1,2,180,4,1,1,1918,}, + {1,1185,2,147,1,664,4,1,2,180,4,1,1,1918,}, + {1,1185,23,1,2,146,1,665,23,2,2,178,4,1,1,1918,}, + {1,1185,23,1,2,146,1,665,23,2,2,178,4,1,1,1918,}, + {1,1189,2,144,1,666,4,2,2,176,4,1,1,1918,}, + {1,1189,2,144,1,666,4,2,2,176,4,1,1,1918,}, + {1,1186,4,2,1,1,2,143,4,1,1,668,4,2,2,174,4,1,1,1918,}, + {1,1186,4,3,2,143,4,1,1,668,4,2,2,174,4,1,1,1918,}, + {1,1186,4,3,2,143,4,1,1,668,4,2,2,174,4,1,1,1918,}, + {1,1186,4,3,2,143,1,673,2,169,23,3,1,1919,}, + {1,1186,4,3,2,143,1,673,2,169,23,3,1,1919,}, + {1,1189,2,143,1,675,2,164,23,1,1,1924,}, + {1,1189,2,143,1,675,2,164,23,1,1,1924,}, + {1,1189,23,2,2,141,1,676,2,17,23,2,4,1,23,1,2,142,23,1,1,1924,}, + {1,1189,23,2,2,141,1,676,2,17,23,2,4,2,2,142,23,1,1,1924,}, + {1,1189,23,2,2,141,1,676,2,17,23,2,4,2,2,142,23,1,1,1924,}, + {1,1189,4,2,23,1,4,1,23,1,2,138,1,678,4,3,23,1,2,10,23,1,1,4,4,2,2,141,1,1924,}, + {1,1189,4,2,23,1,4,2,2,138,1,678,4,3,23,1,2,11,1,4,4,2,2,141,1,1924,}, + {1,1194,2,138,1,682,4,2,2,8,4,1,1,6,23,2,2,141,1,1922,}, + {1,1194,2,138,1,682,4,2,2,8,4,1,1,6,23,2,2,141,1,1922,}, + {1,1194,2,138,1,684,4,2,23,1,2,5,4,1,1,9,2,140,1,1922,}, + {1,1194,2,138,1,684,4,2,23,1,2,5,4,1,1,9,2,140,1,1922,}, + {1,1194,2,138,1,684,4,2,23,1,2,5,4,1,1,9,2,140,1,1922,}, + {1,1194,2,138,1,704,2,138,1,1922,}, + {1,1194,2,138,1,704,2,138,1,1922,}, + {1,1195,2,137,1,706,4,2,2,134,1,1922,}, + {1,1195,2,137,1,706,4,2,2,134,1,1922,}, + {1,1198,2,134,1,708,4,2,2,132,1,1922,}, + {1,1198,2,134,1,708,4,2,2,132,1,1922,}, + {1,1198,2,134,1,708,4,2,2,132,1,1922,}, + {1,1198,2,134,1,713,2,132,4,1,1,1918,}, + {1,1198,2,134,1,713,2,132,4,1,1,1918,}, + {1,1200,2,132,1,711,4,1,1,1,2,132,4,1,1,1918,}, + {1,1199,4,1,2,132,1,713,2,132,4,1,1,1918,}, + {1,1200,2,132,1,713,4,2,2,130,4,1,1,1918,}, + {1,1200,2,132,1,713,4,2,2,130,4,1,1,1918,}, + {1,1200,2,132,1,713,4,2,2,130,4,1,1,1918,}, + {1,1201,2,131,1,713,4,5,2,127,1,1919,}, + {1,1201,2,131,1,713,4,5,2,127,1,1919,}, + {1,1203,2,129,1,721,4,1,1,1,2,119,23,3,1,1919,}, + {1,1203,2,129,1,722,4,1,2,119,23,3,1,1919,}, + {1,1203,4,2,2,127,1,728,4,1,2,114,23,2,1,1919,}, + {1,1203,4,2,2,127,1,729,2,116,1,1919,}, + {1,1203,4,2,2,127,1,728,4,1,2,116,1,1919,}, + {1,1203,4,2,2,127,1,730,4,2,2,110,23,1,2,2,1,1919,}, + {1,1203,4,2,2,127,1,730,4,2,2,110,23,3,1,1919,}, + {1,1203,4,2,2,127,1,732,4,3,2,107,23,3,1,1919,}, + {1,1203,4,2,2,127,1,732,4,3,2,107,23,1,2,2,1,1919,}, + {1,1205,2,127,1,735,4,1,2,109,1,1919,}, + {1,1205,2,1,23,1,2,125,1,735,4,1,2,109,1,1919,}, + {1,1205,2,127,1,735,4,1,2,109,1,1919,}, + {1,1205,4,2,2,125,1,736,4,2,1,2,2,105,4,1,1,1918,}, + {1,1205,4,2,2,125,1,736,4,2,1,2,2,105,4,1,1,1918,}, + {1,1207,2,125,1,740,2,105,4,1,1,1918,}, + {1,1207,2,125,1,740,23,1,2,104,4,1,1,1918,}, + {1,1211,2,122,1,740,4,3,2,98,23,1,4,1,23,1,4,1,1,1918,}, + {1,1211,2,122,1,740,4,3,2,98,23,3,4,1,1,1918,}, + {1,1211,2,122,1,740,4,3,2,98,23,3,4,1,1,1918,}, + {1,1211,2,122,1,740,4,3,2,98,1,1922,}, + {1,1211,2,122,1,740,4,3,2,98,1,1922,}, + {1,1211,23,1,2,121,1,743,4,2,23,1,4,2,1,2,4,2,2,92,4,1,1,1918,}, + {1,1211,23,1,2,121,1,743,4,2,23,1,4,2,1,2,4,2,2,92,4,1,1,1918,}, + {1,1211,4,1,2,121,1,752,2,89,1,3,4,1,1,1918,}, + {1,1211,4,1,2,121,1,752,2,89,1,1922,}, + {1,1211,4,1,2,121,1,752,2,89,1,3,4,1,1,1918,}, + {1,1212,4,2,23,3,2,116,23,3,1,754,2,84,4,4,1,1918,}, + {1,1212,4,2,23,3,2,116,23,3,1,754,2,84,4,4,1,1918,}, + {1,1214,2,119,1,757,2,87,4,1,1,1918,}, + {1,1214,2,119,1,757,2,87,4,1,1,1918,}, + {1,1214,2,119,1,756,4,1,2,87,4,1,1,1918,}, + {1,1214,2,119,1,757,2,87,4,1,1,1918,}, + {1,1214,2,119,1,757,2,87,4,1,1,1918,}, + {1,1214,4,4,2,115,1,762,4,1,2,81,4,1,1,1918,}, + {1,1214,4,4,2,115,1,762,4,1,2,81,4,1,1,1918,}, + {1,1220,2,113,1,771,23,2,2,68,23,3,1,1919,}, + {1,1220,2,113,1,771,23,2,2,68,23,1,2,1,23,1,1,1919,}, + {1,1222,4,1,23,3,2,107,1,773,23,1,2,67,4,3,1,1919,}, + {1,1222,4,1,23,3,2,107,1,773,23,1,2,67,4,3,1,1919,}, + {1,1222,4,1,23,3,2,107,1,773,23,1,2,67,4,3,1,1919,}, + {1,1223,4,3,2,107,1,773,4,1,2,67,1,1922,}, + {1,1223,4,3,2,107,1,773,4,1,2,67,1,1922,}, + {1,1226,4,2,2,105,1,778,4,2,2,59,23,2,1,1922,}, + {1,1226,4,2,2,105,1,778,4,2,2,59,23,2,1,1922,}, + {1,1228,4,1,2,104,1,782,2,62,1,1919,}, + {1,1228,4,1,2,104,1,781,4,1,2,62,1,1919,}, + {1,1229,4,2,23,2,4,1,23,1,2,98,1,782,4,2,23,7,4,1,23,1,2,46,23,2,4,3,1,1919,}, + {1,1229,4,2,23,4,2,98,1,782,4,2,23,8,4,1,2,46,23,2,4,3,1,1919,}, + {1,1229,4,2,23,4,2,98,1,782,4,2,23,9,2,46,23,2,4,3,1,1919,}, + {1,1235,4,2,2,96,1,793,4,1,1,2,4,3,2,39,23,1,1,1,4,1,1,1922,}, + {1,1235,4,2,2,96,1,796,4,3,2,40,1,1924,}, + {1,1237,2,96,1,800,2,2,1,3,2,36,4,3,1,1919,}, + {1,1237,2,96,1,800,2,2,1,3,2,36,4,3,1,1919,}, + {1,1239,4,1,2,93,4,3,1,797,4,2,1,6,4,9,23,2,2,25,4,1,1,1918,}, + {1,1239,4,1,2,93,4,3,1,797,4,2,1,6,4,8,1,1,23,2,2,25,4,1,1,1918,}, + {1,1239,4,1,2,93,4,3,1,797,4,2,1,6,4,8,1,1,23,2,2,25,4,1,1,1918,}, + {1,1240,23,2,2,91,4,3,1,814,4,2,23,2,2,23,4,1,1,1918,}, + {1,1240,23,2,2,91,4,3,1,814,4,2,23,2,2,23,4,1,1,1918,}, + {1,1242,4,3,1,1,2,87,1,821,4,3,2,12,4,2,23,1,2,5,1,1919,}, + {1,1242,4,3,1,1,2,87,1,821,4,3,2,12,4,2,23,1,2,5,1,1919,}, + {1,1246,2,86,1,2764,}, + {1,1246,2,86,1,2764,}, + {1,1246,2,86,1,2764,}, + {1,1246,4,2,2,82,4,2,1,2764,}, + {1,1246,4,2,2,82,4,2,1,2764,}, + {1,1248,2,2,1,1,4,3,2,76,4,2,1,2764,}, + {1,1248,2,2,1,1,4,3,2,76,4,2,1,2764,}, + {1,1256,2,74,4,2,1,2764,}, + {1,1256,2,74,4,2,1,2764,}, + {1,1256,2,74,4,2,1,2764,}, + {1,1256,2,74,4,2,1,2764,}, + {1,1256,2,74,4,2,1,2764,}, + {1,1257,4,2,2,71,4,2,1,2764,}, + {1,1257,4,2,2,71,4,2,1,2764,}, + {1,1259,4,3,2,68,4,2,1,2764,}, + {1,1259,4,3,2,68,4,2,1,2764,}, + {1,1259,4,3,2,68,4,2,1,2764,}, + {1,1259,4,3,2,68,4,2,1,2764,}, + {1,1259,4,3,2,68,4,2,1,2764,}, + {1,1259,4,3,2,68,1,2766,}, + {1,1259,4,3,2,68,1,2766,}, + {1,1259,4,3,2,68,1,2766,}, + {1,1259,4,3,2,68,1,2766,}, + {1,1259,4,3,2,68,1,2766,}, + {1,1262,23,1,2,67,1,2766,}, + {1,1262,23,1,2,67,1,2766,}, + {1,1265,4,2,23,1,2,62,1,2766,}, + {1,1265,4,2,23,1,2,62,1,2766,}, + {1,1271,2,59,1,2766,}, + {1,1271,2,57,23,1,2,1,1,2766,}, + {1,1271,2,59,1,2766,}, + {1,1273,2,1,23,2,2,54,4,2,1,2764,}, + {1,1273,23,3,2,54,4,2,1,2764,}, + {1,1276,2,54,4,2,1,2764,}, + {1,1276,2,54,4,2,1,2764,}, + {1,1276,2,54,4,2,1,2764,}, + {1,1276,2,54,4,2,1,2764,}, + {1,1276,2,54,4,2,1,2764,}, + {1,1278,4,2,2,50,1,2766,}, + {1,1280,4,2,2,46,23,2,1,2766,}, + {1,1280,4,2,2,46,23,2,1,2766,}, + {1,1282,2,45,4,1,1,2768,}, + {1,1282,2,45,23,1,1,2768,}, + {1,1282,2,45,4,1,1,2768,}, + {1,1285,23,2,2,43,4,2,1,2764,}, + {1,1285,23,2,2,43,4,2,1,2764,}, + {1,1285,4,2,2,43,4,2,1,2764,}, + {1,1285,4,2,2,43,4,2,1,2764,}, + {1,1287,4,2,2,41,4,2,1,2764,}, + {1,1287,4,2,2,41,4,2,1,2764,}, + {1,1287,4,2,2,41,4,2,1,2764,}, + {1,1289,4,2,2,39,4,2,1,2764,}, + {1,1289,4,2,2,39,4,2,1,2764,}, + {1,1294,4,1,1,1,2,36,1,2764,}, + {1,1295,4,1,2,36,1,2764,}, + {1,1296,2,37,1,2763,}, + {1,1296,2,37,1,2763,}, + {1,1296,2,37,1,2763,}, + {1,1299,2,34,1,2763,}, + {1,1299,2,34,1,2763,}, + {1,1300,2,33,1,2763,}, + {1,1300,2,33,1,2763,}, + {1,1302,4,3,2,28,1,2763,}, + {1,1302,4,3,2,28,1,2763,}, + {1,1302,4,3,2,28,1,2763,}, + {1,1305,4,2,23,1,2,25,1,2763,}, + {1,1305,4,3,2,25,1,2763,}, + {1,1308,4,2,2,23,1,2763,}, + {1,1308,4,2,2,23,1,2763,}, + {1,1311,2,22,1,2763,}, + {1,1311,2,22,1,2763,}, + {1,1311,2,22,1,2763,}, + {1,1311,2,22,1,2763,}, + {1,1311,2,22,1,2763,}, + {1,1313,2,19,23,1,1,2763,}, + {1,1313,2,19,23,1,1,2763,}, + {1,1313,4,2,23,2,2,13,23,2,1,2764,}, + {1,1313,4,2,23,2,2,13,23,2,1,2764,}, + {1,1319,2,9,23,2,1,2766,}, + {1,1319,2,9,23,2,1,2766,}, + {1,1319,2,9,23,2,1,2766,}, + {1,1321,23,3,4,3,1,2769,}, + {1,1321,23,3,4,3,1,2769,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, + {1,4096,}, +} +} \ No newline at end of file diff --git a/maps/fish_defender_v2/main.lua b/maps/fish_defender_v2/main.lua index 07d6b860..be0cb66b 100644 --- a/maps/fish_defender_v2/main.lua +++ b/maps/fish_defender_v2/main.lua @@ -2,6 +2,7 @@ --require "modules.rpg" +require 'maps.fish_defender_v2.terrain' require 'maps.fish_defender_v2.market' require 'maps.fish_defender_v2.commands' require 'maps.fish_defender_v2.shotgun_buff' @@ -12,8 +13,6 @@ require 'modules.biters_yield_coins' require 'modules.dangerous_goods' require 'modules.custom_death_messages' -local Terrain = require 'maps.fish_defender_v2.terrain' -local Task = require 'utils.task' local Unit_health_booster = require 'modules.biter_health_booster' local Difficulty = require 'modules.difficulty_vote' local Map = require 'modules.map_info' @@ -359,8 +358,14 @@ local function spawn_biter(pos, biter_pool) end local function get_y_coord_raffle_table() + local this = FDT.get() local t = {} - for y = -96, 96, 8 do + + --for y = -96, 96, 8 do -- fish + for y = -96, 240, 8 do -- cat + if this.wave_count <= 80 then + y = 0 + end t[#t + 1] = y end shuffle(t) @@ -402,7 +407,9 @@ local function clear_corpses(surface) if this.wave_count > 500 then chance = 2 end - for _, entity in pairs(surface.find_entities_filtered {type = 'corpse'}) do + + local area = {{-137, -256}, {160, 256}} + for _, entity in pairs(surface.find_entities_filtered {area = area, type = 'corpse'}) do if math_random(1, chance) == 1 then entity.destroy() end @@ -655,7 +662,7 @@ local function biter_attack_wave() -- end --end - for _, e in pairs(surface.find_entities_filtered({area = {{110, -256}, {360, 256}}})) do + for _, e in pairs(surface.find_entities_filtered({area = {{160, -256}, {360, 256}}})) do damage_entity_outside_and_inside_of_fence(e) end @@ -673,18 +680,9 @@ local function biter_attack_wave() end local biter_pool = get_biter_pool() - --local spawners = surface.find_entities_filtered({type = "unit-spawner", area = {{160, -196},{512, 196}}}) - --shuffle(spawners) while this.attack_wave_threat > 0 do for i = 1, #unit_groups, 1 do - --local biter - --if spawners[i] then - --biter = spawn_biter(spawners[i].position, biter_pool) - --else - --biter = spawn_biter(unit_groups[i].position, biter_pool) - --end - local biter = spawn_biter(unit_groups[i].position, biter_pool) if biter then unit_groups[i].add_member(biter) @@ -1035,6 +1033,16 @@ local function on_entity_died(event) return end + if event.entity == this.market then + market_kill_visuals() + this.market.die() + this.market = nil + this.market_age = game.tick - this.last_reset + this.game_has_ended = true + is_game_lost() + return + end + if this.entity_limits[event.entity.name] then this.entity_limits[event.entity.name].placed = this.entity_limits[event.entity.name].placed - 1 update_fd_stats() @@ -1168,17 +1176,10 @@ local function on_player_changed_position(event) if not surface or not surface.valid then return end - if player.position.x + player.position.y < 0 then - return - end - if player.position.x < player.position.y then - return - end + if player.position.x >= 160 then - player.teleport({player.position.x - 1, player.position.y}, surface) - if player.position.y > this.map_height or player.position.y < this.map_height * -1 then - player.teleport({player.position.x, 0}, surface) - end + player.teleport({player.position.x - 1, 0}, surface) + if player.character then player.character.health = player.character.health - 25 player.character.surface.create_entity({name = 'water-splash', position = player.position}) @@ -1223,112 +1224,6 @@ local function on_player_respawned(event) player.character.destructible = false end -local function set_objective_health(final_damage_amount) - local this = FDT.get() - if final_damage_amount == 0 then - return - end - - if this.market_health <= 0 then - this.market.health = this.market.health + final_damage_amount - return - end - - this.market_health = math.floor(this.market_health - final_damage_amount) - if this.market_health > this.market_max_health then - this.market_health = this.market_max_health - end - - if this.market_health <= 0 then - market_kill_visuals() - this.market.die() - this.market = nil - this.market_age = game.tick - this.last_reset - this.game_has_ended = true - is_game_lost() - return - end - - local m = this.market_health / this.market_max_health - this.market.health = 150 * m - - rendering.set_text(this.health_text, 'HP: ' .. this.market_health .. ' / ' .. this.market_max_health) -end - -local function protect_entities(event) - local this = FDT.get() - local entity = event.entity - - if not entity or not entity.valid then - return - end - - if not this.market or not this.market.valid then - return - end - - if entity.force.index ~= 1 then - return - end --Player Force - - if event.cause then - if event.cause.force.index == 2 and entity == this.market then - set_objective_health(event.final_damage_amount) - elseif event.cause.force.index == 2 then - return - else - event.entity.health = event.entity.health + event.final_damage_amount - end - end - if entity and entity.valid then - event.entity.health = event.entity.health + event.final_damage_amount - end -end - -local function on_entity_damaged(event) - local entity = event.entity - - if not entity then - return - end - - if not entity.valid then - return - end - - protect_entities(event) -end - -local function on_player_repaired_entity(event) - local this = FDT.get() - if not event.entity then - return - end - if not event.entity.valid then - return - end - if not event.entity.health then - return - end - local entity = event.entity - if entity == this.market then - set_objective_health(-1) - end -end - -local function set_market_health() - local this = FDT.get() - if not this.market then - return - end - if not this.market.valid then - return - end - local m = this.market_health / this.market_max_health - this.market.health = 150 * m - rendering.set_text(this.health_text, 'HP: ' .. this.market_health .. ' / ' .. this.market_max_health) -end - local function has_the_game_ended() local this = FDT.get() if this.market_age then @@ -1413,10 +1308,10 @@ function Public.reset_game() map_gen_settings.terrain_segmentation = 3 map_gen_settings.cliff_settings = {cliff_elevation_interval = 32, cliff_elevation_0 = 32} map_gen_settings.autoplace_controls = { - ['coal'] = {frequency = 3, size = 1.5, richness = 1}, - ['stone'] = {frequency = 3, size = 1.5, richness = 1}, - ['copper-ore'] = {frequency = 3, size = 1.5, richness = 1}, - ['iron-ore'] = {frequency = 3, size = 1.5, richness = 1}, + ['coal'] = {frequency = 4, size = 1.5, richness = 2}, + ['stone'] = {frequency = 4, size = 1.5, richness = 2}, + ['copper-ore'] = {frequency = 4, size = 1.5, richness = 2}, + ['iron-ore'] = {frequency = 4, size = 1.5, richness = 2}, ['uranium-ore'] = {frequency = 0, size = 0, richness = 0}, ['crude-oil'] = {frequency = 5, size = 1.25, richness = 2}, ['trees'] = {frequency = 2, size = 1, richness = 1}, @@ -1437,12 +1332,39 @@ function Public.reset_game() surface.peaceful_mode = false - global.chunk_queue = {} + -- Terrain.fish_eye(surface, {x = -1442, y = -59}) - Terrain.fish_eye(surface, {x = -2150, y = -300}) + --[[ local radius = 200 + --local pos = {x = 419, y = -308} -- fish + local pos = {x = -27, y = -308} -- cat + game.forces.player.chart( + surface, + { + {pos.x - radius - 100, pos.y - radius - 40}, + {pos.x + radius + 250, pos.y + radius} + } + ) - Task.get_task_queue(4) - Task.start_queue() + radius = 50 + -- pos = {x = -1575, y = 2} + -- pos = {x = -1246, y = 74} -- fish + pos = {x = -748, y = -309} -- cat + game.forces.player.chart( + surface, + { + {pos.x - radius, pos.y - radius}, + {pos.x + radius, pos.y + radius} + } + ) ]] + local r = 750 + local p = {x = -131, y = 5} + game.forces.player.chart( + surface, + { + {p.x - r - 200, p.y - r}, + {p.x + r + 600, p.y + r} + } + ) game.map_settings.enemy_expansion.enabled = false game.map_settings.enemy_evolution.destroy_factor = 0 @@ -1473,6 +1395,7 @@ function Public.reset_game() this.market_health = 500 this.market_max_health = 500 + this.spawn_area_generated = false end function Public.on_init() @@ -1480,14 +1403,9 @@ function Public.on_init() local T = Map.Pop_info() T.localised_category = 'fish_defender_v2' + T.main_caption = '-- Chonk Defender -- ' T.main_caption_color = {r = 0.11, g = 0.8, b = 0.44} T.sub_caption_color = {r = 0.33, g = 0.66, b = 0.9} - - local mgs = game.surfaces['nauvis'].map_gen_settings - mgs.width = 16 - mgs.height = 16 - game.surfaces['nauvis'].map_gen_settings = mgs - game.surfaces['nauvis'].clear() end local function on_tick() @@ -1500,7 +1418,6 @@ local function on_tick() if game.tick % 30 == 0 then has_the_game_ended() if this.market then - set_market_health() for _, player in pairs(game.connected_players) do if surface.peaceful_mode == false then create_wave_gui(player) @@ -1509,7 +1426,7 @@ local function on_tick() end if game.tick % 180 == 0 then if surface then - game.forces.player.chart(surface, {{-160, -128}, {192, 128}}) + game.forces.player.chart(surface, {{-160, -160}, {192, 300}}) if Diff.difficulty_vote_index then this.wave_interval = this.difficulties_votes[Diff.difficulty_vote_index].wave_interval end @@ -1527,7 +1444,6 @@ end local on_init = Public.on_init -Event.add(defines.events.on_entity_damaged, on_entity_damaged) Event.add(defines.events.on_gui_click, on_gui_click) Event.add(defines.events.on_market_item_purchased, on_market_item_purchased) Event.add(defines.events.on_player_respawned, on_player_respawned) @@ -1538,7 +1454,6 @@ Event.add(defines.events.on_player_joined_game, on_player_joined_game) Event.add(defines.events.on_player_mined_entity, on_player_mined_entity) Event.add(defines.events.on_research_finished, on_research_finished) Event.add(defines.events.on_robot_built_entity, on_robot_built_entity) -Event.add(defines.events.on_player_repaired_entity, on_player_repaired_entity) Event.add(defines.events.on_robot_mined_entity, on_robot_mined_entity) Event.add(defines.events.on_tick, on_tick) Event.on_init(on_init) diff --git a/maps/fish_defender_v2/table.lua b/maps/fish_defender_v2/table.lua index 7ae96d72..86e97b79 100644 --- a/maps/fish_defender_v2/table.lua +++ b/maps/fish_defender_v2/table.lua @@ -81,7 +81,6 @@ function Public.reset_table() left_top = {x = -1500, y = -1500}, right_bottom = {x = -80, y = 1500} } - this.map_height = 96 this.shotgun_shell_damage_modifier_old = {} this.flame_boots = {} end diff --git a/maps/fish_defender_v2/terrain.lua b/maps/fish_defender_v2/terrain.lua index f6ec8857..68ce6210 100644 --- a/maps/fish_defender_v2/terrain.lua +++ b/maps/fish_defender_v2/terrain.lua @@ -1,29 +1,11 @@ local Event = require 'utils.event' +local Builder = require 'maps.fish_defender_v2.b' local map_functions = require 'tools.map_functions' local simplex_noise = require 'utils.simplex_noise'.d2 local FDT = require 'maps.fish_defender_v2.table' -local Task = require 'utils.task' -local Token = require 'utils.token' local math_random = math.random local math_abs = math.abs -local math_floor = math.floor local math_sqrt = math.sqrt -local tiles_per_call = 16 -local total_calls = math.ceil(1024 / tiles_per_call) - -local Public = {} - -local rock_raffle = { - 'sand-rock-big', - 'sand-rock-big', - 'rock-big', - 'rock-big', - 'rock-big', - 'rock-big', - 'rock-big', - 'rock-big', - 'rock-huge' -} local function shuffle(tbl) local size = #tbl @@ -65,76 +47,6 @@ local function is_enemy_territory(p) if p.y < -512 then return false end - local noise = math_abs(simplex_noise(0, p.y * 0.015, game.surfaces[1].map_gen_settings.seed) * 96) - local noise_2 = math_abs(simplex_noise(0, p.y * 0.1, game.surfaces[1].map_gen_settings.seed) * 16) - if p.x > 288 + noise + noise_2 + math_abs(p.y * 0.75) then - return false - end - return true -end - -local body_radius = 3072 -local body_square_radius = body_radius ^ 2 -local body_center_position = {x = -1500, y = 0} -local body_spacing = math_floor(body_radius * 0.82) -local body_circle_center_1 = {x = body_center_position.x, y = body_center_position.y - body_spacing} -local body_circle_center_2 = {x = body_center_position.x, y = body_center_position.y + body_spacing} - -local fin_radius = 800 -local square_fin_radius = fin_radius ^ 2 -local fin_circle_center_1 = {x = -480, y = 0} -local fin_circle_center_2 = {x = -480 - 360, y = 0} - -local function is_body(p) - local this = FDT.get() - if p.y <= this.map_height and p.y >= this.map_height * -1 and p.x <= 160 and p.x > body_center_position.x then - return true - end - - --Main Fish Body - local distance_to_center_1 = ((p.x - body_circle_center_1.x) ^ 2 + (p.y - body_circle_center_1.y) ^ 2) - local distance_to_center_2 = ((p.x - body_circle_center_2.x) ^ 2 + (p.y - body_circle_center_2.y) ^ 2) - --if distance_to_center_1 < body_square_radius and distance_to_center_2 < body_square_radius then return true end - if distance_to_center_1 < body_square_radius then - if distance_to_center_2 < body_square_radius then - return true - end - end - - --Fish Fins - distance_to_center_1 = ((p.x - fin_circle_center_1.x) ^ 2 + (p.y - fin_circle_center_1.y) ^ 2) - if - distance_to_center_1 + math_abs(simplex_noise(0, p.y * 0.075, game.surfaces[1].map_gen_settings.seed) * 32000) > - square_fin_radius - then - distance_to_center_2 = ((p.x - fin_circle_center_2.x) ^ 2 + (p.y - fin_circle_center_2.y) ^ 2) - if distance_to_center_2 < square_fin_radius then - return true - end - end - - return false -end - -local function is_out_of_map_tile(p) - if p.y > 850 then - return true - end - if p.y < -850 then - return true - end - if p.x < -3264 then - return true - end - if p.x > 800 then - return true - end - if is_enemy_territory(p) then - return false - end - if is_body(p) then - return false - end return true end @@ -151,10 +63,10 @@ local function enemy_territory(surface, left_top) if left_top.x > 750 then return end - if left_top.y > 512 then + if left_top.y > 766 then return end - if left_top.y < -512 then + if left_top.y < -160 then return end @@ -208,86 +120,6 @@ local function enemy_territory(surface, left_top) end end -local function fish_mouth(surface, left_top) - if left_top.x > -2300 then - return - end - if left_top.y > 64 then - return - end - if left_top.y < -64 then - return - end - if left_top.x < -3292 then - return - end - - for x = 0, 31, 1 do - for y = 0, 31, 1 do - local pos = {x = left_top.x + x, y = left_top.y + y} - local noise = simplex_noise(pos.x * 0.006, 0, game.surfaces[1].map_gen_settings.seed) * 20 - if pos.y <= 12 + noise and pos.y >= -12 + noise then - surface.set_tiles({{name = 'water', position = pos}}) - end - end - end -end - -local ores = {'coal', 'iron-ore', 'copper-ore', 'stone'} - -local function plankton_territory(surface, position, seed) - local noise = simplex_noise(position.x * 0.009, position.y * 0.009, seed) - local d = 196 - if - position.x + position.y > (d * -1) - (math_abs(noise) * d * 3) and - position.x > position.y - (d + (math_abs(noise) * d * 3)) - then - return 'out-of-map' - end - - local noise_2 = simplex_noise(position.x * 0.0075, position.y * 0.0075, seed + 10000) - --if noise_2 > 0.87 then surface.set_tiles({{name = "deepwater-green", position = position}}, true) return true end - if noise_2 > 0.87 then - return 'deepwater-green' - end - if noise_2 > 0.75 then - local i = math_floor(noise * 6) % 4 + 1 - --surface.set_tiles({{name = "grass-" .. i, position = position}}, true) - surface.create_entity({name = ores[i], position = position, amount = 1 + 2500 * math_abs(noise_2 * 3)}) - return ('grass-' .. i) - end - if noise_2 < -0.76 then - local i = math_floor(noise * 6) % 4 + 1 - --surface.set_tiles({{name = "grass-" .. i, position = position}}, true) - if noise_2 < -0.86 then - surface.create_entity( - {name = 'uranium-ore', position = position, amount = 1 + 1000 * math_abs(noise_2 * 2)} - ) - return ('grass-' .. i) - end - if math_random(1, 3) ~= 1 then - surface.create_entity({name = rock_raffle[math_random(1, #rock_raffle)], position = position}) - end - return ('grass-' .. i) - end - - if noise < 0.12 and noise > -0.12 then - local i = math_floor(noise * 32) % 4 + 1 - --surface.set_tiles({{name = "grass-" .. i, position = position}}, true) - if math_random(1, 5) == 1 then - surface.create_entity({name = rock_raffle[math_random(1, #rock_raffle)], position = position}) - end - return ('grass-' .. i) - end - - --surface.set_tiles({{name = "water", position = position}}, true) - if math_random(1, 128) == 1 then - surface.create_entity({name = 'fish', position = position}) - end - - return 'water' -end - local function render_market_hp() local this = FDT.get() local surface = game.surfaces[this.active_surface_index] @@ -295,25 +127,12 @@ local function render_market_hp() return end - this.health_text = - rendering.draw_text { - text = 'HP: ' .. this.market_health .. ' / ' .. this.market_max_health, - surface = surface, - target = this.market, - target_offset = {0, -3}, - color = {0, 255, 0}, - scale = 1.40, - font = 'default-game', - alignment = 'center', - scale_with_zoom = false - } - this.caption = rendering.draw_text { text = 'Fish Market', surface = surface, target = this.market, - target_offset = {0, -4.4}, + target_offset = {0, -3.4}, color = {0, 255, 0}, scale = 1.80, font = 'default-game', @@ -329,7 +148,6 @@ local function generate_spawn_area(this, surface) surface.request_to_generate_chunks({x = 0, y = 0}, 7) surface.request_to_generate_chunks({x = 160, y = 0}, 4) - --surface.force_generate_chunk_requests() if not surface.is_chunk_generated({-7, 0}) then return @@ -340,7 +158,9 @@ local function generate_spawn_area(this, surface) local spawn_position_x = -128 - surface.create_entity({name = 'electric-beam', position = {160, -96}, source = {160, -96}, target = {160, 96}}) + surface.create_entity({name = 'electric-beam', position = {160, -132}, source = {160, -132}, target = {160, 305}}) -- cat + --surface.create_entity({name = 'electric-beam', position = {160, -101}, source = {160, -101}, target = {160, 248}}) -- fish + --surface.create_entity({name = 'electric-beam', position = {160, -88}, source = {160, -88}, target = {160, 185}}) for _, tile in pairs( surface.find_tiles_filtered({name = {'water', 'deepwater'}, area = {{-160, -160}, {160, 160}}}) @@ -362,20 +182,18 @@ local function generate_spawn_area(this, surface) {type = {'resource', 'cliff'}, area = {{spawn_position_x - 32, -256}, {160, 256}}} ) ) do - if is_body(entity.position) then - if - entity.position.x > - spawn_position_x - 32 + - math_abs( - simplex_noise( - entity.position.x * 0.02, - entity.position.y * 0.02, - game.surfaces[1].map_gen_settings.seed - ) * 16 - ) - then - entity.destroy() - end + if + entity.position.x > + spawn_position_x - 32 + + math_abs( + simplex_noise( + entity.position.x * 0.02, + entity.position.y * 0.02, + game.surfaces[1].map_gen_settings.seed + ) * 16 + ) + then + entity.destroy() end end @@ -391,13 +209,13 @@ local function generate_spawn_area(this, surface) end end - local y = 80 + local _y = 80 local ore_positions = { - {x = spawn_position_x - 52, y = y}, - {x = spawn_position_x - 52, y = y * 0.5}, + {x = spawn_position_x - 52, y = _y}, + {x = spawn_position_x - 52, y = _y * 0.5}, {x = spawn_position_x - 52, y = 0}, - {x = spawn_position_x - 52, y = y * -0.5}, - {x = spawn_position_x - 52, y = y * -1} + {x = spawn_position_x - 52, y = _y * -0.5}, + {x = spawn_position_x - 52, y = _y * -1} } shuffle(ore_positions) map_functions.draw_smoothed_out_ore_circle(ore_positions[1], 'copper-ore', surface, 15, 2500) @@ -435,22 +253,20 @@ local function generate_spawn_area(this, surface) end end - local pos = surface.find_non_colliding_position('gun-turret', {spawn_position_x + 5, 1}, 50, 1) - local turret = surface.create_entity({name = 'gun-turret', position = pos, force = 'player'}) + local turret_pos = surface.find_non_colliding_position('gun-turret', {spawn_position_x + 5, 1}, 50, 1) + local turret = surface.create_entity({name = 'gun-turret', position = turret_pos, force = 'player'}) turret.insert({name = 'firearm-magazine', count = 32}) for x = -20, 20, 1 do for y = -20, 20, 1 do - local pos = {x = this.market.position.x + x, y = this.market.position.y + y} - --local distance_to_center = math_sqrt(x^2 + y^2) - --if distance_to_center > 8 and distance_to_center < 15 then + local market_pos = {x = this.market.position.x + x, y = this.market.position.y + y} local distance_to_center = x ^ 2 + y ^ 2 if distance_to_center > 64 and distance_to_center < 225 then if math_random(1, 3) == 1 and - surface.can_place_entity({name = 'wooden-chest', position = pos, force = 'player'}) + surface.can_place_entity({name = 'wooden-chest', position = market_pos, force = 'player'}) then - surface.create_entity({name = 'wooden-chest', position = pos, force = 'player'}) + surface.create_entity({name = 'wooden-chest', position = market_pos, force = 'player'}) end end end @@ -463,11 +279,11 @@ local function generate_spawn_area(this, surface) end end - local pos = surface.find_non_colliding_position('character', {spawn_position_x + 1, 4}, 50, 1) - game.forces['player'].set_spawn_position(pos, surface) + local character_pos = surface.find_non_colliding_position('character', {spawn_position_x + 1, 4}, 50, 1) + game.forces['player'].set_spawn_position(character_pos, surface) for _, player in pairs(game.connected_players) do - local pos = surface.find_non_colliding_position('character', {spawn_position_x + 1, 4}, 50, 1) - player.teleport(pos, surface) + local spawn_pos = surface.find_non_colliding_position('character', {spawn_position_x + 1, 4}, 50, 1) + player.teleport(spawn_pos, surface) end this.spawn_area_generated = true end @@ -479,100 +295,26 @@ local function process_chunk(left_top) return end - local seed = game.surfaces[1].map_gen_settings.seed - generate_spawn_area(this, surface, left_top) enemy_territory(surface, left_top) - fish_mouth(surface, left_top) - local tiles = {} - - for x = 0, 31, 1 do - for y = 0, 31, 1 do - local pos = {x = left_top.x + x, y = left_top.y + y} - if is_out_of_map_tile(pos) then - --if not plankton_territory(surface, pos, seed) then surface.set_tiles({{name = "out-of-map", position = pos}}, true) end - local tile_to_set = plankton_territory(surface, pos, seed) - --local tile_to_set = "out-of-map" - tiles[#tiles + 1] = {name = tile_to_set, position = pos} - end - end - end - - surface.set_tiles(tiles, true) - - --if game.tick == 0 then return end - --if game.forces.player.is_chunk_charted(surface, {left_top.x / 32, left_top.y / 32}) then game.forces.player.chart(surface, {{left_top.x, left_top.y}, {left_top.x + 31, left_top.y + 31}}) - --end if this.market and this.market.valid then this.game_reset = false end end -local process_chunk_queue = - Token.register( - function(data) - local chunk_queue = data.chunk_queue - - for i = 1, #chunk_queue do - local pos = {x = chunk_queue[i].x, y = chunk_queue[i].y} - process_chunk(pos) - chunk_queue[i] = nil - end - end -) - local function on_chunk_generated(event) local map_name = 'fish_defender' if string.sub(event.surface.name, 0, #map_name) ~= map_name then return end + local left_top = event.area.left_top - local this = FDT.get() - if this.game_has_ended then - return - end + Builder.make_chunk(event) - if game.tick == 0 or this.game_reset or this.force_chunk then - process_chunk(left_top) - else - global.chunk_queue[#global.chunk_queue + 1] = {x = left_top.x, y = left_top.y} - - local data = { - chunk_queue = global.chunk_queue - } - Task.set_timeout_in_ticks(total_calls, process_chunk_queue, data) - end -end - -function Public.fish_eye(surface, position) - surface.request_to_generate_chunks(position, 2) - surface.force_generate_chunk_requests() - for x = -48, 48, 1 do - for y = -48, 48, 1 do - local p = {x = position.x + x, y = position.y + y} - --local distance = math_sqrt(((position.x - p.x) ^ 2) + ((position.y - p.y) ^ 2)) - --if distance < 44 then - -- surface.set_tiles({{name = "water-green", position = p}}, true) - --end - --if distance < 22 then - -- surface.set_tiles({{name = "out-of-map", position = p}}, true) - --end - - local distance = ((position.x - p.x) ^ 2) + ((position.y - p.y) ^ 2) - if distance < 1936 then - if distance < 484 then - surface.set_tiles({{name = 'out-of-map', position = p}}, true) - else - surface.set_tiles({{name = 'water-green', position = p}}, true) - end - end - end - end + process_chunk(left_top) end Event.add(defines.events.on_chunk_generated, on_chunk_generated) - -return Public diff --git a/maps/mountain_fortress_v3/breached_wall.lua b/maps/mountain_fortress_v3/breached_wall.lua index 6a04a91f..3d0793eb 100644 --- a/maps/mountain_fortress_v3/breached_wall.lua +++ b/maps/mountain_fortress_v3/breached_wall.lua @@ -76,7 +76,9 @@ local function distance(player) if breach_max_times then rpg_extra.breached_walls = rpg_extra.breached_walls + 1 rpg_extra.reward_new_players = bonus_xp_on_join * rpg_extra.breached_walls - WPT.get().breached_wall = breached_wall + 1 + WPT.set().breached_wall = breached_wall + 1 + WPT.set().placed_trains_in_zone.placed = 0 + WPT.set().placed_trains_in_zone.positions = {} raise_event(Balance.events.breached_wall, {}) local data = { diff --git a/maps/mountain_fortress_v3/functions.lua b/maps/mountain_fortress_v3/functions.lua index 3847cd71..300645dd 100644 --- a/maps/mountain_fortress_v3/functions.lua +++ b/maps/mountain_fortress_v3/functions.lua @@ -1,8 +1,22 @@ local Token = require 'utils.token' local Task = require 'utils.task' local ICW = require 'maps.mountain_fortress_v3.icw.main' -local WPT = require 'maps.mountain_fortress_v3.table' local Event = require 'utils.event' +local Global = require 'utils.global' + +local this = { + power_sources = {index = 1}, + refill_turrets = {index = 1}, + magic_crafters = {index = 1}, + magic_fluid_crafters = {index = 1} +} + +Global.register( + this, + function(t) + this = t + end +) local Public = {} @@ -22,7 +36,7 @@ local function fast_remove(tbl, index) end local function do_refill_turrets() - local refill_turrets = WPT.get('refill_turrets') + local refill_turrets = this.refill_turrets local index = refill_turrets.index if index > #refill_turrets then @@ -58,7 +72,7 @@ local function turret_died(event) if not number then return end - local power_sources = WPT.get('power_sources') + local power_sources = this.power_sources local ps_data = power_sources[number] if ps_data then @@ -78,7 +92,7 @@ local function turret_died(event) end local function do_magic_crafters() - local magic_crafters = WPT.get('magic_crafters') + local magic_crafters = this.magic_crafters local limit = #magic_crafters if limit == 0 then return @@ -122,7 +136,7 @@ local function do_magic_crafters() end local function do_magic_fluid_crafters() - local magic_fluid_crafters = WPT.get('magic_fluid_crafters') + local magic_fluid_crafters = this.magic_fluid_crafters local limit = #magic_fluid_crafters if limit == 0 then @@ -173,8 +187,8 @@ local function do_magic_fluid_crafters() end local function add_magic_crafter_output(entity, output, distance) - local magic_fluid_crafters = WPT.get('magic_fluid_crafters') - local magic_crafters = WPT.get('magic_crafters') + local magic_fluid_crafters = this.magic_fluid_crafters + local magic_crafters = this.magic_crafters local rate = output.min_rate + output.distance_factor * distance local fluidbox_index = output.fluidbox_index @@ -282,7 +296,7 @@ local disable_active_callback = Public.disable_active_callback Public.refill_turret_callback = Token.register( function(turret, data) - local refill_turrets = WPT.get('refill_turrets') + local refill_turrets = this.refill_turrets local callback_data = data.callback_data turret.direction = 3 @@ -293,7 +307,7 @@ Public.refill_turret_callback = Public.refill_liquid_turret_callback = Token.register( function(turret, data) - local refill_turrets = WPT.get('refill_turrets') + local refill_turrets = this.refill_turrets local callback_data = data.callback_data callback_data.liquid = true @@ -304,7 +318,7 @@ Public.refill_liquid_turret_callback = Public.power_source_callback = Token.register( function(turret, data) - local power_sources = WPT.get('power_sources') + local power_sources = this.power_sources local callback_data = data.callback_data local power_source = @@ -477,6 +491,13 @@ Public.light_oil_ammo = {name = 'light-oil', amount = 100} Public.artillery_shell_ammo = {name = 'artillery-shell', count = 15} Public.laser_turrent_power_source = {buffer_size = 2400000, power_production = 40000} +function Public.reset_table() + this.power_sources = {index = 1} + this.refill_turrets = {index = 1} + this.magic_crafters = {index = 1} + this.magic_fluid_crafters = {index = 1} +end + Event.on_nth_tick(10, tick) --Event.add(defines.events.on_tick, tick) Event.add(defines.events.on_entity_died, turret_died) diff --git a/maps/mountain_fortress_v3/main.lua b/maps/mountain_fortress_v3/main.lua index 58611543..18ca63a8 100644 --- a/maps/mountain_fortress_v3/main.lua +++ b/maps/mountain_fortress_v3/main.lua @@ -26,6 +26,7 @@ local WD = require 'modules.wave_defense.table' local Map = require 'modules.map_info' local RPG = require 'maps.mountain_fortress_v3.rpg' local Terrain = require 'maps.mountain_fortress_v3.terrain' +local Functions = require 'maps.mountain_fortress_v3.functions' local Event = require 'utils.event' local WPT = require 'maps.mountain_fortress_v3.table' local Locomotive = require 'maps.mountain_fortress_v3.locomotive' @@ -223,6 +224,7 @@ function Public.reset_map() Poll.reset() ICW.reset() + Functions.reset_table() game.reset_time_played() WPT.reset_table() Map_score.reset_score() @@ -264,6 +266,7 @@ function Public.reset_map() Collapse.set_direction('north') Collapse.start_now(false) + --[[ local x_value = rng(15, 25) local y_value = rng(50, 60) @@ -274,6 +277,8 @@ function Public.reset_map() ['locomotive'] = {left_top = {x = -x_value, y = 0}, right_bottom = {x = x_value, y = y_value}} } ICT.set_wagon_area(data) + + ]] this.locomotive_health = 10000 this.locomotive_max_health = 10000 diff --git a/maps/mountain_fortress_v3/table.lua b/maps/mountain_fortress_v3/table.lua index 977e535f..0530d352 100644 --- a/maps/mountain_fortress_v3/table.lua +++ b/maps/mountain_fortress_v3/table.lua @@ -5,16 +5,12 @@ local Event = require 'utils.event' local this = { players = {}, offline_players = {}, - hidden_dimension = { + --[[ hidden_dimension = { logistic_research_level = 0, reset_counter = 1 }, - power_sources = {index = 1}, - refill_turrets = {index = 1}, - magic_crafters = {index = 1}, - magic_fluid_crafters = {index = 1}, + ]] breached_wall = 1, - entity_limits = {}, traps = {} } local Public = {} @@ -43,11 +39,7 @@ function Public.reset_table() this.train_upgrades = 0 this.offline_players = {} this.biter_pets = {} - this.power_sources = {index = 1} this.flamethrower_damage = {} - this.refill_turrets = {index = 1} - this.magic_crafters = {index = 1} - this.magic_fluid_crafters = {index = 1} this.mined_scrap = 0 this.biters_killed = 0 this.locomotive_xp_aura = 40 @@ -77,7 +69,6 @@ function Public.reset_table() this.aura_upgrades = 0 this.health_upgrades = 0 this.breached_wall = 1 - this.entity_limits = {} this.offline_players_enabled = true this.left_top = { x = 0, @@ -95,6 +86,11 @@ function Public.reset_table() this.force_mining_speed = { speed = 0 } + this.placed_trains_in_zone = { + placed = 0, + positions = {}, + limit = 5 + } end function Public.get(key) @@ -105,6 +101,14 @@ function Public.get(key) end end +function Public.set(key) + if key then + return this[key] + else + return this + end +end + local on_init = function() Public.reset_table() end diff --git a/maps/mountain_fortress_v3/terrain.lua b/maps/mountain_fortress_v3/terrain.lua index 8c229701..8e8f7653 100644 --- a/maps/mountain_fortress_v3/terrain.lua +++ b/maps/mountain_fortress_v3/terrain.lua @@ -10,9 +10,6 @@ local Public = {} Public.level_depth = 704 Public.level_width = 512 local worm_level_modifier = 0.19 -local average_number_of_wagons_per_level = 2 -local chunks_per_level = ((Public.level_depth - 32) / 32) ^ 2 -local chance_for_wagon_spawn = math.floor(chunks_per_level / average_number_of_wagons_per_level) local wagon_raffle = {'cargo-wagon', 'cargo-wagon', 'cargo-wagon', 'locomotive', 'fluid-wagon'} local rock_raffle = { @@ -84,8 +81,22 @@ local turret_list = { } local function place_wagon(data) - if math.random(1, 1500) ~= 1 then - return + local function is_position_near(area, table_to_check) + local status = false + local function inside(pos) + local lt = area.left_top + local rb = area.right_bottom + + return pos.x >= lt.x and pos.y >= lt.y and pos.x <= rb.x and pos.y <= rb.y + end + + for k, entity in pairs(table_to_check) do + if inside(entity, area) then + status = true + end + end + + return status end local surface = data.surface local tiles = data.tiles @@ -97,6 +108,26 @@ local function place_wagon(data) callback = Functions.disable_minable_and_ICW_callback } + local rail_mineable = { + callback = Functions.disable_destructible_callback + } + + local placed_trains_in_zone = WPT.get('placed_trains_in_zone') + + if placed_trains_in_zone.placed >= placed_trains_in_zone.limit then + return + end + + local radius = 300 + local area = { + left_top = {x = position.x - radius, y = position.y - radius}, + right_bottom = {x = position.x + radius, y = position.y + radius} + } + + if is_position_near(area, placed_trains_in_zone.positions) then + return + end + local location local direction local r1 = math.random(2, 4) * 2 @@ -124,20 +155,21 @@ local function place_wagon(data) name = 'straight-rail', position = tile.position, force = 'player', - direction = direction + direction = direction, + callback = rail_mineable } end end + entities[#entities + 1] = { + name = wagon_raffle[math.random(1, #wagon_raffle)], + position = position, + force = 'player', + callback = wagon_mineable + } + placed_trains_in_zone.placed = placed_trains_in_zone.placed + 1 + placed_trains_in_zone.positions[#placed_trains_in_zone.positions + 1] = position + print('Placed trains are: ' .. placed_trains_in_zone.placed) - table.insert( - entities, - { - name = wagon_raffle[math.random(1, #wagon_raffle)], - position = position, - force = 'player', - callback = wagon_mineable - } - ) return true end @@ -1703,9 +1735,7 @@ function Public.heavy_functions(x, y, data) if top_y < 0 then process_bits(x, y, data) - if math.random(1, chance_for_wagon_spawn) == 1 then - place_wagon(data) - end + place_wagon(data) return end diff --git a/modules/map_info.lua b/modules/map_info.lua index a0eefb51..1907875a 100644 --- a/modules/map_info.lua +++ b/modules/map_info.lua @@ -3,13 +3,11 @@ local Tabs = require 'comfy_panel.main' local map_info = { localised_category = false, - main_caption = 'Insert Main Caption', + main_caption = nil, main_caption_color = {r = 0.6, g = 0.3, b = 0.99}, - sub_caption = 'Insert Sub Caption', + sub_caption = nil, sub_caption_color = {r = 0.2, g = 0.9, b = 0.2}, - text = [[ - Add info text to map_info. - ]] + text = nil } Global.register( @@ -36,10 +34,14 @@ local create_map_intro = (function(player, frame) line.style.top_margin = 4 line.style.bottom_margin = 4 + local caption = map_info.main_caption or {map_info.localised_category .. '.map_info_main_caption'} + local sub_caption = map_info.sub_caption or {map_info.localised_category .. '.map_info_sub_caption'} + local text = map_info.text or {map_info.localised_category .. '.map_info_text'} + if map_info.localised_category then - map_info.main_caption = {map_info.localised_category .. '.map_info_main_caption'} - map_info.sub_caption = {map_info.localised_category .. '.map_info_sub_caption'} - map_info.text = {map_info.localised_category .. '.map_info_text'} + map_info.main_caption = caption + map_info.sub_caption = sub_caption + map_info.text = text end local l = t.add {type = 'label', caption = map_info.main_caption} l.style.font = 'heading-1' From 7da400db14f9a95dc00114711499e49f488ce47b Mon Sep 17 00:00:00 2001 From: Gerkiz Date: Tue, 14 Jul 2020 21:51:04 +0200 Subject: [PATCH 2/5] minor changes --- maps/crab_defender/main.lua | 329 +++++++++++++++++++----------------- 1 file changed, 178 insertions(+), 151 deletions(-) diff --git a/maps/crab_defender/main.lua b/maps/crab_defender/main.lua index 11afd1be..a0a89984 100644 --- a/maps/crab_defender/main.lua +++ b/maps/crab_defender/main.lua @@ -1,5 +1,3 @@ ---require "modules.rpg" - require 'maps.crab_defender.terrain' require 'maps.crab_defender.market' require 'maps.crab_defender.commands' @@ -14,6 +12,7 @@ require 'modules.custom_death_messages' local Unit_health_booster = require 'modules.biter_health_booster' local Difficulty = require 'modules.difficulty_vote' local Map = require 'modules.map_info' +local WD = require 'modules.wave_defense.table' local Event = require 'utils.event' local Reset = require 'functions.soft_reset' local Server = require 'utils.server' @@ -38,7 +37,141 @@ local starting_items = { ['stone'] = 12 } -local function shuffle(tbl) +local set_difficulty = function() + local Diff = Difficulty.get() + local wave_defense_table = WD.get_table() + local player_count = #game.connected_players + if not Diff.difficulty_vote_value then + Diff.difficulty_vote_value = 0.1 + end + + wave_defense_table.max_active_biters = 888 + player_count * (90 * Diff.difficulty_vote_value) + + wave_defense_table.threat_gain_multiplier = 1.2 + player_count * Diff.difficulty_vote_value * 0.1 + + wave_defense_table.wave_interval = 3600 - player_count * 60 + if wave_defense_table.wave_interval < 1800 then + wave_defense_table.wave_interval = 1800 + end +end + +function Public.reset_game() + local wave_defense_table = WD.get_table() + FDT.reset_table() + Poll.reset() + local this = FDT.get() + local is_branch_18 = sub(branch_version, 3, 4) + local get_active_version = sub(game.active_mods.base, 3, 4) + + Difficulty.reset_difficulty_poll() + Difficulty.set_poll_closing_timeout = game.tick + 36000 + + local players = game.connected_players + for i = 1, #players do + local player = players[i] + Score.init_player_table(player) + if player.gui.left['crab_defender_game_lost'] then + player.gui.left['crab_defender_game_lost'].destroy() + end + end + + local map_gen_settings = {} + map_gen_settings.seed = math_random(10000, 99999) + map_gen_settings.height = 2048 + map_gen_settings.water = 0.10 + map_gen_settings.terrain_segmentation = 3 + map_gen_settings.cliff_settings = {cliff_elevation_interval = 32, cliff_elevation_0 = 32} + map_gen_settings.autoplace_controls = { + ['coal'] = {frequency = 4, size = 1.5, richness = 2}, + ['stone'] = {frequency = 4, size = 1.5, richness = 2}, + ['copper-ore'] = {frequency = 4, size = 1.5, richness = 2}, + ['iron-ore'] = {frequency = 4, size = 1.5, richness = 2}, + ['uranium-ore'] = {frequency = 0, size = 0, richness = 0}, + ['crude-oil'] = {frequency = 5, size = 1.25, richness = 2}, + ['trees'] = {frequency = 2, size = 1, richness = 1}, + ['enemy-base'] = {frequency = 'none', size = 'none', richness = 'none'} + } + map_gen_settings.autoplace_settings = { + ['tile'] = { + settings = { + ['deepwater'] = {frequency = 1, size = 0, richness = 1}, + ['deepwater-green'] = {frequency = 1, size = 0, richness = 1}, + ['water'] = {frequency = 1, size = 0, richness = 1}, + ['water-green'] = {frequency = 1, size = 0, richness = 1}, + ['water-mud'] = {frequency = 1, size = 0, richness = 1}, + ['water-shallow'] = {frequency = 1, size = 0, richness = 1} + }, + treat_missing_as_default = true + } + } + + if not this.active_surface_index then + this.active_surface_index = game.create_surface('crab_defender', map_gen_settings).index + else + this.active_surface_index = + Reset.soft_reset_map(game.surfaces[this.active_surface_index], map_gen_settings, starting_items).index + end + + local surface = game.surfaces[this.active_surface_index] + if not surface or not surface.valid then + return + end + + surface.peaceful_mode = false + + WD.reset_wave_defense() + wave_defense_table.surface_index = this.active_surface_index + wave_defense_table.target = this.locomotive + wave_defense_table.nest_building_density = 32 + wave_defense_table.game_lost = false + wave_defense_table.spawn_position = {x = 0, y = 100} + WD.alert_boss_wave(true) + WD.clear_corpses(false) + + set_difficulty() + + local r = 320 + local p = {x = -131, y = 5} + game.forces.player.chart( + surface, + { + {p.x - r - 200, p.y - r - 200}, + {p.x + r + 600, p.y + r} + } + ) + + game.map_settings.enemy_expansion.enabled = false + game.map_settings.enemy_evolution.destroy_factor = 0 + game.map_settings.enemy_evolution.time_factor = 0 + game.map_settings.enemy_evolution.pollution_factor = 0 + game.map_settings.pollution.enabled = false + + game.forces['player'].technologies['atomic-bomb'].enabled = false + + if not game.forces.decoratives then + game.create_force('decoratives') + end + + game.forces['decoratives'].set_cease_fire('enemy', true) + game.forces['enemy'].set_cease_fire('decoratives', true) + game.forces['player'].set_cease_fire('decoratives', true) + game.remove_offline_players() + + game.map_settings.enemy_expansion.enabled = false + game.forces['player'].technologies['artillery'].researched = false + + is_branch_18 = is_branch_18 .. sub(branch_version, 6, 7) + get_active_version = get_active_version .. sub(game.active_mods.base, 6, 7) + if get_active_version >= is_branch_18 then + game.reset_time_played() + end + + this.market_health = 500 + this.market_max_health = 500 + this.spawn_area_generated = false +end + +local shuffle = function(tbl) local size = #tbl for i = size, 1, -1 do local rand = math.random(size) @@ -47,9 +180,9 @@ local function shuffle(tbl) return tbl end -local biter_count_limit = 1024 --maximum biters on the east side of the map, next wave will be delayed if the maximum has been reached +local biter_count_limit = 1024 -local function create_wave_gui(player) +local create_wave_gui = function(player) if player.gui.top['crab_defender_waves'] then player.gui.top['crab_defender_waves'].destroy() end @@ -98,7 +231,7 @@ local function create_wave_gui(player) end end -local function show_fd_stats(player) +local show_fd_stats = function(player) local gui_id = 'fd-stats' local table_id = gui_id .. 'table' local this = FDT.get() @@ -139,7 +272,7 @@ local function show_fd_stats(player) end end -local function update_fd_stats() +local update_fd_stats = function() for _, player in pairs(game.connected_players) do if player.gui.left['fd-stats'] then show_fd_stats(player) @@ -147,7 +280,7 @@ local function update_fd_stats() end end -local function add_fd_stats_button(player) +local add_fd_stats_button = function(player) local button_id = 'fd-stats-button' if player.gui.top[button_id] then player.gui.top[button_id].destroy() @@ -160,7 +293,7 @@ local function add_fd_stats_button(player) } end -local function on_gui_click(event) +local on_gui_click = function(event) if not event.element.valid then return end @@ -176,7 +309,7 @@ local function on_gui_click(event) end end -local function on_market_item_purchased() +local on_market_item_purchased = function() update_fd_stats() end @@ -191,7 +324,7 @@ local threat_values = { ['behemoth_spitter'] = 10 } -local function get_biter_initial_pool() +local get_biter_initial_pool = function() local this = FDT.get() local biter_pool if this.wave_count > 1750 then @@ -324,7 +457,7 @@ local function get_biter_initial_pool() end end -local function get_biter_pool() +local get_biter_pool = function() local biter_pool = get_biter_initial_pool() local biter_raffle = {} for _, biter_type in pairs(biter_pool) do @@ -335,7 +468,7 @@ local function get_biter_pool() return biter_raffle end -local function spawn_biter(pos, biter_pool) +local spawn_biter = function(pos, biter_pool) local this = FDT.get() if this.attack_wave_threat < 1 then return false @@ -355,7 +488,7 @@ local function spawn_biter(pos, biter_pool) return biter end -local function get_y_coord_raffle_table() +local get_y_coord_raffle_table = function() local t = {} t[#t + 1] = -65 @@ -372,7 +505,7 @@ local function get_y_coord_raffle_table() return t end -local function get_x_coord_raffle_table() +local get_x_coord_raffle_table = function() local t = {} t[#t + 1] = 671 @@ -400,7 +533,7 @@ local attack_group_count_thresholds = { {3000, 8} } -local function get_number_of_attack_groups() +local get_number_of_attack_groups = function() local n = 1 local this = FDT.get() for _, entry in pairs(attack_group_count_thresholds) do @@ -411,7 +544,7 @@ local function get_number_of_attack_groups() return n end -local function clear_corpses(surface) +local clear_corpses = function(surface) local this = FDT.get() if not this.wave_count then @@ -433,7 +566,7 @@ local function clear_corpses(surface) end end -local function send_unit_group(unit_group) +local send_unit_group = function(unit_group) local commands = {} local this = FDT.get() for x = unit_group.position.x, this.market.position.x, -64 do @@ -471,7 +604,7 @@ local function send_unit_group(unit_group) ) end -local function spawn_boss_units(surface) +local spawn_boss_units = function(surface) local Diff = Difficulty.get() local this = FDT.get() if this.wave_count <= 2000 then @@ -518,7 +651,7 @@ local function spawn_boss_units(surface) send_unit_group(biter_group) end -local function wake_up_the_biters(surface) +local wake_up_the_biters = function(surface) local this = FDT.get() if not this.market or not this.market.valid then return @@ -576,7 +709,7 @@ local function wake_up_the_biters(surface) ) end -local function biter_attack_wave() +local biter_attack_wave = function() local Diff = Difficulty.get() local this = FDT.get() @@ -595,7 +728,6 @@ local function biter_attack_wave() wake_up_the_biters(surface) if surface.count_entities_filtered({type = 'unit'}) > biter_count_limit then - --game.print("Biter limit reached, wave delayed.", {r = 0.7, g = 0.1, b = 0.1}) return end @@ -669,7 +801,7 @@ local function biter_attack_wave() end end -local function get_sorted_list(column_name, score_list) +local get_sorted_list = function(column_name, score_list) for _ = 1, #score_list, 1 do for y = 1, #score_list, 1 do if not score_list[y + 1] then @@ -685,7 +817,7 @@ local function get_sorted_list(column_name, score_list) return score_list end -local function get_mvps() +local get_mvps = function() local get_score = Score.get_table().score_table if not get_score['player'] then return false @@ -730,7 +862,7 @@ local function get_mvps() return mvp end -local function is_game_lost() +local is_game_lost = function() local this = FDT.get() if not this.game_has_ended then @@ -841,7 +973,7 @@ local function is_game_lost() game.map_settings.enemy_expansion.max_expansion_cooldown = 600 end -local function damage_entities_in_radius(surface, position, radius, damage) +local damage_entities_in_radius = function(surface, position, radius, damage) local entities_to_damage = surface.find_entities_filtered( {area = {{position.x - radius, position.y - radius}, {position.x + radius, position.y + radius}}} @@ -864,7 +996,7 @@ local function damage_entities_in_radius(surface, position, radius, damage) end end -local function market_kill_visuals() +local market_kill_visuals = function() local this = FDT.get() local surface = game.surfaces[this.active_surface_index] if not surface or not surface.valid then @@ -958,7 +1090,7 @@ local biter_splash_damage = { } } -local function on_entity_died(event) +local on_entity_died = function(event) if not event.entity.valid then return end @@ -1021,7 +1153,7 @@ local function on_entity_died(event) end end -local function on_player_joined_game(event) +local on_player_joined_game = function(event) local player = game.players[event.player_index] local this = FDT.get() local surface = game.surfaces[this.active_surface_index] @@ -1050,17 +1182,18 @@ local function on_player_joined_game(event) create_wave_gui(player) add_fd_stats_button(player) + set_difficulty() if game.tick > 900 then is_game_lost() end - - --if this.charting_done then return end - --game.forces.player.chart(game.surfaces["crab_defender"], {{-256, -512},{768, 512}}) - --this.charting_done = true end -local function on_built_entity(event) +local on_player_left_game = function() + set_difficulty() +end + +local on_built_entity = function(event) local get_score = Score.get_table().score_table local this = FDT.get() local entity = event.created_entity @@ -1120,7 +1253,7 @@ local function on_built_entity(event) end end -local function on_robot_built_entity(event) +local on_robot_built_entity = function(event) local entity = event.created_entity local surface = entity.surface @@ -1170,7 +1303,7 @@ local function on_robot_built_entity(event) end end -local function on_player_changed_position(event) +local on_player_changed_position = function(event) local player = game.players[event.player_index] local this = FDT.get() local surface = game.surfaces[this.active_surface_index] @@ -1193,7 +1326,7 @@ local function on_player_changed_position(event) end end -local function on_player_or_robot_built_tile(event) +local on_player_or_robot_built_tile = function(event) local surface = game.surfaces[event.surface_index] local tiles = event.tiles @@ -1208,7 +1341,7 @@ local function on_player_or_robot_built_tile(event) end end -local function on_player_mined_entity(event) +local on_player_mined_entity = function(event) local this = FDT.get() if this.entity_limits[event.entity.name] then this.entity_limits[event.entity.name].placed = this.entity_limits[event.entity.name].placed - 1 @@ -1216,7 +1349,7 @@ local function on_player_mined_entity(event) end end -local function on_robot_mined_entity(event) +local on_robot_mined_entity = function(event) local this = FDT.get() if this.entity_limits[event.entity.name] then this.entity_limits[event.entity.name].placed = this.entity_limits[event.entity.name].placed - 1 @@ -1224,7 +1357,7 @@ local function on_robot_mined_entity(event) end end -local function on_research_finished(event) +local on_research_finished = function(event) local research = event.research.name if research ~= 'tanks' then return @@ -1233,7 +1366,7 @@ local function on_research_finished(event) game.forces.player.recipes['artillery-wagon'].enabled = false end -local function on_player_respawned(event) +local on_player_respawned = function(event) local this = FDT.get() if not this.market_age then return @@ -1242,7 +1375,7 @@ local function on_player_respawned(event) player.character.destructible = false end -local function has_the_game_ended() +local has_the_game_ended = function() local this = FDT.get() if this.market_age then if not this.game_restart_timer then @@ -1300,112 +1433,7 @@ local function has_the_game_ended() end end -function Public.reset_game() - FDT.reset_table() - Poll.reset() - local this = FDT.get() - local is_branch_18 = sub(branch_version, 3, 4) - local get_active_version = sub(game.active_mods.base, 3, 4) - - Difficulty.reset_difficulty_poll() - Difficulty.set_poll_closing_timeout = game.tick + 36000 - - local players = game.connected_players - for i = 1, #players do - local player = players[i] - Score.init_player_table(player) - if player.gui.left['crab_defender_game_lost'] then - player.gui.left['crab_defender_game_lost'].destroy() - end - end - - local map_gen_settings = {} - map_gen_settings.seed = math_random(10000, 99999) - map_gen_settings.height = 2048 - map_gen_settings.water = 0.10 - map_gen_settings.terrain_segmentation = 3 - map_gen_settings.cliff_settings = {cliff_elevation_interval = 32, cliff_elevation_0 = 32} - map_gen_settings.autoplace_controls = { - ['coal'] = {frequency = 4, size = 1.5, richness = 2}, - ['stone'] = {frequency = 4, size = 1.5, richness = 2}, - ['copper-ore'] = {frequency = 4, size = 1.5, richness = 2}, - ['iron-ore'] = {frequency = 4, size = 1.5, richness = 2}, - ['uranium-ore'] = {frequency = 0, size = 0, richness = 0}, - ['crude-oil'] = {frequency = 5, size = 1.25, richness = 2}, - ['trees'] = {frequency = 2, size = 1, richness = 1}, - ['enemy-base'] = {frequency = 'none', size = 'none', richness = 'none'} - } - map_gen_settings.autoplace_settings = { - ['tile'] = { - settings = { - ['deepwater'] = {frequency = 1, size = 0, richness = 1}, - ['deepwater-green'] = {frequency = 1, size = 0, richness = 1}, - ['water'] = {frequency = 1, size = 0, richness = 1}, - ['water-green'] = {frequency = 1, size = 0, richness = 1}, - ['water-mud'] = {frequency = 1, size = 0, richness = 1}, - ['water-shallow'] = {frequency = 1, size = 0, richness = 1} - }, - treat_missing_as_default = true - } - } - - if not this.active_surface_index then - this.active_surface_index = game.create_surface('crab_defender', map_gen_settings).index - else - this.active_surface_index = - Reset.soft_reset_map(game.surfaces[this.active_surface_index], map_gen_settings, starting_items).index - end - - local surface = game.surfaces[this.active_surface_index] - if not surface or not surface.valid then - return - end - - surface.peaceful_mode = false - - local r = 320 - local p = {x = -131, y = 5} - game.forces.player.chart( - surface, - { - {p.x - r - 200, p.y - r - 200}, - {p.x + r + 600, p.y + r} - } - ) - - game.map_settings.enemy_expansion.enabled = false - game.map_settings.enemy_evolution.destroy_factor = 0 - game.map_settings.enemy_evolution.time_factor = 0 - game.map_settings.enemy_evolution.pollution_factor = 0 - game.map_settings.pollution.enabled = false - - game.forces['player'].technologies['atomic-bomb'].enabled = false - --game.forces["player"].technologies["landfill"].enabled = false - - if not game.forces.decoratives then - game.create_force('decoratives') - end - - game.forces['decoratives'].set_cease_fire('enemy', true) - game.forces['enemy'].set_cease_fire('decoratives', true) - game.forces['player'].set_cease_fire('decoratives', true) - game.remove_offline_players() - - game.map_settings.enemy_expansion.enabled = false - game.forces['player'].technologies['artillery'].researched = false - - is_branch_18 = is_branch_18 .. sub(branch_version, 6, 7) - get_active_version = get_active_version .. sub(game.active_mods.base, 6, 7) - if get_active_version >= is_branch_18 then - game.reset_time_played() - end - - this.market_health = 500 - this.market_max_health = 500 - this.spawn_area_generated = false -end - -function Public.on_init() +local on_init = function() Public.reset_game() local T = Map.Pop_info() @@ -1414,7 +1442,7 @@ function Public.on_init() T.sub_caption_color = {r = 0.33, g = 0.66, b = 0.9} end -local function on_tick() +local on_tick = function() local Diff = Difficulty.get() local this = FDT.get() local surface = game.surfaces[this.active_surface_index] @@ -1449,8 +1477,6 @@ local function on_tick() end end -local on_init = Public.on_init - Event.add(defines.events.on_gui_click, on_gui_click) Event.add(defines.events.on_market_item_purchased, on_market_item_purchased) Event.add(defines.events.on_player_respawned, on_player_respawned) @@ -1458,6 +1484,7 @@ Event.add(defines.events.on_built_entity, on_built_entity) Event.add(defines.events.on_entity_died, on_entity_died) Event.add(defines.events.on_player_changed_position, on_player_changed_position) Event.add(defines.events.on_player_joined_game, on_player_joined_game) +Event.add(defines.events.on_player_left_game, on_player_left_game) Event.add(defines.events.on_player_mined_entity, on_player_mined_entity) Event.add(defines.events.on_research_finished, on_research_finished) Event.add(defines.events.on_robot_built_entity, on_robot_built_entity) From 8bc37712ff7368315861cadae575090cc4bf029d Mon Sep 17 00:00:00 2001 From: Gerkiz Date: Fri, 17 Jul 2020 16:59:15 +0200 Subject: [PATCH 3/5] fixes --- antigrief.lua | 62 ++++++-------- maps/crab_defender/main.lua | 37 -------- maps/crab_defender/table.lua | 10 +-- utils/event.lua | 162 ++++++++++++++++++++++++++++------- 4 files changed, 158 insertions(+), 113 deletions(-) diff --git a/antigrief.lua b/antigrief.lua index a601343d..1923af13 100644 --- a/antigrief.lua +++ b/antigrief.lua @@ -210,12 +210,7 @@ local function on_player_built_tile(event) end local player = game.players[event.player_index] - local surface = event.surface - if surface and surface.valid then - surface = event.surface.index - else - surface = 'nil' - end + local surface = event.surface_index --landfill history-- @@ -617,43 +612,34 @@ local function on_player_cursor_stack_changed(event) end local function on_player_cancelled_crafting(event) - local tracker = session.get_session_table() local player = game.players[event.player_index] - local playtime = player.online_time - if tracker[player.name] then - playtime = player.online_time + tracker[player.name] - end - local count = #event.items - if playtime < 1296000 then - if count > 40 then - Utils.action_warning( - '{Crafting}', - player.name .. - ' canceled their craft of item ' .. event.recipe.name .. ' of total count ' .. count .. '.' - ) - if not this.cancel_crafting_history[player.index] then - this.cancel_crafting_history[player.index] = {} - end - if #this.cancel_crafting_history[player.index] > 100 then - this.cancel_crafting_history[player.index] = {} - end - - local t = math.abs(math.floor((game.tick) / 3600)) - local str = '[' .. t .. '] ' - str = str .. player.name .. ' canceled ' - str = str .. ' item ' .. event.recipe.name - str = str .. ' count was a total of: ' .. count - str = str .. ' at X:' - str = str .. math.floor(player.position.x) - str = str .. ' Y:' - str = str .. math.floor(player.position.y) - str = str .. ' ' - str = str .. 'surface:' .. player.surface.index - increment(this.cancel_crafting_history, player.index, str) + if count > 40 then + Utils.action_warning( + '{Crafting}', + player.name .. ' canceled their craft of item ' .. event.recipe.name .. ' of total count ' .. count .. '.' + ) + if not this.cancel_crafting_history[player.index] then + this.cancel_crafting_history[player.index] = {} end + if #this.cancel_crafting_history[player.index] > 100 then + this.cancel_crafting_history[player.index] = {} + end + + local t = math.abs(math.floor((game.tick) / 3600)) + local str = '[' .. t .. '] ' + str = str .. player.name .. ' canceled ' + str = str .. ' item ' .. event.recipe.name + str = str .. ' count was a total of: ' .. count + str = str .. ' at X:' + str = str .. math.floor(player.position.x) + str = str .. ' Y:' + str = str .. math.floor(player.position.y) + str = str .. ' ' + str = str .. 'surface:' .. player.surface.index + increment(this.cancel_crafting_history, player.index, str) end end diff --git a/maps/crab_defender/main.lua b/maps/crab_defender/main.lua index a0a89984..a5a77513 100644 --- a/maps/crab_defender/main.lua +++ b/maps/crab_defender/main.lua @@ -12,7 +12,6 @@ require 'modules.custom_death_messages' local Unit_health_booster = require 'modules.biter_health_booster' local Difficulty = require 'modules.difficulty_vote' local Map = require 'modules.map_info' -local WD = require 'modules.wave_defense.table' local Event = require 'utils.event' local Reset = require 'functions.soft_reset' local Server = require 'utils.server' @@ -37,26 +36,7 @@ local starting_items = { ['stone'] = 12 } -local set_difficulty = function() - local Diff = Difficulty.get() - local wave_defense_table = WD.get_table() - local player_count = #game.connected_players - if not Diff.difficulty_vote_value then - Diff.difficulty_vote_value = 0.1 - end - - wave_defense_table.max_active_biters = 888 + player_count * (90 * Diff.difficulty_vote_value) - - wave_defense_table.threat_gain_multiplier = 1.2 + player_count * Diff.difficulty_vote_value * 0.1 - - wave_defense_table.wave_interval = 3600 - player_count * 60 - if wave_defense_table.wave_interval < 1800 then - wave_defense_table.wave_interval = 1800 - end -end - function Public.reset_game() - local wave_defense_table = WD.get_table() FDT.reset_table() Poll.reset() local this = FDT.get() @@ -119,17 +99,6 @@ function Public.reset_game() surface.peaceful_mode = false - WD.reset_wave_defense() - wave_defense_table.surface_index = this.active_surface_index - wave_defense_table.target = this.locomotive - wave_defense_table.nest_building_density = 32 - wave_defense_table.game_lost = false - wave_defense_table.spawn_position = {x = 0, y = 100} - WD.alert_boss_wave(true) - WD.clear_corpses(false) - - set_difficulty() - local r = 320 local p = {x = -131, y = 5} game.forces.player.chart( @@ -1182,17 +1151,12 @@ local on_player_joined_game = function(event) create_wave_gui(player) add_fd_stats_button(player) - set_difficulty() if game.tick > 900 then is_game_lost() end end -local on_player_left_game = function() - set_difficulty() -end - local on_built_entity = function(event) local get_score = Score.get_table().score_table local this = FDT.get() @@ -1484,7 +1448,6 @@ Event.add(defines.events.on_built_entity, on_built_entity) Event.add(defines.events.on_entity_died, on_entity_died) Event.add(defines.events.on_player_changed_position, on_player_changed_position) Event.add(defines.events.on_player_joined_game, on_player_joined_game) -Event.add(defines.events.on_player_left_game, on_player_left_game) Event.add(defines.events.on_player_mined_entity, on_player_mined_entity) Event.add(defines.events.on_research_finished, on_research_finished) Event.add(defines.events.on_robot_built_entity, on_robot_built_entity) diff --git a/maps/crab_defender/table.lua b/maps/crab_defender/table.lua index 86e97b79..37308b2c 100644 --- a/maps/crab_defender/table.lua +++ b/maps/crab_defender/table.lua @@ -41,12 +41,12 @@ function Public.reset_table() this.market_age = nil this.last_reset = game.tick this.wave_interval = 3600 - this.wave_grace_period = game.tick + 3600 * 20 + this.wave_grace_period = game.tick + 5500 * 20 -- this.wave_grace_period = game.tick + 3600 this.boss_biters = {} this.acid_lines_delay = {} this.entity_limits = { - ['gun-turret'] = {placed = 1, limit = 1, str = 'gun turret', slot_price = 75}, + ['gun-turret'] = {placed = 1, limit = 2, str = 'gun turret', slot_price = 75}, ['laser-turret'] = {placed = 0, limit = 1, str = 'laser turret', slot_price = 300}, ['artillery-turret'] = {placed = 0, limit = 1, str = 'artillery turret', slot_price = 500}, ['flamethrower-turret'] = {placed = 0, limit = 0, str = 'flamethrower turret', slot_price = 50000}, @@ -62,7 +62,7 @@ function Public.reset_table() [7] = {wave_interval = 2700, amount_modifier = 1.48, strength_modifier = 2.50, boss_modifier = 9.0} } this.boss_waves = { - [50] = {{name = 'big-biter', count = 3}}, + [50] = {{name = 'big-biter', count = 2}}, [100] = {{name = 'behemoth-biter', count = 1}}, [150] = {{name = 'behemoth-spitter', count = 4}, {name = 'big-spitter', count = 16}}, [200] = { @@ -77,10 +77,6 @@ function Public.reset_table() }, [300] = {{name = 'behemoth-biter', count = 16}, {name = 'behemoth-spitter', count = 8}} } - this.comfylatron_habitat = { - left_top = {x = -1500, y = -1500}, - right_bottom = {x = -80, y = 1500} - } this.shotgun_shell_damage_modifier_old = {} this.flame_boots = {} end diff --git a/utils/event.lua b/utils/event.lua index e5908b37..17a5b80c 100644 --- a/utils/event.lua +++ b/utils/event.lua @@ -109,6 +109,8 @@ local stage_load = _STAGE.load local script_on_event = script.on_event local script_on_nth_tick = script.on_nth_tick local generate_event_name = script.generate_event_name +local function_table = function_table +local function_nth_tick_table = function_nth_tick_table local Event = {} @@ -259,30 +261,47 @@ end -- See documentation at top of file for details on using events. -- @param event_name -- @param func -function Event.add_removable_function(event_name, func) +-- @param name +function Event.add_removable_function(event_name, func, name) if _LIFECYCLE == stage_load then error('cannot call during on_load', 2) end - if type(func) ~= 'function' then + + if not event_name or not func or not name then + return + end + + local f = assert(load('return ' .. func))() + + if type(f) ~= 'function' then error('func must be a function', 2) end - if Debug.is_closure(func) then + if Debug.is_closure(f) then error( - 'func cannot be a closure as that is a desync risk. Consider using Event.add_removable(event_name, token) instead.', + 'func cannot be a closure as that is a desync risk. Consider using Event.add_removable(event, token) instead.', 2 ) end - local funcs = function_handlers[event_name] + local funcs = function_handlers[name] if not funcs then - function_handlers[event_name] = {func} - else - funcs[#funcs + 1] = func + function_handlers[name] = {} + funcs = function_handlers[name] end + funcs[#funcs + 1] = {event_name = event_name, handler = func} + + local func_table = function_table[name] + if not func_table then + function_table[name] = {} + func_table = function_table[name] + end + + func_table[#func_table + 1] = {event_name = event_name, handler = f} + if handlers_added then - core_add(event_name, func) + core_add(event_name, f) end end @@ -290,12 +309,17 @@ end -- Do NOT call this method during on_load. -- See documentation at top of file for details on using events. -- @param event_name --- @param func -function Event.remove_removable_function(event_name, func) +-- @param name +function Event.remove_removable_function(event_name, name) if _LIFECYCLE == stage_load then error('cannot call during on_load', 2) end - local funcs = function_handlers[event_name] + + if not event_name or not name then + return + end + + local funcs = function_handlers[name] if not funcs then return @@ -303,12 +327,22 @@ function Event.remove_removable_function(event_name, func) local handlers = event_handlers[event_name] - remove(funcs, func) - remove(handlers, func) + for k, v in pairs(function_table[name]) do + local n = v.event_name + if n == event_name then + local f = v.handler + function_handlers[name][k] = nil + remove(handlers, f) + end + end if #handlers == 0 then script_on_event(event_name, nil) end + + if #function_handlers[name] == 0 then + function_handlers[name] = nil + end end --- Register a token handler for the nth tick that can be safely added and removed at runtime. @@ -369,30 +403,46 @@ end -- See documentation at top of file for details on using events. -- @param tick -- @param func -function Event.add_removable_nth_tick_function(tick, func) +function Event.add_removable_nth_tick_function(tick, func, name) if _LIFECYCLE == stage_load then error('cannot call during on_load', 2) end - if type(func) ~= 'function' then + + if not tick or not func or not name then + return + end + + local f = assert(load('return ' .. func))() + + if type(f) ~= 'function' then error('func must be a function', 2) end - if Debug.is_closure(func) then + if Debug.is_closure(f) then error( 'func cannot be a closure as that is a desync risk. Consider using Event.add_removable_nth_tick(tick, token) instead.', 2 ) end - local funcs = function_nth_tick_handlers[tick] + local funcs = function_nth_tick_handlers[name] if not funcs then - function_nth_tick_handlers[tick] = {func} - else - funcs[#funcs + 1] = func + function_nth_tick_handlers[name] = {} + funcs = function_nth_tick_handlers[name] end + funcs[#funcs + 1] = {tick = tick, handler = func} + + local func_table = function_nth_tick_table[name] + if not func_table then + function_nth_tick_table[name] = {} + func_table = function_nth_tick_table[name] + end + + func_table[#func_table + 1] = {tick = tick, handler = f} + if handlers_added then - core_on_nth_tick(tick, func) + core_on_nth_tick(tick, f) end end @@ -401,20 +451,43 @@ end -- See documentation at top of file for details on using events. -- @param tick -- @param func -function Event.remove_removable_nth_tick_function(tick, func) +function Event.remove_removable_nth_tick_function(tick, name) if _LIFECYCLE == stage_load then error('cannot call during on_load', 2) end - local funcs = function_nth_tick_handlers[tick] + + if not tick or not name then + return + end + + local funcs = function_nth_tick_handlers[name] if not funcs then return end local handlers = on_nth_tick_event_handlers[tick] + local f = function_nth_tick_table[name] - remove(funcs, func) - remove(handlers, func) + for k, v in pairs(function_nth_tick_table[name]) do + local t = v.tick + if t == tick then + f = v.handler + end + end + + remove(handlers, f) + + for k, v in pairs(function_nth_tick_handlers[name]) do + local t = v.tick + if t == tick then + function_nth_tick_handlers[name][k] = nil + end + end + + if #function_nth_tick_handlers[name] == 0 then + function_nth_tick_handlers[name] = nil + end if #handlers == 0 then script_on_nth_tick(tick, nil) @@ -447,6 +520,13 @@ function Event.add_event_filter(event, filter) end local function add_handlers() + if not function_table then + function_table = {} + end + if not function_nth_tick_table then + function_nth_tick_table = {} + end + for event_name, tokens in pairs(token_handlers) do for i = 1, #tokens do local handler = Token.get(tokens[i]) @@ -454,10 +534,19 @@ local function add_handlers() end end - for event_name, funcs in pairs(function_handlers) do + for name, funcs in pairs(function_handlers) do for i = 1, #funcs do - local handler = funcs[i] - core_add(event_name, handler) + local e_name = funcs[i].event_name + local func = funcs[i].handler + local handler = assert(load('return ' .. func))() + local func_handler = function_table[name] + if not func_handler then + function_table[name] = {} + func_handler = function_table[name] + end + + func_handler[#func_handler + 1] = {event_name = e_name, handler = handler} + core_add(e_name, handler) end end @@ -468,9 +557,18 @@ local function add_handlers() end end - for tick, funcs in pairs(function_nth_tick_handlers) do + for name, funcs in pairs(function_nth_tick_handlers) do for i = 1, #funcs do - local handler = funcs[i] + local tick = funcs[i].tick + local func = funcs[i].handler + local handler = assert(load('return ' .. func))() + local func_handler = function_nth_tick_table[name] + if not func_handler then + function_nth_tick_table[name] = {} + func_handler = function_nth_tick_table[name] + end + + func_handler[#func_handler + 1] = {tick = tick, handler = handler} core_on_nth_tick(tick, handler) end end @@ -480,5 +578,7 @@ end core_on_init(add_handlers) core_on_load(add_handlers) +function_table = {} +function_nth_tick_table = {} return Event From 4d06dbc2cba3bdedfa49aff9fa579e3f8547dae1 Mon Sep 17 00:00:00 2001 From: Gerkiz Date: Sat, 18 Jul 2020 16:36:24 +0200 Subject: [PATCH 4/5] flamethrower bug fix --- maps/mountain_fortress_v3/entities.lua | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/maps/mountain_fortress_v3/entities.lua b/maps/mountain_fortress_v3/entities.lua index aa5cb326..456e7b7c 100644 --- a/maps/mountain_fortress_v3/entities.lua +++ b/maps/mountain_fortress_v3/entities.lua @@ -324,7 +324,7 @@ local function on_player_mined_entity(event) local name = validator[entity.name] - if built[entity.name] then + if built[entity.name] and entity.force.index == 1 then this.upgrades[name].built = this.upgrades[name].built - 1 if this.upgrades[name].built <= 0 then this.upgrades[name].built = 0 @@ -394,7 +394,7 @@ local function on_robot_mined_entity(event) local name = validator[entity.name] - if built[entity.name] then + if built[entity.name] and entity.force.index == 1 then this.upgrades[name].built = this.upgrades[name].built - 1 if this.upgrades[name].built <= 0 then this.upgrades[name].built = 0 @@ -592,7 +592,7 @@ local function on_entity_died(event) local name = validator[entity.name] - if built[entity.name] then + if built[entity.name] and entity.force.index == 1 then this.upgrades[name].built = this.upgrades[name].built - 1 if this.upgrades[name].built <= 0 then this.upgrades[name].built = 0 @@ -766,7 +766,7 @@ local function on_built_entity(event) local name = validator[entity.name] - if built[entity.name] then + if built[entity.name] and entity.force.index == 1 then local surface = entity.surface if built[entity.name] < limit[entity.name] then @@ -828,7 +828,7 @@ local function on_robot_built_entity(event) local name = validator[entity.name] - if built[entity.name] then + if built[entity.name] and entity.force.index == 1 then local surface = entity.surface if built[entity.name] < limit[entity.name] then From b8d9f5bbae3c9eabaff505e8b1968cd2b6327409 Mon Sep 17 00:00:00 2001 From: Gerkiz Date: Sat, 18 Jul 2020 17:08:56 +0200 Subject: [PATCH 5/5] cave choppy fixes --- maps/cave_choppy/cave_miner.lua | 3292 ++++++++++-------- maps/cave_choppy/cave_miner_changelog.txt | 115 - maps/cave_choppy/cave_miner_kaboomsticks.lua | 1922 +++++++++- maps/cave_choppy/cave_miner_market_items.lua | 66 +- maps/cave_choppy/choppy.lua | 980 +++--- maps/cave_choppy/player_elevator.lua | 239 +- 6 files changed, 4382 insertions(+), 2232 deletions(-) delete mode 100644 maps/cave_choppy/cave_miner_changelog.txt diff --git a/maps/cave_choppy/cave_miner.lua b/maps/cave_choppy/cave_miner.lua index ca43dc11..ed3a1849 100644 --- a/maps/cave_choppy/cave_miner.lua +++ b/maps/cave_choppy/cave_miner.lua @@ -1,10 +1,10 @@ -- Cave Miner -- mewmew made this -- --- modified by Gerkiz -- +-- modified by Gerkiz -- -require "choppy" -require "player_elevator" -require "modules.rocks_broken_paint_tiles" -require "cave_miner_kaboomsticks" +require 'choppy' +require 'player_elevator' +require 'modules.rocks_broken_paint_tiles' +require 'cave_miner_kaboomsticks' --require "modules.satellite_score" --require "modules.explosive_biters" --require "modules.spawners_contain_biters" @@ -14,1516 +14,2012 @@ require "cave_miner_kaboomsticks" local enable_fishbank_terminal = true local simplex_noise = require 'utils.simplex_noise'.d2 -local Event = require 'utils.event' -local Module = require "modules.infinity_chest" -local market_items = require "cave_miner_market_items" +local Event = require 'utils.event' +local Module = require 'modules.infinity_chest' +local market_items = require 'cave_miner_market_items' +local Map = require 'modules.map_info' local spawn_dome_size = 8000 local darkness_messages = { - "Something is lurking in the dark...", - "A shadow moves. I doubt it is friendly...", - "The silence grows louder...", - "Trust not your eyes. They are useless in the dark.", - "The darkness hides only death. Turn back now.", - "You hear noises...", - "They chitter as if laughing, hungry for their next foolish meal...", - "Despite what the radars tell you, it is not safe here...", - "The shadows are moving...", - "You feel like, something is watching you...", - } + 'Something is lurking in the dark...', + 'A shadow moves. I doubt it is friendly...', + 'The silence grows louder...', + 'Trust not your eyes. They are useless in the dark.', + 'The darkness hides only death. Turn back now.', + 'You hear noises...', + 'They chitter as if laughing, hungry for their next foolish meal...', + 'Despite what the radars tell you, it is not safe here...', + 'The shadows are moving...', + 'You feel like, something is watching you...' +} local rock_inhabitants = { - [1] = {"small-biter"}, - [2] = {"small-biter","small-biter","small-biter","small-biter","small-biter","medium-biter"}, - [3] = {"small-biter","small-biter","small-biter","small-biter","medium-biter","medium-biter"}, - [4] = {"small-biter","small-biter","small-biter","medium-biter","medium-biter","small-spitter"}, - [5] = {"small-biter","small-biter","medium-biter","medium-biter","medium-biter","small-spitter"}, - [6] = {"small-biter","small-biter","medium-biter","medium-biter","big-biter","small-spitter"}, - [7] = {"small-biter","small-biter","medium-biter","medium-biter","big-biter","medium-spitter"}, - [8] = {"small-biter","medium-biter","medium-biter","medium-biter","big-biter","medium-spitter"}, - [9] = {"small-biter","medium-biter","medium-biter","big-biter","big-biter","medium-spitter"}, - [10] = {"medium-biter","medium-biter","medium-biter","big-biter","big-biter","big-spitter"}, - [11] = {"medium-biter","medium-biter","big-biter","big-biter","big-biter","big-spitter"}, - [12] = {"medium-biter","big-biter","big-biter","big-biter","big-biter","big-spitter"}, - [13] = {"big-biter","big-biter","big-biter","big-biter","big-biter","big-spitter"}, - [14] = {"big-biter","big-biter","big-biter","big-biter","behemoth-biter","big-spitter"}, - [15] = {"big-biter","big-biter","big-biter","behemoth-biter","behemoth-biter","big-spitter"}, - [16] = {"big-biter","big-biter","big-biter","behemoth-biter","behemoth-biter","behemoth-spitter"}, - [17] = {"big-biter","big-biter","behemoth-biter","behemoth-biter","behemoth-biter","behemoth-spitter"}, - [18] = {"big-biter","behemoth-biter","behemoth-biter","behemoth-biter","behemoth-biter","behemoth-spitter"}, - [19] = {"behemoth-biter","behemoth-biter","behemoth-biter","behemoth-biter","behemoth-biter","behemoth-spitter"}, - [20] = {"behemoth-biter","behemoth-biter","behemoth-biter","behemoth-biter","behemoth-spitter","behemoth-spitter"} - } + [1] = {'small-biter'}, + [2] = {'small-biter', 'small-biter', 'small-biter', 'small-biter', 'small-biter', 'medium-biter'}, + [3] = {'small-biter', 'small-biter', 'small-biter', 'small-biter', 'medium-biter', 'medium-biter'}, + [4] = {'small-biter', 'small-biter', 'small-biter', 'medium-biter', 'medium-biter', 'small-spitter'}, + [5] = {'small-biter', 'small-biter', 'medium-biter', 'medium-biter', 'medium-biter', 'small-spitter'}, + [6] = {'small-biter', 'small-biter', 'medium-biter', 'medium-biter', 'big-biter', 'small-spitter'}, + [7] = {'small-biter', 'small-biter', 'medium-biter', 'medium-biter', 'big-biter', 'medium-spitter'}, + [8] = {'small-biter', 'medium-biter', 'medium-biter', 'medium-biter', 'big-biter', 'medium-spitter'}, + [9] = {'small-biter', 'medium-biter', 'medium-biter', 'big-biter', 'big-biter', 'medium-spitter'}, + [10] = {'medium-biter', 'medium-biter', 'medium-biter', 'big-biter', 'big-biter', 'big-spitter'}, + [11] = {'medium-biter', 'medium-biter', 'big-biter', 'big-biter', 'big-biter', 'big-spitter'}, + [12] = {'medium-biter', 'big-biter', 'big-biter', 'big-biter', 'big-biter', 'big-spitter'}, + [13] = {'big-biter', 'big-biter', 'big-biter', 'big-biter', 'big-biter', 'big-spitter'}, + [14] = {'big-biter', 'big-biter', 'big-biter', 'big-biter', 'behemoth-biter', 'big-spitter'}, + [15] = {'big-biter', 'big-biter', 'big-biter', 'behemoth-biter', 'behemoth-biter', 'big-spitter'}, + [16] = {'big-biter', 'big-biter', 'big-biter', 'behemoth-biter', 'behemoth-biter', 'behemoth-spitter'}, + [17] = {'big-biter', 'big-biter', 'behemoth-biter', 'behemoth-biter', 'behemoth-biter', 'behemoth-spitter'}, + [18] = {'big-biter', 'behemoth-biter', 'behemoth-biter', 'behemoth-biter', 'behemoth-biter', 'behemoth-spitter'}, + [19] = { + 'behemoth-biter', + 'behemoth-biter', + 'behemoth-biter', + 'behemoth-biter', + 'behemoth-biter', + 'behemoth-spitter' + }, + [20] = { + 'behemoth-biter', + 'behemoth-biter', + 'behemoth-biter', + 'behemoth-biter', + 'behemoth-spitter', + 'behemoth-spitter' + } +} local worm_raffle_table = { - [1] = {"small-worm-turret", "small-worm-turret", "small-worm-turret", "small-worm-turret", "small-worm-turret", "small-worm-turret"}, - [2] = {"small-worm-turret", "small-worm-turret", "small-worm-turret", "small-worm-turret", "small-worm-turret", "medium-worm-turret"}, - [3] = {"small-worm-turret", "small-worm-turret", "small-worm-turret", "small-worm-turret", "medium-worm-turret", "medium-worm-turret"}, - [4] = {"small-worm-turret", "small-worm-turret", "small-worm-turret", "medium-worm-turret", "medium-worm-turret", "medium-worm-turret"}, - [5] = {"small-worm-turret", "small-worm-turret", "medium-worm-turret", "medium-worm-turret", "medium-worm-turret", "big-worm-turret"}, - [6] = {"small-worm-turret", "medium-worm-turret", "medium-worm-turret", "medium-worm-turret", "medium-worm-turret", "big-worm-turret"}, - [7] = {"medium-worm-turret", "medium-worm-turret", "medium-worm-turret", "medium-worm-turret", "big-worm-turret", "big-worm-turret"}, - [8] = {"medium-worm-turret", "medium-worm-turret", "medium-worm-turret", "medium-worm-turret", "big-worm-turret", "big-worm-turret"}, - [9] = {"medium-worm-turret", "medium-worm-turret", "medium-worm-turret", "big-worm-turret", "big-worm-turret", "big-worm-turret"}, - [10] = {"medium-worm-turret", "medium-worm-turret", "medium-worm-turret", "big-worm-turret", "big-worm-turret", "big-worm-turret"} - } + [1] = { + 'small-worm-turret', + 'small-worm-turret', + 'small-worm-turret', + 'small-worm-turret', + 'small-worm-turret', + 'small-worm-turret' + }, + [2] = { + 'small-worm-turret', + 'small-worm-turret', + 'small-worm-turret', + 'small-worm-turret', + 'small-worm-turret', + 'medium-worm-turret' + }, + [3] = { + 'small-worm-turret', + 'small-worm-turret', + 'small-worm-turret', + 'small-worm-turret', + 'medium-worm-turret', + 'medium-worm-turret' + }, + [4] = { + 'small-worm-turret', + 'small-worm-turret', + 'small-worm-turret', + 'medium-worm-turret', + 'medium-worm-turret', + 'medium-worm-turret' + }, + [5] = { + 'small-worm-turret', + 'small-worm-turret', + 'medium-worm-turret', + 'medium-worm-turret', + 'medium-worm-turret', + 'big-worm-turret' + }, + [6] = { + 'small-worm-turret', + 'medium-worm-turret', + 'medium-worm-turret', + 'medium-worm-turret', + 'medium-worm-turret', + 'big-worm-turret' + }, + [7] = { + 'medium-worm-turret', + 'medium-worm-turret', + 'medium-worm-turret', + 'medium-worm-turret', + 'big-worm-turret', + 'big-worm-turret' + }, + [8] = { + 'medium-worm-turret', + 'medium-worm-turret', + 'medium-worm-turret', + 'medium-worm-turret', + 'big-worm-turret', + 'big-worm-turret' + }, + [9] = { + 'medium-worm-turret', + 'medium-worm-turret', + 'medium-worm-turret', + 'big-worm-turret', + 'big-worm-turret', + 'big-worm-turret' + }, + [10] = { + 'medium-worm-turret', + 'medium-worm-turret', + 'medium-worm-turret', + 'big-worm-turret', + 'big-worm-turret', + 'big-worm-turret' + } +} local player_hunger_fish_food_value = 10 -local player_hunger_spawn_value = 80 +local player_hunger_spawn_value = 80 local player_hunger_stages = {} for x = 1, 200, 1 do - if x <= 200 then player_hunger_stages[x] = "Obese" end - if x <= 179 then player_hunger_stages[x] = "Stuffed" end - if x <= 150 then player_hunger_stages[x] = "Bloated" end - if x <= 130 then player_hunger_stages[x] = "Sated" end - if x <= 110 then player_hunger_stages[x] = "Well Fed" end - if x <= 89 then player_hunger_stages[x] = "Nourished" end - if x <= 70 then player_hunger_stages[x] = "Hungry" end - if x <= 35 then player_hunger_stages[x] = "Starving" end -end + if x <= 200 then + player_hunger_stages[x] = 'Obese' + end + if x <= 179 then + player_hunger_stages[x] = 'Stuffed' + end + if x <= 150 then + player_hunger_stages[x] = 'Bloated' + end + if x <= 130 then + player_hunger_stages[x] = 'Sated' + end + if x <= 110 then + player_hunger_stages[x] = 'Well Fed' + end + if x <= 89 then + player_hunger_stages[x] = 'Nourished' + end + if x <= 70 then + player_hunger_stages[x] = 'Hungry' + end + if x <= 35 then + player_hunger_stages[x] = 'Starving' + end +end local player_hunger_color_list = {} for x = 1, 50, 1 do - player_hunger_color_list[x] = {r = 0.5 + x*0.01, g = x*0.01, b = x*0.005} - player_hunger_color_list[50+x] = {r = 1 - x*0.02, g = 0.5 + x*0.01, b = 0.25} - player_hunger_color_list[100+x] = {r = 0 + x*0.02, g = 1 - x*0.01, b = 0.25} - player_hunger_color_list[150+x] = {r = 1 - x*0.01, g = 0.5 - x*0.01, b = 0.25 - x*0.005} + player_hunger_color_list[x] = {r = 0.5 + x * 0.01, g = x * 0.01, b = x * 0.005} + player_hunger_color_list[50 + x] = {r = 1 - x * 0.02, g = 0.5 + x * 0.01, b = 0.25} + player_hunger_color_list[100 + x] = {r = 0 + x * 0.02, g = 1 - x * 0.01, b = 0.25} + player_hunger_color_list[150 + x] = {r = 1 - x * 0.01, g = 0.5 - x * 0.01, b = 0.25 - x * 0.005} end local player_hunger_buff = {} -local buff_top_value = 0.70 +local buff_top_value = 0.70 for x = 1, 200, 1 do - player_hunger_buff[x] = buff_top_value + player_hunger_buff[x] = buff_top_value end local y = 1 -for x = 89, 1, -1 do - player_hunger_buff[x] = buff_top_value - y * 0.015 - y = y + 1 +for x = 89, 1, -1 do + player_hunger_buff[x] = buff_top_value - y * 0.015 + y = y + 1 end -local y = 1 -for x = 111, 200, 1 do - player_hunger_buff[x] = buff_top_value - y * 0.015 - y = y + 1 +local y = 1 +for x = 111, 200, 1 do + player_hunger_buff[x] = buff_top_value - y * 0.015 + y = y + 1 end local function shuffle(tbl) - local size = #tbl - for i = size, 1, -1 do - local rand = math.random(size) - tbl[i], tbl[rand] = tbl[rand], tbl[i] - end - return tbl + local size = #tbl + for i = size, 1, -1 do + local rand = math.random(size) + tbl[i], tbl[rand] = tbl[rand], tbl[i] + end + return tbl end local function init_surface(surface) - surface.map_gen_settings = {} - return surface -end - -local function create_cave_miner_button(player) - if player.gui.top["caver_miner_stats_toggle_button"] then player.gui.top["caver_miner_stats_toggle_button"].destroy() end - local b = player.gui.top.add({ type = "sprite-button", name = "caver_miner_stats_toggle_button", sprite = "item/dummy-steel-axe" }) - b.style.minimal_height = 38 - b.style.minimal_width = 38 - b.style.top_padding = 2 - b.style.left_padding = 4 - b.style.right_padding = 4 - b.style.bottom_padding = 2 + surface.map_gen_settings = {} + return surface end -local function create_cave_miner_info(player) - local frame = player.gui.left.add {type = "frame", name = "cave_miner_info", direction = "vertical"} - local t = frame.add {type = "table", column_count = 1} - - local tt = t.add {type = "table", column_count = 3} - local l = tt.add {type = "label", caption = " --Cave Miner-- "} - l.style.font = "default-game" - l.style.font_color = {r=0.6, g=0.3, b=0.99} - l.style.top_padding = 6 - l.style.bottom_padding = 6 - - local l = tt.add {type = "label", caption = " *diggy diggy hole* "} - l.style.font = "default" - l.style.font_color = {r=0.99, g=0.99, b=0.2} - l.style.minimal_width = 340 - - local b = tt.add {type = "button", caption = "X", name = "close_cave_miner_info", align = "right"} - b.style.font = "default" - b.style.minimal_height = 30 - b.style.minimal_width = 30 - b.style.top_padding = 2 - b.style.left_padding = 4 - b.style.right_padding = 4 - b.style.bottom_padding = 2 - - local tt = t.add {type = "table", column_count = 1} - local frame = t.add {type = "frame"} - local l = frame.add {type = "label", caption = global.cave_miner_map_info} - l.style.single_line = false - l.style.font_color = {r=0.95, g=0.95, b=0.95} -end +local function create_cave_miner_stats_gui(player) + if player.gui.top['hunger_frame'] then + player.gui.top['hunger_frame'].destroy() + end + if player.gui.top['caver_miner_stats_frame'] then + player.gui.top['caver_miner_stats_frame'].destroy() + end -local function create_cave_miner_stats_gui(player) - if player.gui.top["hunger_frame"] then player.gui.top["hunger_frame"].destroy() end - if player.gui.top["caver_miner_stats_frame"] then player.gui.top["caver_miner_stats_frame"].destroy() end - - local captions = {} - local caption_style = {{"font", "default-bold"}, {"font_color",{ r=0.63, g=0.63, b=0.63}}, {"top_padding",2}, {"left_padding",0},{"right_padding",0},{"minimal_width",0}} - local stat_numbers = {} - local stat_number_style = {{"font", "default-bold"}, {"font_color",{ r=0.77, g=0.77, b=0.77}}, {"top_padding",2}, {"left_padding",0},{"right_padding",0},{"minimal_width",0}} - local separators = {} - local separator_style = {{"font", "default-bold"}, {"font_color",{ r=0.15, g=0.15, b=0.89}}, {"top_padding",2}, {"left_padding",2},{"right_padding",2},{"minimal_width",0}} - - local frame = player.gui.top.add { type = "frame", name = "hunger_frame"} - local str = tostring(global.player_hunger[player.name]) - str = str .. "% " - str = str .. player_hunger_stages[global.player_hunger[player.name]] - local caption_hunger = frame.add { type = "label", caption = str } - caption_hunger.style.font = "default-bold" - caption_hunger.style.font_color = player_hunger_color_list[global.player_hunger[player.name]] - caption_hunger.style.top_padding = 2 - - local frame = player.gui.top.add { type = "frame", name = "caver_miner_stats_frame" } - - local t = frame.add { type = "table", column_count = 11 } - - captions[1] = t.add { type = "label", caption = '[img=item/iron-ore] :' } - - global.total_ores_mined = global.stats_ores_found + game.forces.player.item_production_statistics.get_input_count("coal") + game.forces.player.item_production_statistics.get_input_count("iron-ore") + game.forces.player.item_production_statistics.get_input_count("copper-ore") + game.forces.player.item_production_statistics.get_input_count("uranium-ore") - - stat_numbers[1] = t.add { type = "label", caption = global.total_ores_mined } - - separators[1] = t.add { type = "label", caption = "|"} - - captions[2] = t.add { type = "label", caption = '[img=entity.rock-huge] :' } - stat_numbers[2] = t.add { type = "label", caption = global.stats_rocks_broken } - - separators[2] = t.add { type = "label", caption = "|"} - - captions[3] = t.add { type = "label", caption = '[img=item.productivity-module] :' } - local x = math.floor(game.forces.player.manual_mining_speed_modifier * 100 + player_hunger_buff[global.player_hunger[player.name]] * 100) - local str = "" - if x > 0 then str = str .. "+" end - str = str .. tostring(x) - str = str .. "%" - stat_numbers[3] = t.add { type = "label", caption = str } - - if game.forces.player.manual_mining_speed_modifier > 0 or game.forces.player.mining_drill_productivity_bonus > 0 then - separators[3] = t.add { type = "label", caption = "|"} - - captions[5] = t.add { type = "label", caption = '[img=utility.hand] :' } - local str = "+" - str = str .. tostring(game.forces.player.mining_drill_productivity_bonus * 100) - str = str .. "%" - stat_numbers[4] = t.add { type = "label", caption = str } - - end - - for _, s in pairs (caption_style) do - for _, l in pairs (captions) do - l.style[s[1]] = s[2] - end - end - for _, s in pairs (stat_number_style) do - for _, l in pairs (stat_numbers) do - l.style[s[1]] = s[2] - end - end - for _, s in pairs (separator_style) do - for _, l in pairs (separators) do - l.style[s[1]] = s[2] - end - end - stat_numbers[1].style.minimal_width = 9 * string.len(tostring(global.stats_ores_found)) - stat_numbers[2].style.minimal_width = 9 * string.len(tostring(global.stats_rocks_broken)) + local captions = {} + local caption_style = { + {'font', 'default-bold'}, + {'font_color', {r = 0.63, g = 0.63, b = 0.63}}, + {'top_padding', 2}, + {'left_padding', 0}, + {'right_padding', 0}, + {'minimal_width', 0} + } + local stat_numbers = {} + local stat_number_style = { + {'font', 'default-bold'}, + {'font_color', {r = 0.77, g = 0.77, b = 0.77}}, + {'top_padding', 2}, + {'left_padding', 0}, + {'right_padding', 0}, + {'minimal_width', 0} + } + local separators = {} + local separator_style = { + {'font', 'default-bold'}, + {'font_color', {r = 0.15, g = 0.15, b = 0.89}}, + {'top_padding', 2}, + {'left_padding', 2}, + {'right_padding', 2}, + {'minimal_width', 0} + } + + local frame = player.gui.top.add {type = 'frame', name = 'hunger_frame'} + frame.style.minimal_height = 38 + frame.style.maximal_height = 38 + local str = tostring(global.player_hunger[player.name]) + str = str .. '% ' + str = str .. player_hunger_stages[global.player_hunger[player.name]] + local caption_hunger = frame.add {type = 'label', caption = str} + caption_hunger.tooltip = 'Eat fish to survive!' + caption_hunger.style.font = 'default-bold' + caption_hunger.style.font_color = player_hunger_color_list[global.player_hunger[player.name]] + caption_hunger.style.top_padding = 2 + + local frame = player.gui.top.add {type = 'frame', name = 'caver_miner_stats_frame'} + frame.style.minimal_height = 38 + frame.style.maximal_height = 38 + + local t = frame.add {type = 'table', column_count = 11} + + captions[1] = t.add {type = 'label', caption = '[img=item/iron-ore] :'} + captions[1].tooltip = 'Amount of ores harvested.' + + global.total_ores_mined = + global.stats_ores_found + game.forces.player.item_production_statistics.get_input_count('coal') + + game.forces.player.item_production_statistics.get_input_count('iron-ore') + + game.forces.player.item_production_statistics.get_input_count('copper-ore') + + game.forces.player.item_production_statistics.get_input_count('uranium-ore') + + stat_numbers[1] = t.add {type = 'label', caption = global.total_ores_mined} + + separators[1] = t.add {type = 'label', caption = '|'} + + captions[2] = t.add {type = 'label', caption = '[img=entity.rock-huge] :'} + captions[2].tooltip = 'Amount of rocks mined.' + stat_numbers[2] = t.add {type = 'label', caption = global.stats_rocks_broken} + + separators[2] = t.add {type = 'label', caption = '|'} + + captions[3] = t.add {type = 'label', caption = '[img=item.productivity-module] :'} + captions[3].tooltip = 'Current mining speed bonus.' + local x = + math.floor( + game.forces.player.manual_mining_speed_modifier * 100 + + player_hunger_buff[global.player_hunger[player.name]] * 100 + ) + local str = '' + if x > 0 then + str = str .. '+' + end + str = str .. tostring(x) + str = str .. '%' + stat_numbers[3] = t.add {type = 'label', caption = str} + + if game.forces.player.manual_mining_speed_modifier > 0 or game.forces.player.mining_drill_productivity_bonus > 0 then + separators[3] = t.add {type = 'label', caption = '|'} + + captions[5] = t.add {type = 'label', caption = '[img=utility.hand] :'} + local str = '+' + str = str .. tostring(game.forces.player.mining_drill_productivity_bonus * 100) + str = str .. '%' + stat_numbers[4] = t.add {type = 'label', caption = str} + end + + for _, s in pairs(caption_style) do + for _, l in pairs(captions) do + l.style[s[1]] = s[2] + end + end + for _, s in pairs(stat_number_style) do + for _, l in pairs(stat_numbers) do + l.style[s[1]] = s[2] + end + end + for _, s in pairs(separator_style) do + for _, l in pairs(separators) do + l.style[s[1]] = s[2] + end + end + stat_numbers[1].style.minimal_width = 9 * string.len(tostring(global.stats_ores_found)) + stat_numbers[2].style.minimal_width = 9 * string.len(tostring(global.stats_rocks_broken)) end local function refresh_gui() - for _, player in pairs(game.connected_players) do - local frame = player.gui.top["caver_miner_stats_frame"] - if (frame) then - create_cave_miner_button(player) - create_cave_miner_stats_gui(player) - end - end + for _, player in pairs(game.connected_players) do + local frame = player.gui.top['caver_miner_stats_frame'] + if (frame) then + create_cave_miner_stats_gui(player) + end + end end -local function treasure_chest(position, distance_to_center) - - local chest_raffle = {} - local chest_loot = { - --{{name = "steel-axe", count = math.random(1,3)}, weight = 2, evolution_min = 0.0, evolution_max = 0.5}, - {{name = "submachine-gun", count = math.random(1,3)}, weight = 3, evolution_min = 0.0, evolution_max = 0.1}, - {{name = "slowdown-capsule", count = math.random(16,32)}, weight = 1, evolution_min = 0.3, evolution_max = 0.7}, - {{name = "poison-capsule", count = math.random(16,32)}, weight = 3, evolution_min = 0.3, evolution_max = 1}, - {{name = "uranium-cannon-shell", count = math.random(16,32)}, weight = 5, evolution_min = 0.6, evolution_max = 1}, - {{name = "cannon-shell", count = math.random(16,32)}, weight = 5, evolution_min = 0.4, evolution_max = 0.7}, - {{name = "explosive-uranium-cannon-shell", count = math.random(16,32)}, weight = 5, evolution_min = 0.6, evolution_max = 1}, - {{name = "explosive-cannon-shell", count = math.random(16,32)}, weight = 5, evolution_min = 0.4, evolution_max = 0.8}, - {{name = "shotgun", count = 1}, weight = 2, evolution_min = 0.0, evolution_max = 0.2}, - {{name = "shotgun-shell", count = math.random(16,32)}, weight = 5, evolution_min = 0.0, evolution_max = 0.2}, - {{name = "combat-shotgun", count = 1}, weight = 3, evolution_min = 0.3, evolution_max = 0.8}, - {{name = "piercing-shotgun-shell", count = math.random(16,32)}, weight = 10, evolution_min = 0.2, evolution_max = 1}, - {{name = "flamethrower", count = 1}, weight = 3, evolution_min = 0.3, evolution_max = 0.6}, - {{name = "flamethrower-ammo", count = math.random(16,32)}, weight = 5, evolution_min = 0.3, evolution_max = 1}, - {{name = "rocket-launcher", count = 1}, weight = 3, evolution_min = 0.2, evolution_max = 0.6}, - {{name = "rocket", count = math.random(16,32)}, weight = 5, evolution_min = 0.2, evolution_max = 0.7}, - {{name = "explosive-rocket", count = math.random(16,32)}, weight = 5, evolution_min = 0.3, evolution_max = 1}, - {{name = "land-mine", count = math.random(16,32)}, weight = 5, evolution_min = 0.2, evolution_max = 0.7}, - {{name = "grenade", count = math.random(16,32)}, weight = 5, evolution_min = 0.0, evolution_max = 0.5}, - {{name = "cluster-grenade", count = math.random(16,32)}, weight = 5, evolution_min = 0.4, evolution_max = 1}, - {{name = "firearm-magazine", count = math.random(32,128)}, weight = 5, evolution_min = 0, evolution_max = 0.3}, - {{name = "piercing-rounds-magazine", count = math.random(32,128)}, weight = 5, evolution_min = 0.1, evolution_max = 0.8}, - {{name = "uranium-rounds-magazine", count = math.random(32,128)}, weight = 5, evolution_min = 0.5, evolution_max = 1}, - {{name = "railgun", count = 1}, weight = 1, evolution_min = 0.2, evolution_max = 1}, - {{name = "railgun-dart", count = math.random(16,32)}, weight = 3, evolution_min = 0.2, evolution_max = 0.7}, - {{name = "defender-capsule", count = math.random(8,16)}, weight = 2, evolution_min = 0.0, evolution_max = 0.7}, - {{name = "distractor-capsule", count = math.random(8,16)}, weight = 2, evolution_min = 0.2, evolution_max = 1}, - {{name = "destroyer-capsule", count = math.random(8,16)}, weight = 2, evolution_min = 0.3, evolution_max = 1}, - --{{name = "atomic-bomb", count = math.random(8,16)}, weight = 1, evolution_min = 0.3, evolution_max = 1}, - {{name = "light-armor", count = 1}, weight = 3, evolution_min = 0, evolution_max = 0.1}, - {{name = "heavy-armor", count = 1}, weight = 3, evolution_min = 0.1, evolution_max = 0.3}, - {{name = "modular-armor", count = 1}, weight = 2, evolution_min = 0.2, evolution_max = 0.6}, - {{name = "power-armor", count = 1}, weight = 2, evolution_min = 0.4, evolution_max = 1}, - --{{name = "power-armor-mk2", count = 1}, weight = 1, evolution_min = 0.9, evolution_max = 1}, - {{name = "battery-equipment", count = 1}, weight = 2, evolution_min = 0.3, evolution_max = 0.7}, - {{name = "battery-mk2-equipment", count = 1}, weight = 2, evolution_min = 0.6, evolution_max = 1}, - {{name = "belt-immunity-equipment", count = 1}, weight = 1, evolution_min = 0.3, evolution_max = 1}, - --{{name = "solar-panel-equipment", count = math.random(1,4)}, weight = 5, evolution_min = 0.3, evolution_max = 0.8}, - {{name = "discharge-defense-equipment", count = 1}, weight = 1, evolution_min = 0.5, evolution_max = 0.8}, - {{name = "energy-shield-equipment", count = math.random(1,2)}, weight = 2, evolution_min = 0.3, evolution_max = 0.8}, - {{name = "energy-shield-mk2-equipment", count = 1}, weight = 2, evolution_min = 0.7, evolution_max = 1}, - {{name = "exoskeleton-equipment", count = 1}, weight = 1, evolution_min = 0.3, evolution_max = 1}, - {{name = "fusion-reactor-equipment", count = 1}, weight = 1, evolution_min = 0.5, evolution_max = 1}, - --{{name = "night-vision-equipment", count = 1}, weight = 1, evolution_min = 0.3, evolution_max = 0.8}, - {{name = "personal-laser-defense-equipment", count = 1}, weight = 2, evolution_min = 0.5, evolution_max = 1}, - {{name = "exoskeleton-equipment", count = 1}, weight = 1, evolution_min = 0.3, evolution_max = 1}, - - - {{name = "iron-gear-wheel", count = math.random(80,100)}, weight = 3, evolution_min = 0.0, evolution_max = 0.3}, - {{name = "copper-cable", count = math.random(100,200)}, weight = 3, evolution_min = 0.0, evolution_max = 0.3}, - {{name = "engine-unit", count = math.random(16,32)}, weight = 2, evolution_min = 0.1, evolution_max = 0.5}, - {{name = "electric-engine-unit", count = math.random(16,32)}, weight = 2, evolution_min = 0.4, evolution_max = 0.8}, - {{name = "battery", count = math.random(50,150)}, weight = 2, evolution_min = 0.3, evolution_max = 0.8}, - {{name = "advanced-circuit", count = math.random(50,150)}, weight = 3, evolution_min = 0.4, evolution_max = 1}, - {{name = "electronic-circuit", count = math.random(50,150)}, weight = 3, evolution_min = 0.0, evolution_max = 0.4}, - {{name = "processing-unit", count = math.random(50,150)}, weight = 3, evolution_min = 0.7, evolution_max = 1}, - {{name = "explosives", count = math.random(40,50)}, weight = 10, evolution_min = 0.0, evolution_max = 1}, - {{name = "lubricant-barrel", count = math.random(4,10)}, weight = 1, evolution_min = 0.3, evolution_max = 0.5}, - {{name = "rocket-fuel", count = math.random(4,10)}, weight = 2, evolution_min = 0.3, evolution_max = 0.7}, - --{{name = "computer", count = 1}, weight = 2, evolution_min = 0, evolution_max = 1}, - {{name = "steel-plate", count = math.random(25,75)}, weight = 2, evolution_min = 0.1, evolution_max = 0.3}, - {{name = "nuclear-fuel", count = 1}, weight = 2, evolution_min = 0.7, evolution_max = 1}, - - {{name = "burner-inserter", count = math.random(8,16)}, weight = 3, evolution_min = 0.0, evolution_max = 0.1}, - {{name = "inserter", count = math.random(8,16)}, weight = 3, evolution_min = 0.0, evolution_max = 0.4}, - {{name = "long-handed-inserter", count = math.random(8,16)}, weight = 3, evolution_min = 0.0, evolution_max = 0.4}, - {{name = "fast-inserter", count = math.random(8,16)}, weight = 3, evolution_min = 0.1, evolution_max = 1}, - {{name = "filter-inserter", count = math.random(8,16)}, weight = 1, evolution_min = 0.2, evolution_max = 1}, - {{name = "stack-filter-inserter", count = math.random(4,8)}, weight = 1, evolution_min = 0.4, evolution_max = 1}, - {{name = "stack-inserter", count = math.random(4,8)}, weight = 3, evolution_min = 0.3, evolution_max = 1}, - {{name = "small-electric-pole", count = math.random(16,24)}, weight = 3, evolution_min = 0.0, evolution_max = 0.3}, - {{name = "medium-electric-pole", count = math.random(8,16)}, weight = 3, evolution_min = 0.2, evolution_max = 1}, - {{name = "big-electric-pole", count = math.random(4,8)}, weight = 3, evolution_min = 0.3, evolution_max = 1}, - {{name = "substation", count = math.random(2,4)}, weight = 3, evolution_min = 0.5, evolution_max = 1}, - {{name = "wooden-chest", count = math.random(16,24)}, weight = 3, evolution_min = 0.0, evolution_max = 0.2}, - {{name = "iron-chest", count = math.random(4,8)}, weight = 3, evolution_min = 0.1, evolution_max = 0.4}, - {{name = "steel-chest", count = math.random(4,8)}, weight = 3, evolution_min = 0.3, evolution_max = 1}, - {{name = "small-lamp", count = math.random(16,32)}, weight = 3, evolution_min = 0.1, evolution_max = 0.3}, - {{name = "rail", count = math.random(25,75)}, weight = 3, evolution_min = 0.1, evolution_max = 0.6}, - {{name = "assembling-machine-1", count = math.random(2,4)}, weight = 3, evolution_min = 0.0, evolution_max = 0.3}, - {{name = "assembling-machine-2", count = math.random(2,4)}, weight = 3, evolution_min = 0.2, evolution_max = 0.8}, - {{name = "assembling-machine-3", count = math.random(1,2)}, weight = 3, evolution_min = 0.5, evolution_max = 1}, - {{name = "accumulator", count = math.random(4,8)}, weight = 3, evolution_min = 0.4, evolution_max = 1}, - {{name = "offshore-pump", count = math.random(1,3)}, weight = 2, evolution_min = 0.0, evolution_max = 0.1}, - {{name = "beacon", count = math.random(1,2)}, weight = 3, evolution_min = 0.7, evolution_max = 1}, - {{name = "boiler", count = math.random(4,8)}, weight = 3, evolution_min = 0.0, evolution_max = 0.3}, - {{name = "steam-engine", count = math.random(2,4)}, weight = 3, evolution_min = 0.0, evolution_max = 0.5}, - {{name = "steam-turbine", count = math.random(1,2)}, weight = 2, evolution_min = 0.6, evolution_max = 1}, - --{{name = "nuclear-reactor", count = 1}, weight = 1, evolution_min = 0.6, evolution_max = 1}, - {{name = "centrifuge", count = math.random(1,2)}, weight = 1, evolution_min = 0.6, evolution_max = 1}, - {{name = "heat-pipe", count = math.random(4,8)}, weight = 2, evolution_min = 0.5, evolution_max = 1}, - {{name = "heat-exchanger", count = math.random(2,4)}, weight = 2, evolution_min = 0.5, evolution_max = 1}, - {{name = "arithmetic-combinator", count = math.random(8,16)}, weight = 1, evolution_min = 0.1, evolution_max = 1}, - {{name = "constant-combinator", count = math.random(8,16)}, weight = 1, evolution_min = 0.1, evolution_max = 1}, - {{name = "decider-combinator", count = math.random(8,16)}, weight = 1, evolution_min = 0.1, evolution_max = 1}, - {{name = "power-switch", count = math.random(1,2)}, weight = 1, evolution_min = 0.1, evolution_max = 1}, - {{name = "programmable-speaker", count = math.random(4,8)}, weight = 1, evolution_min = 0.1, evolution_max = 1}, - {{name = "green-wire", count = math.random(50,99)}, weight = 1, evolution_min = 0.1, evolution_max = 1}, - {{name = "red-wire", count = math.random(50,99)}, weight = 1, evolution_min = 0.1, evolution_max = 1}, - {{name = "chemical-plant", count = math.random(1,3)}, weight = 3, evolution_min = 0.3, evolution_max = 1}, - {{name = "burner-mining-drill", count = math.random(2,4)}, weight = 3, evolution_min = 0.0, evolution_max = 0.2}, - {{name = "electric-mining-drill", count = math.random(2,4)}, weight = 3, evolution_min = 0.2, evolution_max = 0.6}, - {{name = "express-transport-belt", count = math.random(25,75)}, weight = 3, evolution_min = 0.5, evolution_max = 1}, - {{name = "express-underground-belt", count = math.random(4,8)}, weight = 3, evolution_min = 0.5, evolution_max = 1}, - {{name = "express-splitter", count = math.random(2,4)}, weight = 3, evolution_min = 0.5, evolution_max = 1}, - {{name = "fast-transport-belt", count = math.random(25,75)}, weight = 3, evolution_min = 0.2, evolution_max = 0.7}, - {{name = "fast-underground-belt", count = math.random(4,8)}, weight = 3, evolution_min = 0.2, evolution_max = 0.7}, - {{name = "fast-splitter", count = math.random(2,4)}, weight = 3, evolution_min = 0.2, evolution_max = 0.3}, - {{name = "transport-belt", count = math.random(25,75)}, weight = 3, evolution_min = 0, evolution_max = 0.3}, - {{name = "underground-belt", count = math.random(4,8)}, weight = 3, evolution_min = 0, evolution_max = 0.3}, - {{name = "splitter", count = math.random(2,4)}, weight = 3, evolution_min = 0, evolution_max = 0.3}, - --{{name = "oil-refinery", count = math.random(2,4)}, weight = 2, evolution_min = 0.3, evolution_max = 1}, - {{name = "pipe", count = math.random(30,50)}, weight = 3, evolution_min = 0.0, evolution_max = 0.3}, - {{name = "pipe-to-ground", count = math.random(4,8)}, weight = 1, evolution_min = 0.2, evolution_max = 0.5}, - {{name = "pumpjack", count = math.random(1,3)}, weight = 1, evolution_min = 0.3, evolution_max = 0.8}, - {{name = "pump", count = math.random(1,2)}, weight = 1, evolution_min = 0.3, evolution_max = 0.8}, - --{{name = "solar-panel", count = math.random(8,16)}, weight = 3, evolution_min = 0.4, evolution_max = 0.9}, - {{name = "electric-furnace", count = math.random(2,4)}, weight = 3, evolution_min = 0.5, evolution_max = 1}, - {{name = "steel-furnace", count = math.random(4,8)}, weight = 3, evolution_min = 0.2, evolution_max = 0.7}, - {{name = "stone-furnace", count = math.random(8,16)}, weight = 3, evolution_min = 0.0, evolution_max = 0.1}, - {{name = "radar", count = math.random(1,2)}, weight = 1, evolution_min = 0.1, evolution_max = 0.3}, - {{name = "rail-signal", count = math.random(8,16)}, weight = 2, evolution_min = 0.2, evolution_max = 0.8}, - {{name = "rail-chain-signal", count = math.random(8,16)}, weight = 2, evolution_min = 0.2, evolution_max = 0.8}, - {{name = "stone-wall", count = math.random(25,75)}, weight = 1, evolution_min = 0.1, evolution_max = 0.5}, - {{name = "gate", count = math.random(4,8)}, weight = 1, evolution_min = 0.1, evolution_max = 0.5}, - {{name = "storage-tank", count = math.random(1,4)}, weight = 3, evolution_min = 0.3, evolution_max = 0.6}, - {{name = "train-stop", count = math.random(1,2)}, weight = 1, evolution_min = 0.2, evolution_max = 0.7}, - --{{name = "express-loader", count = math.random(1,3)}, weight = 1, evolution_min = 0.5, evolution_max = 1}, - --{{name = "fast-loader", count = math.random(1,3)}, weight = 1, evolution_min = 0.2, evolution_max = 0.7}, - --{{name = "loader", count = math.random(1,3)}, weight = 1, evolution_min = 0.0, evolution_max = 0.5}, - {{name = "lab", count = math.random(1,2)}, weight = 2, evolution_min = 0.0, evolution_max = 0.1}, - --{{name = "roboport", count = math.random(2,4)}, weight = 2, evolution_min = 0.6, evolution_max = 1}, - --{{name = "flamethrower-turret", count = math.random(1,3)}, weight = 3, evolution_min = 0.5, evolution_max = 1}, - --{{name = "laser-turret", count = math.random(4,8)}, weight = 3, evolution_min = 0.5, evolution_max = 1}, - {{name = "gun-turret", count = math.random(2,6)}, weight = 3, evolution_min = 0.2, evolution_max = 0.9} - } - - distance_to_center = distance_to_center - spawn_dome_size - if distance_to_center < 1 then - distance_to_center = 0.1 - else - distance_to_center = math.sqrt(distance_to_center) / 1250 - end - if distance_to_center > 1 then distance_to_center = 1 end - for _, t in pairs (chest_loot) do - for x = 1, t.weight, 1 do - if t.evolution_min <= distance_to_center and t.evolution_max >= distance_to_center then - table.insert(chest_raffle, t[1]) - end - end - end - --game.print(distance_to_center) - local n = "wooden-chest" - if distance_to_center > 750 then n = "iron-chest" end - if distance_to_center > 1250 then n = "steel-chest" end - local e = game.surfaces["cave_miner"].create_entity({name=n, position=position, force="player"}) - e.minable = false - local i = e.get_inventory(defines.inventory.chest) - for x = 1, math.random(3,5), 1 do - local loot = chest_raffle[math.random(1,#chest_raffle)] - i.insert(loot) - end +local function treasure_chest(position, distance_to_center) + local chest_raffle = {} + local chest_loot = { + --{{name = "steel-axe", count = math.random(1,3)}, weight = 2, evolution_min = 0.0, evolution_max = 0.5}, + {{name = 'submachine-gun', count = math.random(1, 3)}, weight = 3, evolution_min = 0.0, evolution_max = 0.1}, + {{name = 'slowdown-capsule', count = math.random(16, 32)}, weight = 1, evolution_min = 0.3, evolution_max = 0.7}, + {{name = 'poison-capsule', count = math.random(16, 32)}, weight = 3, evolution_min = 0.3, evolution_max = 1}, + { + {name = 'uranium-cannon-shell', count = math.random(16, 32)}, + weight = 5, + evolution_min = 0.6, + evolution_max = 1 + }, + {{name = 'cannon-shell', count = math.random(16, 32)}, weight = 5, evolution_min = 0.4, evolution_max = 0.7}, + { + {name = 'explosive-uranium-cannon-shell', count = math.random(16, 32)}, + weight = 5, + evolution_min = 0.6, + evolution_max = 1 + }, + { + {name = 'explosive-cannon-shell', count = math.random(16, 32)}, + weight = 5, + evolution_min = 0.4, + evolution_max = 0.8 + }, + {{name = 'shotgun', count = 1}, weight = 2, evolution_min = 0.0, evolution_max = 0.2}, + {{name = 'shotgun-shell', count = math.random(16, 32)}, weight = 5, evolution_min = 0.0, evolution_max = 0.2}, + {{name = 'combat-shotgun', count = 1}, weight = 3, evolution_min = 0.3, evolution_max = 0.8}, + { + {name = 'piercing-shotgun-shell', count = math.random(16, 32)}, + weight = 10, + evolution_min = 0.2, + evolution_max = 1 + }, + {{name = 'flamethrower', count = 1}, weight = 3, evolution_min = 0.3, evolution_max = 0.6}, + {{name = 'flamethrower-ammo', count = math.random(16, 32)}, weight = 5, evolution_min = 0.3, evolution_max = 1}, + {{name = 'rocket-launcher', count = 1}, weight = 3, evolution_min = 0.2, evolution_max = 0.6}, + {{name = 'rocket', count = math.random(16, 32)}, weight = 5, evolution_min = 0.2, evolution_max = 0.7}, + {{name = 'explosive-rocket', count = math.random(16, 32)}, weight = 5, evolution_min = 0.3, evolution_max = 1}, + {{name = 'land-mine', count = math.random(16, 32)}, weight = 5, evolution_min = 0.2, evolution_max = 0.7}, + {{name = 'grenade', count = math.random(16, 32)}, weight = 5, evolution_min = 0.0, evolution_max = 0.5}, + {{name = 'cluster-grenade', count = math.random(16, 32)}, weight = 5, evolution_min = 0.4, evolution_max = 1}, + {{name = 'firearm-magazine', count = math.random(32, 128)}, weight = 5, evolution_min = 0, evolution_max = 0.3}, + { + {name = 'piercing-rounds-magazine', count = math.random(32, 128)}, + weight = 5, + evolution_min = 0.1, + evolution_max = 0.8 + }, + { + {name = 'uranium-rounds-magazine', count = math.random(32, 128)}, + weight = 5, + evolution_min = 0.5, + evolution_max = 1 + }, + {{name = 'railgun', count = 1}, weight = 1, evolution_min = 0.2, evolution_max = 1}, + {{name = 'railgun-dart', count = math.random(16, 32)}, weight = 3, evolution_min = 0.2, evolution_max = 0.7}, + {{name = 'defender-capsule', count = math.random(8, 16)}, weight = 2, evolution_min = 0.0, evolution_max = 0.7}, + {{name = 'distractor-capsule', count = math.random(8, 16)}, weight = 2, evolution_min = 0.2, evolution_max = 1}, + {{name = 'destroyer-capsule', count = math.random(8, 16)}, weight = 2, evolution_min = 0.3, evolution_max = 1}, + --{{name = "atomic-bomb", count = math.random(8,16)}, weight = 1, evolution_min = 0.3, evolution_max = 1}, + {{name = 'light-armor', count = 1}, weight = 3, evolution_min = 0, evolution_max = 0.1}, + {{name = 'heavy-armor', count = 1}, weight = 3, evolution_min = 0.1, evolution_max = 0.3}, + {{name = 'modular-armor', count = 1}, weight = 2, evolution_min = 0.2, evolution_max = 0.6}, + {{name = 'power-armor', count = 1}, weight = 2, evolution_min = 0.4, evolution_max = 1}, + --{{name = "power-armor-mk2", count = 1}, weight = 1, evolution_min = 0.9, evolution_max = 1}, + {{name = 'battery-equipment', count = 1}, weight = 2, evolution_min = 0.3, evolution_max = 0.7}, + {{name = 'battery-mk2-equipment', count = 1}, weight = 2, evolution_min = 0.6, evolution_max = 1}, + {{name = 'belt-immunity-equipment', count = 1}, weight = 1, evolution_min = 0.3, evolution_max = 1}, + --{{name = "solar-panel-equipment", count = math.random(1,4)}, weight = 5, evolution_min = 0.3, evolution_max = 0.8}, + {{name = 'discharge-defense-equipment', count = 1}, weight = 1, evolution_min = 0.5, evolution_max = 0.8}, + { + {name = 'energy-shield-equipment', count = math.random(1, 2)}, + weight = 2, + evolution_min = 0.3, + evolution_max = 0.8 + }, + {{name = 'energy-shield-mk2-equipment', count = 1}, weight = 2, evolution_min = 0.7, evolution_max = 1}, + {{name = 'exoskeleton-equipment', count = 1}, weight = 1, evolution_min = 0.3, evolution_max = 1}, + {{name = 'fusion-reactor-equipment', count = 1}, weight = 1, evolution_min = 0.5, evolution_max = 1}, + --{{name = "night-vision-equipment", count = 1}, weight = 1, evolution_min = 0.3, evolution_max = 0.8}, + {{name = 'personal-laser-defense-equipment', count = 1}, weight = 2, evolution_min = 0.5, evolution_max = 1}, + {{name = 'exoskeleton-equipment', count = 1}, weight = 1, evolution_min = 0.3, evolution_max = 1}, + {{name = 'iron-gear-wheel', count = math.random(80, 100)}, weight = 3, evolution_min = 0.0, evolution_max = 0.3}, + {{name = 'copper-cable', count = math.random(100, 200)}, weight = 3, evolution_min = 0.0, evolution_max = 0.3}, + {{name = 'engine-unit', count = math.random(16, 32)}, weight = 2, evolution_min = 0.1, evolution_max = 0.5}, + { + {name = 'electric-engine-unit', count = math.random(16, 32)}, + weight = 2, + evolution_min = 0.4, + evolution_max = 0.8 + }, + {{name = 'battery', count = math.random(50, 150)}, weight = 2, evolution_min = 0.3, evolution_max = 0.8}, + {{name = 'advanced-circuit', count = math.random(50, 150)}, weight = 3, evolution_min = 0.4, evolution_max = 1}, + { + {name = 'electronic-circuit', count = math.random(50, 150)}, + weight = 3, + evolution_min = 0.0, + evolution_max = 0.4 + }, + {{name = 'processing-unit', count = math.random(50, 150)}, weight = 3, evolution_min = 0.7, evolution_max = 1}, + {{name = 'explosives', count = math.random(40, 50)}, weight = 10, evolution_min = 0.0, evolution_max = 1}, + {{name = 'lubricant-barrel', count = math.random(4, 10)}, weight = 1, evolution_min = 0.3, evolution_max = 0.5}, + {{name = 'rocket-fuel', count = math.random(4, 10)}, weight = 2, evolution_min = 0.3, evolution_max = 0.7}, + --{{name = "computer", count = 1}, weight = 2, evolution_min = 0, evolution_max = 1}, + {{name = 'steel-plate', count = math.random(25, 75)}, weight = 2, evolution_min = 0.1, evolution_max = 0.3}, + {{name = 'nuclear-fuel', count = 1}, weight = 2, evolution_min = 0.7, evolution_max = 1}, + {{name = 'burner-inserter', count = math.random(8, 16)}, weight = 3, evolution_min = 0.0, evolution_max = 0.1}, + {{name = 'inserter', count = math.random(8, 16)}, weight = 3, evolution_min = 0.0, evolution_max = 0.4}, + { + {name = 'long-handed-inserter', count = math.random(8, 16)}, + weight = 3, + evolution_min = 0.0, + evolution_max = 0.4 + }, + {{name = 'fast-inserter', count = math.random(8, 16)}, weight = 3, evolution_min = 0.1, evolution_max = 1}, + {{name = 'filter-inserter', count = math.random(8, 16)}, weight = 1, evolution_min = 0.2, evolution_max = 1}, + { + {name = 'stack-filter-inserter', count = math.random(4, 8)}, + weight = 1, + evolution_min = 0.4, + evolution_max = 1 + }, + {{name = 'stack-inserter', count = math.random(4, 8)}, weight = 3, evolution_min = 0.3, evolution_max = 1}, + { + {name = 'small-electric-pole', count = math.random(16, 24)}, + weight = 3, + evolution_min = 0.0, + evolution_max = 0.3 + }, + { + {name = 'medium-electric-pole', count = math.random(8, 16)}, + weight = 3, + evolution_min = 0.2, + evolution_max = 1 + }, + {{name = 'big-electric-pole', count = math.random(4, 8)}, weight = 3, evolution_min = 0.3, evolution_max = 1}, + {{name = 'substation', count = math.random(2, 4)}, weight = 3, evolution_min = 0.5, evolution_max = 1}, + {{name = 'wooden-chest', count = math.random(16, 24)}, weight = 3, evolution_min = 0.0, evolution_max = 0.2}, + {{name = 'iron-chest', count = math.random(4, 8)}, weight = 3, evolution_min = 0.1, evolution_max = 0.4}, + {{name = 'steel-chest', count = math.random(4, 8)}, weight = 3, evolution_min = 0.3, evolution_max = 1}, + {{name = 'small-lamp', count = math.random(16, 32)}, weight = 3, evolution_min = 0.1, evolution_max = 0.3}, + {{name = 'rail', count = math.random(25, 75)}, weight = 3, evolution_min = 0.1, evolution_max = 0.6}, + { + {name = 'assembling-machine-1', count = math.random(2, 4)}, + weight = 3, + evolution_min = 0.0, + evolution_max = 0.3 + }, + { + {name = 'assembling-machine-2', count = math.random(2, 4)}, + weight = 3, + evolution_min = 0.2, + evolution_max = 0.8 + }, + {{name = 'assembling-machine-3', count = math.random(1, 2)}, weight = 3, evolution_min = 0.5, evolution_max = 1}, + {{name = 'accumulator', count = math.random(4, 8)}, weight = 3, evolution_min = 0.4, evolution_max = 1}, + {{name = 'offshore-pump', count = math.random(1, 3)}, weight = 2, evolution_min = 0.0, evolution_max = 0.1}, + {{name = 'beacon', count = math.random(1, 2)}, weight = 3, evolution_min = 0.7, evolution_max = 1}, + {{name = 'boiler', count = math.random(4, 8)}, weight = 3, evolution_min = 0.0, evolution_max = 0.3}, + {{name = 'steam-engine', count = math.random(2, 4)}, weight = 3, evolution_min = 0.0, evolution_max = 0.5}, + {{name = 'steam-turbine', count = math.random(1, 2)}, weight = 2, evolution_min = 0.6, evolution_max = 1}, + --{{name = "nuclear-reactor", count = 1}, weight = 1, evolution_min = 0.6, evolution_max = 1}, + {{name = 'centrifuge', count = math.random(1, 2)}, weight = 1, evolution_min = 0.6, evolution_max = 1}, + {{name = 'heat-pipe', count = math.random(4, 8)}, weight = 2, evolution_min = 0.5, evolution_max = 1}, + {{name = 'heat-exchanger', count = math.random(2, 4)}, weight = 2, evolution_min = 0.5, evolution_max = 1}, + { + {name = 'arithmetic-combinator', count = math.random(8, 16)}, + weight = 1, + evolution_min = 0.1, + evolution_max = 1 + }, + {{name = 'constant-combinator', count = math.random(8, 16)}, weight = 1, evolution_min = 0.1, evolution_max = 1}, + {{name = 'decider-combinator', count = math.random(8, 16)}, weight = 1, evolution_min = 0.1, evolution_max = 1}, + {{name = 'power-switch', count = math.random(1, 2)}, weight = 1, evolution_min = 0.1, evolution_max = 1}, + {{name = 'programmable-speaker', count = math.random(4, 8)}, weight = 1, evolution_min = 0.1, evolution_max = 1}, + {{name = 'green-wire', count = math.random(50, 99)}, weight = 1, evolution_min = 0.1, evolution_max = 1}, + {{name = 'red-wire', count = math.random(50, 99)}, weight = 1, evolution_min = 0.1, evolution_max = 1}, + {{name = 'chemical-plant', count = math.random(1, 3)}, weight = 3, evolution_min = 0.3, evolution_max = 1}, + { + {name = 'burner-mining-drill', count = math.random(2, 4)}, + weight = 3, + evolution_min = 0.0, + evolution_max = 0.2 + }, + { + {name = 'electric-mining-drill', count = math.random(2, 4)}, + weight = 3, + evolution_min = 0.2, + evolution_max = 0.6 + }, + { + {name = 'express-transport-belt', count = math.random(25, 75)}, + weight = 3, + evolution_min = 0.5, + evolution_max = 1 + }, + { + {name = 'express-underground-belt', count = math.random(4, 8)}, + weight = 3, + evolution_min = 0.5, + evolution_max = 1 + }, + {{name = 'express-splitter', count = math.random(2, 4)}, weight = 3, evolution_min = 0.5, evolution_max = 1}, + { + {name = 'fast-transport-belt', count = math.random(25, 75)}, + weight = 3, + evolution_min = 0.2, + evolution_max = 0.7 + }, + { + {name = 'fast-underground-belt', count = math.random(4, 8)}, + weight = 3, + evolution_min = 0.2, + evolution_max = 0.7 + }, + {{name = 'fast-splitter', count = math.random(2, 4)}, weight = 3, evolution_min = 0.2, evolution_max = 0.3}, + {{name = 'transport-belt', count = math.random(25, 75)}, weight = 3, evolution_min = 0, evolution_max = 0.3}, + {{name = 'underground-belt', count = math.random(4, 8)}, weight = 3, evolution_min = 0, evolution_max = 0.3}, + {{name = 'splitter', count = math.random(2, 4)}, weight = 3, evolution_min = 0, evolution_max = 0.3}, + --{{name = "oil-refinery", count = math.random(2,4)}, weight = 2, evolution_min = 0.3, evolution_max = 1}, + {{name = 'pipe', count = math.random(30, 50)}, weight = 3, evolution_min = 0.0, evolution_max = 0.3}, + {{name = 'pipe-to-ground', count = math.random(4, 8)}, weight = 1, evolution_min = 0.2, evolution_max = 0.5}, + {{name = 'pumpjack', count = math.random(1, 3)}, weight = 1, evolution_min = 0.3, evolution_max = 0.8}, + {{name = 'pump', count = math.random(1, 2)}, weight = 1, evolution_min = 0.3, evolution_max = 0.8}, + --{{name = "solar-panel", count = math.random(8,16)}, weight = 3, evolution_min = 0.4, evolution_max = 0.9}, + {{name = 'electric-furnace', count = math.random(2, 4)}, weight = 3, evolution_min = 0.5, evolution_max = 1}, + {{name = 'steel-furnace', count = math.random(4, 8)}, weight = 3, evolution_min = 0.2, evolution_max = 0.7}, + {{name = 'stone-furnace', count = math.random(8, 16)}, weight = 3, evolution_min = 0.0, evolution_max = 0.1}, + {{name = 'radar', count = math.random(1, 2)}, weight = 1, evolution_min = 0.1, evolution_max = 0.3}, + {{name = 'rail-signal', count = math.random(8, 16)}, weight = 2, evolution_min = 0.2, evolution_max = 0.8}, + {{name = 'rail-chain-signal', count = math.random(8, 16)}, weight = 2, evolution_min = 0.2, evolution_max = 0.8}, + {{name = 'stone-wall', count = math.random(25, 75)}, weight = 1, evolution_min = 0.1, evolution_max = 0.5}, + {{name = 'gate', count = math.random(4, 8)}, weight = 1, evolution_min = 0.1, evolution_max = 0.5}, + {{name = 'storage-tank', count = math.random(1, 4)}, weight = 3, evolution_min = 0.3, evolution_max = 0.6}, + {{name = 'train-stop', count = math.random(1, 2)}, weight = 1, evolution_min = 0.2, evolution_max = 0.7}, + --{{name = "express-loader", count = math.random(1,3)}, weight = 1, evolution_min = 0.5, evolution_max = 1}, + --{{name = "fast-loader", count = math.random(1,3)}, weight = 1, evolution_min = 0.2, evolution_max = 0.7}, + --{{name = "loader", count = math.random(1,3)}, weight = 1, evolution_min = 0.0, evolution_max = 0.5}, + {{name = 'lab', count = math.random(1, 2)}, weight = 2, evolution_min = 0.0, evolution_max = 0.1}, + --{{name = "roboport", count = math.random(2,4)}, weight = 2, evolution_min = 0.6, evolution_max = 1}, + --{{name = "flamethrower-turret", count = math.random(1,3)}, weight = 3, evolution_min = 0.5, evolution_max = 1}, + --{{name = "laser-turret", count = math.random(4,8)}, weight = 3, evolution_min = 0.5, evolution_max = 1}, + {{name = 'gun-turret', count = math.random(2, 6)}, weight = 3, evolution_min = 0.2, evolution_max = 0.9} + } + + distance_to_center = distance_to_center - spawn_dome_size + if distance_to_center < 1 then + distance_to_center = 0.1 + else + distance_to_center = math.sqrt(distance_to_center) / 1250 + end + if distance_to_center > 1 then + distance_to_center = 1 + end + for _, t in pairs(chest_loot) do + for x = 1, t.weight, 1 do + if t.evolution_min <= distance_to_center and t.evolution_max >= distance_to_center then + table.insert(chest_raffle, t[1]) + end + end + end + --game.print(distance_to_center) + local n = 'wooden-chest' + if distance_to_center > 750 then + n = 'iron-chest' + end + if distance_to_center > 1250 then + n = 'steel-chest' + end + local e = game.surfaces['cave_miner'].create_entity({name = n, position = position, force = 'player'}) + e.minable = false + local i = e.get_inventory(defines.inventory.chest) + for x = 1, math.random(3, 5), 1 do + local loot = chest_raffle[math.random(1, #chest_raffle)] + i.insert(loot) + end end -function rare_treasure_chest(position) - local p = game.surfaces[1].find_non_colliding_position("steel-chest",position, 2,0.5) - if not p then return end - - local rare_treasure_chest_raffle_table = {} - local rare_treasure_chest_loot_weights = {} - table.insert(rare_treasure_chest_loot_weights, {{name = 'combat-shotgun', count = 1},5}) - table.insert(rare_treasure_chest_loot_weights, {{name = 'piercing-shotgun-shell', count = math.random(16,48)},5}) - table.insert(rare_treasure_chest_loot_weights, {{name = 'flamethrower', count = 1},5}) - table.insert(rare_treasure_chest_loot_weights, {{name = 'rocket-launcher', count = 1},5}) - table.insert(rare_treasure_chest_loot_weights, {{name = 'flamethrower-ammo', count = math.random(16,48)},5}) - table.insert(rare_treasure_chest_loot_weights, {{name = 'rocket', count = math.random(16,48)},5}) - table.insert(rare_treasure_chest_loot_weights, {{name = 'explosive-rocket', count = math.random(16,48)},5}) - table.insert(rare_treasure_chest_loot_weights, {{name = 'modular-armor', count = 1},3}) - table.insert(rare_treasure_chest_loot_weights, {{name = 'power-armor', count = 1},1}) - table.insert(rare_treasure_chest_loot_weights, {{name = 'uranium-rounds-magazine', count = math.random(16,48)},3}) - table.insert(rare_treasure_chest_loot_weights, {{name = 'piercing-rounds-magazine', count = math.random(64,128)},3}) - table.insert(rare_treasure_chest_loot_weights, {{name = 'railgun', count = 1},4}) - table.insert(rare_treasure_chest_loot_weights, {{name = 'railgun-dart', count = math.random(16,48)},4}) - table.insert(rare_treasure_chest_loot_weights, {{name = 'exoskeleton-equipment', count = 1},2}) - table.insert(rare_treasure_chest_loot_weights, {{name = 'defender-capsule', count = math.random(8,16)},5}) - table.insert(rare_treasure_chest_loot_weights, {{name = 'distractor-capsule', count = math.random(4,8)},4}) - table.insert(rare_treasure_chest_loot_weights, {{name = 'destroyer-capsule', count = math.random(4,8)},3}) - table.insert(rare_treasure_chest_loot_weights, {{name = 'atomic-bomb', count = 1},1}) - for _, t in pairs (rare_treasure_chest_loot_weights) do - for x = 1, t[2], 1 do - table.insert(rare_treasure_chest_raffle_table, t[1]) - end - end - - local e = game.surfaces[1].create_entity {name="steel-chest",position=p, force="player"} - e.minable = false - local i = e.get_inventory(defines.inventory.chest) - for x = 1, math.random(2,3), 1 do - local loot = rare_treasure_chest_raffle_table[math.random(1,#rare_treasure_chest_raffle_table)] - i.insert(loot) - end +local function rare_treasure_chest(position) + local p = game.surfaces[1].find_non_colliding_position('steel-chest', position, 2, 0.5) + if not p then + return + end + + local rare_treasure_chest_raffle_table = {} + local rare_treasure_chest_loot_weights = {} + table.insert(rare_treasure_chest_loot_weights, {{name = 'combat-shotgun', count = 1}, 5}) + table.insert(rare_treasure_chest_loot_weights, {{name = 'piercing-shotgun-shell', count = math.random(16, 48)}, 5}) + table.insert(rare_treasure_chest_loot_weights, {{name = 'flamethrower', count = 1}, 5}) + table.insert(rare_treasure_chest_loot_weights, {{name = 'rocket-launcher', count = 1}, 5}) + table.insert(rare_treasure_chest_loot_weights, {{name = 'flamethrower-ammo', count = math.random(16, 48)}, 5}) + table.insert(rare_treasure_chest_loot_weights, {{name = 'rocket', count = math.random(16, 48)}, 5}) + table.insert(rare_treasure_chest_loot_weights, {{name = 'explosive-rocket', count = math.random(16, 48)}, 5}) + table.insert(rare_treasure_chest_loot_weights, {{name = 'modular-armor', count = 1}, 3}) + table.insert(rare_treasure_chest_loot_weights, {{name = 'power-armor', count = 1}, 1}) + table.insert(rare_treasure_chest_loot_weights, {{name = 'uranium-rounds-magazine', count = math.random(16, 48)}, 3}) + table.insert( + rare_treasure_chest_loot_weights, + {{name = 'piercing-rounds-magazine', count = math.random(64, 128)}, 3} + ) + table.insert(rare_treasure_chest_loot_weights, {{name = 'railgun', count = 1}, 4}) + table.insert(rare_treasure_chest_loot_weights, {{name = 'railgun-dart', count = math.random(16, 48)}, 4}) + table.insert(rare_treasure_chest_loot_weights, {{name = 'exoskeleton-equipment', count = 1}, 2}) + table.insert(rare_treasure_chest_loot_weights, {{name = 'defender-capsule', count = math.random(8, 16)}, 5}) + table.insert(rare_treasure_chest_loot_weights, {{name = 'distractor-capsule', count = math.random(4, 8)}, 4}) + table.insert(rare_treasure_chest_loot_weights, {{name = 'destroyer-capsule', count = math.random(4, 8)}, 3}) + table.insert(rare_treasure_chest_loot_weights, {{name = 'atomic-bomb', count = 1}, 1}) + for _, t in pairs(rare_treasure_chest_loot_weights) do + for x = 1, t[2], 1 do + table.insert(rare_treasure_chest_raffle_table, t[1]) + end + end + + local e = game.surfaces[1].create_entity {name = 'steel-chest', position = p, force = 'player'} + e.minable = false + local i = e.get_inventory(defines.inventory.chest) + for x = 1, math.random(2, 3), 1 do + local loot = rare_treasure_chest_raffle_table[math.random(1, #rare_treasure_chest_raffle_table)] + i.insert(loot) + end end local function secret_shop(pos) - local secret_market_items = { - {price = {{"raw-fish", math.random(250,450)}}, offer = {type = 'give-item', item = 'combat-shotgun'}}, - {price = {{"raw-fish", math.random(250,450)}}, offer = {type = 'give-item', item = 'flamethrower'}}, - {price = {{"raw-fish", math.random(75,125)}}, offer = {type = 'give-item', item = 'rocket-launcher'}}, - {price = {{"raw-fish", math.random(2,4)}}, offer = {type = 'give-item', item = 'piercing-rounds-magazine'}}, - {price = {{"raw-fish", math.random(8,16)}}, offer = {type = 'give-item', item = 'uranium-rounds-magazine'}}, - {price = {{"raw-fish", math.random(8,16)}}, offer = {type = 'give-item', item = 'piercing-shotgun-shell'}}, - {price = {{"raw-fish", math.random(6,12)}}, offer = {type = 'give-item', item = 'flamethrower-ammo'}}, - {price = {{"raw-fish", math.random(8,16)}}, offer = {type = 'give-item', item = 'rocket'}}, - {price = {{"raw-fish", math.random(10,20)}}, offer = {type = 'give-item', item = 'explosive-rocket'}}, - {price = {{"raw-fish", math.random(15,30)}}, offer = {type = 'give-item', item = 'explosive-cannon-shell'}}, - {price = {{"raw-fish", math.random(25,35)}}, offer = {type = 'give-item', item = 'explosive-uranium-cannon-shell'}}, - {price = {{"raw-fish", math.random(20,40)}}, offer = {type = 'give-item', item = 'cluster-grenade'}}, - {price = {{"raw-fish", math.random(1,3)}}, offer = {type = 'give-item', item = 'land-mine'}}, - {price = {{"raw-fish", math.random(250,500)}}, offer = {type = 'give-item', item = 'modular-armor'}}, - {price = {{"raw-fish", math.random(1500,3000)}}, offer = {type = 'give-item', item = 'power-armor'}}, - {price = {{"raw-fish", math.random(15000,20000)}}, offer = {type = 'give-item', item = 'power-armor-mk2'}}, - {price = {{"raw-fish", math.random(4000,7000)}}, offer = {type = 'give-item', item = 'fusion-reactor-equipment'}}, - {price = {{"raw-fish", math.random(50,100)}}, offer = {type = 'give-item', item = 'battery-equipment'}}, - {price = {{"raw-fish", math.random(700,1100)}}, offer = {type = 'give-item', item = 'battery-mk2-equipment'}}, - {price = {{"raw-fish", math.random(400,700)}}, offer = {type = 'give-item', item = 'belt-immunity-equipment'}}, - {price = {{"raw-fish", math.random(12000,16000)}}, offer = {type = 'give-item', item = 'night-vision-equipment'}}, - {price = {{"raw-fish", math.random(300,500)}}, offer = {type = 'give-item', item = 'exoskeleton-equipment'}}, - {price = {{"raw-fish", math.random(350,500)}}, offer = {type = 'give-item', item = 'personal-roboport-equipment'}}, - {price = {{"raw-fish", math.random(25,50)}}, offer = {type = 'give-item', item = 'construction-robot'}}, - {price = {{"raw-fish", math.random(250,450)}}, offer = {type = 'give-item', item = 'energy-shield-equipment'}}, - {price = {{"raw-fish", math.random(350,550)}}, offer = {type = 'give-item', item = 'personal-laser-defense-equipment'}}, - {price = {{"raw-fish", math.random(125,250)}}, offer = {type = 'give-item', item = 'railgun'}}, - {price = {{"raw-fish", math.random(2,4)}}, offer = {type = 'give-item', item = 'railgun-dart'}}, - {price = {{"raw-fish", math.random(100,175)}}, offer = {type = 'give-item', item = 'loader'}}, - {price = {{"raw-fish", math.random(200,350)}}, offer = {type = 'give-item', item = 'fast-loader'}}, - {price = {{"raw-fish", math.random(400,600)}}, offer = {type = 'give-item', item = 'express-loader'}} - } - secret_market_items = shuffle(secret_market_items) - - local surface = game.surfaces["cave_miner"] - local market = surface.create_entity {name = "market", position = pos} - market.destructible = false - - if enable_fishbank_terminal then - market.add_market_item({price = {}, offer = {type = 'nothing', effect_description = 'Deposit Fish'}}) - market.add_market_item({price = {}, offer = {type = 'nothing', effect_description = 'Withdraw Fish - 1% Bank Fee'}}) - market.add_market_item({price = {}, offer = {type = 'nothing', effect_description = 'Show Account Balance'}}) - end - - for i = 1, math.random(8,12), 1 do - market.add_market_item(secret_market_items[i]) - end + local secret_market_items = { + {price = {{'raw-fish', math.random(250, 450)}}, offer = {type = 'give-item', item = 'combat-shotgun'}}, + {price = {{'raw-fish', math.random(250, 450)}}, offer = {type = 'give-item', item = 'flamethrower'}}, + {price = {{'raw-fish', math.random(75, 125)}}, offer = {type = 'give-item', item = 'rocket-launcher'}}, + {price = {{'raw-fish', math.random(2, 4)}}, offer = {type = 'give-item', item = 'piercing-rounds-magazine'}}, + {price = {{'raw-fish', math.random(8, 16)}}, offer = {type = 'give-item', item = 'uranium-rounds-magazine'}}, + {price = {{'raw-fish', math.random(8, 16)}}, offer = {type = 'give-item', item = 'piercing-shotgun-shell'}}, + {price = {{'raw-fish', math.random(6, 12)}}, offer = {type = 'give-item', item = 'flamethrower-ammo'}}, + {price = {{'raw-fish', math.random(8, 16)}}, offer = {type = 'give-item', item = 'rocket'}}, + {price = {{'raw-fish', math.random(10, 20)}}, offer = {type = 'give-item', item = 'explosive-rocket'}}, + {price = {{'raw-fish', math.random(15, 30)}}, offer = {type = 'give-item', item = 'explosive-cannon-shell'}}, + { + price = {{'raw-fish', math.random(25, 35)}}, + offer = {type = 'give-item', item = 'explosive-uranium-cannon-shell'} + }, + {price = {{'raw-fish', math.random(20, 40)}}, offer = {type = 'give-item', item = 'cluster-grenade'}}, + {price = {{'raw-fish', math.random(1, 3)}}, offer = {type = 'give-item', item = 'land-mine'}}, + {price = {{'raw-fish', math.random(250, 500)}}, offer = {type = 'give-item', item = 'modular-armor'}}, + {price = {{'raw-fish', math.random(1500, 3000)}}, offer = {type = 'give-item', item = 'power-armor'}}, + {price = {{'raw-fish', math.random(15000, 20000)}}, offer = {type = 'give-item', item = 'power-armor-mk2'}}, + { + price = {{'raw-fish', math.random(4000, 7000)}}, + offer = {type = 'give-item', item = 'fusion-reactor-equipment'} + }, + {price = {{'raw-fish', math.random(50, 100)}}, offer = {type = 'give-item', item = 'battery-equipment'}}, + {price = {{'raw-fish', math.random(700, 1100)}}, offer = {type = 'give-item', item = 'battery-mk2-equipment'}}, + {price = {{'raw-fish', math.random(400, 700)}}, offer = {type = 'give-item', item = 'belt-immunity-equipment'}}, + { + price = {{'raw-fish', math.random(12000, 16000)}}, + offer = {type = 'give-item', item = 'night-vision-equipment'} + }, + {price = {{'raw-fish', math.random(300, 500)}}, offer = {type = 'give-item', item = 'exoskeleton-equipment'}}, + { + price = {{'raw-fish', math.random(350, 500)}}, + offer = {type = 'give-item', item = 'personal-roboport-equipment'} + }, + {price = {{'raw-fish', math.random(25, 50)}}, offer = {type = 'give-item', item = 'construction-robot'}}, + {price = {{'raw-fish', math.random(250, 450)}}, offer = {type = 'give-item', item = 'energy-shield-equipment'}}, + { + price = {{'raw-fish', math.random(350, 550)}}, + offer = {type = 'give-item', item = 'personal-laser-defense-equipment'} + }, + {price = {{'raw-fish', math.random(125, 250)}}, offer = {type = 'give-item', item = 'railgun'}}, + {price = {{'raw-fish', math.random(2, 4)}}, offer = {type = 'give-item', item = 'railgun-dart'}}, + {price = {{'raw-fish', math.random(100, 175)}}, offer = {type = 'give-item', item = 'loader'}}, + {price = {{'raw-fish', math.random(200, 350)}}, offer = {type = 'give-item', item = 'fast-loader'}}, + {price = {{'raw-fish', math.random(400, 600)}}, offer = {type = 'give-item', item = 'express-loader'}} + } + secret_market_items = shuffle(secret_market_items) + + local surface = game.surfaces['cave_miner'] + local market = surface.create_entity {name = 'market', position = pos} + market.destructible = false + + if enable_fishbank_terminal then + market.add_market_item({price = {}, offer = {type = 'nothing', effect_description = 'Deposit Fish'}}) + market.add_market_item( + {price = {}, offer = {type = 'nothing', effect_description = 'Withdraw Fish - 1% Bank Fee'}} + ) + market.add_market_item({price = {}, offer = {type = 'nothing', effect_description = 'Show Account Balance'}}) + end + + for i = 1, math.random(8, 12), 1 do + market.add_market_item(secret_market_items[i]) + end end local function on_chunk_generated(event) - if not global.noise_seed then global.noise_seed = math.random(1,5000000) end - local surface = event.surface - if surface.name ~= "cave_miner" then goto continue end - local noise = {} - local tiles = {} - local enemy_building_positions = {} - local enemy_worm_positions = {} - local enemy_can_place_worm_positions = {} - local rock_positions = {} - local fish_positions = {} - local rare_treasure_chest_positions = {} - local treasure_chest_positions = {} - local secret_shop_locations = {} - local extra_tree_positions = {} - local spawn_tree_positions = {} - local tile_to_insert = false - local entity_has_been_placed = false - local pos_x = 0 - local pos_y = 0 - local tile_distance_to_center = 0 - local entities = surface.find_entities(event.area) - for _, e in pairs(entities) do - if e.type == "resource" or e.type == "tree" or e.force.name == "enemy" then - e.destroy() - end - end - local noise_seed_add = 25000 - local current_noise_seed_add = noise_seed_add - local m1 = 0.13 - local m2 = 0.13 --10 - local m3 = 0.10 --07 - - for x = 0, 31, 1 do - for y = 0, 31, 1 do - pos_x = event.area.left_top.x + x - pos_y = event.area.left_top.y + y - tile_distance_to_center = pos_x^2 + pos_y^2 - - noise[1] = simplex_noise(pos_x/350, pos_y/350,global.noise_seed+current_noise_seed_add) - current_noise_seed_add = current_noise_seed_add + noise_seed_add - noise[2] = simplex_noise(pos_x/200, pos_y/200,global.noise_seed+current_noise_seed_add) - current_noise_seed_add = current_noise_seed_add + noise_seed_add - noise[3] = simplex_noise(pos_x/50, pos_y/50,global.noise_seed+current_noise_seed_add) - current_noise_seed_add = current_noise_seed_add + noise_seed_add - noise[4] = simplex_noise(pos_x/20, pos_y/20,global.noise_seed+current_noise_seed_add) - current_noise_seed_add = current_noise_seed_add + noise_seed_add - local cave_noise = noise[1] + noise[2]*0.35 + noise[3]*0.05 + noise[4]*0.015 - - noise[1] = simplex_noise(pos_x/120, pos_y/120,global.noise_seed+current_noise_seed_add) - current_noise_seed_add = current_noise_seed_add + noise_seed_add - noise[2] = simplex_noise(pos_x/60, pos_y/60,global.noise_seed+current_noise_seed_add) - current_noise_seed_add = current_noise_seed_add + noise_seed_add - noise[3] = simplex_noise(pos_x/40, pos_y/40,global.noise_seed+current_noise_seed_add) - current_noise_seed_add = current_noise_seed_add + noise_seed_add - noise[4] = simplex_noise(pos_x/20, pos_y/20,global.noise_seed+current_noise_seed_add) - current_noise_seed_add = current_noise_seed_add + noise_seed_add - local cave_noise_2 = noise[1] + noise[2]*0.30 + noise[3]*0.20 + noise[4]*0.09 - - noise[1] = simplex_noise(pos_x/50, pos_y/50,global.noise_seed+current_noise_seed_add) - current_noise_seed_add = current_noise_seed_add + noise_seed_add - noise[2] = simplex_noise(pos_x/30, pos_y/30,global.noise_seed+current_noise_seed_add) - current_noise_seed_add = current_noise_seed_add + noise_seed_add - noise[3] = simplex_noise(pos_x/20, pos_y/20,global.noise_seed+current_noise_seed_add) - current_noise_seed_add = current_noise_seed_add + noise_seed_add - noise[4] = simplex_noise(pos_x/10, pos_y/10,global.noise_seed+current_noise_seed_add) - current_noise_seed_add = current_noise_seed_add + noise_seed_add - local cave_noise_3 = noise[1] + noise[2]*0.5 + noise[3]*0.25 + noise[4]*0.1 - - current_noise_seed_add = noise_seed_add - - tile_to_insert = false - if tile_distance_to_center > spawn_dome_size then - - if tile_distance_to_center > (spawn_dome_size + 5000) * (cave_noise_3 * 0.05 + 1.1) then - if cave_noise > 1 then - tile_to_insert = "deepwater" - table.insert(fish_positions, {pos_x,pos_y}) - else - if cave_noise > 0.98 then - tile_to_insert = "water" - else - if cave_noise > 0.82 then - tile_to_insert = "grass-1" - table.insert(enemy_building_positions, {pos_x,pos_y}) - table.insert(enemy_can_place_worm_positions, {pos_x,pos_y}) - --tile_to_insert = "grass-4" - --if cave_noise > 0.88 then tile_to_insert = "grass-2" end - if cave_noise > 0.94 then - table.insert(extra_tree_positions, {pos_x,pos_y}) - table.insert(secret_shop_locations, {pos_x,pos_y}) - end - else - if cave_noise > 0.72 then - tile_to_insert = "dirt-6" - if cave_noise < 0.79 then table.insert(rock_positions, {pos_x,pos_y}) end - end - end - end - if cave_noise < -0.80 then - tile_to_insert = "dirt-6" - if noise[3] > 0.18 or noise[3] < -0.18 then - table.insert(rock_positions, {pos_x,pos_y}) - table.insert(enemy_worm_positions, {pos_x,pos_y}) - table.insert(enemy_worm_positions, {pos_x,pos_y}) - table.insert(enemy_worm_positions, {pos_x,pos_y}) - else - tile_to_insert = "sand-3" - table.insert(treasure_chest_positions, {{pos_x,pos_y}, tile_distance_to_center}) - table.insert(treasure_chest_positions, {{pos_x,pos_y}, tile_distance_to_center}) - table.insert(treasure_chest_positions, {{pos_x,pos_y}, tile_distance_to_center}) - table.insert(treasure_chest_positions, {{pos_x,pos_y}, tile_distance_to_center}) - table.insert(rare_treasure_chest_positions, {pos_x,pos_y}) - end - else - if cave_noise < -0.75 then - tile_to_insert = "dirt-6" - if cave_noise > -0.78 then table.insert(rock_positions, {pos_x,pos_y}) end - end - end - end - end - - if tile_to_insert == false then - if cave_noise < m1 and cave_noise > m1*-1 then - tile_to_insert = "dirt-7" - if cave_noise < 0.06 and cave_noise > -0.06 and noise[1] > 0.4 and tile_distance_to_center > spawn_dome_size + 5000 then - table.insert(enemy_can_place_worm_positions, {pos_x,pos_y}) - table.insert(enemy_can_place_worm_positions, {pos_x,pos_y}) - table.insert(enemy_can_place_worm_positions, {pos_x,pos_y}) - table.insert(enemy_can_place_worm_positions, {pos_x,pos_y}) - table.insert(enemy_building_positions, {pos_x,pos_y}) - table.insert(enemy_building_positions, {pos_x,pos_y}) - table.insert(enemy_building_positions, {pos_x,pos_y}) - table.insert(enemy_building_positions, {pos_x,pos_y}) - table.insert(enemy_building_positions, {pos_x,pos_y}) - else - table.insert(rock_positions, {pos_x,pos_y}) - if math.random(1,3) == 1 then table.insert(enemy_worm_positions, {pos_x,pos_y}) end - end - if cave_noise_2 > 0.85 and tile_distance_to_center > spawn_dome_size + 25000 then - if math.random(1,48) == 1 then - local p = surface.find_non_colliding_position("crude-oil",{pos_x,pos_y}, 5,1) - if p then - surface.create_entity {name="crude-oil", position=p, amount=math.floor(math.random(25000+tile_distance_to_center*0.5,50000+tile_distance_to_center),0)} - end - end - end - else - if cave_noise_2 < m2 and cave_noise_2 > m2*-1 then - tile_to_insert = "dirt-4" - table.insert(rock_positions, {pos_x,pos_y}) - table.insert(treasure_chest_positions, {{pos_x,pos_y}, tile_distance_to_center}) - else - if cave_noise_3 < m3 and cave_noise_3 > m3*-1 and cave_noise_2 < m2+0.3 and cave_noise_2 > (m2*-1)-0.3 then - tile_to_insert = "dirt-2" - table.insert(rock_positions, {pos_x,pos_y}) - table.insert(treasure_chest_positions, {{pos_x,pos_y}, tile_distance_to_center}) - table.insert(treasure_chest_positions, {{pos_x,pos_y}, tile_distance_to_center}) - table.insert(treasure_chest_positions, {{pos_x,pos_y}, tile_distance_to_center}) - end - end - end - end - - if tile_distance_to_center < spawn_dome_size * (cave_noise_3 * 0.05 + 1.1) then - if tile_to_insert == false then table.insert(rock_positions, {pos_x,pos_y}) end - tile_to_insert = "dirt-7" - end - else - if tile_distance_to_center < 550 * (1 + cave_noise_3 * 0.8) then - tile_to_insert = "water" - table.insert(fish_positions, {pos_x,pos_y}) - else - tile_to_insert = "grass-1" - if cave_noise_3 > 0 and tile_distance_to_center + 3000 < spawn_dome_size then - table.insert(spawn_tree_positions, {pos_x,pos_y}) - end - end - end - - if tile_distance_to_center < spawn_dome_size and tile_distance_to_center > spawn_dome_size - 500 and tile_to_insert == "grass-1" then - table.insert(rock_positions, {pos_x,pos_y}) - end - - if tile_to_insert == false then - table.insert(tiles, {name = "out-of-map", position = {pos_x,pos_y}}) - else - table.insert(tiles, {name = tile_to_insert, position = {pos_x,pos_y}}) - end - end - end - surface.set_tiles(tiles,true) - - for _, k in pairs(treasure_chest_positions) do - if math.random(1,800)==1 then - treasure_chest(k[1], k[2]) - end - end - for _, p in pairs(rare_treasure_chest_positions) do - if math.random(1,100)==1 then - rare_treasure_chest(p) - end - end - - for _, p in pairs(rock_positions) do - local x = math.random(1,100) - if x < global.rock_density then - surface.create_entity {name=global.rock_raffle[math.random(1,#global.rock_raffle)], position=p} - end - --[[ + if not global.noise_seed then + global.noise_seed = math.random(1, 5000000) + end + local surface = event.surface + if surface.name ~= 'cave_miner' then + goto continue + end + local noise = {} + local tiles = {} + local enemy_building_positions = {} + local enemy_worm_positions = {} + local enemy_can_place_worm_positions = {} + local rock_positions = {} + local fish_positions = {} + local rare_treasure_chest_positions = {} + local treasure_chest_positions = {} + local secret_shop_locations = {} + local extra_tree_positions = {} + local spawn_tree_positions = {} + local tile_to_insert = false + local entity_has_been_placed = false + local pos_x = 0 + local pos_y = 0 + local tile_distance_to_center = 0 + local entities = surface.find_entities(event.area) + for _, e in pairs(entities) do + if e.type == 'resource' or e.type == 'tree' or e.force.name == 'enemy' then + e.destroy() + end + end + local noise_seed_add = 25000 + local current_noise_seed_add = noise_seed_add + local m1 = 0.13 + local m2 = 0.13 --10 + local m3 = 0.10 --07 + + for x = 0, 31, 1 do + for y = 0, 31, 1 do + pos_x = event.area.left_top.x + x + pos_y = event.area.left_top.y + y + tile_distance_to_center = pos_x ^ 2 + pos_y ^ 2 + + noise[1] = simplex_noise(pos_x / 350, pos_y / 350, global.noise_seed + current_noise_seed_add) + current_noise_seed_add = current_noise_seed_add + noise_seed_add + noise[2] = simplex_noise(pos_x / 200, pos_y / 200, global.noise_seed + current_noise_seed_add) + current_noise_seed_add = current_noise_seed_add + noise_seed_add + noise[3] = simplex_noise(pos_x / 50, pos_y / 50, global.noise_seed + current_noise_seed_add) + current_noise_seed_add = current_noise_seed_add + noise_seed_add + noise[4] = simplex_noise(pos_x / 20, pos_y / 20, global.noise_seed + current_noise_seed_add) + current_noise_seed_add = current_noise_seed_add + noise_seed_add + local cave_noise = noise[1] + noise[2] * 0.35 + noise[3] * 0.05 + noise[4] * 0.015 + + noise[1] = simplex_noise(pos_x / 120, pos_y / 120, global.noise_seed + current_noise_seed_add) + current_noise_seed_add = current_noise_seed_add + noise_seed_add + noise[2] = simplex_noise(pos_x / 60, pos_y / 60, global.noise_seed + current_noise_seed_add) + current_noise_seed_add = current_noise_seed_add + noise_seed_add + noise[3] = simplex_noise(pos_x / 40, pos_y / 40, global.noise_seed + current_noise_seed_add) + current_noise_seed_add = current_noise_seed_add + noise_seed_add + noise[4] = simplex_noise(pos_x / 20, pos_y / 20, global.noise_seed + current_noise_seed_add) + current_noise_seed_add = current_noise_seed_add + noise_seed_add + local cave_noise_2 = noise[1] + noise[2] * 0.30 + noise[3] * 0.20 + noise[4] * 0.09 + + noise[1] = simplex_noise(pos_x / 50, pos_y / 50, global.noise_seed + current_noise_seed_add) + current_noise_seed_add = current_noise_seed_add + noise_seed_add + noise[2] = simplex_noise(pos_x / 30, pos_y / 30, global.noise_seed + current_noise_seed_add) + current_noise_seed_add = current_noise_seed_add + noise_seed_add + noise[3] = simplex_noise(pos_x / 20, pos_y / 20, global.noise_seed + current_noise_seed_add) + current_noise_seed_add = current_noise_seed_add + noise_seed_add + noise[4] = simplex_noise(pos_x / 10, pos_y / 10, global.noise_seed + current_noise_seed_add) + current_noise_seed_add = current_noise_seed_add + noise_seed_add + local cave_noise_3 = noise[1] + noise[2] * 0.5 + noise[3] * 0.25 + noise[4] * 0.1 + + current_noise_seed_add = noise_seed_add + + tile_to_insert = false + if tile_distance_to_center > spawn_dome_size then + if tile_distance_to_center > (spawn_dome_size + 5000) * (cave_noise_3 * 0.05 + 1.1) then + if cave_noise > 1 then + tile_to_insert = 'deepwater' + table.insert(fish_positions, {pos_x, pos_y}) + else + if cave_noise > 0.98 then + tile_to_insert = 'water' + else + if cave_noise > 0.82 then + tile_to_insert = 'grass-1' + table.insert(enemy_building_positions, {pos_x, pos_y}) + table.insert(enemy_can_place_worm_positions, {pos_x, pos_y}) + --tile_to_insert = "grass-4" + --if cave_noise > 0.88 then tile_to_insert = "grass-2" end + if cave_noise > 0.94 then + table.insert(extra_tree_positions, {pos_x, pos_y}) + table.insert(secret_shop_locations, {pos_x, pos_y}) + end + else + if cave_noise > 0.72 then + tile_to_insert = 'dirt-6' + if cave_noise < 0.79 then + table.insert(rock_positions, {pos_x, pos_y}) + end + end + end + end + if cave_noise < -0.80 then + tile_to_insert = 'dirt-6' + if noise[3] > 0.18 or noise[3] < -0.18 then + table.insert(rock_positions, {pos_x, pos_y}) + table.insert(enemy_worm_positions, {pos_x, pos_y}) + table.insert(enemy_worm_positions, {pos_x, pos_y}) + table.insert(enemy_worm_positions, {pos_x, pos_y}) + else + tile_to_insert = 'sand-3' + table.insert(treasure_chest_positions, {{pos_x, pos_y}, tile_distance_to_center}) + table.insert(treasure_chest_positions, {{pos_x, pos_y}, tile_distance_to_center}) + table.insert(treasure_chest_positions, {{pos_x, pos_y}, tile_distance_to_center}) + table.insert(treasure_chest_positions, {{pos_x, pos_y}, tile_distance_to_center}) + table.insert(rare_treasure_chest_positions, {pos_x, pos_y}) + end + else + if cave_noise < -0.75 then + tile_to_insert = 'dirt-6' + if cave_noise > -0.78 then + table.insert(rock_positions, {pos_x, pos_y}) + end + end + end + end + end + + if tile_to_insert == false then + if cave_noise < m1 and cave_noise > m1 * -1 then + tile_to_insert = 'dirt-7' + if + cave_noise < 0.06 and cave_noise > -0.06 and noise[1] > 0.4 and + tile_distance_to_center > spawn_dome_size + 5000 + then + table.insert(enemy_can_place_worm_positions, {pos_x, pos_y}) + table.insert(enemy_can_place_worm_positions, {pos_x, pos_y}) + table.insert(enemy_can_place_worm_positions, {pos_x, pos_y}) + table.insert(enemy_can_place_worm_positions, {pos_x, pos_y}) + table.insert(enemy_building_positions, {pos_x, pos_y}) + table.insert(enemy_building_positions, {pos_x, pos_y}) + table.insert(enemy_building_positions, {pos_x, pos_y}) + table.insert(enemy_building_positions, {pos_x, pos_y}) + table.insert(enemy_building_positions, {pos_x, pos_y}) + else + table.insert(rock_positions, {pos_x, pos_y}) + if math.random(1, 3) == 1 then + table.insert(enemy_worm_positions, {pos_x, pos_y}) + end + end + if cave_noise_2 > 0.85 and tile_distance_to_center > spawn_dome_size + 25000 then + if math.random(1, 48) == 1 then + local p = surface.find_non_colliding_position('crude-oil', {pos_x, pos_y}, 5, 1) + if p then + surface.create_entity { + name = 'crude-oil', + position = p, + amount = math.floor( + math.random( + 25000 + tile_distance_to_center * 0.5, + 50000 + tile_distance_to_center + ), + 0 + ) + } + end + end + end + else + if cave_noise_2 < m2 and cave_noise_2 > m2 * -1 then + tile_to_insert = 'dirt-4' + table.insert(rock_positions, {pos_x, pos_y}) + table.insert(treasure_chest_positions, {{pos_x, pos_y}, tile_distance_to_center}) + else + if + cave_noise_3 < m3 and cave_noise_3 > m3 * -1 and cave_noise_2 < m2 + 0.3 and + cave_noise_2 > (m2 * -1) - 0.3 + then + tile_to_insert = 'dirt-2' + table.insert(rock_positions, {pos_x, pos_y}) + table.insert(treasure_chest_positions, {{pos_x, pos_y}, tile_distance_to_center}) + table.insert(treasure_chest_positions, {{pos_x, pos_y}, tile_distance_to_center}) + table.insert(treasure_chest_positions, {{pos_x, pos_y}, tile_distance_to_center}) + end + end + end + end + + if tile_distance_to_center < spawn_dome_size * (cave_noise_3 * 0.05 + 1.1) then + if tile_to_insert == false then + table.insert(rock_positions, {pos_x, pos_y}) + end + tile_to_insert = 'dirt-7' + end + else + if tile_distance_to_center < 550 * (1 + cave_noise_3 * 0.8) then + tile_to_insert = 'water' + table.insert(fish_positions, {pos_x, pos_y}) + else + tile_to_insert = 'grass-1' + if cave_noise_3 > 0 and tile_distance_to_center + 3000 < spawn_dome_size then + table.insert(spawn_tree_positions, {pos_x, pos_y}) + end + end + end + + if + tile_distance_to_center < spawn_dome_size and tile_distance_to_center > spawn_dome_size - 500 and + tile_to_insert == 'grass-1' + then + table.insert(rock_positions, {pos_x, pos_y}) + end + + if tile_to_insert == false then + table.insert(tiles, {name = 'out-of-map', position = {pos_x, pos_y}}) + else + table.insert(tiles, {name = tile_to_insert, position = {pos_x, pos_y}}) + end + end + end + surface.set_tiles(tiles, true) + + for _, k in pairs(treasure_chest_positions) do + if math.random(1, 800) == 1 then + treasure_chest(k[1], k[2]) + end + end + for _, p in pairs(rare_treasure_chest_positions) do + if math.random(1, 100) == 1 then + rare_treasure_chest(p) + end + end + + for _, p in pairs(rock_positions) do + local x = math.random(1, 100) + if x < global.rock_density then + surface.create_entity {name = global.rock_raffle[math.random(1, #global.rock_raffle)], position = p} + end + --[[ local z = 1 if p[2] % 2 == 1 then z = 0 end if p[1] % 2 == z then - surface.create_entity {name=global.rock_raffle[math.random(1,#global.rock_raffle)], position=p} + surface.create_entity {name=global.rock_raffle[math.random(1,#global.rock_raffle)], position=p} end - ]]-- - end - - for _, p in pairs(enemy_building_positions) do - if math.random(1,50)==1 then - local pos = surface.find_non_colliding_position("biter-spawner", p, 8, 1) - if pos then - if math.random(1,3) == 1 then - surface.create_entity {name="spitter-spawner",position=pos} - else - surface.create_entity {name="biter-spawner",position=pos} - end - end - end - end - - for _, p in pairs(enemy_worm_positions) do - if math.random(1,300)==1 then - local tile_distance_to_center = math.sqrt(p[1]^2 + p[2]^2) - if tile_distance_to_center > global.worm_free_zone_radius then - local raffle_index = math.ceil((tile_distance_to_center-global.worm_free_zone_radius)*0.01, 0) - if raffle_index < 1 then raffle_index = 1 end - if raffle_index > 10 then raffle_index = 10 end - local entity_name = worm_raffle_table[raffle_index][math.random(1,#worm_raffle_table[raffle_index])] - surface.create_entity {name=entity_name, position=p} - end - end - end - - for _, p in pairs(enemy_can_place_worm_positions) do - if math.random(1,30)==1 then - local tile_distance_to_center = math.sqrt(p[1]^2 + p[2]^2) - if tile_distance_to_center > global.worm_free_zone_radius then - local raffle_index = math.ceil((tile_distance_to_center-global.worm_free_zone_radius)*0.01, 0) - if raffle_index < 1 then raffle_index = 1 end - if raffle_index > 10 then raffle_index = 10 end - local entity_name = worm_raffle_table[raffle_index][math.random(1,#worm_raffle_table[raffle_index])] - if surface.can_place_entity({name=entity_name, position=p}) then surface.create_entity {name=entity_name, position=p} end - end - end - end - - for _, p in pairs(fish_positions) do - if math.random(1,16)==1 then - if surface.can_place_entity({name="fish",position=p}) then - surface.create_entity {name="fish",position=p} - end - end - end - - for _, p in pairs(secret_shop_locations) do - if math.random(1,10)==1 then - if surface.count_entities_filtered{area={{p[1]-125,p[2]-125},{p[1]+125,p[2]+125}}, name="market", limit=1} == 0 then - secret_shop(p) - end - end - end - - for _, p in pairs(spawn_tree_positions) do - if math.random(1,6)==1 then - surface.create_entity {name="tree-04",position=p} - end - end - - for _, p in pairs(extra_tree_positions) do - if math.random(1,20)==1 then - surface.create_entity {name="tree-02",position=p} - end - end - - local decorative_names = {} - for k,v in pairs(game.decorative_prototypes) do - if v.autoplace_specification then - decorative_names[#decorative_names+1] = k - end - end - surface.regenerate_decorative(decorative_names, {{x=math.floor(event.area.left_top.x/32),y=math.floor(event.area.left_top.y/32)}}) - ::continue:: + ]] + -- + end + + for _, p in pairs(enemy_building_positions) do + if math.random(1, 50) == 1 then + local pos = surface.find_non_colliding_position('biter-spawner', p, 8, 1) + if pos then + if math.random(1, 3) == 1 then + surface.create_entity {name = 'spitter-spawner', position = pos} + else + surface.create_entity {name = 'biter-spawner', position = pos} + end + end + end + end + + for _, p in pairs(enemy_worm_positions) do + if math.random(1, 300) == 1 then + local tile_distance_to_center = math.sqrt(p[1] ^ 2 + p[2] ^ 2) + if tile_distance_to_center > global.worm_free_zone_radius then + local raffle_index = math.ceil((tile_distance_to_center - global.worm_free_zone_radius) * 0.01, 0) + if raffle_index < 1 then + raffle_index = 1 + end + if raffle_index > 10 then + raffle_index = 10 + end + local entity_name = worm_raffle_table[raffle_index][math.random(1, #worm_raffle_table[raffle_index])] + surface.create_entity {name = entity_name, position = p} + end + end + end + + for _, p in pairs(enemy_can_place_worm_positions) do + if math.random(1, 30) == 1 then + local tile_distance_to_center = math.sqrt(p[1] ^ 2 + p[2] ^ 2) + if tile_distance_to_center > global.worm_free_zone_radius then + local raffle_index = math.ceil((tile_distance_to_center - global.worm_free_zone_radius) * 0.01, 0) + if raffle_index < 1 then + raffle_index = 1 + end + if raffle_index > 10 then + raffle_index = 10 + end + local entity_name = worm_raffle_table[raffle_index][math.random(1, #worm_raffle_table[raffle_index])] + if surface.can_place_entity({name = entity_name, position = p}) then + surface.create_entity {name = entity_name, position = p} + end + end + end + end + + for _, p in pairs(fish_positions) do + if math.random(1, 16) == 1 then + if surface.can_place_entity({name = 'fish', position = p}) then + surface.create_entity {name = 'fish', position = p} + end + end + end + + for _, p in pairs(secret_shop_locations) do + if math.random(1, 10) == 1 then + if + surface.count_entities_filtered { + area = {{p[1] - 125, p[2] - 125}, {p[1] + 125, p[2] + 125}}, + name = 'market', + limit = 1 + } == 0 + then + secret_shop(p) + end + end + end + + for _, p in pairs(spawn_tree_positions) do + if math.random(1, 6) == 1 then + surface.create_entity {name = 'tree-04', position = p} + end + end + + for _, p in pairs(extra_tree_positions) do + if math.random(1, 20) == 1 then + surface.create_entity {name = 'tree-02', position = p} + end + end + + local decorative_names = {} + for k, v in pairs(game.decorative_prototypes) do + if v.autoplace_specification then + decorative_names[#decorative_names + 1] = k + end + end + surface.regenerate_decorative( + decorative_names, + {{x = math.floor(event.area.left_top.x / 32), y = math.floor(event.area.left_top.y / 32)}} + ) + ::continue:: end local function hunger_update(player, food_value) - - if not player.character then return end - - if food_value == -1 and player.character.driving == true then return end - - local past_hunger = global.player_hunger[player.name] - global.player_hunger[player.name] = global.player_hunger[player.name] + food_value - if global.player_hunger[player.name] > 200 then global.player_hunger[player.name] = 200 end - - if past_hunger == 200 and global.player_hunger[player.name] + food_value > 200 then - global.player_hunger[player.name] = player_hunger_spawn_value - player.character.die("player") - local t = {" ate too much and exploded.", " should have gone on a diet.", " needs to work on their bad eating habbits.", " should have skipped dinner today."} - game.print(player.name .. t[math.random(1,#t)], { r=0.75, g=0.0, b=0.0}) - end - - if global.player_hunger[player.name] < 1 then - global.player_hunger[player.name] = player_hunger_spawn_value - player.character.die("player") - local t = {" ran out of foodstamps.", " starved.", " should not have skipped breakfast today."} - game.print(player.name .. t[math.random(1,#t)], { r=0.75, g=0.0, b=0.0}) - end - - if player.character then - if player_hunger_stages[global.player_hunger[player.name]] ~= player_hunger_stages[past_hunger] then - local print_message = "You feel " .. player_hunger_stages[global.player_hunger[player.name]] .. "." - if player_hunger_stages[global.player_hunger[player.name]] == "Obese" then - print_message = "You have become " .. player_hunger_stages[global.player_hunger[player.name]] .. "." - end - if player_hunger_stages[global.player_hunger[player.name]] == "Starving" then - print_message = "You are starving!" - end - player.print(print_message, player_hunger_color_list[global.player_hunger[player.name]]) - end - end - - player.character.character_running_speed_modifier = player_hunger_buff[global.player_hunger[player.name]] * 0.15 - player.character.character_mining_speed_modifier = player_hunger_buff[global.player_hunger[player.name]] + if not player.character then + return + end + + if food_value == -1 and player.character.driving == true then + return + end + + local past_hunger = global.player_hunger[player.name] + global.player_hunger[player.name] = global.player_hunger[player.name] + food_value + if global.player_hunger[player.name] > 200 then + global.player_hunger[player.name] = 200 + end + + if past_hunger == 200 and global.player_hunger[player.name] + food_value > 200 then + global.player_hunger[player.name] = player_hunger_spawn_value + player.character.die('player') + local t = { + ' ate too much and exploded.', + ' should have gone on a diet.', + ' needs to work on their bad eating habbits.', + ' should have skipped dinner today.' + } + game.print(player.name .. t[math.random(1, #t)], {r = 0.75, g = 0.0, b = 0.0}) + end + + if global.player_hunger[player.name] < 1 then + global.player_hunger[player.name] = player_hunger_spawn_value + player.character.die('player') + local t = {' ran out of foodstamps.', ' starved.', ' should not have skipped breakfast today.'} + game.print(player.name .. t[math.random(1, #t)], {r = 0.75, g = 0.0, b = 0.0}) + end + + if player.character then + if player_hunger_stages[global.player_hunger[player.name]] ~= player_hunger_stages[past_hunger] then + local print_message = 'You feel ' .. player_hunger_stages[global.player_hunger[player.name]] .. '.' + if player_hunger_stages[global.player_hunger[player.name]] == 'Obese' then + print_message = 'You have become ' .. player_hunger_stages[global.player_hunger[player.name]] .. '.' + end + if player_hunger_stages[global.player_hunger[player.name]] == 'Starving' then + print_message = 'You are starving!' + end + player.print(print_message, player_hunger_color_list[global.player_hunger[player.name]]) + end + end + + player.character.character_running_speed_modifier = player_hunger_buff[global.player_hunger[player.name]] * 0.15 + player.character.character_mining_speed_modifier = player_hunger_buff[global.player_hunger[player.name]] end local function on_player_joined_game(event) - if not global.surface_done then - init_surface(game.create_surface("cave_miner")) - global.surface_done = true - end - local surface = game.surfaces["cave_miner"] - local player = game.players[event.player_index] - if not global.cave_miner_init_done then - surface.daytime = 0.5 - surface.freeze_daytime = 1 - game.forces["player"].technologies["landfill"].enabled = false - game.forces["player"].technologies["night-vision-equipment"].enabled = false - game.forces["player"].technologies["artillery-shell-range-1"].enabled = false - game.forces["player"].technologies["artillery-shell-speed-1"].enabled = false - game.forces["player"].technologies["artillery"].enabled = false - game.forces["player"].technologies["atomic-bomb"].enabled = false - - game.map_settings.enemy_evolution.destroy_factor = 0.004 - - global.cave_miner_map_info = [[ -Delve deep for greater treasures, but also face increased dangers. -Mining productivity research, will overhaul your mining equipment, -reinforcing your pickaxe as well as increasing the size of your backpack. + if not global.surface_done then + init_surface(game.create_surface('cave_miner')) + global.surface_done = true + end + local surface = game.surfaces['cave_miner'] + local player = game.players[event.player_index] + if not global.cave_miner_init_done then + surface.daytime = 0.5 + surface.freeze_daytime = 1 + game.forces['player'].technologies['landfill'].enabled = false + game.forces['player'].technologies['night-vision-equipment'].enabled = false + game.forces['player'].technologies['artillery-shell-range-1'].enabled = false + game.forces['player'].technologies['artillery-shell-speed-1'].enabled = false + game.forces['player'].technologies['artillery'].enabled = false + game.forces['player'].technologies['atomic-bomb'].enabled = false -Breaking rocks is exhausting and might make you hungry. -So don´t forget to eat some fish once in a while to stay well fed. -But be careful, eating too much might have it´s consequences too. + game.map_settings.enemy_evolution.destroy_factor = 0.004 -As you dig, you will encounter black bedrock that is just too solid for your pickaxe. -Some explosives could even break through the impassable dark rock. -All they need is a container and a well aimed shot. + global.player_hunger = {} -There is an elevator that goes to the surface, legends say that trees drop ores. -However monsters lurk near them and chopping them down is not recommended. + global.damaged_rocks = {} -Duly note, darkness is a hazard in the mines, stay near your lamps.. -]] - global.player_hunger = {} - - global.damaged_rocks = {} + surface.request_to_generate_chunks({0, -40}, 0.2) + surface.force_generate_chunk_requests() + local p = game.surfaces['cave_miner'].find_non_colliding_position('character', {0, -40}, 10, 1) + game.forces['player'].set_spawn_position(p, 'cave_miner') - surface.request_to_generate_chunks({0,-40}, 0.2) - surface.force_generate_chunk_requests() - local p = game.surfaces["cave_miner"].find_non_colliding_position("character", {0,-40}, 10, 1) - game.forces["player"].set_spawn_position(p, "cave_miner") + global.biter_spawn_amount_weights = {} + global.biter_spawn_amount_weights[1] = {64, 1} + global.biter_spawn_amount_weights[2] = {32, 4} + global.biter_spawn_amount_weights[3] = {16, 8} + global.biter_spawn_amount_weights[4] = {8, 16} + global.biter_spawn_amount_weights[5] = {4, 32} + global.biter_spawn_amount_weights[6] = {2, 64} + global.biter_spawn_amount_raffle = {} + for _, t in pairs(global.biter_spawn_amount_weights) do + for x = 1, t[2], 1 do + table.insert(global.biter_spawn_amount_raffle, t[1]) + end + end - global.biter_spawn_amount_weights = {} - global.biter_spawn_amount_weights[1] = {64, 1} - global.biter_spawn_amount_weights[2] = {32, 4} - global.biter_spawn_amount_weights[3] = {16, 8} - global.biter_spawn_amount_weights[4] = {8, 16} - global.biter_spawn_amount_weights[5] = {4, 32} - global.biter_spawn_amount_weights[6] = {2, 64} - global.biter_spawn_amount_raffle = {} - for _, t in pairs (global.biter_spawn_amount_weights) do - for x = 1, t[2], 1 do - table.insert(global.biter_spawn_amount_raffle, t[1]) - end - end - - global.rock_density = 62 ---- table.insert value up to 100 - global.rock_raffle = {"sand-rock-big","sand-rock-big","rock-big","rock-big","rock-big","rock-big","rock-big","rock-big","rock-huge"} - - global.worm_free_zone_radius = math.sqrt(spawn_dome_size) + 40 - - global.biter_spawn_schedule = {} - - global.ore_spill_cap = 60 - global.stats_rocks_broken = 0 - global.stats_wood_chopped = 0 - global.stats_ores_found = 0 - global.total_ores_mined = 0 - - --player.teleport({0,-40}, "cave_miner") - --game.forces["player"].set_spawn_position({0,-40}, surface) + global.rock_density = 62 ---- table.insert value up to 100 + global.rock_raffle = { + 'sand-rock-big', + 'sand-rock-big', + 'rock-big', + 'rock-big', + 'rock-big', + 'rock-big', + 'rock-big', + 'rock-big', + 'rock-huge' + } - global.rock_mining_chance_weights = {} - - global.rock_mining_chance_weights[1] = {"iron-ore",25} - global.rock_mining_chance_weights[2] = {"copper-ore",18} - global.rock_mining_chance_weights[3] = {"coal",14} - global.rock_mining_chance_weights[4] = {"uranium-ore",3} - global.mining_raffle_table = {} - for _, t in pairs (global.rock_mining_chance_weights) do - for x = 1, t[2], 1 do - table.insert(global.mining_raffle_table, t[1]) - end - end + global.worm_free_zone_radius = math.sqrt(spawn_dome_size) + 40 - global.darkness_threat_level = {} - - game.forces.player.chart(surface, {{-160, -160}, {160, 160}}) + global.biter_spawn_schedule = {} - global.cave_miner_init_done = true - end - if player.online_time < 10 then - --player.teleport(game.surfaces["cave_miner"].find_non_colliding_position("character", {0,-20}, 20, 10), "cave_miner") - local pos = game.forces["player"].get_spawn_position("cave_miner") - player.teleport(game.surfaces["cave_miner"].find_non_colliding_position("character", pos, 10, 2), "cave_miner") - create_cave_miner_info(player) - global.player_hunger[player.name] = player_hunger_spawn_value - hunger_update(player, 0) - global.darkness_threat_level[player.name] = 0 - player.insert {name = 'pistol', count = 1} - player.insert {name = 'firearm-magazine', count = 16} - end - create_cave_miner_button(player) - create_cave_miner_stats_gui(player) - --if surface.name ~= "cave_miner" then return end + global.ore_spill_cap = 60 + global.stats_rocks_broken = 0 + global.stats_wood_chopped = 0 + global.stats_ores_found = 0 + global.total_ores_mined = 0 + + --player.teleport({0,-40}, "cave_miner") + --game.forces["player"].set_spawn_position({0,-40}, surface) + + global.rock_mining_chance_weights = {} + + global.rock_mining_chance_weights[1] = {'iron-ore', 25} + global.rock_mining_chance_weights[2] = {'copper-ore', 18} + global.rock_mining_chance_weights[3] = {'coal', 14} + global.rock_mining_chance_weights[4] = {'uranium-ore', 3} + global.mining_raffle_table = {} + for _, t in pairs(global.rock_mining_chance_weights) do + for x = 1, t[2], 1 do + table.insert(global.mining_raffle_table, t[1]) + end + end + + global.darkness_threat_level = {} + + game.forces.player.chart(surface, {{-160, -160}, {160, 160}}) + + global.cave_miner_init_done = true + end + if player.online_time < 10 then + --player.teleport(game.surfaces["cave_miner"].find_non_colliding_position("character", {0,-20}, 20, 10), "cave_miner") + local pos = game.forces['player'].get_spawn_position('cave_miner') + player.teleport(game.surfaces['cave_miner'].find_non_colliding_position('character', pos, 10, 2), 'cave_miner') + global.player_hunger[player.name] = player_hunger_spawn_value + hunger_update(player, 0) + global.darkness_threat_level[player.name] = 0 + player.insert {name = 'pistol', count = 1} + player.insert {name = 'firearm-magazine', count = 16} + end + create_cave_miner_stats_gui(player) + --if surface.name ~= "cave_miner" then return end end local function spawn_cave_inhabitant(pos, target_position) - if not pos.x then return nil end - if not pos.y then return nil end - local surface = game.surfaces["cave_miner"] - local tile_distance_to_center = math.sqrt(pos.x^2 + pos.y^2) - local rock_inhabitants_index = math.ceil((tile_distance_to_center-math.sqrt(spawn_dome_size))*0.015, 0) - if rock_inhabitants_index < 1 then rock_inhabitants_index = 1 end - if rock_inhabitants_index > #rock_inhabitants then rock_inhabitants_index = #rock_inhabitants end - local entity_name = rock_inhabitants[rock_inhabitants_index][math.random(1,#rock_inhabitants[rock_inhabitants_index])] - local p = surface.find_non_colliding_position(entity_name , pos, 6, 0.5) - local biter = 1 - if p then biter = surface.create_entity {name=entity_name, position=p} end - if target_position then biter.set_command({type=defines.command.attack_area, destination=target_position, radius=5, distraction=defines.distraction.by_anything}) end - if not target_position then return end + if not pos.x then + return nil + end + if not pos.y then + return nil + end + local surface = game.surfaces['cave_miner'] + local tile_distance_to_center = math.sqrt(pos.x ^ 2 + pos.y ^ 2) + local rock_inhabitants_index = math.ceil((tile_distance_to_center - math.sqrt(spawn_dome_size)) * 0.015, 0) + if rock_inhabitants_index < 1 then + rock_inhabitants_index = 1 + end + if rock_inhabitants_index > #rock_inhabitants then + rock_inhabitants_index = #rock_inhabitants + end + local entity_name = + rock_inhabitants[rock_inhabitants_index][math.random(1, #rock_inhabitants[rock_inhabitants_index])] + local p = surface.find_non_colliding_position(entity_name, pos, 6, 0.5) + local biter = 1 + if p then + biter = surface.create_entity {name = entity_name, position = p} + end + if target_position then + biter.set_command( + { + type = defines.command.attack_area, + destination = target_position, + radius = 5, + distraction = defines.distraction.by_anything + } + ) + end + if not target_position then + return + end end local function find_first_entity_spiral_scan(pos, entities, range) - if not pos then return end - if not entities then return end - if not range then return end - local surface = game.surfaces["cave_miner"] - local out_of_map_count = 0 - local out_of_map_cap = 1 - for z = 2,range,2 do - pos.y = pos.y - 1 - pos.x = pos.x - 1 - for modifier = 1, -1, -2 do - for x = 1, z, 1 do - pos.x = pos.x + modifier - local t = surface.get_tile(pos) - if t.name == "out-of-map" then out_of_map_count = out_of_map_count + 1 end - if out_of_map_count > out_of_map_cap then return end - local e = surface.find_entities_filtered {position = pos, name = entities} - if e[1] then return e[1].position end - end - for y = 1, z, 1 do - pos.y = pos.y + modifier - local t = surface.get_tile(pos) - if t.name == "out-of-map" then out_of_map_count = out_of_map_count + 1 end - if out_of_map_count > out_of_map_cap then return end - local e = surface.find_entities_filtered {position = pos, name = entities} - if e[1] then return e[1].position end - end - if out_of_map_count > out_of_map_cap then return end - end - if out_of_map_count > out_of_map_cap then return end - end + if not pos then + return + end + if not entities then + return + end + if not range then + return + end + local surface = game.surfaces['cave_miner'] + local out_of_map_count = 0 + local out_of_map_cap = 1 + for z = 2, range, 2 do + pos.y = pos.y - 1 + pos.x = pos.x - 1 + for modifier = 1, -1, -2 do + for x = 1, z, 1 do + pos.x = pos.x + modifier + local t = surface.get_tile(pos) + if t.name == 'out-of-map' then + out_of_map_count = out_of_map_count + 1 + end + if out_of_map_count > out_of_map_cap then + return + end + local e = surface.find_entities_filtered {position = pos, name = entities} + if e[1] then + return e[1].position + end + end + for y = 1, z, 1 do + pos.y = pos.y + modifier + local t = surface.get_tile(pos) + if t.name == 'out-of-map' then + out_of_map_count = out_of_map_count + 1 + end + if out_of_map_count > out_of_map_cap then + return + end + local e = surface.find_entities_filtered {position = pos, name = entities} + if e[1] then + return e[1].position + end + end + if out_of_map_count > out_of_map_cap then + return + end + end + if out_of_map_count > out_of_map_cap then + return + end + end end local function biter_attack_event() - local surface = game.surfaces["cave_miner"] - local valid_positions = {} - for _, player in pairs(game.connected_players) do - if player.character.driving == false then - local position = {x = player.position.x, y = player.position.y} - local p = find_first_entity_spiral_scan(position, {"rock-huge", "rock-big", "sand-rock-big"}, 32) - if p then - if p.x^2 + p.y^2 > spawn_dome_size then table.insert(valid_positions, p) end - end - end - end - if valid_positions[1] then - if #valid_positions == 1 then - for x = 1, global.biter_spawn_amount_raffle[math.random(1,#global.biter_spawn_amount_raffle)],1 do - table.insert(global.biter_spawn_schedule, {game.tick + 20*x, valid_positions[1]}) - end - end - if #valid_positions > 1 then - for y = math.random(1,2), #valid_positions, 2 do - if y > #valid_positions then break end - for x = 1, global.biter_spawn_amount_raffle[math.random(1,#global.biter_spawn_amount_raffle)],1 do - table.insert(global.biter_spawn_schedule, {game.tick + 20*x, valid_positions[y]}) - end - end - end - end -end + local valid_positions = {} + for _, player in pairs(game.connected_players) do + if player.character.driving == false then + local position = {x = player.position.x, y = player.position.y} + local p = find_first_entity_spiral_scan(position, {'rock-huge', 'rock-big', 'sand-rock-big'}, 32) + if p then + if p.x ^ 2 + p.y ^ 2 > spawn_dome_size then + table.insert(valid_positions, p) + end + end + end + end + if valid_positions[1] then + if #valid_positions == 1 then + for x = 1, global.biter_spawn_amount_raffle[math.random(1, #global.biter_spawn_amount_raffle)], 1 do + table.insert(global.biter_spawn_schedule, {game.tick + 20 * x, valid_positions[1]}) + end + end + if #valid_positions > 1 then + for y = math.random(1, 2), #valid_positions, 2 do + if y > #valid_positions then + break + end + for x = 1, global.biter_spawn_amount_raffle[math.random(1, #global.biter_spawn_amount_raffle)], 1 do + table.insert(global.biter_spawn_schedule, {game.tick + 20 * x, valid_positions[y]}) + end + end + end + end +end local function darkness_events() - for _, p in pairs (game.connected_players) do - if p.surface.name ~= "cave_miner" then return end - if global.darkness_threat_level[p.name] > 4 then - for x = 1, 2 + global.darkness_threat_level[p.name], 1 do - spawn_cave_inhabitant(p.position) - end - local biters_found = p.surface.find_enemy_units(p.position, 12, "player") - if p.character then - for _, biter in pairs(biters_found) do - biter.set_command({type=defines.command.attack, target=p.character, distraction=defines.distraction.none}) - end - p.character.damage(math.random(global.darkness_threat_level[p.name]*2,global.darkness_threat_level[p.name]*3),"enemy") - end - end - if global.darkness_threat_level[p.name] == 2 then - p.print(darkness_messages[math.random(1,#darkness_messages)],{ r=0.65, g=0.0, b=0.0}) - end - global.darkness_threat_level[p.name] = global.darkness_threat_level[p.name] + 1 - end + for _, p in pairs(game.connected_players) do + if p.surface.name ~= 'cave_miner' then + return + end + if global.darkness_threat_level[p.name] > 4 then + for x = 1, 2 + global.darkness_threat_level[p.name], 1 do + spawn_cave_inhabitant(p.position) + end + local biters_found = p.surface.find_enemy_units(p.position, 12, 'player') + if p.character then + for _, biter in pairs(biters_found) do + biter.set_command( + {type = defines.command.attack, target = p.character, distraction = defines.distraction.none} + ) + end + p.character.damage( + math.random(global.darkness_threat_level[p.name] * 2, global.darkness_threat_level[p.name] * 3), + 'enemy' + ) + end + end + if global.darkness_threat_level[p.name] == 2 then + p.print(darkness_messages[math.random(1, #darkness_messages)], {r = 0.65, g = 0.0, b = 0.0}) + end + global.darkness_threat_level[p.name] = global.darkness_threat_level[p.name] + 1 + end end local function darkness_checks() - for _, p in pairs (game.connected_players) do - if p.surface.name ~= "cave_miner" then return end - if p.character then p.character.disable_flashlight() end - local tile_distance_to_center = math.sqrt(p.position.x^2 + p.position.y^2) - if tile_distance_to_center < math.sqrt(spawn_dome_size) then - global.darkness_threat_level[p.name] = 0 - else - if p.character and p.character.driving == true then - global.darkness_threat_level[p.name] = 0 - else - local light_source_entities = p.surface.find_entities_filtered{area={{p.position.x-12,p.position.y-12},{p.position.x+12,p.position.y+12}}, name="small-lamp"} - for _, lamp in pairs (light_source_entities) do - local circuit = lamp.get_or_create_control_behavior() - if circuit then - if lamp.energy > 50 and circuit.disabled == false then - global.darkness_threat_level[p.name] = 0 - break - end - else - if lamp.energy > 50 then - global.darkness_threat_level[p.name] = 0 - break - end - end - end - end - end - end + for _, p in pairs(game.connected_players) do + if p.surface.name ~= 'cave_miner' then + return + end + if p.character then + p.character.disable_flashlight() + end + local tile_distance_to_center = math.sqrt(p.position.x ^ 2 + p.position.y ^ 2) + if tile_distance_to_center < math.sqrt(spawn_dome_size) then + global.darkness_threat_level[p.name] = 0 + else + if p.character and p.character.driving == true then + global.darkness_threat_level[p.name] = 0 + else + local light_source_entities = + p.surface.find_entities_filtered { + area = {{p.position.x - 12, p.position.y - 12}, {p.position.x + 12, p.position.y + 12}}, + name = 'small-lamp' + } + for _, lamp in pairs(light_source_entities) do + local circuit = lamp.get_or_create_control_behavior() + if circuit then + if lamp.energy > 50 and circuit.disabled == false then + global.darkness_threat_level[p.name] = 0 + break + end + else + if lamp.energy > 50 then + global.darkness_threat_level[p.name] = 0 + break + end + end + end + end + end + end end local healing_amount = { - ["rock-big"] = 4, - ["sand-rock-big"] = 4, - ["rock-huge"] = 16 - } + ['rock-big'] = 4, + ['sand-rock-big'] = 4, + ['rock-huge'] = 16 +} local function heal_rocks() - for key, rock in pairs(global.damaged_rocks) do - if rock.last_damage + 300 < game.tick then - if rock.entity.valid then - rock.entity.health = rock.entity.health + healing_amount[rock.entity.name] - if rock.entity.prototype.max_health == rock.entity.health then global.damaged_rocks[key] = nil end - else - global.damaged_rocks[key] = nil - end - end - end + for key, rock in pairs(global.damaged_rocks) do + if rock.last_damage + 300 < game.tick then + if rock.entity.valid then + rock.entity.health = rock.entity.health + healing_amount[rock.entity.name] + if rock.entity.prototype.max_health == rock.entity.health then + global.damaged_rocks[key] = nil + end + else + global.damaged_rocks[key] = nil + end + end + end end -local function on_tick(event) - local storage = {} - if game.tick % 30 == 0 then - if global.biter_spawn_schedule then - for x = 1, #global.biter_spawn_schedule, 1 do - if global.biter_spawn_schedule[x] then - if game.tick >= global.biter_spawn_schedule[x][1] then - local pos = {x = global.biter_spawn_schedule[x][2].x, y = global.biter_spawn_schedule[x][2].y} - global.biter_spawn_schedule[x] = nil - spawn_cave_inhabitant(pos) - end - end - end - end - end - - if game.tick % 240 == 0 then - darkness_checks() - darkness_events() - heal_rocks() - end - - if game.tick % 5400 == 2700 then - for _, player in pairs(game.connected_players) do - if player.afk_time < 18000 then hunger_update(player, -1) end - end - refresh_gui() - - if math.random(1,2) == 1 then biter_attack_event() end - end - - if game.tick == 150 then - local surface = game.surfaces["cave_miner"] - local p = game.surfaces["cave_miner"].find_non_colliding_position("market",{0,-15},60,2) - local x = game.surfaces["cave_miner"].find_non_colliding_position("player-port",{-5,-15},60,2) - local o = game.surfaces["cave_miner"].find_non_colliding_position("player-port",{5,-25},60,2) - - - global.market = surface.create_entity {name = "market", position = p} - global.surface_cave_elevator = surface.create_entity {name = "player-port", position = x, force = game.forces.neutral} - global.surface_cave_chest = Module.create_chest(surface, o, storage) - - rendering.draw_text{ - text = "Storage", - surface = surface, - target = global.surface_cave_chest, - target_offset = {0, 0.4}, - color = { r=0.98, g=0.66, b=0.22}, - alignment = "center" - } - - rendering.draw_text{ - text = "Elevator", - surface = surface, - target = global.surface_cave_elevator, - target_offset = {0, 1}, - color = { r=0.98, g=0.66, b=0.22}, - alignment = "center" - } +local function on_tick() + local storage = {} + if game.tick % 30 == 0 then + if global.biter_spawn_schedule then + for x = 1, #global.biter_spawn_schedule, 1 do + if global.biter_spawn_schedule[x] then + if game.tick >= global.biter_spawn_schedule[x][1] then + local pos = {x = global.biter_spawn_schedule[x][2].x, y = global.biter_spawn_schedule[x][2].y} + global.biter_spawn_schedule[x] = nil + spawn_cave_inhabitant(pos) + end + end + end + end + end - rendering.draw_text{ - text = "Market", - surface = surface, - target = global.market, - target_offset = {0, 2}, - color = { r=0.98, g=0.66, b=0.22}, - alignment = "center" - } + if game.tick % 240 == 0 then + darkness_checks() + darkness_events() + heal_rocks() + end - global.market.destructible = false - global.surface_cave_chest.minable = false - global.surface_cave_chest.destructible = false - global.surface_cave_elevator.minable = false - global.surface_cave_elevator.destructible = false - - if enable_fishbank_terminal then - global.market.add_market_item({price = {}, offer = {type = 'nothing', effect_description = 'Deposit Fish'}}) - global.market.add_market_item({price = {}, offer = {type = 'nothing', effect_description = 'Withdraw Fish - 1% Bank Fee'}}) - global.market.add_market_item({price = {}, offer = {type = 'nothing', effect_description = 'Show Account Balance'}}) - end - - for _, item in pairs(market_items.spawn) do - global.market.add_market_item(item) - end - surface.regenerate_entity({"rock-big","rock-huge"}) - end + if game.tick % 5400 == 2700 then + for _, player in pairs(game.connected_players) do + if player.afk_time < 18000 then + hunger_update(player, -1) + end + end + refresh_gui() + + if math.random(1, 2) == 1 then + biter_attack_event() + end + end + + if game.tick == 150 then + local surface = game.surfaces['cave_miner'] + local p = game.surfaces['cave_miner'].find_non_colliding_position('market', {0, -15}, 60, 2) + local x = game.surfaces['cave_miner'].find_non_colliding_position('player-port', {-5, -15}, 60, 2) + local o = game.surfaces['cave_miner'].find_non_colliding_position('player-port', {5, -25}, 60, 2) + + global.market = surface.create_entity {name = 'market', position = p} + global.surface_cave_elevator = + surface.create_entity {name = 'player-port', position = x, force = game.forces.neutral} + global.surface_cave_chest = Module.create_chest(surface, o, storage) + + rendering.draw_text { + text = 'Storage', + surface = surface, + target = global.surface_cave_chest, + target_offset = {0, 0.4}, + color = {r = 0.98, g = 0.66, b = 0.22}, + alignment = 'center' + } + + rendering.draw_text { + text = 'Elevator', + surface = surface, + target = global.surface_cave_elevator, + target_offset = {0, 1}, + color = {r = 0.98, g = 0.66, b = 0.22}, + alignment = 'center' + } + + rendering.draw_text { + text = 'Market', + surface = surface, + target = global.market, + target_offset = {0, 2}, + color = {r = 0.98, g = 0.66, b = 0.22}, + alignment = 'center' + } + + global.market.destructible = false + global.surface_cave_chest.minable = false + global.surface_cave_chest.destructible = false + global.surface_cave_elevator.minable = false + global.surface_cave_elevator.destructible = false + + if enable_fishbank_terminal then + global.market.add_market_item({price = {}, offer = {type = 'nothing', effect_description = 'Deposit Fish'}}) + global.market.add_market_item( + {price = {}, offer = {type = 'nothing', effect_description = 'Withdraw Fish - 1% Bank Fee'}} + ) + global.market.add_market_item( + {price = {}, offer = {type = 'nothing', effect_description = 'Show Account Balance'}} + ) + end + + for _, item in pairs(market_items.spawn) do + global.market.add_market_item(item) + end + surface.regenerate_entity({'rock-big', 'rock-huge'}) + end end local disabled_for_deconstruction = { - ["fish"] = true, - ["rock-huge"] = true, - ["rock-big"] = true, - ["sand-rock-big"] = true, - ["tree-02"] = true, - ["tree-04"] = true - } - -local function on_marked_for_deconstruction(event) - if disabled_for_deconstruction[event.entity.name] then - event.entity.cancel_deconstruction(game.players[event.player_index].force.name) - end + ['fish'] = true, + ['rock-huge'] = true, + ['rock-big'] = true, + ['sand-rock-big'] = true, + ['tree-02'] = true, + ['tree-04'] = true +} + +local function on_marked_for_deconstruction(event) + if disabled_for_deconstruction[event.entity.name] then + event.entity.cancel_deconstruction(game.players[event.player_index].force.name) + end end local treasure_chest_messages = { - "You notice an old crate within the rubble. It's filled with treasure!", - "You find a chest underneath the broken rocks. It's filled with goodies!", - "We has found the precious!" - } + "You notice an old crate within the rubble. It's filled with treasure!", + "You find a chest underneath the broken rocks. It's filled with goodies!", + 'We has found the precious!' +} -local ore_floaty_texts = { - ["iron-ore"] = {"Iron ore", {r = 200, g = 200, b = 180}}, - ["copper-ore"] = {"Copper ore", {r = 221, g = 133, b = 6}}, - ["uranium-ore"] = {"Uranium ore", {r= 50, g= 250, b= 50}}, - ["coal"] = {"Coal", {r = 0, g = 0, b = 0}}, - ["stone"] = {"Stone", {r = 200, g = 160, b = 30}}, -} - local function pre_player_mined_item(event) - local player = game.players[event.player_index] - local surface = player.surface - if player.surface.name ~= "cave_miner" then return end - if math.random(1,12) == 1 then - if event.entity.name == "rock-huge" or event.entity.name == "rock-big" or event.entity.name == "sand-rock-big" then - for x = 1, math.random(6, 10), 1 do - table.insert(global.biter_spawn_schedule, {game.tick + 30*x, event.entity.position}) - end - end - end - - if event.entity.type == "tree" then surface.spill_item_stack(player.position,{name = "raw-fish", count = math.random(1,2)},true) end + local player = game.players[event.player_index] + local surface = player.surface + if player.surface.name ~= 'cave_miner' then + return + end + if math.random(1, 12) == 1 then + if event.entity.name == 'rock-huge' or event.entity.name == 'rock-big' or event.entity.name == 'sand-rock-big' then + for x = 1, math.random(6, 10), 1 do + table.insert(global.biter_spawn_schedule, {game.tick + 30 * x, event.entity.position}) + end + end + end - if event.entity.name == "rock-huge" or event.entity.name == "rock-big" or event.entity.name == "sand-rock-big" then - local rock_position = {x = event.entity.position.x, y = event.entity.position.y} - event.entity.destroy() - - local distance_to_center = rock_position.x ^ 2 + rock_position.y ^ 2 - if math.random(1, 250) == 1 then - treasure_chest(rock_position, distance_to_center) - player.print(treasure_chest_messages[math.random(1, #treasure_chest_messages)], { r=0.98, g=0.66, b=0.22}) - end - - local tile_distance_to_center = math.sqrt(rock_position.x^2 + rock_position.y^2) - if tile_distance_to_center > 1450 then tile_distance_to_center = 1450 end - if math.random(1,3) == 1 then hunger_update(player, -1) end - - surface.spill_item_stack(player.position,{name = "raw-fish", count = math.random(3,4)},true) - local bonus_amount = math.floor((tile_distance_to_center - math.sqrt(spawn_dome_size)) * 0.10, 0) - if bonus_amount < 1 then bonus_amount = 0 end - local amount = math.random(45,55) + bonus_amount - if amount > 200 then amount = 200 end - amount = amount * (1+game.forces.player.mining_drill_productivity_bonus) - - amount = math.round(amount, 0) - local amount_of_stone = math.round(amount * 0.15,0) - - global.stats_ores_found = global.stats_ores_found + amount + amount_of_stone - - local mined_loot = global.mining_raffle_table[math.random(1,#global.mining_raffle_table)] - - surface.create_entity({ - name = "flying-text", - position = rock_position, - text = "+" .. amount .. " [img=item/" .. mined_loot .. "]", - color = {r=0.98, g=0.66, b=0.22} - }) - --surface.create_entity({name = "flying-text", position = rock_position, text = amount .. " " .. ore_floaty_texts[mined_loot][1], color = ore_floaty_texts[mined_loot][2]}) - - if amount > global.ore_spill_cap then - surface.spill_item_stack(rock_position,{name = mined_loot, count = global.ore_spill_cap},true) - amount = amount - global.ore_spill_cap - local i = player.insert {name = mined_loot, count = amount} - amount = amount - i - if amount > 0 then - surface.spill_item_stack(rock_position,{name = mined_loot, count = amount},true) - end - else - surface.spill_item_stack(rock_position,{name = mined_loot, count = amount},true) - end - - if amount_of_stone > global.ore_spill_cap then - surface.spill_item_stack(rock_position,{name = "stone", count = global.ore_spill_cap},true) - amount_of_stone = amount_of_stone - global.ore_spill_cap - local i = player.insert {name = "stone", count = amount_of_stone} - amount_of_stone = amount_of_stone - i - if amount_of_stone > 0 then - surface.spill_item_stack(rock_position,{name = "stone", count = amount_of_stone},true) - end - else - surface.spill_item_stack(rock_position,{name = "stone", count = amount_of_stone},true) - end - - global.stats_rocks_broken = global.stats_rocks_broken + 1 - refresh_gui() - - if math.random(1,32) == 1 then - local p = {x = rock_position.x, y = rock_position.y} - local tile_distance_to_center = p.x^2 + p.y^2 - if tile_distance_to_center > spawn_dome_size + 100 then - local radius = 32 - if surface.count_entities_filtered{area={{p.x - radius,p.y - radius},{p.x + radius,p.y + radius}}, type="resource", limit=1} == 0 then - local size_raffle = {{"huge", 33, 42},{"big", 17, 32},{"", 8, 16},{"tiny", 3, 7}} - local size = size_raffle[math.random(1,#size_raffle)] - local ore_prints = {coal = {"dark", "Coal"}, ["iron-ore"] = {"shiny", "Iron"}, ["copper-ore"] = {"glimmering", "Copper"}, ["uranium-ore"] = {"glowing", "Uranium"}} - player.print("You notice something " .. ore_prints[mined_loot][1] .. " underneath the rubble covered floor. It's a " .. size[1] .. " vein of " .. ore_prints[mined_loot][2] .. "!!", { r=0.98, g=0.66, b=0.22}) - tile_distance_to_center = math.sqrt(tile_distance_to_center) - local ore_entities_placed = 0 - local modifier_raffle = {{0,-1},{-1,0},{1,0},{0,1}} - while ore_entities_placed < math.random(size[2],size[3]) do - local a = math.ceil((math.random(tile_distance_to_center*4, tile_distance_to_center*5)) / 1 + ore_entities_placed * 0.5, 0) - for x = 1, 150, 1 do - local m = modifier_raffle[math.random(1,#modifier_raffle)] - local pos = {x = p.x + m[1], y = p.y + m[2]} - if surface.can_place_entity({name=mined_loot, position=pos, amount=a}) then - surface.create_entity {name=mined_loot, position=pos, amount=a} - p = pos - break - end - end - ore_entities_placed = ore_entities_placed + 1 - end - end - end - end - end + if event.entity.type == 'tree' then + surface.spill_item_stack(player.position, {name = 'raw-fish', count = math.random(1, 2)}, true) + end + + if event.entity.name == 'rock-huge' or event.entity.name == 'rock-big' or event.entity.name == 'sand-rock-big' then + local rock_position = {x = event.entity.position.x, y = event.entity.position.y} + event.entity.destroy() + + local distance_to_center = rock_position.x ^ 2 + rock_position.y ^ 2 + if math.random(1, 250) == 1 then + treasure_chest(rock_position, distance_to_center) + player.print( + treasure_chest_messages[math.random(1, #treasure_chest_messages)], + {r = 0.98, g = 0.66, b = 0.22} + ) + end + + local tile_distance_to_center = math.sqrt(rock_position.x ^ 2 + rock_position.y ^ 2) + if tile_distance_to_center > 1450 then + tile_distance_to_center = 1450 + end + if math.random(1, 3) == 1 then + hunger_update(player, -1) + end + + surface.spill_item_stack(player.position, {name = 'raw-fish', count = math.random(3, 4)}, true) + local bonus_amount = math.floor((tile_distance_to_center - math.sqrt(spawn_dome_size)) * 0.10, 0) + if bonus_amount < 1 then + bonus_amount = 0 + end + local amount = math.random(45, 55) + bonus_amount + if amount > 200 then + amount = 200 + end + amount = amount * (1 + game.forces.player.mining_drill_productivity_bonus) + + amount = math.round(amount, 0) + local amount_of_stone = math.round(amount * 0.15, 0) + + global.stats_ores_found = global.stats_ores_found + amount + amount_of_stone + + local mined_loot = global.mining_raffle_table[math.random(1, #global.mining_raffle_table)] + + surface.create_entity( + { + name = 'flying-text', + position = rock_position, + text = '+' .. amount .. ' [img=item/' .. mined_loot .. ']', + color = {r = 0.98, g = 0.66, b = 0.22} + } + ) + --surface.create_entity({name = "flying-text", position = rock_position, text = amount .. " " .. ore_floaty_texts[mined_loot][1], color = ore_floaty_texts[mined_loot][2]}) + + if amount > global.ore_spill_cap then + surface.spill_item_stack(rock_position, {name = mined_loot, count = global.ore_spill_cap}, true) + amount = amount - global.ore_spill_cap + local i = player.insert {name = mined_loot, count = amount} + amount = amount - i + if amount > 0 then + surface.spill_item_stack(rock_position, {name = mined_loot, count = amount}, true) + end + else + surface.spill_item_stack(rock_position, {name = mined_loot, count = amount}, true) + end + + if amount_of_stone > global.ore_spill_cap then + surface.spill_item_stack(rock_position, {name = 'stone', count = global.ore_spill_cap}, true) + amount_of_stone = amount_of_stone - global.ore_spill_cap + local i = player.insert {name = 'stone', count = amount_of_stone} + amount_of_stone = amount_of_stone - i + if amount_of_stone > 0 then + surface.spill_item_stack(rock_position, {name = 'stone', count = amount_of_stone}, true) + end + else + surface.spill_item_stack(rock_position, {name = 'stone', count = amount_of_stone}, true) + end + + global.stats_rocks_broken = global.stats_rocks_broken + 1 + refresh_gui() + + if math.random(1, 32) == 1 then + local p = {x = rock_position.x, y = rock_position.y} + local tile_distance_to_center = p.x ^ 2 + p.y ^ 2 + if tile_distance_to_center > spawn_dome_size + 100 then + local radius = 32 + if + surface.count_entities_filtered { + area = {{p.x - radius, p.y - radius}, {p.x + radius, p.y + radius}}, + type = 'resource', + limit = 1 + } == 0 + then + local size_raffle = {{'huge', 33, 42}, {'big', 17, 32}, {'', 8, 16}, {'tiny', 3, 7}} + local size = size_raffle[math.random(1, #size_raffle)] + local ore_prints = { + coal = {'dark', 'Coal'}, + ['iron-ore'] = {'shiny', 'Iron'}, + ['copper-ore'] = {'glimmering', 'Copper'}, + ['uranium-ore'] = {'glowing', 'Uranium'} + } + player.print( + 'You notice something ' .. + ore_prints[mined_loot][1] .. + " underneath the rubble covered floor. It's a " .. + size[1] .. ' vein of ' .. ore_prints[mined_loot][2] .. '!!', + {r = 0.98, g = 0.66, b = 0.22} + ) + tile_distance_to_center = math.sqrt(tile_distance_to_center) + local ore_entities_placed = 0 + local modifier_raffle = {{0, -1}, {-1, 0}, {1, 0}, {0, 1}} + while ore_entities_placed < math.random(size[2], size[3]) do + local a = + math.ceil( + (math.random(tile_distance_to_center * 4, tile_distance_to_center * 5)) / 1 + + ore_entities_placed * 0.5, + 0 + ) + for x = 1, 150, 1 do + local m = modifier_raffle[math.random(1, #modifier_raffle)] + local pos = {x = p.x + m[1], y = p.y + m[2]} + if surface.can_place_entity({name = mined_loot, position = pos, amount = a}) then + surface.create_entity {name = mined_loot, position = pos, amount = a} + p = pos + break + end + end + ore_entities_placed = ore_entities_placed + 1 + end + end + end + end + end end local function on_player_mined_entity(event) - local player = game.players[event.player_index] - if player.surface.name ~= "cave_miner" then return end - if event.entity.name == "rock-huge" or event.entity.name == "rock-big" or event.entity.name == "sand-rock-big" then - event.buffer.clear() - end - if event.entity.name == "fish" then - if math.random(1,2) == 1 then - local player = game.players[event.player_index] - local health = player.character.health - player.character.damage(math.random(50,150),"enemy") - if not player.character then - game.print(player.name .. " should have kept their hands out of the foggy lake waters.",{ r=0.75, g=0.0, b=0.0} ) - else - if health > 200 then - player.print("You got bitten by an angry cave piranha.",{ r=0.75, g=0.0, b=0.0}) - else - local messages = {"Ouch.. That hurt! Better be careful now.", "Just a fleshwound.", "Better keep those hands to yourself or you might loose them."} - player.print(messages[math.random(1,#messages)],{ r=0.75, g=0.0, b=0.0}) - end - end - end - end + local player = game.players[event.player_index] + if player.surface.name ~= 'cave_miner' then + return + end + if event.entity.name == 'rock-huge' or event.entity.name == 'rock-big' or event.entity.name == 'sand-rock-big' then + event.buffer.clear() + end + if event.entity.name == 'fish' then + if math.random(1, 2) == 1 then + local health = player.character.health + player.character.damage(math.random(50, 150), 'enemy') + if not player.character then + game.print( + player.name .. ' should have kept their hands out of the foggy lake waters.', + {r = 0.75, g = 0.0, b = 0.0} + ) + else + if health > 200 then + player.print('You got bitten by an angry cave piranha.', {r = 0.75, g = 0.0, b = 0.0}) + else + local messages = { + 'Ouch.. That hurt! Better be careful now.', + 'Just a fleshwound.', + 'Better keep those hands to yourself or you might loose them.' + } + player.print(messages[math.random(1, #messages)], {r = 0.75, g = 0.0, b = 0.0}) + end + end + end + end end local function on_entity_damaged(event) - local entity = event.entity - local surface = entity.surface - if not event.entity.valid then return end - if event.entity.name == "rock-huge" or event.entity.name == "rock-big" or event.entity.name == "sand-rock-big" then - local rock_is_alive = true - if event.force.name == "enemy" then - event.entity.health = event.entity.health + (event.final_damage_amount - 0.2) - if event.entity.health <= event.final_damage_amount then - rock_is_alive = false - end - end - if event.force.name == "player" then - event.entity.health = event.entity.health + (event.final_damage_amount * 0.8) - if event.entity.health <= event.final_damage_amount then - rock_is_alive = false - end - end - if event.entity.health <= 0 then rock_is_alive = false end - if rock_is_alive then - global.damaged_rocks[tostring(event.entity.position.x) .. tostring(event.entity.position.y)] = {last_damage = game.tick, entity = event.entity} - else - global.damaged_rocks[tostring(event.entity.position.x) .. tostring(event.entity.position.y)] = nil - if event.force.name == "player" then - if math.random(1,12) == 1 then - for x = 1, math.random(6,10), 1 do - table.insert(global.biter_spawn_schedule, {game.tick + 20*x, event.entity.position}) - end - end - end - local p = {x = event.entity.position.x, y = event.entity.position.y} - local drop_amount = math.random(4, 8) - event.entity.destroy() - game.surfaces["cave_miner"].spill_item_stack(p,{name = "stone", count = drop_amount},true) - - local drop_amount_ore = math.random(16, 32) - local ore = global.mining_raffle_table[math.random(1, #global.mining_raffle_table)] - game.surfaces["cave_miner"].spill_item_stack(p,{name = ore, count = drop_amount_ore},true) - - global.stats_rocks_broken = global.stats_rocks_broken + 1 - global.stats_ores_found = global.stats_ores_found + drop_amount + drop_amount_ore - --refresh_gui() - end - end + local entity = event.entity + if not event.entity.valid then + return + end + if event.entity.name == 'rock-huge' or event.entity.name == 'rock-big' or event.entity.name == 'sand-rock-big' then + local rock_is_alive = true + if event.force.name == 'enemy' then + event.entity.health = event.entity.health + (event.final_damage_amount - 0.2) + if event.entity.health <= event.final_damage_amount then + rock_is_alive = false + end + end + if event.force.name == 'player' then + event.entity.health = event.entity.health + (event.final_damage_amount * 0.8) + if event.entity.health <= event.final_damage_amount then + rock_is_alive = false + end + end + if event.entity.health <= 0 then + rock_is_alive = false + end + if rock_is_alive then + global.damaged_rocks[tostring(event.entity.position.x) .. tostring(event.entity.position.y)] = { + last_damage = game.tick, + entity = event.entity + } + else + --refresh_gui() + global.damaged_rocks[tostring(event.entity.position.x) .. tostring(event.entity.position.y)] = nil + if event.force.name == 'player' then + if math.random(1, 12) == 1 then + for x = 1, math.random(6, 10), 1 do + table.insert(global.biter_spawn_schedule, {game.tick + 20 * x, event.entity.position}) + end + end + end + local p = {x = event.entity.position.x, y = event.entity.position.y} + local drop_amount = math.random(4, 8) + event.entity.destroy() + game.surfaces['cave_miner'].spill_item_stack(p, {name = 'stone', count = drop_amount}, true) + + local drop_amount_ore = math.random(16, 32) + local ore = global.mining_raffle_table[math.random(1, #global.mining_raffle_table)] + game.surfaces['cave_miner'].spill_item_stack(p, {name = ore, count = drop_amount_ore}, true) + + global.stats_rocks_broken = global.stats_rocks_broken + 1 + global.stats_ores_found = global.stats_ores_found + drop_amount + drop_amount_ore + end + end end local function on_player_respawned(event) - local player = game.players[event.player_index] - if player.surface.name ~= "cave_miner" then return end - player.character.disable_flashlight() - global.player_hunger[player.name] = player_hunger_spawn_value - hunger_update(player, 0) - refresh_gui() + local player = game.players[event.player_index] + if player.surface.name ~= 'cave_miner' then + return + end + player.character.disable_flashlight() + global.player_hunger[player.name] = player_hunger_spawn_value + hunger_update(player, 0) + refresh_gui() end local function on_research_finished(event) - event.research.force.character_inventory_slots_bonus = game.forces.player.mining_drill_productivity_bonus * 500 - refresh_gui() - if not event.research.force.technologies["steel-axe"].researched then return end - event.research.force.manual_mining_speed_modifier = 1 + game.forces.player.mining_drill_productivity_bonus * 4 + event.research.force.character_inventory_slots_bonus = game.forces.player.mining_drill_productivity_bonus * 500 + refresh_gui() + if not event.research.force.technologies['steel-axe'].researched then + return + end + event.research.force.manual_mining_speed_modifier = 1 + game.forces.player.mining_drill_productivity_bonus * 4 end local function on_gui_click(event) - if not event then return end - if not event.element then return end - if not event.element.valid then return end - local player = game.players[event.element.player_index] - local name = event.element.name - local frame = player.gui.top["caver_miner_stats_frame"] - if name == "caver_miner_stats_toggle_button" and frame == nil then create_cave_miner_stats_gui(player) end - if name == "caver_miner_stats_toggle_button" and frame then - if player.gui.left["cave_miner_info"] then - frame.destroy() - player.gui.top["hunger_frame"].destroy() - player.gui.left["cave_miner_info"].destroy() - else - create_cave_miner_info(player) - end - end - if name == "close_cave_miner_info" then player.gui.left["cave_miner_info"].destroy() end + if not event then + return + end + if not event.element then + return + end + if not event.element.valid then + return + end + local player = game.players[event.element.player_index] + local name = event.element.name + local frame = player.gui.top['caver_miner_stats_frame'] + if name == 'caver_miner_stats_toggle_button' and frame == nil then + create_cave_miner_stats_gui(player) + end + if name == 'caver_miner_stats_toggle_button' and frame then + if player.gui.left['cave_miner_info'] then + frame.destroy() + player.gui.top['hunger_frame'].destroy() + player.gui.left['cave_miner_info'].destroy() + end + end + if name == 'close_cave_miner_info' then + player.gui.left['cave_miner_info'].destroy() + end end local function on_player_used_capsule(event) - if event.item.name == "raw-fish" then - local player = game.players[event.player_index] - if player.character.health < 250 then return end - hunger_update(player, player_hunger_fish_food_value) - player.play_sound{path="utility/armor_table", volume_modifier=1} - refresh_gui() - end + if event.item.name == 'raw-fish' then + local player = game.players[event.player_index] + if player.character.health < 250 then + return + end + hunger_update(player, player_hunger_fish_food_value) + player.play_sound {path = 'utility/armor_table', volume_modifier = 1} + refresh_gui() + end end -local function changed_surface(event) - local player = game.players[event.player_index] - local surface = player.surface - if surface.name ~= "cave_miner" then return end - if player.online_time < 10 then return end - player.print("Warped to Cave Miner!", { r=0.10, g=0.75, b=0.5}) - player.play_sound {path = 'utility/axe_mining_ore', volume_modifier = 1} - if player.gui.left["map_intro_frame"] then player.gui.left["map_intro_frame"].destroy() end - if player.gui.top["map_intro_button"] then player.gui.top["map_intro_button"].destroy() end - if player.gui.top["choppy_stats_frame"] then player.gui.top["choppy_stats_frame"].destroy() end - create_cave_miner_button(player) - create_cave_miner_stats_gui(player) - player.print("Hungry? Take a look at our market offers! No questions asked.", { r=0.10, g=0.75, b=0.5}) -end +local function changed_surface(event) + local player = game.players[event.player_index] + local surface = player.surface + if surface.name ~= 'cave_miner' then + return + end + if player.online_time < 10 then + return + end + player.print('Warped to Cave Miner!', {r = 0.10, g = 0.75, b = 0.5}) + player.play_sound {path = 'utility/axe_mining_ore', volume_modifier = 1} + if player.gui.left['map_intro_frame'] then + player.gui.left['map_intro_frame'].destroy() + end + if player.gui.top['map_intro_button'] then + player.gui.top['map_intro_button'].destroy() + end + if player.gui.top['choppy_stats_frame'] then + player.gui.top['choppy_stats_frame'].destroy() + end + create_cave_miner_stats_gui(player) + player.print('Hungry? Take a look at our market offers! No questions asked.', {r = 0.10, g = 0.75, b = 0.5}) +end local bank_messages = { - "Caves are dangerous. Did you hear about our insurance programs?", - "Get your wealth flowing today with Fishbank!", - "Hungry? Take a look at our credit offers! No questions asked.", - "Fishbank. The only choice.", - "Smart miners use Fishbank!", - "Your wealth is safe with Fishbank!", - "Fishbank, because inventory space matters!", - "Have you heard of our Caviar Card? Don't ask, we will ask you..", - "9 out of 10 felines only trust in Fishbank." - } - + 'Caves are dangerous. Did you hear about our insurance programs?', + 'Get your wealth flowing today with Fishbank!', + 'Hungry? Take a look at our credit offers! No questions asked.', + 'Fishbank. The only choice.', + 'Smart miners use Fishbank!', + 'Your wealth is safe with Fishbank!', + 'Fishbank, because inventory space matters!', + "Have you heard of our Caviar Card? Don't ask, we will ask you..", + '9 out of 10 felines only trust in Fishbank.' +} + local function on_market_item_purchased(event) - if not enable_fishbank_terminal then return end - local player = game.players[event.player_index] - local market = event.market - local offer_index = event.offer_index - local count = event.count - local offers = market.get_market_items() - local bought_offer = offers[offer_index].offer - if bought_offer.type ~= "nothing" then return end - if not global.fish_bank then global.fish_bank = {} end - if not global.fish_bank[player.name] then global.fish_bank[player.name] = 0 end - - if offer_index == 1 then - local fish_removed = player.remove_item({name = "raw-fish", count = 999999}) - if fish_removed == 0 then return end - global.fish_bank[player.name] = global.fish_bank[player.name] + fish_removed - player.print(fish_removed .. " Fish deposited into your account. Your balance is " .. global.fish_bank[player.name] .. ".", {r=0.10, g=0.75, b=0.5}) - player.print(bank_messages[math.random(1,#bank_messages)], { r=0.77, g=0.77, b=0.77}) - player.surface.create_entity({name = "flying-text", position = player.position, text = tostring(fish_removed .. " Fish deposited"), color = {r=0.10, g=0.75, b=0.5}}) - end - - if offer_index == 2 then - if global.fish_bank[player.name] == 0 then - player.print("No fish in your Bank account :(", { r=0.10, g=0.75, b=0.5}) - return - end - - local requested_withdraw_amount = 500 - local fee = 10 - if global.fish_bank[player.name] < requested_withdraw_amount + fee then - fee = math.ceil(global.fish_bank[player.name] * 0.01, 0) - if global.fish_bank[player.name] < 10 then fee = 0 end - requested_withdraw_amount = global.fish_bank[player.name] - fee - end - local fish_withdrawn = player.insert({name = "raw-fish", count = requested_withdraw_amount}) - if fish_withdrawn ~= requested_withdraw_amount then - player.remove_item({name = "raw-fish", count = fish_withdrawn}) - return - end - global.fish_bank[player.name] = global.fish_bank[player.name] - (fish_withdrawn + fee) - player.print(fish_withdrawn .. " Fish withdrawn from your account. Your balance is " .. global.fish_bank[player.name] .. ".", { r=0.10, g=0.75, b=0.5}) - player.print(bank_messages[math.random(1,#bank_messages)], { r=0.77, g=0.77, b=0.77}) - player.surface.create_entity({name = "flying-text", position = player.position, text = tostring(fish_withdrawn .. " Fish withdrawn"), color = {r=0.10, g=0.75, b=0.5}}) - end - - if offer_index == 3 then - player.print("Your balance is " .. global.fish_bank[player.name] .. " Fish.", { r=0.10, g=0.75, b=0.5}) - end + if not enable_fishbank_terminal then + return + end + local player = game.players[event.player_index] + local market = event.market + local offer_index = event.offer_index + local offers = market.get_market_items() + local bought_offer = offers[offer_index].offer + if bought_offer.type ~= 'nothing' then + return + end + if not global.fish_bank then + global.fish_bank = {} + end + if not global.fish_bank[player.name] then + global.fish_bank[player.name] = 0 + end + + if offer_index == 1 then + local fish_removed = player.remove_item({name = 'raw-fish', count = 999999}) + if fish_removed == 0 then + return + end + global.fish_bank[player.name] = global.fish_bank[player.name] + fish_removed + player.print( + fish_removed .. + ' Fish deposited into your account. Your balance is ' .. global.fish_bank[player.name] .. '.', + {r = 0.10, g = 0.75, b = 0.5} + ) + player.print(bank_messages[math.random(1, #bank_messages)], {r = 0.77, g = 0.77, b = 0.77}) + player.surface.create_entity( + { + name = 'flying-text', + position = player.position, + text = tostring(fish_removed .. ' Fish deposited'), + color = {r = 0.10, g = 0.75, b = 0.5} + } + ) + end + + if offer_index == 2 then + if global.fish_bank[player.name] == 0 then + player.print('No fish in your Bank account :(', {r = 0.10, g = 0.75, b = 0.5}) + return + end + + local requested_withdraw_amount = 500 + local fee = 10 + if global.fish_bank[player.name] < requested_withdraw_amount + fee then + fee = math.ceil(global.fish_bank[player.name] * 0.01, 0) + if global.fish_bank[player.name] < 10 then + fee = 0 + end + requested_withdraw_amount = global.fish_bank[player.name] - fee + end + local fish_withdrawn = player.insert({name = 'raw-fish', count = requested_withdraw_amount}) + if fish_withdrawn ~= requested_withdraw_amount then + player.remove_item({name = 'raw-fish', count = fish_withdrawn}) + return + end + global.fish_bank[player.name] = global.fish_bank[player.name] - (fish_withdrawn + fee) + player.print( + fish_withdrawn .. + ' Fish withdrawn from your account. Your balance is ' .. global.fish_bank[player.name] .. '.', + {r = 0.10, g = 0.75, b = 0.5} + ) + player.print(bank_messages[math.random(1, #bank_messages)], {r = 0.77, g = 0.77, b = 0.77}) + player.surface.create_entity( + { + name = 'flying-text', + position = player.position, + text = tostring(fish_withdrawn .. ' Fish withdrawn'), + color = {r = 0.10, g = 0.75, b = 0.5} + } + ) + end + + if offer_index == 3 then + player.print('Your balance is ' .. global.fish_bank[player.name] .. ' Fish.', {r = 0.10, g = 0.75, b = 0.5}) + end end +local function on_init() + local T = Map.Pop_info() + T.main_caption = 'Cave Choppy' + T.sub_caption = ' ..warping between dimensions..' + T.text = + ([[ + Delve deep for greater treasures, but also face increased dangers. + Mining productivity research, will overhaul your mining equipment, + reinforcing your pickaxe as well as increasing the size of your backpack. + + Breaking rocks is exhausting and might make you hungry. + So don´t forget to eat some fish once in a while to stay well fed. + But be careful, eating too much might have it´s consequences too. + + As you dig, you will encounter black bedrock that is just too solid for your pickaxe. + Some explosives could even break through the impassable dark rock. + All they need is a container and a well aimed shot. + + There is an elevator that goes to the surface, legends say that trees drop ores. + However monsters lurk near them and chopping them down is not recommended. + + Duly note, darkness is a hazard in the mines, stay near your lamps.. + + Step into the dimensional translocator and become a lumberjack with a passion to chop. + + Different kinds of trees, yield different kinds of ore and wood. + Yes, they seem to draw minerals out of the ground and manifesting it as "fruit". + Their yield increases with distance. Mining Productivity Research will increase chopping speed and backpack size. + + Beware, sometimes there are some bugs hiding underneath the trees. + Even dangerous traps have been encountered before. + + These mysterious ore trees don't burn very well, so do not worry if some of them catch on fire. + + ]]) + T.main_caption_color = {r = 150, g = 150, b = 0} + T.sub_caption_color = {r = 0, g = 150, b = 0} +end + +Event.on_init(on_init) Event.add(defines.events.on_player_changed_surface, changed_surface) Event.add(defines.events.on_market_item_purchased, on_market_item_purchased) Event.add(defines.events.on_player_used_capsule, on_player_used_capsule) @@ -1535,5 +2031,5 @@ Event.add(defines.events.on_entity_damaged, on_entity_damaged) Event.add(defines.events.on_pre_player_mined_item, pre_player_mined_item) Event.add(defines.events.on_marked_for_deconstruction, on_marked_for_deconstruction) Event.add(defines.events.on_chunk_generated, on_chunk_generated) -Event.add(defines.events.on_tick, on_tick) -Event.add(defines.events.on_player_joined_game, on_player_joined_game) \ No newline at end of file +Event.add(defines.events.on_tick, on_tick) +Event.add(defines.events.on_player_joined_game, on_player_joined_game) diff --git a/maps/cave_choppy/cave_miner_changelog.txt b/maps/cave_choppy/cave_miner_changelog.txt deleted file mode 100644 index 4765b48c..00000000 --- a/maps/cave_choppy/cave_miner_changelog.txt +++ /dev/null @@ -1,115 +0,0 @@ -0.21 -Ore bonus yield limited at the maximum biter difficulty. - -0.20 -a big part of the lootboxes are now hidden within the rocks - -0.19 -markets are now also fish bank terminals -fish can not be deconstructed anymore - -0.18 -cargo wagons, tanks and cars can now only detonate with less than 150 health - -0.17 -explosives are now a new game mechanic -loot rebalances -ore yield balance - -0.16 -oil should no longer clutter -increased rock destruction performance (maybe) -rocks now heal over time - -0.15 -players in vehicles no longer get hungry -faster mining speed but lower ore yield for more exploration -new fully staged chest loot - -0.14 -hunger over time reduced -reduced worms -ore vein spawn fix - -0.13 -biter attack events frequency reduced -players in vehicles are safe from random biter spawns -hunger gain from passing time reduced - -0.12 -reduced ore spill from rock destruction to reduce lagspike -ore veins are usually bigger now and can appear earlier -biters have a bit more damage against rocks -market adjustments -readded worms in main tunnels -crude oil is allowed to spawn a bit closer -access to the lakes and labyrinth areas should be a bit wider now -damage against huge rocks has been increased -biter spawn interval adjustments - -0.11 -mining speed buff -ore veins are more common - -0.10 -difficulty adjustments -spawn fixes - -0.09 -ore veins are more common with more yield -added info panel -added more worms -added extra bases in main mine shafts -adjusted running speed modifier -adjusted biter attack events -modified chest loot tables -mining trees now makes you earn fish - -0.08 -rock "labyrinth" biome -periodic biter attack events, the mines have become more dangerous -custom spawn trees - -0.07 -small chance that rocks might reveal an ore vein -rocks now always drop stone -players are now getting hungry - -0.06 -added stats gui -mining productivity research will now upgrade your backpack to ease your mining -fishing is more enjoyable now -rebalanced oil spots -spawn inventory loadout changes - -0.05 -biter & worm generation is now completely custom -biters claws now have a hard time to dig through the solid rock -secret shops spawn now in lake biomes -mining productivity research boosts cave rock mining speed for triple the value - -0.04 -biters no longer instantly surround the player - -0.03 -market nerf -darkness buff -mining productivity research now applies to cave rock mining -lakes now have fish -added cave treasure - -0.02 -space cleared around enemy spawners -fish market adjustments -maximum ore spill variable (rest gets inserted directly) -biters now also pop out of destroyed rocks -adjustments to ore chances -noise adjustments -different enemies now spawn the deeper you dig -enemy spawn pool redone -darkness is now a hazard, stay near lamps for survival -caves are now permanently dark -added lake biomes - -0.01 -diggy diggy hole \ No newline at end of file diff --git a/maps/cave_choppy/cave_miner_kaboomsticks.lua b/maps/cave_choppy/cave_miner_kaboomsticks.lua index 778d4c13..bc3f9640 100644 --- a/maps/cave_choppy/cave_miner_kaboomsticks.lua +++ b/maps/cave_choppy/cave_miner_kaboomsticks.lua @@ -1,155 +1,1803 @@ ---This will add a new game mechanic so that containers with explosives actually go boom when they get damaged. ---Made by MewMew - -local event = require 'utils.event' +local Event = require 'utils.event' local damage_per_explosive = 100 local empty_tile_damage_decay = 100 local out_of_map_tile_health = 1500 local circle_coordinates = { - [1] = {{x = 0, y = 0}}, - [2] = {{x = -1, y = -1},{x = 1, y = -1},{x = 0, y = -1},{x = -1, y = 0},{x = -1, y = 1},{x = 0, y = 1},{x = 1, y = 1},{x = 1, y = 0}}, - [3] = {{x = -2, y = -1},{x = -1, y = -2},{x = 1, y = -2},{x = 0, y = -2},{x = 2, y = -1},{x = -2, y = 1},{x = -2, y = 0},{x = 2, y = 1},{x = 2, y = 0},{x = -1, y = 2},{x = 1, y = 2},{x = 0, y = 2}}, - [4] = {{x = -1, y = -3},{x = 1, y = -3},{x = 0, y = -3},{x = -3, y = -1},{x = -2, y = -2},{x = 3, y = -1},{x = 2, y = -2},{x = -3, y = 0},{x = -3, y = 1},{x = 3, y = 1},{x = 3, y = 0},{x = -2, y = 2},{x = -1, y = 3},{x = 0, y = 3},{x = 1, y = 3},{x = 2, y = 2}}, - [5] = {{x = -3, y = -3},{x = -2, y = -3},{x = -1, y = -4},{x = -2, y = -4},{x = 1, y = -4},{x = 0, y = -4},{x = 2, y = -3},{x = 3, y = -3},{x = 2, y = -4},{x = -3, y = -2},{x = -4, y = -1},{x = -4, y = -2},{x = 3, y = -2},{x = 4, y = -1},{x = 4, y = -2},{x = -4, y = 1},{x = -4, y = 0},{x = 4, y = 1},{x = 4, y = 0},{x = -3, y = 3},{x = -3, y = 2},{x = -4, y = 2},{x = -2, y = 3},{x = 2, y = 3},{x = 3, y = 3},{x = 3, y = 2},{x = 4, y = 2},{x = -2, y = 4},{x = -1, y = 4},{x = 0, y = 4},{x = 1, y = 4},{x = 2, y = 4}}, - [6] = {{x = -1, y = -5},{x = -2, y = -5},{x = 1, y = -5},{x = 0, y = -5},{x = 2, y = -5},{x = -3, y = -4},{x = -4, y = -3},{x = 3, y = -4},{x = 4, y = -3},{x = -5, y = -1},{x = -5, y = -2},{x = 5, y = -1},{x = 5, y = -2},{x = -5, y = 1},{x = -5, y = 0},{x = 5, y = 1},{x = 5, y = 0},{x = -5, y = 2},{x = -4, y = 3},{x = 4, y = 3},{x = 5, y = 2},{x = -3, y = 4},{x = -2, y = 5},{x = -1, y = 5},{x = 0, y = 5},{x = 1, y = 5},{x = 3, y = 4},{x = 2, y = 5}}, - [7] = {{x = -4, y = -5},{x = -3, y = -5},{x = -2, y = -6},{x = -1, y = -6},{x = 0, y = -6},{x = 1, y = -6},{x = 3, y = -5},{x = 2, y = -6},{x = 4, y = -5},{x = -5, y = -4},{x = -5, y = -3},{x = -4, y = -4},{x = 4, y = -4},{x = 5, y = -4},{x = 5, y = -3},{x = -6, y = -1},{x = -6, y = -2},{x = 6, y = -1},{x = 6, y = -2},{x = -6, y = 1},{x = -6, y = 0},{x = 6, y = 1},{x = 6, y = 0},{x = -5, y = 3},{x = -6, y = 2},{x = 5, y = 3},{x = 6, y = 2},{x = -5, y = 4},{x = -4, y = 4},{x = -4, y = 5},{x = -3, y = 5},{x = 3, y = 5},{x = 4, y = 4},{x = 5, y = 4},{x = 4, y = 5},{x = -1, y = 6},{x = -2, y = 6},{x = 1, y = 6},{x = 0, y = 6},{x = 2, y = 6}}, - [8] = {{x = -1, y = -7},{x = -2, y = -7},{x = 1, y = -7},{x = 0, y = -7},{x = 2, y = -7},{x = -5, y = -5},{x = -4, y = -6},{x = -3, y = -6},{x = 3, y = -6},{x = 4, y = -6},{x = 5, y = -5},{x = -6, y = -3},{x = -6, y = -4},{x = 6, y = -4},{x = 6, y = -3},{x = -7, y = -1},{x = -7, y = -2},{x = 7, y = -1},{x = 7, y = -2},{x = -7, y = 1},{x = -7, y = 0},{x = 7, y = 1},{x = 7, y = 0},{x = -7, y = 2},{x = -6, y = 3},{x = 6, y = 3},{x = 7, y = 2},{x = -5, y = 5},{x = -6, y = 4},{x = 5, y = 5},{x = 6, y = 4},{x = -3, y = 6},{x = -4, y = 6},{x = -2, y = 7},{x = -1, y = 7},{x = 0, y = 7},{x = 1, y = 7},{x = 3, y = 6},{x = 2, y = 7},{x = 4, y = 6}}, - [9] = {{x = -4, y = -7},{x = -3, y = -7},{x = -2, y = -8},{x = -1, y = -8},{x = 0, y = -8},{x = 1, y = -8},{x = 3, y = -7},{x = 2, y = -8},{x = 4, y = -7},{x = -5, y = -6},{x = -6, y = -6},{x = -6, y = -5},{x = 5, y = -6},{x = 6, y = -5},{x = 6, y = -6},{x = -7, y = -4},{x = -7, y = -3},{x = 7, y = -4},{x = 7, y = -3},{x = -8, y = -2},{x = -8, y = -1},{x = 8, y = -1},{x = 8, y = -2},{x = -8, y = 0},{x = -8, y = 1},{x = 8, y = 1},{x = 8, y = 0},{x = -7, y = 3},{x = -8, y = 2},{x = 7, y = 3},{x = 8, y = 2},{x = -7, y = 4},{x = -6, y = 5},{x = 6, y = 5},{x = 7, y = 4},{x = -5, y = 6},{x = -6, y = 6},{x = -4, y = 7},{x = -3, y = 7},{x = 3, y = 7},{x = 5, y = 6},{x = 4, y = 7},{x = 6, y = 6},{x = -2, y = 8},{x = -1, y = 8},{x = 0, y = 8},{x = 1, y = 8},{x = 2, y = 8}}, - [10] = {{x = -3, y = -9},{x = -1, y = -9},{x = -2, y = -9},{x = 1, y = -9},{x = 0, y = -9},{x = 3, y = -9},{x = 2, y = -9},{x = -5, y = -7},{x = -6, y = -7},{x = -5, y = -8},{x = -4, y = -8},{x = -3, y = -8},{x = 3, y = -8},{x = 5, y = -7},{x = 5, y = -8},{x = 4, y = -8},{x = 6, y = -7},{x = -7, y = -5},{x = -7, y = -6},{x = -8, y = -5},{x = 7, y = -5},{x = 7, y = -6},{x = 8, y = -5},{x = -9, y = -3},{x = -8, y = -4},{x = -8, y = -3},{x = 8, y = -4},{x = 8, y = -3},{x = 9, y = -3},{x = -9, y = -1},{x = -9, y = -2},{x = 9, y = -1},{x = 9, y = -2},{x = -9, y = 1},{x = -9, y = 0},{x = 9, y = 1},{x = 9, y = 0},{x = -9, y = 3},{x = -9, y = 2},{x = -8, y = 3},{x = 8, y = 3},{x = 9, y = 3},{x = 9, y = 2},{x = -7, y = 5},{x = -8, y = 5},{x = -8, y = 4},{x = 7, y = 5},{x = 8, y = 5},{x = 8, y = 4},{x = -7, y = 6},{x = -6, y = 7},{x = -5, y = 7},{x = 5, y = 7},{x = 7, y = 6},{x = 6, y = 7},{x = -5, y = 8},{x = -4, y = 8},{x = -3, y = 8},{x = -3, y = 9},{x = -2, y = 9},{x = -1, y = 9},{x = 0, y = 9},{x = 1, y = 9},{x = 3, y = 8},{x = 2, y = 9},{x = 3, y = 9},{x = 5, y = 8},{x = 4, y = 8}}, - [11] = {{x = -5, y = -9},{x = -4, y = -9},{x = -3, y = -10},{x = -1, y = -10},{x = -2, y = -10},{x = 1, y = -10},{x = 0, y = -10},{x = 3, y = -10},{x = 2, y = -10},{x = 5, y = -9},{x = 4, y = -9},{x = -7, y = -7},{x = -6, y = -8},{x = 7, y = -7},{x = 6, y = -8},{x = -9, y = -5},{x = -8, y = -6},{x = 9, y = -5},{x = 8, y = -6},{x = -9, y = -4},{x = -10, y = -3},{x = 9, y = -4},{x = 10, y = -3},{x = -10, y = -2},{x = -10, y = -1},{x = 10, y = -1},{x = 10, y = -2},{x = -10, y = 0},{x = -10, y = 1},{x = 10, y = 1},{x = 10, y = 0},{x = -10, y = 2},{x = -10, y = 3},{x = 10, y = 3},{x = 10, y = 2},{x = -9, y = 4},{x = -9, y = 5},{x = 9, y = 5},{x = 9, y = 4},{x = -8, y = 6},{x = -7, y = 7},{x = 7, y = 7},{x = 8, y = 6},{x = -6, y = 8},{x = -5, y = 9},{x = -4, y = 9},{x = 4, y = 9},{x = 5, y = 9},{x = 6, y = 8},{x = -3, y = 10},{x = -2, y = 10},{x = -1, y = 10},{x = 0, y = 10},{x = 1, y = 10},{x = 2, y = 10},{x = 3, y = 10}}, - [12] = {{x = -3, y = -11},{x = -2, y = -11},{x = -1, y = -11},{x = 0, y = -11},{x = 1, y = -11},{x = 2, y = -11},{x = 3, y = -11},{x = -7, y = -9},{x = -6, y = -9},{x = -5, y = -10},{x = -4, y = -10},{x = 5, y = -10},{x = 4, y = -10},{x = 7, y = -9},{x = 6, y = -9},{x = -9, y = -7},{x = -7, y = -8},{x = -8, y = -8},{x = -8, y = -7},{x = 7, y = -8},{x = 8, y = -7},{x = 8, y = -8},{x = 9, y = -7},{x = -9, y = -6},{x = -10, y = -5},{x = 9, y = -6},{x = 10, y = -5},{x = -11, y = -3},{x = -10, y = -4},{x = 10, y = -4},{x = 11, y = -3},{x = -11, y = -2},{x = -11, y = -1},{x = 11, y = -1},{x = 11, y = -2},{x = -11, y = 0},{x = -11, y = 1},{x = 11, y = 1},{x = 11, y = 0},{x = -11, y = 2},{x = -11, y = 3},{x = 11, y = 3},{x = 11, y = 2},{x = -10, y = 5},{x = -10, y = 4},{x = 10, y = 5},{x = 10, y = 4},{x = -9, y = 7},{x = -9, y = 6},{x = -8, y = 7},{x = 8, y = 7},{x = 9, y = 7},{x = 9, y = 6},{x = -8, y = 8},{x = -7, y = 8},{x = -7, y = 9},{x = -6, y = 9},{x = 7, y = 8},{x = 7, y = 9},{x = 6, y = 9},{x = 8, y = 8},{x = -5, y = 10},{x = -4, y = 10},{x = -3, y = 11},{x = -2, y = 11},{x = -1, y = 11},{x = 0, y = 11},{x = 1, y = 11},{x = 2, y = 11},{x = 3, y = 11},{x = 4, y = 10},{x = 5, y = 10}}, - [13] = {{x = -5, y = -11},{x = -4, y = -11},{x = -3, y = -12},{x = -1, y = -12},{x = -2, y = -12},{x = 1, y = -12},{x = 0, y = -12},{x = 3, y = -12},{x = 2, y = -12},{x = 4, y = -11},{x = 5, y = -11},{x = -8, y = -9},{x = -7, y = -10},{x = -6, y = -10},{x = 6, y = -10},{x = 7, y = -10},{x = 8, y = -9},{x = -10, y = -7},{x = -9, y = -8},{x = 9, y = -8},{x = 10, y = -7},{x = -11, y = -5},{x = -10, y = -6},{x = 10, y = -6},{x = 11, y = -5},{x = -11, y = -4},{x = -12, y = -3},{x = 11, y = -4},{x = 12, y = -3},{x = -12, y = -1},{x = -12, y = -2},{x = 12, y = -1},{x = 12, y = -2},{x = -12, y = 1},{x = -12, y = 0},{x = 12, y = 1},{x = 12, y = 0},{x = -12, y = 3},{x = -12, y = 2},{x = 12, y = 3},{x = 12, y = 2},{x = -11, y = 5},{x = -11, y = 4},{x = 11, y = 4},{x = 11, y = 5},{x = -10, y = 7},{x = -10, y = 6},{x = 10, y = 6},{x = 10, y = 7},{x = -9, y = 8},{x = -8, y = 9},{x = 9, y = 8},{x = 8, y = 9},{x = -7, y = 10},{x = -5, y = 11},{x = -6, y = 10},{x = -4, y = 11},{x = 5, y = 11},{x = 4, y = 11},{x = 7, y = 10},{x = 6, y = 10},{x = -3, y = 12},{x = -2, y = 12},{x = -1, y = 12},{x = 0, y = 12},{x = 1, y = 12},{x = 2, y = 12},{x = 3, y = 12}}, - [14] = {{x = -3, y = -13},{x = -1, y = -13},{x = -2, y = -13},{x = 1, y = -13},{x = 0, y = -13},{x = 3, y = -13},{x = 2, y = -13},{x = -7, y = -11},{x = -6, y = -11},{x = -5, y = -12},{x = -6, y = -12},{x = -4, y = -12},{x = 5, y = -12},{x = 4, y = -12},{x = 7, y = -11},{x = 6, y = -11},{x = 6, y = -12},{x = -10, y = -9},{x = -9, y = -9},{x = -9, y = -10},{x = -8, y = -10},{x = 9, y = -9},{x = 9, y = -10},{x = 8, y = -10},{x = 10, y = -9},{x = -11, y = -7},{x = -10, y = -8},{x = 11, y = -7},{x = 10, y = -8},{x = -11, y = -6},{x = -12, y = -6},{x = -12, y = -5},{x = 11, y = -6},{x = 12, y = -6},{x = 12, y = -5},{x = -13, y = -3},{x = -12, y = -4},{x = 12, y = -4},{x = 13, y = -3},{x = -13, y = -2},{x = -13, y = -1},{x = 13, y = -1},{x = 13, y = -2},{x = -13, y = 0},{x = -13, y = 1},{x = 13, y = 1},{x = 13, y = 0},{x = -13, y = 2},{x = -13, y = 3},{x = 13, y = 3},{x = 13, y = 2},{x = -12, y = 5},{x = -12, y = 4},{x = 12, y = 5},{x = 12, y = 4},{x = -11, y = 6},{x = -11, y = 7},{x = -12, y = 6},{x = 11, y = 7},{x = 11, y = 6},{x = 12, y = 6},{x = -10, y = 8},{x = -10, y = 9},{x = -9, y = 9},{x = 9, y = 9},{x = 10, y = 9},{x = 10, y = 8},{x = -9, y = 10},{x = -8, y = 10},{x = -7, y = 11},{x = -6, y = 11},{x = 7, y = 11},{x = 6, y = 11},{x = 8, y = 10},{x = 9, y = 10},{x = -6, y = 12},{x = -5, y = 12},{x = -4, y = 12},{x = -3, y = 13},{x = -2, y = 13},{x = -1, y = 13},{x = 0, y = 13},{x = 1, y = 13},{x = 2, y = 13},{x = 3, y = 13},{x = 5, y = 12},{x = 4, y = 12},{x = 6, y = 12}}, - [15] = {{x = -5, y = -13},{x = -6, y = -13},{x = -4, y = -13},{x = -3, y = -14},{x = -1, y = -14},{x = -2, y = -14},{x = 1, y = -14},{x = 0, y = -14},{x = 3, y = -14},{x = 2, y = -14},{x = 5, y = -13},{x = 4, y = -13},{x = 6, y = -13},{x = -9, y = -11},{x = -8, y = -11},{x = -8, y = -12},{x = -7, y = -12},{x = 7, y = -12},{x = 8, y = -12},{x = 8, y = -11},{x = 9, y = -11},{x = -11, y = -9},{x = -10, y = -10},{x = 10, y = -10},{x = 11, y = -9},{x = -12, y = -7},{x = -11, y = -8},{x = -12, y = -8},{x = 11, y = -8},{x = 12, y = -8},{x = 12, y = -7},{x = -13, y = -5},{x = -13, y = -6},{x = 13, y = -5},{x = 13, y = -6},{x = -13, y = -4},{x = -14, y = -3},{x = 13, y = -4},{x = 14, y = -3},{x = -14, y = -2},{x = -14, y = -1},{x = 14, y = -1},{x = 14, y = -2},{x = -14, y = 0},{x = -14, y = 1},{x = 14, y = 1},{x = 14, y = 0},{x = -14, y = 2},{x = -14, y = 3},{x = 14, y = 3},{x = 14, y = 2},{x = -13, y = 4},{x = -13, y = 5},{x = 13, y = 5},{x = 13, y = 4},{x = -13, y = 6},{x = -12, y = 7},{x = 12, y = 7},{x = 13, y = 6},{x = -11, y = 9},{x = -11, y = 8},{x = -12, y = 8},{x = 11, y = 8},{x = 11, y = 9},{x = 12, y = 8},{x = -9, y = 11},{x = -10, y = 10},{x = -8, y = 11},{x = 9, y = 11},{x = 8, y = 11},{x = 10, y = 10},{x = -7, y = 12},{x = -8, y = 12},{x = -6, y = 13},{x = -5, y = 13},{x = -4, y = 13},{x = 5, y = 13},{x = 4, y = 13},{x = 7, y = 12},{x = 6, y = 13},{x = 8, y = 12},{x = -3, y = 14},{x = -2, y = 14},{x = -1, y = 14},{x = 0, y = 14},{x = 1, y = 14},{x = 2, y = 14},{x = 3, y = 14}}, - [16] = {{x = -3, y = -15},{x = -1, y = -15},{x = -2, y = -15},{x = 1, y = -15},{x = 0, y = -15},{x = 3, y = -15},{x = 2, y = -15},{x = -7, y = -13},{x = -8, y = -13},{x = -5, y = -14},{x = -6, y = -14},{x = -4, y = -14},{x = 5, y = -14},{x = 4, y = -14},{x = 7, y = -13},{x = 6, y = -14},{x = 8, y = -13},{x = -9, y = -12},{x = -10, y = -11},{x = 9, y = -12},{x = 10, y = -11},{x = -11, y = -10},{x = -12, y = -9},{x = 11, y = -10},{x = 12, y = -9},{x = -13, y = -7},{x = -13, y = -8},{x = 13, y = -7},{x = 13, y = -8},{x = -14, y = -6},{x = -14, y = -5},{x = 14, y = -5},{x = 14, y = -6},{x = -15, y = -3},{x = -14, y = -4},{x = 15, y = -3},{x = 14, y = -4},{x = -15, y = -2},{x = -15, y = -1},{x = 15, y = -1},{x = 15, y = -2},{x = -15, y = 0},{x = -15, y = 1},{x = 15, y = 1},{x = 15, y = 0},{x = -15, y = 2},{x = -15, y = 3},{x = 15, y = 3},{x = 15, y = 2},{x = -14, y = 5},{x = -14, y = 4},{x = 14, y = 5},{x = 14, y = 4},{x = -13, y = 7},{x = -14, y = 6},{x = 13, y = 7},{x = 14, y = 6},{x = -13, y = 8},{x = -12, y = 9},{x = 12, y = 9},{x = 13, y = 8},{x = -11, y = 10},{x = -10, y = 11},{x = 10, y = 11},{x = 11, y = 10},{x = -9, y = 12},{x = -8, y = 13},{x = -7, y = 13},{x = 7, y = 13},{x = 8, y = 13},{x = 9, y = 12},{x = -6, y = 14},{x = -5, y = 14},{x = -4, y = 14},{x = -3, y = 15},{x = -2, y = 15},{x = -1, y = 15},{x = 0, y = 15},{x = 1, y = 15},{x = 2, y = 15},{x = 3, y = 15},{x = 4, y = 14},{x = 5, y = 14},{x = 6, y = 14}}, - [17] = {{x = -5, y = -15},{x = -6, y = -15},{x = -3, y = -16},{x = -4, y = -16},{x = -4, y = -15},{x = -1, y = -16},{x = -2, y = -16},{x = 1, y = -16},{x = 0, y = -16},{x = 3, y = -16},{x = 2, y = -16},{x = 5, y = -15},{x = 4, y = -15},{x = 4, y = -16},{x = 6, y = -15},{x = -9, y = -13},{x = -10, y = -13},{x = -8, y = -14},{x = -7, y = -14},{x = 7, y = -14},{x = 9, y = -13},{x = 8, y = -14},{x = 10, y = -13},{x = -11, y = -12},{x = -11, y = -11},{x = -12, y = -11},{x = -10, y = -12},{x = 11, y = -11},{x = 11, y = -12},{x = 10, y = -12},{x = 12, y = -11},{x = -13, y = -10},{x = -13, y = -9},{x = -12, y = -10},{x = 13, y = -9},{x = 13, y = -10},{x = 12, y = -10},{x = -14, y = -7},{x = -14, y = -8},{x = 14, y = -7},{x = 14, y = -8},{x = -15, y = -6},{x = -15, y = -5},{x = 15, y = -5},{x = 15, y = -6},{x = -15, y = -4},{x = -16, y = -4},{x = -16, y = -3},{x = 15, y = -4},{x = 16, y = -3},{x = 16, y = -4},{x = -16, y = -2},{x = -16, y = -1},{x = 16, y = -1},{x = 16, y = -2},{x = -16, y = 0},{x = -16, y = 1},{x = 16, y = 1},{x = 16, y = 0},{x = -16, y = 2},{x = -16, y = 3},{x = 16, y = 3},{x = 16, y = 2},{x = -16, y = 4},{x = -15, y = 4},{x = -15, y = 5},{x = 15, y = 5},{x = 15, y = 4},{x = 16, y = 4},{x = -15, y = 6},{x = -14, y = 7},{x = 14, y = 7},{x = 15, y = 6},{x = -13, y = 9},{x = -14, y = 8},{x = 13, y = 9},{x = 14, y = 8},{x = -13, y = 10},{x = -12, y = 10},{x = -12, y = 11},{x = -11, y = 11},{x = 11, y = 11},{x = 12, y = 11},{x = 12, y = 10},{x = 13, y = 10},{x = -11, y = 12},{x = -10, y = 12},{x = -10, y = 13},{x = -9, y = 13},{x = 9, y = 13},{x = 10, y = 13},{x = 10, y = 12},{x = 11, y = 12},{x = -8, y = 14},{x = -7, y = 14},{x = -6, y = 15},{x = -5, y = 15},{x = -4, y = 15},{x = 4, y = 15},{x = 5, y = 15},{x = 7, y = 14},{x = 6, y = 15},{x = 8, y = 14},{x = -4, y = 16},{x = -3, y = 16},{x = -2, y = 16},{x = -1, y = 16},{x = 0, y = 16},{x = 1, y = 16},{x = 2, y = 16},{x = 3, y = 16},{x = 4, y = 16}}, - [18] = {{x = -3, y = -17},{x = -4, y = -17},{x = -1, y = -17},{x = -2, y = -17},{x = 1, y = -17},{x = 0, y = -17},{x = 3, y = -17},{x = 2, y = -17},{x = 4, y = -17},{x = -9, y = -15},{x = -8, y = -15},{x = -7, y = -15},{x = -7, y = -16},{x = -6, y = -16},{x = -5, y = -16},{x = 5, y = -16},{x = 7, y = -15},{x = 7, y = -16},{x = 6, y = -16},{x = 9, y = -15},{x = 8, y = -15},{x = -11, y = -13},{x = -10, y = -14},{x = -9, y = -14},{x = 9, y = -14},{x = 11, y = -13},{x = 10, y = -14},{x = -13, y = -11},{x = -12, y = -12},{x = 13, y = -11},{x = 12, y = -12},{x = -15, y = -9},{x = -14, y = -10},{x = -14, y = -9},{x = 14, y = -10},{x = 14, y = -9},{x = 15, y = -9},{x = -15, y = -8},{x = -15, y = -7},{x = -16, y = -7},{x = 15, y = -8},{x = 15, y = -7},{x = 16, y = -7},{x = -16, y = -6},{x = -16, y = -5},{x = 16, y = -5},{x = 16, y = -6},{x = -17, y = -3},{x = -17, y = -4},{x = 17, y = -3},{x = 17, y = -4},{x = -17, y = -1},{x = -17, y = -2},{x = 17, y = -1},{x = 17, y = -2},{x = -17, y = 1},{x = -17, y = 0},{x = 17, y = 1},{x = 17, y = 0},{x = -17, y = 3},{x = -17, y = 2},{x = 17, y = 3},{x = 17, y = 2},{x = -17, y = 4},{x = -16, y = 5},{x = 16, y = 5},{x = 17, y = 4},{x = -15, y = 7},{x = -16, y = 7},{x = -16, y = 6},{x = 15, y = 7},{x = 16, y = 7},{x = 16, y = 6},{x = -15, y = 9},{x = -15, y = 8},{x = -14, y = 9},{x = 14, y = 9},{x = 15, y = 9},{x = 15, y = 8},{x = -14, y = 10},{x = -13, y = 11},{x = 13, y = 11},{x = 14, y = 10},{x = -12, y = 12},{x = -11, y = 13},{x = 11, y = 13},{x = 12, y = 12},{x = -10, y = 14},{x = -9, y = 14},{x = -9, y = 15},{x = -8, y = 15},{x = -7, y = 15},{x = 7, y = 15},{x = 9, y = 14},{x = 9, y = 15},{x = 8, y = 15},{x = 10, y = 14},{x = -7, y = 16},{x = -6, y = 16},{x = -5, y = 16},{x = -4, y = 17},{x = -3, y = 17},{x = -2, y = 17},{x = -1, y = 17},{x = 0, y = 17},{x = 1, y = 17},{x = 2, y = 17},{x = 3, y = 17},{x = 4, y = 17},{x = 5, y = 16},{x = 6, y = 16},{x = 7, y = 16}}, - [19] = {{x = -7, y = -17},{x = -6, y = -17},{x = -5, y = -17},{x = -3, y = -18},{x = -4, y = -18},{x = -1, y = -18},{x = -2, y = -18},{x = 1, y = -18},{x = 0, y = -18},{x = 3, y = -18},{x = 2, y = -18},{x = 5, y = -17},{x = 4, y = -18},{x = 7, y = -17},{x = 6, y = -17},{x = -10, y = -15},{x = -9, y = -16},{x = -8, y = -16},{x = 9, y = -16},{x = 8, y = -16},{x = 10, y = -15},{x = -13, y = -13},{x = -11, y = -14},{x = -12, y = -14},{x = -12, y = -13},{x = 11, y = -14},{x = 13, y = -13},{x = 12, y = -13},{x = 12, y = -14},{x = -13, y = -12},{x = -14, y = -12},{x = -14, y = -11},{x = 13, y = -12},{x = 14, y = -11},{x = 14, y = -12},{x = -15, y = -10},{x = -16, y = -9},{x = 15, y = -10},{x = 16, y = -9},{x = -17, y = -7},{x = -16, y = -8},{x = 16, y = -8},{x = 17, y = -7},{x = -17, y = -5},{x = -17, y = -6},{x = 17, y = -6},{x = 17, y = -5},{x = -18, y = -3},{x = -18, y = -4},{x = 18, y = -4},{x = 18, y = -3},{x = -18, y = -1},{x = -18, y = -2},{x = 18, y = -2},{x = 18, y = -1},{x = -18, y = 1},{x = -18, y = 0},{x = 18, y = 0},{x = 18, y = 1},{x = -18, y = 3},{x = -18, y = 2},{x = 18, y = 2},{x = 18, y = 3},{x = -17, y = 5},{x = -18, y = 4},{x = 17, y = 5},{x = 18, y = 4},{x = -17, y = 7},{x = -17, y = 6},{x = 17, y = 7},{x = 17, y = 6},{x = -16, y = 9},{x = -16, y = 8},{x = 16, y = 9},{x = 16, y = 8},{x = -15, y = 10},{x = -14, y = 11},{x = 14, y = 11},{x = 15, y = 10},{x = -14, y = 12},{x = -13, y = 12},{x = -13, y = 13},{x = -12, y = 13},{x = 12, y = 13},{x = 13, y = 13},{x = 13, y = 12},{x = 14, y = 12},{x = -12, y = 14},{x = -11, y = 14},{x = -10, y = 15},{x = 10, y = 15},{x = 11, y = 14},{x = 12, y = 14},{x = -9, y = 16},{x = -7, y = 17},{x = -8, y = 16},{x = -5, y = 17},{x = -6, y = 17},{x = 5, y = 17},{x = 7, y = 17},{x = 6, y = 17},{x = 8, y = 16},{x = 9, y = 16},{x = -3, y = 18},{x = -4, y = 18},{x = -1, y = 18},{x = -2, y = 18},{x = 1, y = 18},{x = 0, y = 18},{x = 3, y = 18},{x = 2, y = 18},{x = 4, y = 18}}, - [20] = {{x = -3, y = -19},{x = -4, y = -19},{x = -1, y = -19},{x = -2, y = -19},{x = 1, y = -19},{x = 0, y = -19},{x = 3, y = -19},{x = 2, y = -19},{x = 4, y = -19},{x = -9, y = -17},{x = -7, y = -18},{x = -8, y = -17},{x = -5, y = -18},{x = -6, y = -18},{x = 5, y = -18},{x = 7, y = -18},{x = 6, y = -18},{x = 9, y = -17},{x = 8, y = -17},{x = -11, y = -16},{x = -11, y = -15},{x = -12, y = -15},{x = -10, y = -16},{x = 11, y = -15},{x = 11, y = -16},{x = 10, y = -16},{x = 12, y = -15},{x = -13, y = -14},{x = -14, y = -13},{x = 13, y = -14},{x = 14, y = -13},{x = -15, y = -12},{x = -15, y = -11},{x = -16, y = -11},{x = 15, y = -11},{x = 15, y = -12},{x = 16, y = -11},{x = -17, y = -9},{x = -16, y = -10},{x = 16, y = -10},{x = 17, y = -9},{x = -17, y = -8},{x = -18, y = -7},{x = 17, y = -8},{x = 18, y = -7},{x = -18, y = -6},{x = -18, y = -5},{x = 18, y = -5},{x = 18, y = -6},{x = -19, y = -4},{x = -19, y = -3},{x = 19, y = -3},{x = 19, y = -4},{x = -19, y = -2},{x = -19, y = -1},{x = 19, y = -1},{x = 19, y = -2},{x = -19, y = 0},{x = -19, y = 1},{x = 19, y = 1},{x = 19, y = 0},{x = -19, y = 2},{x = -19, y = 3},{x = 19, y = 3},{x = 19, y = 2},{x = -19, y = 4},{x = -18, y = 5},{x = 18, y = 5},{x = 19, y = 4},{x = -18, y = 7},{x = -18, y = 6},{x = 18, y = 7},{x = 18, y = 6},{x = -17, y = 9},{x = -17, y = 8},{x = 17, y = 9},{x = 17, y = 8},{x = -16, y = 10},{x = -16, y = 11},{x = -15, y = 11},{x = 15, y = 11},{x = 16, y = 11},{x = 16, y = 10},{x = -15, y = 12},{x = -14, y = 13},{x = 14, y = 13},{x = 15, y = 12},{x = -13, y = 14},{x = -12, y = 15},{x = -11, y = 15},{x = 11, y = 15},{x = 12, y = 15},{x = 13, y = 14},{x = -11, y = 16},{x = -10, y = 16},{x = -9, y = 17},{x = -8, y = 17},{x = 9, y = 17},{x = 8, y = 17},{x = 10, y = 16},{x = 11, y = 16},{x = -7, y = 18},{x = -5, y = 18},{x = -6, y = 18},{x = -4, y = 19},{x = -3, y = 19},{x = -2, y = 19},{x = -1, y = 19},{x = 0, y = 19},{x = 1, y = 19},{x = 2, y = 19},{x = 3, y = 19},{x = 4, y = 19},{x = 5, y = 18},{x = 7, y = 18},{x = 6, y = 18}}, - [21] = {{x = -7, y = -19},{x = -5, y = -19},{x = -6, y = -19},{x = -3, y = -20},{x = -4, y = -20},{x = -1, y = -20},{x = -2, y = -20},{x = 1, y = -20},{x = 0, y = -20},{x = 3, y = -20},{x = 2, y = -20},{x = 5, y = -19},{x = 4, y = -20},{x = 7, y = -19},{x = 6, y = -19},{x = -11, y = -17},{x = -10, y = -17},{x = -9, y = -18},{x = -8, y = -18},{x = 9, y = -18},{x = 8, y = -18},{x = 10, y = -17},{x = 11, y = -17},{x = -13, y = -15},{x = -14, y = -15},{x = -12, y = -16},{x = 13, y = -15},{x = 12, y = -16},{x = 14, y = -15},{x = -15, y = -14},{x = -15, y = -13},{x = -14, y = -14},{x = 15, y = -13},{x = 15, y = -14},{x = 14, y = -14},{x = -17, y = -11},{x = -16, y = -12},{x = 16, y = -12},{x = 17, y = -11},{x = -17, y = -10},{x = -18, y = -9},{x = 17, y = -10},{x = 18, y = -9},{x = -19, y = -7},{x = -18, y = -8},{x = 18, y = -8},{x = 19, y = -7},{x = -19, y = -6},{x = -19, y = -5},{x = 19, y = -6},{x = 19, y = -5},{x = -20, y = -4},{x = -20, y = -3},{x = 20, y = -3},{x = 20, y = -4},{x = -20, y = -2},{x = -20, y = -1},{x = 20, y = -1},{x = 20, y = -2},{x = -20, y = 0},{x = -20, y = 1},{x = 20, y = 1},{x = 20, y = 0},{x = -20, y = 2},{x = -20, y = 3},{x = 20, y = 3},{x = 20, y = 2},{x = -20, y = 4},{x = -19, y = 5},{x = 19, y = 5},{x = 20, y = 4},{x = -19, y = 7},{x = -19, y = 6},{x = 19, y = 7},{x = 19, y = 6},{x = -18, y = 9},{x = -18, y = 8},{x = 18, y = 9},{x = 18, y = 8},{x = -17, y = 11},{x = -17, y = 10},{x = 17, y = 11},{x = 17, y = 10},{x = -16, y = 12},{x = -15, y = 13},{x = 15, y = 13},{x = 16, y = 12},{x = -15, y = 14},{x = -14, y = 14},{x = -14, y = 15},{x = -13, y = 15},{x = 13, y = 15},{x = 14, y = 15},{x = 14, y = 14},{x = 15, y = 14},{x = -12, y = 16},{x = -11, y = 17},{x = -10, y = 17},{x = 11, y = 17},{x = 10, y = 17},{x = 12, y = 16},{x = -9, y = 18},{x = -8, y = 18},{x = -7, y = 19},{x = -5, y = 19},{x = -6, y = 19},{x = 5, y = 19},{x = 6, y = 19},{x = 7, y = 19},{x = 9, y = 18},{x = 8, y = 18},{x = -4, y = 20},{x = -3, y = 20},{x = -2, y = 20},{x = -1, y = 20},{x = 0, y = 20},{x = 1, y = 20},{x = 2, y = 20},{x = 3, y = 20},{x = 4, y = 20}}, - [22] = {{x = -3, y = -21},{x = -4, y = -21},{x = -1, y = -21},{x = -2, y = -21},{x = 1, y = -21},{x = 0, y = -21},{x = 3, y = -21},{x = 2, y = -21},{x = 4, y = -21},{x = -10, y = -19},{x = -9, y = -19},{x = -8, y = -19},{x = -7, y = -20},{x = -5, y = -20},{x = -6, y = -20},{x = 5, y = -20},{x = 7, y = -20},{x = 6, y = -20},{x = 9, y = -19},{x = 8, y = -19},{x = 10, y = -19},{x = -13, y = -17},{x = -12, y = -17},{x = -11, y = -18},{x = -10, y = -18},{x = 11, y = -18},{x = 10, y = -18},{x = 13, y = -17},{x = 12, y = -17},{x = -15, y = -15},{x = -13, y = -16},{x = -14, y = -16},{x = 13, y = -16},{x = 15, y = -15},{x = 14, y = -16},{x = -17, y = -13},{x = -16, y = -14},{x = -16, y = -13},{x = 17, y = -13},{x = 16, y = -13},{x = 16, y = -14},{x = -17, y = -12},{x = -18, y = -11},{x = 17, y = -12},{x = 18, y = -11},{x = -19, y = -10},{x = -19, y = -9},{x = -18, y = -10},{x = 18, y = -10},{x = 19, y = -10},{x = 19, y = -9},{x = -19, y = -8},{x = -20, y = -7},{x = 19, y = -8},{x = 20, y = -7},{x = -20, y = -6},{x = -20, y = -5},{x = 20, y = -6},{x = 20, y = -5},{x = -21, y = -4},{x = -21, y = -3},{x = 21, y = -3},{x = 21, y = -4},{x = -21, y = -2},{x = -21, y = -1},{x = 21, y = -1},{x = 21, y = -2},{x = -21, y = 0},{x = -21, y = 1},{x = 21, y = 1},{x = 21, y = 0},{x = -21, y = 2},{x = -21, y = 3},{x = 21, y = 3},{x = 21, y = 2},{x = -21, y = 4},{x = -20, y = 5},{x = 20, y = 5},{x = 21, y = 4},{x = -20, y = 7},{x = -20, y = 6},{x = 20, y = 7},{x = 20, y = 6},{x = -19, y = 9},{x = -19, y = 8},{x = 19, y = 9},{x = 19, y = 8},{x = -19, y = 10},{x = -18, y = 11},{x = -18, y = 10},{x = 18, y = 11},{x = 18, y = 10},{x = 19, y = 10},{x = -17, y = 13},{x = -17, y = 12},{x = -16, y = 13},{x = 16, y = 13},{x = 17, y = 13},{x = 17, y = 12},{x = -16, y = 14},{x = -15, y = 15},{x = 15, y = 15},{x = 16, y = 14},{x = -14, y = 16},{x = -13, y = 16},{x = -13, y = 17},{x = -12, y = 17},{x = 13, y = 16},{x = 13, y = 17},{x = 12, y = 17},{x = 14, y = 16},{x = -11, y = 18},{x = -10, y = 18},{x = -10, y = 19},{x = -9, y = 19},{x = -8, y = 19},{x = 9, y = 19},{x = 8, y = 19},{x = 11, y = 18},{x = 10, y = 18},{x = 10, y = 19},{x = -7, y = 20},{x = -6, y = 20},{x = -5, y = 20},{x = -3, y = 21},{x = -4, y = 21},{x = -1, y = 21},{x = -2, y = 21},{x = 1, y = 21},{x = 0, y = 21},{x = 3, y = 21},{x = 2, y = 21},{x = 4, y = 21},{x = 5, y = 20},{x = 7, y = 20},{x = 6, y = 20}}, - [23] = {{x = -8, y = -21},{x = -7, y = -21},{x = -6, y = -21},{x = -5, y = -21},{x = -3, y = -22},{x = -4, y = -22},{x = -1, y = -22},{x = -2, y = -22},{x = 1, y = -22},{x = 0, y = -22},{x = 3, y = -22},{x = 2, y = -22},{x = 5, y = -21},{x = 4, y = -22},{x = 7, y = -21},{x = 6, y = -21},{x = 8, y = -21},{x = -12, y = -19},{x = -11, y = -19},{x = -10, y = -20},{x = -9, y = -20},{x = -8, y = -20},{x = 9, y = -20},{x = 8, y = -20},{x = 11, y = -19},{x = 10, y = -20},{x = 12, y = -19},{x = -14, y = -17},{x = -13, y = -18},{x = -12, y = -18},{x = 13, y = -18},{x = 12, y = -18},{x = 14, y = -17},{x = -15, y = -16},{x = -16, y = -15},{x = 15, y = -16},{x = 16, y = -15},{x = -17, y = -14},{x = -18, y = -13},{x = 17, y = -14},{x = 18, y = -13},{x = -19, y = -12},{x = -19, y = -11},{x = -18, y = -12},{x = 18, y = -12},{x = 19, y = -12},{x = 19, y = -11},{x = -20, y = -10},{x = -20, y = -9},{x = 20, y = -10},{x = 20, y = -9},{x = -21, y = -8},{x = -21, y = -7},{x = -20, y = -8},{x = 20, y = -8},{x = 21, y = -8},{x = 21, y = -7},{x = -21, y = -6},{x = -21, y = -5},{x = 21, y = -6},{x = 21, y = -5},{x = -22, y = -4},{x = -22, y = -3},{x = 22, y = -3},{x = 22, y = -4},{x = -22, y = -2},{x = -22, y = -1},{x = 22, y = -1},{x = 22, y = -2},{x = -22, y = 0},{x = -22, y = 1},{x = 22, y = 1},{x = 22, y = 0},{x = -22, y = 2},{x = -22, y = 3},{x = 22, y = 3},{x = 22, y = 2},{x = -22, y = 4},{x = -21, y = 5},{x = 21, y = 5},{x = 22, y = 4},{x = -21, y = 7},{x = -21, y = 6},{x = 21, y = 7},{x = 21, y = 6},{x = -21, y = 8},{x = -20, y = 9},{x = -20, y = 8},{x = 20, y = 8},{x = 20, y = 9},{x = 21, y = 8},{x = -19, y = 11},{x = -20, y = 10},{x = 19, y = 11},{x = 20, y = 10},{x = -19, y = 12},{x = -18, y = 13},{x = -18, y = 12},{x = 18, y = 13},{x = 18, y = 12},{x = 19, y = 12},{x = -17, y = 14},{x = -16, y = 15},{x = 16, y = 15},{x = 17, y = 14},{x = -15, y = 16},{x = -14, y = 17},{x = 14, y = 17},{x = 15, y = 16},{x = -13, y = 18},{x = -12, y = 18},{x = -12, y = 19},{x = -11, y = 19},{x = 11, y = 19},{x = 13, y = 18},{x = 12, y = 18},{x = 12, y = 19},{x = -10, y = 20},{x = -9, y = 20},{x = -8, y = 20},{x = -8, y = 21},{x = -7, y = 21},{x = -6, y = 21},{x = -5, y = 21},{x = 5, y = 21},{x = 7, y = 21},{x = 6, y = 21},{x = 8, y = 20},{x = 9, y = 20},{x = 8, y = 21},{x = 10, y = 20},{x = -4, y = 22},{x = -3, y = 22},{x = -2, y = 22},{x = -1, y = 22},{x = 0, y = 22},{x = 1, y = 22},{x = 2, y = 22},{x = 3, y = 22},{x = 4, y = 22}} - } - + [1] = {{x = 0, y = 0}}, + [2] = { + {x = -1, y = -1}, + {x = 1, y = -1}, + {x = 0, y = -1}, + {x = -1, y = 0}, + {x = -1, y = 1}, + {x = 0, y = 1}, + {x = 1, y = 1}, + {x = 1, y = 0} + }, + [3] = { + {x = -2, y = -1}, + {x = -1, y = -2}, + {x = 1, y = -2}, + {x = 0, y = -2}, + {x = 2, y = -1}, + {x = -2, y = 1}, + {x = -2, y = 0}, + {x = 2, y = 1}, + {x = 2, y = 0}, + {x = -1, y = 2}, + {x = 1, y = 2}, + {x = 0, y = 2} + }, + [4] = { + {x = -1, y = -3}, + {x = 1, y = -3}, + {x = 0, y = -3}, + {x = -3, y = -1}, + {x = -2, y = -2}, + {x = 3, y = -1}, + {x = 2, y = -2}, + {x = -3, y = 0}, + {x = -3, y = 1}, + {x = 3, y = 1}, + {x = 3, y = 0}, + {x = -2, y = 2}, + {x = -1, y = 3}, + {x = 0, y = 3}, + {x = 1, y = 3}, + {x = 2, y = 2} + }, + [5] = { + {x = -3, y = -3}, + {x = -2, y = -3}, + {x = -1, y = -4}, + {x = -2, y = -4}, + {x = 1, y = -4}, + {x = 0, y = -4}, + {x = 2, y = -3}, + {x = 3, y = -3}, + {x = 2, y = -4}, + {x = -3, y = -2}, + {x = -4, y = -1}, + {x = -4, y = -2}, + {x = 3, y = -2}, + {x = 4, y = -1}, + {x = 4, y = -2}, + {x = -4, y = 1}, + {x = -4, y = 0}, + {x = 4, y = 1}, + {x = 4, y = 0}, + {x = -3, y = 3}, + {x = -3, y = 2}, + {x = -4, y = 2}, + {x = -2, y = 3}, + {x = 2, y = 3}, + {x = 3, y = 3}, + {x = 3, y = 2}, + {x = 4, y = 2}, + {x = -2, y = 4}, + {x = -1, y = 4}, + {x = 0, y = 4}, + {x = 1, y = 4}, + {x = 2, y = 4} + }, + [6] = { + {x = -1, y = -5}, + {x = -2, y = -5}, + {x = 1, y = -5}, + {x = 0, y = -5}, + {x = 2, y = -5}, + {x = -3, y = -4}, + {x = -4, y = -3}, + {x = 3, y = -4}, + {x = 4, y = -3}, + {x = -5, y = -1}, + {x = -5, y = -2}, + {x = 5, y = -1}, + {x = 5, y = -2}, + {x = -5, y = 1}, + {x = -5, y = 0}, + {x = 5, y = 1}, + {x = 5, y = 0}, + {x = -5, y = 2}, + {x = -4, y = 3}, + {x = 4, y = 3}, + {x = 5, y = 2}, + {x = -3, y = 4}, + {x = -2, y = 5}, + {x = -1, y = 5}, + {x = 0, y = 5}, + {x = 1, y = 5}, + {x = 3, y = 4}, + {x = 2, y = 5} + }, + [7] = { + {x = -4, y = -5}, + {x = -3, y = -5}, + {x = -2, y = -6}, + {x = -1, y = -6}, + {x = 0, y = -6}, + {x = 1, y = -6}, + {x = 3, y = -5}, + {x = 2, y = -6}, + {x = 4, y = -5}, + {x = -5, y = -4}, + {x = -5, y = -3}, + {x = -4, y = -4}, + {x = 4, y = -4}, + {x = 5, y = -4}, + {x = 5, y = -3}, + {x = -6, y = -1}, + {x = -6, y = -2}, + {x = 6, y = -1}, + {x = 6, y = -2}, + {x = -6, y = 1}, + {x = -6, y = 0}, + {x = 6, y = 1}, + {x = 6, y = 0}, + {x = -5, y = 3}, + {x = -6, y = 2}, + {x = 5, y = 3}, + {x = 6, y = 2}, + {x = -5, y = 4}, + {x = -4, y = 4}, + {x = -4, y = 5}, + {x = -3, y = 5}, + {x = 3, y = 5}, + {x = 4, y = 4}, + {x = 5, y = 4}, + {x = 4, y = 5}, + {x = -1, y = 6}, + {x = -2, y = 6}, + {x = 1, y = 6}, + {x = 0, y = 6}, + {x = 2, y = 6} + }, + [8] = { + {x = -1, y = -7}, + {x = -2, y = -7}, + {x = 1, y = -7}, + {x = 0, y = -7}, + {x = 2, y = -7}, + {x = -5, y = -5}, + {x = -4, y = -6}, + {x = -3, y = -6}, + {x = 3, y = -6}, + {x = 4, y = -6}, + {x = 5, y = -5}, + {x = -6, y = -3}, + {x = -6, y = -4}, + {x = 6, y = -4}, + {x = 6, y = -3}, + {x = -7, y = -1}, + {x = -7, y = -2}, + {x = 7, y = -1}, + {x = 7, y = -2}, + {x = -7, y = 1}, + {x = -7, y = 0}, + {x = 7, y = 1}, + {x = 7, y = 0}, + {x = -7, y = 2}, + {x = -6, y = 3}, + {x = 6, y = 3}, + {x = 7, y = 2}, + {x = -5, y = 5}, + {x = -6, y = 4}, + {x = 5, y = 5}, + {x = 6, y = 4}, + {x = -3, y = 6}, + {x = -4, y = 6}, + {x = -2, y = 7}, + {x = -1, y = 7}, + {x = 0, y = 7}, + {x = 1, y = 7}, + {x = 3, y = 6}, + {x = 2, y = 7}, + {x = 4, y = 6} + }, + [9] = { + {x = -4, y = -7}, + {x = -3, y = -7}, + {x = -2, y = -8}, + {x = -1, y = -8}, + {x = 0, y = -8}, + {x = 1, y = -8}, + {x = 3, y = -7}, + {x = 2, y = -8}, + {x = 4, y = -7}, + {x = -5, y = -6}, + {x = -6, y = -6}, + {x = -6, y = -5}, + {x = 5, y = -6}, + {x = 6, y = -5}, + {x = 6, y = -6}, + {x = -7, y = -4}, + {x = -7, y = -3}, + {x = 7, y = -4}, + {x = 7, y = -3}, + {x = -8, y = -2}, + {x = -8, y = -1}, + {x = 8, y = -1}, + {x = 8, y = -2}, + {x = -8, y = 0}, + {x = -8, y = 1}, + {x = 8, y = 1}, + {x = 8, y = 0}, + {x = -7, y = 3}, + {x = -8, y = 2}, + {x = 7, y = 3}, + {x = 8, y = 2}, + {x = -7, y = 4}, + {x = -6, y = 5}, + {x = 6, y = 5}, + {x = 7, y = 4}, + {x = -5, y = 6}, + {x = -6, y = 6}, + {x = -4, y = 7}, + {x = -3, y = 7}, + {x = 3, y = 7}, + {x = 5, y = 6}, + {x = 4, y = 7}, + {x = 6, y = 6}, + {x = -2, y = 8}, + {x = -1, y = 8}, + {x = 0, y = 8}, + {x = 1, y = 8}, + {x = 2, y = 8} + }, + [10] = { + {x = -3, y = -9}, + {x = -1, y = -9}, + {x = -2, y = -9}, + {x = 1, y = -9}, + {x = 0, y = -9}, + {x = 3, y = -9}, + {x = 2, y = -9}, + {x = -5, y = -7}, + {x = -6, y = -7}, + {x = -5, y = -8}, + {x = -4, y = -8}, + {x = -3, y = -8}, + {x = 3, y = -8}, + {x = 5, y = -7}, + {x = 5, y = -8}, + {x = 4, y = -8}, + {x = 6, y = -7}, + {x = -7, y = -5}, + {x = -7, y = -6}, + {x = -8, y = -5}, + {x = 7, y = -5}, + {x = 7, y = -6}, + {x = 8, y = -5}, + {x = -9, y = -3}, + {x = -8, y = -4}, + {x = -8, y = -3}, + {x = 8, y = -4}, + {x = 8, y = -3}, + {x = 9, y = -3}, + {x = -9, y = -1}, + {x = -9, y = -2}, + {x = 9, y = -1}, + {x = 9, y = -2}, + {x = -9, y = 1}, + {x = -9, y = 0}, + {x = 9, y = 1}, + {x = 9, y = 0}, + {x = -9, y = 3}, + {x = -9, y = 2}, + {x = -8, y = 3}, + {x = 8, y = 3}, + {x = 9, y = 3}, + {x = 9, y = 2}, + {x = -7, y = 5}, + {x = -8, y = 5}, + {x = -8, y = 4}, + {x = 7, y = 5}, + {x = 8, y = 5}, + {x = 8, y = 4}, + {x = -7, y = 6}, + {x = -6, y = 7}, + {x = -5, y = 7}, + {x = 5, y = 7}, + {x = 7, y = 6}, + {x = 6, y = 7}, + {x = -5, y = 8}, + {x = -4, y = 8}, + {x = -3, y = 8}, + {x = -3, y = 9}, + {x = -2, y = 9}, + {x = -1, y = 9}, + {x = 0, y = 9}, + {x = 1, y = 9}, + {x = 3, y = 8}, + {x = 2, y = 9}, + {x = 3, y = 9}, + {x = 5, y = 8}, + {x = 4, y = 8} + }, + [11] = { + {x = -5, y = -9}, + {x = -4, y = -9}, + {x = -3, y = -10}, + {x = -1, y = -10}, + {x = -2, y = -10}, + {x = 1, y = -10}, + {x = 0, y = -10}, + {x = 3, y = -10}, + {x = 2, y = -10}, + {x = 5, y = -9}, + {x = 4, y = -9}, + {x = -7, y = -7}, + {x = -6, y = -8}, + {x = 7, y = -7}, + {x = 6, y = -8}, + {x = -9, y = -5}, + {x = -8, y = -6}, + {x = 9, y = -5}, + {x = 8, y = -6}, + {x = -9, y = -4}, + {x = -10, y = -3}, + {x = 9, y = -4}, + {x = 10, y = -3}, + {x = -10, y = -2}, + {x = -10, y = -1}, + {x = 10, y = -1}, + {x = 10, y = -2}, + {x = -10, y = 0}, + {x = -10, y = 1}, + {x = 10, y = 1}, + {x = 10, y = 0}, + {x = -10, y = 2}, + {x = -10, y = 3}, + {x = 10, y = 3}, + {x = 10, y = 2}, + {x = -9, y = 4}, + {x = -9, y = 5}, + {x = 9, y = 5}, + {x = 9, y = 4}, + {x = -8, y = 6}, + {x = -7, y = 7}, + {x = 7, y = 7}, + {x = 8, y = 6}, + {x = -6, y = 8}, + {x = -5, y = 9}, + {x = -4, y = 9}, + {x = 4, y = 9}, + {x = 5, y = 9}, + {x = 6, y = 8}, + {x = -3, y = 10}, + {x = -2, y = 10}, + {x = -1, y = 10}, + {x = 0, y = 10}, + {x = 1, y = 10}, + {x = 2, y = 10}, + {x = 3, y = 10} + }, + [12] = { + {x = -3, y = -11}, + {x = -2, y = -11}, + {x = -1, y = -11}, + {x = 0, y = -11}, + {x = 1, y = -11}, + {x = 2, y = -11}, + {x = 3, y = -11}, + {x = -7, y = -9}, + {x = -6, y = -9}, + {x = -5, y = -10}, + {x = -4, y = -10}, + {x = 5, y = -10}, + {x = 4, y = -10}, + {x = 7, y = -9}, + {x = 6, y = -9}, + {x = -9, y = -7}, + {x = -7, y = -8}, + {x = -8, y = -8}, + {x = -8, y = -7}, + {x = 7, y = -8}, + {x = 8, y = -7}, + {x = 8, y = -8}, + {x = 9, y = -7}, + {x = -9, y = -6}, + {x = -10, y = -5}, + {x = 9, y = -6}, + {x = 10, y = -5}, + {x = -11, y = -3}, + {x = -10, y = -4}, + {x = 10, y = -4}, + {x = 11, y = -3}, + {x = -11, y = -2}, + {x = -11, y = -1}, + {x = 11, y = -1}, + {x = 11, y = -2}, + {x = -11, y = 0}, + {x = -11, y = 1}, + {x = 11, y = 1}, + {x = 11, y = 0}, + {x = -11, y = 2}, + {x = -11, y = 3}, + {x = 11, y = 3}, + {x = 11, y = 2}, + {x = -10, y = 5}, + {x = -10, y = 4}, + {x = 10, y = 5}, + {x = 10, y = 4}, + {x = -9, y = 7}, + {x = -9, y = 6}, + {x = -8, y = 7}, + {x = 8, y = 7}, + {x = 9, y = 7}, + {x = 9, y = 6}, + {x = -8, y = 8}, + {x = -7, y = 8}, + {x = -7, y = 9}, + {x = -6, y = 9}, + {x = 7, y = 8}, + {x = 7, y = 9}, + {x = 6, y = 9}, + {x = 8, y = 8}, + {x = -5, y = 10}, + {x = -4, y = 10}, + {x = -3, y = 11}, + {x = -2, y = 11}, + {x = -1, y = 11}, + {x = 0, y = 11}, + {x = 1, y = 11}, + {x = 2, y = 11}, + {x = 3, y = 11}, + {x = 4, y = 10}, + {x = 5, y = 10} + }, + [13] = { + {x = -5, y = -11}, + {x = -4, y = -11}, + {x = -3, y = -12}, + {x = -1, y = -12}, + {x = -2, y = -12}, + {x = 1, y = -12}, + {x = 0, y = -12}, + {x = 3, y = -12}, + {x = 2, y = -12}, + {x = 4, y = -11}, + {x = 5, y = -11}, + {x = -8, y = -9}, + {x = -7, y = -10}, + {x = -6, y = -10}, + {x = 6, y = -10}, + {x = 7, y = -10}, + {x = 8, y = -9}, + {x = -10, y = -7}, + {x = -9, y = -8}, + {x = 9, y = -8}, + {x = 10, y = -7}, + {x = -11, y = -5}, + {x = -10, y = -6}, + {x = 10, y = -6}, + {x = 11, y = -5}, + {x = -11, y = -4}, + {x = -12, y = -3}, + {x = 11, y = -4}, + {x = 12, y = -3}, + {x = -12, y = -1}, + {x = -12, y = -2}, + {x = 12, y = -1}, + {x = 12, y = -2}, + {x = -12, y = 1}, + {x = -12, y = 0}, + {x = 12, y = 1}, + {x = 12, y = 0}, + {x = -12, y = 3}, + {x = -12, y = 2}, + {x = 12, y = 3}, + {x = 12, y = 2}, + {x = -11, y = 5}, + {x = -11, y = 4}, + {x = 11, y = 4}, + {x = 11, y = 5}, + {x = -10, y = 7}, + {x = -10, y = 6}, + {x = 10, y = 6}, + {x = 10, y = 7}, + {x = -9, y = 8}, + {x = -8, y = 9}, + {x = 9, y = 8}, + {x = 8, y = 9}, + {x = -7, y = 10}, + {x = -5, y = 11}, + {x = -6, y = 10}, + {x = -4, y = 11}, + {x = 5, y = 11}, + {x = 4, y = 11}, + {x = 7, y = 10}, + {x = 6, y = 10}, + {x = -3, y = 12}, + {x = -2, y = 12}, + {x = -1, y = 12}, + {x = 0, y = 12}, + {x = 1, y = 12}, + {x = 2, y = 12}, + {x = 3, y = 12} + }, + [14] = { + {x = -3, y = -13}, + {x = -1, y = -13}, + {x = -2, y = -13}, + {x = 1, y = -13}, + {x = 0, y = -13}, + {x = 3, y = -13}, + {x = 2, y = -13}, + {x = -7, y = -11}, + {x = -6, y = -11}, + {x = -5, y = -12}, + {x = -6, y = -12}, + {x = -4, y = -12}, + {x = 5, y = -12}, + {x = 4, y = -12}, + {x = 7, y = -11}, + {x = 6, y = -11}, + {x = 6, y = -12}, + {x = -10, y = -9}, + {x = -9, y = -9}, + {x = -9, y = -10}, + {x = -8, y = -10}, + {x = 9, y = -9}, + {x = 9, y = -10}, + {x = 8, y = -10}, + {x = 10, y = -9}, + {x = -11, y = -7}, + {x = -10, y = -8}, + {x = 11, y = -7}, + {x = 10, y = -8}, + {x = -11, y = -6}, + {x = -12, y = -6}, + {x = -12, y = -5}, + {x = 11, y = -6}, + {x = 12, y = -6}, + {x = 12, y = -5}, + {x = -13, y = -3}, + {x = -12, y = -4}, + {x = 12, y = -4}, + {x = 13, y = -3}, + {x = -13, y = -2}, + {x = -13, y = -1}, + {x = 13, y = -1}, + {x = 13, y = -2}, + {x = -13, y = 0}, + {x = -13, y = 1}, + {x = 13, y = 1}, + {x = 13, y = 0}, + {x = -13, y = 2}, + {x = -13, y = 3}, + {x = 13, y = 3}, + {x = 13, y = 2}, + {x = -12, y = 5}, + {x = -12, y = 4}, + {x = 12, y = 5}, + {x = 12, y = 4}, + {x = -11, y = 6}, + {x = -11, y = 7}, + {x = -12, y = 6}, + {x = 11, y = 7}, + {x = 11, y = 6}, + {x = 12, y = 6}, + {x = -10, y = 8}, + {x = -10, y = 9}, + {x = -9, y = 9}, + {x = 9, y = 9}, + {x = 10, y = 9}, + {x = 10, y = 8}, + {x = -9, y = 10}, + {x = -8, y = 10}, + {x = -7, y = 11}, + {x = -6, y = 11}, + {x = 7, y = 11}, + {x = 6, y = 11}, + {x = 8, y = 10}, + {x = 9, y = 10}, + {x = -6, y = 12}, + {x = -5, y = 12}, + {x = -4, y = 12}, + {x = -3, y = 13}, + {x = -2, y = 13}, + {x = -1, y = 13}, + {x = 0, y = 13}, + {x = 1, y = 13}, + {x = 2, y = 13}, + {x = 3, y = 13}, + {x = 5, y = 12}, + {x = 4, y = 12}, + {x = 6, y = 12} + }, + [15] = { + {x = -5, y = -13}, + {x = -6, y = -13}, + {x = -4, y = -13}, + {x = -3, y = -14}, + {x = -1, y = -14}, + {x = -2, y = -14}, + {x = 1, y = -14}, + {x = 0, y = -14}, + {x = 3, y = -14}, + {x = 2, y = -14}, + {x = 5, y = -13}, + {x = 4, y = -13}, + {x = 6, y = -13}, + {x = -9, y = -11}, + {x = -8, y = -11}, + {x = -8, y = -12}, + {x = -7, y = -12}, + {x = 7, y = -12}, + {x = 8, y = -12}, + {x = 8, y = -11}, + {x = 9, y = -11}, + {x = -11, y = -9}, + {x = -10, y = -10}, + {x = 10, y = -10}, + {x = 11, y = -9}, + {x = -12, y = -7}, + {x = -11, y = -8}, + {x = -12, y = -8}, + {x = 11, y = -8}, + {x = 12, y = -8}, + {x = 12, y = -7}, + {x = -13, y = -5}, + {x = -13, y = -6}, + {x = 13, y = -5}, + {x = 13, y = -6}, + {x = -13, y = -4}, + {x = -14, y = -3}, + {x = 13, y = -4}, + {x = 14, y = -3}, + {x = -14, y = -2}, + {x = -14, y = -1}, + {x = 14, y = -1}, + {x = 14, y = -2}, + {x = -14, y = 0}, + {x = -14, y = 1}, + {x = 14, y = 1}, + {x = 14, y = 0}, + {x = -14, y = 2}, + {x = -14, y = 3}, + {x = 14, y = 3}, + {x = 14, y = 2}, + {x = -13, y = 4}, + {x = -13, y = 5}, + {x = 13, y = 5}, + {x = 13, y = 4}, + {x = -13, y = 6}, + {x = -12, y = 7}, + {x = 12, y = 7}, + {x = 13, y = 6}, + {x = -11, y = 9}, + {x = -11, y = 8}, + {x = -12, y = 8}, + {x = 11, y = 8}, + {x = 11, y = 9}, + {x = 12, y = 8}, + {x = -9, y = 11}, + {x = -10, y = 10}, + {x = -8, y = 11}, + {x = 9, y = 11}, + {x = 8, y = 11}, + {x = 10, y = 10}, + {x = -7, y = 12}, + {x = -8, y = 12}, + {x = -6, y = 13}, + {x = -5, y = 13}, + {x = -4, y = 13}, + {x = 5, y = 13}, + {x = 4, y = 13}, + {x = 7, y = 12}, + {x = 6, y = 13}, + {x = 8, y = 12}, + {x = -3, y = 14}, + {x = -2, y = 14}, + {x = -1, y = 14}, + {x = 0, y = 14}, + {x = 1, y = 14}, + {x = 2, y = 14}, + {x = 3, y = 14} + }, + [16] = { + {x = -3, y = -15}, + {x = -1, y = -15}, + {x = -2, y = -15}, + {x = 1, y = -15}, + {x = 0, y = -15}, + {x = 3, y = -15}, + {x = 2, y = -15}, + {x = -7, y = -13}, + {x = -8, y = -13}, + {x = -5, y = -14}, + {x = -6, y = -14}, + {x = -4, y = -14}, + {x = 5, y = -14}, + {x = 4, y = -14}, + {x = 7, y = -13}, + {x = 6, y = -14}, + {x = 8, y = -13}, + {x = -9, y = -12}, + {x = -10, y = -11}, + {x = 9, y = -12}, + {x = 10, y = -11}, + {x = -11, y = -10}, + {x = -12, y = -9}, + {x = 11, y = -10}, + {x = 12, y = -9}, + {x = -13, y = -7}, + {x = -13, y = -8}, + {x = 13, y = -7}, + {x = 13, y = -8}, + {x = -14, y = -6}, + {x = -14, y = -5}, + {x = 14, y = -5}, + {x = 14, y = -6}, + {x = -15, y = -3}, + {x = -14, y = -4}, + {x = 15, y = -3}, + {x = 14, y = -4}, + {x = -15, y = -2}, + {x = -15, y = -1}, + {x = 15, y = -1}, + {x = 15, y = -2}, + {x = -15, y = 0}, + {x = -15, y = 1}, + {x = 15, y = 1}, + {x = 15, y = 0}, + {x = -15, y = 2}, + {x = -15, y = 3}, + {x = 15, y = 3}, + {x = 15, y = 2}, + {x = -14, y = 5}, + {x = -14, y = 4}, + {x = 14, y = 5}, + {x = 14, y = 4}, + {x = -13, y = 7}, + {x = -14, y = 6}, + {x = 13, y = 7}, + {x = 14, y = 6}, + {x = -13, y = 8}, + {x = -12, y = 9}, + {x = 12, y = 9}, + {x = 13, y = 8}, + {x = -11, y = 10}, + {x = -10, y = 11}, + {x = 10, y = 11}, + {x = 11, y = 10}, + {x = -9, y = 12}, + {x = -8, y = 13}, + {x = -7, y = 13}, + {x = 7, y = 13}, + {x = 8, y = 13}, + {x = 9, y = 12}, + {x = -6, y = 14}, + {x = -5, y = 14}, + {x = -4, y = 14}, + {x = -3, y = 15}, + {x = -2, y = 15}, + {x = -1, y = 15}, + {x = 0, y = 15}, + {x = 1, y = 15}, + {x = 2, y = 15}, + {x = 3, y = 15}, + {x = 4, y = 14}, + {x = 5, y = 14}, + {x = 6, y = 14} + }, + [17] = { + {x = -5, y = -15}, + {x = -6, y = -15}, + {x = -3, y = -16}, + {x = -4, y = -16}, + {x = -4, y = -15}, + {x = -1, y = -16}, + {x = -2, y = -16}, + {x = 1, y = -16}, + {x = 0, y = -16}, + {x = 3, y = -16}, + {x = 2, y = -16}, + {x = 5, y = -15}, + {x = 4, y = -15}, + {x = 4, y = -16}, + {x = 6, y = -15}, + {x = -9, y = -13}, + {x = -10, y = -13}, + {x = -8, y = -14}, + {x = -7, y = -14}, + {x = 7, y = -14}, + {x = 9, y = -13}, + {x = 8, y = -14}, + {x = 10, y = -13}, + {x = -11, y = -12}, + {x = -11, y = -11}, + {x = -12, y = -11}, + {x = -10, y = -12}, + {x = 11, y = -11}, + {x = 11, y = -12}, + {x = 10, y = -12}, + {x = 12, y = -11}, + {x = -13, y = -10}, + {x = -13, y = -9}, + {x = -12, y = -10}, + {x = 13, y = -9}, + {x = 13, y = -10}, + {x = 12, y = -10}, + {x = -14, y = -7}, + {x = -14, y = -8}, + {x = 14, y = -7}, + {x = 14, y = -8}, + {x = -15, y = -6}, + {x = -15, y = -5}, + {x = 15, y = -5}, + {x = 15, y = -6}, + {x = -15, y = -4}, + {x = -16, y = -4}, + {x = -16, y = -3}, + {x = 15, y = -4}, + {x = 16, y = -3}, + {x = 16, y = -4}, + {x = -16, y = -2}, + {x = -16, y = -1}, + {x = 16, y = -1}, + {x = 16, y = -2}, + {x = -16, y = 0}, + {x = -16, y = 1}, + {x = 16, y = 1}, + {x = 16, y = 0}, + {x = -16, y = 2}, + {x = -16, y = 3}, + {x = 16, y = 3}, + {x = 16, y = 2}, + {x = -16, y = 4}, + {x = -15, y = 4}, + {x = -15, y = 5}, + {x = 15, y = 5}, + {x = 15, y = 4}, + {x = 16, y = 4}, + {x = -15, y = 6}, + {x = -14, y = 7}, + {x = 14, y = 7}, + {x = 15, y = 6}, + {x = -13, y = 9}, + {x = -14, y = 8}, + {x = 13, y = 9}, + {x = 14, y = 8}, + {x = -13, y = 10}, + {x = -12, y = 10}, + {x = -12, y = 11}, + {x = -11, y = 11}, + {x = 11, y = 11}, + {x = 12, y = 11}, + {x = 12, y = 10}, + {x = 13, y = 10}, + {x = -11, y = 12}, + {x = -10, y = 12}, + {x = -10, y = 13}, + {x = -9, y = 13}, + {x = 9, y = 13}, + {x = 10, y = 13}, + {x = 10, y = 12}, + {x = 11, y = 12}, + {x = -8, y = 14}, + {x = -7, y = 14}, + {x = -6, y = 15}, + {x = -5, y = 15}, + {x = -4, y = 15}, + {x = 4, y = 15}, + {x = 5, y = 15}, + {x = 7, y = 14}, + {x = 6, y = 15}, + {x = 8, y = 14}, + {x = -4, y = 16}, + {x = -3, y = 16}, + {x = -2, y = 16}, + {x = -1, y = 16}, + {x = 0, y = 16}, + {x = 1, y = 16}, + {x = 2, y = 16}, + {x = 3, y = 16}, + {x = 4, y = 16} + }, + [18] = { + {x = -3, y = -17}, + {x = -4, y = -17}, + {x = -1, y = -17}, + {x = -2, y = -17}, + {x = 1, y = -17}, + {x = 0, y = -17}, + {x = 3, y = -17}, + {x = 2, y = -17}, + {x = 4, y = -17}, + {x = -9, y = -15}, + {x = -8, y = -15}, + {x = -7, y = -15}, + {x = -7, y = -16}, + {x = -6, y = -16}, + {x = -5, y = -16}, + {x = 5, y = -16}, + {x = 7, y = -15}, + {x = 7, y = -16}, + {x = 6, y = -16}, + {x = 9, y = -15}, + {x = 8, y = -15}, + {x = -11, y = -13}, + {x = -10, y = -14}, + {x = -9, y = -14}, + {x = 9, y = -14}, + {x = 11, y = -13}, + {x = 10, y = -14}, + {x = -13, y = -11}, + {x = -12, y = -12}, + {x = 13, y = -11}, + {x = 12, y = -12}, + {x = -15, y = -9}, + {x = -14, y = -10}, + {x = -14, y = -9}, + {x = 14, y = -10}, + {x = 14, y = -9}, + {x = 15, y = -9}, + {x = -15, y = -8}, + {x = -15, y = -7}, + {x = -16, y = -7}, + {x = 15, y = -8}, + {x = 15, y = -7}, + {x = 16, y = -7}, + {x = -16, y = -6}, + {x = -16, y = -5}, + {x = 16, y = -5}, + {x = 16, y = -6}, + {x = -17, y = -3}, + {x = -17, y = -4}, + {x = 17, y = -3}, + {x = 17, y = -4}, + {x = -17, y = -1}, + {x = -17, y = -2}, + {x = 17, y = -1}, + {x = 17, y = -2}, + {x = -17, y = 1}, + {x = -17, y = 0}, + {x = 17, y = 1}, + {x = 17, y = 0}, + {x = -17, y = 3}, + {x = -17, y = 2}, + {x = 17, y = 3}, + {x = 17, y = 2}, + {x = -17, y = 4}, + {x = -16, y = 5}, + {x = 16, y = 5}, + {x = 17, y = 4}, + {x = -15, y = 7}, + {x = -16, y = 7}, + {x = -16, y = 6}, + {x = 15, y = 7}, + {x = 16, y = 7}, + {x = 16, y = 6}, + {x = -15, y = 9}, + {x = -15, y = 8}, + {x = -14, y = 9}, + {x = 14, y = 9}, + {x = 15, y = 9}, + {x = 15, y = 8}, + {x = -14, y = 10}, + {x = -13, y = 11}, + {x = 13, y = 11}, + {x = 14, y = 10}, + {x = -12, y = 12}, + {x = -11, y = 13}, + {x = 11, y = 13}, + {x = 12, y = 12}, + {x = -10, y = 14}, + {x = -9, y = 14}, + {x = -9, y = 15}, + {x = -8, y = 15}, + {x = -7, y = 15}, + {x = 7, y = 15}, + {x = 9, y = 14}, + {x = 9, y = 15}, + {x = 8, y = 15}, + {x = 10, y = 14}, + {x = -7, y = 16}, + {x = -6, y = 16}, + {x = -5, y = 16}, + {x = -4, y = 17}, + {x = -3, y = 17}, + {x = -2, y = 17}, + {x = -1, y = 17}, + {x = 0, y = 17}, + {x = 1, y = 17}, + {x = 2, y = 17}, + {x = 3, y = 17}, + {x = 4, y = 17}, + {x = 5, y = 16}, + {x = 6, y = 16}, + {x = 7, y = 16} + }, + [19] = { + {x = -7, y = -17}, + {x = -6, y = -17}, + {x = -5, y = -17}, + {x = -3, y = -18}, + {x = -4, y = -18}, + {x = -1, y = -18}, + {x = -2, y = -18}, + {x = 1, y = -18}, + {x = 0, y = -18}, + {x = 3, y = -18}, + {x = 2, y = -18}, + {x = 5, y = -17}, + {x = 4, y = -18}, + {x = 7, y = -17}, + {x = 6, y = -17}, + {x = -10, y = -15}, + {x = -9, y = -16}, + {x = -8, y = -16}, + {x = 9, y = -16}, + {x = 8, y = -16}, + {x = 10, y = -15}, + {x = -13, y = -13}, + {x = -11, y = -14}, + {x = -12, y = -14}, + {x = -12, y = -13}, + {x = 11, y = -14}, + {x = 13, y = -13}, + {x = 12, y = -13}, + {x = 12, y = -14}, + {x = -13, y = -12}, + {x = -14, y = -12}, + {x = -14, y = -11}, + {x = 13, y = -12}, + {x = 14, y = -11}, + {x = 14, y = -12}, + {x = -15, y = -10}, + {x = -16, y = -9}, + {x = 15, y = -10}, + {x = 16, y = -9}, + {x = -17, y = -7}, + {x = -16, y = -8}, + {x = 16, y = -8}, + {x = 17, y = -7}, + {x = -17, y = -5}, + {x = -17, y = -6}, + {x = 17, y = -6}, + {x = 17, y = -5}, + {x = -18, y = -3}, + {x = -18, y = -4}, + {x = 18, y = -4}, + {x = 18, y = -3}, + {x = -18, y = -1}, + {x = -18, y = -2}, + {x = 18, y = -2}, + {x = 18, y = -1}, + {x = -18, y = 1}, + {x = -18, y = 0}, + {x = 18, y = 0}, + {x = 18, y = 1}, + {x = -18, y = 3}, + {x = -18, y = 2}, + {x = 18, y = 2}, + {x = 18, y = 3}, + {x = -17, y = 5}, + {x = -18, y = 4}, + {x = 17, y = 5}, + {x = 18, y = 4}, + {x = -17, y = 7}, + {x = -17, y = 6}, + {x = 17, y = 7}, + {x = 17, y = 6}, + {x = -16, y = 9}, + {x = -16, y = 8}, + {x = 16, y = 9}, + {x = 16, y = 8}, + {x = -15, y = 10}, + {x = -14, y = 11}, + {x = 14, y = 11}, + {x = 15, y = 10}, + {x = -14, y = 12}, + {x = -13, y = 12}, + {x = -13, y = 13}, + {x = -12, y = 13}, + {x = 12, y = 13}, + {x = 13, y = 13}, + {x = 13, y = 12}, + {x = 14, y = 12}, + {x = -12, y = 14}, + {x = -11, y = 14}, + {x = -10, y = 15}, + {x = 10, y = 15}, + {x = 11, y = 14}, + {x = 12, y = 14}, + {x = -9, y = 16}, + {x = -7, y = 17}, + {x = -8, y = 16}, + {x = -5, y = 17}, + {x = -6, y = 17}, + {x = 5, y = 17}, + {x = 7, y = 17}, + {x = 6, y = 17}, + {x = 8, y = 16}, + {x = 9, y = 16}, + {x = -3, y = 18}, + {x = -4, y = 18}, + {x = -1, y = 18}, + {x = -2, y = 18}, + {x = 1, y = 18}, + {x = 0, y = 18}, + {x = 3, y = 18}, + {x = 2, y = 18}, + {x = 4, y = 18} + }, + [20] = { + {x = -3, y = -19}, + {x = -4, y = -19}, + {x = -1, y = -19}, + {x = -2, y = -19}, + {x = 1, y = -19}, + {x = 0, y = -19}, + {x = 3, y = -19}, + {x = 2, y = -19}, + {x = 4, y = -19}, + {x = -9, y = -17}, + {x = -7, y = -18}, + {x = -8, y = -17}, + {x = -5, y = -18}, + {x = -6, y = -18}, + {x = 5, y = -18}, + {x = 7, y = -18}, + {x = 6, y = -18}, + {x = 9, y = -17}, + {x = 8, y = -17}, + {x = -11, y = -16}, + {x = -11, y = -15}, + {x = -12, y = -15}, + {x = -10, y = -16}, + {x = 11, y = -15}, + {x = 11, y = -16}, + {x = 10, y = -16}, + {x = 12, y = -15}, + {x = -13, y = -14}, + {x = -14, y = -13}, + {x = 13, y = -14}, + {x = 14, y = -13}, + {x = -15, y = -12}, + {x = -15, y = -11}, + {x = -16, y = -11}, + {x = 15, y = -11}, + {x = 15, y = -12}, + {x = 16, y = -11}, + {x = -17, y = -9}, + {x = -16, y = -10}, + {x = 16, y = -10}, + {x = 17, y = -9}, + {x = -17, y = -8}, + {x = -18, y = -7}, + {x = 17, y = -8}, + {x = 18, y = -7}, + {x = -18, y = -6}, + {x = -18, y = -5}, + {x = 18, y = -5}, + {x = 18, y = -6}, + {x = -19, y = -4}, + {x = -19, y = -3}, + {x = 19, y = -3}, + {x = 19, y = -4}, + {x = -19, y = -2}, + {x = -19, y = -1}, + {x = 19, y = -1}, + {x = 19, y = -2}, + {x = -19, y = 0}, + {x = -19, y = 1}, + {x = 19, y = 1}, + {x = 19, y = 0}, + {x = -19, y = 2}, + {x = -19, y = 3}, + {x = 19, y = 3}, + {x = 19, y = 2}, + {x = -19, y = 4}, + {x = -18, y = 5}, + {x = 18, y = 5}, + {x = 19, y = 4}, + {x = -18, y = 7}, + {x = -18, y = 6}, + {x = 18, y = 7}, + {x = 18, y = 6}, + {x = -17, y = 9}, + {x = -17, y = 8}, + {x = 17, y = 9}, + {x = 17, y = 8}, + {x = -16, y = 10}, + {x = -16, y = 11}, + {x = -15, y = 11}, + {x = 15, y = 11}, + {x = 16, y = 11}, + {x = 16, y = 10}, + {x = -15, y = 12}, + {x = -14, y = 13}, + {x = 14, y = 13}, + {x = 15, y = 12}, + {x = -13, y = 14}, + {x = -12, y = 15}, + {x = -11, y = 15}, + {x = 11, y = 15}, + {x = 12, y = 15}, + {x = 13, y = 14}, + {x = -11, y = 16}, + {x = -10, y = 16}, + {x = -9, y = 17}, + {x = -8, y = 17}, + {x = 9, y = 17}, + {x = 8, y = 17}, + {x = 10, y = 16}, + {x = 11, y = 16}, + {x = -7, y = 18}, + {x = -5, y = 18}, + {x = -6, y = 18}, + {x = -4, y = 19}, + {x = -3, y = 19}, + {x = -2, y = 19}, + {x = -1, y = 19}, + {x = 0, y = 19}, + {x = 1, y = 19}, + {x = 2, y = 19}, + {x = 3, y = 19}, + {x = 4, y = 19}, + {x = 5, y = 18}, + {x = 7, y = 18}, + {x = 6, y = 18} + }, + [21] = { + {x = -7, y = -19}, + {x = -5, y = -19}, + {x = -6, y = -19}, + {x = -3, y = -20}, + {x = -4, y = -20}, + {x = -1, y = -20}, + {x = -2, y = -20}, + {x = 1, y = -20}, + {x = 0, y = -20}, + {x = 3, y = -20}, + {x = 2, y = -20}, + {x = 5, y = -19}, + {x = 4, y = -20}, + {x = 7, y = -19}, + {x = 6, y = -19}, + {x = -11, y = -17}, + {x = -10, y = -17}, + {x = -9, y = -18}, + {x = -8, y = -18}, + {x = 9, y = -18}, + {x = 8, y = -18}, + {x = 10, y = -17}, + {x = 11, y = -17}, + {x = -13, y = -15}, + {x = -14, y = -15}, + {x = -12, y = -16}, + {x = 13, y = -15}, + {x = 12, y = -16}, + {x = 14, y = -15}, + {x = -15, y = -14}, + {x = -15, y = -13}, + {x = -14, y = -14}, + {x = 15, y = -13}, + {x = 15, y = -14}, + {x = 14, y = -14}, + {x = -17, y = -11}, + {x = -16, y = -12}, + {x = 16, y = -12}, + {x = 17, y = -11}, + {x = -17, y = -10}, + {x = -18, y = -9}, + {x = 17, y = -10}, + {x = 18, y = -9}, + {x = -19, y = -7}, + {x = -18, y = -8}, + {x = 18, y = -8}, + {x = 19, y = -7}, + {x = -19, y = -6}, + {x = -19, y = -5}, + {x = 19, y = -6}, + {x = 19, y = -5}, + {x = -20, y = -4}, + {x = -20, y = -3}, + {x = 20, y = -3}, + {x = 20, y = -4}, + {x = -20, y = -2}, + {x = -20, y = -1}, + {x = 20, y = -1}, + {x = 20, y = -2}, + {x = -20, y = 0}, + {x = -20, y = 1}, + {x = 20, y = 1}, + {x = 20, y = 0}, + {x = -20, y = 2}, + {x = -20, y = 3}, + {x = 20, y = 3}, + {x = 20, y = 2}, + {x = -20, y = 4}, + {x = -19, y = 5}, + {x = 19, y = 5}, + {x = 20, y = 4}, + {x = -19, y = 7}, + {x = -19, y = 6}, + {x = 19, y = 7}, + {x = 19, y = 6}, + {x = -18, y = 9}, + {x = -18, y = 8}, + {x = 18, y = 9}, + {x = 18, y = 8}, + {x = -17, y = 11}, + {x = -17, y = 10}, + {x = 17, y = 11}, + {x = 17, y = 10}, + {x = -16, y = 12}, + {x = -15, y = 13}, + {x = 15, y = 13}, + {x = 16, y = 12}, + {x = -15, y = 14}, + {x = -14, y = 14}, + {x = -14, y = 15}, + {x = -13, y = 15}, + {x = 13, y = 15}, + {x = 14, y = 15}, + {x = 14, y = 14}, + {x = 15, y = 14}, + {x = -12, y = 16}, + {x = -11, y = 17}, + {x = -10, y = 17}, + {x = 11, y = 17}, + {x = 10, y = 17}, + {x = 12, y = 16}, + {x = -9, y = 18}, + {x = -8, y = 18}, + {x = -7, y = 19}, + {x = -5, y = 19}, + {x = -6, y = 19}, + {x = 5, y = 19}, + {x = 6, y = 19}, + {x = 7, y = 19}, + {x = 9, y = 18}, + {x = 8, y = 18}, + {x = -4, y = 20}, + {x = -3, y = 20}, + {x = -2, y = 20}, + {x = -1, y = 20}, + {x = 0, y = 20}, + {x = 1, y = 20}, + {x = 2, y = 20}, + {x = 3, y = 20}, + {x = 4, y = 20} + }, + [22] = { + {x = -3, y = -21}, + {x = -4, y = -21}, + {x = -1, y = -21}, + {x = -2, y = -21}, + {x = 1, y = -21}, + {x = 0, y = -21}, + {x = 3, y = -21}, + {x = 2, y = -21}, + {x = 4, y = -21}, + {x = -10, y = -19}, + {x = -9, y = -19}, + {x = -8, y = -19}, + {x = -7, y = -20}, + {x = -5, y = -20}, + {x = -6, y = -20}, + {x = 5, y = -20}, + {x = 7, y = -20}, + {x = 6, y = -20}, + {x = 9, y = -19}, + {x = 8, y = -19}, + {x = 10, y = -19}, + {x = -13, y = -17}, + {x = -12, y = -17}, + {x = -11, y = -18}, + {x = -10, y = -18}, + {x = 11, y = -18}, + {x = 10, y = -18}, + {x = 13, y = -17}, + {x = 12, y = -17}, + {x = -15, y = -15}, + {x = -13, y = -16}, + {x = -14, y = -16}, + {x = 13, y = -16}, + {x = 15, y = -15}, + {x = 14, y = -16}, + {x = -17, y = -13}, + {x = -16, y = -14}, + {x = -16, y = -13}, + {x = 17, y = -13}, + {x = 16, y = -13}, + {x = 16, y = -14}, + {x = -17, y = -12}, + {x = -18, y = -11}, + {x = 17, y = -12}, + {x = 18, y = -11}, + {x = -19, y = -10}, + {x = -19, y = -9}, + {x = -18, y = -10}, + {x = 18, y = -10}, + {x = 19, y = -10}, + {x = 19, y = -9}, + {x = -19, y = -8}, + {x = -20, y = -7}, + {x = 19, y = -8}, + {x = 20, y = -7}, + {x = -20, y = -6}, + {x = -20, y = -5}, + {x = 20, y = -6}, + {x = 20, y = -5}, + {x = -21, y = -4}, + {x = -21, y = -3}, + {x = 21, y = -3}, + {x = 21, y = -4}, + {x = -21, y = -2}, + {x = -21, y = -1}, + {x = 21, y = -1}, + {x = 21, y = -2}, + {x = -21, y = 0}, + {x = -21, y = 1}, + {x = 21, y = 1}, + {x = 21, y = 0}, + {x = -21, y = 2}, + {x = -21, y = 3}, + {x = 21, y = 3}, + {x = 21, y = 2}, + {x = -21, y = 4}, + {x = -20, y = 5}, + {x = 20, y = 5}, + {x = 21, y = 4}, + {x = -20, y = 7}, + {x = -20, y = 6}, + {x = 20, y = 7}, + {x = 20, y = 6}, + {x = -19, y = 9}, + {x = -19, y = 8}, + {x = 19, y = 9}, + {x = 19, y = 8}, + {x = -19, y = 10}, + {x = -18, y = 11}, + {x = -18, y = 10}, + {x = 18, y = 11}, + {x = 18, y = 10}, + {x = 19, y = 10}, + {x = -17, y = 13}, + {x = -17, y = 12}, + {x = -16, y = 13}, + {x = 16, y = 13}, + {x = 17, y = 13}, + {x = 17, y = 12}, + {x = -16, y = 14}, + {x = -15, y = 15}, + {x = 15, y = 15}, + {x = 16, y = 14}, + {x = -14, y = 16}, + {x = -13, y = 16}, + {x = -13, y = 17}, + {x = -12, y = 17}, + {x = 13, y = 16}, + {x = 13, y = 17}, + {x = 12, y = 17}, + {x = 14, y = 16}, + {x = -11, y = 18}, + {x = -10, y = 18}, + {x = -10, y = 19}, + {x = -9, y = 19}, + {x = -8, y = 19}, + {x = 9, y = 19}, + {x = 8, y = 19}, + {x = 11, y = 18}, + {x = 10, y = 18}, + {x = 10, y = 19}, + {x = -7, y = 20}, + {x = -6, y = 20}, + {x = -5, y = 20}, + {x = -3, y = 21}, + {x = -4, y = 21}, + {x = -1, y = 21}, + {x = -2, y = 21}, + {x = 1, y = 21}, + {x = 0, y = 21}, + {x = 3, y = 21}, + {x = 2, y = 21}, + {x = 4, y = 21}, + {x = 5, y = 20}, + {x = 7, y = 20}, + {x = 6, y = 20} + }, + [23] = { + {x = -8, y = -21}, + {x = -7, y = -21}, + {x = -6, y = -21}, + {x = -5, y = -21}, + {x = -3, y = -22}, + {x = -4, y = -22}, + {x = -1, y = -22}, + {x = -2, y = -22}, + {x = 1, y = -22}, + {x = 0, y = -22}, + {x = 3, y = -22}, + {x = 2, y = -22}, + {x = 5, y = -21}, + {x = 4, y = -22}, + {x = 7, y = -21}, + {x = 6, y = -21}, + {x = 8, y = -21}, + {x = -12, y = -19}, + {x = -11, y = -19}, + {x = -10, y = -20}, + {x = -9, y = -20}, + {x = -8, y = -20}, + {x = 9, y = -20}, + {x = 8, y = -20}, + {x = 11, y = -19}, + {x = 10, y = -20}, + {x = 12, y = -19}, + {x = -14, y = -17}, + {x = -13, y = -18}, + {x = -12, y = -18}, + {x = 13, y = -18}, + {x = 12, y = -18}, + {x = 14, y = -17}, + {x = -15, y = -16}, + {x = -16, y = -15}, + {x = 15, y = -16}, + {x = 16, y = -15}, + {x = -17, y = -14}, + {x = -18, y = -13}, + {x = 17, y = -14}, + {x = 18, y = -13}, + {x = -19, y = -12}, + {x = -19, y = -11}, + {x = -18, y = -12}, + {x = 18, y = -12}, + {x = 19, y = -12}, + {x = 19, y = -11}, + {x = -20, y = -10}, + {x = -20, y = -9}, + {x = 20, y = -10}, + {x = 20, y = -9}, + {x = -21, y = -8}, + {x = -21, y = -7}, + {x = -20, y = -8}, + {x = 20, y = -8}, + {x = 21, y = -8}, + {x = 21, y = -7}, + {x = -21, y = -6}, + {x = -21, y = -5}, + {x = 21, y = -6}, + {x = 21, y = -5}, + {x = -22, y = -4}, + {x = -22, y = -3}, + {x = 22, y = -3}, + {x = 22, y = -4}, + {x = -22, y = -2}, + {x = -22, y = -1}, + {x = 22, y = -1}, + {x = 22, y = -2}, + {x = -22, y = 0}, + {x = -22, y = 1}, + {x = 22, y = 1}, + {x = 22, y = 0}, + {x = -22, y = 2}, + {x = -22, y = 3}, + {x = 22, y = 3}, + {x = 22, y = 2}, + {x = -22, y = 4}, + {x = -21, y = 5}, + {x = 21, y = 5}, + {x = 22, y = 4}, + {x = -21, y = 7}, + {x = -21, y = 6}, + {x = 21, y = 7}, + {x = 21, y = 6}, + {x = -21, y = 8}, + {x = -20, y = 9}, + {x = -20, y = 8}, + {x = 20, y = 8}, + {x = 20, y = 9}, + {x = 21, y = 8}, + {x = -19, y = 11}, + {x = -20, y = 10}, + {x = 19, y = 11}, + {x = 20, y = 10}, + {x = -19, y = 12}, + {x = -18, y = 13}, + {x = -18, y = 12}, + {x = 18, y = 13}, + {x = 18, y = 12}, + {x = 19, y = 12}, + {x = -17, y = 14}, + {x = -16, y = 15}, + {x = 16, y = 15}, + {x = 17, y = 14}, + {x = -15, y = 16}, + {x = -14, y = 17}, + {x = 14, y = 17}, + {x = 15, y = 16}, + {x = -13, y = 18}, + {x = -12, y = 18}, + {x = -12, y = 19}, + {x = -11, y = 19}, + {x = 11, y = 19}, + {x = 13, y = 18}, + {x = 12, y = 18}, + {x = 12, y = 19}, + {x = -10, y = 20}, + {x = -9, y = 20}, + {x = -8, y = 20}, + {x = -8, y = 21}, + {x = -7, y = 21}, + {x = -6, y = 21}, + {x = -5, y = 21}, + {x = 5, y = 21}, + {x = 7, y = 21}, + {x = 6, y = 21}, + {x = 8, y = 20}, + {x = 9, y = 20}, + {x = 8, y = 21}, + {x = 10, y = 20}, + {x = -4, y = 22}, + {x = -3, y = 22}, + {x = -2, y = 22}, + {x = -1, y = 22}, + {x = 0, y = 22}, + {x = 1, y = 22}, + {x = 2, y = 22}, + {x = 3, y = 22}, + {x = 4, y = 22} + } +} + local function process_explosion_tile(pos, explosion_index, current_radius) - local surface = game.surfaces[global.explosion_schedule[explosion_index].surface] - local target_entities = surface.find_entities_filtered({area={{pos.x - 0.5, pos.y - 0.5},{pos.x + 0.499, pos.y + 0.499}}}) - local explosion_animation = "explosion" - - local tile = surface.get_tile(pos) - if tile.name == "out-of-map" then - if global.explosion_schedule[explosion_index].damage_remaining >= out_of_map_tile_health then - explosion_animation = "big-explosion" - surface.set_tiles({{name = "dirt-5", position = pos}}, true) - end - global.explosion_schedule[explosion_index].damage_remaining = global.explosion_schedule[explosion_index].damage_remaining - out_of_map_tile_health - else - local decay_explosion = true - for _, entity in pairs(target_entities) do - if entity.health then - decay_explosion = false - end - end - if decay_explosion then global.explosion_schedule[explosion_index].damage_remaining = global.explosion_schedule[explosion_index].damage_remaining - empty_tile_damage_decay end - end - - for _, entity in pairs(target_entities) do - if entity.health then - if entity.health < global.explosion_schedule[explosion_index].damage_remaining then - explosion_animation = "big-explosion" - if entity.health > 500 then explosion_animation = "big-artillery-explosion" end - global.explosion_schedule[explosion_index].damage_remaining = global.explosion_schedule[explosion_index].damage_remaining - entity.health - entity.damage(999999, "player", "explosion") - else - entity.damage(global.explosion_schedule[explosion_index].damage_remaining, "player", "explosion") - global.explosion_schedule[explosion_index].damage_remaining = global.explosion_schedule[explosion_index].damage_remaining - entity.health - end - end - end - - if global.explosion_schedule[explosion_index].damage_remaining > 5000 and current_radius < 2 then - if math.random(1,2) == 1 then - explosion_animation = "big-explosion" - else - explosion_animation = "big-artillery-explosion" - end - end - - surface.create_entity({name = explosion_animation, position = pos}) - - if global.explosion_schedule[explosion_index].damage_remaining <= 0 then return false end - - return true + local surface = game.surfaces[global.explosion_schedule[explosion_index].surface] + local target_entities = + surface.find_entities_filtered({area = {{pos.x - 0.5, pos.y - 0.5}, {pos.x + 0.499, pos.y + 0.499}}}) + local explosion_animation = 'explosion' + + local tile = surface.get_tile(pos) + if tile.name == 'out-of-map' then + if global.explosion_schedule[explosion_index].damage_remaining >= out_of_map_tile_health then + explosion_animation = 'big-explosion' + surface.set_tiles({{name = 'dirt-5', position = pos}}, true) + end + global.explosion_schedule[explosion_index].damage_remaining = + global.explosion_schedule[explosion_index].damage_remaining - out_of_map_tile_health + else + local decay_explosion = true + for _, entity in pairs(target_entities) do + if entity.health then + decay_explosion = false + end + end + if decay_explosion then + global.explosion_schedule[explosion_index].damage_remaining = + global.explosion_schedule[explosion_index].damage_remaining - empty_tile_damage_decay + end + end + + for _, entity in pairs(target_entities) do + if entity.health then + if entity.health < global.explosion_schedule[explosion_index].damage_remaining then + explosion_animation = 'big-explosion' + if entity.health > 500 then + explosion_animation = 'big-artillery-explosion' + end + global.explosion_schedule[explosion_index].damage_remaining = + global.explosion_schedule[explosion_index].damage_remaining - entity.health + entity.damage(999999, 'player', 'explosion') + else + entity.damage(global.explosion_schedule[explosion_index].damage_remaining, 'player', 'explosion') + global.explosion_schedule[explosion_index].damage_remaining = + global.explosion_schedule[explosion_index].damage_remaining - entity.health + end + end + end + + if global.explosion_schedule[explosion_index].damage_remaining > 5000 and current_radius < 2 then + if math.random(1, 2) == 1 then + explosion_animation = 'big-explosion' + else + explosion_animation = 'big-artillery-explosion' + end + end + + surface.create_entity({name = explosion_animation, position = pos}) + + if global.explosion_schedule[explosion_index].damage_remaining <= 0 then + return false + end + + return true end local function create_explosion_schedule(entity) - local inventory = defines.inventory.chest - if entity.type == "car" then inventory = defines.inventory.car_trunk end - local i = entity.get_inventory(inventory) - local explosives_amount = i.get_item_count("explosives") - if explosives_amount < 1 then return end - local center_position = entity.position - - if not global.explosion_schedule then global.explosion_schedule = {} end - global.explosion_schedule[#global.explosion_schedule + 1] = {} - global.explosion_schedule[#global.explosion_schedule].surface = entity.surface.name - global.explosion_schedule[#global.explosion_schedule].damage_remaining = damage_per_explosive * explosives_amount - - for current_radius = 1, 23, 1 do - - global.explosion_schedule[#global.explosion_schedule][current_radius] = {} - global.explosion_schedule[#global.explosion_schedule][current_radius].trigger_tick = game.tick + (current_radius * 8) - - local circle_coords = circle_coordinates[current_radius] - - for index, tile_position in pairs(circle_coords) do - local pos = {x = center_position.x + tile_position.x, y = center_position.y + tile_position.y} - global.explosion_schedule[#global.explosion_schedule][current_radius][index] = {x = pos.x, y = pos.y} - end - - end - entity.die("player") + local inventory = defines.inventory.chest + if entity.type == 'car' then + inventory = defines.inventory.car_trunk + end + local i = entity.get_inventory(inventory) + local explosives_amount = i.get_item_count('explosives') + if explosives_amount < 1 then + return + end + local center_position = entity.position + + if not global.explosion_schedule then + global.explosion_schedule = {} + end + global.explosion_schedule[#global.explosion_schedule + 1] = {} + global.explosion_schedule[#global.explosion_schedule].surface = entity.surface.name + global.explosion_schedule[#global.explosion_schedule].damage_remaining = damage_per_explosive * explosives_amount + + for current_radius = 1, 23, 1 do + global.explosion_schedule[#global.explosion_schedule][current_radius] = {} + global.explosion_schedule[#global.explosion_schedule][current_radius].trigger_tick = + game.tick + (current_radius * 8) + + local circle_coords = circle_coordinates[current_radius] + + for index, tile_position in pairs(circle_coords) do + local pos = {x = center_position.x + tile_position.x, y = center_position.y + tile_position.y} + global.explosion_schedule[#global.explosion_schedule][current_radius][index] = {x = pos.x, y = pos.y} + end + end + entity.die('player') end local function on_entity_damaged(event) - local entity = event.entity - if entity.type == "container" or entity.type == "logistic-container" then - if math.random(1,3) == 1 or entity.health <= 0 then create_explosion_schedule(event.entity) return end - end - if entity.type == "cargo-wagon" or entity.type == "car" then - if entity.health <= 0 then create_explosion_schedule(entity) return end - if entity.health < 150 and math.random(1,3) == 1 then create_explosion_schedule(entity) return end - end + local entity = event.entity + if entity.type == 'container' or entity.type == 'logistic-container' then + if math.random(1, 3) == 1 or entity.health <= 0 then + create_explosion_schedule(event.entity) + return + end + end + if entity.type == 'cargo-wagon' or entity.type == 'car' then + if entity.health <= 0 then + create_explosion_schedule(entity) + return + end + if entity.health < 150 and math.random(1, 3) == 1 then + create_explosion_schedule(entity) + return + end + end end local function on_tick(event) - if global.explosion_schedule then - local tick = game.tick - local explosion_schedule_is_alive = false - for explosion_index = 1, #global.explosion_schedule, 1 do - if #global.explosion_schedule[explosion_index] > 0 then - explosion_schedule_is_alive = true - local surface = game.surfaces[global.explosion_schedule[explosion_index].surface] - for radius = 1, #global.explosion_schedule[explosion_index], 1 do - if global.explosion_schedule[explosion_index][radius].trigger_tick == tick then - for tile_index = 1, #global.explosion_schedule[explosion_index][radius], 1 do - local continue_explosion = process_explosion_tile(global.explosion_schedule[explosion_index][radius][tile_index], explosion_index, radius) - if not continue_explosion then - global.explosion_schedule[explosion_index] = {} - break - end - end - if radius == #global.explosion_schedule[explosion_index] then global.explosion_schedule[explosion_index] = {} end - break - end - end - end - end - if not explosion_schedule_is_alive then global.explosion_schedule = nil end - end + if global.explosion_schedule then + local tick = game.tick + local explosion_schedule_is_alive = false + for explosion_index = 1, #global.explosion_schedule, 1 do + if #global.explosion_schedule[explosion_index] > 0 then + explosion_schedule_is_alive = true + for radius = 1, #global.explosion_schedule[explosion_index], 1 do + if global.explosion_schedule[explosion_index][radius].trigger_tick == tick then + for tile_index = 1, #global.explosion_schedule[explosion_index][radius], 1 do + local continue_explosion = + process_explosion_tile( + global.explosion_schedule[explosion_index][radius][tile_index], + explosion_index, + radius + ) + if not continue_explosion then + global.explosion_schedule[explosion_index] = {} + break + end + end + if radius == #global.explosion_schedule[explosion_index] then + global.explosion_schedule[explosion_index] = {} + end + break + end + end + end + end + if not explosion_schedule_is_alive then + global.explosion_schedule = nil + end + end end -event.add(defines.events.on_entity_damaged, on_entity_damaged) -event.add(defines.events.on_tick, on_tick) +Event.add(defines.events.on_entity_damaged, on_entity_damaged) +Event.add(defines.events.on_tick, on_tick) diff --git a/maps/cave_choppy/cave_miner_market_items.lua b/maps/cave_choppy/cave_miner_market_items.lua index 9b140da5..35055397 100644 --- a/maps/cave_choppy/cave_miner_market_items.lua +++ b/maps/cave_choppy/cave_miner_market_items.lua @@ -1,36 +1,36 @@ local items = {} items.spawn = { - {price = {{"raw-fish", 5}}, offer = {type = 'give-item', item = 'rail', count = 4}}, - {price = {{"raw-fish", 150}}, offer = {type = 'give-item', item = 'infinity-chest', count = 1}}, - {price = {{"raw-fish", 5}}, offer = {type = 'give-item', item = 'rail-signal', count = 2}}, - {price = {{"raw-fish", 5}}, offer = {type = 'give-item', item = 'rail-chain-signal', count = 2}}, - {price = {{"raw-fish", 10}}, offer = {type = 'give-item', item = 'train-stop'}}, - {price = {{"raw-fish", 94}}, offer = {type = 'give-item', item = 'locomotive'}}, - {price = {{"raw-fish", 35}}, offer = {type = 'give-item', item = 'cargo-wagon'}}, - {price = {{"raw-fish", 1}}, offer = {type = 'give-item', item = 'red-wire', count = 1}}, - {price = {{"raw-fish", 1}}, offer = {type = 'give-item', item = 'green-wire', count = 1}}, - {price = {{"raw-fish", 4}}, offer = {type = 'give-item', item = 'decider-combinator'}}, - {price = {{"raw-fish", 4}}, offer = {type = 'give-item', item = 'arithmetic-combinator'}}, - {price = {{"raw-fish", 2}}, offer = {type = 'give-item', item = 'constant-combinator'}}, - {price = {{"raw-fish", 4}}, offer = {type = 'give-item', item = 'programmable-speaker'}}, - {price = {{"raw-fish", 2}}, offer = {type = 'give-item', item = 'small-lamp'}}, - {price = {{"raw-fish", 2}}, offer = {type = 'give-item', item = 'firearm-magazine'}}, - {price = {{"raw-fish", 4}}, offer = {type = 'give-item', item = 'piercing-rounds-magazine'}}, - {price = {{"raw-fish", 3}}, offer = {type = 'give-item', item = 'grenade'}}, - {price = {{"raw-fish", 2}}, offer = {type = 'give-item', item = 'land-mine'}}, - {price = {{"raw-fish", 1}}, offer = {type = 'give-item', item = 'explosives', count = 2}}, - {price = {{"raw-fish", 40}}, offer = {type = 'give-item', item = 'cliff-explosives'}}, - {price = {{"raw-fish", 5}}, offer = {type = 'give-item', item = 'wood', count = 25}}, - {price = {{"raw-fish", 5}}, offer = {type = 'give-item', item = 'iron-ore', count = 25}}, - {price = {{"raw-fish", 5}}, offer = {type = 'give-item', item = 'copper-ore', count = 25}}, - {price = {{"raw-fish", 5}}, offer = {type = 'give-item', item = 'stone', count = 25}}, - {price = {{"raw-fish", 5}}, offer = {type = 'give-item', item = 'coal', count = 25}}, - {price = {{"raw-fish", 5}}, offer = {type = 'give-item', item = 'uranium-ore', count = 20}}, - {price = {{'wood', 25}}, offer = {type = 'give-item', item = "raw-fish", count = 2}}, - {price = {{'iron-ore', 25}}, offer = {type = 'give-item', item = "raw-fish", count = 2}}, - {price = {{'copper-ore', 25}}, offer = {type = 'give-item', item = "raw-fish", count = 2}}, - {price = {{'stone', 25}}, offer = {type = 'give-item', item = "raw-fish", count = 2}}, - {price = {{'coal', 25}}, offer = {type = 'give-item', item = "raw-fish", count = 2}}, - {price = {{'uranium-ore', 20}}, offer = {type = 'give-item', item = "raw-fish", count = 2}} + {price = {{'raw-fish', 5}}, offer = {type = 'give-item', item = 'rail', count = 4}}, + {price = {{'raw-fish', 150}}, offer = {type = 'give-item', item = 'infinity-chest', count = 1}}, + {price = {{'raw-fish', 5}}, offer = {type = 'give-item', item = 'rail-signal', count = 2}}, + {price = {{'raw-fish', 5}}, offer = {type = 'give-item', item = 'rail-chain-signal', count = 2}}, + {price = {{'raw-fish', 10}}, offer = {type = 'give-item', item = 'train-stop'}}, + {price = {{'raw-fish', 94}}, offer = {type = 'give-item', item = 'locomotive'}}, + {price = {{'raw-fish', 35}}, offer = {type = 'give-item', item = 'cargo-wagon'}}, + {price = {{'raw-fish', 1}}, offer = {type = 'give-item', item = 'red-wire', count = 1}}, + {price = {{'raw-fish', 1}}, offer = {type = 'give-item', item = 'green-wire', count = 1}}, + {price = {{'raw-fish', 4}}, offer = {type = 'give-item', item = 'decider-combinator'}}, + {price = {{'raw-fish', 4}}, offer = {type = 'give-item', item = 'arithmetic-combinator'}}, + {price = {{'raw-fish', 2}}, offer = {type = 'give-item', item = 'constant-combinator'}}, + {price = {{'raw-fish', 4}}, offer = {type = 'give-item', item = 'programmable-speaker'}}, + {price = {{'raw-fish', 2}}, offer = {type = 'give-item', item = 'small-lamp'}}, + {price = {{'raw-fish', 2}}, offer = {type = 'give-item', item = 'firearm-magazine'}}, + {price = {{'raw-fish', 4}}, offer = {type = 'give-item', item = 'piercing-rounds-magazine'}}, + {price = {{'raw-fish', 3}}, offer = {type = 'give-item', item = 'grenade'}}, + {price = {{'raw-fish', 2}}, offer = {type = 'give-item', item = 'land-mine'}}, + {price = {{'raw-fish', 1}}, offer = {type = 'give-item', item = 'explosives', count = 2}}, + {price = {{'raw-fish', 40}}, offer = {type = 'give-item', item = 'cliff-explosives'}}, + {price = {{'raw-fish', 5}}, offer = {type = 'give-item', item = 'wood', count = 25}}, + {price = {{'raw-fish', 5}}, offer = {type = 'give-item', item = 'iron-ore', count = 25}}, + {price = {{'raw-fish', 5}}, offer = {type = 'give-item', item = 'copper-ore', count = 25}}, + {price = {{'raw-fish', 5}}, offer = {type = 'give-item', item = 'stone', count = 25}}, + {price = {{'raw-fish', 5}}, offer = {type = 'give-item', item = 'coal', count = 25}}, + {price = {{'raw-fish', 5}}, offer = {type = 'give-item', item = 'uranium-ore', count = 20}}, + {price = {{'wood', 25}}, offer = {type = 'give-item', item = 'raw-fish', count = 2}}, + {price = {{'iron-ore', 25}}, offer = {type = 'give-item', item = 'raw-fish', count = 2}}, + {price = {{'copper-ore', 25}}, offer = {type = 'give-item', item = 'raw-fish', count = 2}}, + {price = {{'stone', 25}}, offer = {type = 'give-item', item = 'raw-fish', count = 2}}, + {price = {{'coal', 25}}, offer = {type = 'give-item', item = 'raw-fish', count = 2}}, + {price = {{'uranium-ore', 20}}, offer = {type = 'give-item', item = 'raw-fish', count = 2}} } -return items \ No newline at end of file +return items diff --git a/maps/cave_choppy/choppy.lua b/maps/cave_choppy/choppy.lua index 51ace59b..999e8729 100644 --- a/maps/cave_choppy/choppy.lua +++ b/maps/cave_choppy/choppy.lua @@ -1,562 +1,660 @@ --choppy-- mewmew made this -- -- modified by gerkiz -require "modules.dynamic_landfill" -require "modules.satellite_score" -require "modules.spawners_contain_biters" +require 'modules.dynamic_landfill' +require 'modules.satellite_score' +require 'modules.spawners_contain_biters' +require 'functions.create_entity_chain' +require 'functions.create_tile_chain' --require "maps.choppy_map_intro" -local unearthing_worm = require "functions.unearthing_worm" -local unearthing_biters = require "functions.unearthing_biters" -local tick_tack_trap = require "functions.tick_tack_trap" -local create_entity_chain = require "functions.create_entity_chain" -local create_tile_chain = require "functions.create_tile_chain" -local Module = require "modules.infinity_chest" - -local simplex_noise = require 'utils.simplex_noise'.d2 -local event = require 'utils.event' +local unearthing_worm = require 'functions.unearthing_worm' +local unearthing_biters = require 'functions.unearthing_biters' +local tick_tack_trap = require 'functions.tick_tack_trap' +local Module = require 'modules.infinity_chest' +local Simplex = require 'utils.simplex_noise'.d2 +local Event = require 'utils.event' local table_insert = table.insert local math_random = math.random -local map_functions = require "tools.map_functions" local disabled_for_deconstruction = { - ["fish"] = true, - ["rock-huge"] = true, - ["rock-big"] = true, - ["sand-rock-big"] = true, - ["mineable-wreckage"] = true - } + ['fish'] = true, + ['rock-huge'] = true, + ['rock-big'] = true, + ['sand-rock-big'] = true, + ['mineable-wreckage'] = true +} local tile_replacements = { - ["dirt-1"] = "grass-1", - ["dirt-2"] = "grass-2", - ["dirt-3"] = "grass-3", - ["dirt-4"] = "grass-4", - ["dirt-5"] = "grass-1", - ["sand-1"] = "grass-1", - ["sand-2"] = "grass-2", - ["sand-3"] = "grass-3", - ["dry-dirt"] = "grass-2", - ["red-desert-0"] = "grass-1", - ["red-desert-1"] = "grass-2", - ["red-desert-2"] = "grass-3", - ["red-desert-3"] = "grass-4", + ['dirt-1'] = 'grass-1', + ['dirt-2'] = 'grass-2', + ['dirt-3'] = 'grass-3', + ['dirt-4'] = 'grass-4', + ['dirt-5'] = 'grass-1', + ['sand-1'] = 'grass-1', + ['sand-2'] = 'grass-2', + ['sand-3'] = 'grass-3', + ['dry-dirt'] = 'grass-2', + ['red-desert-0'] = 'grass-1', + ['red-desert-1'] = 'grass-2', + ['red-desert-2'] = 'grass-3', + ['red-desert-3'] = 'grass-4' } -local rocks = {"rock-big", "rock-big", "rock-huge"} -local decos = {"green-hairy-grass", "green-hairy-grass", "green-hairy-grass", "green-hairy-grass", "green-hairy-grass", "green-hairy-grass", "green-carpet-grass", "green-carpet-grass","green-pita"} -local decos_inside_forest = {"brown-asterisk","brown-asterisk", "brown-carpet-grass","brown-hairy-grass"} +local rocks = {'rock-big', 'rock-big', 'rock-huge'} +local decos = { + 'green-hairy-grass', + 'green-hairy-grass', + 'green-hairy-grass', + 'green-hairy-grass', + 'green-hairy-grass', + 'green-hairy-grass', + 'green-carpet-grass', + 'green-carpet-grass', + 'green-pita' +} +local decos_inside_forest = {'brown-asterisk', 'brown-asterisk', 'brown-carpet-grass', 'brown-hairy-grass'} local noises = { - ["forest_location"] = {{modifier = 0.006, weight = 1}, {modifier = 0.01, weight = 0.25}, {modifier = 0.05, weight = 0.15}, {modifier = 0.1, weight = 0.05}}, - ["forest_density"] = {{modifier = 0.01, weight = 1}, {modifier = 0.05, weight = 0.5}, {modifier = 0.1, weight = 0.025}} + ['forest_location'] = { + {modifier = 0.006, weight = 1}, + {modifier = 0.01, weight = 0.25}, + {modifier = 0.05, weight = 0.15}, + {modifier = 0.1, weight = 0.05} + }, + ['forest_density'] = { + {modifier = 0.01, weight = 1}, + {modifier = 0.05, weight = 0.5}, + {modifier = 0.1, weight = 0.025} + } } local function get_noise(name, pos, seed) - local noise = 0 - for _, n in pairs(noises[name]) do - noise = noise + simplex_noise(pos.x * n.modifier, pos.y * n.modifier, seed) * n.weight - seed = seed + 10000 - end - return noise + local noise = 0 + for _, n in pairs(noises[name]) do + noise = noise + Simplex(pos.x * n.modifier, pos.y * n.modifier, seed) * n.weight + seed = seed + 10000 + end + return noise end -local function shuffle(tbl) - local size = #tbl - for i = size, 1, -1 do - local rand = math_random(size) - tbl[i], tbl[rand] = tbl[rand], tbl[i] - end - return tbl -end - - local entities_to_convert = { - ["coal"] = true, - ["copper-ore"] = true, - ["iron-ore"] = true, - ["uranium-ore"] = true, - ["stone"] = true, - ["angels-ore1"] = true, - ["angels-ore2"] = true, - ["angels-ore3"] = true, - ["angels-ore4"] = true, - ["angels-ore5"] = true, - ["angels-ore6"] = true, - ["thorium-ore"] = true + ['coal'] = true, + ['copper-ore'] = true, + ['iron-ore'] = true, + ['uranium-ore'] = true, + ['stone'] = true, + ['angels-ore1'] = true, + ['angels-ore2'] = true, + ['angels-ore3'] = true, + ['angels-ore4'] = true, + ['angels-ore5'] = true, + ['angels-ore6'] = true, + ['thorium-ore'] = true } local trees_to_remove = { - ["dead-dry-hairy-tree"] = true, - ["dead-grey-trunk"] = true, - ["dead-tree-desert"] = true, - ["dry-hairy-tree"] = true, - ["dry-tree"] = true, - ["tree-01"] = true, - ["tree-02"] = true, - ["tree-02-red"] = true, - ["tree-03"] = true, - ["tree-04"] = true, - ["tree-05"] = true, - ["tree-06"] = true, - ["tree-06-brown"] = true, - ["tree-07"] = true, - ["tree-08"] = true, - ["tree-08-brown"] = true, - ["tree-08-red"] = true, - ["tree-09"] = true, - ["tree-09-brown"] = true, - ["tree-09-red"] = true + ['dead-dry-hairy-tree'] = true, + ['dead-grey-trunk'] = true, + ['dead-tree-desert'] = true, + ['dry-hairy-tree'] = true, + ['dry-tree'] = true, + ['tree-01'] = true, + ['tree-02'] = true, + ['tree-02-red'] = true, + ['tree-03'] = true, + ['tree-04'] = true, + ['tree-05'] = true, + ['tree-06'] = true, + ['tree-06-brown'] = true, + ['tree-07'] = true, + ['tree-08'] = true, + ['tree-08-brown'] = true, + ['tree-08-red'] = true, + ['tree-09'] = true, + ['tree-09-brown'] = true, + ['tree-09-red'] = true } -local info = [[ - You are a lumberjack with a passion to chop. - - Different kinds of trees, yield different kinds of ore and wood. - Yes, they seem to draw minerals out of the ground and manifesting it as "fruit". - Their yield increases with distance. Mining Productivity Research will increase chopping speed and backpack size. - - Beware, sometimes there are some bugs hiding underneath the trees. - Even dangerous traps have been encountered before. - - These mysterious ore trees don't burn very well, so do not worry if some of them catch on fire. - - Also, there seems to be an elevator that goes down to the mine. Who knows what one can find down there... - - Choppy Choppy Wood -]] - local choppy_messages = { - "We should branch out.", - "Wood? Well that's the root of the problem.", - "Going out for chopping? Son of a birch.", - "Why do trees hate tests? Because they get stumped by the questions.", - "What happens to the most lovely trees every Valentine’s Day? They get all sappy.", - "Ever wondered how trees get online? They just log in." - } - -local function create_map_intro_button(player) - if player.gui.top["map_intro_button"] then return end - local b = player.gui.top.add({type = "sprite-button", caption = "?", name = "map_intro_button", tooltip = "Map Info"}) - b.style.font_color = {r = 0.1, g = 0.8, b = 0.1} - b.style.font = "heading-1" - b.style.minimal_height = 38 - b.style.minimal_width = 38 - b.style.top_padding = 2 - b.style.left_padding = 4 - b.style.right_padding = 4 - b.style.bottom_padding = 2 -end + 'We should branch out.', + "Wood? Well that's the root of the problem.", + 'Going out for chopping? Son of a birch.', + 'Why do trees hate tests? Because they get stumped by the questions.', + 'What happens to the most lovely trees every Valentine’s Day? They get all sappy.', + 'Ever wondered how trees get online? They just log in.' +} local function create_choppy_stats_gui(player) - if player.gui.top["choppy_stats_frame"] then player.gui.top["choppy_stats_frame"].destroy() end + if player.gui.top['choppy_stats_frame'] then + player.gui.top['choppy_stats_frame'].destroy() + end - local captions = {} - local caption_style = {{"font", "default-bold"}, {"font_color",{ r=0.63, g=0.63, b=0.63}}, {"top_padding",2}, {"left_padding",0},{"right_padding",0},{"minimal_width",0}} - local stat_numbers = {} - local stat_number_style = {{"font", "default-bold"}, {"font_color",{ r=0.77, g=0.77, b=0.77}}, {"top_padding",2}, {"left_padding",0},{"right_padding",0},{"minimal_width",0}} - local separators = {} - local separator_style = {{"font", "default-bold"}, {"font_color",{ r=0.15, g=0.15, b=0.89}}, {"top_padding",2}, {"left_padding",2},{"right_padding",2},{"minimal_width",0}} + local captions = {} + local caption_style = { + {'font', 'default-bold'}, + {'font_color', {r = 0.63, g = 0.63, b = 0.63}}, + {'top_padding', 2}, + {'left_padding', 0}, + {'right_padding', 0}, + {'minimal_width', 0} + } + local stat_numbers = {} + local stat_number_style = { + {'font', 'default-bold'}, + {'font_color', {r = 0.77, g = 0.77, b = 0.77}}, + {'top_padding', 2}, + {'left_padding', 0}, + {'right_padding', 0}, + {'minimal_width', 0} + } + local separators = {} + local separator_style = { + {'font', 'default-bold'}, + {'font_color', {r = 0.15, g = 0.15, b = 0.89}}, + {'top_padding', 2}, + {'left_padding', 2}, + {'right_padding', 2}, + {'minimal_width', 0} + } + local frame = player.gui.top.add {type = 'frame', name = 'choppy_stats_frame'} + frame.style.minimal_height = 38 + frame.style.maximal_height = 38 - local frame = player.gui.top.add { type = "frame", name = "choppy_stats_frame" } + local t = frame.add {type = 'table', column_count = 16} - local t = frame.add { type = "table", column_count = 16 } + captions[1] = t.add {type = 'label', caption = '[img=item/iron-ore] :'} + captions[1].tooltip = 'Amount of ores harvested.' - captions[1] = t.add { type = "label", caption = '[img=item/iron-ore] :' } + global.total_ores_mined = + global.stats_ores_found + game.forces.player.item_production_statistics.get_input_count('coal') + + game.forces.player.item_production_statistics.get_input_count('iron-ore') + + game.forces.player.item_production_statistics.get_input_count('copper-ore') + + game.forces.player.item_production_statistics.get_input_count('uranium-ore') - global.total_ores_mined = global.stats_ores_found + game.forces.player.item_production_statistics.get_input_count("coal") + game.forces.player.item_production_statistics.get_input_count("iron-ore") + game.forces.player.item_production_statistics.get_input_count("copper-ore") + game.forces.player.item_production_statistics.get_input_count("uranium-ore") + stat_numbers[1] = t.add {type = 'label', caption = global.total_ores_mined} - stat_numbers[1] = t.add { type = "label", caption = global.total_ores_mined } + separators[1] = t.add {type = 'label', caption = '|'} - separators[1] = t.add { type = "label", caption = "|"} + captions[2] = t.add {type = 'label', caption = '[img=entity.tree-04] :'} + captions[2].tooltip = 'Amount of trees chopped.' + stat_numbers[2] = t.add {type = 'label', caption = global.stats_wood_chopped} - captions[2] = t.add { type = "label", caption = '[img=entity.tree-04] :' } - stat_numbers[2] = t.add { type = "label", caption = global.stats_wood_chopped } + separators[2] = t.add {type = 'label', caption = '|'} - separators[2] = t.add { type = "label", caption = "|"} + captions[3] = t.add {type = 'label', caption = '[img=item.productivity-module] :'} + captions[3].tooltip = 'Current mining speed bonus.' + local x = math.floor(game.forces.player.manual_mining_speed_modifier * 100) + local str = '' + if x > 0 then + str = str .. '+' + end + str = str .. tostring(x) + str = str .. '%' + stat_numbers[3] = t.add {type = 'label', caption = str} - captions[3] = t.add { type = "label", caption = '[img=item.productivity-module] :' } - local x = math.floor(game.forces.player.manual_mining_speed_modifier * 100) - local str = "" - if x > 0 then str = str .. "+" end - str = str .. tostring(x) - str = str .. "%" - stat_numbers[3] = t.add { type = "label", caption = str } + if game.forces.player.manual_mining_speed_modifier > 0 or game.forces.player.mining_drill_productivity_bonus > 0 then + separators[3] = t.add {type = 'label', caption = '|'} - if game.forces.player.manual_mining_speed_modifier > 0 or game.forces.player.mining_drill_productivity_bonus > 0 then - separators[3] = t.add { type = "label", caption = "|"} + captions[3] = t.add {type = 'label', caption = '[img=utility.hand] :'} + local str = '+' + str = str .. tostring(game.forces.player.mining_drill_productivity_bonus * 100) + str = str .. '%' + stat_numbers[3] = t.add {type = 'label', caption = str} + end - captions[3] = t.add { type = "label", caption = '[img=utility.hand] :' } - local str = "+" - str = str .. tostring(game.forces.player.mining_drill_productivity_bonus * 100) - str = str .. "%" - stat_numbers[3] = t.add { type = "label", caption = str } - - end - - for _, s in pairs (caption_style) do - for _, l in pairs (captions) do - l.style[s[1]] = s[2] - end - end - for _, s in pairs (stat_number_style) do - for _, l in pairs (stat_numbers) do - l.style[s[1]] = s[2] - end - end - for _, s in pairs (separator_style) do - for _, l in pairs (separators) do - l.style[s[1]] = s[2] - end - end - stat_numbers[1].style.minimal_width = 9 * string.len(tostring(global.stats_ores_found)) - stat_numbers[2].style.minimal_width = 9 * string.len(tostring(global.stats_rocks_broken)) -end - -local function create_map_intro(player) - if player.gui.left["map_intro_frame"] then player.gui.left["map_intro_frame"].destroy() end - local frame = player.gui.left.add {type = "frame", name = "map_intro_frame", direction = "vertical"} - - local t = frame.add {type = "table", column_count = 1} - - local b = frame.add {type = "button", caption = "Close", name = "close_map_intro_frame", align = "right"} - b.style.font = "default" - b.style.minimal_height = 30 - b.style.minimal_width = 30 - b.style.top_padding = 2 - b.style.left_padding = 4 - b.style.right_padding = 4 - b.style.bottom_padding = 2 - - local frame = t.add {type = "frame"} - local l = frame.add {type = "label", caption = info} - l.style.single_line = false - l.style.font = "heading-3" - l.style.font_color = {r=0.95, g=0.95, b=0.95} + for _, s in pairs(caption_style) do + for _, l in pairs(captions) do + l.style[s[1]] = s[2] + end + end + for _, s in pairs(stat_number_style) do + for _, l in pairs(stat_numbers) do + l.style[s[1]] = s[2] + end + end + for _, s in pairs(separator_style) do + for _, l in pairs(separators) do + l.style[s[1]] = s[2] + end + end + stat_numbers[1].style.minimal_width = 9 * string.len(tostring(global.stats_ores_found)) + stat_numbers[2].style.minimal_width = 9 * string.len(tostring(global.stats_rocks_broken)) end local function on_gui_click(event) - if not event then return end - if not event.element then return end - if not event.element.valid then return end - local player = game.players[event.element.player_index] - local name = event.element.name - local frame = player.gui.top["choppy_stats_frame"] + if not event then + return + end + if not event.element then + return + end + if not event.element.valid then + return + end + local player = game.players[event.element.player_index] + local name = event.element.name + local frame = player.gui.top['choppy_stats_frame'] - if name == "map_intro_button" and frame == nil then create_choppy_stats_gui(player) end - if name == "map_intro_button" and frame then - if player.gui.left["map_intro_frame"] then - frame.destroy() - player.gui.left["map_intro_frame"].destroy() - else - create_map_intro(player) - end - return - end - if name == "close_map_intro_frame" then player.gui.left["map_intro_frame"].destroy() end + if name == 'map_intro_button' and frame == nil then + create_choppy_stats_gui(player) + end + if name == 'map_intro_button' and frame then + if player.gui.left['map_intro_frame'] then + frame.destroy() + player.gui.left['map_intro_frame'].destroy() + end + return + end + if name == 'close_map_intro_frame' then + player.gui.left['map_intro_frame'].destroy() + end end local function refresh_gui() - for _, player in pairs(game.connected_players) do - local frame = player.gui.top["choppy_stats_frame"] - if (frame) then - create_choppy_stats_gui(player) - create_map_intro_button(player) - end - end + for _, player in pairs(game.connected_players) do + local frame = player.gui.top['choppy_stats_frame'] + if (frame) then + create_choppy_stats_gui(player) + end + end end local function process_entity(e) - if not e.valid then return end - if trees_to_remove[e.name] then - e.destroy() - return - end - if entities_to_convert[e.name] then - if math_random(1,100) > 33 then e.surface.create_entity({name = rocks[math_random(1, #rocks)], position = e.position}) end - e.destroy() - return - end + if not e.valid then + return + end + if trees_to_remove[e.name] then + e.destroy() + return + end + if entities_to_convert[e.name] then + if math_random(1, 100) > 33 then + e.surface.create_entity({name = rocks[math_random(1, #rocks)], position = e.position}) + end + e.destroy() + return + end end local function process_tile(surface, pos, tile, seed) - if tile.collides_with("player-layer") then return end - if not surface.can_place_entity({name = "tree-01", position = pos}) then return end + if tile.collides_with('player-layer') then + return + end + if not surface.can_place_entity({name = 'tree-01', position = pos}) then + return + end - if math_random(1, 100000) == 1 then - local wrecks = {"big-ship-wreck-1", "big-ship-wreck-2", "big-ship-wreck-3"} - local e = surface.create_entity{name = wrecks[math_random(1,#wrecks)], position = pos, force = "neutral"} - e.insert({name = "raw-fish", count = math_random(3, 25)}) - if math_random(1, 3) == 1 then e.insert({name = "wood", count = math_random(11, 44)}) end - end + if math_random(1, 100000) == 1 then + local wrecks = {'big-ship-wreck-1', 'big-ship-wreck-2', 'big-ship-wreck-3'} + local e = surface.create_entity {name = wrecks[math_random(1, #wrecks)], position = pos, force = 'neutral'} + e.insert({name = 'raw-fish', count = math_random(3, 25)}) + if math_random(1, 3) == 1 then + e.insert({name = 'wood', count = math_random(11, 44)}) + end + end - local noise_forest_location = get_noise("forest_location", pos, seed) - --local r = math.ceil(math.abs(get_noise("forest_density", pos, seed + 4096)) * 10) - --local r = 5 - math.ceil(math.abs(noise_forest_location) * 3) - --r = 2 + local noise_forest_location = get_noise('forest_location', pos, seed) + --local r = math.ceil(math.abs(get_noise("forest_density", pos, seed + 4096)) * 10) + --local r = 5 - math.ceil(math.abs(noise_forest_location) * 3) + --r = 2 - if noise_forest_location > 0.095 then - if noise_forest_location > 0.6 then - if math_random(1,100) > 42 then surface.create_entity({name = "tree-08-brown", position = pos}) end - else - if math_random(1,100) > 42 then surface.create_entity({name = "tree-01", position = pos}) end - end - surface.create_decoratives({check_collision=false, decoratives={{name = decos_inside_forest[math_random(1, #decos_inside_forest)], position = pos, amount = math_random(1, 2)}}}) - return - end + if noise_forest_location > 0.095 then + if noise_forest_location > 0.6 then + if math_random(1, 100) > 42 then + surface.create_entity({name = 'tree-08-brown', position = pos}) + end + else + if math_random(1, 100) > 42 then + surface.create_entity({name = 'tree-01', position = pos}) + end + end + surface.create_decoratives( + { + check_collision = false, + decoratives = { + { + name = decos_inside_forest[math_random(1, #decos_inside_forest)], + position = pos, + amount = math_random(1, 2) + } + } + } + ) + return + end - if noise_forest_location < -0.095 then - if noise_forest_location < -0.6 then - if math_random(1,100) > 42 then surface.create_entity({name = "tree-04", position = pos}) end - else - if math_random(1,100) > 42 then surface.create_entity({name = "tree-02-red", position = pos}) end - end - surface.create_decoratives({check_collision=false, decoratives={{name = decos_inside_forest[math_random(1, #decos_inside_forest)], position = pos, amount = math_random(1, 2)}}}) - return - end + if noise_forest_location < -0.095 then + if noise_forest_location < -0.6 then + if math_random(1, 100) > 42 then + surface.create_entity({name = 'tree-04', position = pos}) + end + else + if math_random(1, 100) > 42 then + surface.create_entity({name = 'tree-02-red', position = pos}) + end + end + surface.create_decoratives( + { + check_collision = false, + decoratives = { + { + name = decos_inside_forest[math_random(1, #decos_inside_forest)], + position = pos, + amount = math_random(1, 2) + } + } + } + ) + return + end - surface.create_decoratives({check_collision=false, decoratives={{name = decos[math_random(1, #decos)], position = pos, amount = math_random(1, 2)}}}) + surface.create_decoratives( + { + check_collision = false, + decoratives = {{name = decos[math_random(1, #decos)], position = pos, amount = math_random(1, 2)}} + } + ) end local function on_chunk_generated(event) - local surface = event.surface - if surface.name ~= "choppy" then return end - local left_top = event.area.left_top - local tiles = {} - local entities = {} - local seed = game.surfaces[1].map_gen_settings.seed + local surface = event.surface + if surface.name ~= 'choppy' then + return + end + local left_top = event.area.left_top + local tiles = {} + local seed = game.surfaces[1].map_gen_settings.seed - --surface.destroy_decoratives({area = event.area}) + --surface.destroy_decoratives({area = event.area}) - for _, e in pairs(surface.find_entities_filtered({area = event.area})) do - process_entity(e) - end + for _, e in pairs(surface.find_entities_filtered({area = event.area})) do + process_entity(e) + end - for x = 0.5, 31.5, 1 do - for y = 0.5, 31.5, 1 do - local tile_to_insert = false - local pos = {x = left_top.x + x, y = left_top.y + y} + for x = 0.5, 31.5, 1 do + for y = 0.5, 31.5, 1 do + local pos = {x = left_top.x + x, y = left_top.y + y} - local tile = surface.get_tile(pos) - if tile_replacements[tile.name] then - table_insert(tiles, {name = tile_replacements[tile.name], position = pos}) - end + local tile = surface.get_tile(pos) + if tile_replacements[tile.name] then + table_insert(tiles, {name = tile_replacements[tile.name], position = pos}) + end - process_tile(surface, pos, tile, seed) - end - end - surface.set_tiles(tiles, true) + process_tile(surface, pos, tile, seed) + end + end + surface.set_tiles(tiles, true) - for _, e in pairs(surface.find_entities_filtered({area = event.area, type = "unit-spawner"})) do - for _, entity in pairs (e.surface.find_entities_filtered({area = {{e.position.x - 7, e.position.y - 7},{e.position.x + 7, e.position.y + 7}}, force = "neutral"})) do - if entity.valid then entity.destroy() end - end - end + for _, e in pairs(surface.find_entities_filtered({area = event.area, type = 'unit-spawner'})) do + for _, entity in pairs( + e.surface.find_entities_filtered( + {area = {{e.position.x - 7, e.position.y - 7}, {e.position.x + 7, e.position.y + 7}}, force = 'neutral'} + ) + ) do + if entity.valid then + entity.destroy() + end + end + end - if global.spawn_generated then return end - if left_top.x < 96 then return end + if global.spawn_generated then + return + end + if left_top.x < 96 then + return + end - for _, e in pairs (surface.find_entities_filtered({area = {{-50, -50},{50, 50}}})) do - local distance_to_center = math.sqrt(e.position.x^2 + e.position.y^2) - if e.valid then - if distance_to_center < 8 and e.type == "tree" and math_random(1,5) ~= 1 then e.destroy() end - end - end - global.spawn_generated = true + for _, e in pairs(surface.find_entities_filtered({area = {{-50, -50}, {50, 50}}})) do + local distance_to_center = math.sqrt(e.position.x ^ 2 + e.position.y ^ 2) + if e.valid then + if distance_to_center < 8 and e.type == 'tree' and math_random(1, 5) ~= 1 then + e.destroy() + end + end + end + global.spawn_generated = true end local function on_marked_for_deconstruction(event) - if disabled_for_deconstruction[event.entity.name] then - event.entity.cancel_deconstruction(game.players[event.player_index].force.name) - end - if event.entity.type == "tree" then - event.entity.cancel_deconstruction(game.players[event.player_index].force.name) - end + if disabled_for_deconstruction[event.entity.name] then + event.entity.cancel_deconstruction(game.players[event.player_index].force.name) + end + if event.entity.type == 'tree' then + event.entity.cancel_deconstruction(game.players[event.player_index].force.name) + end end -local function on_player_joined_game(event) - local player = game.players[event.player_index] - local surface = player.surface - if global.map_choppy_init_done then return end +local function on_player_joined_game() + if global.map_choppy_init_done then + return + end - --game.map_settings.pollution.min_pollution_to_damage_trees = 1000000 - --game.map_settings.pollution.pollution_per_tree_damage = 0 - --game.map_settings.pollution.pollution_restored_per_tree_damage = 0 + --game.map_settings.pollution.min_pollution_to_damage_trees = 1000000 + --game.map_settings.pollution.pollution_per_tree_damage = 0 + --game.map_settings.pollution.pollution_restored_per_tree_damage = 0 - game.surfaces["choppy"].ticks_per_day = game.surfaces["choppy"].ticks_per_day * 2 + game.surfaces['choppy'].ticks_per_day = game.surfaces['choppy'].ticks_per_day * 2 - global.entity_yield = { - ["tree-01"] = {"iron-ore"}, - ["tree-02-red"] = {"copper-ore"}, - ["tree-04"] = {"coal"}, - ["tree-08-brown"] = {"stone"}, - ["rock-big"] = {"uranium-ore"}, - ["rock-huge"] = {"uranium-ore"} - } + global.entity_yield = { + ['tree-01'] = {'iron-ore'}, + ['tree-02-red'] = {'copper-ore'}, + ['tree-04'] = {'coal'}, + ['tree-08-brown'] = {'stone'}, + ['rock-big'] = {'uranium-ore'}, + ['rock-huge'] = {'uranium-ore'} + } - if game.item_prototypes["angels-ore1"] then - global.entity_yield["tree-01"] = {"angels-ore1", "angels-ore2"} - global.entity_yield["tree-02-red"] = {"angels-ore5", "angels-ore6"} - global.entity_yield["tree-04"] = {"coal"} - global.entity_yield["tree-08-brown"] = {"angels-ore3", "angels-ore4"} - else - game.map_settings.pollution.ageing = 0 - end + if game.item_prototypes['angels-ore1'] then + global.entity_yield['tree-01'] = {'angels-ore1', 'angels-ore2'} + global.entity_yield['tree-02-red'] = {'angels-ore5', 'angels-ore6'} + global.entity_yield['tree-04'] = {'coal'} + global.entity_yield['tree-08-brown'] = {'angels-ore3', 'angels-ore4'} + else + game.map_settings.pollution.ageing = 0 + end - if game.item_prototypes["thorium-ore"] then - global.entity_yield["rock-big"] = {"uranium-ore", "thorium-ore"} - global.entity_yield["rock-huge"] = {"uranium-ore", "thorium-ore"} - end + if game.item_prototypes['thorium-ore'] then + global.entity_yield['rock-big'] = {'uranium-ore', 'thorium-ore'} + global.entity_yield['rock-huge'] = {'uranium-ore', 'thorium-ore'} + end - global.map_choppy_init_done = true + global.map_choppy_init_done = true end local function changed_surface(event) - local player = game.players[event.player_index] - local surface = player.surface - if surface.name ~= "choppy" then goto continue end - player.print("Warped to Choppy!", { r=0.10, g=0.75, b=0.5}) - player.play_sound {path = 'utility/mining_wood', volume_modifier = 1} - if player.gui.top["caver_miner_stats_toggle_button"] then player.gui.top["caver_miner_stats_toggle_button"].destroy() end - if player.gui.left["cave_miner_info"] then player.gui.left["cave_miner_info"].destroy() end - if player.gui.top["hunger_frame"] then player.gui.top["hunger_frame"].destroy() end - if player.gui.top["caver_miner_stats_frame"] then player.gui.top["caver_miner_stats_frame"].destroy() end - --create_map_intro(player) - create_map_intro_button(player) - create_choppy_stats_gui(player) + local player = game.players[event.player_index] + local surface = player.surface + if surface.name ~= 'choppy' then + goto continue + end + player.print('Warped to Choppy!', {r = 0.10, g = 0.75, b = 0.5}) + player.play_sound {path = 'utility/mining_wood', volume_modifier = 1} + if player.gui.top['caver_miner_stats_toggle_button'] then + player.gui.top['caver_miner_stats_toggle_button'].destroy() + end + if player.gui.left['cave_miner_info'] then + player.gui.left['cave_miner_info'].destroy() + end + if player.gui.top['hunger_frame'] then + player.gui.top['hunger_frame'].destroy() + end + if player.gui.top['caver_miner_stats_frame'] then + player.gui.top['caver_miner_stats_frame'].destroy() + end + create_choppy_stats_gui(player) - player.print(choppy_messages[math_random(1,#choppy_messages)], { r=0.10, g=0.75, b=0.5}) - ::continue:: + player.print(choppy_messages[math_random(1, #choppy_messages)], {r = 0.10, g = 0.75, b = 0.5}) + ::continue:: end local function get_amount(entity) - local distance_to_center = math.sqrt(entity.position.x^2 + entity.position.y^2) - local amount = 25 + (distance_to_center * 0.1) - if amount > 1000 then amount = 1000 end - amount = math.random(math.ceil(amount * 0.5), math.ceil(amount * 1.5)) - return amount + local distance_to_center = math.sqrt(entity.position.x ^ 2 + entity.position.y ^ 2) + local amount = 25 + (distance_to_center * 0.1) + if amount > 1000 then + amount = 1000 + end + amount = math.random(math.ceil(amount * 0.5), math.ceil(amount * 1.5)) + return amount end local function trap(entity) - if math_random(1,1024) == 1 then tick_tack_trap(entity.surface, entity.position) return end - if math_random(1,256) == 1 then unearthing_worm(entity.surface, entity.position) end - if math_random(1,128) == 1 then unearthing_biters(entity.surface, entity.position, math_random(4,8)) end + if math_random(1, 1024) == 1 then + tick_tack_trap(entity.surface, entity.position) + return + end + if math_random(1, 256) == 1 then + unearthing_worm(entity.surface, entity.position) + end + if math_random(1, 128) == 1 then + unearthing_biters(entity.surface, entity.position, math_random(4, 8)) + end end local function on_player_mined_entity(event) - local entity = event.entity - local surface = entity.surface - if surface ~= game.surfaces["choppy"] then return end - if not entity.valid then return end + local entity = event.entity + local surface = entity.surface + if surface ~= game.surfaces['choppy'] then + return + end + if not entity.valid then + return + end - if entity.type == "tree" then - trap(entity) - end + if entity.type == 'tree' then + trap(entity) + end - if global.entity_yield[entity.name] then - if event.buffer then event.buffer.clear() end - if not event.player_index then return end - local amount = get_amount(entity) - local second_item_amount = math_random(2,5) - local second_item = "wood" + if global.entity_yield[entity.name] then + if event.buffer then + event.buffer.clear() + end + if not event.player_index then + return + end + local amount = get_amount(entity) + local second_item_amount = math_random(2, 5) + local second_item = 'wood' - if entity.type == "simple-entity" then - amount = amount * 2 - second_item_amount = math_random(8,16) - second_item = "stone" - end + if entity.type == 'simple-entity' then + amount = amount * 2 + second_item_amount = math_random(8, 16) + second_item = 'stone' + end - local main_item = global.entity_yield[entity.name][math_random(1,#global.entity_yield[entity.name])] - local amount_of_choppie = math.round(amount * 0.15,0) + local main_item = global.entity_yield[entity.name][math_random(1, #global.entity_yield[entity.name])] - entity.surface.create_entity({ - name = "flying-text", - position = entity.position, - text = "+" .. amount .. " [item=" .. main_item .. "] +" .. second_item_amount .. " [item=" .. second_item .. "]", - color = {r=0.8,g=0.8,b=0.8}}) + entity.surface.create_entity( + { + name = 'flying-text', + position = entity.position, + text = '+' .. + amount .. ' [item=' .. main_item .. '] +' .. second_item_amount .. ' [item=' .. second_item .. ']', + color = {r = 0.8, g = 0.8, b = 0.8} + } + ) - global.stats_ores_found = global.stats_ores_found + amount - global.stats_wood_chopped = global.stats_wood_chopped + 1 - refresh_gui() + global.stats_ores_found = global.stats_ores_found + amount + global.stats_wood_chopped = global.stats_wood_chopped + 1 + refresh_gui() - local player = game.players[event.player_index] + local player = game.players[event.player_index] - local inserted_count = player.insert({name = main_item, count = amount}) - amount = amount - inserted_count - if amount > 0 then - entity.surface.spill_item_stack(entity.position,{name = main_item, count = amount}, true) - end + local inserted_count = player.insert({name = main_item, count = amount}) + amount = amount - inserted_count + if amount > 0 then + entity.surface.spill_item_stack(entity.position, {name = main_item, count = amount}, true) + end - local inserted_count = player.insert({name = second_item, count = second_item_amount}) - second_item_amount = second_item_amount - inserted_count - if second_item_amount > 0 then - entity.surface.spill_item_stack(entity.position,{name = second_item, count = second_item_amount}, true) - end - end + local inserted_count = player.insert({name = second_item, count = second_item_amount}) + second_item_amount = second_item_amount - inserted_count + if second_item_amount > 0 then + entity.surface.spill_item_stack(entity.position, {name = second_item, count = second_item_amount}, true) + end + end end local function on_research_finished(event) - event.research.force.character_inventory_slots_bonus = game.forces.player.mining_drill_productivity_bonus * 500 - if not event.research.force.technologies["steel-axe"].researched then return end - event.research.force.manual_mining_speed_modifier = 1 + game.forces.player.mining_drill_productivity_bonus * 2 - refresh_gui() + event.research.force.character_inventory_slots_bonus = game.forces.player.mining_drill_productivity_bonus * 500 + if not event.research.force.technologies['steel-axe'].researched then + return + end + event.research.force.manual_mining_speed_modifier = 1 + game.forces.player.mining_drill_productivity_bonus * 2 + refresh_gui() end local function on_entity_died(event) - if event.entity.surface.name ~= "choppy" then return end - on_player_mined_entity(event) + if event.entity.surface.name ~= 'choppy' then + return + end + on_player_mined_entity(event) - if not event.entity.valid then return end - if event.entity.type == "tree" then - for _, entity in pairs (event.entity.surface.find_entities_filtered({area = {{event.entity.position.x - 4, event.entity.position.y - 4},{event.entity.position.x + 4, event.entity.position.y + 4}}, name = "fire-flame-on-tree"})) do - if entity.valid then entity.destroy() end - end - end + if not event.entity.valid then + return + end + if event.entity.type == 'tree' then + for _, entity in pairs( + event.entity.surface.find_entities_filtered( + { + area = { + {event.entity.position.x - 4, event.entity.position.y - 4}, + {event.entity.position.x + 4, event.entity.position.y + 4} + }, + name = 'fire-flame-on-tree' + } + ) + ) do + if entity.valid then + entity.destroy() + end + end + end end local function init_surface(surface) - surface.map_gen_settings = {} - return surface + surface.map_gen_settings = {} + return surface end local function init() - local storage = {} - local newPlace = init_surface(game.create_surface("choppy")) - local surface = game.surfaces["choppy"] - newPlace.request_to_generate_chunks({0,0}, 4) - global.surface_choppy_elevator = surface.create_entity({name = "player-port", position = {1, -4}, force = game.forces.neutral}) - global.surface_choppy_chest = Module.create_chest(surface, {1, -8}, storage) + local storage = {} + local newPlace = init_surface(game.create_surface('choppy')) + local surface = game.surfaces['choppy'] + newPlace.request_to_generate_chunks({0, 0}, 4) + global.surface_choppy_elevator = + surface.create_entity({name = 'player-port', position = {1, -4}, force = game.forces.neutral}) + global.surface_choppy_chest = Module.create_chest(surface, {1, -8}, storage) - rendering.draw_text{ - text = "Storage", - surface = surface, - target = global.surface_choppy_chest, - target_offset = {0, 0.4}, - color = { r=0.98, g=0.66, b=0.22}, - alignment = "center" - } + rendering.draw_text { + text = 'Storage', + surface = surface, + target = global.surface_choppy_chest, + target_offset = {0, 0.4}, + color = {r = 0.98, g = 0.66, b = 0.22}, + alignment = 'center' + } - rendering.draw_text{ - text = "Elevator", - surface = surface, - target = global.surface_choppy_elevator, - target_offset = {0, 1}, - color = { r=0.98, g=0.66, b=0.22}, - alignment = "center" - } + rendering.draw_text { + text = 'Elevator', + surface = surface, + target = global.surface_choppy_elevator, + target_offset = {0, 1}, + color = {r = 0.98, g = 0.66, b = 0.22}, + alignment = 'center' + } - global.surface_choppy_chest.minable = false - global.surface_choppy_chest.destructible = false - global.surface_choppy_elevator.minable = false - global.surface_choppy_elevator.destructible = false + global.surface_choppy_chest.minable = false + global.surface_choppy_chest.destructible = false + global.surface_choppy_elevator.minable = false + global.surface_choppy_elevator.destructible = false end -event.on_init(init) -event.add(defines.events.on_player_changed_surface, changed_surface) -event.add(defines.events.on_research_finished, on_research_finished) -event.add(defines.events.on_marked_for_deconstruction, on_marked_for_deconstruction) -event.add(defines.events.on_player_joined_game, on_player_joined_game) -event.add(defines.events.on_player_mined_entity, on_player_mined_entity) -event.add(defines.events.on_entity_died, on_entity_died) -event.add(defines.events.on_gui_click, on_gui_click) -event.add(defines.events.on_chunk_generated, on_chunk_generated) +Event.on_init(init) +Event.add(defines.events.on_player_changed_surface, changed_surface) +Event.add(defines.events.on_research_finished, on_research_finished) +Event.add(defines.events.on_marked_for_deconstruction, on_marked_for_deconstruction) +Event.add(defines.events.on_player_joined_game, on_player_joined_game) +Event.add(defines.events.on_player_mined_entity, on_player_mined_entity) +Event.add(defines.events.on_entity_died, on_entity_died) +Event.add(defines.events.on_gui_click, on_gui_click) +Event.add(defines.events.on_chunk_generated, on_chunk_generated) diff --git a/maps/cave_choppy/player_elevator.lua b/maps/cave_choppy/player_elevator.lua index 16e27223..33f671ca 100644 --- a/maps/cave_choppy/player_elevator.lua +++ b/maps/cave_choppy/player_elevator.lua @@ -1,68 +1,88 @@ -local Event = require "utils.event" -local Global = require "utils.global" +local Event = require 'utils.event' +local Global = require 'utils.global' local function validate_player(player) - if not player then return false end - if not player.valid then return false end - if not player.character then return false end - if not player.connected then return false end - if not game.players[player.name] then return false end - return true + if not player then + return false + end + if not player.valid then + return false + end + if not player.character then + return false + end + if not player.connected then + return false + end + if not game.players[player.name] then + return false + end + return true end local cooldowns = {} local chests = {} local inventories = {} -Global.register({ - chests = chests, - inventories = inventories -}, function(global) - chests = global.chests - inventories = global.inventories -end) - -Global.register({ - cooldowns = cooldowns -}, function(global) - cooldowns = global.cooldowns -end) - - - -local function check_player_ports(event) - for _, player in pairs(game.connected_players) do - if not validate_player(player) then goto continue end - - if not cooldowns[player.name] then - cooldowns[player.name] = game.tick +Global.register( + { + chests = chests, + inventories = inventories + }, + function(global) + chests = global.chests + inventories = global.inventories end - - --if cooldowns[player.name] - game.tick > 0 then goto continue end +) - if player.surface.find_entity("player-port", player.position) then - if cooldowns[player.name] > game.tick then - player.play_sound{path="utility/armor_insert", volume_modifier=1} - if math.random(1,3) == 1 then - player.surface.create_entity({ - name = "flying-text", - position = player.position, - text = math.ceil((cooldowns[tostring(player.name)] - game.tick)/60), - color = {r = math.random(130, 170), g = math.random(130, 170), b = 130} - }) +Global.register( + { + cooldowns = cooldowns + }, + function(global) + cooldowns = global.cooldowns + end +) + +local function check_player_ports() + for _, player in pairs(game.connected_players) do + if not validate_player(player) then + goto continue end - goto continue end - local surface_name = player.surface.name == "cave_miner" and "choppy" or "cave_miner" - local pos = surface_name == "cave_miner" and global.surface_cave_elevator.position or {1, -4} - local safe_pos = game.surfaces[surface_name].find_non_colliding_position("character", pos, 20, 1) - if safe_pos then - player.teleport(safe_pos, surface_name) - else - player.teleport({0, -3}, surface_name) - end - cooldowns[player.name] = game.tick + 900 - end ---[[ + + if not cooldowns[player.name] then + cooldowns[player.name] = game.tick + end + + --if cooldowns[player.name] - game.tick > 0 then goto continue end + + if player.surface.find_entity('player-port', player.position) then + if cooldowns[player.name] > game.tick then + player.play_sound {path = 'utility/armor_insert', volume_modifier = 1} + if math.random(1, 3) == 1 then + player.surface.create_entity( + { + name = 'flying-text', + position = player.position, + text = math.ceil((cooldowns[tostring(player.name)] - game.tick) / 60), + color = {r = math.random(130, 170), g = math.random(130, 170), b = 130} + } + ) + end + goto continue + end + local surface_name = player.surface.name == 'cave_miner' and 'choppy' or 'cave_miner' + local pos = surface_name == 'cave_miner' and global.surface_cave_elevator.position or {1, -4} + local safe_pos = game.surfaces[surface_name].find_non_colliding_position('character', pos, 20, 1) + if safe_pos then + player.teleport(safe_pos, surface_name) + else + player.teleport({0, -3}, surface_name) + end + cooldowns[player.name] = game.tick + 900 + end + -- + --[[ if cooldowns[player.name] > game.tick then local text = rendering.draw_text{ text = "Cooldown:" .. math.ceil((cooldowns[player.name] - game.tick)/60) .. " seconds", @@ -77,70 +97,73 @@ local function check_player_ports(event) end if math.random(1, 2) == 1 then rendering.destroy(text) -]]-- - ::continue:: - end +]] ::continue:: + end end local function built_entity(event) - local entity = event.created_entity - if not entity or not entity.valid then return end - if entity.name ~= "player-port" then return end - - entity.minable = false - entity.destructible = false - entity.operable = false - + local entity = event.created_entity + if not entity or not entity.valid then + return + end + if entity.name ~= 'player-port' then + return + end - local surface = entity.surface + entity.minable = false + entity.destructible = false + entity.operable = false end local function tick() - - if not chests["cave_miner"] then - chests["cave_miner"] = global.surface_cave_chest - end - - if not chests["choppy"] then - chests["choppy"] = global.surface_choppy_chest - end - - local cave = chests["cave_miner"] - local tree = chests["choppy"] - - if not cave or not tree then return end - if not cave.valid or not tree.valid then return end - - local civ = tree.get_inventory(defines.inventory.chest) - local oiv = cave.get_inventory(defines.inventory.chest) - - local ci = civ.get_contents() - local oi = oiv.get_contents() - for item, count in pairs(ci) do - local count2 = oi[item] or 0 - local diff = count-count2 - if diff > 1 then - local count2 = oiv.insert{name = item, count = math.floor(diff/2)} - if count2 > 0 then - civ.remove{name = item, count = count2} - end - elseif diff < -1 then - local count2 = civ.insert{name = item, count = math.floor(-diff/2)} - if count2 > 0 then - oiv.remove{name = item, count = count2} - end + if not chests['cave_miner'] then + chests['cave_miner'] = global.surface_cave_chest end - end - for item, count in pairs(oi) do - if count > 1 and not ci[item] then - local count2 = civ.insert{name = item, count = math.floor(count/2)} - if count2 > 0 then - oiv.remove{name = item, count = count2} - end + + if not chests['choppy'] then + chests['choppy'] = global.surface_choppy_chest + end + + local cave = chests['cave_miner'] + local tree = chests['choppy'] + + if not cave or not tree then + return + end + if not cave.valid or not tree.valid then + return + end + + local civ = tree.get_inventory(defines.inventory.chest) + local oiv = cave.get_inventory(defines.inventory.chest) + + local ci = civ.get_contents() + local oi = oiv.get_contents() + for item, count in pairs(ci) do + local count2 = oi[item] or 0 + local diff = count - count2 + if diff > 1 then + local count2 = oiv.insert {name = item, count = math.floor(diff / 2)} + if count2 > 0 then + civ.remove {name = item, count = count2} + end + elseif diff < -1 then + local count2 = civ.insert {name = item, count = math.floor(-diff / 2)} + if count2 > 0 then + oiv.remove {name = item, count = count2} + end + end + end + for item, count in pairs(oi) do + if count > 1 and not ci[item] then + local count2 = civ.insert {name = item, count = math.floor(count / 2)} + if count2 > 0 then + oiv.remove {name = item, count = count2} + end + end end - end end Event.add(defines.events.on_tick, tick) Event.on_nth_tick(60, check_player_ports) -Event.add(defines.events.on_built_entity, built_entity) \ No newline at end of file +Event.add(defines.events.on_built_entity, built_entity)