diff --git a/mods/mg_villages/README.md b/mods/mg_villages/README.md new file mode 100644 index 0000000..a11c85c --- /dev/null +++ b/mods/mg_villages/README.md @@ -0,0 +1,3 @@ +This is a continuation of my (Sokomines) fork of Nores mg mapgen. +The fork can be found under https://github.com/Sokomine/mg + diff --git a/mods/mg_villages/analyze_building_for_mobs.lua b/mods/mg_villages/analyze_building_for_mobs.lua new file mode 100644 index 0000000..111710e --- /dev/null +++ b/mods/mg_villages/analyze_building_for_mobs.lua @@ -0,0 +1,254 @@ + +-- helper function for mg_villages.analyze_building_for_mobs_update_paths +-- "res" is the raw data as provided by analyze_file +-- "node_name" is the name of the node we are looking for +mg_villages.analyze_building_for_mobs_search_nodes = function( res, node_name, check_place_for_standing ) + local node_positions = {}; + -- find out if the building contains any of the nodes we are looking for + local found = -1; + for i,n in ipairs( res.nodenames ) do + if( n == node_name ) then + found = i; + end + end + -- that node does not exist in the building + if( found == -1 ) then + return {}; + end + + for z = 1, res.size.z do + for y = 1, res.size.y do + for x = 1, res.size.x do + if( res.scm_data_cache[y] + and res.scm_data_cache[y][x] + and res.scm_data_cache[y][x][z] + and res.scm_data_cache[y][x][z][1] == found ) then + + if( (check_place_for_standing==false) +) then +-- or ( mob_world_interaction.can_stand_in_node_type( TODO ) +-- and mob_world_interaction.can_stand_in_node_type( TODO ))) then + table.insert( node_positions, {x=x, y=y, z=z, p2=res.scm_data_cache[y][x][z][2]}); + end + end + end + end + end + return node_positions; +end + + + + +-- changes path_info and adds paths from beds and workplaces to front of building +-- path_info[ short_file_name ] contains the paths from the beds +-- path_info[ short_file_name.."|WORKPLACE" ] contains the paths from the workplaces +-- creates building_data.all_entrances +-- creates building_data.workplace_list +mg_villages.analyze_building_for_mobs_update_paths = function( file_name, building_data, path_info ) + + local short_file_name = string.sub(file_name, mg_villages.file_name_offset, 256); + building_data.short_file_name = short_file_name; + + if( not( minetest.get_modpath( "mob_world_interaction" ))) then + return building_data; + end + + -- identify front doors and paths to them from the beds + -- TODO: provide a more general list with beds, work places etc. + if( building_data.bed_list + and #building_data.bed_list > 0 ) then + if(not( path_info[ short_file_name ])) then + print("BEDS in "..tostring( short_file_name )..":"); + path_info[ short_file_name ] = mob_world_interaction.find_all_front_doors( building_data, building_data.bed_list ); + end + -- we are looking for the places in front of the front doors; not the front doors themshelves + building_data.all_entrances = {}; + for i,e in ipairs( path_info[ short_file_name ] ) do + -- the last entry in the list for the first bed is what we are looking for + -- (provided there actually is a path) + if( e[1] and #e[1]>0 ) then + table.insert( building_data.all_entrances, e[1][ #e[1] ]); + end + end + end + + -- some buildings (i.e. a tavern, school, shop, church, ...) contain places where a mob working + -- there will most likely be standing, awaiting his guests/doing his job. Such places can be + -- manually marked by placing mg_villages:mob_workplace_marker + + -- this is diffrent information from the normal bed list + local store_as = short_file_name.."|WORKPLACE"; + if(not( path_info[ store_as ] )) then + local workplace_list = mg_villages.analyze_building_for_mobs_search_nodes( building_data, "mg_villages:mob_workplace_marker", false ); + + if( workplace_list and #workplace_list>0) then + -- store it for later use + building_data.workplace_list = workplace_list; + + print("WORKPLACE: "..tostring( building_data.short_file_name )..": "..minetest.serialize( workplace_list )); + path_info[ store_as ] = mob_world_interaction.find_all_front_doors( building_data, workplace_list ); + + -- if no entrances are known yet, then store them now; the entrances associated with + -- beds are considered to be more important. This here is only a fallback if no beds + -- exist in the house. + if( not( building_data.all_entrances )) then + -- we are looking for the places in front of the front doors; not the front doors themshelves + building_data.all_entrances = {}; + for i,e in ipairs( path_info[ store_as ] ) do + -- might just be the place outside the house instead of a door + if( e[1] and #e[1]>0 ) then + table.insert( building_data.all_entrances, e[1][ #e[1] ]); + end + end + end +-- else +-- print("NO workplace found in "..tostring(building_data.short_file_name )); + end + end + +--[[ +TODO: check if 2 nodes above the target node are air or walkable; +TODO: exceptions to that: bench (only 1 above needs to be walkable) +TODO: other exceptions: furnace, chests, washing place: place in front is wanted - not on top +TODO: search for: + local pos_list = mg_villages.analyze_building_for_mobs_search_nodes( building_data, "farming:soil_wet", true ); +farming:soil farming:soil_wet +cottages:straw_ground +default:chest cottages:shelf cottages:chest_storage cottages:chest_private cottages:chest_work +cottages:bench (cottages:table?) +cottages:washing +default:furnace +cottages:barrel (and variants); cottages:tub + +default:ladder +default:fence_wood cottages:gate_closed cottages:gate_open +any door... +any hatch... +--]] + + -- some debug information + if( mg_villages.DEBUG_LEVEL and mg_villages.DEBUG_LEVEL == mg_villages.DEBUG_LEVEL_TIMING ) then + local str2 = " in "..short_file_name.." ["..building_data.typ.."]"; + if( not( path_info[ short_file_name ] ) + and not( path_info[ store_as ] )) then + str2 = "nothing of intrest (no bed, no workplace)"..str2; + elseif( path_info[ short_file_name ] + and (#path_info[ short_file_name ]<1 + or #path_info[ short_file_name ][1]<1 + or #path_info[ short_file_name ][1][1]<1 )) then + str2 = "BROKEN paths for beds"..str2; + elseif( path_info[ store_as ] + and (#path_info[ store_as ]<1 + or #path_info[ store_as ][1]<1 + or #path_info[ store_as ][1][1]<1 )) then + str2 = "BROKEN paths for workplaces"..str2; + else + if( path_info[ store_as ] ) then + str2 = tostring( #path_info[ store_as ][1]-1 ).. + " workplaces"..str2; + else + str2 = "no workplaces"..str2; + end + if( path_info[ short_file_name ] ) then + str2 = tostring( #path_info[ short_file_name ][1]-1 ).. + " beds and "..str2; + else + str2 = "no beds and "..str2; + end + end + print( str2 ); + end + return building_data; +end + + + +-- Calls mg_villages.analyze_building_for_mobs_update_paths and evaluates the output: +-- * determines the position of front doors (building_data.front_door_list) +-- * position of beds (building_data.bed_list) +-- * places where mobs can stand when they got up from their bed or want +-- to go to bed (building_data.stand_next_to_bed_list) +-- * amount of usable beds in the house (building_data.bed_count) +-- * position of workplaces where a currently working mob may want to +-- stand (i.e. behind a shop's counter, next to a machine, in front +-- of the class/congregation, ..) (building_data.workplace_list) +-- Returns: Updated building_data with the values mentionned above set. +-- building_data Information about the building as gained from registration +-- and from handle_schematics.analze_file(..) +-- file_name with complete path to the schematic +-- path_info Data structure where path_info (paths from doors to beds etc.) +-- is cached. +mg_villages.analyze_building_for_mobs = function( building_data, file_name, path_info ) + + -- identify front doors, calculate paths from beds/workplaces to front of house + building_data = mg_villages.analyze_building_for_mobs_update_paths( file_name, building_data, path_info ); + + -- building_data.bed_list and building_data.workspace_list are calculated withhin + -- the above function - provided they are not part of path_info yet; + -- the information stored in path_info is the relevant one for mob movement/pathfinding + + -- store the front doors in extra list + building_data.front_door_list = {}; + -- gain the list of beds from path_info data + building_data.bed_list = {}; + -- mobs are seldom able to stand directly on or even next to the bed when getting up + building_data.stand_next_to_bed_list = {}; + -- have any beds been found? + if( building_data.short_file_name + and path_info[ building_data.short_file_name ] ) then + local paths = path_info[ building_data.short_file_name]; + if( paths and paths[1] ) then + -- iterate over all bed-to-first-front-door-paths (we want to identify beds) + for i,p in ipairs( paths[1] ) do + -- the last entry has a diffrent meaning + if( p and p[1] and i<#paths[1]) then + -- param2 is the 5th parameter + building_data.bed_list[i] = {p[1][1],p[1][2],p[1][3],p[1][5]}; + -- also store where the mob may stand + if( p[2] ) then + building_data.stand_next_to_bed_list[i] = p[2]; + end + end + end + -- iterate over all paths and take a look at the first bed only (we want to + -- get the doors now, not the beds) + for i,p in ipairs( paths ) do + -- paths[i]: paths from all beds to front door i + -- paths[i][1]: path from first bed to front door i + if( p and p[1] ) then + -- the place in front of the door is the last entry + local d = p[1][ #p[1] ]; + building_data.front_door_list[i] = {d[1],d[2],d[3]}; + end + end + end + end + -- make sure this refers to the same data as building_data.bed_list + building_data.bed_count = #building_data.bed_list; + + -- gain the list of workplaces from the path_info data + building_data.workplace_list = {}; + -- have any workplaces been found? + if( building_data.short_file_name + and path_info[ building_data.short_file_name.."|WORKPLACE" ] ) then + local paths = path_info[ building_data.short_file_name.."|WORKPLACE"]; + if( paths and paths[1] ) then + for i,p in ipairs( paths[1] ) do + if( p and p[1] and i<#paths[1]) then + building_data.workplace_list[i] = {p[1][1],p[1][2],p[1][3],p[1][4]}; + end + end + -- no front doors found through beds? then take a look if the workplaces found doors + if( #building_data.front_door_list < 1 ) then + for i,p in ipairs( paths ) do + if( p and p[1] ) then + local d = p[1][ #p[1] ]; + building_data.front_door_list[i] = {d[1],d[2],d[3]}; + end + end + end + end + end + return building_data; +end diff --git a/mods/mg_villages/buildings.lua b/mods/mg_villages/buildings.lua new file mode 100644 index 0000000..1a6d3c2 --- /dev/null +++ b/mods/mg_villages/buildings.lua @@ -0,0 +1,425 @@ +-- scm="bla" Name of the file that holds the buildings' schematic. Supported types: .we and .mts (omit the extension!) +-- sizex, sizez, ysize: obsolete +-- yoff=0 how deep is the building burried? +-- pervillage=1 Never generate more than this amount of this building and this type (if set) of building per village. +-- axis=1 Building needs to be mirrored along the x-axis instead of the z-axis because it is initially rotated +-- inh=2 maximum amount of inhabitants the building may hold (usually amount of beds present) +-- if set to i.e. -1, this indicates that a mob is WORKING, but not LIVING here +-- we_origin Only needed for very old .we files (savefile format version 3) which do not start at 0,0,0 but have an offset. +-- price Stack that has to be paid in order to become owner of the plot the building stands on and the building; +-- overrides mg_villages.prices[ building_typ ]. +-- guests Negative value, i.e. -2: 2 of the beds will belong to the family working here; the rest will be guests. +-- For building type "chateau", guest names the number of servants/housemaids instead of guests. + +mg_villages.all_buildings_list = {} + +local buildings = { + +-- the houses the mod came with + {yoff= 0, scm="house_1_0", typ='house', weight={nore=1, single=2 }, inh=4}, + {yoff= 0, scm="wheat_field", typ='field', weight={nore=1 }, inh=-1}, + {yoff= 0, scm="cotton_field", typ='field', weight={nore=1 }, inh=-1}, + {yoff= 1, scm="lamp", no_rotate=true, typ='lamp', weight={nore=1/5 }}, + {yoff=-5, scm="well", no_rotate=true, pervillage=1, typ='well', weight={nore=1 }}, + {yoff= 0, scm="fountain", pervillage=3, typ='fountain', weight={nore=1/4 }, axis=1}, + {yoff= 0, scm="small_house_1_0", typ='house', weight={nore=1, single=2 }, inh=2}, + {yoff= 0, scm="house_with_garden_1_0", typ='house', weight={nore=1, single=2 }, inh=3}, + {yoff= 0, scm="church_1_0", pervillage=1, typ='church', weight={nore=1 }, inh=-1}, + {yoff= 0, scm="tower_1_0", typ='tower', weight={nore=1/7, single=1 }, inh=-1}, + {yoff= 0, scm="forge_1_0", pervillage=2, typ='forge', weight={nore=1, single=1/3 }, inh=-1}, + {yoff= 0, scm="library_1_0", pervillage=2, typ='library', weight={nore=1 }, inh=-1}, + {yoff= 0, scm="inn_1_0", pervillage=4, typ='inn', weight={nore=1/2, single=1/3 }, inh=-1, guests=-2}, -- has room for 4 guests + {yoff= 0, scm="pub_1_0", pervillage=2, typ='tavern', weight={nore=1/3, single=1/3 }, inh=-1}, + + +-- log cabins by Sokomine (requiring cottages, glasspanes) + {yoff= 0, scm="logcabin1", orients={1}, weight={logcabin=1, single=1}, axis=1, inh=2, typ='hut'}, + {yoff= 0, scm="logcabin2", orients={1}, weight={logcabin=1, single=1}, axis=1, inh=2, typ='hut'}, + {yoff= 0, scm="logcabin3", orients={1}, weight={logcabin=1, single=1}, axis=1, inh=3, typ='hut'}, + {yoff= 0, scm="logcabin4", orients={1}, weight={logcabin=1, single=1}, axis=1, inh=3, typ='hut'}, + {yoff= 0, scm="logcabin5", orients={1}, weight={logcabin=1, single=1}, axis=1, inh=1, typ='hut'}, + {yoff= 0, scm="logcabin6", orients={1}, weight={logcabin=1, single=1}, axis=1, inh=1, typ='hut'}, + {yoff= 0, scm="logcabin7", orients={1}, weight={logcabin=1, single=1}, axis=1, inh=2, typ='hut'}, + {yoff= 0, scm="logcabin8", orients={1}, weight={logcabin=1, single=1}, axis=1, inh=2, typ='hut'}, + {yoff= 0, scm="logcabin9", orients={1}, weight={logcabin=1, single=1}, axis=1, inh=1, typ='hut'}, + {yoff= 0, scm="logcabin10", orients={2}, weight={logcabin=1, single=1}, inh=3, typ='hut'}, + {yoff= 0, scm="logcabin11", orients={1}, weight={logcabin=1, single=1}, inh=6, typ='hut'}, + {yoff= 0, scm="logcabinpub1", orients={1}, weight={logcabin=1/6, single=1}, pervillage=1, typ='tavern', axis=1, inh=1, guests=-2}, -- +5 guests + {yoff= 0, scm="logcabinpub2", orients={1}, weight={logcabin=1/6, single=1}, pervillage=1, typ='tavern', axis=1, inh=2, guests=-3}, -- +8 guests + {yoff= 0, scm="logcabinpub3", orients={1}, weight={logcabin=1/6, single=1}, pervillage=1, typ='tavern', axis=1, inh=2, guests=-4}, -- +12 guest + +-- grass huts (requiring cottages, dryplants, cavestuff/undergrowth, plantlife) + {yoff= 0, scm="grasshut1_1_90", weight={grasshut=1, single=1}, nomirror=1, typ='hut'}, + {yoff= 0, scm="grasshut2_1_90", weight={grasshut=1, single=1}, nomirror=1, typ='townhall'}, -- community hut for meetings + {yoff= 0, scm="grasshut3_1_90", weight={grasshut=1, single=1}, nomirror=1, typ='hut'}, + {yoff= 0, scm="grasshut4_1_90", weight={grasshut=1, single=1}, nomirror=1, typ='hut'}, + {yoff= 0, scm="grasshut5_1_90", weight={grasshut=1, single=1}, nomirror=1, typ='hut'}, + {yoff= 0, scm="grasshut6_1_90", weight={ single=1}, nomirror=1, typ='hut'}, + {yoff= 0, scm="grasshutcenter_1_90", pervillage=1, weight={grasshut=2}, nomirror=1, typ = 'tavern'}, -- open meeting place + +-- for the buildings below, sizex, sizez and ysize are read from the file directly; + +-- schematics from Sokomines villages mod (requires cottages) + {scm="church_1", yoff= 0, orients={0}, farming_plus=0, avoid='', typ='church', weight={medieval=4 }, pervillage=1, inh=-1}, +-- {scm="church_2_twoelk", yoff= 0, orients={0}, farming_plus=0, avoid='', typ='church', weight={medieval=4}, pervillage=1}, + {scm="forge_1", yoff= 0, orients={0}, farming_plus=0, avoid='', typ='forge', weight={medieval=2, single=1/2}, pervillage=1, inh=-1}, + {scm="mill_1", yoff= 0, orients={0}, farming_plus=0, avoid='', typ='mill', weight={medieval=2 }, pervillage=1, inh=-1}, + {scm="watermill_1", yoff=-3, orients={1}, farming_plus=0, avoid='', typ='mill', weight={medieval=2 }, pervillage=1, inh=-2}, + {scm="hut_1", yoff= 0, orients={0}, farming_plus=0, avoid='', typ='hut', weight={medieval=1, single=1 }, inh=1}, + {scm="hut_2", yoff= 0, orients={0}, farming_plus=0, avoid='', typ='hut', weight={medieval=1, single=1 }, inh=2}, + {scm="farm_full_1", yoff= 0, orients={0}, farming_plus=0, avoid='', typ='farm_full', weight={medieval=1/4, single=1 }, inh=2}, + {scm="farm_full_2", yoff= 0, orients={1}, farming_plus=0, avoid='', typ='farm_full', weight={medieval=1/4, single=1 }, inh=5}, + {scm="farm_full_3", yoff= 0, orients={0}, farming_plus=0, avoid='', typ='farm_full', weight={medieval=1/4, single=1 }, inh=5}, + {scm="farm_full_4", yoff= 0, orients={0}, farming_plus=0, avoid='', typ='farm_full', weight={medieval=1/4, single=1 }, inh=8}, + {scm="farm_full_5", yoff= 0, orients={0}, farming_plus=0, avoid='', typ='farm_full', weight={medieval=1/4, single=1 }, inh=5}, + {scm="farm_full_6", yoff= 0, orients={0}, farming_plus=0, avoid='', typ='farm_full', weight={medieval=1/4, single=1 }, inh=5}, + {scm="farm_tiny_1", yoff= 0, orients={0}, farming_plus=1, avoid='', typ='farm_tiny', weight={medieval=1, single=1 }, inh=2}, + {scm="farm_tiny_2", yoff= 0, orients={0}, farming_plus=1, avoid='', typ='farm_tiny', weight={medieval=1, single=1 }, inh=6}, + {scm="farm_tiny_3", yoff= 0, orients={0}, farming_plus=1, avoid='', typ='farm_tiny', weight={medieval=1, single=1 }, inh=4}, + {scm="farm_tiny_4", yoff= 0, orients={0}, farming_plus=1, avoid='', typ='farm_tiny', weight={medieval=1, single=1 }, inh=4}, + {scm="farm_tiny_5", yoff= 0, orients={0}, farming_plus=1, avoid='', typ='farm_tiny', weight={medieval=1, single=1 }, inh=4}, + {scm="farm_tiny_6", yoff= 0, orients={0}, farming_plus=1, avoid='', typ='farm_tiny', weight={medieval=1, single=1 }, inh=4}, + {scm="farm_tiny_7", yoff= 0, orients={3}, farming_plus=1, avoid='', typ='farm_tiny', weight={medieval=1, single=1 }, inh=7}, + {scm="taverne_1", yoff= 0, orients={0}, farming_plus=1, avoid='', typ='tavern', weight={medieval=1/2, single=1 }, pervillage=1, inh=6, guests=-3}, -- 19 beds: 10 guest, 3 worker, 6 family + {scm="taverne_2", yoff= 0, orients={0}, farming_plus=0, avoid='', typ='tavern', weight={medieval=1/2, single=1/3}, pervillage=1, inh=2}, -- no guests + {scm="taverne_3", yoff= 0, orients={0}, farming_plus=0, avoid='', typ='tavern', weight={medieval=1/2, single=1/3}, pervillage=1, inh=2}, -- no guests + {scm="taverne_4", yoff= 0, orients={0}, farming_plus=0, avoid='', typ='tavern', weight={medieval=1/2, single=1/3}, pervillage=1, inh=1}, -- no guests + + {scm="well_1", yoff= 0, orients={0}, farming_plus=0, avoid='well', typ='well', weight={medieval=1/12, single=1/2}, pervillage=4}, + {scm="well_2", yoff= 0, orients={0}, farming_plus=0, avoid='well', typ='well', weight={medieval=1/12, single=1/2}, pervillage=4}, + {scm="well_3", yoff= 0, orients={0}, farming_plus=0, avoid='well', typ='well', weight={medieval=1/12, single=1/2}, pervillage=4}, + {scm="well_4", yoff= 0, orients={0}, farming_plus=0, avoid='well', typ='well', weight={medieval=1/12, single=1/2}, pervillage=4}, + {scm="well_5", yoff= 0, orients={0}, farming_plus=0, avoid='well', typ='well', weight={medieval=1/12, single=1/2}, pervillage=4}, + {scm="well_6", yoff= 0, orients={0}, farming_plus=0, avoid='well', typ='well', weight={medieval=1/12, single=1/2}, pervillage=4}, + {scm="well_7", yoff= -1, orients={0}, farming_plus=0, avoid='well', typ='well', weight={medieval=1/12, single=1/2}, pervillage=4}, + {scm="well_8", yoff= 0, orients={0}, farming_plus=0, avoid='well', typ='well', weight={medieval=1/12, single=1/2}, pervillage=4}, + + {scm="allmende_3_90", yoff=-2, orients={0}, farming_plus=0, avoid='', typ='allmende', weight={medieval=3,taoki=3,nore=3,logcabin=1,grasshut=1}, pervillage=1}, + + {scm="tree_place_1", yoff= 1, orients={0}, farming_plus=0, avoid='', typ='village_square', weight={medieval=1/12}, pervillage=1}, + {scm="tree_place_2", yoff= 1, orients={0}, farming_plus=0, avoid='', typ='village_square', weight={medieval=1/12}, pervillage=1}, + {scm="tree_place_3", yoff= 1, orients={0}, farming_plus=0, avoid='', typ='village_square', weight={medieval=1/12}, pervillage=1}, + {scm="tree_place_4", yoff= 1, orients={0}, farming_plus=0, avoid='', typ='village_square', weight={medieval=1/12}, pervillage=1}, + {scm="tree_place_5", yoff= 1, orients={0}, farming_plus=0, avoid='', typ='village_square', weight={medieval=1/12}, pervillage=1}, + {scm="tree_place_6", yoff= 1, orients={0}, farming_plus=0, avoid='', typ='village_square', weight={medieval=1/12}, pervillage=1}, + {scm="tree_place_7", yoff= 1, orients={0}, farming_plus=0, avoid='', typ='village_square', weight={medieval=1/12}, pervillage=1}, + {scm="tree_place_8", yoff= 1, orients={0}, farming_plus=0, avoid='', typ='village_square', weight={medieval=1/12}, pervillage=1}, + {scm="tree_place_9", yoff= 1, orients={0}, farming_plus=0, avoid='', typ='village_square', weight={medieval=1/12}, pervillage=1}, + {scm="tree_place_10", yoff= 1, orients={0}, farming_plus=0, avoid='', typ='village_square', weight={medieval=1/12}, pervillage=1}, + + {scm="wagon_1", yoff= 0, orients={0,1,2,3}, farming_plus=0, avoid='', typ='wagon', weight={medieval=1/12,tent=1/3}, axis=1}, + {scm="wagon_2", yoff= 0, orients={0,1,2,3}, farming_plus=0, avoid='', typ='wagon', weight={medieval=1/12,tent=1/3}, axis=1}, + {scm="wagon_3", yoff= 0, orients={0,1,2,3}, farming_plus=0, avoid='', typ='wagon', weight={medieval=1/12,tent=1/3}, axis=1}, + {scm="wagon_4", yoff= 0, orients={0,1,2,3}, farming_plus=0, avoid='', typ='wagon', weight={medieval=1/12,tent=1/3}, axis=1}, + {scm="wagon_5", yoff= 0, orients={0,1,2,3}, farming_plus=0, avoid='', typ='wagon', weight={medieval=1/12,tent=1/3}, axis=1}, + {scm="wagon_6", yoff= 0, orients={0,1,2,3}, farming_plus=0, avoid='', typ='wagon', weight={medieval=1/12,tent=1/3}, axis=1}, + {scm="wagon_7", yoff= 0, orients={0,1,2,3}, farming_plus=0, avoid='', typ='wagon', weight={medieval=1/12,tent=1/3}, axis=1}, + {scm="wagon_8", yoff= 0, orients={0,1,2,3}, farming_plus=0, avoid='', typ='wagon', weight={medieval=1/12,tent=1/3}, axis=1}, + {scm="wagon_9", yoff= 0, orients={0,1,2,3}, farming_plus=0, avoid='', typ='wagon', weight={medieval=1/12,tent=1/3}, axis=1}, + {scm="wagon_10", yoff= 0, orients={0,1,2,3}, farming_plus=0, avoid='', typ='wagon', weight={medieval=1/12,tent=1/3}, axis=1}, + {scm="wagon_11", yoff= 0, orients={0,1,2,3}, farming_plus=0, avoid='', typ='wagon', weight={medieval=1/12,tent=1/3}, axis=1}, + {scm="wagon_12", yoff= 0, orients={0,1,2,3}, farming_plus=0, avoid='', typ='wagon', weight={medieval=1/12,tent=1/3}, axis=1}, + + {scm="bench_1", yoff= 0, orients={0,1,2}, farming_plus=0, avoid='', typ='bench', weight={medieval=1/12}, nomirror=1}, + {scm="bench_2", yoff= 0, orients={0,1,2}, farming_plus=0, avoid='', typ='bench', weight={medieval=1/12}, nomirror=1}, + {scm="bench_3", yoff= 0, orients={0,1,2}, farming_plus=0, avoid='', typ='bench', weight={medieval=1/12}, nomirror=1}, + {scm="bench_4", yoff= 0, orients={0,1,2}, farming_plus=0, avoid='', typ='bench', weight={medieval=1/12}, nomirror=1}, + + {scm="shed_1", yoff= 0, orients={0,1,2}, farming_plus=0, avoid='', typ='shed', weight={medieval=1/10}}, + {scm="shed_2", yoff= 0, orients={0,1,2}, farming_plus=0, avoid='', typ='shed', weight={medieval=1/10}}, + {scm="shed_3", yoff= 0, orients={0,1,2}, farming_plus=0, avoid='', typ='shed', weight={medieval=1/10}}, + {scm="shed_5", yoff= 0, orients={0,1,2}, farming_plus=0, avoid='', typ='shed', weight={medieval=1/10}}, + {scm="shed_6", yoff= 0, orients={0,1,2}, farming_plus=0, avoid='', typ='shed', weight={medieval=1/10}}, + {scm="shed_7", yoff= 0, orients={0,1,2}, farming_plus=0, avoid='', typ='shed', weight={medieval=1/10}}, + {scm="shed_8", yoff= 0, orients={0,1,2}, farming_plus=0, avoid='', typ='shed', weight={medieval=1/10}}, + {scm="shed_9", yoff= 0, orients={0,1,2}, farming_plus=0, avoid='', typ='shed', weight={medieval=1/10}}, + {scm="shed_10", yoff= 0, orients={0,1,2}, farming_plus=0, avoid='', typ='shed', weight={medieval=1/10}}, + {scm="shed_11", yoff= 0, orients={0,1,2}, farming_plus=0, avoid='', typ='shed', weight={medieval=1/10}}, + {scm="shed_12", yoff= 0, orients={0,1,2}, farming_plus=0, avoid='', typ='stable', weight={medieval=1/10}}, + + {scm="weide_1", yoff= 0, orients={0,1,2,3}, farming_plus=0, avoid='pasture', typ='pasture', weight={medieval=1/6}, pervillage=8}, + {scm="weide_2", yoff= 0, orients={0,1,2,3}, farming_plus=0, avoid='pasture', typ='pasture', weight={medieval=1/6}, pervillage=8}, + {scm="weide_3", yoff= 0, orients={0,1,2,3}, farming_plus=0, avoid='pasture', typ='pasture', weight={medieval=1/6}, pervillage=8}, + {scm="weide_4", yoff= 0, orients={0,1,2,3}, farming_plus=0, avoid='pasture', typ='pasture', weight={medieval=1/6}, pervillage=8}, + {scm="weide_5", yoff= 0, orients={0,1,2,3}, farming_plus=0, avoid='pasture', typ='pasture', weight={medieval=1/6}, pervillage=8}, + {scm="weide_6", yoff= 0, orients={0,1,2,3}, farming_plus=0, avoid='pasture', typ='pasture', weight={medieval=1/6}, pervillage=8}, + + {scm="field_1", yoff=-2, orients={0,1,2,3}, farming_plus=0, avoid='field', typ='field', weight={medieval=1/6}, pervillage=8}, + {scm="field_2", yoff=-2, orients={0,1,2,3}, farming_plus=0, avoid='field', typ='field', weight={medieval=1/6}, pervillage=8}, + {scm="field_3", yoff=-2, orients={0,1,2,3}, farming_plus=0, avoid='field', typ='field', weight={medieval=1/6}, pervillage=8}, + {scm="field_4", yoff=-2, orients={0,1,2,3}, farming_plus=0, avoid='field', typ='field', weight={medieval=1/6}, pervillage=8}, + + -- hut and hills for charachoal burners; perhaps they could live together with lumberjacks? + {scm="charachoal_hut", yoff= 0, orients={0,1,2}, farming_plus=0, avoid='', typ='hut', weight={charachoal=1, single=5}, inh=2, nomirror=1}, + {scm="charachoal_hill", yoff= 0, orients={0,1,2,3}, farming_plus=0, avoid='', typ='hut', weight={charachoal=2 }, inh=-1, nomirror=1}, + + -- lumberjacks; they require the cottages mod + {scm="lumberjack_1", yoff= 1, orients={1}, avoid='', typ='lumberjack', weight={lumberjack=1, single=3}, axis=1, inh=3}, + {scm="lumberjack_2", yoff= 1, orients={1}, avoid='', typ='lumberjack', weight={lumberjack=1, single=3}, axis=1, inh=4}, + {scm="lumberjack_3", yoff= 1, orients={1,2,3}, avoid='', typ='lumberjack', weight={lumberjack=1, single=3}, inh=3}, + {scm="lumberjack_4", yoff= 1, orients={1}, avoid='', typ='lumberjack', weight={lumberjack=1, single=3}, axis=1, inh=4}, + {scm="lumberjack_5", yoff= 1, orients={1}, avoid='', typ='lumberjack', weight={lumberjack=1, single=3}, axis=1, inh=9}, + {scm="lumberjack_6", yoff= 1, orients={1}, avoid='', typ='lumberjack', weight={lumberjack=1, single=3}, axis=1, inh=5}, + {scm="lumberjack_7", yoff= 1, orients={1}, avoid='', typ='lumberjack', weight={lumberjack=1, single=3}, axis=1, inh=5}, + {scm="lumberjack_8", yoff= 1, orients={1}, avoid='', typ='lumberjack', weight={lumberjack=1, single=3}, axis=1, inh=9}, + {scm="lumberjack_9", yoff= 1, orients={1}, avoid='', typ='lumberjack', weight={lumberjack=1, single=3}, axis=1, inh=5}, + {scm="lumberjack_10", yoff= 1, orients={1}, avoid='', typ='lumberjack', weight={lumberjack=1, single=3}, axis=1, inh=2}, + {scm="lumberjack_11", yoff= 0, orients={1}, avoid='', typ='lumberjack', weight={lumberjack=1, single=3}, axis=1, inh=2}, + {scm="lumberjack_12", yoff= 1, orients={1}, avoid='', typ='lumberjack', weight={lumberjack=1, single=3}, axis=1, inh=3}, + {scm="lumberjack_13", yoff= 1, orients={1}, avoid='', typ='lumberjack', weight={lumberjack=1, single=3}, axis=1, inh=3}, + {scm="lumberjack_14", yoff= 1, orients={1}, avoid='', typ='lumberjack', weight={lumberjack=1, single=3}, axis=1, inh=2}, + {scm="lumberjack_15", yoff= 1, orients={1}, avoid='', typ='lumberjack', weight={lumberjack=1, single=3}, axis=1, inh=2}, + {scm="lumberjack_16", yoff= 0, orients={1}, avoid='', typ='lumberjack', weight={lumberjack=1, single=3}, axis=1, inh=2}, + {scm="lumberjack_school", yoff= 1, orients={1}, avoid='', typ='school', weight={lumberjack=2 }, axis=1, inh=1}, + {scm="lumberjack_stable", yoff= 0, orients={3}, avoid='', typ='horsestable', weight={lumberjack=1, single=3}, axis=1, inh=-1}, + {scm="lumberjack_pub_1", yoff= 1, orients={1}, avoid='', typ='tavern', weight={lumberjack=3, single=1}, pervillage=1, axis=1, inh=-1}, + {scm="lumberjack_church_1", yoff= 1, orients={1}, avoid='', typ='church', weight={lumberjack=3}, pervillage=1, axis=1, inh=-1}, + {scm="lumberjack_hotel_1", yoff= 1, orients={0}, avoid='', typ='inn', weight={lumberjack=1, single=1}, axis=1, inh=16, guests=-1}, -- all but one of the 16 are guests + {scm="lumberjack_shop_1", yoff= 1, orients={1}, avoid='', typ='shop', weight={lumberjack=1}, pervillage=1, axis=1, inh=-1}, + {scm="lumberjack_sawmill_1",yoff=-7, orients={1}, avoid='', typ='sawmill', weight={lumberjack=2, single=1}, pervillage=1, axis=1, inh=-1}, + + +-- {scm="cow_trader_1", yoff= 0, orients={4}, avoid='', typ='trader', weight={lumberjack=1}}, + + -- clay traders depend on cottages as well + {scm="trader_clay_1", yoff= 1, orients={1}, avoid='', typ='trader', weight={claytrader=3, single=3}, axis=1, inh=1}, -- poor guy who has to live in that small thing + {scm="trader_clay_2", yoff= 1, orients={1}, avoid='', typ='trader', weight={claytrader=3, single=3}, axis=1, inh=1}, -- not that he'll live very comftable there... + {scm="trader_clay_3", yoff= 1, orients={1}, avoid='', typ='trader', weight={claytrader=3, single=3}, inh=2}, + {scm="trader_clay_4", yoff= 1, orients={1}, avoid='', typ='trader', weight={claytrader=3, single=3}, inh=2}, + {scm="trader_clay_5", yoff= 1, orients={1}, avoid='', typ='trader', weight={claytrader=3, single=3}, axis=1, inh=2}, + + {scm="clay_pit_1", yoff=-3, orients={0,1,2,3}, avoid='', typ='pit', weight={claytrader=1}}, + {scm="clay_pit_2", yoff=-1, orients={0,1,2,3}, avoid='', typ='pit', weight={claytrader=1}}, + {scm="clay_pit_3", yoff=-6, orients={0,1,2,3}, avoid='', typ='pit', weight={claytrader=1}}, + {scm="clay_pit_4", yoff= 0, orients={0,1,2,3}, avoid='', typ='pit', weight={claytrader=1}}, + {scm="clay_pit_5", yoff= 1, orients={0,1,2,3}, avoid='', typ='pit', weight={claytrader=1}}, + + + -- Houses from Taokis Structure I/O Mod (see https://forum.minetest.net/viewtopic.php?id=5524) + {scm="default_town_farm", yoff= -1, orients={1}, farming_plus=0, avoid='', typ='field', weight={taoki=1, single=1}, axis=1}, + {scm="default_town_house_large_1", yoff= -4, orients={1}, farming_plus=0, avoid='', typ='house', weight={taoki=1/4, single=1}, axis=1, inh=10}, + {scm="default_town_house_large_2", yoff= -4, orients={1}, farming_plus=0, avoid='', typ='house', weight={taoki=1/4, single=1}, axis=1, inh=8}, + {scm="default_town_house_medium", yoff= -4, orients={1}, farming_plus=0, avoid='', typ='house', weight={taoki=1/2, single=1}, axis=1, inh=6}, + {scm="default_town_house_small", yoff= -4, orients={1}, farming_plus=0, avoid='', typ='house', weight={taoki=1, single=1}, axis=1, inh=4}, + {scm="default_town_house_tiny_1", yoff= 1, orients={1}, farming_plus=0, avoid='', typ='house', weight={taoki=1, single=1}, axis=1, inh=3}, + {scm="default_town_house_tiny_2", yoff= 1, orients={1}, farming_plus=0, avoid='', typ='house', weight={taoki=1, single=1}, axis=1, inh=3}, + {scm="default_town_house_tiny_3", yoff= 1, orients={1}, farming_plus=0, avoid='', typ='house', weight={taoki=1, single=1}, axis=1, inh=2}, + {scm="default_town_park", yoff= 1, orients={1}, farming_plus=0, avoid='', typ='park', weight={taoki=1 }, axis=1}, + {scm="default_town_tower", yoff= 1, orients={1}, farming_plus=0, avoid='', typ='tower', weight={taoki=1/6, single=1}, axis=1, inh=-1}, + {scm="default_town_well", yoff= -6, orients={1}, farming_plus=0, avoid='', typ='well', weight={taoki=1/4 }, axis=1}, + {scm="default_town_fountain", yoff= 1, orients={1}, farming_plus=0, avoid='', typ='fountain',weight={taoki=1/4 }, axis=1}, + -- the hotel seems to be only the middle section of the building; it's build for another spawning algorithm +-- {scm="default_town_hotel", yoff= -1, orients={1}, farming_plus=0, avoid='', typ='house', weight={taoki=1/5}}, + + {scm="tent_tiny_1", yoff=0, orients={3}, farming_plus=0, avoid='', typ='tent', weight={tent=1, single=1}, inh=1}, + {scm="tent_tiny_2", yoff=0, orients={3}, farming_plus=0, avoid='', typ='tent', weight={tent=1, single=1}, inh=1}, + {scm="tent_big_1", yoff=0, orients={1}, farming_plus=0, avoid='', typ='shop', weight={tent=1, single=1}}, -- no sleeping place + {scm="tent_big_2", yoff=0, orients={3}, farming_plus=0, avoid='', typ='tent', weight={tent=1, single=1}, inh=2}, + {scm="tent_medium_1", yoff=0, orients={1}, farming_plus=0, avoid='', typ='tent', weight={tent=1/2, single=1}, inh=3}, + {scm="tent_medium_2", yoff=0, orients={3}, farming_plus=0, avoid='', typ='shed', weight={tent=1/2, single=1}, inh=3}, + {scm="tent_medium_3", yoff=0, orients={1}, farming_plus=0, avoid='', typ='tent', weight={tent=1/2, single=1}, inh=3}, + {scm="tent_medium_4", yoff=0, orients={1}, farming_plus=0, avoid='', typ='tent', weight={tent=1/2, single=1}, inh=3}, + {scm="tent_open_1", yoff=0, orients={3}, farming_plus=0, avoid='', typ='pub', weight={tent=1/5}}, + {scm="tent_open_2", yoff=0, orients={3}, farming_plus=0, avoid='', typ='shed', weight={tent=1/5}}, + {scm="tent_open_3", yoff=0, orients={3}, farming_plus=0, avoid='', typ='shop', weight={tent=1/5}}, + {scm="tent_open_big_1", yoff=0, orients={3}, farming_plus=0, avoid='', typ='pub', weight={tent=1/5}}, + {scm="tent_open_big_2", yoff=0, orients={3}, farming_plus=0, avoid='', typ='church', weight={tent=1/5}}, + {scm="tent_open_big_3", yoff=0, orients={3}, farming_plus=0, avoid='', typ='townhall', weight={tent=5}, pervillage=1}, + + {scm="hochsitz_1", yoff=0, orients={0,1,2,3}, farming_plus=0, avoid='', typ='tower', weight={tower=1, single=1/3}, nomirror=1}, + {scm="hochsitz_2", yoff=0, orients={0,1,2,3}, farming_plus=0, avoid='', typ='tower', weight={tower=1, single=1/3}, nomirror=1}, + {scm="hochsitz_3", yoff=0, orients={0,1,2,3}, farming_plus=0, avoid='', typ='tower', weight={tower=1, single=1/3}, nomirror=1}, + {scm="hochsitz_4", yoff=0, orients={0,1,2,3}, farming_plus=0, avoid='', typ='tower', weight={tower=1, single=1/3}, nomirror=1}, + + {scm="chateau_without_garden", yoff=-1,orients={0,1,2,3}, farming_plus=0, avoid='', typ='chateau', weight={chateau=1,single=8}, pervillage=1, inh=8, guests=-6}, -- 6 family members of the landlord's family; rest are servants + + {scm="baking_house_1", yoff=0, orients={0}, farming_plus=0, avoid='', typ='bakery', weight={medieval=1/4}, pervillage=1, inh=-1}, + {scm="baking_house_2", yoff=0, orients={0}, farming_plus=0, avoid='', typ='bakery', weight={medieval=1/4}, pervillage=1, inh=-1}, + {scm="baking_house_3", yoff=0, orients={0}, farming_plus=0, avoid='', typ='bakery', weight={medieval=1/4}, pervillage=1, inh=-1}, + {scm="baking_house_4", yoff=0, orients={0}, farming_plus=0, avoid='', typ='bakery', weight={medieval=1/4}, pervillage=1, inh=-1}, + + {scm="empty_1", yoff=0, typ='empty', inh=0, pervillage=4, + weight={nore=1,taoki=1,medieval=1,charachoal=1,lumberjack=1,claytrader=1,logcabin=1,canadian=1,grasshut=1,tent=1}}, + {scm="empty_2", yoff=0, typ='empty', inh=1, pervillage=4, + weight={nore=1,taoki=1,medieval=1,charachoal=1,lumberjack=1,claytrader=1,logcabin=1,canadian=1,grasshut=1,tent=1}}, + {scm="empty_3", yoff=0, typ='empty', inh=1, pervillage=4, + weight={nore=1,taoki=1,medieval=1,charachoal=1,lumberjack=1,claytrader=1,logcabin=1,canadian=1,grasshut=1,tent=1}}, + {scm="empty_4", yoff=0, typ='empty', inh=1, pervillage=4, + weight={nore=1,taoki=1,medieval=1,charachoal=1,lumberjack=1,claytrader=1,logcabin=1,canadian=1,grasshut=1,tent=1}}, + {scm="empty_5", yoff=0, typ='empty', inh=1, pervillage=4, + weight={nore=1,taoki=1,medieval=1,charachoal=1,lumberjack=1,claytrader=1,logcabin=1,canadian=1,grasshut=1,tent=1}}, + + {scm="house_medieval_fancy_1_90", yoff= 0, orients={0}, farming_plus=0, avoid='', typ='farm_full', weight={medieval=1/4, single=1 }, inh=6}, + {scm="cow_shed_1_270", yoff= 0, orients={0}, farming_plus=0, avoid='', typ='stable', weight={medieval=1/4, single=1 }, inh=-1}, + {scm="shed_with_forge_v2_1_0", yoff= 0, orients={0}, farming_plus=0, avoid='', typ='forge', weight={medieval=1,single=1/2}, inh=1}, + + {scm="empty_16x32_2_90", typ='empty', inh=1, pervillage=4, + weight={nore=2,taoki=2,medieval=2,charachoal=2,lumberjack=2,claytrader=2,logcabin=2,canadian=2,grasshut=2,tent=2}}, + {scm="empty_32x32_2_90", typ='empty', inh=1, pervillage=4, + weight={nore=2,taoki=2,medieval=2,charachoal=2,lumberjack=2,claytrader=2,logcabin=2,canadian=2,grasshut=2,tent=2}}, + + -- some new grasshut variants + {scm="grasshut7_1_90", weight={grasshut=1, single=1}, nomirror=1, typ='hut'}, + {scm="grasshut8_1_90", weight={grasshut=1, single=1}, nomirror=1, typ='hut'}, + {scm="grasshut9_1_90", weight={grasshut=1, single=1}, nomirror=1, typ='hut'}, + {scm="grasshut_pub_1_90", weight={grasshut=1/4, single=1}, nomirror=1, typ='pub'}, + {scm="grasshut_hotel_1_90", weight={grasshut=1/4, single=1}, nomirror=1, typ='inn'}, + {scm="grasshut_shop_1_90", weight={grasshut=1, single=1}, nomirror=1, typ='shop'}, + {scm="grasshutwell_8_90", weight={grasshut=1, single=1}, nomirror=1, typ='well'}, +} + + +-- read the data files and fill in information like size and nodes that need on_construct to be called after placing; +-- skip buildings that cannot be used due to missing mods +mg_villages.add_building = function( building_data ) + + local file_name = building_data.mts_path .. building_data.scm; + -- a building will only be used if it is used by at least one supported village type (=mods required for that village type are installed) + local is_used = false; + for typ,weight in pairs( building_data.weight ) do + if( typ and weight and typ ~= 'single' and mg_villages.village_type_data[ typ ] and mg_villages.village_type_data[ typ ].supported ) then + is_used = true; + end + -- add the building to the menu list for the build chest ("single" would be too many houses) + -- the empty plots are added to each village and of no intrest here + if( build_chest and build_chest.add_entry and typ and typ ~= 'single' and (not( building_data.typ ) or building_data.typ ~= 'empty')) then + build_chest.add_entry( {'main','mg_villages', typ, building_data.scm, file_name }); + end + end + -- buildings as such may have a type as well + if( build_chest and build_chest.add_entry and building_data.typ ) then + build_chest.add_entry( {'main','mg_villages', building_data.typ, building_data.scm, file_name }); + end + + + if( not( is_used )) then + -- do nothing; skip this file + mg_villages.print(mg_villages.DEBUG_LEVEL_INFO, 'SKIPPING '..tostring( building_data.scm )..' due to village type not supported.'); + -- building cannot be used + building_data.not_available = 1; + return false; + end + + + -- read the size of the building; + -- convert to .mts for later usage if necessary + -- true: no entry in the build_chest (we did that manually already) + local res = handle_schematics.analyze_file( file_name, building_data.we_origin, building_data.mts_path .. building_data.scm, building_data, true ); + + if( not( res )) then + mg_villages.print(mg_villages.DEBUG_LEVEL_WARNING, 'SKIPPING '..tostring( building_data.scm )..' due to import failure.'); + building_data.not_available = 1; + return false; + -- provided the file could be analyzed successfully (now covers both .mts and .we files) + elseif( res and res.size and res.size.x ) then + + building_data = res; + -- identify front doors, calculate paths from beds/workplaces to front of house + building_data = mg_villages.analyze_building_for_mobs( building_data, file_name, mg_villages.path_info); + + -- missing data regarding building size - do not use this building for anything + elseif( not( building_data.sizex ) or not( building_data.sizez ) + or building_data.sizex == 0 or building_data.sizez==0) then + + -- no village will use it + mg_villages.print( mg_villages.DEBUG_LEVEL_INFO, 'No schematic found for building \''..tostring( building_data.scm )..'\'. Will not use that building.'); + building_data.weight = {}; + building_data.not_available = 1; + return false; + + else + -- the file has to be handled by worldedit; it is no .mts file + building_data.is_mts = 0; + end + + + if( not( building_data.weight ) or type( building_data.weight ) ~= 'table' ) then + mg_villages.print( mg_villages.DEBUG_LEVEL_WARNING, 'SKIPPING '..tostring( building_data.scm )..' due to missing weight information.'); + building_data.not_available = 1; + return false; + end + + + -- handle duplicates; make sure buildings always get the same number; + -- check if the building has been used in previous runs and got an ID there + + -- create a not very unique, but for this case sufficient "id"; + -- (buildings with the same size and name are considered to be drop-in-replacements + local building_id = building_data.sizex..'x'..building_data.sizez..'_'..building_data.scm; + -- if the building is new, it will get the next free id + local building_nr = #mg_villages.all_buildings_list + 1; + for i,v in ipairs( mg_villages.all_buildings_list ) do + if( v==building_id ) then + -- we found the building + building_nr = i; + end + end + + -- if it is a new building, then save the list + if( building_nr == #mg_villages.all_buildings_list+1 ) then + mg_villages.all_buildings_list[ building_nr ] = building_id; + -- save information about previously imported buildings + save_restore.save_data( 'mg_villages_all_buildings_list.data', mg_villages.all_buildings_list ); + end + + -- determine the internal number for the building; this number is used as a key and can be found in the mg_all_villages.data file + if( not( mg_villages.BUILDINGS )) then + mg_villages.BUILDINGS = {}; + end + -- actually store the building data + mg_villages.BUILDINGS[ building_nr ] = minetest.deserialize( minetest.serialize( building_data )); + + + -- create lists for all village types containing the buildings which may be used for that village + for typ, data in pairs( mg_villages.village_type_data ) do + local total_weight = 0; + if( not( data.building_list ) or not( data.max_weight_list )) then + data.building_list = {}; + data.max_weight_list = {}; + elseif( #data.max_weight_list > 0 ) then + -- get the last entry - that one will determine the current total_weight + total_weight = data.max_weight_list[ #data.max_weight_list ]; + end + + if( building_data.weight[ typ ] and building_data.weight[ typ ] > 0 ) then + local index = #data.building_list+1; + data.building_list[ index ] = building_nr; + data.max_weight_list[ index ] = total_weight + building_data.weight[ typ ]; + end + end + + -- print it for debugging usage + --print( building_data.scm .. ': '..tostring(building_data.sizex)..' x '..tostring(building_data.sizez)..' x '..tostring(building_data.ysize)..' h'); + return true; +end + + +-- this list contains some information about previously imported buildings so that they will get the same id +mg_villages.all_buildings_list = save_restore.restore_data( 'mg_villages_all_buildings_list.data' ); + +-- information about beds, positions to stand next to the beds, paths to the doors, and doors +--mg_villages.path_info = {}; +--mg_villages.path_info = save_restore.restore_data( 'mg_villages_path_info.data' ); + +mg_villages.file_name_offset = string.len( minetest.get_modpath( "mg_villages" ))-11+1; + +-- import all the buildings +mg_villages.BUILDINGS = {}; +local mts_path = mg_villages.modpath.."/schems/"; +-- determine the size of the given houses and other necessary values +for i,v in ipairs( buildings ) do + v.mts_path = mts_path; + mg_villages.add_building( v, i ); +end +buildings = nil; + +-- roads are built in a diffrent way +mg_villages.BUILDINGS["road"] = {yoff = 0, ysize = 2, scm = {}} + +-- save the path data; wait a bit so that all mods may have registered their buildings +-- Note: uncomment the following line if you have added a larger amount of new buildings; then, after +-- WORLDNAME/mg_villages_path_info.data has been written, copy that file over to your +-- mods/mg_villages/ folder and replace the old one. Add +-- mg_villages.path_info = .. +-- at the start of the table so that a dofile can execute it. +--minetest.after( 10, save_restore.save_data, 'mg_villages_path_info.data', mg_villages.path_info ); diff --git a/mods/mg_villages/chat_commands.lua b/mods/mg_villages/chat_commands.lua new file mode 100644 index 0000000..82dc102 --- /dev/null +++ b/mods/mg_villages/chat_commands.lua @@ -0,0 +1,279 @@ + +minetest.register_privilege("mg_villages", { description = "Allows to teleport to villages via /vist ", give_to_singleplayer = false}); + +-- store per player which list of villages was offered +mg_villages.tmp_player_village_list = {}; + +-- list all plots of a village: +-- plot_nr, type of building, #inhabitants, occupation, name +mg_villages.list_plots_formspec = function( player, formname, fields ) + + if( not( player ) or fields.quit or not( fields.village_id) or not( mg_villages.all_villages[ fields.village_id ])) then + return + end + local pname = player:get_player_name(); + + -- analyze the road network (this has not been done from the beginning..) + mg_villages.get_road_list( fields.village_id, false ); + + -- allow to click through the villages using prev/next buttons + local liste = mg_villages.tmp_player_village_list[ pname ]; + local prev_next_button = "button[8.5,11.6;1,0.5;back_to_villagelist;Back]"; + if( liste and #liste>1 and liste[1]~=fields.village_id ) then + prev_next_button = prev_next_button..'button[9.5,11.6;1,0.5;prev;Prev]'; + end + if( liste and #liste>1 and liste[#liste]~=fields.village_id ) then + prev_next_button = prev_next_button..'button[10.5,11.6;1,0.5;next;Next]'; + end + + local formspec = 'size[12,12]'.. + 'field[20,20;0.1,0.1;village_id;VillageID;'..minetest.formspec_escape( fields.village_id ).."]".. + 'button_exit[4.0,1.0;2,0.5;quit;Exit]'.. + 'button[9.5,1.0;3,0.5;back_to_villagelist;Back to village list]'.. + prev_next_button.. + 'tablecolumns[' .. + 'text,align=right;'.. -- plot nr + 'text,align=center;'.. -- type of building + 'text,align=center;'.. -- amount of inhabitants + 'text,align=center;'.. -- occupation of first inhabitant + 'text,align=center;'.. -- name of first inhabitat + 'text,align=center]'.. -- comment + 'table[0.1,2.0;11.4,8.8;'..formname..';'.. + 'PlotNr,Type of building,'..minetest.formspec_escape('#Inhab.').. + ',Job,Owner,Comment,'; + + local bpos_list = mg_villages.all_villages[ fields.village_id ].to_add_data.bpos; + for plot_nr,bpos in ipairs( bpos_list ) do + + formspec = formspec..plot_nr..','; + if( bpos.btype and bpos.btype ~= "road" and mg_villages.BUILDINGS[ bpos.btype ]) then + formspec = formspec..mg_villages.BUILDINGS[ bpos.btype ].typ..','; + else + formspec = formspec..tostring( bpos.btype )..','; + end + if( not( bpos.beds ) or #bpos.beds<1 ) then + if( bpos.worker and bpos.worker.lives_at and bpos_list[ bpos.worker.lives_at ] + and bpos_list[ bpos.worker.lives_at ].beds + and bpos_list[ bpos.worker.lives_at ].beds[1]) then + local btype2 = mg_villages.BUILDINGS[ bpos_list[ bpos.worker.lives_at ].btype]; + local worker_plot = bpos_list[ bpos.worker.lives_at ]; + formspec = formspec..'-,'.. + ( worker_plot.beds[1].title or '-')..','.. + ( worker_plot.beds[1].first_name or '-')..','.. + "lives in the "..tostring( btype2.typ ).." on plot "..tostring( bpos.worker.lives_at )..','; + elseif( bpos.belongs_to and bpos_list[ bpos.belongs_to ]) then + formspec = formspec..'-,-,-,'; + local owner_plot = bpos_list[ bpos.belongs_to ]; + if( owner_plot and owner_plot.beds and owner_plot.beds[1] ) then + formspec = formspec.."owned by ".. + ( owner_plot.beds[1].title or '?')..' '.. + ( owner_plot.beds[1].first_name or '?').. + minetest.formspec_escape(" [plot "..tostring( bpos.belongs_to )..']')..','; + else + formspec = formspec.."owned by "..minetest.formspec_escape(" [plot "..tostring( bpos.belongs_to )..']')..','; + end + elseif( bpos.btype == "road" ) then + if( not( bpos.parent_road_plot )) then + formspec = formspec..'-,-,-,road stump,'; + elseif( bpos.parent_road_plot==0 ) then + formspec = formspec..'-,-,-,main road,'; + else + formspec = formspec..'-,-,-,road nr. '..tostring( bpos.road_nr).. + minetest.formspec_escape(', sideroad of '); + if( bpos_list[ bpos.parent_road_plot ].parent_road_plot == 0 ) then + formspec = formspec..'the main road,'; + else + formspec = formspec..'road nr. '.. + tostring( bpos_list[ bpos.parent_road_plot ].road_nr)..','; + end + end + else + formspec = formspec..'-,-,-,-,'; + end + else + formspec = formspec..tostring( #bpos.beds )..','.. + ( bpos.beds[1].title or '-')..','.. + ( bpos.beds[1].first_name or '-')..','; + if( bpos.beds[1].works_at + and bpos.beds[1].works_at ~= plot_nr + and bpos_list[ bpos.beds[1].works_at ]) then + local btype2 = mg_villages.BUILDINGS[ bpos_list[ bpos.beds[1].works_at].btype]; + formspec = formspec.."works at the "..tostring( btype2.typ ).." on plot "..tostring(bpos.beds[1].works_at)..","; + else + formspec = formspec.."-,"; + end + end + end + formspec = formspec..';1]'; + minetest.show_formspec( pname, formname, formspec ); +end + + +-- list all villages withhin a certain range of the player's position: +-- village_nr, distance from player, name of village, population, +-- type (i.e. "medieval"), x, y, z, diameter, #buildings, village/single house +-- this function is only used for the chat command "/villages" currently +mg_villages.list_villages_formspec = function( player, formname, fields ) + + if( not( player ) or fields.quit) then + return + end + local pname = player:get_player_name(); + local ppos = player:getpos(); + + local radius = 1000000; + -- without the special priv, players can only obtain informatoin about villages which are very close by + if( not( minetest.check_player_privs( pname, {mg_villages=true}))) then + radius = mg_villages.VILLAGE_DETECT_RANGE; + end + + local formspec = 'size[12,12]'.. + 'button_exit[4.0,1.0;2,0.5;quit;Exit]'.. + 'tablecolumns[' .. + 'text,align=right;'.. -- village number + 'text,align=right;'.. -- distance from player + 'text,align=center;'.. -- name of village + 'text,align=center;'.. -- inhabitants + 'text,align=center;'.. -- typ of village + 'text,align=right;'.. -- x + 'text,align=right;'.. -- y + 'text,align=right;'.. -- z + 'text,align=right;'.. -- size + 'text,align=center;'.. -- #houses where inhabitants may live or work + 'text,align=right]'.. + 'table[0.1,2.0;11.4,8.8;'..formname..';'.. + 'Nr,Dist,Name of village,Population,Type of village,_X_,_H_,_Z_,Size,'..minetest.formspec_escape('#Buildings')..',,'; + + mg_villages.tmp_player_village_list[ pname ] = {}; + for k,v in pairs( mg_villages.all_villages ) do + + local dx = math.abs( v.vx - ppos.x ); + local dz = math.abs( v.vz - ppos.z ); + -- distance in y direction is less relevant here and may be ignored + if( dx + dz < radius ) then + local dist = math.sqrt( dx * dx + dz * dz ); + local is_full_village = 'village'; + if( v.is_single_house ) then + is_full_village = ''; + end + -- count the inhabitants + if( not( v.population )) then + v.population = 0; + for _,pos in ipairs( v.to_add_data.bpos ) do + if( pos and pos.beds ) then + v.population = v.population + #pos.beds; + end + end + end + local show_population = v.population; + if( show_population == 0 ) then + show_population = "-"; + end + formspec = formspec.. + v.nr..','.. + tostring( math.floor( dist ))..','.. + tostring( v.name or 'unknown' )..','.. + show_population..','.. + v.village_type..','.. + tostring( v.vx )..','.. + tostring( v.vh )..','.. + tostring( v.vz )..','.. + tostring( v.vs )..','.. + tostring( v.anz_buildings )..','.. + tostring( is_full_village )..','; + + -- store which list we have shown to this particular player + table.insert( mg_villages.tmp_player_village_list[ pname ], k ); + end + end + formspec = formspec..';1]'; +-- 'tabheader[0.1,2.6;spalte;Nr,Dist,Name of village,Population,Type of village,_X_,_H_,_Z_,Size,'..minetest.formspec_escape('#Buildings')..';;true;true]'; + + minetest.show_formspec( pname, formname, formspec ); +end + + +minetest.register_chatcommand( 'villages', { + description = "Shows a list of all known villages.", + privs = {}, + func = function(name, param) + mg_villages.list_villages_formspec( minetest.get_player_by_name( name ), "mg_villages:formspec_list_villages", {}); + end +}); + + +minetest.register_chatcommand( 'visit', { + description = "Teleports you to a known village.", + params = "", + privs = {}, + func = function(name, param) + + + if( mg_villages.REQUIRE_PRIV_FOR_TELEPORT and not( minetest.check_player_privs( name, {mg_villages=true}))) then + minetest.chat_send_player( name, "You need the 'mg_villages' priv in order to teleport to villages using this command."); + return; + end + + if( not( param ) or param == "" ) then + minetest.chat_send_player( name, "Which village do you want to visit? Please provide the village number!"); + return; + end + + local nr = tonumber( param ); + for id, v in pairs( mg_villages.all_villages ) do + -- we have found the village + if( v and v.nr == nr ) then + + minetest.chat_send_player( name, "Initiating transfer to village no. "..tostring( v.nr )..", called "..( tostring( v.name or 'unknown')).."."); + local player = minetest.get_player_by_name( name ); + player:moveto( { x=v.vx, y=(v.vh+1), z=v.vz }, false); + return; + end + end + -- no village found + minetest.chat_send_player( name, "There is no village with the number "..tostring( param ).." (yet?)."); + end +}); + +minetest.register_chatcommand( 'village_mob_repopulate', { + description = "Discards old mob data and assigns beds and workplaces anew. Mobs get new names.", + params = "", + privs = {}, + func = function(name, param) + + + if( not( minetest.check_player_privs( name, {protection_bypass=true}))) then + minetest.chat_send_player( name, "You need the 'protection_bypass' priv in order to delete all the old mob data of a village and to recalculate it anew."); + return; + end + + if( not( param ) or param == "" ) then + minetest.chat_send_player( name, "Which village do you want to repopulate? Please provide the village number!"); + return; + end + + local nr = tonumber( param ); + for id, v in pairs( mg_villages.all_villages ) do + -- we have found the village + if( v and v.nr == nr ) then + + minetest.chat_send_player( name, "Deleting information about workplaces and beds. Recalculating. Assigning new data for village no. "..tostring( v.nr )..", called "..( tostring( v.name or 'unknown')).."."); + -- move the player to the center of the village he just changed + local player = minetest.get_player_by_name( name ); + player:moveto( { x=v.vx, y=(v.vh+1), z=v.vz }, false); + + local village_id = tostring( v.vx )..':'..tostring( v.vz ); + -- actually do the reassigning + mg_villages.inhabitants.assign_mobs( v, village_id, true); + -- save the modified data + save_restore.save_data( 'mg_all_villages.data', mg_villages.all_villages ); + + -- adjust beds and workplaces + mg_villages.inhabitants.prepare_metadata( v, village_id, nil, nil ); + return; + end + end + -- no village found + minetest.chat_send_player( name, "There is no village with the number "..tostring( param ).." (yet?)."); + end +}); diff --git a/mods/mg_villages/config.lua b/mods/mg_villages/config.lua new file mode 100644 index 0000000..da5fa12 --- /dev/null +++ b/mods/mg_villages/config.lua @@ -0,0 +1,206 @@ +----------------------------------------------------------------------------- +-- configuration values which you can adjust according to your liking +----------------------------------------------------------------------------- +-- set to false if you do not want to have any villages spawning +mg_villages.ENABLE_VILLAGES = true; + +-- generate one random building for each mg_villages.INVERSE_HOUSE_DENSITY th mapchunk; +-- set to 0 in order to disable spawning of these lone buildings outside villages +mg_villages.INVERSE_HOUSE_DENSITY = 4; + +-- cover some villages with artificial snow; probability: 1/mg_villages.artificial_snow_probability +mg_villages.artificial_snow_probability = 10; + +-- if set to true, soil around villaes will get special soil-snow instead of plant + snow cover +mg_villages.use_soil_snow = false; + +-- only place roads if there are at least that many buildings in the village +mg_villages.MINIMAL_BUILDUNGS_FOR_ROAD_PLACEMENT = 4; + + +-- players without the mg_villages priv can only see villages which are less than that many blocks away +-- from them when using the /vmap command +mg_villages.VILLAGE_DETECT_RANGE = 400; + +-- if set to true, only players which have the mg_villages priv can use the "/visit " +-- command which allows teleporting to the village with the given number +mg_villages.REQUIRE_PRIV_FOR_TELEPORT = false; + +-- if set to true, players cannot modify spawned villages without buying the house from the village first +mg_villages.ENABLE_PROTECTION = true; + +-- the first village - the one the player spawns in - will be of this type +mg_villages.FIRST_VILLAGE_TYPE = 'medieval'; + +-- the mapgen will disregard mapchunks where min.y > mg_villages.MAX_HEIGHT_TREATED; +-- you can set this value to 64 if you have a slow machine and a mapgen which does not create extreme mountains +-- (or if you don't care if extreme mountains may create burried villages occasionally) +mg_villages.MAX_HEIGHT_TREATED = 200; + +-- choose the debug level you want +mg_villages.DEBUG_LEVEL = mg_villages.DEBUG_LEVEL_TIMING + +-- if set to true, a water source will be added all 2-3 blocks on a field for farming; +-- as long as you do not plan to dig up all fields, hoe them and use them manually, +-- better keep this to "false" as that is much faster +mg_villages.PLACE_WATER_FOR_FARMING = false + +-- if set to true (or anything else but nil or false), highlandpools by paramat (see +-- https://forum.minetest.net/viewtopic.php?t=8400) will be created +mg_villages.CREATE_HIGHLANDPOOLS = true + +-- Torches are replaced by mg_villages:torch - which does not melt snow. If you want to use the normal +-- torches from minetest_game, set this to true.:w! +mg_villages.USE_DEFAULT_3D_TORCHES = true; + +-- background image for the /vmap command +-- RealTest comes with a diffrent texture +if( minetest.get_modpath('grounds') and minetest.get_modpath('joiner_table')) then + mg_villages.MAP_BACKGROUND_IMAGE = "default_dirt_grass.png"; +elseif( minetest.registered_nodes[ 'default:dirt_with_grass'] ) then + mg_villages.MAP_BACKGROUND_IMAGE = "default_grass.png"; +else + mg_villages.MAP_BACKGROUND_IMAGE = ""; +end + +-- if set to true, the outer buildings in medieval villages will be fields; this is not very convincing yet +-- currently not really used; does not look as good as expected +mg_villages.medieval_subtype = false; + +-- set this to true if you want to use normal lava - but beware: charachoal villages may cause bushfires! +--mg_villages.use_normal_unsafe_lava = false; + +----------------------------------------------------------------------------- +-- decrese these values slightly if you want MORE trees around your villages; +-- increase it if you want to DECREASE the amount of trees around villages +----------------------------------------------------------------------------- +-- on average, every n.th node inside a village area may be one of these trees - and it will be a relatively dense packed forrest +mg_villages.sapling_probability = {}; + +mg_villages.sapling_probability[ minetest.get_content_id( 'default:sapling' ) ] = 25; -- suitable for a relatively dense forrest of normal trees +mg_villages.sapling_probability[ minetest.get_content_id( 'default:junglesapling' ) ] = 40; -- jungletrees are a bit bigger and need more space +mg_villages.sapling_probability[ minetest.get_content_id( 'default:pinesapling' ) ] = 30; +if( minetest.get_modpath( 'mg' )) then + mg_villages.sapling_probability[ minetest.get_content_id( 'mg:savannasapling' ) ] = 30; + mg_villages.sapling_probability[ minetest.get_content_id( 'mg:pinesapling' ) ] = 35; +end +mg_villages.moretrees_treelist = nil; +if( minetest.get_modpath( 'moretrees' )) then + mg_villages.moretrees_treelist = moretrees.treelist; + mg_villages.sapling_probability[ minetest.get_content_id( 'moretrees:birch_sapling_ongen' ) ] = 200; + mg_villages.sapling_probability[ minetest.get_content_id( 'moretrees:spruce_sapling_ongen' ) ] = 200; + mg_villages.sapling_probability[ minetest.get_content_id( 'moretrees:fir_sapling_ongen' ) ] = 90; + mg_villages.sapling_probability[ minetest.get_content_id( 'moretrees:jungletree_sapling_ongen' ) ] = 200; + mg_villages.sapling_probability[ minetest.get_content_id( 'moretrees:beech_sapling_ongen' ) ] = 30; + mg_villages.sapling_probability[ minetest.get_content_id( 'moretrees:apple_sapling_ongen' ) ] = 380; + mg_villages.sapling_probability[ minetest.get_content_id( 'moretrees:oak_sapling_ongen' ) ] = 380; -- ca 20x20; height: 10 + mg_villages.sapling_probability[ minetest.get_content_id( 'moretrees:sequoia_sapling_ongen' ) ] = 90; -- ca 10x10 + mg_villages.sapling_probability[ minetest.get_content_id( 'moretrees:palm_sapling_ongen' ) ] = 90; + mg_villages.sapling_probability[ minetest.get_content_id( 'moretrees:pine_sapling_ongen' ) ] = 200; + mg_villages.sapling_probability[ minetest.get_content_id( 'moretrees:willow_sapling_ongen' ) ] = 380; + mg_villages.sapling_probability[ minetest.get_content_id( 'moretrees:rubber_tree_sapling_ongen' ) ] = 380; +end + + +----------------------------------------------------------------------------- +-- no need to change this, unless you add new farming_plus fruits +----------------------------------------------------------------------------- +-- the schematics for buildings of type 'farm_tiny' grow cotton; the farming_plus fruits would be far more fitting +mg_villages.fruit_list = {'carrot','potatoe','orange','rhubarb','strawberry','tomato','cotton'}; +-- is farming_plus available? If not, we can't use this +if( not( minetest.get_modpath("farming_plus"))) then + mg_villages.fruit_list = nil; +end + + +----------------------------------------------------------------------------- +-- players can buy plots in villages with houses on for this price; +-- set according to your liking +----------------------------------------------------------------------------- +-- how much does the player have to pay for a plot with a building? +mg_villages.prices = { + empty = "default:copper_ingot 1", -- plot to build on + + -- building types which usually have inhabitants (and thus allow the player + -- who bought the building to modifiy the entire village area minus other + -- buildings) + tent = "default:copper_ingot 1", + hut = "default:copper_ingot 1", + farm_full = "default:gold_ingot 4", + farm_tiny = "default:gold_ingot 2", + lumberjack = "default:gold_ingot 2", + house = "default:gold_ingot 2", + house_large = "default:gold_ingot 4", + tavern = "default:gold_ingot 12", + trader = "default:gold_ingot 2", + + -- more or less community buildings + well = "default:gold_ingot 1", + village_square = "default:goldblock 1", + secular = "default:goldblock 2", -- secular buildings, such as libraries ec. + church = "default:goldblock 10", + + -- places for mobs to work at; usually without inhabitants + tower = "default:copper_ingot 1", + shed = "default:copper_ingot 2", + pit = "default:copper_ingot 3", -- claytrader pit + mill = "default:gold_ingot 10", + forge = "default:gold_ingot 10", + bakery = "default:gold_ingot 10", + shop = "default:gold_ingot 20", + sawmill = "default:gold_ingot 30", + + -- decoration + wagon = "default:tree 10", + bench = "default:tree 4", + + -- seperate fields + pasture = "default:copper_ingot 2", + field = "default:copper_ingot 2", + + -- chateaus are expensive + chateau = "default:diamondblock 5", + + -- one mese crystal per square meter in the spawn town :-) + empty6x12 = "default:mese_crystal 72", + empty8x8 = "default:mese_crystal 64", + -- a large plot costs mese blocks + empty16x16 = "default:mese 56", + -- this is just enough space to grow a tree + empty5x5 = "default:mese_crystal 12", + -- nobody is supposed to buy the spawn building...except for the admin + spawn = "nyancat:nyancat 99", +} + + +----------------------------------------------------------------------------- +-- The values below seldom need adjustment; don't change them unless you +-- know exactly what you are doing. +----------------------------------------------------------------------------- +-- if set to false, villages will not be integrated into the terrain - which looks very bad +mg_villages.ENABLE_TERRAIN_BLEND = true; +-- if set to false, holes digged by cavegen and mudflow inside the village will not be repaired; houses will be destroyed +mg_villages.UNDO_CAVEGEN_AND_MUDFLOW = true; + +-- internal variables for village generation + +mg_villages.VILLAGE_CHECK_RADIUS = 2 +mg_villages.VILLAGE_CHECK_COUNT = 1 +--mg_villages.VILLAGE_CHANCE = 28 +--mg_villages.VILLAGE_MIN_SIZE = 20 +--mg_villages.VILLAGE_MAX_SIZE = 40 +mg_villages.VILLAGE_CHANCE = 28 +-- min and max size are only used in case of them beeing not provided by the village type (see buildings.lua) +mg_villages.VILLAGE_MIN_SIZE = 25 +mg_villages.VILLAGE_MAX_SIZE = 90 --55 +mg_villages.FIRST_ROADSIZE = 3 +mg_villages.BIG_ROAD_CHANCE = 0 + +-- Enable that for really big villages (there are also really slow to generate) +--[[mg_villages.VILLAGE_CHECK_RADIUS = 3 +mg_villages.VILLAGE_CHECK_COUNT = 3 +mg_villages.VILLAGE_CHANCE = 28 +mg_villages.VILLAGE_MIN_SIZE = 100 +mg_villages.VILLAGE_MAX_SIZE = 150 +mg_villages.FIRST_ROADSIZE = 5 +mg_villages.BIG_ROAD_CHANCE = 50]] diff --git a/mods/mg_villages/depends.txt b/mods/mg_villages/depends.txt new file mode 100644 index 0000000..01f4097 --- /dev/null +++ b/mods/mg_villages/depends.txt @@ -0,0 +1,24 @@ +handle_schematics +default +doors? +farming? +wool? +stairs? +cottages? +moretrees? +trees? +forest? +dryplants? +cavestuff? +snow? +moresnow? +darkage? +ethereal? +deco? +metals? +grounds? +moreblocks? +bell? +mg? +mob_world_interaction? +cavestuff? diff --git a/mods/mg_villages/extras_for_development.lua b/mods/mg_villages/extras_for_development.lua new file mode 100644 index 0000000..c28eb7d --- /dev/null +++ b/mods/mg_villages/extras_for_development.lua @@ -0,0 +1,203 @@ + + + +-- provide a list of roads; function mg_villages.identify_parent_roads got lost somehow +mg_villages.extra_show_road_list = function( village_id ) + if( not( village_id ) or not( mg_villages.all_villages[ village_id ] )) then + return; + end + local str = "List of roads:\n"; + local bpos_list = mg_villages.all_villages[ village_id ].village.to_add_data.bpos; + -- find out which road branches off from which other road + mg_villages.identify_parent_roads( bpos_list ); + for i,pos in ipairs( bpos_list ) do + if( pos.btype and pos.btype=="road" ) then + str = str.." Plot "..tostring(i)..": road nr. "..tostring(pos.road_nr).. + " branching off from road on plot nr "..tostring(pos.parent_road).. + "\n data: "..minetest.serialize( pos ).."\n"; + end + end + minetest.chat_send_player(pname, str ); +end + +-- DEPRECATED +-- search the trader (who is supposed to be at the given position) and +-- spawn a new one in case he went missing +mg_villages.plotmarker_search_trader = function( trader, height ) + + local obj_list = minetest.get_objects_inside_radius({x=trader.x, y=height, z=trader.z}, 10 ); + for i,obj in ipairs( obj_list ) do + local e = obj:get_luaentity(); + if( e and e.object ) then + local p = e.object:getpos(); + if( p and p.x and math.abs(p.x-trader.x)<1.5 + and p.z and math.abs(p.z-trader.z)<1.5 + and e.name and e.name=="mobf_trader:trader" + and e.trader_typ and e.trader_typ==trader.typ) then +-- minetest.chat_send_player( "singleplayer", "FOUND trader "..tostring( e.trader_typ)); --TODO + end + end + end +end + + +-- TODO: deprecated; but may be useful in a new form for mobs that live in the house +mg_villages.plotmarker_list_traders = function( plot, formspec ) + if( not( plot ) or not( plot.traders )) then + return formspec; + end + + if( #plot.traders > 1 ) then + formspec = formspec.."label[0.3,7.0;Some traders live here. One works as a "..tostring(plot.traders[1].typ)..".]"; + for i=2,#plot.traders do + formspec = formspec.."label[0.3,"..(6.0+i)..";Another trader works as a "..tostring(plot.traders[i].typ)..".]"; + end + elseif( plot.traders[1] and plot.traders[1].typ) then + formspec = formspec.. + "label[0.3,7.0;A trader lives here. He works as a "..tostring( plot.traders[1].typ )..".]"; + else + formspec = formspec.. + "label[0.3,7.0;No trader currently works at this place.]"; + end + -- add buttons for visiting (teleport to trader), calling (teleporting trader to plot) and firing the trader + for i,trader in ipairs(plot.traders) do + local trader_entity = mg_villages.plotmarker_search_trader( trader, village.vh ); + + formspec = formspec.. + "button[6.0,"..(6.0+i)..";1.2,0.5;visit_trader_"..i..";visit]".. + "button[7.4,"..(6.0+i)..";1.2,0.5;call_trader_"..i..";call]".. + "button[8.8,"..(6.0+i)..";1.2,0.5;fire_trader_"..i..";fire]"; + + if( fields[ "visit_trader_"..i ] ) then + + player:moveto( {x=trader.x, y=(village.vh+1), z=trader.z} ); + minetest.chat_send_player( pname, "You are visiting the "..tostring( trader.typ ).. + " trader, who is supposed to be somewhere here. He might also be on a floor above you."); + return formspec; + end + if( fields[ "visit_call_"..i ] ) then + -- TODO: spawning: mob_basics.spawn_mob( {x=v.x, y=v.y, z=v.z}, v.typ, nil, nil, nil, nil, true ); + end + -- TODO: fire mob + end + formspec = formspec.."button[3.75,"..(7.0+math.max(1,#plot.traders))..";3.5,0.5;hire_trader;Hire a new random trader]"; + -- TODO: hire mob + return formspec; +end + + +-- provide debug information about mobs, let mobf_traders work around to some degree etc +mg_villages.mob_spanwer_on_rightclick = function( pos, node, clicker, itemstack, pointed_thing) + if( not( clicker )) then + return; + end + local meta = minetest.get_meta( pos ); + if( not( meta )) then + return; + end + local village_id = meta:get_string( "village_id" ); + local plot_nr = meta:get_int( "plot_nr" ); + local bed_nr = meta:get_int( "bed_nr" ); + -- direction for the mob to look at + local yaw = meta:get_int( "yaw" ); + + local mob_info = mg_villages.inhabitants.get_mob_data( village_id, plot_nr, bed_nr ); + + local str = "Found: "; + local mob_pos = nil; + local mob = nil; + if( mob_info.mob_id and mob_basics) then + mob = mob_basics.find_mob_by_id( mob_info.mob_id, "trader" ); + if( mob ) then + mob_pos = mob.object:getpos(); + if( mob_pos and mob_pos.x == pos.x and mob_pos.z == pos.z ) then + str = str.." yes, waiting right here. "; + mob.trader_does = "stand"; + -- TODO: detect "in his bed" + elseif( mob.trader_does == "sleep" and mob.trader_uses and mob.trader_uses.x ) then + str = str.." yes, sleeping in bed at "..minetest.pos_to_string( mob.trader_uses )..". "; + else + str = str.." yes, at "..minetest.pos_to_string( mob_pos)..". Teleporting here."; + mob.trader_does = "stand"; + mob_world_interaction.stand_at( mob, pos, yaw ); + end + else + str = str.." - not found -. "; + end + end + + local res = mg_villages.get_plot_and_building_data( village_id, plot_nr ); + if( not( res ) or not( res.bpos ) or not( mob_info.mob_id ) or not( mob ) or not( mob_world_interaction) or not( movement)) then + minetest.chat_send_player( clicker:get_player_name(), str.."Mob data: "..minetest.serialize(mob_info)); + return; + end + -- use door_nr 1; + local path = nil; + if( mob and mob.trader_does == "sleep" ) then + path = mg_villages.get_path_from_bed_to_outside( village_id, plot_nr, bed_nr, 1 ); + -- get out of the bed, walk to the middle of the front of the house + if( path and #path>0 ) then + mob_world_interaction.stand_at( mob, path[1], yaw ); + -- last step: go back to the mob spawner that belongs to the mob + table.insert( path, pos ); + str = str.." The mob plans to get up from his bed and stand in front of his house.\n"; + else + str = str.." FAILED to get a path from bed to outside.\n"; + end + else + -- go to bed and sleep + path = mg_villages.get_path_from_outside_to_bed( village_id, plot_nr, bed_nr, 1 ); + str = str.." The mob plans to go to his bed and start sleeping.\n"; + +-- local target_plot_nr = 9; -- just for testing.. +-- path = mg_villages.get_path_from_pos_to_plot_via_roads( village_id, pos, target_plot_nr ); +-- str = str.." The mob plans to go to plot nr. "..tostring(target_plot_nr).."\n"; + end + local move_obj = movement.getControl(mob); + move_obj:walk_path( path, 1, {find_path == true}); + + minetest.chat_send_player( clicker:get_player_name(), str.."Mob data: "..minetest.serialize(mob_info)); +end + + + +-- check if all mobs have beds and paths from beds to mob spawners in front of the house can be calculated; +-- deprecated since pathfinding is now done in the blueprints +mg_villages.debug_inhabitants = function( village, plot_nr) + if( not( minetest.get_modpath( "mob_world_interaction"))) then + return; + end + -- TODO: only for testing + local bpos = village.to_add_data.bpos[ plot_nr ]; + if( bpos and bpos.beds ) then + for i,bed in ipairs( bpos.beds ) do + -- find a place next to the bed where the mob can stand + local p_next_to_bed = mob_world_interaction.find_place_next_to( bed, 0, {x=0,y=0,z=0}); + if( not( p_next_to_bed ) or p_next_to_bed.iteration==99 ) then + minetest.chat_send_player("singleplayer", "Bed Nr. "..tostring(i).." at "..minetest.pos_to_string( bed )..": FAILED to find a place to stand."); + else + -- position in front of the building, with the building stretching equally to the right and left + -- get a diffrent one for each mob + local p_in_front = handle_schematics.get_pos_in_front_of_house( bpos, i ); + local path = mob_world_interaction.find_path( p_next_to_bed, p_in_front, { collisionbox = {1,0,3,4,2}}); + local str = ""; + if( path ) then + str = str.."Bed Nr. "..tostring(i).." at "..minetest.pos_to_string( bed )..", standing at "..minetest.pos_to_string( p_next_to_bed )..": "..tostring( table.getn( path )).." Steps to outside."; + local front_door_pos = nil; + for j,p in ipairs( path ) do + local n = minetest.get_node( p ); + if( n and n.name and mob_world_interaction.door_type[ n.name ]=="door_a_b") then + front_door_pos = p; + end + end + if( front_door_pos ) then + str = str.." Front door found at: "..minetest.pos_to_string( front_door_pos ); + end + else + str = str.." FAILED to find a path from bed "..minetest.pos_to_string(bed )..", standing at "..minetest.pos_to_string( p_next_to_bed )..", to front of house."; + end + minetest.chat_send_player("singleplayer", str ); + end + end + end +end diff --git a/mods/mg_villages/inhabitants.lua b/mods/mg_villages/inhabitants.lua new file mode 100644 index 0000000..20cfac8 --- /dev/null +++ b/mods/mg_villages/inhabitants.lua @@ -0,0 +1,1403 @@ + +--[[ + Data about mobs is stored for each plot in the array beds. + + Each entry in the beds table may have the following entries: + x, y, z position of the bed; set automaticly by handle_schematics. + This is the position of the node containing the head of the bed. + Supported beds are normal bed, fancy bed and the bed from cottages. + p2 param2 of the node that contains the head of the bed; set + automaticly by handle_schematics. + first_name the first name of a mob; all mobs with the same profession in the + same village have diffrent first names; also family members have + uniq first names (inside each village; not globally) + middle_name random middle initial (just one letter) + gender m or f (male/female) + generation 1 for children, 2 for parents (=workers), 3 for workers parents + age age of the mob in years + optional entries: + works_at plot_nr of the place where this mob works (may be the same as the + current one if he works at home) + title profession of the mob; see worker.title; also acts as a family name + to some degree + belongs_to some plots are neither workplaces nor places where mobs may live; + it is assumed that other mobs will "own" these places and work there + aside from their main job; this includes sheds, meadows, pastures + and wagons + owns array containing the ids of plots which belong_to this plot here + other: + bnr index of this mob's bed in mg_villages.BUILDINGS[ this_building_type ].bed_list + + + Apart from the beds array, there may also be a worker array. It contains information + about the mob that *works* at this place. Each entry in the worker table contains + the following information: + works_as general job description name (i.e. "shopkeeper") + title more specific job description (i.e. "flower seller"); + also used for the name of the mob and to some degree as a family name + lives_at plot_nr of the house where the worker lives + uniq counts how many other mobs in the village have the same profession + (=worker.title); also determines weather the mob will be called i.e. + "the flower seller" (if there is only one in this village) or "a + flower seller" (if there are several) + + Important: In order to *really* spawn a mob, you need to override the function + mg_villages.inhabitants.spawn_one_mob (see mobf_trader for an example). +--]] + + + +mg_villages.inhabitants = {} + +mg_villages.inhabitants.names_male = { "John", "James", "Charles", "Robert", "Joseph", + "Richard", "David", "Michael", "Christopher", "Jason", "Matthew", + "Joshua", "Daniel","Andrew", "Tyler", "Jakob", "Nicholas", "Ethan", + "Alexander", "Jayden", "Mason", "Liam", "Oliver", "Jack", "Harry", + "George", "Charlie", "Jacob", "Thomas", "Noah", "Wiliam", "Oscar", + "Clement", "August", "Peter", "Edgar", "Calvin", "Francis", "Frank", + "Eli", "Adam", "Samuel", "Bartholomew", "Edward", "Roger", "Albert", + "Carl", "Alfred", "Emmett", "Eric", "Henry", "Casimir", "Alan", + "Brian", "Logan", "Stephen", "Alexander", "Gregory", "Timothy", + "Theodore", "Marcus", "Justin", "Julius", "Felix", "Pascal", "Jim", + "Ben", "Zach", "Tom" }; + +mg_villages.inhabitants.names_female = { "Amelia", "Isla", "Ella", "Poppy", "Mia", "Mary", + "Anna", "Emma", "Elizabeth", "Minnie", "Margret", "Ruth", "Helen", + "Dorothy", "Betty", "Barbara", "Joan", "Shirley", "Patricia", "Judith", + "Carol", "Linda", "Sandra", "Susan", "Deborah", "Debra", "Karen", "Donna", + "Lisa", "Kimberly", "Michelle", "Jennifer", "Melissa", "Amy", "Heather", + "Angela", "Jessica", "Amanda", "Sarah", "Ashley", "Brittany", "Samatha", + "Emily", "Hannah", "Alexis", "Madison", "Olivia", "Abigail", "Isabella", + "Ava", "Sophia", "Martha", "Rosalind", "Matilda", "Birgid", "Jennifer", + "Chloe", "Katherine", "Penelope", "Laura", "Victoria", "Cecila", "Julia", + "Rose", "Violet", "Jasmine", "Beth", "Stephanie", "Jane", "Jacqueline", + "Josephine", "Danielle", "Paula", "Pauline", "Patricia", "Francesca"} + +-- get a middle name for the mob +mg_villages.inhabitants.get_random_letter = function() + return string.char( string.byte( "A") + math.random( string.byte("Z") - string.byte( "A"))); +end + +-- this is for medieval villages +mg_villages.inhabitants.get_family_function_str = function( data ) + if( data.generation == 2 and data.gender=="m") then + return "worker"; + elseif( data.generation == 2 and data.gender=="f") then + return "wife"; + elseif( data.generation == 3 and data.gender=="m") then + return "father"; + elseif( data.generation == 3 and data.gender=="f") then + return "mother"; + elseif( data.generation == 1 and data.gender=="m") then + return "son"; + elseif( data.generation == 1 and data.gender=="f") then + return "daughter"; + else + return "unkown"; + end +end + +-- in most cases this will be something like "John D.", "Martha A." etc. +mg_villages.inhabitants.mob_get_short_name = function( data ) + if( not( data ) or not( data.first_name )) then + return "- unkown -"; + end + local str = data.first_name; + if( data.middle_name ) then + str = str.." "..data.middle_name.."."; + end + if( data.last_name ) then + str = str.." "..data.last_name; + end + return str; +end + + +-- worker_data contains data about the father of the mob or about the mob him/herself +-- (needed for determining family relationship) +mg_villages.inhabitants.mob_get_full_name = function( data, worker_data ) + if( not( data ) or not( data.first_name )) then + return "- unkown -"; + end + local str = data.first_name; +-- if( data.mob_id ) then +-- str = "["..data.mob_id.."] "..minetest.pos_to_string( data ).." "..data.first_name; +-- else +-- str = " -no mob assigned - "..minetest.pos_to_string( data ).." "..data.first_name; +-- end + + if( data.middle_name ) then + str = str.." "..data.middle_name.."."; + end + if( data.last_name ) then + str = str.." "..data.last_name; + end + if( data.age ) then + str = str..", age "..data.age; + end + + if( worker_data and worker_data.title and worker_data.title ~= "" ) then + if( data.title and data.title == 'guest' ) then + str = str..", a guest staying at "..worker_data.title.." "..worker_data.first_name.."'s house"; + elseif( data.title and (data.title == "servant" or data.title=="housemaid" or data.title=="guard" or data.title=="soldier")) then + str = str..", a "..data.title; + + elseif( data.generation==2 and data.gender=="m" and data.title and data.uniq and data.uniq>1) then + str = str..", a "..data.title; --", one of "..tostring( worker_data.uniq ).." "..worker_data.title.."s"; + -- if there is a job: , the blacksmith + elseif( data.generation==2 and data.gender=="m" and data.title) then + str = str..", the "..data.title; + -- if there is a job: , blacksmith Fred's son etc. + elseif( worker_data.uniq and worker_data.uniq>1 ) then + str = str..", "..worker_data.title.." "..worker_data.first_name.."'s "..mg_villages.inhabitants.get_family_function_str( data ); + else + str = str..", the "..worker_data.title.."'s "..mg_villages.inhabitants.get_family_function_str( data ); + end + -- else something like i.e. (son) + elseif( data.generation and data.gender ) then + str = str.." ("..mg_villages.inhabitants.get_family_function_str( data )..")"; + end + return str; +end + + +-- override this function if you want more specific names (regional, age based, ..) +-- usually just "gender" is of intrest +-- name_exclude will be evaluated in get_new_inhabitant +-- village contains the village data of the entire village +mg_villages.inhabitants.get_names_list_full = function( data, gender, generation, name_exclude, min_age, village) + if( gender=="f") then + return mg_villages.inhabitants.names_female; + else -- if( gender=="m" ) then + return mg_villages.inhabitants.names_male; + end +end + + +-- configure a new inhabitant +-- gender can be "m" or "f" +-- generation 2 for parent-generation, 1 for children, 3 for grandparents +-- name_exlcude names the npc is not allowed to carry (=avoid duplicates) +-- (not a list but a hash table) +-- there can only be one mob with the same first name and the same profession per village +mg_villages.inhabitants.get_new_inhabitant = function( data, gender, generation, name_exclude, min_age, village ) + -- only create a new inhabitant if this one has not yet been configured + if( not( data ) or data.first_name ) then + return data; + end + + -- the gender of children is random + if( gender=="r" ) then + if( math.random(2)==1 ) then + gender = "m"; + else + gender = "f"; + end + end + + local name_list = mg_villages.inhabitants.get_names_list_full( data, gender, generation, name_exclude, min_age, village ); + if( gender=="f") then + data.gender = "f"; -- female + else -- if( gender=="m" ) then + data.gender = "m"; -- male + end + local name_list_tmp = {}; + for i,v in ipairs( name_list ) do + if( not( name_exclude[ v ])) then + table.insert( name_list_tmp, v ); + end + end + data.first_name = name_list_tmp[ math.random(#name_list_tmp)]; + -- middle name as used in the english speaking world (might help to distinguish mobs with the same first name) + data.middle_name = mg_villages.inhabitants.get_random_letter(); + + data.generation = generation; -- 2: parent generation; 1: child; 3: grandparents + if( data.generation == 1 ) then + data.age = math.random( 18 ); -- a child + elseif( data.generation == 2 ) then + data.age = 18 + math.random( 30 ); -- a parent + elseif( data.generation == 3 ) then + data.age = 48 + math.random( 50 ); -- a grandparent + end + if( min_age ) then + data.age = min_age + math.random( 12 ); + end + return data; +end + + +-- assign inhabitants to bed positions; create families; +-- bpos needs to contain at least { btype = building_type } +-- bpos is the building position data of one building each +-- Important: This function assigns a mob to each bed that was identified using path_info. +-- The real positions of the beds have to be calculated using +-- mg_villages.transform_coordinates( {p.x,p.y,p.z}, bpos ) +-- with p beeing the corresponding entry from mg_villages.BUILDINGS[ bpos.btype ].bed_list +mg_villages.inhabitants.assign_mobs_to_beds = function( bpos, house_nr, village_to_add_data_bpos, village ) + + if( not( bpos ) or not( bpos.btype )) then + return bpos; + end + + -- get data about the building + local building_data = mg_villages.BUILDINGS[ bpos.btype ]; + -- the building type determines which kind of mob will live there + if( not( building_data ) or not( building_data.typ ) + -- are there beds where the mob can sleep? + or not( building_data.bed_list ) or #building_data.bed_list < 1) then + return bpos; + end + + -- does the mob have a preferred spot where he likes to stand to receive customers/work? + -- i.e. teacher, shop owner, priest,... + -- this is the index of the mob's workplace in the building_data.workplace_list + local workplace_index = 1; + + -- workplaces got assigned earlier on + local works_at = nil; + local title = nil; + local uniq = nil; + local not_uniq = 0; + -- any other plots (sheds, wagons, fields, pastures) the worker here may own + local owns = {}; + for nr, v in ipairs( village_to_add_data_bpos ) do + -- have we found the workplace of this mob? + if( v and v.worker and v.worker.lives_at and v.worker.lives_at == house_nr ) then + works_at = nr; + title = v.worker.title; + uniq = v.worker.uniq; + if( v.worker.uniq ) then + not_uniq = v.worker.uniq; + end + end + -- ..or another plot that the mob might own? + if( v and v.belongs_to and v.belongs_to == house_nr ) then + table.insert( owns, nr ); + end + end + + local worker_names_with_same_profession = {}; + -- if the profession of this mob is not uniq then at least make sure that he does not share a name with a mob with the same profession + if( not_uniq > 1 ) then + for nr, v in ipairs( village_to_add_data_bpos ) do + if( v and v.worker and v.worker.lives_at + and v.worker.title == title -- same profession + and village_to_add_data_bpos[ v.worker.lives_at ] + and village_to_add_data_bpos[ v.worker.lives_at ].beds + and village_to_add_data_bpos[ v.worker.lives_at ].beds[1] + and village_to_add_data_bpos[ v.worker.lives_at ].beds[1].first_name ) then + worker_names_with_same_profession[ village_to_add_data_bpos[ v.worker.lives_at ].beds[1].first_name ] = 1; + end + end + end + + bpos.beds = {}; + -- make sure each bed is defined in the bpos.beds data structure, even if empty + for i,bed in ipairs( building_data.bed_list ) do + bpos.beds[i] = {}; + -- store the index for faster lookup + bpos.beds[i].bnr = i; + local p = mg_villages.transform_coordinates( {bed[1],bed[2],bed[3],bed[4]}, bpos ) + bpos.beds[i].x = p.x; + bpos.beds[i].y = p.y; + bpos.beds[i].z = p.z; + bpos.beds[i].p2 =p.p2; + end + -- lumberjack home + if( building_data.typ == "lumberjack" ) then + + for i,v in ipairs( bpos.beds ) do + -- lumberjacks do not have families and are all male + v = mg_villages.inhabitants.get_new_inhabitant( v, "m", 2, worker_names_with_same_profession, nil, village ); + -- the first worker in a lumberjack hut can get work assigned and own other plots + if( works_at and i==1) then + v.works_at = works_at; + v.title = title; + v.uniq = uniq; + v.workplace= 1; -- gets the first available workplace there + -- if he works at home, the first workplace there is taken + if( works_at == house_nr ) then + workplace_index = 2; + end + else + v.title = 'lumberjack'; + v.works_at = house_nr; -- works at home for now; TODO: ought to have a forrest + v.uniq = 99; -- one of many lumberjacks here + -- give the next free workplace to the mob + v.workplace= workplace_index; + workplace_index = workplace_index+1; + end + if( owns and #owns>0 ) then + v.owns = owns; + end + worker_names_with_same_profession[ v.first_name ] = 1; + end + + -- the castle-type buildings contain guards without family + elseif( building_data.typ == "castle" ) then + + for i,v in ipairs( bpos.beds ) do + v = mg_villages.inhabitants.get_new_inhabitant( v, "m", 2, worker_names_with_same_profession, nil, village ); + v.works_at = house_nr; -- they work in their castle + v.title = "soldier"; + v.uniq = 99; -- one of many guards here + worker_names_with_same_profession[ v.first_name ] = 1; + -- each soldier gets a workplace (provided one is available) + v.workplace = workplace_index; + workplace_index = workplace_index + 1; + end + + -- normal house containing a family + else + -- the first inhabitant will be the male worker + if( not( bpos.beds[1].first_name )) then + bpos.beds[1] = mg_villages.inhabitants.get_new_inhabitant( bpos.beds[1], "m", 2, worker_names_with_same_profession, nil, village ); -- male of parent generation + if( works_at ) then + bpos.beds[1].works_at = works_at; + bpos.beds[1].title = title; + bpos.beds[1].uniq = uniq; + bpos.beds[1].workplace= 1; + -- if he works at home, the first workplace there is taken + if( works_at == house_nr ) then + workplace_index = 2; + end + end + if( owns and #owns>0 ) then + bpos.beds[1].owns = owns; + end + end + + local name_exclude = {}; + -- the second inhabitant will be the wife of the male worker + if( bpos.beds[2] and not( bpos.beds[2].first_name )) then + bpos.beds[2] = mg_villages.inhabitants.get_new_inhabitant( bpos.beds[2], "f", 2, {}, nil, village ); -- female of parent generation + -- first names ought to be uniq withhin a family + name_exclude[ bpos.beds[2].first_name ] = 1; + -- no work or title assigned to the wife + end + + -- not all houses will have grandparents + local grandmother_bed_id = 2+math.random(5); + local grandfather_bed_id = 2+math.random(5); + -- some houses have guests + local guest_id = 99; + -- all but the given number are guests + if( building_data.guests ) then + guest_id = building_data.guests * -1; + end + -- a child of 18 with a parent of 19 would be...usually impossible unless adopted + local oldest_child = 0; + -- the third and subsequent inhabitants will ether be children or grandparents + for i,v in ipairs( bpos.beds ) do + if( v and v.first_name and v.generation == 3 and v.gender=="f" ) then + grandmother_bed_id = i; + elseif( v and v.first_name and v.generation == 3 and v.gender=="m" ) then + grandfather_bed_id = i; + -- at max 7 npc per house (taverns may have more beds than that) + elseif( v and not( v.first_name )) then + if( i>guest_id ) then + -- a chateau has servants instead of guests like a hotel + if( building_data.typ == "chateau" ) then + -- working generation (neither children nor grandparents) + v = mg_villages.inhabitants.get_new_inhabitant( v, "r", 2, name_exclude, nil, village ); + if( v.gender == "m" ) then + v.title = "servant"; + else + v.title = "housemaid"; + end + v.works_at = house_nr; + v.uniq = 99; -- one of many servants/housemaids here + -- give the next free workplace to the mob + v.workplace = workplace_index; + workplace_index = workplace_index + 1; + -- guest in a hotel + else + v = mg_villages.inhabitants.get_new_inhabitant( v, "r", math.random(3), name_exclude, nil, village ); -- get a random guest + v.title = 'guest'; + end + elseif( i==grandmother_bed_id ) then + v = mg_villages.inhabitants.get_new_inhabitant( v, "f", 3, name_exclude, bpos.beds[1].age+18, village ); -- get the grandmother + elseif( i==grandfather_bed_id ) then + v = mg_villages.inhabitants.get_new_inhabitant( v, "m", 3, name_exclude, bpos.beds[1].age+18, village ); -- get the grandfather + else + v = mg_villages.inhabitants.get_new_inhabitant( v, "r", 1, name_exclude, nil, village ); -- get a child of random gender + -- find out how old the oldest child is + if( v.age > oldest_child ) then + oldest_child = v.age; + end + end + -- children and grandparents need uniq names withhin a family + name_exclude[ v.first_name ] = 1; + end + end + -- the father has to be old enough for his children + if( bpos.beds[1] and oldest_child + 18 > bpos.beds[1].age ) then + bpos.beds[1].age = oldest_child + 18 + math.random( 10 ); + end + -- the mother also has to be old enough as well + if( bpos.beds[2] and oldest_child + 18 > bpos.beds[2].age ) then + bpos.beds[2].age = oldest_child + 18 + math.random( 10 ); + end + -- the grandfather (father's side) has to be old enough + if( bpos.beds[1] and bpos.beds[grandfather_bed_id] and bpos.beds[grandfather_bed_id].first_name + and bpos.beds[1].age+18 > bpos.beds[grandfather_bed_id].age) then + bpos.beds[grandfather_bed_id].age = bpos.beds[1].age+18; + end + -- ..and also the grandmother (father's side as well) + if( bpos.beds[1] and bpos.beds[grandmother_bed_id] and bpos.beds[grandmother_bed_id].first_name + and bpos.beds[1].age+18 > bpos.beds[grandmother_bed_id].age) then + bpos.beds[grandmother_bed_id].age = bpos.beds[1].age+18; + end + end + return bpos; +end + + +-- helper function for listing the plots a mob/house owns (sheds, wagons, fields, ..) +mg_villages.inhabitants.print_plot_list = function(village_to_add_data_bpos, plotlist) + local str = ""; + if( not( plotlist )) then + return ""; + end + for i,v in ipairs( plotlist ) do + if( i>1 ) then + str = str..", "; + end + local building_data = mg_villages.BUILDINGS[ village_to_add_data_bpos[v].btype ]; + str = str.."Nr. "..tostring( v ).." ("..building_data.typ..")"; + end + -- the , in the list would disrupt formspecs + return minetest.formspec_escape(str); +end + +-- print information about which mobs "live" in a house +mg_villages.inhabitants.print_house_info = function( village_to_add_data_bpos, house_nr, village_id, pname ) + + local bpos = village_to_add_data_bpos[ house_nr ]; + local building_data = mg_villages.BUILDINGS[ bpos.btype ]; + + if( not( building_data ) or not( building_data.typ )) then + building_data = { typ = bpos.btype }; + end + local str = "Plot Nr. "..tostring( house_nr ).." ["..tostring( building_data.typ or "-?-").."] "; + local people_str = ""; + local add_str = ""; + if( bpos.road_nr ) then + str = str.." at road nr. "..tostring( bpos.road_nr ).." "; + end + if( bpos.btype == "road" ) then + str = str.."is a road."; + + -- wagon, shed, field and pasture + elseif( bpos.belongs_to and village_to_add_data_bpos[ bpos.belongs_to ].beds) then + local owner = village_to_add_data_bpos[ bpos.belongs_to ].beds[1]; + if( not( owner ) or not( owner.first_name )) then + str = str.."WARNING: NO ONE owns this plot."; + else + str = str.."belongs to:"; + people_str = minetest.formspec_escape( mg_villages.inhabitants.mob_get_full_name( owner, owner ).." owns this plot"); + end + + elseif( (not( bpos.beds ) or #bpos.beds<1) and bpos.worker and bpos.worker.title) then + if( not( bpos.worker.lives_at)) then + str = str.."WARNING: NO WORKER assigned to this plot."; + else + local worker = village_to_add_data_bpos[ bpos.worker.lives_at ].beds[1]; + str = str.."provides work:"; + local btype2 = mg_villages.BUILDINGS[ village_to_add_data_bpos[ bpos.worker.lives_at ].btype]; + if( btype2 and btype2.typ ) then + people_str = minetest.formspec_escape( mg_villages.inhabitants.mob_get_full_name( worker, worker ).." who lives at the "..tostring( btype2.typ ).." on plot "..tostring( bpos.worker.lives_at )..", works here"); + else + people_str = "- unkown -"; + end + end + + elseif( not( bpos.beds ) or not( bpos.beds[1])) then + str = str.."provides neither work nor housing."; + + else + str = str.."is inhabitated by "; + if( #bpos.beds == 1 ) then + str = str.."only one person:"; + elseif( #bpos.beds > 1 ) then + str = str..tostring( #bpos.beds ).." people:"; + else + str = str.."nobody:"; + end + -- make sure all mobs living here are spawned + mg_villages.inhabitants.spawn_mobs_for_one_house( bpos, nil, nil, village_id, house_nr ); + for i,v in ipairs( bpos.beds ) do + if( v and v.first_name ) then + local worker_data = bpos.beds[1]; -- the father has the job + if( v and v.works_at ) then + worker_data = v; + end + people_str = people_str.. + tostring( i )..". ".. + minetest.formspec_escape( mg_villages.inhabitants.mob_get_full_name( v, worker_data )); + if(v and v.works_at and v.works_at==house_nr ) then + people_str = people_str.." who lives and works here,"; + elseif( v and v.works_at ) then + local works_at = bpos.beds[1].works_at; + local btype2 = mg_villages.BUILDINGS[ village_to_add_data_bpos[ works_at ].btype]; + people_str = people_str.." who works at the "..tostring( btype2.typ ).." on plot "..tostring(works_at)..","; + elseif( i ~= #bpos.beds ) then + people_str = people_str..","; + end + end + end + -- other plots owned + if( bpos.beds and bpos.beds[1] and bpos.beds[1].owns ) then + add_str = "The family also owns the plot(s) ".. + mg_villages.inhabitants.print_plot_list(village_to_add_data_bpos, bpos.beds[1].owns).."."; + end + end + -- which entrances/front doors does the building have? + local front_doors = mg_villages.inhabitants.get_front_doors(bpos); + local door_str = "Entrances: "; + for i,p in ipairs( front_doors ) do + door_str = door_str..minetest.pos_to_string( p ).." "; + end + if( not( front_doors ) or #front_doors<1) then + door_str = door_str.."- unknown -"; + end + + if( people_str == "" ) then + people_str = "- nobody lives or works here permanently -"; + end + local link_teleport = ""; + if( pname and minetest.check_player_privs( pname, {teleport=true})) then + -- teleport to the plotmarker and not somewhere where part of the house may stand + link_teleport = 'button[8.0,0;1,0.5;teleport_to;Visit]'.. + "field[21,21;0.1,0.1;pos2str;Pos;"..minetest.pos_to_string( + handle_schematics.get_pos_in_front_of_house( bpos, 0 )).."]"; + end + + -- allow to click through the diffrent plots + -- (a second back button doesn't hurt) + local prev_next_button = "button[8.5,4.7;1,0.5;back_to_plotlist;Back]"; + if( house_nr > 1 ) then + prev_next_button = prev_next_button..'button[9.5,4.7;1,0.5;prev;Prev]'; + end + if( house_nr < #village_to_add_data_bpos ) then + prev_next_button = prev_next_button..'button[10.5,4.7;1,0.5;next;Next]'; + end + return 'size[12,5.0]'.. + 'button_exit[4.0,0;2,0.5;quit;Exit]'.. + 'button[9.5,0;2,0.5;back_to_plotlist;Back to plotlist]'.. + -- the back button needs to know which village we are in + 'field[20,20;0.1,0.1;village_id;VillageID;'..minetest.formspec_escape( village_id ).."]".. + -- when a mob is selected we need to provide the plot nr of this plot + 'field[22,22;0.1,0.1;plot_nr;HouseNr;'..house_nr..']'.. + -- show where the plot is located + 'label[0.5,0;Location: '..minetest.formspec_escape( minetest.pos_to_string( bpos ))..']'.. + -- allow to teleport there (if the player has the teleport priv) + link_teleport.. + -- allow to click through the plots + prev_next_button.. + 'label[0.5,0.5;'..minetest.formspec_escape(str)..']'.. + 'label[0.5,4.1;'..add_str..']'.. + 'label[0.5,4.6;'..minetest.formspec_escape(door_str)..']'.. + 'tablecolumns[' .. + 'text,align=left]'.. -- name and description of inhabitant + 'table[0.1,1.0;11.4,3.0;mg_villages:formspec_list_inhabitants;'..people_str..']'; +end + + +-- print information about a particular mob +mg_villages.inhabitants.print_mob_info = function( village_to_add_data_bpos, house_nr, village_id, bed_nr, pname ) + + local bpos = village_to_add_data_bpos[ house_nr ]; + local building_data = mg_villages.BUILDINGS[ bpos.btype ]; + + if( not( building_data ) or not( building_data.typ )) then + building_data = { typ = bpos.btype }; + end + + local this_mob_data = village_to_add_data_bpos[ house_nr ].beds[ bed_nr ]; + local gender = "male"; + if( this_mob_data.gender == "f" ) then + gender = "female"; + end + + -- identify grandparents and children + local list_of_children = ""; + local grandfather = -1; + local grandmother = -1; + for i,v in ipairs( bpos.beds ) do + if( not(v.title) and v.generation==3 and v.gender=="m") then + grandfather = i; + elseif( not(v.title) and v.generation==3 and v.gender=="f") then + grandmother = i; + elseif( not(v.title) and v.generation==1 ) then + list_of_children = list_of_children..mg_villages.inhabitants.mob_get_short_name( v )..", "; + end + end + if( list_of_children == "" ) then + list_of_children = "- none -"; + end + -- contains commata + list_of_children = minetest.formspec_escape( string.sub( list_of_children, 1, -3)); + + -- show family relationships (father, mother, grandfather, grandmother, children) + local generation = "adult"; + if( this_mob_data.generation == 1 ) then + generation = "child"; + if( not( this_mob_data.title )) then -- no guest, servant, soldier, ... + generation = generation.. + ",Father:,"..mg_villages.inhabitants.mob_get_short_name( bpos.beds[1] ).. + ",Mother:,"..mg_villages.inhabitants.mob_get_short_name( bpos.beds[2] ).. + ",Grandfather:,"..mg_villages.inhabitants.mob_get_short_name(bpos.beds[grandfather]).. + ",Grandmother:,"..mg_villages.inhabitants.mob_get_short_name(bpos.beds[grandmother]); + end + elseif( this_mob_data.generation == 3 ) then + generation = "senior"; + if( not( this_mob_data.title )) then -- no guest, servant, soldier, ... + if( this_mob_data.gender=="m" ) then + generation = generation.. + ",Father of:,"..mg_villages.inhabitants.mob_get_short_name( bpos.beds[1] ).. + ",Grandfather of:,"..list_of_children; + else + generation = generation.. + ",Mother of:,"..mg_villages.inhabitants.mob_get_short_name( bpos.beds[1] ).. + ",Grandmother of:,"..list_of_children; + end + end + elseif( this_mob_data.generation == 2 ) then + if( this_mob_data.gender=="m" and bed_nr == 1) then + generation = generation.. + ",Father:,"..mg_villages.inhabitants.mob_get_short_name( bpos.beds[grandfather] ).. + ",Mother:,"..mg_villages.inhabitants.mob_get_short_name( bpos.beds[grandmother] ).. + ",Father of:,"..list_of_children; + elseif( bed_nr == 2) then + -- the grandparents belong to the man's side + generation = generation.. + ",Mother of:,"..list_of_children; + end + end + -- the mob may have a wife or husband + if( this_mob_data.generation == 2 and this_mob_data.gender == "m" and bpos.beds[2] and not(bpos.beds[2].title)) then + generation = generation.. + ",Husband of:,"..mg_villages.inhabitants.mob_get_short_name( bpos.beds[2] ); + elseif( this_mob_data.generation == 2 and this_mob_data.gender == "f" and not(this_mob_data.title)) then + generation = generation.. + ",Wife of:,"..mg_villages.inhabitants.mob_get_short_name( bpos.beds[1] ); + elseif( this_mob_data.generation == 3 and this_mob_data.gender == "m" and not(this_mob_data.title)) then + generation = generation.. + ",Husband of:,"..mg_villages.inhabitants.mob_get_short_name( bpos.beds[grandmother] ); + elseif( this_mob_data.generation == 3 and this_mob_data.gender == "f" and not(this_mob_data.title)) then + generation = generation.. + ",Wife of:,"..mg_villages.inhabitants.mob_get_short_name( bpos.beds[grandfather] ); + end + + local lives_in = minetest.formspec_escape( building_data.typ.." on plot "..house_nr.." at ".. + minetest.pos_to_string( handle_schematics.get_pos_in_front_of_house( bpos, 0 ))); + local profession = "- none -"; + if( this_mob_data.title ) then + profession = this_mob_data.title; + if( this_mob_data and this_mob_data.title == "guest" ) then + profession = profession..",,(just visiting)"; + elseif( not( this_mob_data.uniq ) or this_mob_data.uniq<1 ) then + profession = profession..",,(the only one in this village)"; + else + profession = profession..",,(one amongst several in this village)"; + end + end + local works_at = "-"; + local pref_workspace = ""; + if( this_mob_data.works_at ) then + local bpos_work = village_to_add_data_bpos[ this_mob_data.works_at ]; + local building_data_work = mg_villages.BUILDINGS[ bpos_work.btype ]; + if( not( building_data_work )) then + building_data_work = { typ = "unkown" }; + end + works_at = minetest.formspec_escape( building_data_work.typ.." on plot "..this_mob_data.works_at.. + " at "..minetest.pos_to_string( handle_schematics.get_pos_in_front_of_house( bpos_work,0))); + -- does this mob have a fixed workspace? + if( building_data_work.workplace_list and this_mob_data.workplace) then + if( building_data_work.workplace_list[ this_mob_data.workplace ] ) then + pref_workspace = ",Preferred workplace:,".. + minetest.formspec_escape( + minetest.pos_to_string( + mg_villages.transform_coordinates( + building_data_work.workplace_list[ this_mob_data.workplace], bpos_work )).. + " ["..tostring( this_mob_data.workplace ).."/".. + tostring( #building_data_work.workplace_list ).."]"); + else + pref_workspace = ",Preferred workplace:,no specific one"; + end + end + end + local next_to_bed_str = ""; + if( this_mob_data.bnr and building_data.stand_next_to_bed_list[ this_mob_data.bnr ]) then + next_to_bed_str = ",Gets up from bed to:,".. + minetest.formspec_escape( + minetest.pos_to_string( + mg_villages.transform_coordinates( + building_data.stand_next_to_bed_list[ this_mob_data.bnr], bpos))); + end + local text = + "First name:,"..(this_mob_data.first_name or '- ? -').. + ",Middle initial:,"..(this_mob_data.middle_name or '- ? -')..".".. + ",Gender:,"..gender.. + ",Age:,"..(this_mob_data.age or '- ? -').. + ",Generation:,"..generation.. + ",Lives in:,"..lives_in.. + -- TODO: the bed position might be calculated (and be diffrent from this x,y,z here) + -- TODO: the position next to the bed for getting up can be calculated as well + ",Sleeps in bed at:,"..minetest.formspec_escape( minetest.pos_to_string( this_mob_data ).. + ", "..this_mob_data.p2.." ["..(this_mob_data.bnr or "-?-").."/".. + (#building_data.bed_list or "-?-").."]").. + -- place next to te bed where the mob can stand + next_to_bed_str.. + -- position of the mob's mob spawner + ",Has a spawner at:,"..minetest.formspec_escape( minetest.pos_to_string( + handle_schematics.get_pos_in_front_of_house( bpos, bed_nr))).. + pref_workspace.. + ",Profession:,"..profession.. + ",Works at:,"..works_at; + + if( this_mob_data.owns ) then + text = text..",Is owner of:,".. + mg_villages.inhabitants.print_plot_list(village_to_add_data_bpos, this_mob_data.owns).."."; + end + + for k,v in pairs( this_mob_data ) do + if( k~="first_name" and k~="middle_name" and k~="gender" and k~="age" and k~="generation" + and k~="x" and k~="y" and k~="z" and k~="p2" and k~="bnr" + and k~="title" and k~="works_at" and k~="owns" and k~="uniq" and k~="workplace" + and k~="typ" ) then -- typ: content_id of bed head node + -- add those entries that have not been covered yet + text = text..","..k..":,"..tostring(v); + end + end + + + local link_teleport = ""; +-- TODO: this ought to be a teleport-to-the-mob-button + if( pname and minetest.check_player_privs( pname, {teleport=true})) then + -- teleport to the plotmarker and not somewhere where part of the house may stand + link_teleport = 'button[6.4,0;1,0.5;teleport_to;Visit]'.. + "field[21,21;0.1,0.1;pos2str;Pos;"..minetest.pos_to_string( + handle_schematics.get_pos_in_front_of_house( bpos, 0 )).."]"; + end + + -- allow to click through the inhabitants + -- (a second back button doesn't hurt) + local prev_next_button = "button[8.5,7.2;1,0.5;back_to_houselist;Back]"; + if( bed_nr > 1 ) then + prev_next_button = prev_next_button..'button[9.5,7.2;1,0.5;prev;Prev]'; + end + if( bed_nr < #bpos.beds ) then + prev_next_button = prev_next_button..'button[10.5,7.2;1,0.5;next;Next]'; + end + return 'size[12,7.5]'.. + 'button_exit[4.0,0;2,0.5;quit;Exit]'.. + 'button[7.5,0;5,0.5;back_to_houselist;Back to all inhabitants of house]'.. + -- the back button needs to know which village we are in + 'field[20,20;0.1,0.1;village_id;VillageID;'..minetest.formspec_escape( village_id ).."]".. + -- it also needs to know the plot number we might want to go back to + 'field[22,22;0.1,0.1;plot_nr;HouseNr;'..house_nr..']'.. + -- the prev/next buttons need information about the mob nr + 'field[23,23;0.1,0.1;bed_nr;BedNr;'..bed_nr..']'.. + -- show where the plot is located + 'label[0.5,0;Location: '..minetest.formspec_escape( minetest.pos_to_string( bpos ))..']'.. + -- allow to teleport there (if the player has the teleport priv) + link_teleport.. + -- add prev/next buttons + prev_next_button.. + 'label[0.5,0.5;'..minetest.formspec_escape("Information about inhabitant nr. ".. + tostring( bed_nr )..": ".. + mg_villages.inhabitants.mob_get_short_name( this_mob_data ).. + " ("..( this_mob_data.title or "- no profession -").."):")..']'.. + 'tablecolumns[' .. + 'text,align=left;'.. + 'text,align=left]'.. -- name and description of inhabitant + 'table[0.1,1.0;11.4,6.0;mg_villages:formspec_list_one_mob;'..text..']'; +end + + +-- some building types will determine the name of the job +mg_villages.inhabitants.jobs_in_buildings = {}; +mg_villages.inhabitants.jobs_in_buildings[ 'mill' ] = {'miller'}; +mg_villages.inhabitants.jobs_in_buildings[ 'bakery' ] = {'baker'}; +mg_villages.inhabitants.jobs_in_buildings[ 'church' ] = {'priest'}; +mg_villages.inhabitants.jobs_in_buildings[ 'tower' ] = {'guard'}; +mg_villages.inhabitants.jobs_in_buildings[ 'school' ] = {'schoolteacher'}; +mg_villages.inhabitants.jobs_in_buildings[ 'library' ] = {'librarian'}; +mg_villages.inhabitants.jobs_in_buildings[ 'tavern' ] = {'barkeeper'}; +mg_villages.inhabitants.jobs_in_buildings[ 'pub' ] = {'barkeeper'}; +mg_villages.inhabitants.jobs_in_buildings[ 'inn' ] = {'innkeeper'}; +mg_villages.inhabitants.jobs_in_buildings[ 'hotel' ] = {'innkeeper'}; +mg_villages.inhabitants.jobs_in_buildings[ 'forge' ] = {'smith', + -- bronzesmith, bladesmith, locksmith etc. may be of little use in our MT worlds; + -- the blacksmith is the most common one, followed by the coppersmith + {'blacksmith','blacksmith', 'blacksmith', 'coppersmith','coppersmith', + 'tinsmith', 'goldsmith'}}; +mg_villages.inhabitants.jobs_in_buildings[ 'shop' ] = {'shopkeeper', + -- the shopkeeper is the most common; however, there can be more specialized sellers + {'shopkeeper', 'shopkeeper', 'shopkeeper', 'seed seller', 'flower seller', 'ore seller', 'fruit trader', 'wood trader'}}; +mg_villages.inhabitants.jobs_in_buildings[ 'charachoal' ] = {'charachoal burner'}; +mg_villages.inhabitants.jobs_in_buildings[ 'trader' ] = {'trader'}; -- TODO: currently only used for clay traders +mg_villages.inhabitants.jobs_in_buildings[ 'chateau' ] = {'landlord'}; +mg_villages.inhabitants.jobs_in_buildings[ 'sawmill' ] = {'sawmill owner'}; +mg_villages.inhabitants.jobs_in_buildings[ 'forrest' ] = {'lumberjack'}; -- TODO: we don't have forrests yet +mg_villages.inhabitants.jobs_in_buildings['village_square']={'major'}; +mg_villages.inhabitants.jobs_in_buildings[ 'townhall' ] = {'major'}; +mg_villages.inhabitants.jobs_in_buildings[ 'horsestable'] = {'horsekeeper'}; + + + +-- TODO pit - suitable for traders (they sell clay...) + +mg_villages.inhabitants.assign_jobs_to_houses = function( village_to_add_data_bpos ) + + local workers_required = {}; -- places that require a specific worker that lives elsewhere + local found_farm_full = {}; -- farmers (they like to work on fields and pastures) + local found_hut = {}; -- workers best fit for working in other buildings + local found_house = {}; -- workers which may either take a random job or work elsewhere + local found_any_home = {}; -- farm_full, hut or house (anything with beds in) + local suggests_worker = {}; -- sheds and wagons can support workers with a random job + local suggests_farmer = {}; -- fields and pastures are ideal for farmers + -- find out which jobs need to get taken + for house_id,bpos in ipairs(village_to_add_data_bpos) do + -- get data about the building + local building_data = mg_villages.BUILDINGS[ bpos.btype ]; + -- the building type determines which kind of mobs will live there; + + -- nothing gets assigned if we don't have data + if( not( building_data ) or not( building_data.typ ) + -- or if a mob is assigned already + or bpos.worker) then + + -- some buildings require a specific worker + elseif( mg_villages.inhabitants.jobs_in_buildings[ building_data.typ ] ) then + local worker_data = mg_villages.inhabitants.jobs_in_buildings[ building_data.typ ]; + bpos.worker = {}; + bpos.worker.works_as = worker_data[1]; + -- the worker might be specialized + if( worker_data[2] ) then + bpos.worker.title = worker_data[2][ math.random( #worker_data[2])]; + -- otherwise his title is the same as his job name + else + bpos.worker.title = bpos.worker.works_as; + end + -- can the worker sleep there or does he require a house elsewhere? + if( building_data.bed_count and building_data.bed_count > 0 ) then + bpos.worker.lives_at = house_id; + else + table.insert( workers_required, house_id ); + end + + -- we have found a place with a bed that does not reuiqre a worker directly + elseif( building_data.bed_count and building_data.bed_count > 0 ) then + + -- mobs having to take care of a full farm (=farm where the farmer's main income is + -- gained from farming) are less likely to have time for other jobs + if( building_data.typ=='farm_full' ) then + table.insert( found_farm_full, house_id ); + -- mobs living in a hut are the best candidates for jobs in other buildings + elseif( building_data.typ=='hut' ) then + table.insert( found_hut, house_id ); + -- other mobs may either take on a random job or work in other buildings + else + table.insert( found_house, house_id ); + end + table.insert( found_any_home, house_id ); + + -- sheds and wagons are useful for random jobs but do not really require a worker + elseif( building_data.typ == 'shed' + or building_data.typ == 'wagon' ) then + + table.insert( suggests_worker, house_id ); + + -- fields and pastures are places where full farmers are best at + elseif( building_data.typ == 'field' + or building_data.typ == 'pasture' ) then + + table.insert( suggests_farmer, house_id ); + end + end + + -- these are only additional; they do not require a worker as such + -- assign sheds and wagons randomly to suitable houses + for i,v in ipairs( suggests_worker ) do + -- distribute sheds, wagons etc. equally on all places with beds + if( #found_any_home>0 ) then + local nr = math.random( #found_any_home ); + village_to_add_data_bpos[ v ].belongs_to = found_any_home[ nr ]; + else + -- print("NOT ASSIGNING work PLOT Nr. "..tostring(v).." to anything (nothing suitable found)"); + end + end + + -- assign fields and pastures randomly to suitable houses + for i,v in ipairs( suggests_farmer ) do + -- order: found_farm_full, found_house, found_hut + if( #found_farm_full>0 ) then + local nr = math.random( #found_farm_full ); + village_to_add_data_bpos[ v ].belongs_to = found_farm_full[ nr ]; + elseif( #found_house>0 ) then + local nr = math.random( #found_house ); + village_to_add_data_bpos[ v ].belongs_to = found_house[ nr ]; + elseif( #found_hut >0 ) then + local nr = math.random( #found_hut ); + village_to_add_data_bpos[ v ].belongs_to = found_hut[ nr ]; + else + -- print("NOT ASSIGNING farm PLOT Nr. "..tostring(v).." to anything (nothing suitable found)"); + end + end + + -- find workers for jobs that require workes who live elsewhere + for i,v in ipairs( workers_required ) do + -- huts are ideal + if( #found_hut>0 ) then + local nr = math.random( #found_hut ); + village_to_add_data_bpos[ v ].worker.lives_at = found_hut[ nr ]; + table.remove( found_hut, nr ); + -- but workers may also be gained from other houses where workers may live + elseif( #found_house > 0 ) then + local nr = math.random( #found_house ); + village_to_add_data_bpos[ v ].worker.lives_at = found_house[ nr ]; + table.remove( found_house, nr ); + -- if all else fails try to get a worker from a full farm + elseif( #found_farm_full > 0 ) then + local nr = math.random( #found_farm_full ); + village_to_add_data_bpos[ v ].worker.lives_at = found_farm_full[ nr ]; + table.remove( found_farm_full, nr ); + -- we ran out of potential workers... + else + -- no suitable worker found + --local building_data = mg_villages.BUILDINGS[ village_to_add_data_bpos[v].btype ]; + --print("NO WORKER FOUND FOR Nr. "..tostring(v).." "..tostring( building_data.typ )..": "..minetest.serialize( village_to_add_data_bpos[v].worker )); + end + end + + -- other owners of farm_full buildings become farmers + for i,v in ipairs( found_farm_full ) do + village_to_add_data_bpos[ v ].worker = {}; + village_to_add_data_bpos[ v ].worker.works_as = "farmer"; + village_to_add_data_bpos[ v ].worker.title = "farmer"; + village_to_add_data_bpos[ v ].worker.lives_at = v; -- house number + end + + + -- add random jobs to the leftover houses + local random_jobs = { 'stonemason', 'stoneminer', 'carpenter', 'toolmaker', + 'doormaker', 'furnituremaker', 'stairmaker', 'cooper', 'wheelwright', + 'saddler', 'roofer', 'iceman', 'potterer', 'bricklayer', 'dyemaker', + 'glassmaker' }; + for i,v in ipairs( found_house ) do + local job = random_jobs[ math.random(#random_jobs)]; + village_to_add_data_bpos[ v ].worker = {}; + village_to_add_data_bpos[ v ].worker.works_as = job; + village_to_add_data_bpos[ v ].worker.title = job; + village_to_add_data_bpos[ v ].worker.lives_at = v; -- house number + end + for i,v in ipairs( found_hut ) do + local job = random_jobs[ math.random(#random_jobs)]; + village_to_add_data_bpos[ v ].worker = {}; + village_to_add_data_bpos[ v ].worker.works_as = job; + village_to_add_data_bpos[ v ].worker.title = job; + village_to_add_data_bpos[ v ].worker.lives_at = v; -- house number + end + + -- even though it should not happen there are still sometimes workers that work on + -- another plot and wrongly get a random worker job in their house assigned as well; + -- check for those and eliminiate them + for house_nr,bpos in ipairs( village_to_add_data_bpos ) do + if( bpos and bpos.worker and bpos.worker.lives_at and bpos.worker.lives_at ~= house_nr + and village_to_add_data_bpos[ bpos.worker.lives_at ] + and village_to_add_data_bpos[ bpos.worker.lives_at ].worker) then + -- make sure the worker gets no other job or title from his house + village_to_add_data_bpos[ bpos.worker.lives_at ].worker = nil; + end + end + + -- find out if there are any duplicate professions + local professions = {}; + for house_nr,bpos in ipairs( village_to_add_data_bpos ) do + if( bpos.worker and bpos.worker.title ) then + if( not( professions[ bpos.worker.title ])) then + professions[ bpos.worker.title ] = 1; + else + professions[ bpos.worker.title ] = professions[ bpos.worker.title ] + 1; + end + end + end + -- mark all those workers who share the same profession as "not_uniq" + for house_nr,bpos in ipairs( village_to_add_data_bpos ) do + if( bpos.worker and bpos.worker.title and professions[ bpos.worker.title ]>1) then + bpos.worker.uniq = professions[ bpos.worker.title ]; + end + end + return village_to_add_data_bpos; +end + + +-- apply bpos.pos as offset and apply rotation +-- TODO: rotate param2 as well +mg_villages.transform_coordinates = function( pos, bpos ) + if( not( pos ) or not(pos[1]) or not(pos[2]) or not(pos[3])) then + return nil; + end + -- start with the start position as stored in bpos + local p = {x=bpos.x, y=bpos.y, z=bpos.z}; + + local building_data = mg_villages.BUILDINGS[ bpos.btype ]; + + -- the height is not affected by rotation + -- the positions are stored as array + p.y = p.y + building_data.yoff + pos[2] - 1; + + local rel = {x=pos[1], y=pos[2], z=pos[3]}; -- relative position (usually of entrance) + + -- all values start counting with index 1; we need to start with 0 for the offset + local sx = bpos.bsizex-1; + local sz = bpos.bsizez-1; + rel.x = rel.x-1; + rel.z = rel.z-1; + + if( bpos.mirror and bpos.btype ) then + local o = building_data.orients[1]; + if( (o == 0 or o == 2) and (bpos.brotate==0 or bpos.brotate==2)) then + rel.z = sz - rel.z; + elseif( (o == 0 or o == 2) and (bpos.brotate==1 or bpos.brotate==3)) then + rel.z = sx - rel.z; + + elseif( (o == 1 or o == 3) and (bpos.brotate==0 or bpos.brotate==2)) then + rel.x = sx - rel.x; + elseif( (o == 1 or o == 3) and (bpos.brotate==1 or bpos.brotate==3)) then + rel.x = sz - rel.x; + end + end + + if( bpos.brotate==0 ) then + p.x = p.x + rel.x; + p.z = p.z + rel.z; + elseif( bpos.brotate==1 ) then + p.x = p.x + rel.z; + p.z = p.z + sz - rel.x; -- bsizex and bsizez are swapped + elseif( bpos.brotate==2 ) then + p.x = p.x + sx - rel.x; + p.z = p.z + sz - rel.z; + elseif( bpos.brotate==3 ) then + p.x = p.x + sx - rel.z; -- bsizex and bsizez are swapped + p.z = p.z + rel.x; + end + + -- param2 is rotated the same way as in handle_schematics.generate_building_what_to_place_here_and_how + if( pos[4] ) then -- param2 + local mirror_x = false; + local mirror_z = false; + if( bpos.mirror ) then + if( building_data.axis and building_data.axis == 1 ) then + mirror_x = true; + mirror_z = false; + -- used for "restore original landscape" + elseif( building_data.axis and building_data.axis == 3 ) then + mirror_z = true; + mirror_x = true; + else + mirror_x = false; + mirror_z = true; + end + end + if( mirror_x ) then + p.p2 = handle_schematics.rotation_table[ 'facedir' ][ pos[4]+1 ][ bpos.brotate+1 ][ 2 ]; + elseif( mirror_z ) then + p.p2 = handle_schematics.rotation_table[ 'facedir' ][ pos[4]+1 ][ bpos.brotate+1 ][ 3 ]; + else + p.p2 = handle_schematics.rotation_table[ 'facedir' ][ pos[4]+1 ][ bpos.brotate+1 ][ 1 ]; + end + end + + return p; +end + + +mg_villages.get_plot_and_building_data = function( village_id, plot_nr ) + if( not( mg_villages.all_villages[ village_id ]) + or not( mg_villages.all_villages[ village_id ].to_add_data.bpos[ plot_nr ] )) then + return; + end + local bpos = mg_villages.all_villages[ village_id ].to_add_data.bpos[ plot_nr ]; + if( not( bpos ) or not( bpos.btype ) or not( mg_villages.BUILDINGS[ bpos.btype ])) then + return; + end + return { bpos = bpos, building_data = mg_villages.BUILDINGS[ bpos.btype ]}; +end + + +mg_villages.get_entrance_list = function( village_id, plot_nr ) + local res = mg_villages.get_plot_and_building_data( village_id, plot_nr ); + if( not( res ) or not( res.building_data ) or not(res.building_data.all_entrances )) then + return {}; + end + local entrance_list = {}; + for i,e in ipairs( res.building_data.all_entrances ) do + table.insert( entrance_list, mg_villages.transform_coordinates( e, res.bpos )); + end + return entrance_list; +end + + +mg_villages.get_path_from_bed_to_outside = function( village_id, plot_nr, bed_nr, door_nr ) + local res = mg_villages.get_plot_and_building_data( village_id, plot_nr ); + if( not( res ) or not( res.building_data ) or not(res.building_data.short_file_name) + or not( mg_villages.path_info[ res.building_data.short_file_name ] ) + or not( mg_villages.path_info[ res.building_data.short_file_name ][ door_nr ]) + or not( mg_villages.path_info[ res.building_data.short_file_name ][ door_nr ][ bed_nr ])) then + return; + end + local path = {}; + -- get the path from the bed to front door door_nr + for i,p in ipairs( mg_villages.path_info[ res.building_data.short_file_name ][ door_nr ][ bed_nr ]) do + table.insert( path, mg_villages.transform_coordinates( p, res.bpos )); + end + local rest_path_id = #mg_villages.path_info[ res.building_data.short_file_name ][ door_nr ]; + -- the last entrance is the common path for all beds from the front door door_nr to the outside + if( rest_path_id == bed_nr ) then + return path; + end + -- add the path from the front door to the front of the building + for i,p in ipairs( mg_villages.path_info[ res.building_data.short_file_name ][ door_nr ][ rest_path_id ]) do + table.insert( path, mg_villages.transform_coordinates( p, res.bpos )); + end + return path; +end + + +-- door_nr ought to be 1 in most cases (unless the mob is standing in front of another door) +mg_villages.get_path_from_outside_to_bed = function( village_id, plot_nr, bed_nr, door_nr ) + local path = mg_villages.get_path_from_bed_to_outside( village_id, plot_nr, bed_nr, door_nr ); + if( not( path )) then + return path; + end + local reverse_path = {}; + for i = #path, 1, -1 do + table.insert( reverse_path, path[i]); + end + return reverse_path; +end + + +-- get the information mg_villages has about a mob (useful for mg_villages:mob_spawner) +mg_villages.inhabitants.get_mob_data = function( village_id, plot_nr, bed_nr ) + if( not( village_id ) or not( plot_nr ) or not( bed_nr ) + or not( mg_villages.all_villages[ village_id ] ) + or not( mg_villages.all_villages[ village_id ].to_add_data.bpos[ plot_nr ]) + or not( mg_villages.all_villages[ village_id ].to_add_data.bpos[ plot_nr ].beds )) then + return; + end +--[[ + -- TODO: mark entrances for manual inspection + for i,p in ipairs( mg_villages.get_entrance_list( village_id, plot_nr )) do + local bpos = mg_villages.all_villages[ village_id ].to_add_data.bpos[ plot_nr ]; + minetest.chat_send_player("singleplayer","door: "..minetest.pos_to_string( p ).. + " pos: "..minetest.pos_to_string( bpos ).. + " o: "..tostring( bpos.o ).." r: "..tostring( bpos.brotate ).." m: "..tostring( bpos.mirror)); + minetest.set_node( p, {name="wool:cyan",param2=0}); + end +--]] + return mg_villages.all_villages[ village_id ].to_add_data.bpos[ plot_nr ].beds[ bed_nr ]; +end + + +-- mob mods are expected to override this function! mobf_trader mobs are supported directly +mg_villages.inhabitants.spawn_one_mob = function( bed, village_id, plot_nr, bed_nr, bpos ) + + --print("NPC spawned in village "..tostring( village_id ).." on plot "..tostring(plot_nr)..", sleeping in bed nr. "..tostring( bed_nr )); + if( minetest.get_modpath("mobf_trader") and mobf_trader and mobf_trader.spawn_one_trader) then + return mobf_trader.spawn_one_trader( bed, village_id, plot_nr, bed_nr, bpos ); + end +end + +mg_villages.inhabitants.spawn_mobs_for_one_house = function( bpos, minp, maxp, village_id, plot_nr ) + if( not( bpos ) or not( bpos.beds )) then + return; + end + for bed_nr,bed in ipairs( bpos.beds ) do + -- only for beds that exist, have a mob assigned and fit into minp/maxp + if( bed + and bed.first_name + and (not( minp ) + or ( bed.x>=minp.x and bed.x<=maxp.x + and bed.y>=minp.y and bed.y<=maxp.y + and bed.z>=minp.z and bed.z<=maxp.z))) then + + bed.mob_id = mg_villages.inhabitants.spawn_one_mob( bed, village_id, plot_nr, bed_nr, bpos ); + end + end +end + + +-- calculate which mob works and lives where +mg_villages.inhabitants.assign_mobs = function( village, village_id, force_repopulate ) + -- make sure mobs get assigned only once (no point in doing this every time + -- when part of a village spawned) + if( village.mob_data_version and not(force_repopulate)) then + return; + end + + -- if force_repopulate is true: recalculate road network, discard all worker- and + -- bed data and create new mobs + if( force_repopulate ) then + for plot_nr,bpos in ipairs(village.to_add_data.bpos) do + -- delete information about who works here + bpos.worker = nil; + -- delete information about who lives here + bpos.beds = nil; + -- delete information about the interconnection of the road network + bpos.xdir = nil; + bpos.parent_road_plot = nil; + end + end + + -- analyze the road network + mg_villages.get_road_list( village_id, true ); + + -- some types of buildings require special workers + village.to_add_data.bpos = mg_villages.inhabitants.assign_jobs_to_houses( village.to_add_data.bpos ); + + -- for each building in the village + for plot_nr,bpos in ipairs(village.to_add_data.bpos) do + + -- each bed gets a mob assigned + bpos = mg_villages.inhabitants.assign_mobs_to_beds( bpos, plot_nr, village.to_add_data.bpos, village ); + end + -- later versions may become incompatible + village.mob_data_version = 1; +end + + +-- set metadata and/or infotexts for beds and workplace markers +mg_villages.inhabitants.prepare_metadata = function( village, village_id, minp, maxp ) + local bpos_list = village.to_add_data.bpos; + for plot_nr,bpos in ipairs(bpos_list) do + -- put labels on beds + if( bpos.beds ) then + for bed_nr, bed in ipairs( bpos.beds ) do + -- if the bed is located withhin the given area OR no area is given + -- (for manual calls later on, outside of mapgen) + if( not( minp ) or not( maxp ) or ( minp.x <= bed.x and maxp.x >= bed.x + and minp.y <= bed.y and maxp.y >= bed.y + and minp.z <= bed.z and maxp.z >= bed.z)) then + local meta = minetest.get_meta( bed ); + meta:set_string('infotext', 'Bed of '.. + mg_villages.inhabitants.mob_get_full_name( bed, bpos.beds[1] )); + meta:set_string('village_id', village_id ); + meta:set_int( 'plot_nr', plot_nr); + meta:set_int( 'bed_nr', bed_nr); + end + -- beds from the beds mod tend to have their foot as the selection box; + -- we need to set the infotext for the bed's foot as well + local p_foot = {x=bed.x,y=bed.y,z=bed.z}; + if( bed.p2==0 ) then p_foot.z = p_foot.z-1; + elseif( bed.p2==1 ) then p_foot.x = p_foot.x-1; + elseif( bed.p2==2 ) then p_foot.z = p_foot.z+1; + elseif( bed.p2==3 ) then p_foot.x = p_foot.x+1; + end + if( not( minp ) or not( maxp ) + or ( minp.x <= p_foot.x and maxp.x >= p_foot.x + and minp.y <= p_foot.y and maxp.y >= p_foot.y + and minp.z <= p_foot.z and maxp.z >= p_foot.z)) then + local meta = minetest.get_meta( p_foot ); + -- setting the infotext is enough here + meta:set_string('infotext', 'Bed of '.. + mg_villages.inhabitants.mob_get_full_name( bed, bpos.beds[1] )); + end + -- there might be a workplace belonging to the bed/mob + if( bed.works_at and bed.workplace + and bed.workplace>0 + and bpos_list[ bed.works_at ] + and bpos_list[ bed.works_at ].btype + and mg_villages.BUILDINGS[ bpos_list[ bed.works_at ].btype ] + and mg_villages.BUILDINGS[ bpos_list[ bed.works_at ].btype ].workplace_list + and #mg_villages.BUILDINGS[ bpos_list[ bed.works_at ].btype ].workplace_list >= bed.workplace ) then + local p = mg_villages.BUILDINGS[ bpos_list[ bed.works_at ].btype ].workplace_list[ bed.workplace ]; + local bpos_work = bpos_list[ bed.works_at ]; + local p_akt = mg_villages.transform_coordinates( {p[1],p[2],p[3]}, bpos_work); + if( not( minp ) or not( maxp ) + or ( minp.x <= p_akt.x and maxp.x >= bed.x + and minp.y <= p_akt.y and maxp.y >= p_akt.y + and minp.z <= p_akt.z and maxp.z >= p_akt.z)) then + local meta = minetest.get_meta( p_akt ); + meta:set_string('infotext', 'Workplace of '.. + mg_villages.inhabitants.mob_get_full_name( bed, bed )); + meta:set_string('village_id', village_id ); + -- data about the workplace itshelf + meta:set_int( 'plot_nr', bed.works_at ); + meta:set_int( 'workplace_nr', bed.workplace ); + -- the data of the *mob* might be more relevant for spawning + meta:set_int( 'lives_at', plot_nr ); + meta:set_int( 'bed_nr', bed_nr ); + end + end + end + end + end +end + + +-- determine positions of front doors from stored pathinfo data and building_data.front_door_list +mg_villages.inhabitants.get_front_doors = function( bpos ) + if( not( bpos ) or not( bpos.btype ) or not( mg_villages.BUILDINGS[ bpos.btype ] )) then + return {}; + end + local building_data = mg_villages.BUILDINGS[ bpos.btype ]; + if( not( building_data ) or not( building_data.front_door_list )) then + return {}; + end + local door_list = {}; + for i,d in ipairs( building_data.front_door_list ) do + door_list[i] = mg_villages.transform_coordinates( {d[1],d[2],d[3]}, bpos); + end + return door_list; +end + + +-- spawn mobs in villages +mg_villages.inhabitants.part_of_village_spawned = function( village, minp, maxp, data, param2_data, a, cid ) + -- for each building in the village + for plot_nr,bpos in ipairs(village.to_add_data.bpos) do + -- actually spawn the mobs + local village_id = tostring( village.vx )..':'..tostring( village.vz ); + mg_villages.inhabitants.spawn_mobs_for_one_house( bpos, minp, maxp, village_id, plot_nr ); + end +end + + +--[[ deprecated +-- command for debugging all inhabitants of a village (useful for debugging only) +minetest.register_chatcommand( 'inhabitants', { + description = "Prints out a list of inhabitants of a village plus their professions.", + params = "", + privs = {}, + func = function(name, param) + + + if( not( param ) or param == "" ) then + minetest.chat_send_player( name, "List the inhabitants of which village? Please provide the village number!"); + return; + end + + local nr = tonumber( param ); + for id, v in pairs( mg_villages.all_villages ) do + -- we have found the village + if( v and v.nr == nr ) then + + minetest.chat_send_player( name, "Printing information about inhabitants of village no. "..tostring( v.nr )..", called "..( tostring( v.name or 'unknown')).." to console."); + -- actually print it + for house_nr = 1,#v.to_add_data.bpos do + minetest.chat_send_player( name, mg_villages.inhabitants.print_house_info( v.to_add_data.bpos, house_nr, v.nr, name )); + end + return; + end + end + -- no village found + minetest.chat_send_player( name, "There is no village with the number "..tostring( param ).." (yet?)."); + end +}); + +--]] diff --git a/mods/mg_villages/init.lua b/mods/mg_villages/init.lua new file mode 100644 index 0000000..851052f --- /dev/null +++ b/mods/mg_villages/init.lua @@ -0,0 +1,88 @@ + +-- reserve namespace for the villages +mg_villages = {} + +mg_villages.all_villages = {} +mg_villages.mg_generated_map = {} +mg_villages.anz_villages = 0; + +mg_villages.modpath = minetest.get_modpath( "mg_villages"); + + +mg_villages.DEBUG_LEVEL_NONE = -1 -- -1: disable all printed messages +mg_villages.DEBUG_LEVEL_NORMAL = 0 -- 0: print information about which village spawned where plus important errors +mg_villages.DEBUG_LEVEL_WARNING = 1 -- 1: warnings/errors which may not be particulary helpful for non-developers +mg_villages.DEBUG_LEVEL_INFO = 2 -- 2: print even less important warnings +mg_villages.DEBUG_LEVEL_TIMING = 3 -- 3: detailled performance information + +mg_villages.print = function( level, msg ) + if( level <= mg_villages.DEBUG_LEVEL ) then + print( "[mg_villages] "..msg ); + end +end + + +-- save_restore is now part of handle_schematics +--dofile(mg_villages.modpath.."/save_restore.lua") +mg_villages.all_villages = save_restore.restore_data( 'mg_all_villages.data' ); -- read mg_villages.all_villages data saved for this world from previous runs +mg_villages.mg_generated_map = save_restore.restore_data( 'mg_generated_map.data' ); + +dofile(mg_villages.modpath.."/config.lua") + +-- adds a special gravel node which will neither fall nor be griefed by mapgen +dofile(mg_villages.modpath.."/nodes.lua") + +-- the default game no longer provides helpful tree growing code +dofile(mg_villages.modpath.."/trees.lua") + +dofile(mg_villages.modpath.."/replacements.lua") + +-- fill mg_villages.all_buildings_list with precalculated paths +dofile(mg_villages.modpath.."/mg_villages_path_info.data"); + +-- multiple diffrent village types with their own sets of houses are supported +-- The function mg_villages.add_village_type( village_type_name, village_type_data ) +-- allows other mods to add new village types. +dofile(mg_villages.modpath.."/village_types.lua") + +-- calls path calculation and stores front doors etc.; only called in mg_villages.add_building +dofile(mg_villages.modpath.."/analyze_building_for_mobs.lua") + +-- Note: the "buildings" talbe is not in the mg_villages.* namespace +-- The function mg_villages.add_building( building_data ) allows other mods to add buildings. +dofile(mg_villages.modpath.."/buildings.lua") + +-- mg_villages.init_weights() has to be called AFTER all village types and buildings have +-- been added using the functions above +dofile(mg_villages.modpath.."/init_weights.lua") + +-- generate village names +dofile(mg_villages.modpath.."/name_gen.lua"); + +dofile(mg_villages.modpath.."/villages.lua") + +-- determine type of work, name, age, bed position etc. for villagers (none included!) +dofile(mg_villages.modpath.."/inhabitants.lua") + +-- provides some extra functionality for development of mob mods etc.; +-- contains some deprecated functions +dofile(mg_villages.modpath.."/extras_for_development.lua"); +-- adds a command that allows to teleport to a known village +dofile(mg_villages.modpath.."/chat_commands.lua") +-- protect villages from griefing +dofile(mg_villages.modpath.."/protection.lua") +-- allows to buy/sell/restore/.. plots and their buildings +dofile(mg_villages.modpath.."/plotmarker_formspec.lua") +-- create and show a map of the world +dofile(mg_villages.modpath.."/map_of_world.lua") + +-- terrain blending for individual houses +dofile(mg_villages.modpath.."/terrain_blend.lua") +-- the interface for the mapgen; +-- also takes care of spawning the player +dofile(mg_villages.modpath.."/mapgen.lua") + +dofile(mg_villages.modpath.."/spawn_player.lua") + +-- reconstruct the connection of the roads inside a village +dofile(mg_villages.modpath.."/roads.lua") diff --git a/mods/mg_villages/init_weights.lua b/mods/mg_villages/init_weights.lua new file mode 100644 index 0000000..3068ea2 --- /dev/null +++ b/mods/mg_villages/init_weights.lua @@ -0,0 +1,43 @@ +-- this functions needs to be called once after *all* village types and buildings have been added +mg_villages.init_weights = function() + + -- create a list of all used village types + mg_villages.village_types = {}; + for k,v in pairs( mg_villages.village_type_data ) do + if( not( v.only_single ) and v.supported and v.building_list ) then + table.insert( mg_villages.village_types, k ); + end + end + mg_villages.print(mg_villages.DEBUG_LEVEL_NORMAL,'Will create villages of the following types: '..minetest.serialize( mg_villages.village_types )); + + + + mg_villages.village_types[ #mg_villages.village_types+1 ] = 'single'; + mg_villages.village_types[ #mg_villages.village_types+1 ] = 'fields'; + mg_villages.village_types[ #mg_villages.village_types+1 ] = 'tower'; + for j,v in ipairs( mg_villages.village_types ) do + + local total_weight = 0 + for _, i in ipairs(mg_villages.BUILDINGS) do + if( not( i.max_weight )) then + i.max_weight = {}; + end + if( i.weight and i.weight[ v ] and i.weight[ v ]>0 ) then + total_weight = total_weight+i.weight[ v ] + i.max_weight[v] = total_weight + end + end + local multiplier = 3000/total_weight + for _,i in ipairs(mg_villages.BUILDINGS) do + if( i.weight and i.weight[ v ] and i.weight[ v ]>0 ) then + i.max_weight[v] = i.max_weight[ v ]*multiplier + end + end + end + -- the fields do not exist as an independent type + mg_villages.village_types[ #mg_villages.village_types ] = nil; + -- neither does the tower type + mg_villages.village_types[ #mg_villages.village_types ] = nil; + -- and neither does the "single" type (==lone houses outside villages) + mg_villages.village_types[ #mg_villages.village_types ] = nil; +end diff --git a/mods/mg_villages/map_of_world.lua b/mods/mg_villages/map_of_world.lua new file mode 100644 index 0000000..71cd64c --- /dev/null +++ b/mods/mg_villages/map_of_world.lua @@ -0,0 +1,193 @@ + + +-- villages up to this many nodes in each direction are shown on the map +mg_villages.MAP_RANGE = 1000; + + +mg_villages.draw_tile = function( content_id, image, x, z, dx, dz, tile_nr ) + if( not( image )) then + local node_name = minetest.get_name_from_content_id( content_id ); + if( not( node_name )) then + return ''; + end + local node_def = minetest.registered_nodes[ node_name ]; + if( not( node_def )) then + return ''; + end + local tiles = node_def.tiles; + local tile = nil; + if( tiles ~= nil ) then + if( not(tile_nr) or tile_nr > #tiles or tile_nr < 1 ) then + tile_nr = 1; + end + tile = tiles[tile_nr]; + end + if type(tile)=="table" then + tile=tile["name"] + end + image = tile; + if( not( image )) then + image = "unknown_object.png"; + end + end + return "image["..tostring(x)..",".. tostring(z) ..";"..dx..','..dz..";" .. image .."]"; +end + + +mg_villages.map_of_world = function( pname ) + + local player = minetest.get_player_by_name( pname ); + if( not( player )) then + return ''; + end + local ppos = player:getpos(); + + -- also usable: diamond_block, sand, water + local formspec = "size[14.4,10]".. + "background[0,0;10,10;"..mg_villages.MAP_BACKGROUND_IMAGE.."]".. + "label[10,10;x axis]".. + "label[0,0;z axis]".. + "label[0,10;|]".. + "label[0.2,10;->]"; + + + local r = mg_villages.MAP_RANGE; + local f1 = 10/(2*r); + + local map_tiles_shown = math.floor( mg_villages.MAP_RANGE/80 ); + local center_x = math.floor( ppos.x/80 ); + local center_z = math.floor( ppos.z/80 ); + for x = center_x - map_tiles_shown, center_x + map_tiles_shown do + for z = center_z - map_tiles_shown, center_z + map_tiles_shown do + if( mg_villages.mg_generated_map[ x ] and mg_villages.mg_generated_map[ x ][ z ] ) then + local surface_types = mg_villages.mg_generated_map[ x ][ z ]; + local content_id = 0; + if( type( surface_types )=='table' ) then + content_id = surface_types[ 26 ]; + else + content_id = surface_types; + end + + local x1 = f1 * ((x*80) - ppos.x +r); + local z1 = f1 * ( (2*r) - ((z*80) - ppos.z + r)); + local dx = f1 * 80; + local dz = f1 * 80; + + formspec = formspec..mg_villages.draw_tile( content_id, nil, x1+0.5, z1-0.5, dx*1.25, dz*1.25, 1 ); + + -- if more detailed information is available, draw those tiles that differ from the most common tile + if( type( surface_types )=='table' and false) then -- TODO: disabled for now + dx = dx/5; + dz = dz/5; + for i,v in ipairs( surface_types ) do + if( v ~= content_id ) then + local x2 = x1+( math.floor( (i-1)/5 )*dx); + local z2 = z1+( math.floor( (i-1)%5 )*dz); + formspec = formspec..mg_villages.draw_tile( v, nil, x2+0.5, z2-0.5, dx*1.3, dz*1.3, 1); + end + end + end + end + end + end + + local shown_villages = {}; + + r = mg_villages.MAP_RANGE; + f1 = 10/(2*r); + for name,v in pairs( mg_villages.all_villages ) do + + local data = v; --minetest.deserialize( v ); + local x = data.vx - ppos.x; + local z = data.vz - ppos.z; + + -- show only villages which are at max mg_villages.MAP_RANGE away from player + if( x and z + and mg_villages.village_type_data[ data.village_type ] + and mg_villages.village_type_data[ data.village_type ].texture + and math.abs( x ) < r + and math.abs( z ) < r ) then + + -- the village size determines the texture size + local dx = f1 * (data.vs*2) *1.25; + local dz = f1 * (data.vs*2) *1.0; + + -- center the village texture + x = x - (data.vs/2); + z = z + (data.vs/2); + + -- calculate the position for the village texture + x = f1 * (x+r); + z = f1 * ( (2*r) -(z+r)); + + formspec = formspec.. + "label["..x..",".. z ..";"..tostring( data.nr ).."]"..mg_villages.draw_tile( nil, mg_villages.village_type_data[ data.village_type ].texture, x, z, dx, dz, 1 ); + + shown_villages[ #shown_villages+1 ] = tostring( data.nr )..". "..tostring( v.name or 'unknown' ).."]"; + end + end + + -- code and arrows taken from mapp mod + local yaw = player:get_look_yaw() + local rotate = 0; + if yaw ~= nil then + -- Find rotation and texture based on yaw. + yaw = math.deg(yaw) + yaw = math.fmod (yaw, 360) + if yaw<0 then yaw = 360 + yaw end + if yaw>360 then yaw = yaw - 360 end + if yaw < 90 then + rotate = 90 + elseif yaw < 180 then + rotate = 180 + elseif yaw < 270 then + rotate = 270 + else + rotate = 0 + end + yaw = math.fmod(yaw, 90) + yaw = math.floor(yaw / 10) * 10 + + end + + -- show the players yaw + if rotate ~= 0 then + formspec = formspec.."image[".. 4.95 ..",".. 4.85 ..";0.4,0.4;d" .. yaw .. ".png^[transformFYR".. rotate .."]" + else + formspec = formspec.."image[".. 4.95 ..",".. 4.85 ..";0.4,0.4;d" .. yaw .. ".png^[transformFY]" + end + + local i = 0.05; + formspec = formspec.."label[10,-0.4;Village types:]"; + -- explain the meaning of the textures + if mg_villages.village_types ~= nil then + for _,typ in ipairs(mg_villages.village_types) do + formspec = formspec.."label[10.5,"..tostring(i)..";"..tostring( typ ).."]".. + "image[10.0,"..tostring(i+0.1)..";0.4,0.4;"..tostring( mg_villages.village_type_data[ typ ].texture ).."]"; + i = i+0.45; + end + end + + i = i+0.45; + formspec = formspec.."label[10.0,"..tostring(i)..";Villages shown on this map:]"; + i = i+0.45; + local j = 1; + while (i<10.5 and j<=#shown_villages) do + + formspec = formspec.."label[10.0,"..tostring(i)..";"..tostring( shown_villages[ j ] ).."]"; + i = i+0.45; + j = j+1; + end + + return formspec; +end + + +minetest.register_chatcommand( 'vmap', { + description = "Shows a map of all known villages withhin "..tostring( mg_villages.MAP_RANGE ).." blocks.", + privs = {}, + func = function(name, param) + minetest.show_formspec( name, 'mg:world_map', mg_villages.map_of_world( name )); + end +}); + diff --git a/mods/mg_villages/mapgen.lua b/mods/mg_villages/mapgen.lua new file mode 100644 index 0000000..8843440 --- /dev/null +++ b/mods/mg_villages/mapgen.lua @@ -0,0 +1,1320 @@ + +------------------------------------------------------------------------------ +-- Interface for other mods + +-- this function gets executed only once per village - namely when the first +-- part of a village is generated; +-- relevant data about the vilalge can be found in the following data structure: +-- mg_villages.all_villages[ village_id ] +mg_villages.new_village_spawned = function( village_id ) + -- dummy function +end + + +-- use this function if you want to i.e. spawn mobs/traders/etc; +-- the village data structure contains information about the entire village; +-- minp, maxp indicates which part has actually been spawned; +-- the function may add information to the village data structure if needed; +-- the voxelmanip data (data, param2_data, a) is just for reading, i.e. finding +-- a good spawning position for the trader +mg_villages.part_of_village_spawned = function( village, minp, maxp, data, param2_data, a, cid ) + -- assign jobs and names and age and gender etc. to bed positions + mg_villages.inhabitants.part_of_village_spawned( village, minp, maxp, data, param2_data, a, cid ); +end +------------------------------------------------------------------------------ + +local vm_data_buffer; +local param2_data_buffer; +local data_vm; +local data_param2_data; + +local trees_to_grow_via_voxelmanip = {}; + +mg_villages.wseed = 0; + +minetest.register_on_mapgen_init(function(mgparams) + mg_villages.wseed = math.floor(mgparams.seed/10000000000) +end) + +function mg_villages.get_bseed(minp) + return mg_villages.wseed + math.floor(5*minp.x/47) + math.floor(873*minp.z/91) +end + +function mg_villages.get_bseed2(minp) + return mg_villages.wseed + math.floor(87*minp.x/47) + math.floor(73*minp.z/91) + math.floor(31*minp.y/12) +end + + +-- if you change any of the 3 constants below, also change them in the function +-- mg_villages.village_area_mark_inside_village_area +mg_villages.inside_village = function(x, z, village, vnoise) + return mg_villages.get_vn(x, z, vnoise:get_2d({x = x, y = z}), village) <= 40 +end + +mg_villages.inside_village_area = function(x, z, village, vnoise) + return mg_villages.get_vn(x, z, vnoise:get_2d({x = x, y = z}), village) <= 80 +end + +mg_villages.inside_village_terrain_blend_area = function(x, z, village, vnoise) + return mg_villages.get_vn(x, z, vnoise:get_2d({x = x, y = z}), village) <= 160 +end + + +mg_villages.get_vnoise = function(x, z, village, vnoise) -- PM v + return mg_villages.get_vn(x, z, vnoise:get_2d({x = x, y = z}), village) +end -- PM ^ + +mg_villages.get_vn = function(x, z, noise, village) + local vx, vz, vs = village.vx, village.vz, village.vs + return (noise - 2) * 20 + + (40 / (vs * vs)) * ((x - vx) * (x - vx) + (z - vz) * (z - vz)) +end + + +mg_villages.villages_in_mapchunk = function( minp, mapchunk_size ) + local noise1raw = minetest.get_perlin(12345, 6, 0.5, 256) + + local vcr = mg_villages.VILLAGE_CHECK_RADIUS + local villages = {} + for xi = -vcr, vcr do + for zi = -vcr, vcr do + for _, village in ipairs(mg_villages.villages_at_point({x = minp.x + xi * mapchunk_size, z = minp.z + zi * mapchunk_size}, noise1raw)) do + villages[#villages+1] = village + end + end + end + return villages; +end + + +-- TODO: determine water level from mapgens? +local MG_VILLAGES_WATER_LEVEL = 1; +if( minetest.get_modpath( 'mg' )) then + MG_VILLAGES_WATER_LEVEL = 0; +end + +--replacements_group.node_is_ground = {}; -- store nodes which have previously been identified as ground + +mg_villages.check_if_ground = function( ci ) + + -- pre-generate a list of no-ground-nodes for caching + if( ci==nil or replacements_group.node_is_ground[ minetest.get_content_id('air')]==nil) then + local no_ground_nodes = {'air','ignore','default:sandstonebrick','default:cactus','default:wood','default:junglewood', + 'default:pine_wood','default:pine_tree','default:acacia_wood','default:acacia_tree', 'default:aspen_wood', 'default:aspen_tree', + 'ethereal:mushroom_pore','ethereal:mushroom_trunk','ethereal:bamboo', 'ethereal:mushroom', + 'ethereal:bush', 'default:grass', 'default:grass_1','default:grass_2','default:grass_3','default:grass_4','default:grass_5', + 'farming_plus:banana_leaves', 'farming_plus:banana', + 'farming_plus:cocoa_sapling', 'farming_plus:cocoa_leaves', 'farming_plus:cocoa', + 'farming_plus:melon', 'farming_plus:corn', 'farming_plus:cornb', + 'farming_plus:lemonb', 'farming_plus:orangeb', 'farming_plus:peachb', + 'farming_plus:lemon', 'farming_plus:orange', 'farming_plus:peach', + 'farming_plus:peach_4b', 'farming_plus:peach_5b', 'farming_plus:walnut', + 'farming:pumpkin', 'farming:pumpkin_face', 'farming:pumpkin_face_light', + 'cavestuff:desert_pebble_2', 'cavestuff:desert_pebble_1', + 'cavestuff:pebble_1', 'cavestuff:pebble_2'}; + -- TODO: add all those other tree and leaf nodes that might be added by mapgen + for _,name in ipairs( no_ground_nodes ) do + if( minetest.registered_nodes[ name ]) then + replacements_group.node_is_ground[ minetest.get_content_id( name )] = false; + end + end + replacements_group.node_is_ground[ minetest.get_content_id( 'air' )] = false; + local ground_nodes = {'ethereal:dry_dirt', 'default:dirt_with_dry_grass','default:stone','default:sandstone','default:desertstone', + 'ethereal:grey_dirt', 'default:dirt_with_snow', 'default:dirt_with_grass', 'ethereal:grove_dirt', 'ethereal:green_dirt', + 'ethereal:grove_dirt','ethereal:jungle_dirt'}; + for _,name in ipairs( ground_nodes ) do + if( minetest.registered_nodes[ name ]) then + replacements_group.node_is_ground[ minetest.get_content_id( name )] = true; + end + end + end + + if( not( ci )) then + return false; + end + if( replacements_group.node_is_ground[ ci ] ~= nil) then + return replacements_group.node_is_ground[ ci ]; + end + -- analyze the node + -- only nodes on which walking is possible may be counted as ground + local node_name = minetest.get_name_from_content_id( ci ); + local def = minetest.registered_nodes[ node_name ]; + -- store information about this node type for later use + if( not( def )) then + replacements_group.node_is_ground[ ci ] = false; + elseif( not( def.walkable)) then + replacements_group.node_is_ground[ ci ] = false; + elseif( def.groups and def.groups.tree ) then + replacements_group.node_is_ground[ ci ] = false; + elseif( def.groups and (def.groups.plant or def.groups.growing)) then + replacements_group.node_is_ground[ ci ] = false; + elseif( def.drawtype and (def.drawtype=="flowingliquid" or def.drawtype=="torchlike" + or def.drawtype=="signlike" or def.drawtype=="airlike" or def.drawtype=="liquid" + or def.drawtype=="plantlike" or def.drawtype=="firelike" or def.drawtype=="fencelike" + or def.drawtype=="raillike" or def.drawtype=="nodebox" or def.drawtype=="mesh" + or def.drawtype=="plantlike_rooted")) then + replacements_group.node_is_ground[ ci ] = false; + + elseif( def.drop and def.drop == 'default:dirt') then + replacements_group.node_is_ground[ ci ] = true; + elseif( def.walkable == true and def.is_ground_content == true and not(def.node_box)) then + replacements_group.node_is_ground[ ci ] = true; + else + replacements_group.node_is_ground[ ci ] = false; + end + return replacements_group.node_is_ground[ ci ]; +end + +-- call it once this way so that some grounds and non-grounds get identified +mg_villages.check_if_ground(nil); + + +-- sets evrything at x,z and above height target_height to air; +-- the area below gets filled up in a suitable way (i.e. dirt with grss - dirt - stone) +mg_villages.lower_or_raise_terrain_at_point = function( x, z, target_height, minp, maxp, vm, data, param2_data, a, cid, vh, treepos, has_artificial_snow, blend, force_ground, force_underground ) + local surface_node = nil; + local has_snow = has_artificial_snow; + local tree = false; + local jtree = false; + local ptree = false; + local atree = false; + local asptree = false; + local old_height = maxp.y; + local y = maxp.y; + + local look_for_snow = true; + if( cid.c_snow==cid.c_ignore or cid.c_snow==cid.c_air + or cid.c_ice ==cid.c_ignore or cid.c_ice ==cid.c_air ) then + look_for_snow = nil; + end + + -- if we are working on a mapchunk above, set all to air; + -- any terrain blending happens in the mapchunk below + if( minp.y > vh ) then + local air_counted = 0; + for y=minp.y, minp.y+16 do + if( data[a:index( x, y, z )] == cid.c_air ) then + air_counted = air_counted + 1; + end + end + if( air_counted > 3 or blend==0) then + for y=minp.y+15, maxp.y do + data[a:index( x, y, z)] = cid.c_air; + end + end + -- else do nothing + return; + end + + -- search for a surface and set everything above target_height to air + while( y > minp.y) do + local ci = data[a:index(x, y, z)]; + local ci_below = data[a:index( x, y-1, z)]; + if( look_for_snow and (ci == cid.c_snow or ci == cid.c_ice or ci == cid.c_snowblock)) then + has_snow = true; + elseif( ci == cid.c_tree ) then + tree = true; + -- no jungletrees for branches + elseif( ci == cid.c_jtree and ci_below==cid.c_jtree) then + jtree = true; + -- pinetrees + elseif( ci == cid.c_ptree and ci_below==cid.c_ptree) then + ptree = true; + -- acacia + elseif( ci == cid.c_atree and ci_below==cid.c_atree) then + atree = true; + -- aspen + elseif( ci == cid.c_asptree and ci_below==cid.c_asptree) then + asptree = true; + elseif( not( surface_node) and ci ~= cid.c_air and ci ~= cid.c_ignore and mg_villages.check_if_ground( ci ) == true) then + -- we have found a surface of some kind + surface_node = ci; + old_height = y; + if( look_for_snow and surface_node == cid.c_dirt_with_snow and cid.c_dirt_with_snow~=cid.c_ignore) then + has_snow = true; + end + end + -- make sure there is air for the village + if( y > target_height ) then + data[a:index( x, y, z)] = cid.c_air; + -- abort search once we've reached village ground level and found a surface node + elseif( y <= target_height and surface_node ) then + y = minp.y - 1; + end + y = y-1; + end + + if( not( surface_node ) and old_height == maxp.y ) then + if( data[a:index( x, minp.y, z)]==cid.c_air) then + old_height = vh - 2; + elseif( minp.y < 0 ) then + old_height = minp.y; + end + end + if( not( surface_node ) or surface_node == cid.c_dirt) then + surface_node = cid.c_dirt_with_grass; + end + if( look_for_snow and has_snow and surface_node == cid.c_dirt_with_grass and target_height > 1) then + surface_node = cid.c_dirt_with_snow; + end + local below_1 = cid.c_dirt; + local below_2 = cid.c_stone; + if( force_ground and force_underground ) then + below_1 = force_ground; + below_2 = force_underground; + surface_node = below_1; + elseif( surface_node == cid.c_desert_sand ) then + below_1 = cid.c_desert_sand; + below_2 = cid.c_desert_stone; + elseif( surface_node == cid.c_sand ) then + below_1 = cid.c_sand; + below_2 = cid.c_stone; + elseif( cid.c_ethereal_clay_read + and (surface_node == cid.c_ethereal_clay_red + or surface_node == cid.c_ethereal_clay_orange)) then + below_1 = cid.c_ethereal_clay_orange; + below_2 = cid.c_ethereal_clay_orange; + elseif( surface_node == cid.c_sandstone ) then + below_1 = cid.c_sandstone; + below_2 = cid.c_sandstone; + else + below_1 = cid.c_dirt; + below_2 = cid.c_stone; + end + + -- do terrain blending; target_height has to be calculated based on old_height + if( target_height == maxp.y and old_height < maxp.y ) then + local yblend = old_height; + if blend > 0 then -- leave some cliffs unblended + yblend = math.floor(vh + blend * (old_height - vh)) + target_height = yblend+1; + else + target_height = old_height; + end + for y = math.max( minp.y, yblend), maxp.y do + local a_index = a:index( x, y, z ); + if( y<=MG_VILLAGES_WATER_LEVEL ) then + -- keep ice + if( data[a_index] ~= cid.c_ice ) then + data[a_index] = cid.c_water; + end + else + data[a_index] = cid.c_air; + end + end + end + + -- only place the surface node if it is actually contained in this node + if( target_height >= minp.y and target_height < maxp.y ) then + if( target_height < 1 ) then + -- no trees or snow below water level + elseif( tree and not( mg_villages.ethereal_trees ) and treepos) then + data[ a:index( x, target_height+1, z)] = cid.c_sapling + table.insert( treepos, {x=x, y=target_height+1, z=z, typ=0, snow=has_artificial_snow}); + elseif( jtree and not( mg_villages.ethereal_trees ) and treepos) then + data[ a:index( x, target_height+1, z)] = cid.c_jsapling + table.insert( treepos, {x=x, y=target_height+1, z=z, typ=1, snow=has_artificial_snow}); + elseif( ptree and not( mg_villages.ethereal_trees ) and treepos) then + data[ a:index( x, target_height+1, z)] = cid.c_psapling + table.insert( treepos, {x=x, y=target_height+1, z=z, typ=2, snow=has_artificial_snow}); + elseif( atree and not( mg_villages.ethereal_trees ) and treepos) then + data[ a:index( x, target_height+1, z)] = cid.c_asapling + table.insert( treepos, {x=x, y=target_height+1, z=z, typ=3, snow=has_artificial_snow}); + elseif( asptree and not( mg_villages.ethereal_trees ) and treepos) then + data[ a:index( x, target_height+1, z)] = cid.c_aspsapling + table.insert( treepos, {x=x, y=target_height+1, z=z, typ=4, snow=has_artificial_snow}); + elseif( has_snow ) then + data[ a:index( x, target_height+1, z)] = cid.c_snow; + end + data[ a:index( x, target_height, z)] = surface_node; + if( target_height-1 >= minp.y ) then + data[ a:index( x, target_height-1, z)] = below_1; + end + end + + -- not every column will get a coal block; some may get two + local coal_height1 = math.random( minp.y, maxp.y ); + local coal_height2 = math.random( minp.y, maxp.y ); + y = target_height-2; + while( y > minp.y and y > target_height-40 and y <=maxp.y) do + local old_node = data[a:index( x, y, z)]; + -- abort as soon as we hit anything other than air + if( old_node == cid.c_air or old_node == cid.c_water ) then + -- the occasional coal makes large stone cliffs slightly less boring + if( y == coal_height1 or y == coal_height2 ) then + data[a:index( x, y, z )] = cid.c_stone_with_coal; + else + data[a:index( x, y, z)] = below_2; + end + y = y-1; + else + y = minp.y - 1; + end + end +end + + +-- adjust the terrain level to the respective height of the village +mg_villages.flatten_village_area = function( villages, minp, maxp, vm, data, param2_data, a, village_area, cid ) + -- prepare information about all villages that might occour here + local village_tmp = {}; + for village_nr, village in ipairs(villages) do + village_tmp[ village_nr ] = {}; + local force_ground = nil; + local force_underground = nil; + local has_artificial_snow = false; + if( village.village_type + and mg_villages.village_type_data[ village.village_type ] + and mg_villages.village_type_data[ village.village_type ].force_ground + and mg_villages.village_type_data[ village.village_type ].force_underground ) then + force_ground = minetest.get_content_id(mg_villages.village_type_data[ village.village_type ].force_ground); + force_underground = minetest.get_content_id(mg_villages.village_type_data[ village.village_type ].force_underground); + if( not( force_ground ) or force_ground < 0 or force_ground == cid.c_ignore + or not( force_underground ) or force_underground < 0 or force_underground == cid.c_ignore ) then + force_ground = nil; + force_underground = nil; + end + end + if( village.artificial_snow and village.artificial_snow==1) then + has_artificial_snow = true; + end + village_tmp[ village_nr ].force_ground = force_ground; + village_tmp[ village_nr ].force_underground = force_underground; + village_tmp[ village_nr ].has_artificial_snow = has_artificial_snow; + village_tmp[ village_nr ].vh = village.vh; -- height of village + end + + local treepos = {}; + for z = minp.z, maxp.z do + for x = minp.x, maxp.x do + local village_nr = village_area[ x ][ z ][ 1 ]; + local terrain_blending_value = village_area[ x ][ z ][ 2 ]; + -- is there a village at this spot? + if( village_nr > 0 + and terrain_blending_value ~= 0 + -- some data is stored in a temp table + and village_tmp[ village_nr] + and data[a:index(x, village_tmp[ village_nr ].vh ,z)] ~= cid.c_ignore) then + + if( terrain_blending_value > 0 ) then -- inside a village + mg_villages.lower_or_raise_terrain_at_point( x, z, + village_tmp[ village_nr ].vh, + minp, maxp, vm, data, param2_data, a, cid, + village_tmp[ village_nr ].vh, + nil, + village_tmp[ village_nr ].has_artificial_snow, + 0, + village_tmp[ village_nr ].force_ground, + village_tmp[ village_nr ].force_underground ); + elseif( mg_villages.ENABLE_TERRAIN_BLEND and terrain_blending_value < 0) then + mg_villages.lower_or_raise_terrain_at_point( x, z, + maxp.y, + minp, maxp, vm, data, param2_data, a, cid, + village_tmp[ village_nr ].vh, + treepos, + village_tmp[ village_nr ].has_artificial_snow, + -1* terrain_blending_value, + village_tmp[ village_nr ].force_ground, + village_tmp[ village_nr ].force_underground); + end + end + end + end + + -- grow normal trees and jungletrees in those parts of the terrain where height blending occours + for _, tree in ipairs(treepos) do + local plant_id = cid.c_jsapling; + if( tree.typ == 0 ) then + plant_id = cid.c_sapling; + elseif( tree.typ == 2 ) then + plant_id = cid.c_psapling; + elseif( tree.typ == 3 ) then + plant_id = cid.c_asapling; + elseif( tree.typ == 4 ) then + plant_id = cid.c_aspsapling; + end + mg_villages.grow_a_tree( {x=tree.x, y=tree.y, z=tree.z}, plant_id, minp, maxp, data, a, cid, nil, tree.snow ) -- no pseudorandom present + end + +end + + +-- repair mapgen griefings +mg_villages.repair_outer_shell = function( villages, minp, maxp, vm, data, param2_data, a, village_area, cid, edge_min, edge_max ) + -- find out if this part of the shell has already been generated or not + if( data[a:index(minp.x,minp.y,minp.z)] == cid.c_ignore + + and data[a:index(maxp.x,minp.y,minp.z)] == cid.c_ignore + and data[a:index(minp.x,maxp.y,minp.z)] == cid.c_ignore + and data[a:index(minp.x,minp.y,maxp.z)] == cid.c_ignore + + and data[a:index(maxp.x,maxp.y,maxp.z)] == cid.c_ignore + + and data[a:index(maxp.x,maxp.y,minp.z)] == cid.c_ignore + and data[a:index(maxp.x,minp.y,maxp.z)] == cid.c_ignore + and data[a:index(minp.x,maxp.y,maxp.z)] == cid.c_ignore ) then + + -- no - none of the edges has been created yet; no point to place anything there + return; + end + + if( minp.x < edge_min.x ) then + edge_min.x = minp.x; + end + if( minp.y < edge_min.y ) then + edge_min.y = minp.y; + end + if( minp.z < edge_min.z ) then + edge_min.z = minp.z; + end + if( maxp.x > edge_max.x ) then + edge_max.x = maxp.x; + end + if( maxp.y > edge_max.y ) then + edge_max.y = maxp.y; + end + if( maxp.z > edge_max.z ) then + edge_max.z = maxp.z; + end + + + for z = minp.z, maxp.z do + for x = minp.x, maxp.x do + -- inside a village + if( village_area[ x ][ z ][ 2 ] > 0 ) then + local y; + local village = villages[ village_area[ x ][ z ][ 1 ]]; + -- the current node at the ground + local node = data[a:index(x,village.vh,z)]; + -- there ought to be something - but there is air + if( village and village.vh and (node==cid.c_air or node==cid.c_water)) then + y = village.vh-1; + -- search from village height downards for holes generated by cavegen and fill them up + while( y > minp.y ) do + local ci = data[a:index(x, y, z)]; + if( ci == cid.c_desert_stone or ci == cid.c_desert_sand ) then + data[a:index(x, village.vh, z)] = cid.c_desert_sand; + y = minp.y-1; + elseif( ci == cid.c_sand ) then + data[a:index(x, village.vh, z)] = cid.c_sand; + y = minp.y-1; + -- use dirt_with_grass as a fallback + elseif( ci ~= cid.c_air and ci ~= cid.c_ignore and ci ~= cid.c_water and mg_villages.check_if_ground( ci ) == true) then + data[a:index(x, village.vh, z)] = cid.c_dirt_with_grass; + y = minp.y-1; + -- abort the search - there is no data available yet + elseif( ci == cid.c_ignore ) then + y = minp.y-1; + end + y = y-1; + end + end + + -- remove mudflow + y = village.vh + 1; + while( y <= maxp.y ) do + local ci = data[a:index(x, y, z)]; + if( ci ~= cid.c_ignore and (ci==cid.c_dirt or ci==cid.c_dirt_with_grass or ci==cid.c_sand or ci==cid.c_desert_sand)) then + data[a:index(x,y,z)] = cid.c_air; + -- if there was a moresnow cover, add a snow on top of the new floor node + elseif( ci ~= cid.c_ignore + and (ci==cid.c_msnow_1 or ci==cid.c_msnow_2 or ci==cid.c_msnow_3 or ci==cid.c_msnow_4 or + ci==cid.c_msnow_5 or ci==cid.c_msnow_6 or ci==cid.c_msnow_7 or ci==cid.c_msnow_8 or + ci==cid.c_msnow_9 or ci==cid.c_msnow_10 or ci==cid.c_msnow_11)) then + data[a:index(x, village.vh+1, z)] = cid.c_snow; + data[a:index(x, village.vh, z)] = cid.c_dirt_with_snow; + elseif( ci == cid.c_ignore ) then + --data[a:index(x,y,z)] = cid.c_air; + end + y = y+1; + end + end + end + end +end + + + +-- helper functions for mg_villages.place_villages_via_voxelmanip +-- this one marks the positions of buildings plus a frame around them +mg_villages.village_area_mark_buildings = function( village_area, village_nr, bpos) + + -- mark the roads and buildings and the area between buildings in the village_area table + -- 2: road + -- 3: border around a road + -- 4: building + -- 5: border around a building + for _, pos in ipairs( bpos ) do + local reserved_for = 4; -- a building will be placed here + if( pos.btype and pos.btype == 'road' ) then + reserved_for = 2; -- the building will be a road + end + -- the building + a border of 1 around it + for x = -1, pos.bsizex do + for z = -1, pos.bsizez do + local p = {x=pos.x+x, z=pos.z+z}; + if( not( village_area[ p.x ] )) then + village_area[ p.x ] = {}; + end + if( x==-1 or z==-1 or x==pos.bsizex or z==pos.bsizez ) then + village_area[ p.x ][ p.z ] = { village_nr, reserved_for+1}; -- border around a building + else + village_area[ p.x ][ p.z ] = { village_nr, reserved_for }; -- the actual building + end + end + end + end +end + +mg_villages.village_area_mark_dirt_roads = function( village_area, village_nr, dirt_roads ) + -- mark the dirt roads + -- 8: dirt road + for _, pos in ipairs(dirt_roads) do + -- the building + a border of 1 around it + for x = 0, pos.bsizex-1 do + for z = 0, pos.bsizez-1 do + local p = {x=pos.x+x, z=pos.z+z}; + if( not( village_area[ p.x ] )) then + village_area[ p.x ] = {}; + end + village_area[ p.x ][ p.z ] = { village_nr, 8 }; -- the actual dirt road + end + end + end +end + +mg_villages.village_area_mark_inside_village_area = function( village_area, villages, village_noise, minp, maxp ) + -- mark the rest ( inside_village but not part of an actual building) as well + for x = minp.x, maxp.x do + if( not( village_area[ x ] )) then + village_area[ x ] = {}; + end + for z = minp.z, maxp.z do + if( not( village_area[ x ][ z ] )) then + village_area[ x ][ z ] = { 0, 0 }; + + local n_rawnoise = village_noise:get_2d({x = x, y = z}) -- create new blended terrain + for village_nr, village in ipairs(villages) do + local vn = mg_villages.get_vn(x, z, n_rawnoise, village); + if( village.is_single_house ) then + -- do nothing here; the village area will be specificly marked later on + + -- the village core; this is where the houses stand (but there's no house or road at this particular spot) + elseif( vn <= 40 ) then -- see mg_villages.inside_village + village_area[ x ][ z ] = { village_nr, 6}; + + -- the flattened land around the village where wheat, cotton, trees or grass may be grown (depending on village type) + elseif( vn <= 80 ) then -- see mg_villages.inside_village_area + village_area[ x ][ z ] = { village_nr, 1}; + + -- terrain blending for the flattened land + elseif( vn <= 160 and mg_villages.ENABLE_TERRAIN_BLEND) then -- see mg_villages.inside_village_terrain_blend_area + if n_rawnoise > -0.5 then -- leave some cliffs unblended + local blend = (( vn - 80) / 80) ^ 2 -- 0 at village edge, 1 at normal terrain + -- assign a negative value to terrain that needs to be adjusted in height + village_area[ x ][ z ] = { village_nr, -1 * blend}; + else + -- no height adjustments for this terrain; the terrain is not considered to be part of the village + village_area[ x ][ z ] = { village_nr, 0}; + end + end + end + end + end + end + + -- single houses get their own form of terrain blend + local pr = PseudoRandom(mg_villages.get_bseed(minp)); + for village_nr, village in ipairs( villages ) do + if( village and village.is_single_house and village.to_add_data and village.to_add_data.bpos and #village.to_add_data.bpos>=1) then + mg_villages.village_area_mark_single_house_area( village_area, minp, maxp, village.to_add_data.bpos[1], pr, village_nr, village ); + end + end +end + + +-- analyzes optimal height for villages which have their center inside this mapchunk +mg_villages.village_area_get_height = function( village_area, villages, minp, maxp, data, param2_data, a, cid ) +-- figuring out the height this way hardly works - because only a tiny part of the village may be contained in this chunk + local height_sum = {}; + local height_count = {}; + local height_statistic = {}; + -- initialize the variables for counting + for village_nr, village in ipairs( villages ) do + height_sum[ village_nr ] = 0; + height_count[ village_nr ] = 0; + height_statistic[ village_nr ] = {}; + end + -- try to find the optimal village height by looking at the borders defined by inside_village + for x = minp.x+1, maxp.x-1 do + for z = minp.z+1, maxp.z-1 do + if( village_area[ x ][ z ][ 1 ] ~= 0 + and village_area[ x ][ z ][ 2 ] ~= 0 + and ( village_area[ x+1 ][ z ][ 2 ] <= 0 + or village_area[ x-1 ][ z ][ 2 ] <= 0 + or village_area[ x ][ z+1 ][ 2 ] <= 0 + or village_area[ x ][ z-1 ][ 2 ] <= 0 ) + -- if the corners of the mapblock are inside the village area, they may count as borders here as well + or ( x==minp.x+1 and village_area[ x-1 ][ z ][ 1 ] >= 0 ) + or ( x==maxp.x-1 and village_area[ x+1 ][ z ][ 1 ] >= 0 ) + or ( z==minp.z-1 and village_area[ x ][ z-1 ][ 1 ] >= 0 ) + or ( z==maxp.z+1 and village_area[ x ][ z+1 ][ 1 ] >= 0 )) then + + local y = maxp.y; + while( y > minp.y and y >= 0) do + local ci = data[a:index(x, y, z)]; + if(( ci ~= cid.c_air and ci ~= cid.c_ignore and mg_villages.check_if_ground( ci ) == true) or (y==0)) then + local village_nr = village_area[ x ][ z ][ 1 ]; + if( village_nr > 0 and height_sum[ village_nr ] ) then + height_sum[ village_nr ] = height_sum[ village_nr ] + y; + height_count[ village_nr ] = height_count[ village_nr ] + 1; + + if( not( height_statistic[ village_nr ][ y ] )) then + height_statistic[ village_nr ][ y ] = 1; + else + height_statistic[ village_nr ][ y ] = height_statistic[ village_nr ][ y ] + 1; + end + end + y = minp.y - 1; + end + y = y-1; + end + end + end + end + for village_nr, village in ipairs( villages ) do + + local tmin = maxp.y; + local tmax = minp.y; + local topt = 2; + for k,v in pairs( height_statistic[ village_nr ] ) do + if( k >= 2 and k < tmin and k >= minp.y) then + tmin = k; + end + if( k <= maxp.y and k > tmax ) then + tmax = k; + end + if( height_statistic[ village_nr ][ topt ] + and height_statistic[ village_nr ][ topt ] < height_statistic[ village_nr ][ k ]) then + topt = k; + end + end + --print('HEIGHT for village '..tostring( village.name )..' min:'..tostring( tmin )..' max:'..tostring(tmax)..' opt:'..tostring(topt)..' count:'..tostring( height_count[ village_nr ])); + + -- the very first village gets a height of 1 + if( village.nr and village.nr == 1 ) then + village.optimal_height = 1; + end + + if( village.optimal_height ) then + -- villages above a size of 40 are *always* place at a convenient height of 1 + elseif( village.vs >= 40 and not(village.is_single_house)) then + village.optimal_height = 2; + elseif( village.vs >= 30 and not(village.is_single_house)) then + village.optimal_height = 41 - village.vs; + elseif( village.vs >= 25 and not(village.is_single_house)) then + village.optimal_height = 36 - village.vs; + + -- in some cases, choose that height which was counted most often + elseif( topt and (tmax - tmin ) > 8 and height_count[ village_nr ] > 0) then + + local qmw; + if( ( tmax - topt ) > ( topt - tmin )) then + qmw = tmax; + else + qmw = tmin; + end + village.optimal_height = qmw; + + -- if no border height was found, there'd be no point in calculating anything; + -- also, this is done only if the village has its center inside this mapchunk + elseif( height_count[ village_nr ] > 0 ) then + + local max = 0; + local target = village.vh; + local qmw = 0; + for k, v in pairs( height_statistic[ village_nr ] ) do + qmw = qmw + v * (k*k ); + if( v > max ) then + target = k; + max = v; + end + end + if( height_count[ village_nr ] > 5 ) then + qmw = math.floor( math.sqrt( qmw / height_count[ village_nr ]) +1.5); -- round the value + -- a height of 0 would be one below water level; so let's choose something higher; + -- as this may be an island created withhin deep ocean, it might look better if it extends a bit from said ocean + if( qmw < 1 ) then + qmw = 2; + end + else + qmw = 0; -- if in doubt, a height of 0 usually works well + end + + village.optimal_height = qmw; + end + end +end + + + +mg_villages.change_village_height = function( village, new_height ) + mg_villages.print( mg_villages.DEBUG_LEVEL_TIMING, 'CHANGING HEIGHT from '..tostring( village.vh )..' to '..tostring( new_height )); + for _, pos in ipairs(village.to_add_data.bpos) do + pos.y = new_height; + end + for _, pos in ipairs(village.to_add_data.dirt_roads) do + pos.y = new_height; + end + village.vh = new_height; +end + + +-- those functions from the mg mod do not have their own namespace +if( minetest.get_modpath( 'mg' )) then + mg_villages.add_savannatree = add_savannatree; + mg_villages.add_pinetree = add_pinetree; +end + +mg_villages.grow_trees_voxelmanip = function( vm ) + local path_acacia = minetest.get_modpath("default").."/schematics/acacia_tree_from_sapling.mts"; + local path_aspen = minetest.get_modpath("default").."/schematics/aspen_tree_from_sapling.mts"; + for tree_nr, pos in ipairs( trees_to_grow_via_voxelmanip ) do + if( pos and pos.typ==3 ) then + minetest.place_schematic_on_vmanip( vm, {x = pos.x - 4, y = pos.y - 1, z = pos.z - 4}, path_acacia, "random", nil, true); + elseif( pos and pos.typ==4) then + minetest.place_schematic_on_vmanip( vm, {x = pos.x - 2, y = pos.y - 1, z = pos.z - 2}, path_aspen, "0", nil, true); + end + end + trees_to_grow_via_voxelmanip = {}; +end + + +mg_villages.grow_a_tree = function( pos, plant_id, minp, maxp, data, a, cid, pr, snow ) + -- a normal tree; sometimes comes with apples + if( plant_id == cid.c_sapling and minetest.registered_nodes[ 'default:tree']) then + mg_villages.grow_tree( data, a, pos, math.random(1, 4) == 1, math.random(1,100000), snow) + return true; + -- a normal jungletree + elseif( plant_id == cid.c_jsapling and minetest.registered_nodes[ 'default:jungletree']) then + mg_villages.grow_jungletree( data, a, pos, math.random(1,100000), snow) + return true; + -- a pine tree + elseif( plant_id == cid.c_psapling and minetest.registered_nodes[ 'default:pine_tree']) then + mg_villages.grow_pinetree( data, a, pos, snow); + return true; + -- an acacia tree; it does not have its own grow function + elseif( plant_id == cid.c_asapling and minetest.registered_nodes[ 'default:acacia_tree']) then + data[ a:index( pos.x, pos.y, pos.z )] = cid.c_asapling; + table.insert( trees_to_grow_via_voxelmanip, {x=pos.x, y=pos.y, z=pos.z, typ=3}); + return true; + -- aspen tree from newer minetest game + elseif( plant_id == cid.c_aspsapling and minetest.registered_nodes[ 'default:aspen_tree']) then + data[ a:index( pos.x, pos.y, pos.z )] = cid.c_aspsapling; + table.insert( trees_to_grow_via_voxelmanip, {x=pos.x, y=pos.y, z=pos.z, typ=4}); + return true; + -- a savannatree from the mg mod + elseif( plant_id == cid.c_savannasapling and mg_villages.add_savannatree) then + mg_villages.add_savannatree( data, a, pos.x, pos.y, pos.z, minp, maxp, pr) -- TODO: snow + return true; + -- a pine tree from the mg mod + elseif( plant_id == cid.c_pinesapling and mg_villages.add_pinetree ) then + mg_villages.add_pinetree( data, a, pos.x, pos.y, pos.z, minp, maxp, pr) -- TODO: snow + return true; + end + return false; +end + + +-- places trees and plants at empty spaces +mg_villages.village_area_fill_with_plants = function( village_area, villages, minp, maxp, data, param2_data, a, cid ) + -- do not place any plants if we are working on the mapchunk above + if( minp.y > 0 ) then + return; + end + -- trees which require grow functions to be called + cid.c_savannasapling = minetest.get_content_id( 'mg:savannasapling'); + cid.c_pinesapling = minetest.get_content_id( 'mg:pinesapling'); + -- add farmland + cid.c_wheat = minetest.get_content_id( 'farming:wheat_8' ); + cid.c_cotton = minetest.get_content_id( 'farming:cotton_8' ); + cid.c_shrub = minetest.get_content_id( 'default:dry_shrub'); + -- these extra nodes are used in order to avoid abms on the huge fields around the villages + cid.c_soil_wet = minetest.get_content_id( 'mg_villages:soil' ); --'farming:soil_wet' ); + cid.c_soil_sand = minetest.get_content_id( 'mg_villages:desert_sand_soil'); --'farming:desert_sand_soil_wet' ); + local c_feldweg = minetest.get_content_id( 'cottages:feldweg'); + if( not( c_feldweg )) then + c_feldweg = cid.c_dirt_with_grass; + end + + if( mg_villages.realtest_trees ) then + cid.c_soil_wet = minetest.get_content_id( 'farming:soil' ); -- TODO: the one from mg_villages would be better...but that one lacks textures + cid.c_soil_sand = minetest.get_content_id( 'farming:soil' ); -- TODO: the one from mg_villages would be better...but that one lacks textures + cid.c_wheat = minetest.get_content_id( 'farming:spelt_4' ); + cid.c_cotton = minetest.get_content_id( 'farming:flax_4' ); +-- cid.c_shrub = minetest.get_content_id( 'default:dry_shrub'); + end + + local pr = PseudoRandom(mg_villages.get_bseed(minp)); + for x = minp.x, maxp.x do + for z = minp.z, maxp.z do + -- turn unused land (which is either dirt or desert sand) into a field that grows wheat + if( village_area[ x ][ z ][ 2 ]==1 + or village_area[ x ][ z ][ 2 ]==6) then + + local village_nr = village_area[ x ][ z ][ 1 ]; + local village = villages[ village_nr ]; + local h = village.vh; + local g = data[a:index( x, h, z )]; + + -- choose a plant/tree with a certain chance + -- Note: There are no checks weather the tree/plant will actually grow there or not; + -- Tree type is derived from wood type used in the village + local plant_id = data[a:index( x, h+1, z)]; + local on_soil = false; + local plant_selected = false; + local has_snow_cover = false; + for _,v in ipairs( village.to_add_data.plantlist ) do + if( plant_id == cid.c_snow or g==cid.c_dirt_with_snow or g==cid.c_snowblock) then + has_snow_cover = true; + end + -- select the first plant that fits; if the node is not air, keep what is currently inside + if( (plant_id==cid.c_air or plant_id==cid.c_snow) and (( v.p == 1 or pr:next( 1, v.p )==1 ))) then + -- TODO: check if the plant grows on that soil + plant_id = v.id; + plant_selected = true; + end + -- wheat and cotton require soil + if( plant_id == cid.c_wheat or plant_id == cid.c_cotton ) then + on_soil = true; + end + end + + local pos = {x=x, y=h+1, z=z}; + if( not( plant_selected )) then -- in case there is something there already (usually a tree trunk) + has_snow_cover = nil; + + elseif( mg_villages.grow_a_tree( pos, plant_id, minp, maxp, data, a, cid, pr, has_snow_cover )) then + param2_data[a:index( x, h+1, z)] = 0; -- make sure the tree trunk is not rotated + has_snow_cover = nil; -- else the sapling might not grow + -- nothing to do; the function has grown the tree already + + -- grow wheat and cotton on normal wet soil (and re-plant if it had been removed by mudslide) + elseif( on_soil and (g==cid.c_dirt_with_grass or g==cid.c_soil_wet or g==cid.c_dirt_with_snow)) then + -- wheat needs another option there + if( plant_id == cid.c_wheat ) then + param2_data[a:index( x, h+1, z)] = 0; + else + param2_data[a:index( x, h+1, z)] = math.random( 1, 179 ); + end + data[a:index( x, h, z)] = cid.c_soil_wet; + -- no plants in winter + if( has_snow_cover and mg_villages.use_soil_snow) then + data[a:index( x, h+1, z)] = cid.c_msnow_soil; + has_snow_cover = nil; + else + data[a:index( x, h+1, z)] = plant_id; + end + + -- grow wheat and cotton on desert sand soil - or on soil previously placed (before mudslide overflew it; same as above) + elseif( on_soil and (g==cid.c_desert_sand or g==cid.c_soil_sand) and cid.c_soil_sand and cid.c_soil_sand > 0) then + -- wheat needs another option there + if( plant_id == cid.c_wheat ) then + param2_data[a:index( x, h+1, z)] = 0; + else + param2_data[a:index( x, h+1, z)] = math.random( 1, 179 ); + end + data[a:index( x, h, z)] = cid.c_soil_sand; + -- no plants in winter + if( has_snow_cover and mg_villages.use_soil_snow) then + data[a:index( x, h+1, z)] = cid.c_msnow_soil; + has_snow_cover = nil; + else + data[a:index( x, h+1, z)] = plant_id; + end + + elseif( on_soil ) then + if( math.random(1,5)==1 ) then + data[a:index( pos.x, pos.y, pos.z)] = cid.c_shrub; + end + + elseif( plant_id ) then -- place the sapling or plant (moretrees uses spawn_tree) + data[a:index( pos.x, pos.y, pos.z)] = plant_id; + end + + -- put a snow cover on plants where needed + if( has_snow_cover and cid.c_msnow_1 ~= cid.c_ignore) then + data[a:index( x, h+2, z)] = cid.c_msnow_1; + end + + -- place a water source now and then so that the fake soil can later be turned into real soil if needed + if( mg_villages.PLACE_WATER_FOR_FARMING and on_soil and x%3==0 and z%3==0 and h>minp.y) then + data[a:index( x, h-1, z)] = cid.c_water; + end + end + end + end +end + + + + +time_elapsed = function( t_last, msg ) + mg_villages.t_now = minetest.get_us_time(); + mg_villages.print( mg_villages.DEBUG_LEVEL_TIMING, 'TIME ELAPSED: '..tostring( mg_villages.t_now - t_last )..' '..msg ); + return mg_villages.t_now; +end + + +mg_villages.save_data = function() + save_restore.save_data( 'mg_all_villages.data', mg_villages.all_villages ); +end + + +mg_villages.place_villages_via_voxelmanip = function( villages, minp, maxp, vm, data, param2_data, a, top, seed ) + local t1 = minetest.get_us_time(); + local data; + local param2data; + + local cid = {} + cid.c_air = minetest.get_content_id( 'air' ); + cid.c_ignore = minetest.get_content_id( 'ignore' ); + cid.c_stone = minetest.get_content_id( 'default:stone'); + cid.c_dirt = minetest.get_content_id( 'default:dirt'); + cid.c_snow = minetest.get_content_id( 'default:snow'); + cid.c_snowblock = minetest.get_content_id( 'default:snowblock'); + cid.c_dirt_with_snow = minetest.get_content_id( 'default:dirt_with_snow' ); + cid.c_dirt_with_grass = minetest.get_content_id( 'default:dirt_with_grass' ); + cid.c_desert_sand = minetest.get_content_id( 'default:desert_sand' ); -- PM v + cid.c_desert_stone = minetest.get_content_id( 'default:desert_stone'); + cid.c_sand = minetest.get_content_id( 'default:sand' ); + cid.c_tree = minetest.get_content_id( 'default:tree'); + cid.c_sapling = minetest.get_content_id( 'default:sapling'); + cid.c_jtree = minetest.get_content_id( 'default:jungletree'); + cid.c_jsapling = minetest.get_content_id( 'default:junglesapling'); + cid.c_ptree = minetest.get_content_id( 'default:pine_tree'); + cid.c_psapling = minetest.get_content_id( 'default:pine_sapling'); + cid.c_atree = minetest.get_content_id( 'default:acacia_tree'); + cid.c_asapling = minetest.get_content_id( 'default:acacia_sapling'); + cid.c_asptree = minetest.get_content_id( 'default:aspen_tree'); + cid.c_aspsapling = minetest.get_content_id( 'default:aspen_sapling'); + cid.c_water = minetest.get_content_id( 'default:water_source'); -- PM ^ + cid.c_stone_with_coal = minetest.get_content_id( 'default:stone_with_coal'); + cid.c_sandstone = minetest.get_content_id( 'default:sandstone'); + + cid.c_msnow_1 = minetest.get_content_id( 'moresnow:snow_top' ); + cid.c_msnow_2 = minetest.get_content_id( 'moresnow:snow_fence_top'); + cid.c_msnow_3 = minetest.get_content_id( 'moresnow:snow_stair_top'); + cid.c_msnow_4 = minetest.get_content_id( 'moresnow:snow_slab_top'); + cid.c_msnow_5 = minetest.get_content_id( 'moresnow:snow_panel_top'); + cid.c_msnow_6 = minetest.get_content_id( 'moresnow:snow_micro_top'); + cid.c_msnow_7 = minetest.get_content_id( 'moresnow:snow_outer_stair_top'); + cid.c_msnow_8 = minetest.get_content_id( 'moresnow:snow_inner_stair_top'); + cid.c_msnow_9 = minetest.get_content_id( 'moresnow:snow_ramp_top'); + cid.c_msnow_10 = minetest.get_content_id( 'moresnow:snow_ramp_outer_top'); + cid.c_msnow_11 = minetest.get_content_id( 'moresnow:snow_ramp_inner_top'); + cid.c_msnow_soil=minetest.get_content_id( 'moresnow:snow_soil' ); + + cid.c_ice = minetest.get_content_id( 'default:ice' ); + + cid.c_plotmarker = minetest.get_content_id( 'mg_villages:plotmarker'); + + if( minetest.get_modpath('ethereal')) then + cid.c_ethereal_clay_red = minetest.get_content_id( 'bakedclay:red' ); + cid.c_ethereal_clay_orange = minetest.get_content_id( 'bakedclay:orange' ); + end + + + t1 = time_elapsed( t1, 'defines' ); + + local village_noise = minetest.get_perlin(7635, 3, 0.5, 16); + + -- determine which coordinates are inside the village and which are not + local village_area = {}; + + for village_nr, village in ipairs(villages) do + -- generate the village structure: determine positions of buildings and roads + mg_villages.generate_village( village, village_noise); + + if( not( village.is_single_house )) then + -- only add artificial snow if the village has at least a size of 15 (else it might look too artificial) + if( not( village.artificial_snow ) and village.vs > 15) then + if( mg_villages.artificial_snow_probability and math.random( 1, mg_villages.artificial_snow_probability )==1 + -- forbid artificial snow for some village types + and not( mg_villages.village_type_data[ village.village_type ].no_snow ) + and minetest.registered_nodes['default:snow']) then + village.artificial_snow = 1; + else + village.artificial_snow = 0; + end + end + + -- will set village_area to N where .. is: + -- 2: a building + -- 3: border around a building + -- 4: a road + -- 5: border around a road + mg_villages.village_area_mark_buildings( village_area, village_nr, village.to_add_data.bpos ); + -- will set village_area to N where .. is: + -- 8: a dirt road + mg_villages.village_area_mark_dirt_roads( village_area, village_nr, village.to_add_data.dirt_roads ); + else -- mark the terrain below single houses + mg_villages.village_area_mark_buildings( village_area, village_nr, village.to_add_data.bpos ); + end + end + t1 = time_elapsed( t1, 'generate_village, mark_buildings and mark_dirt_roads' ); + + local emin; + local emax; + -- if no voxelmanip data was passed on, read the data here + if( not( vm ) or not( a) or not( data ) or not( param2_data ) ) then + vm, emin, emax = minetest.get_mapgen_object("voxelmanip") + if( not( vm )) then + return; + end + + a = VoxelArea:new{ + MinEdge={x=emin.x, y=emin.y, z=emin.z}, + MaxEdge={x=emax.x, y=emax.y, z=emax.z}, + } + + data = vm:get_data(vm_data_buffer); + param2_data = vm:get_param2_data(param2_data_buffer); + end + t1 = time_elapsed( t1, 'get_vmap_data' ); + + -- all vm manipulation functions write their content to the *entire* volume/area - including those 16 nodes that + -- extend into neighbouring mapchunks; thus, cavegen griefing and mudflow can be repaired by placing everythiing again + local tmin = emin; + local tmax = emax; + -- if set to true, cavegen eating through houses and mudflow on roofs will NOT be repaired + if( not( mg_villages.UNDO_CAVEGEN_AND_MUDFLOW )) then + tmin = minp; + tmax = maxp; + end + -- will set village_area to N where .. is: + -- 0: not part of any village + -- 1: flattened area around the village; plants (wheat, cotton, trees, grass, ...) may be planted here + -- 6: free/unused spot in the core area of the village where the buildings are + -- negative value: do terrain blending + mg_villages.village_area_mark_inside_village_area( village_area, villages, village_noise, tmin, tmax ); + t1 = time_elapsed( t1, 'mark_inside_village_area' ); + + -- determine optimal height for all villages that have their center in this mapchunk; sets village.optimal_height + t1 = time_elapsed( t1, 'get_height' ); + + mg_villages.village_area_get_height( village_area, villages, tmin, tmax, data, param2_data, a, cid ); + -- the villages in the first mapchunk are set to a fixed height of 1 so that players will not end up embedded in stone + if( not( mg_villages.all_villages ) or mg_villages.anz_villages < 1 ) then + villages[1].optimal_height = 1; + end + + + -- change height of those villages where an optimal_height could be determined + local village_data_updated = false; + for _,village in ipairs(villages) do + if( village.optimal_height and village.optimal_height > 0 and village.optimal_height ~= village.vh ) then + -- towers are usually found on elevated places + if( village.village_type == 'tower' ) then + village.optimal_height = village.optimal_height + math.max( math.floor(village.vs/2), 2 ); + end + mg_villages.change_village_height( village, village.optimal_height ); + village_data_updated = true; + end + end + t1 = time_elapsed( t1, 'change_height' ); + + --mg_villages.flatten_village_area( villages, minp, maxp, vm, data, param2_data, a, village_area, cid ); + mg_villages.flatten_village_area( villages, tmin, tmax, vm, data, param2_data, a, village_area, cid ); + t1 = time_elapsed( t1, 'flatten_village_area' ); + -- repair cavegen griefings and mudflow which may have happened in the outer shell (which is part of other mapnodes) + local e1 = {x=minp.x,y=minp.y,z=minp.z}; + local e2 = {x=maxp.x,y=maxp.y,z=maxp.z}; + mg_villages.repair_outer_shell( villages, {x=tmin.x, y=tmin.y,z=tmin.z}, {x=tmin.x+16, y=tmax.y, z=tmax.z}, vm, data, param2_data, a, village_area, cid, e1, e2 ); + mg_villages.repair_outer_shell( villages, {x=tmax.x-16,y=tmin.y,z=tmin.z}, {x=tmax.x, y=tmax.y, z=tmax.z}, vm, data, param2_data, a, village_area, cid, e1, e2 ); + mg_villages.repair_outer_shell( villages, {x=tmin.x+16,y=tmin.y,z=tmin.z}, {x=tmax.x-16, y=tmax.y, z=tmin.z+16}, vm, data, param2_data, a, village_area, cid, e1, e2 ); + mg_villages.repair_outer_shell( villages, {x=tmin.x+16,y=tmin.y,z=tmax.z-16}, {x=tmax.x-16, y=tmax.y, z=tmax.z}, vm, data, param2_data, a, village_area, cid, e1, e2 ); +-- mg_villages.repair_outer_shell( villages, tmin, tmax, vm, data, param2_data, a, village_area, cid ); + + t1 = time_elapsed( t1, 'repair_outer_shell' ); + + local c_feldweg = minetest.get_content_id('cottages:feldweg'); + if( not( c_feldweg )) then + c_feldweg = minetest.get_content_id('default:cobble'); + end + + for _, village in ipairs(villages) do + + -- the village_id will be stored in the plot markers + local village_id = tostring( village.vx )..':'..tostring( village.vz ); + village.anz_buildings = mg_villages.count_inhabitated_buildings(village); + village.to_add_data = handle_schematics.place_buildings( village, tmin, tmax, data, param2_data, a, cid, village_id); + + handle_schematics.place_dirt_roads( village, tmin, tmax, data, param2_data, a, c_feldweg); + + -- grow trees which are part of buildings into saplings + for _,v in ipairs( village.to_add_data.extra_calls.trees ) do + mg_villages.grow_a_tree( v, v.typ, minp, maxp, data, a, cid, nil, v.snow ); -- TODO: supply pseudorandom value? + end + end + t1 = time_elapsed( t1, 'place_buildings and place_dirt_roads' ); + + mg_villages.village_area_fill_with_plants( village_area, villages, tmin, tmax, data, param2_data, a, cid ); + t1 = time_elapsed( t1, 'fill_with_plants' ); + + vm:set_data(data) + vm:set_param2_data(param2_data) + t1 = time_elapsed( t1, 'vm data set' ); + + mg_villages.grow_trees_voxelmanip( vm ); + t1 = time_elapsed( t1, 'vm growing trees' ); + + -- only update lighting where we actually placed the nodes + vm:calc_lighting( e1, e2 ); --minp, maxp ); --tmin, tmax) +-- vm:calc_lighting( {x=e1.x+1,y=e1.y+1,z=e1.z+1}, {x=e2.x-1,y=e2.y-1,z=e2.z-1}); + t1 = time_elapsed( t1, 'vm calc lighting' ); + + vm:write_to_map(true) + t1 = time_elapsed( t1, 'vm data written' ); + + vm:update_liquids() + t1 = time_elapsed( t1, 'vm update liquids' ); + + + -- do on_construct calls AFTER the map data has been written - else i.e. realtest fences can not update themshevles + for _, village in ipairs(villages) do + handle_schematics.call_on_construct( village.to_add_data.extra_calls.on_constr ); + end + t1 = time_elapsed( t1, 'do on_construct calls' ); + + + -- the doors need to be adjusted as well + for _, village in ipairs(villages) do + handle_schematics.call_door_setup( village.to_add_data.extra_calls.door_b ); + end + t1 = time_elapsed( t1, 'do door setup' ); + + + local pr = PseudoRandom(mg_villages.get_bseed(minp)); + for _, village in ipairs(villages) do + for _,v in ipairs( village.to_add_data.extra_calls.chests ) do + local building_nr = village.to_add_data.bpos[ v.bpos_i ]; + local building_data_typ = mg_villages.BUILDINGS[ building_nr.btype ].typ; + handle_schematics.fill_chest_random( v, pr, building_nr, building_data_typ ); + end + end + t1 = time_elapsed( t1, 'do fill chests' ); + -- TODO: extra_calls.signs + + -- set up mob data and workplace markers so that they know for which mob they are responsible + for _, village in ipairs(villages) do + local village_id = tostring( village.vx )..':'..tostring( village.vz ); + -- analyze road network, assign workers to buildings, assign mobs to beds + mg_villages.inhabitants.assign_mobs( village, village_id, false ); + -- set infotexts for beds and workplace markers + mg_villages.inhabitants.prepare_metadata( village, village_id, minp, maxp); + end + + -- useful for spawning mobs etc. + for _, village in ipairs(villages) do + mg_villages.part_of_village_spawned( village, minp, maxp, data, param2_data, a, cid ); + end + t1 = time_elapsed( t1, 'do spawn mobs' ); + + -- initialize the pseudo random generator so that the chests will be filled in a reproducable pattern + local meta + for _, village in ipairs(villages) do + -- now add those buildings which are .mts files and need to be placed by minetest.place_schematic(...) + -- place_schematics is no longer needed + --mg_villages.place_schematics( village.to_add_data.bpos, village.to_add_data.replacements, a, pr ); + --t1 = time_elapsed( t1, 'place_schematics' ); + + if( not( mg_villages.all_villages )) then + mg_villages.all_villages = {}; + end + -- unique id - there can only be one village at a given pair of x,z coordinates + local village_id = tostring( village.vx )..':'..tostring( village.vz ); + -- the village data is saved only once per village - and not whenever part of the village is generated + if( not( mg_villages.all_villages[ village_id ])) then + + -- count how many villages we already have and assign each village a uniq number + local count = 1; + for _,v in pairs( mg_villages.all_villages ) do + count = count + 1; + end + village.to_add_data.extra_calls = {}; + village.extra_calls = {}; -- do not save these values + village.nr = count; + mg_villages.anz_villages = count; + mg_villages.all_villages[ village_id ] = minetest.deserialize( minetest.serialize( village )); + + mg_villages.print( mg_villages.DEBUG_LEVEL_NORMAL, "Village No. "..tostring( count ).." of type \'".. + tostring( village.village_type ).."\' of size "..tostring( village.vs ).. + " spawned at: x = "..village.vx..", z = "..village.vz) + village_data_updated = true; + + -- hook for doing stuff that needs to be done exactly once per village + mg_villages.new_village_spawned( village_id ); + end + end + -- always save the changed village data + t1 = time_elapsed( t1, 'update village data' ); + mg_villages.save_data(); + t1 = time_elapsed( t1, 'save village data' ); + +end + + +--minetest.set_gen_notify('dungeon, temple, cave_begin, cave_end, large_cave_begin, large_cave_end',{}); + + +-- the actual mapgen +-- It only does changes if there is at least one village in the area that is to be generated. +minetest.register_on_generated(function(minp, maxp, seed) +-- this is just for learning more about dungeons and caves; it is not used anywhere here +-- local structures = minetest.get_mapgen_object('gennotify'); +-- print('STRUCTURES BY MAPGEN: '..minetest.serialize( structures )); + + -- only generate village on the surface chunks + if( minp.y < -32 or minp.y > mg_villages.MAX_HEIGHT_TREATED) then --64 + return; + end + + -- this function has to be called ONCE and AFTER all village types and buildings have been added + -- (which might have been done by other mods so we can't do this earlier) + if( not( mg_villages.village_types )) then + mg_villages.init_weights(); + end + + + local villages = {}; + -- create normal villages + if( mg_villages.ENABLE_VILLAGES == true ) then + villages = mg_villages.villages_in_mapchunk( minp, maxp.x-minp.x+1 ); + end + + -- if this mapchunk contains no part of a village, probably a lone building may be found in it + if( #villages<1 and mg_villages.INVERSE_HOUSE_DENSITY > 0 ) then + villages = mg_villages.houses_in_mapchunk( minp, maxp.x-minp.x+1, villages ); + end + + -- check if the village exists already + local v_nr = 1; + for v_nr, village in ipairs(villages) do + local village_id = tostring( village.vx )..':'..tostring( village.vz ); + + if( not( village.name ) or village.name == '') then + village.name = 'unknown'; + end + + if( mg_villages.all_villages and mg_villages.all_villages[ village_id ]) then + villages[ v_nr ] = mg_villages.all_villages[ village_id ]; + end + end + + if( villages and #villages > 0 ) then + mg_villages.place_villages_via_voxelmanip( villages, minp, maxp, nil, data_vm, data_param2_data, nil, nil, seed ); + end +end) + + diff --git a/mods/mg_villages/mg_villages_path_info.data b/mods/mg_villages/mg_villages_path_info.data new file mode 100644 index 0000000..c92da24 --- /dev/null +++ b/mods/mg_villages/mg_villages_path_info.data @@ -0,0 +1 @@ +mg_villages.path_info = {["mg_villages/schems/tent_open_3|WORKPLACE"] = {{{{3, 2, 4, 2, 0}, {2, 2, 4, 0}, {2, 2, 3, 1}, {2, 2, 2, 0}}, {{2, 2, 2, 0}, {2, 2, 1, 0}, {2, 2, 0, 0}, {1, 2, 0, 0}, {0, 2, 0, 0}, {0, 2, 1, 0}, {0, 2, 2, 0}, {0, 2, 3, 0}, {0, 2, 4, 0}, {0, 2, 5, 0}, {0, 2, 6, 0}, {1, 2, 6, 0}, {2, 2, 6, 0}, {3, 2, 6, 0}}}}, ["mg_villages/schems/default_town_house_tiny_2"] = {{{{8, 2, 7, 2, 0}, {7, 2, 6, 0}, {7, 2, 5, 0}, {8, 2, 4, 0}, {9, 2, 4, 0}, {10, 2, 4, 0}, {11, 2, 4, 0}, {11, 2, 3, 1}, {11, 2, 2, 0}}, {{9, 2, 7, 2, 0}, {10, 2, 6, 0}, {10, 2, 5, 0}, {11, 2, 4, 0}, {11, 2, 3, 1}, {11, 2, 2, 0}}, {{12, 2, 7, 2, 1}, {10, 2, 6, 0}, {10, 2, 5, 0}, {11, 2, 4, 0}, {11, 2, 3, 1}, {11, 2, 2, 0}}, {{11, 2, 2, 0}, {11, 1, 1, 0}, {11, 1, 0, 0}, {10, 1, 0, 0}, {9, 1, 0, 0}, {8, 1, 0, 0}}}}, ["village_gambit/schems/gambit_tower_1_0_270"] = {{{{5, 2, 4, 2, 2}, {4, 2, 5, 0}, {4, 2, 6, 1}, {4, 2, 7, 0}}, {{4, 2, 7, 0}, {4, 1, 8, 0}}}}, ["village_sandcity/schems/sandcity_small_1_1_270"] = {{{{2, 2, 2, 2, 2}, {3, 2, 4, 0}, {3, 2, 5, 1}, {3, 2, 6, 0}}, {{3, 2, 2, 2, 2}, {3, 2, 4, 0}, {3, 2, 5, 1}, {3, 2, 6, 0}}, {{4, 2, 2, 2, 2}, {3, 2, 4, 0}, {3, 2, 5, 1}, {3, 2, 6, 0}}, {}}}, ["mg_villages/schems/farm_tiny_6"] = {{{{8, 3, 3, 2, 1}, {6, 3, 4, 1}, {5, 3, 4, 0}, {5, 3, 5, 0}, {5, 3, 6, 0}, {4, 3, 6, 0}, {3, 3, 6, 1}, {2, 3, 6, 0}}, {{5, 6, 3, 2, 2}, {4, 6, 4, 0}, {4, 6, 5, 0}, {5, 6, 5, 0}, {6, 6, 5, 0}, {7, 6, 5, 0}, {7, 6, 6, 1}, {7, 6, 7, 0}, {6, 5, 7, 0}, {5, 4, 7, 0}, {4, 3, 7, 0}, {4, 3, 6, 0}, {3, 3, 6, 1}, {2, 3, 6, 0}}, {{6, 6, 3, 2, 2}, {7, 6, 4, 0}, {7, 6, 5, 0}, {7, 6, 6, 1}, {7, 6, 7, 0}, {6, 5, 7, 0}, {5, 4, 7, 0}, {4, 3, 7, 0}, {4, 3, 6, 0}, {3, 3, 6, 1}, {2, 3, 6, 0}}, {{9, 6, 6, 2, 1}, {7, 6, 7, 0}, {6, 5, 7, 0}, {5, 4, 7, 0}, {4, 3, 7, 0}, {4, 3, 6, 0}, {3, 3, 6, 1}, {2, 3, 6, 0}}, {{2, 3, 6, 0}, {1, 2, 6, 0}, {0, 2, 7, 0}}}, {{{8, 3, 3, 2, 1}, {6, 3, 4, 1}, {5, 3, 4, 0}, {5, 3, 5, 0}, {5, 3, 6, 0}, {6, 3, 6, 1}, {7, 3, 6, 0}, {8, 3, 6, 0}, {9, 3, 6, 1}, {10, 3, 6, 0}, {10, 3, 7, 0}, {10, 3, 8, 1}, {10, 3, 9, 0}, {9, 3, 9, 1}, {8, 3, 9, 0}, {8, 3, 10, 0}, {7, 3, 10, 0}, {6, 3, 10, 0}, {5, 3, 10, 0}, {4, 3, 10, 0}, {3, 3, 10, 1}, {2, 3, 10, 0}}, {{5, 6, 3, 2, 2}, {4, 6, 4, 0}, {4, 6, 5, 0}, {5, 6, 5, 0}, {6, 6, 5, 0}, {7, 6, 5, 0}, {7, 6, 6, 1}, {7, 6, 7, 0}, {6, 5, 7, 0}, {5, 4, 7, 0}, {4, 3, 7, 0}, {4, 3, 6, 0}, {5, 3, 6, 0}, {6, 3, 6, 1}, {7, 3, 6, 0}, {8, 3, 6, 0}, {9, 3, 6, 1}, {10, 3, 6, 0}, {10, 3, 7, 0}, {10, 3, 8, 1}, {10, 3, 9, 0}, {9, 3, 9, 1}, {8, 3, 9, 0}, {8, 3, 10, 0}, {7, 3, 10, 0}, {6, 3, 10, 0}, {5, 3, 10, 0}, {4, 3, 10, 0}, {3, 3, 10, 1}, {2, 3, 10, 0}}, {{6, 6, 3, 2, 2}, {7, 6, 4, 0}, {7, 6, 5, 0}, {7, 6, 6, 1}, {7, 6, 7, 0}, {6, 5, 7, 0}, {5, 4, 7, 0}, {4, 3, 7, 0}, {4, 3, 6, 0}, {5, 3, 6, 0}, {6, 3, 6, 1}, {7, 3, 6, 0}, {8, 3, 6, 0}, {9, 3, 6, 1}, {10, 3, 6, 0}, {10, 3, 7, 0}, {10, 3, 8, 1}, {10, 3, 9, 0}, {9, 3, 9, 1}, {8, 3, 9, 0}, {8, 3, 10, 0}, {7, 3, 10, 0}, {6, 3, 10, 0}, {5, 3, 10, 0}, {4, 3, 10, 0}, {3, 3, 10, 1}, {2, 3, 10, 0}}, {{9, 6, 6, 2, 1}, {7, 6, 7, 0}, {6, 5, 7, 0}, {5, 4, 7, 0}, {4, 3, 7, 0}, {4, 3, 6, 0}, {5, 3, 6, 0}, {6, 3, 6, 1}, {7, 3, 6, 0}, {8, 3, 6, 0}, {9, 3, 6, 1}, {10, 3, 6, 0}, {10, 3, 7, 0}, {10, 3, 8, 1}, {10, 3, 9, 0}, {9, 3, 9, 1}, {8, 3, 9, 0}, {8, 3, 10, 0}, {7, 3, 10, 0}, {6, 3, 10, 0}, {5, 3, 10, 0}, {4, 3, 10, 0}, {3, 3, 10, 1}, {2, 3, 10, 0}}, {{2, 3, 10, 0}, {1, 2, 9, 0}, {0, 2, 8, 0}, {0, 2, 7, 0}}}, {{{8, 3, 3, 2, 1}, {6, 3, 4, 1}, {5, 3, 4, 0}, {5, 3, 5, 0}, {5, 3, 6, 0}, {6, 3, 6, 1}, {7, 3, 6, 0}, {8, 3, 6, 0}, {9, 3, 6, 1}, {10, 3, 6, 0}, {10, 3, 7, 0}, {10, 3, 8, 1}, {10, 3, 9, 0}, {9, 3, 9, 1}, {8, 3, 9, 0}}, {{5, 6, 3, 2, 2}, {4, 6, 4, 0}, {4, 6, 5, 0}, {5, 6, 5, 0}, {6, 6, 5, 0}, {7, 6, 5, 0}, {7, 6, 6, 1}, {7, 6, 7, 0}, {6, 5, 7, 0}, {5, 4, 7, 0}, {4, 3, 7, 0}, {4, 3, 6, 0}, {5, 3, 6, 0}, {6, 3, 6, 1}, {7, 3, 6, 0}, {8, 3, 6, 0}, {9, 3, 6, 1}, {10, 3, 6, 0}, {10, 3, 7, 0}, {10, 3, 8, 1}, {10, 3, 9, 0}, {9, 3, 9, 1}, {8, 3, 9, 0}}, {{6, 6, 3, 2, 2}, {7, 6, 4, 0}, {7, 6, 5, 0}, {7, 6, 6, 1}, {7, 6, 7, 0}, {6, 5, 7, 0}, {5, 4, 7, 0}, {4, 3, 7, 0}, {4, 3, 6, 0}, {5, 3, 6, 0}, {6, 3, 6, 1}, {7, 3, 6, 0}, {8, 3, 6, 0}, {9, 3, 6, 1}, {10, 3, 6, 0}, {10, 3, 7, 0}, {10, 3, 8, 1}, {10, 3, 9, 0}, {9, 3, 9, 1}, {8, 3, 9, 0}}, {{9, 6, 6, 2, 1}, {7, 6, 7, 0}, {6, 5, 7, 0}, {5, 4, 7, 0}, {4, 3, 7, 0}, {4, 3, 6, 0}, {5, 3, 6, 0}, {6, 3, 6, 1}, {7, 3, 6, 0}, {8, 3, 6, 0}, {9, 3, 6, 1}, {10, 3, 6, 0}, {10, 3, 7, 0}, {10, 3, 8, 1}, {10, 3, 9, 0}, {9, 3, 9, 1}, {8, 3, 9, 0}}, {{8, 3, 9, 0}, {8, 3, 10, 0}, {7, 3, 10, 0}, {6, 3, 10, 0}, {5, 3, 10, 0}, {4, 3, 10, 0}, {3, 4, 10, 0}, {2, 3, 10, 0}, {1, 2, 9, 0}, {0, 2, 8, 0}, {0, 2, 7, 0}}}, {{{8, 3, 3, 2, 1}, {6, 3, 4, 1}, {5, 3, 4, 0}, {5, 3, 5, 0}, {5, 3, 6, 0}, {6, 3, 6, 1}, {7, 3, 6, 0}, {8, 3, 6, 0}, {9, 3, 6, 1}, {10, 3, 6, 0}, {10, 3, 7, 0}, {10, 3, 8, 1}, {10, 3, 9, 0}}, {{5, 6, 3, 2, 2}, {4, 6, 4, 0}, {4, 6, 5, 0}, {5, 6, 5, 0}, {6, 6, 5, 0}, {7, 6, 5, 0}, {7, 6, 6, 1}, {7, 6, 7, 0}, {6, 5, 7, 0}, {5, 4, 7, 0}, {4, 3, 7, 0}, {4, 3, 6, 0}, {5, 3, 6, 0}, {6, 3, 6, 1}, {7, 3, 6, 0}, {8, 3, 6, 0}, {9, 3, 6, 1}, {10, 3, 6, 0}, {10, 3, 7, 0}, {10, 3, 8, 1}, {10, 3, 9, 0}}, {{6, 6, 3, 2, 2}, {7, 6, 4, 0}, {7, 6, 5, 0}, {7, 6, 6, 1}, {7, 6, 7, 0}, {6, 5, 7, 0}, {5, 4, 7, 0}, {4, 3, 7, 0}, {4, 3, 6, 0}, {5, 3, 6, 0}, {6, 3, 6, 1}, {7, 3, 6, 0}, {8, 3, 6, 0}, {9, 3, 6, 1}, {10, 3, 6, 0}, {10, 3, 7, 0}, {10, 3, 8, 1}, {10, 3, 9, 0}}, {{9, 6, 6, 2, 1}, {7, 6, 7, 0}, {6, 5, 7, 0}, {5, 4, 7, 0}, {4, 3, 7, 0}, {4, 3, 6, 0}, {5, 3, 6, 0}, {6, 3, 6, 1}, {7, 3, 6, 0}, {8, 3, 6, 0}, {9, 3, 6, 1}, {10, 3, 6, 0}, {10, 3, 7, 0}, {10, 3, 8, 1}, {10, 3, 9, 0}}, {{10, 3, 9, 0}, {9, 4, 9, 0}, {8, 3, 10, 0}, {7, 3, 10, 0}, {6, 3, 10, 0}, {5, 3, 10, 0}, {4, 3, 10, 0}, {3, 4, 10, 0}, {2, 3, 10, 0}, {1, 2, 9, 0}, {0, 2, 8, 0}, {0, 2, 7, 0}}}, {{{8, 3, 3, 2, 1}, {6, 3, 4, 1}, {5, 3, 4, 0}, {5, 3, 5, 0}, {5, 3, 6, 0}, {6, 3, 6, 1}, {7, 3, 6, 0}, {8, 3, 6, 0}, {9, 3, 6, 1}, {10, 3, 6, 0}, {11, 3, 7, 0}, {11, 3, 8, 1}, {11, 3, 9, 0}}, {{5, 6, 3, 2, 2}, {4, 6, 4, 0}, {4, 6, 5, 0}, {5, 6, 5, 0}, {6, 6, 5, 0}, {7, 6, 5, 0}, {7, 6, 6, 1}, {7, 6, 7, 0}, {6, 5, 7, 0}, {5, 4, 7, 0}, {4, 3, 7, 0}, {4, 3, 6, 0}, {5, 3, 6, 0}, {6, 3, 6, 1}, {7, 3, 6, 0}, {8, 3, 6, 0}, {9, 3, 6, 1}, {10, 3, 6, 0}, {11, 3, 7, 0}, {11, 3, 8, 1}, {11, 3, 9, 0}}, {{6, 6, 3, 2, 2}, {7, 6, 4, 0}, {7, 6, 5, 0}, {7, 6, 6, 1}, {7, 6, 7, 0}, {6, 5, 7, 0}, {5, 4, 7, 0}, {4, 3, 7, 0}, {4, 3, 6, 0}, {5, 3, 6, 0}, {6, 3, 6, 1}, {7, 3, 6, 0}, {8, 3, 6, 0}, {9, 3, 6, 1}, {10, 3, 6, 0}, {11, 3, 7, 0}, {11, 3, 8, 1}, {11, 3, 9, 0}}, {{9, 6, 6, 2, 1}, {7, 6, 7, 0}, {6, 5, 7, 0}, {5, 4, 7, 0}, {4, 3, 7, 0}, {4, 3, 6, 0}, {5, 3, 6, 0}, {6, 3, 6, 1}, {7, 3, 6, 0}, {8, 3, 6, 0}, {9, 3, 6, 1}, {10, 3, 6, 0}, {11, 3, 7, 0}, {11, 3, 8, 1}, {11, 3, 9, 0}}, {{11, 3, 9, 0}, {10, 3, 9, 0}, {9, 4, 9, 0}, {8, 3, 10, 0}, {7, 3, 10, 0}, {6, 3, 10, 0}, {5, 3, 10, 0}, {4, 3, 10, 0}, {3, 4, 10, 0}, {2, 3, 10, 0}, {1, 2, 9, 0}, {0, 2, 8, 0}, {0, 2, 7, 0}}}}, ["mg_villages/schems/logcabin10"] = {{{{6, 2, 4, 2, 0}, {5, 2, 3, 0}, {4, 2, 2, 0}, {4, 2, 1, 1}, {4, 2, 0, 0}}, {{6, 3, 4, 2, 0}, {5, 2, 3, 0}, {4, 2, 2, 0}, {4, 2, 1, 1}, {4, 2, 0, 0}}, {{6, 2, 6, 2, 0}, {5, 2, 5, 0}, {5, 2, 4, 0}, {5, 2, 3, 0}, {4, 2, 2, 0}, {4, 2, 1, 1}, {4, 2, 0, 0}}, {{4, 2, 0, 0}, {5, 2, 0, 0}, {6, 2, 0, 0}, {7, 2, 0, 0}, {8, 2, 1, 0}, {8, 2, 2, 0}, {8, 2, 3, 0}, {8, 2, 4, 0}}}}, ["mg_villages/schems/lumberjack_12"] = {{{{3, 2, 5, 2, 3}, {5, 2, 4, 0}, {5, 2, 3, 0}, {5, 2, 2, 1}, {5, 2, 1, 0}}, {{3, 3, 5, 2, 3}, {4, 3, 3, 0}, {5, 2, 3, 0}, {5, 2, 2, 1}, {5, 2, 1, 0}}, {{3, 4, 5, 2, 3}, {4, 2, 4, 0}, {5, 2, 4, 0}, {5, 2, 3, 0}, {5, 2, 2, 1}, {5, 2, 1, 0}}, {{5, 2, 1, 0}, {5, 1, 0, 0}, {4, 1, 0, 0}}}}, ["mg_villages/schems/default_town_house_tiny_3"] = {{{{4, 2, 5, 2, 2}, {6, 2, 4, 0}, {7, 2, 4, 0}, {7, 2, 3, 1}, {7, 2, 2, 0}}, {{7, 2, 2, 0}, {7, 1, 1, 0}, {7, 1, 0, 0}, {6, 1, 0, 0}, {5, 1, 0, 0}}}, {{{4, 2, 5, 2, 2}, {6, 2, 4, 0}, {7, 2, 4, 0}, {8, 2, 4, 1}, {8, 2, 3, 0}}, {{8, 2, 3, 0}, {8, 2, 2, 0}, {8, 1, 1, 0}, {7, 1, 0, 0}, {6, 1, 0, 0}, {5, 1, 0, 0}}}}, ["village_towntest/schems/towntest_kddekadenz_castle_3_90"] = {{{{9, 5, 5, 2, 2}, {8, 5, 6, 0}, {8, 5, 7, 0}, {8, 5, 8, 0}, {7, 5, 9, 0}, {7, 5, 10, 0}, {7, 5, 11, 0}, {7, 5, 12, 0}, {7, 5, 13, 0}, {7, 5, 14, 0}, {7, 5, 15, 0}, {7, 5, 16, 0}, {8, 5, 16, 1}, {9, 5, 16, 0}, {10, 5, 15, 0}, {11, 5, 14, 0}, {12, 5, 13, 0}, {13, 5, 12, 0}, {14, 5, 11, 0}, {15, 5, 10, 0}, {16, 5, 9, 0}, {17, 5, 9, 0}, {18, 5, 9, 0}, {19, 5, 9, 0}, {20, 5, 9, 0}, {20, 5, 8, 0}, {20, 5, 7, 0}, {19, 5, 7, 0}, {18, 5, 7, 0}, {18, 5, 6, 1}, {18, 5, 5, 0}}, {{29, 5, 5, 2, 2}, {30, 5, 7, 0}, {30, 5, 8, 0}, {31, 5, 9, 0}, {31, 5, 10, 0}, {31, 5, 11, 0}, {31, 5, 12, 0}, {31, 5, 13, 0}, {31, 5, 14, 0}, {31, 5, 15, 0}, {30, 5, 15, 1}, {29, 5, 15, 0}, {28, 5, 14, 0}, {27, 5, 13, 0}, {26, 5, 12, 0}, {25, 5, 11, 0}, {24, 5, 10, 0}, {23, 5, 9, 0}, {22, 5, 9, 0}, {21, 5, 9, 0}, {20, 5, 9, 0}, {20, 5, 8, 0}, {20, 5, 7, 0}, {19, 5, 7, 0}, {18, 5, 7, 0}, {18, 5, 6, 1}, {18, 5, 5, 0}}, {{33, 5, 5, 2, 2}, {31, 5, 7, 0}, {31, 5, 8, 0}, {31, 5, 9, 0}, {31, 5, 10, 0}, {31, 5, 11, 0}, {31, 5, 12, 0}, {31, 5, 13, 0}, {31, 5, 14, 0}, {31, 5, 15, 0}, {30, 5, 15, 1}, {29, 5, 15, 0}, {28, 5, 14, 0}, {27, 5, 13, 0}, {26, 5, 12, 0}, {25, 5, 11, 0}, {24, 5, 10, 0}, {23, 5, 9, 0}, {22, 5, 9, 0}, {21, 5, 9, 0}, {20, 5, 9, 0}, {20, 5, 8, 0}, {20, 5, 7, 0}, {19, 5, 7, 0}, {18, 5, 7, 0}, {18, 5, 6, 1}, {18, 5, 5, 0}}, {{5, 5, 22, 2, 3}, {6, 5, 23, 0}, {7, 5, 23, 0}, {7, 5, 22, 0}, {7, 5, 21, 0}, {7, 5, 20, 0}, {7, 5, 19, 0}, {7, 5, 18, 0}, {7, 5, 17, 0}, {7, 5, 16, 0}, {8, 5, 16, 1}, {9, 5, 16, 0}, {10, 5, 15, 0}, {11, 5, 14, 0}, {12, 5, 13, 0}, {13, 5, 12, 0}, {14, 5, 11, 0}, {15, 5, 10, 0}, {16, 5, 9, 0}, {17, 5, 9, 0}, {18, 5, 9, 0}, {19, 5, 9, 0}, {20, 5, 9, 0}, {20, 5, 8, 0}, {20, 5, 7, 0}, {19, 5, 7, 0}, {18, 5, 7, 0}, {18, 5, 6, 1}, {18, 5, 5, 0}}, {{33, 5, 23, 2, 1}, {32, 5, 24, 0}, {31, 5, 24, 0}, {31, 5, 23, 0}, {31, 5, 22, 0}, {31, 5, 21, 0}, {31, 5, 20, 0}, {31, 5, 19, 0}, {31, 5, 18, 0}, {31, 5, 17, 0}, {31, 5, 16, 0}, {31, 5, 15, 0}, {30, 5, 15, 1}, {29, 5, 15, 0}, {28, 5, 14, 0}, {27, 5, 13, 0}, {26, 5, 12, 0}, {25, 5, 11, 0}, {24, 5, 10, 0}, {23, 5, 9, 0}, {22, 5, 9, 0}, {21, 5, 9, 0}, {20, 5, 9, 0}, {20, 5, 8, 0}, {20, 5, 7, 0}, {19, 5, 7, 0}, {18, 5, 7, 0}, {18, 5, 6, 1}, {18, 5, 5, 0}}, {{5, 5, 24, 2, 3}, {6, 5, 25, 0}, {7, 5, 25, 0}, {7, 5, 24, 0}, {7, 5, 23, 0}, {7, 5, 22, 0}, {7, 5, 21, 0}, {7, 5, 20, 0}, {7, 5, 19, 0}, {7, 5, 18, 0}, {7, 5, 17, 0}, {7, 5, 16, 0}, {8, 5, 16, 1}, {9, 5, 16, 0}, {10, 5, 15, 0}, {11, 5, 14, 0}, {12, 5, 13, 0}, {13, 5, 12, 0}, {14, 5, 11, 0}, {15, 5, 10, 0}, {16, 5, 9, 0}, {17, 5, 9, 0}, {18, 5, 9, 0}, {19, 5, 9, 0}, {20, 5, 9, 0}, {20, 5, 8, 0}, {20, 5, 7, 0}, {19, 5, 7, 0}, {18, 5, 7, 0}, {18, 5, 6, 1}, {18, 5, 5, 0}}, {{33, 5, 25, 2, 1}, {32, 5, 26, 0}, {31, 5, 26, 0}, {31, 5, 25, 0}, {31, 5, 24, 0}, {31, 5, 23, 0}, {31, 5, 22, 0}, {31, 5, 21, 0}, {31, 5, 20, 0}, {31, 5, 19, 0}, {31, 5, 18, 0}, {31, 5, 17, 0}, {31, 5, 16, 0}, {31, 5, 15, 0}, {30, 5, 15, 1}, {29, 5, 15, 0}, {28, 5, 14, 0}, {27, 5, 13, 0}, {26, 5, 12, 0}, {25, 5, 11, 0}, {24, 5, 10, 0}, {23, 5, 9, 0}, {22, 5, 9, 0}, {21, 5, 9, 0}, {20, 5, 9, 0}, {20, 5, 8, 0}, {20, 5, 7, 0}, {19, 5, 7, 0}, {18, 5, 7, 0}, {18, 5, 6, 1}, {18, 5, 5, 0}}, {{5, 5, 26, 2, 3}, {6, 5, 25, 0}, {7, 5, 25, 0}, {7, 5, 24, 0}, {7, 5, 23, 0}, {7, 5, 22, 0}, {7, 5, 21, 0}, {7, 5, 20, 0}, {7, 5, 19, 0}, {7, 5, 18, 0}, {7, 5, 17, 0}, {7, 5, 16, 0}, {8, 5, 16, 1}, {9, 5, 16, 0}, {10, 5, 15, 0}, {11, 5, 14, 0}, {12, 5, 13, 0}, {13, 5, 12, 0}, {14, 5, 11, 0}, {15, 5, 10, 0}, {16, 5, 9, 0}, {17, 5, 9, 0}, {18, 5, 9, 0}, {19, 5, 9, 0}, {20, 5, 9, 0}, {20, 5, 8, 0}, {20, 5, 7, 0}, {19, 5, 7, 0}, {18, 5, 7, 0}, {18, 5, 6, 1}, {18, 5, 5, 0}}, {{18, 5, 5, 0}, {19, 5, 4, 0}, {19, 5, 3, 0}, {19, 5, 2, 0}, {19, 4, 1, 0}, {19, 4, 0, 0}}}}, ["village_towntest/schems/towntest_Nanuk_lavabeacon_0_90|WORKPLACE"] = {{{{6, 2, 6, 2, 0}, {5, 2, 5, 0}, {5, 2, 4, 0}, {5, 2, 3, 0}, {5, 2, 2, 1}, {5, 1, 1, 0}}, {{5, 1, 1, 0}, {5, 1, 0, 0}}}}, ["mg_villages/schems/lumberjack_5"] = {{{{3, 2, 7, 2, 3}, {4, 2, 8, 0}, {5, 2, 8, 0}, {5, 2, 7, 0}, {5, 2, 6, 1}, {5, 2, 5, 0}}, {{7, 2, 7, 2, 1}, {6, 2, 8, 0}, {5, 2, 8, 0}, {5, 2, 7, 0}, {5, 2, 6, 1}, {5, 2, 5, 0}}, {{8, 2, 7, 2, 2}, {6, 2, 8, 0}, {5, 2, 8, 0}, {5, 2, 7, 0}, {5, 2, 6, 1}, {5, 2, 5, 0}}, {{3, 3, 7, 2, 3}, {3, 2, 8, 0}, {4, 2, 8, 0}, {5, 2, 8, 0}, {5, 2, 7, 0}, {5, 2, 6, 1}, {5, 2, 5, 0}}, {{7, 3, 7, 2, 1}, {7, 2, 8, 0}, {6, 2, 8, 0}, {5, 2, 8, 0}, {5, 2, 7, 0}, {5, 2, 6, 1}, {5, 2, 5, 0}}, {{8, 3, 7, 2, 2}, {7, 2, 8, 0}, {6, 2, 8, 0}, {5, 2, 8, 0}, {5, 2, 7, 0}, {5, 2, 6, 1}, {5, 2, 5, 0}}, {{3, 4, 7, 2, 3}, {3, 2, 8, 0}, {4, 2, 8, 0}, {5, 2, 8, 0}, {5, 2, 7, 0}, {5, 2, 6, 1}, {5, 2, 5, 0}}, {{7, 4, 7, 2, 1}, {7, 2, 8, 0}, {6, 2, 8, 0}, {5, 2, 8, 0}, {5, 2, 7, 0}, {5, 2, 6, 1}, {5, 2, 5, 0}}, {{8, 4, 7, 2, 2}, {7, 2, 8, 0}, {6, 2, 8, 0}, {5, 2, 8, 0}, {5, 2, 7, 0}, {5, 2, 6, 1}, {5, 2, 5, 0}}, {{5, 2, 5, 0}, {5, 1, 4, 0}, {4, 1, 3, 0}, {4, 1, 2, 0}, {4, 1, 1, 0}, {4, 1, 0, 0}, {5, 1, 0, 0}}}, {{{3, 2, 7, 2, 3}, {4, 2, 8, 0}, {5, 2, 8, 0}, {5, 2, 9, 0}, {5, 2, 10, 1}, {5, 2, 11, 0}}, {{7, 2, 7, 2, 1}, {6, 2, 8, 0}, {5, 2, 8, 0}, {5, 2, 9, 0}, {5, 2, 10, 1}, {5, 2, 11, 0}}, {{8, 2, 7, 2, 2}, {6, 2, 8, 0}, {5, 2, 8, 0}, {5, 2, 9, 0}, {5, 2, 10, 1}, {5, 2, 11, 0}}, {{3, 3, 7, 2, 3}, {3, 2, 8, 0}, {4, 2, 8, 0}, {5, 2, 8, 0}, {5, 2, 9, 0}, {5, 2, 10, 1}, {5, 2, 11, 0}}, {{7, 3, 7, 2, 1}, {7, 2, 8, 0}, {6, 2, 8, 0}, {5, 2, 8, 0}, {5, 2, 9, 0}, {5, 2, 10, 1}, {5, 2, 11, 0}}, {{8, 3, 7, 2, 2}, {7, 2, 8, 0}, {6, 2, 8, 0}, {5, 2, 8, 0}, {5, 2, 9, 0}, {5, 2, 10, 1}, {5, 2, 11, 0}}, {{3, 4, 7, 2, 3}, {3, 2, 8, 0}, {4, 2, 8, 0}, {5, 2, 8, 0}, {5, 2, 9, 0}, {5, 2, 10, 1}, {5, 2, 11, 0}}, {{7, 4, 7, 2, 1}, {7, 2, 8, 0}, {6, 2, 8, 0}, {5, 2, 8, 0}, {5, 2, 9, 0}, {5, 2, 10, 1}, {5, 2, 11, 0}}, {{8, 4, 7, 2, 2}, {7, 2, 8, 0}, {6, 2, 8, 0}, {5, 2, 8, 0}, {5, 2, 9, 0}, {5, 2, 10, 1}, {5, 2, 11, 0}}, {{5, 2, 11, 0}, {4, 1, 12, 0}, {3, 1, 12, 0}, {2, 1, 11, 0}, {1, 1, 11, 0}, {1, 1, 10, 0}, {0, 1, 9, 0}, {0, 1, 8, 0}, {0, 1, 7, 0}, {1, 1, 6, 0}, {1, 1, 5, 0}, {1, 1, 4, 0}, {2, 1, 3, 0}, {3, 1, 2, 0}, {4, 1, 1, 0}, {4, 1, 0, 0}, {5, 1, 0, 0}}}}, ["mg_villages/schems/hochsitz_1|WORKPLACE"] = {{{{2, 6, 3, 2, 1}, {3, 6, 3, 1}, {4, 6, 3, 0}}, {{4, 6, 3, 0}, {4, 6, 2, 0}, {4, 2, 1, 0}, {3, 2, 1, 0}, {2, 2, 1, 0}, {1, 2, 1, 0}, {0, 2, 2, 0}, {0, 2, 3, 0}}}}, ["mg_villages/schems/trader_clay_2|WORKPLACE"] = {{{{9, 2, 6, 2, 0}, {9, 3, 5, 0}, {9, 2, 4, 0}, {8, 2, 4, 1}, {7, 2, 4, 0}}, {{7, 2, 4, 0}, {6, 2, 3, 0}, {5, 2, 3, 0}, {5, 2, 2, 0}, {5, 2, 1, 0}, {6, 1, 0, 0}}}}, ["mg_villages/schems/inn_1_0|WORKPLACE"] = {{{{6, 2, 9, 2, 1}, {5, 3, 9, 0}, {4, 2, 9, 0}, {3, 2, 8, 0}, {2, 2, 8, 0}, {1, 2, 8, 1}, {0, 2, 8, 0}}, {}}}, ["mg_villages/schems/lumberjack_4"] = {{{{3, 2, 8, 2, 3}, {5, 2, 7, 0}, {5, 2, 6, 0}, {5, 2, 5, 1}, {5, 2, 4, 0}}, {{6, 2, 8, 2, 0}, {5, 2, 6, 0}, {5, 2, 5, 1}, {5, 2, 4, 0}}, {{3, 3, 8, 2, 3}, {4, 2, 7, 0}, {5, 2, 7, 0}, {5, 2, 6, 0}, {5, 2, 5, 1}, {5, 2, 4, 0}}, {{6, 3, 8, 2, 0}, {5, 2, 7, 0}, {5, 2, 6, 0}, {5, 2, 5, 1}, {5, 2, 4, 0}}, {{5, 2, 4, 0}, {5, 1, 3, 0}, {6, 1, 2, 0}, {6, 1, 1, 0}, {6, 1, 0, 0}}}}, ["mg_villages/schems/church_1_0|WORKPLACE"] = {{{{16, 2, 8, 2, 1}, {16, 2, 7, 0}, {15, 2, 7, 0}, {14, 2, 7, 0}, {13, 2, 8, 0}, {12, 2, 8, 0}, {11, 2, 8, 0}, {10, 2, 8, 0}, {9, 2, 8, 0}, {8, 2, 8, 0}, {7, 2, 8, 0}, {6, 2, 8, 0}, {5, 2, 8, 0}, {4, 2, 8, 0}, {3, 2, 8, 0}, {2, 2, 8, 0}, {1, 2, 8, 1}, {0, 2, 8, 0}}, {}}}, ["mg_villages/schems/chateau_without_garden"] = {{{{15, 18, 5, 2, 2}, {14, 18, 7, 0}, {15, 18, 7, 0}, {16, 18, 7, 0}, {16, 18, 8, 0}, {16, 18, 9, 1}, {16, 18, 10, 0}, {17, 17, 10, 0}, {18, 16, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {15, 8, 12, 0}, {14, 8, 12, 0}, {13, 8, 12, 0}, {12, 8, 12, 1}, {11, 8, 12, 0}}, {{16, 18, 5, 2, 2}, {16, 18, 8, 0}, {16, 18, 9, 1}, {16, 18, 10, 0}, {17, 17, 10, 0}, {18, 16, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {15, 8, 12, 0}, {14, 8, 12, 0}, {13, 8, 12, 0}, {12, 8, 12, 1}, {11, 8, 12, 0}}, {{19, 18, 5, 2, 2}, {18, 18, 6, 0}, {18, 18, 7, 0}, {19, 18, 7, 0}, {20, 18, 7, 0}, {20, 18, 8, 0}, {20, 18, 9, 1}, {20, 18, 10, 0}, {20, 18, 11, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {15, 8, 12, 0}, {14, 8, 12, 0}, {13, 8, 12, 0}, {12, 8, 12, 1}, {11, 8, 12, 0}}, {{20, 18, 5, 2, 2}, {21, 18, 7, 0}, {20, 18, 7, 0}, {20, 18, 8, 0}, {20, 18, 9, 1}, {20, 18, 10, 0}, {20, 18, 11, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {15, 8, 12, 0}, {14, 8, 12, 0}, {13, 8, 12, 0}, {12, 8, 12, 1}, {11, 8, 12, 0}}, {{21, 15, 6, 2, 3}, {20, 15, 5, 0}, {19, 15, 5, 0}, {19, 15, 6, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {15, 8, 12, 0}, {14, 8, 12, 0}, {13, 8, 12, 0}, {12, 8, 12, 1}, {11, 8, 12, 0}}, {{21, 15, 7, 2, 3}, {20, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {15, 8, 12, 0}, {14, 8, 12, 0}, {13, 8, 12, 0}, {12, 8, 12, 1}, {11, 8, 12, 0}}, {{22, 15, 10, 2, 3}, {22, 15, 12, 0}, {21, 15, 12, 1}, {20, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {15, 8, 12, 0}, {14, 8, 12, 0}, {13, 8, 12, 0}, {12, 8, 12, 1}, {11, 8, 12, 0}}, {{22, 18, 11, 2, 3}, {24, 18, 12, 0}, {24, 18, 13, 0}, {23, 18, 13, 0}, {22, 18, 14, 0}, {21, 18, 14, 1}, {20, 18, 14, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {15, 8, 12, 0}, {14, 8, 12, 0}, {13, 8, 12, 0}, {12, 8, 12, 1}, {11, 8, 12, 0}}, {{11, 22, 11, 2, 2}, {12, 22, 13, 0}, {13, 22, 13, 0}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {15, 8, 12, 0}, {14, 8, 12, 0}, {13, 8, 12, 0}, {12, 8, 12, 1}, {11, 8, 12, 0}}, {{13, 22, 11, 2, 2}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {15, 8, 12, 0}, {14, 8, 12, 0}, {13, 8, 12, 0}, {12, 8, 12, 1}, {11, 8, 12, 0}}, {{15, 22, 11, 2, 2}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {15, 8, 12, 0}, {14, 8, 12, 0}, {13, 8, 12, 0}, {12, 8, 12, 1}, {11, 8, 12, 0}}, {{22, 18, 12, 2, 3}, {22, 18, 14, 0}, {21, 18, 14, 1}, {20, 18, 14, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {15, 8, 12, 0}, {14, 8, 12, 0}, {13, 8, 12, 0}, {12, 8, 12, 1}, {11, 8, 12, 0}}, {{12, 18, 14, 2, 0}, {11, 18, 13, 0}, {11, 18, 12, 0}, {12, 18, 12, 0}, {13, 18, 11, 0}, {14, 18, 11, 1}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {15, 8, 12, 0}, {14, 8, 12, 0}, {13, 8, 12, 0}, {12, 8, 12, 1}, {11, 8, 12, 0}}, {{13, 18, 14, 2, 0}, {11, 18, 13, 0}, {11, 18, 12, 0}, {12, 18, 12, 0}, {13, 18, 11, 0}, {14, 18, 11, 1}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {15, 8, 12, 0}, {14, 8, 12, 0}, {13, 8, 12, 0}, {12, 8, 12, 1}, {11, 8, 12, 0}}, {{20, 22, 14, 2, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {15, 8, 12, 0}, {14, 8, 12, 0}, {13, 8, 12, 0}, {12, 8, 12, 1}, {11, 8, 12, 0}}, {{22, 22, 14, 2, 0}, {23, 22, 12, 0}, {22, 22, 12, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {15, 8, 12, 0}, {14, 8, 12, 0}, {13, 8, 12, 0}, {12, 8, 12, 1}, {11, 8, 12, 0}}, {{24, 22, 14, 2, 0}, {23, 22, 12, 0}, {22, 22, 12, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {15, 8, 12, 0}, {14, 8, 12, 0}, {13, 8, 12, 0}, {12, 8, 12, 1}, {11, 8, 12, 0}}, {{22, 15, 15, 2, 3}, {22, 15, 13, 0}, {21, 15, 13, 1}, {20, 15, 13, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {15, 8, 12, 0}, {14, 8, 12, 0}, {13, 8, 12, 0}, {12, 8, 12, 1}, {11, 8, 12, 0}}, {{13, 15, 17, 2, 1}, {14, 15, 16, 1}, {14, 15, 15, 0}, {14, 15, 14, 0}, {14, 15, 13, 0}, {14, 15, 12, 0}, {14, 15, 11, 0}, {14, 15, 10, 0}, {14, 15, 9, 1}, {14, 15, 8, 0}, {14, 15, 7, 0}, {15, 15, 7, 0}, {16, 15, 7, 0}, {17, 15, 7, 0}, {18, 15, 7, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {15, 8, 12, 0}, {14, 8, 12, 0}, {13, 8, 12, 0}, {12, 8, 12, 1}, {11, 8, 12, 0}}, {{22, 15, 17, 2, 2}, {19, 15, 16, 1}, {19, 15, 15, 0}, {18, 15, 14, 0}, {17, 14, 14, 0}, {16, 13, 14, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {15, 8, 12, 0}, {14, 8, 12, 0}, {13, 8, 12, 0}, {12, 8, 12, 1}, {11, 8, 12, 0}}, {{23, 15, 17, 2, 2}, {24, 15, 19, 0}, {23, 15, 19, 0}, {22, 15, 19, 0}, {21, 15, 19, 0}, {20, 15, 18, 0}, {19, 15, 17, 0}, {19, 15, 16, 1}, {19, 15, 15, 0}, {18, 15, 14, 0}, {17, 14, 14, 0}, {16, 13, 14, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {15, 8, 12, 0}, {14, 8, 12, 0}, {13, 8, 12, 0}, {12, 8, 12, 1}, {11, 8, 12, 0}}, {{13, 15, 20, 2, 1}, {14, 15, 18, 0}, {14, 15, 17, 0}, {14, 15, 16, 1}, {14, 15, 15, 0}, {14, 15, 14, 0}, {14, 15, 13, 0}, {14, 15, 12, 0}, {14, 15, 11, 0}, {14, 15, 10, 0}, {14, 15, 9, 1}, {14, 15, 8, 0}, {14, 15, 7, 0}, {15, 15, 7, 0}, {16, 15, 7, 0}, {17, 15, 7, 0}, {18, 15, 7, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {15, 8, 12, 0}, {14, 8, 12, 0}, {13, 8, 12, 0}, {12, 8, 12, 1}, {11, 8, 12, 0}}, {{16, 18, 20, 2, 1}, {16, 18, 18, 0}, {16, 18, 17, 0}, {16, 18, 16, 0}, {16, 18, 15, 1}, {17, 18, 14, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {15, 8, 12, 0}, {14, 8, 12, 0}, {13, 8, 12, 0}, {12, 8, 12, 1}, {11, 8, 12, 0}}, {{20, 18, 20, 2, 3}, {20, 18, 18, 0}, {20, 18, 17, 0}, {20, 18, 16, 1}, {20, 18, 15, 0}, {19, 18, 14, 0}, {18, 18, 14, 0}, {17, 18, 14, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {15, 8, 12, 0}, {14, 8, 12, 0}, {13, 8, 12, 0}, {12, 8, 12, 1}, {11, 8, 12, 0}}, {{11, 8, 12, 0}, {10, 7, 12, 0}, {9, 7, 11, 0}, {8, 7, 10, 0}, {8, 6, 9, 0}, {7, 6, 8, 0}, {7, 5, 7, 0}, {6, 5, 6, 0}, {5, 4, 5, 0}, {4, 4, 5, 0}, {3, 4, 4, 0}, {2, 4, 4, 0}, {1, 4, 4, 0}, {1, 3, 5, 0}, {0, 3, 6, 0}, {0, 3, 7, 0}, {0, 3, 8, 0}, {0, 3, 9, 0}, {0, 3, 10, 0}, {0, 3, 11, 0}, {0, 3, 12, 0}}}, {{{15, 18, 5, 2, 2}, {14, 18, 7, 0}, {15, 18, 7, 0}, {16, 18, 7, 0}, {16, 18, 8, 0}, {16, 18, 9, 1}, {16, 18, 10, 0}, {17, 17, 10, 0}, {18, 16, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{16, 18, 5, 2, 2}, {16, 18, 8, 0}, {16, 18, 9, 1}, {16, 18, 10, 0}, {17, 17, 10, 0}, {18, 16, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{19, 18, 5, 2, 2}, {18, 18, 6, 0}, {18, 18, 7, 0}, {19, 18, 7, 0}, {20, 18, 7, 0}, {20, 18, 8, 0}, {20, 18, 9, 1}, {20, 18, 10, 0}, {20, 18, 11, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{20, 18, 5, 2, 2}, {21, 18, 7, 0}, {20, 18, 7, 0}, {20, 18, 8, 0}, {20, 18, 9, 1}, {20, 18, 10, 0}, {20, 18, 11, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{21, 15, 6, 2, 3}, {20, 15, 5, 0}, {19, 15, 5, 0}, {19, 15, 6, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{21, 15, 7, 2, 3}, {20, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{22, 15, 10, 2, 3}, {22, 15, 12, 0}, {21, 15, 12, 1}, {20, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{22, 18, 11, 2, 3}, {24, 18, 12, 0}, {24, 18, 13, 0}, {23, 18, 13, 0}, {22, 18, 14, 0}, {21, 18, 14, 1}, {20, 18, 14, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{11, 22, 11, 2, 2}, {12, 22, 13, 0}, {13, 22, 13, 0}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{13, 22, 11, 2, 2}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{15, 22, 11, 2, 2}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{22, 18, 12, 2, 3}, {22, 18, 14, 0}, {21, 18, 14, 1}, {20, 18, 14, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{12, 18, 14, 2, 0}, {11, 18, 13, 0}, {11, 18, 12, 0}, {12, 18, 12, 0}, {13, 18, 11, 0}, {14, 18, 11, 1}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{13, 18, 14, 2, 0}, {11, 18, 13, 0}, {11, 18, 12, 0}, {12, 18, 12, 0}, {13, 18, 11, 0}, {14, 18, 11, 1}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{20, 22, 14, 2, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{22, 22, 14, 2, 0}, {23, 22, 12, 0}, {22, 22, 12, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{24, 22, 14, 2, 0}, {23, 22, 12, 0}, {22, 22, 12, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{22, 15, 15, 2, 3}, {22, 15, 13, 0}, {21, 15, 13, 1}, {20, 15, 13, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{13, 15, 17, 2, 1}, {14, 15, 16, 1}, {14, 15, 15, 0}, {14, 15, 14, 0}, {14, 15, 13, 0}, {14, 15, 12, 0}, {14, 15, 11, 0}, {14, 15, 10, 0}, {14, 15, 9, 1}, {14, 15, 8, 0}, {14, 15, 7, 0}, {15, 15, 7, 0}, {16, 15, 7, 0}, {17, 15, 7, 0}, {18, 15, 7, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{22, 15, 17, 2, 2}, {19, 15, 16, 1}, {19, 15, 15, 0}, {18, 15, 14, 0}, {17, 14, 14, 0}, {16, 13, 14, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{23, 15, 17, 2, 2}, {24, 15, 19, 0}, {23, 15, 19, 0}, {22, 15, 19, 0}, {21, 15, 19, 0}, {20, 15, 18, 0}, {19, 15, 17, 0}, {19, 15, 16, 1}, {19, 15, 15, 0}, {18, 15, 14, 0}, {17, 14, 14, 0}, {16, 13, 14, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{13, 15, 20, 2, 1}, {14, 15, 18, 0}, {14, 15, 17, 0}, {14, 15, 16, 1}, {14, 15, 15, 0}, {14, 15, 14, 0}, {14, 15, 13, 0}, {14, 15, 12, 0}, {14, 15, 11, 0}, {14, 15, 10, 0}, {14, 15, 9, 1}, {14, 15, 8, 0}, {14, 15, 7, 0}, {15, 15, 7, 0}, {16, 15, 7, 0}, {17, 15, 7, 0}, {18, 15, 7, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{16, 18, 20, 2, 1}, {16, 18, 18, 0}, {16, 18, 17, 0}, {16, 18, 16, 0}, {16, 18, 15, 1}, {17, 18, 14, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{20, 18, 20, 2, 3}, {20, 18, 18, 0}, {20, 18, 17, 0}, {20, 18, 16, 1}, {20, 18, 15, 0}, {19, 18, 14, 0}, {18, 18, 14, 0}, {17, 18, 14, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{11, 8, 13, 0}, {10, 7, 12, 0}, {9, 7, 11, 0}, {8, 7, 10, 0}, {8, 6, 9, 0}, {7, 6, 8, 0}, {7, 5, 7, 0}, {6, 5, 6, 0}, {5, 4, 5, 0}, {4, 4, 5, 0}, {3, 4, 4, 0}, {2, 4, 4, 0}, {1, 4, 4, 0}, {1, 3, 5, 0}, {0, 3, 6, 0}, {0, 3, 7, 0}, {0, 3, 8, 0}, {0, 3, 9, 0}, {0, 3, 10, 0}, {0, 3, 11, 0}, {0, 3, 12, 0}}}, {{{15, 18, 5, 2, 2}, {14, 18, 7, 0}, {15, 18, 7, 0}, {16, 18, 7, 0}, {16, 18, 8, 0}, {16, 18, 9, 1}, {16, 18, 10, 0}, {17, 17, 10, 0}, {18, 16, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{16, 18, 5, 2, 2}, {16, 18, 8, 0}, {16, 18, 9, 1}, {16, 18, 10, 0}, {17, 17, 10, 0}, {18, 16, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{19, 18, 5, 2, 2}, {18, 18, 6, 0}, {18, 18, 7, 0}, {19, 18, 7, 0}, {20, 18, 7, 0}, {20, 18, 8, 0}, {20, 18, 9, 1}, {20, 18, 10, 0}, {20, 18, 11, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{20, 18, 5, 2, 2}, {21, 18, 7, 0}, {20, 18, 7, 0}, {20, 18, 8, 0}, {20, 18, 9, 1}, {20, 18, 10, 0}, {20, 18, 11, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{21, 15, 6, 2, 3}, {20, 15, 5, 0}, {19, 15, 5, 0}, {19, 15, 6, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{21, 15, 7, 2, 3}, {20, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{22, 15, 10, 2, 3}, {22, 15, 12, 0}, {21, 15, 12, 1}, {20, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{22, 18, 11, 2, 3}, {24, 18, 12, 0}, {24, 18, 13, 0}, {23, 18, 13, 0}, {22, 18, 14, 0}, {21, 18, 14, 1}, {20, 18, 14, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{11, 22, 11, 2, 2}, {12, 22, 13, 0}, {13, 22, 13, 0}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{13, 22, 11, 2, 2}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{15, 22, 11, 2, 2}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{22, 18, 12, 2, 3}, {22, 18, 14, 0}, {21, 18, 14, 1}, {20, 18, 14, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{12, 18, 14, 2, 0}, {11, 18, 13, 0}, {11, 18, 12, 0}, {12, 18, 12, 0}, {13, 18, 11, 0}, {14, 18, 11, 1}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{13, 18, 14, 2, 0}, {11, 18, 13, 0}, {11, 18, 12, 0}, {12, 18, 12, 0}, {13, 18, 11, 0}, {14, 18, 11, 1}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{20, 22, 14, 2, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{22, 22, 14, 2, 0}, {23, 22, 12, 0}, {22, 22, 12, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{24, 22, 14, 2, 0}, {23, 22, 12, 0}, {22, 22, 12, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{22, 15, 15, 2, 3}, {22, 15, 13, 0}, {21, 15, 13, 1}, {20, 15, 13, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{13, 15, 17, 2, 1}, {14, 15, 16, 1}, {14, 15, 15, 0}, {14, 15, 14, 0}, {14, 15, 13, 0}, {14, 15, 12, 0}, {14, 15, 11, 0}, {14, 15, 10, 0}, {14, 15, 9, 1}, {14, 15, 8, 0}, {14, 15, 7, 0}, {15, 15, 7, 0}, {16, 15, 7, 0}, {17, 15, 7, 0}, {18, 15, 7, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{22, 15, 17, 2, 2}, {19, 15, 16, 1}, {19, 15, 15, 0}, {18, 15, 14, 0}, {17, 14, 14, 0}, {16, 13, 14, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{23, 15, 17, 2, 2}, {24, 15, 19, 0}, {23, 15, 19, 0}, {22, 15, 19, 0}, {21, 15, 19, 0}, {20, 15, 18, 0}, {19, 15, 17, 0}, {19, 15, 16, 1}, {19, 15, 15, 0}, {18, 15, 14, 0}, {17, 14, 14, 0}, {16, 13, 14, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{13, 15, 20, 2, 1}, {14, 15, 18, 0}, {14, 15, 17, 0}, {14, 15, 16, 1}, {14, 15, 15, 0}, {14, 15, 14, 0}, {14, 15, 13, 0}, {14, 15, 12, 0}, {14, 15, 11, 0}, {14, 15, 10, 0}, {14, 15, 9, 1}, {14, 15, 8, 0}, {14, 15, 7, 0}, {15, 15, 7, 0}, {16, 15, 7, 0}, {17, 15, 7, 0}, {18, 15, 7, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{16, 18, 20, 2, 1}, {16, 18, 18, 0}, {16, 18, 17, 0}, {16, 18, 16, 0}, {16, 18, 15, 1}, {17, 18, 14, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{20, 18, 20, 2, 3}, {20, 18, 18, 0}, {20, 18, 17, 0}, {20, 18, 16, 1}, {20, 18, 15, 0}, {19, 18, 14, 0}, {18, 18, 14, 0}, {17, 18, 14, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{21, 3, 21, 0}, {20, 3, 21, 0}, {19, 3, 21, 0}, {18, 3, 21, 0}, {17, 3, 21, 0}, {16, 3, 21, 0}, {15, 3, 21, 0}, {14, 3, 21, 0}, {13, 3, 21, 0}, {12, 3, 21, 0}, {11, 3, 21, 0}, {10, 3, 21, 0}, {9, 3, 21, 0}, {8, 4, 21, 0}, {7, 4, 21, 0}, {6, 4, 21, 0}, {5, 4, 21, 0}, {4, 4, 21, 0}, {3, 4, 21, 0}, {2, 4, 21, 0}, {1, 4, 21, 0}, {1, 3, 20, 0}, {0, 3, 19, 0}, {0, 3, 18, 0}, {0, 3, 17, 0}, {0, 3, 16, 0}, {0, 3, 15, 0}, {0, 3, 14, 0}, {0, 3, 13, 0}, {0, 3, 12, 0}}}, {{{15, 18, 5, 2, 2}, {14, 18, 7, 0}, {15, 18, 7, 0}, {16, 18, 7, 0}, {16, 18, 8, 0}, {16, 18, 9, 1}, {16, 18, 10, 0}, {17, 17, 10, 0}, {18, 16, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{16, 18, 5, 2, 2}, {16, 18, 8, 0}, {16, 18, 9, 1}, {16, 18, 10, 0}, {17, 17, 10, 0}, {18, 16, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{19, 18, 5, 2, 2}, {18, 18, 6, 0}, {18, 18, 7, 0}, {19, 18, 7, 0}, {20, 18, 7, 0}, {20, 18, 8, 0}, {20, 18, 9, 1}, {20, 18, 10, 0}, {20, 18, 11, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{20, 18, 5, 2, 2}, {21, 18, 7, 0}, {20, 18, 7, 0}, {20, 18, 8, 0}, {20, 18, 9, 1}, {20, 18, 10, 0}, {20, 18, 11, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{21, 15, 6, 2, 3}, {20, 15, 5, 0}, {19, 15, 5, 0}, {19, 15, 6, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{21, 15, 7, 2, 3}, {20, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{22, 15, 10, 2, 3}, {22, 15, 12, 0}, {21, 15, 12, 1}, {20, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{22, 18, 11, 2, 3}, {24, 18, 12, 0}, {24, 18, 13, 0}, {23, 18, 13, 0}, {22, 18, 14, 0}, {21, 18, 14, 1}, {20, 18, 14, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{11, 22, 11, 2, 2}, {12, 22, 13, 0}, {13, 22, 13, 0}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{13, 22, 11, 2, 2}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{15, 22, 11, 2, 2}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{22, 18, 12, 2, 3}, {22, 18, 14, 0}, {21, 18, 14, 1}, {20, 18, 14, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{12, 18, 14, 2, 0}, {11, 18, 13, 0}, {11, 18, 12, 0}, {12, 18, 12, 0}, {13, 18, 11, 0}, {14, 18, 11, 1}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{13, 18, 14, 2, 0}, {11, 18, 13, 0}, {11, 18, 12, 0}, {12, 18, 12, 0}, {13, 18, 11, 0}, {14, 18, 11, 1}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{20, 22, 14, 2, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{22, 22, 14, 2, 0}, {23, 22, 12, 0}, {22, 22, 12, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{24, 22, 14, 2, 0}, {23, 22, 12, 0}, {22, 22, 12, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{22, 15, 15, 2, 3}, {22, 15, 13, 0}, {21, 15, 13, 1}, {20, 15, 13, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{13, 15, 17, 2, 1}, {14, 15, 16, 1}, {14, 15, 15, 0}, {14, 15, 14, 0}, {14, 15, 13, 0}, {14, 15, 12, 0}, {14, 15, 11, 0}, {14, 15, 10, 0}, {14, 15, 9, 1}, {14, 15, 8, 0}, {14, 15, 7, 0}, {15, 15, 7, 0}, {16, 15, 7, 0}, {17, 15, 7, 0}, {18, 15, 7, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{22, 15, 17, 2, 2}, {19, 15, 16, 1}, {19, 15, 15, 0}, {18, 15, 14, 0}, {17, 14, 14, 0}, {16, 13, 14, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{23, 15, 17, 2, 2}, {24, 15, 19, 0}, {23, 15, 19, 0}, {22, 15, 19, 0}, {21, 15, 19, 0}, {20, 15, 18, 0}, {19, 15, 17, 0}, {19, 15, 16, 1}, {19, 15, 15, 0}, {18, 15, 14, 0}, {17, 14, 14, 0}, {16, 13, 14, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{13, 15, 20, 2, 1}, {14, 15, 18, 0}, {14, 15, 17, 0}, {14, 15, 16, 1}, {14, 15, 15, 0}, {14, 15, 14, 0}, {14, 15, 13, 0}, {14, 15, 12, 0}, {14, 15, 11, 0}, {14, 15, 10, 0}, {14, 15, 9, 1}, {14, 15, 8, 0}, {14, 15, 7, 0}, {15, 15, 7, 0}, {16, 15, 7, 0}, {17, 15, 7, 0}, {18, 15, 7, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{16, 18, 20, 2, 1}, {16, 18, 18, 0}, {16, 18, 17, 0}, {16, 18, 16, 0}, {16, 18, 15, 1}, {17, 18, 14, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{20, 18, 20, 2, 3}, {20, 18, 18, 0}, {20, 18, 17, 0}, {20, 18, 16, 1}, {20, 18, 15, 0}, {19, 18, 14, 0}, {18, 18, 14, 0}, {17, 18, 14, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{21, 3, 22, 0}, {20, 3, 22, 0}, {19, 3, 22, 0}, {18, 3, 22, 0}, {17, 3, 22, 0}, {16, 3, 22, 0}, {15, 3, 22, 0}, {14, 3, 22, 0}, {13, 3, 22, 0}, {12, 3, 22, 0}, {11, 3, 22, 0}, {10, 3, 22, 0}, {9, 3, 22, 0}, {8, 3, 22, 0}, {7, 3, 22, 0}, {6, 3, 22, 0}, {5, 3, 22, 0}, {4, 3, 22, 0}, {3, 3, 22, 0}, {2, 3, 22, 0}, {1, 3, 22, 0}, {0, 3, 22, 0}, {0, 3, 21, 0}, {0, 3, 20, 0}, {0, 3, 19, 0}, {0, 3, 18, 0}, {0, 3, 17, 0}, {0, 3, 16, 0}, {0, 3, 15, 0}, {0, 3, 14, 0}, {0, 3, 13, 0}, {0, 3, 12, 0}}}, {{{15, 18, 5, 2, 2}, {14, 18, 7, 0}, {15, 18, 7, 0}, {16, 18, 7, 0}, {16, 18, 8, 0}, {16, 18, 9, 1}, {16, 18, 10, 0}, {17, 17, 10, 0}, {18, 16, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{16, 18, 5, 2, 2}, {16, 18, 8, 0}, {16, 18, 9, 1}, {16, 18, 10, 0}, {17, 17, 10, 0}, {18, 16, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{19, 18, 5, 2, 2}, {18, 18, 6, 0}, {18, 18, 7, 0}, {19, 18, 7, 0}, {20, 18, 7, 0}, {20, 18, 8, 0}, {20, 18, 9, 1}, {20, 18, 10, 0}, {20, 18, 11, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{20, 18, 5, 2, 2}, {21, 18, 7, 0}, {20, 18, 7, 0}, {20, 18, 8, 0}, {20, 18, 9, 1}, {20, 18, 10, 0}, {20, 18, 11, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{21, 15, 6, 2, 3}, {20, 15, 5, 0}, {19, 15, 5, 0}, {19, 15, 6, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{21, 15, 7, 2, 3}, {20, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{22, 15, 10, 2, 3}, {22, 15, 12, 0}, {21, 15, 12, 1}, {20, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{22, 18, 11, 2, 3}, {24, 18, 12, 0}, {24, 18, 13, 0}, {23, 18, 13, 0}, {22, 18, 14, 0}, {21, 18, 14, 1}, {20, 18, 14, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{11, 22, 11, 2, 2}, {12, 22, 13, 0}, {13, 22, 13, 0}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{13, 22, 11, 2, 2}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{15, 22, 11, 2, 2}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{22, 18, 12, 2, 3}, {22, 18, 14, 0}, {21, 18, 14, 1}, {20, 18, 14, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{12, 18, 14, 2, 0}, {11, 18, 13, 0}, {11, 18, 12, 0}, {12, 18, 12, 0}, {13, 18, 11, 0}, {14, 18, 11, 1}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{13, 18, 14, 2, 0}, {11, 18, 13, 0}, {11, 18, 12, 0}, {12, 18, 12, 0}, {13, 18, 11, 0}, {14, 18, 11, 1}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{20, 22, 14, 2, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{22, 22, 14, 2, 0}, {23, 22, 12, 0}, {22, 22, 12, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{24, 22, 14, 2, 0}, {23, 22, 12, 0}, {22, 22, 12, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{22, 15, 15, 2, 3}, {22, 15, 13, 0}, {21, 15, 13, 1}, {20, 15, 13, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{13, 15, 17, 2, 1}, {14, 15, 16, 1}, {14, 15, 15, 0}, {14, 15, 14, 0}, {14, 15, 13, 0}, {14, 15, 12, 0}, {14, 15, 11, 0}, {14, 15, 10, 0}, {14, 15, 9, 1}, {14, 15, 8, 0}, {14, 15, 7, 0}, {15, 15, 7, 0}, {16, 15, 7, 0}, {17, 15, 7, 0}, {18, 15, 7, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{22, 15, 17, 2, 2}, {19, 15, 16, 1}, {19, 15, 15, 0}, {18, 15, 14, 0}, {17, 14, 14, 0}, {16, 13, 14, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{23, 15, 17, 2, 2}, {24, 15, 19, 0}, {23, 15, 19, 0}, {22, 15, 19, 0}, {21, 15, 19, 0}, {20, 15, 18, 0}, {19, 15, 17, 0}, {19, 15, 16, 1}, {19, 15, 15, 0}, {18, 15, 14, 0}, {17, 14, 14, 0}, {16, 13, 14, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{13, 15, 20, 2, 1}, {14, 15, 18, 0}, {14, 15, 17, 0}, {14, 15, 16, 1}, {14, 15, 15, 0}, {14, 15, 14, 0}, {14, 15, 13, 0}, {14, 15, 12, 0}, {14, 15, 11, 0}, {14, 15, 10, 0}, {14, 15, 9, 1}, {14, 15, 8, 0}, {14, 15, 7, 0}, {15, 15, 7, 0}, {16, 15, 7, 0}, {17, 15, 7, 0}, {18, 15, 7, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{16, 18, 20, 2, 1}, {16, 18, 18, 0}, {16, 18, 17, 0}, {16, 18, 16, 0}, {16, 18, 15, 1}, {17, 18, 14, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{20, 18, 20, 2, 3}, {20, 18, 18, 0}, {20, 18, 17, 0}, {20, 18, 16, 1}, {20, 18, 15, 0}, {19, 18, 14, 0}, {18, 18, 14, 0}, {17, 18, 14, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{21, 3, 21, 0}, {20, 3, 21, 0}, {19, 3, 21, 0}, {18, 3, 21, 0}, {17, 3, 21, 0}, {16, 3, 21, 0}, {15, 3, 21, 0}, {14, 3, 21, 0}, {13, 3, 21, 0}, {12, 3, 21, 0}, {11, 3, 21, 0}, {10, 3, 21, 0}, {9, 3, 21, 0}, {8, 4, 21, 0}, {7, 4, 21, 0}, {6, 4, 21, 0}, {5, 4, 21, 0}, {4, 4, 21, 0}, {3, 4, 21, 0}, {2, 4, 21, 0}, {1, 4, 21, 0}, {1, 3, 20, 0}, {0, 3, 19, 0}, {0, 3, 18, 0}, {0, 3, 17, 0}, {0, 3, 16, 0}, {0, 3, 15, 0}, {0, 3, 14, 0}, {0, 3, 13, 0}, {0, 3, 12, 0}}}, {{{15, 18, 5, 2, 2}, {14, 18, 7, 0}, {15, 18, 7, 0}, {16, 18, 7, 0}, {16, 18, 8, 0}, {16, 18, 9, 1}, {16, 18, 10, 0}, {17, 17, 10, 0}, {18, 16, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{16, 18, 5, 2, 2}, {16, 18, 8, 0}, {16, 18, 9, 1}, {16, 18, 10, 0}, {17, 17, 10, 0}, {18, 16, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{19, 18, 5, 2, 2}, {18, 18, 6, 0}, {18, 18, 7, 0}, {19, 18, 7, 0}, {20, 18, 7, 0}, {20, 18, 8, 0}, {20, 18, 9, 1}, {20, 18, 10, 0}, {20, 18, 11, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{20, 18, 5, 2, 2}, {21, 18, 7, 0}, {20, 18, 7, 0}, {20, 18, 8, 0}, {20, 18, 9, 1}, {20, 18, 10, 0}, {20, 18, 11, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{21, 15, 6, 2, 3}, {20, 15, 5, 0}, {19, 15, 5, 0}, {19, 15, 6, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{21, 15, 7, 2, 3}, {20, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{22, 15, 10, 2, 3}, {22, 15, 12, 0}, {21, 15, 12, 1}, {20, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{22, 18, 11, 2, 3}, {24, 18, 12, 0}, {24, 18, 13, 0}, {23, 18, 13, 0}, {22, 18, 14, 0}, {21, 18, 14, 1}, {20, 18, 14, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{11, 22, 11, 2, 2}, {12, 22, 13, 0}, {13, 22, 13, 0}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{13, 22, 11, 2, 2}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{15, 22, 11, 2, 2}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{22, 18, 12, 2, 3}, {22, 18, 14, 0}, {21, 18, 14, 1}, {20, 18, 14, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{12, 18, 14, 2, 0}, {11, 18, 13, 0}, {11, 18, 12, 0}, {12, 18, 12, 0}, {13, 18, 11, 0}, {14, 18, 11, 1}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{13, 18, 14, 2, 0}, {11, 18, 13, 0}, {11, 18, 12, 0}, {12, 18, 12, 0}, {13, 18, 11, 0}, {14, 18, 11, 1}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{20, 22, 14, 2, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{22, 22, 14, 2, 0}, {23, 22, 12, 0}, {22, 22, 12, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{24, 22, 14, 2, 0}, {23, 22, 12, 0}, {22, 22, 12, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{22, 15, 15, 2, 3}, {22, 15, 13, 0}, {21, 15, 13, 1}, {20, 15, 13, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{13, 15, 17, 2, 1}, {14, 15, 16, 1}, {14, 15, 15, 0}, {14, 15, 14, 0}, {14, 15, 13, 0}, {14, 15, 12, 0}, {14, 15, 11, 0}, {14, 15, 10, 0}, {14, 15, 9, 1}, {14, 15, 8, 0}, {14, 15, 7, 0}, {15, 15, 7, 0}, {16, 15, 7, 0}, {17, 15, 7, 0}, {18, 15, 7, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{22, 15, 17, 2, 2}, {19, 15, 16, 1}, {19, 15, 15, 0}, {18, 15, 14, 0}, {17, 14, 14, 0}, {16, 13, 14, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{23, 15, 17, 2, 2}, {24, 15, 19, 0}, {23, 15, 19, 0}, {22, 15, 19, 0}, {21, 15, 19, 0}, {20, 15, 18, 0}, {19, 15, 17, 0}, {19, 15, 16, 1}, {19, 15, 15, 0}, {18, 15, 14, 0}, {17, 14, 14, 0}, {16, 13, 14, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{13, 15, 20, 2, 1}, {14, 15, 18, 0}, {14, 15, 17, 0}, {14, 15, 16, 1}, {14, 15, 15, 0}, {14, 15, 14, 0}, {14, 15, 13, 0}, {14, 15, 12, 0}, {14, 15, 11, 0}, {14, 15, 10, 0}, {14, 15, 9, 1}, {14, 15, 8, 0}, {14, 15, 7, 0}, {15, 15, 7, 0}, {16, 15, 7, 0}, {17, 15, 7, 0}, {18, 15, 7, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{16, 18, 20, 2, 1}, {16, 18, 18, 0}, {16, 18, 17, 0}, {16, 18, 16, 0}, {16, 18, 15, 1}, {17, 18, 14, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{20, 18, 20, 2, 3}, {20, 18, 18, 0}, {20, 18, 17, 0}, {20, 18, 16, 1}, {20, 18, 15, 0}, {19, 18, 14, 0}, {18, 18, 14, 0}, {17, 18, 14, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{21, 3, 22, 0}, {20, 3, 22, 0}, {19, 3, 22, 0}, {18, 3, 22, 0}, {17, 3, 22, 0}, {16, 3, 22, 0}, {15, 3, 22, 0}, {14, 3, 22, 0}, {13, 3, 22, 0}, {12, 3, 22, 0}, {11, 3, 22, 0}, {10, 3, 22, 0}, {9, 3, 22, 0}, {8, 3, 22, 0}, {7, 3, 22, 0}, {6, 3, 22, 0}, {5, 3, 22, 0}, {4, 3, 22, 0}, {3, 3, 22, 0}, {2, 3, 22, 0}, {1, 3, 22, 0}, {0, 3, 22, 0}, {0, 3, 21, 0}, {0, 3, 20, 0}, {0, 3, 19, 0}, {0, 3, 18, 0}, {0, 3, 17, 0}, {0, 3, 16, 0}, {0, 3, 15, 0}, {0, 3, 14, 0}, {0, 3, 13, 0}, {0, 3, 12, 0}}}, {{{15, 18, 5, 2, 2}, {14, 18, 7, 0}, {15, 18, 7, 0}, {16, 18, 7, 0}, {16, 18, 8, 0}, {16, 18, 9, 1}, {16, 18, 10, 0}, {17, 17, 10, 0}, {18, 16, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{16, 18, 5, 2, 2}, {16, 18, 8, 0}, {16, 18, 9, 1}, {16, 18, 10, 0}, {17, 17, 10, 0}, {18, 16, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{19, 18, 5, 2, 2}, {18, 18, 6, 0}, {18, 18, 7, 0}, {19, 18, 7, 0}, {20, 18, 7, 0}, {20, 18, 8, 0}, {20, 18, 9, 1}, {20, 18, 10, 0}, {20, 18, 11, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{20, 18, 5, 2, 2}, {21, 18, 7, 0}, {20, 18, 7, 0}, {20, 18, 8, 0}, {20, 18, 9, 1}, {20, 18, 10, 0}, {20, 18, 11, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{21, 15, 6, 2, 3}, {20, 15, 5, 0}, {19, 15, 5, 0}, {19, 15, 6, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{21, 15, 7, 2, 3}, {20, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{22, 15, 10, 2, 3}, {22, 15, 12, 0}, {21, 15, 12, 1}, {20, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{22, 18, 11, 2, 3}, {24, 18, 12, 0}, {24, 18, 13, 0}, {23, 18, 13, 0}, {22, 18, 14, 0}, {21, 18, 14, 1}, {20, 18, 14, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{11, 22, 11, 2, 2}, {12, 22, 13, 0}, {13, 22, 13, 0}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{13, 22, 11, 2, 2}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{15, 22, 11, 2, 2}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{22, 18, 12, 2, 3}, {22, 18, 14, 0}, {21, 18, 14, 1}, {20, 18, 14, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{12, 18, 14, 2, 0}, {11, 18, 13, 0}, {11, 18, 12, 0}, {12, 18, 12, 0}, {13, 18, 11, 0}, {14, 18, 11, 1}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{13, 18, 14, 2, 0}, {11, 18, 13, 0}, {11, 18, 12, 0}, {12, 18, 12, 0}, {13, 18, 11, 0}, {14, 18, 11, 1}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{20, 22, 14, 2, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{22, 22, 14, 2, 0}, {23, 22, 12, 0}, {22, 22, 12, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{24, 22, 14, 2, 0}, {23, 22, 12, 0}, {22, 22, 12, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{22, 15, 15, 2, 3}, {22, 15, 13, 0}, {21, 15, 13, 1}, {20, 15, 13, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{13, 15, 17, 2, 1}, {14, 15, 16, 1}, {14, 15, 15, 0}, {14, 15, 14, 0}, {14, 15, 13, 0}, {14, 15, 12, 0}, {14, 15, 11, 0}, {14, 15, 10, 0}, {14, 15, 9, 1}, {14, 15, 8, 0}, {14, 15, 7, 0}, {15, 15, 7, 0}, {16, 15, 7, 0}, {17, 15, 7, 0}, {18, 15, 7, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{22, 15, 17, 2, 2}, {19, 15, 16, 1}, {19, 15, 15, 0}, {18, 15, 14, 0}, {17, 14, 14, 0}, {16, 13, 14, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{23, 15, 17, 2, 2}, {24, 15, 19, 0}, {23, 15, 19, 0}, {22, 15, 19, 0}, {21, 15, 19, 0}, {20, 15, 18, 0}, {19, 15, 17, 0}, {19, 15, 16, 1}, {19, 15, 15, 0}, {18, 15, 14, 0}, {17, 14, 14, 0}, {16, 13, 14, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{13, 15, 20, 2, 1}, {14, 15, 18, 0}, {14, 15, 17, 0}, {14, 15, 16, 1}, {14, 15, 15, 0}, {14, 15, 14, 0}, {14, 15, 13, 0}, {14, 15, 12, 0}, {14, 15, 11, 0}, {14, 15, 10, 0}, {14, 15, 9, 1}, {14, 15, 8, 0}, {14, 15, 7, 0}, {15, 15, 7, 0}, {16, 15, 7, 0}, {17, 15, 7, 0}, {18, 15, 7, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{16, 18, 20, 2, 1}, {16, 18, 18, 0}, {16, 18, 17, 0}, {16, 18, 16, 0}, {16, 18, 15, 1}, {17, 18, 14, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{20, 18, 20, 2, 3}, {20, 18, 18, 0}, {20, 18, 17, 0}, {20, 18, 16, 1}, {20, 18, 15, 0}, {19, 18, 14, 0}, {18, 18, 14, 0}, {17, 18, 14, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 12, 0}, {27, 7, 11, 0}, {27, 6, 10, 0}, {27, 5, 9, 0}, {28, 5, 8, 0}, {29, 4, 8, 0}, {30, 3, 8, 0}, {30, 3, 7, 0}, {30, 3, 6, 0}, {31, 3, 5, 0}, {32, 3, 4, 0}, {33, 3, 3, 0}, {33, 3, 2, 0}, {33, 3, 1, 0}, {32, 3, 0, 0}, {31, 3, 0, 0}, {30, 3, 0, 0}, {29, 3, 1, 0}, {28, 3, 1, 0}, {27, 3, 1, 0}, {26, 3, 1, 0}, {25, 3, 1, 0}, {24, 3, 1, 0}, {23, 3, 1, 0}, {22, 3, 1, 0}, {21, 3, 1, 0}, {20, 3, 1, 0}, {19, 3, 1, 0}, {18, 3, 1, 0}, {17, 3, 1, 0}, {16, 3, 1, 0}, {15, 3, 2, 0}, {14, 3, 3, 0}, {13, 3, 3, 0}, {12, 3, 3, 0}, {11, 3, 3, 0}, {10, 3, 3, 0}, {9, 3, 3, 0}, {8, 3, 3, 0}, {7, 3, 3, 0}, {6, 3, 3, 0}, {5, 3, 3, 0}, {4, 3, 3, 0}, {3, 3, 3, 0}, {2, 3, 3, 0}, {1, 3, 3, 0}, {0, 3, 3, 0}, {0, 3, 4, 0}, {0, 3, 5, 0}, {0, 3, 6, 0}, {0, 3, 7, 0}, {0, 3, 8, 0}, {0, 3, 9, 0}, {0, 3, 10, 0}, {0, 3, 11, 0}, {0, 3, 12, 0}}}, {{{15, 18, 5, 2, 2}, {14, 18, 7, 0}, {15, 18, 7, 0}, {16, 18, 7, 0}, {16, 18, 8, 0}, {16, 18, 9, 1}, {16, 18, 10, 0}, {17, 17, 10, 0}, {18, 16, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{16, 18, 5, 2, 2}, {16, 18, 8, 0}, {16, 18, 9, 1}, {16, 18, 10, 0}, {17, 17, 10, 0}, {18, 16, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{19, 18, 5, 2, 2}, {18, 18, 6, 0}, {18, 18, 7, 0}, {19, 18, 7, 0}, {20, 18, 7, 0}, {20, 18, 8, 0}, {20, 18, 9, 1}, {20, 18, 10, 0}, {20, 18, 11, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{20, 18, 5, 2, 2}, {21, 18, 7, 0}, {20, 18, 7, 0}, {20, 18, 8, 0}, {20, 18, 9, 1}, {20, 18, 10, 0}, {20, 18, 11, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{21, 15, 6, 2, 3}, {20, 15, 5, 0}, {19, 15, 5, 0}, {19, 15, 6, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{21, 15, 7, 2, 3}, {20, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{22, 15, 10, 2, 3}, {22, 15, 12, 0}, {21, 15, 12, 1}, {20, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{22, 18, 11, 2, 3}, {24, 18, 12, 0}, {24, 18, 13, 0}, {23, 18, 13, 0}, {22, 18, 14, 0}, {21, 18, 14, 1}, {20, 18, 14, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{11, 22, 11, 2, 2}, {12, 22, 13, 0}, {13, 22, 13, 0}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{13, 22, 11, 2, 2}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{15, 22, 11, 2, 2}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{22, 18, 12, 2, 3}, {22, 18, 14, 0}, {21, 18, 14, 1}, {20, 18, 14, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{12, 18, 14, 2, 0}, {11, 18, 13, 0}, {11, 18, 12, 0}, {12, 18, 12, 0}, {13, 18, 11, 0}, {14, 18, 11, 1}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{13, 18, 14, 2, 0}, {11, 18, 13, 0}, {11, 18, 12, 0}, {12, 18, 12, 0}, {13, 18, 11, 0}, {14, 18, 11, 1}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{20, 22, 14, 2, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{22, 22, 14, 2, 0}, {23, 22, 12, 0}, {22, 22, 12, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{24, 22, 14, 2, 0}, {23, 22, 12, 0}, {22, 22, 12, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{22, 15, 15, 2, 3}, {22, 15, 13, 0}, {21, 15, 13, 1}, {20, 15, 13, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{13, 15, 17, 2, 1}, {14, 15, 16, 1}, {14, 15, 15, 0}, {14, 15, 14, 0}, {14, 15, 13, 0}, {14, 15, 12, 0}, {14, 15, 11, 0}, {14, 15, 10, 0}, {14, 15, 9, 1}, {14, 15, 8, 0}, {14, 15, 7, 0}, {15, 15, 7, 0}, {16, 15, 7, 0}, {17, 15, 7, 0}, {18, 15, 7, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{22, 15, 17, 2, 2}, {19, 15, 16, 1}, {19, 15, 15, 0}, {18, 15, 14, 0}, {17, 14, 14, 0}, {16, 13, 14, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{23, 15, 17, 2, 2}, {24, 15, 19, 0}, {23, 15, 19, 0}, {22, 15, 19, 0}, {21, 15, 19, 0}, {20, 15, 18, 0}, {19, 15, 17, 0}, {19, 15, 16, 1}, {19, 15, 15, 0}, {18, 15, 14, 0}, {17, 14, 14, 0}, {16, 13, 14, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{13, 15, 20, 2, 1}, {14, 15, 18, 0}, {14, 15, 17, 0}, {14, 15, 16, 1}, {14, 15, 15, 0}, {14, 15, 14, 0}, {14, 15, 13, 0}, {14, 15, 12, 0}, {14, 15, 11, 0}, {14, 15, 10, 0}, {14, 15, 9, 1}, {14, 15, 8, 0}, {14, 15, 7, 0}, {15, 15, 7, 0}, {16, 15, 7, 0}, {17, 15, 7, 0}, {18, 15, 7, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{16, 18, 20, 2, 1}, {16, 18, 18, 0}, {16, 18, 17, 0}, {16, 18, 16, 0}, {16, 18, 15, 1}, {17, 18, 14, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{20, 18, 20, 2, 3}, {20, 18, 18, 0}, {20, 18, 17, 0}, {20, 18, 16, 1}, {20, 18, 15, 0}, {19, 18, 14, 0}, {18, 18, 14, 0}, {17, 18, 14, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{24, 8, 13, 0}, {25, 7, 13, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {31, 3, 20, 0}, {32, 3, 21, 0}, {33, 3, 22, 0}, {33, 3, 23, 0}, {33, 3, 24, 0}, {32, 3, 24, 0}, {31, 3, 24, 0}, {30, 3, 24, 0}, {29, 3, 24, 0}, {28, 3, 24, 0}, {27, 3, 24, 0}, {26, 3, 24, 0}, {25, 3, 24, 0}, {24, 3, 24, 0}, {23, 3, 24, 0}, {22, 3, 24, 0}, {21, 3, 24, 0}, {20, 3, 24, 0}, {19, 3, 24, 0}, {18, 3, 24, 0}, {17, 3, 24, 0}, {16, 3, 24, 0}, {15, 3, 24, 0}, {14, 3, 24, 0}, {13, 3, 24, 0}, {12, 3, 24, 0}, {11, 3, 23, 0}, {10, 3, 22, 0}, {9, 3, 22, 0}, {8, 3, 22, 0}, {7, 3, 22, 0}, {6, 3, 22, 0}, {5, 3, 22, 0}, {4, 3, 22, 0}, {3, 3, 22, 0}, {2, 3, 22, 0}, {1, 3, 22, 0}, {0, 3, 22, 0}, {0, 3, 21, 0}, {0, 3, 20, 0}, {0, 3, 19, 0}, {0, 3, 18, 0}, {0, 3, 17, 0}, {0, 3, 16, 0}, {0, 3, 15, 0}, {0, 3, 14, 0}, {0, 3, 13, 0}, {0, 3, 12, 0}}}, {{{15, 18, 5, 2, 2}, {14, 18, 7, 0}, {15, 18, 7, 0}, {16, 18, 7, 0}, {16, 18, 8, 0}, {16, 18, 9, 1}, {16, 18, 10, 0}, {17, 17, 10, 0}, {18, 16, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{16, 18, 5, 2, 2}, {16, 18, 8, 0}, {16, 18, 9, 1}, {16, 18, 10, 0}, {17, 17, 10, 0}, {18, 16, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{19, 18, 5, 2, 2}, {18, 18, 6, 0}, {18, 18, 7, 0}, {19, 18, 7, 0}, {20, 18, 7, 0}, {20, 18, 8, 0}, {20, 18, 9, 1}, {20, 18, 10, 0}, {20, 18, 11, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{20, 18, 5, 2, 2}, {21, 18, 7, 0}, {20, 18, 7, 0}, {20, 18, 8, 0}, {20, 18, 9, 1}, {20, 18, 10, 0}, {20, 18, 11, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{21, 15, 6, 2, 3}, {20, 15, 5, 0}, {19, 15, 5, 0}, {19, 15, 6, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{21, 15, 7, 2, 3}, {20, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{22, 15, 10, 2, 3}, {22, 15, 12, 0}, {21, 15, 12, 1}, {20, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{22, 18, 11, 2, 3}, {24, 18, 12, 0}, {24, 18, 13, 0}, {23, 18, 13, 0}, {22, 18, 14, 0}, {21, 18, 14, 1}, {20, 18, 14, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{11, 22, 11, 2, 2}, {12, 22, 13, 0}, {13, 22, 13, 0}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{13, 22, 11, 2, 2}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{15, 22, 11, 2, 2}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{22, 18, 12, 2, 3}, {22, 18, 14, 0}, {21, 18, 14, 1}, {20, 18, 14, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{12, 18, 14, 2, 0}, {11, 18, 13, 0}, {11, 18, 12, 0}, {12, 18, 12, 0}, {13, 18, 11, 0}, {14, 18, 11, 1}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{13, 18, 14, 2, 0}, {11, 18, 13, 0}, {11, 18, 12, 0}, {12, 18, 12, 0}, {13, 18, 11, 0}, {14, 18, 11, 1}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{20, 22, 14, 2, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{22, 22, 14, 2, 0}, {23, 22, 12, 0}, {22, 22, 12, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{24, 22, 14, 2, 0}, {23, 22, 12, 0}, {22, 22, 12, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{22, 15, 15, 2, 3}, {22, 15, 13, 0}, {21, 15, 13, 1}, {20, 15, 13, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{13, 15, 17, 2, 1}, {14, 15, 16, 1}, {14, 15, 15, 0}, {14, 15, 14, 0}, {14, 15, 13, 0}, {14, 15, 12, 0}, {14, 15, 11, 0}, {14, 15, 10, 0}, {14, 15, 9, 1}, {14, 15, 8, 0}, {14, 15, 7, 0}, {15, 15, 7, 0}, {16, 15, 7, 0}, {17, 15, 7, 0}, {18, 15, 7, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{22, 15, 17, 2, 2}, {19, 15, 16, 1}, {19, 15, 15, 0}, {18, 15, 14, 0}, {17, 14, 14, 0}, {16, 13, 14, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{23, 15, 17, 2, 2}, {24, 15, 19, 0}, {23, 15, 19, 0}, {22, 15, 19, 0}, {21, 15, 19, 0}, {20, 15, 18, 0}, {19, 15, 17, 0}, {19, 15, 16, 1}, {19, 15, 15, 0}, {18, 15, 14, 0}, {17, 14, 14, 0}, {16, 13, 14, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{13, 15, 20, 2, 1}, {14, 15, 18, 0}, {14, 15, 17, 0}, {14, 15, 16, 1}, {14, 15, 15, 0}, {14, 15, 14, 0}, {14, 15, 13, 0}, {14, 15, 12, 0}, {14, 15, 11, 0}, {14, 15, 10, 0}, {14, 15, 9, 1}, {14, 15, 8, 0}, {14, 15, 7, 0}, {15, 15, 7, 0}, {16, 15, 7, 0}, {17, 15, 7, 0}, {18, 15, 7, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{16, 18, 20, 2, 1}, {16, 18, 18, 0}, {16, 18, 17, 0}, {16, 18, 16, 0}, {16, 18, 15, 1}, {17, 18, 14, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{20, 18, 20, 2, 3}, {20, 18, 18, 0}, {20, 18, 17, 0}, {20, 18, 16, 1}, {20, 18, 15, 0}, {19, 18, 14, 0}, {18, 18, 14, 0}, {17, 18, 14, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{24, 3, 14, 0}, {24, 3, 15, 0}, {24, 3, 16, 0}, {24, 3, 17, 0}, {24, 3, 18, 0}, {24, 3, 19, 0}, {25, 3, 19, 0}, {26, 3, 19, 0}, {27, 3, 19, 0}, {28, 3, 19, 0}, {29, 3, 19, 0}, {30, 3, 19, 0}, {31, 3, 20, 0}, {32, 3, 21, 0}, {33, 3, 22, 0}, {33, 3, 23, 0}, {33, 3, 24, 0}, {32, 3, 24, 0}, {31, 3, 24, 0}, {30, 3, 24, 0}, {29, 3, 24, 0}, {28, 3, 24, 0}, {27, 3, 24, 0}, {26, 3, 24, 0}, {25, 3, 24, 0}, {24, 3, 24, 0}, {23, 3, 24, 0}, {22, 3, 24, 0}, {21, 3, 24, 0}, {20, 3, 24, 0}, {19, 3, 24, 0}, {18, 3, 24, 0}, {17, 3, 24, 0}, {16, 3, 24, 0}, {15, 3, 24, 0}, {14, 3, 24, 0}, {13, 3, 24, 0}, {12, 3, 24, 0}, {11, 3, 23, 0}, {10, 3, 22, 0}, {9, 3, 22, 0}, {8, 3, 22, 0}, {7, 3, 22, 0}, {6, 3, 22, 0}, {5, 3, 22, 0}, {4, 3, 22, 0}, {3, 3, 22, 0}, {2, 3, 22, 0}, {1, 3, 22, 0}, {0, 3, 22, 0}, {0, 3, 21, 0}, {0, 3, 20, 0}, {0, 3, 19, 0}, {0, 3, 18, 0}, {0, 3, 17, 0}, {0, 3, 16, 0}, {0, 3, 15, 0}, {0, 3, 14, 0}, {0, 3, 13, 0}, {0, 3, 12, 0}}}}, ["mg_villages/schems/lumberjack_3"] = {{{{3, 2, 5, 2, 3}, {4, 2, 4, 0}, {5, 2, 4, 0}, {6, 2, 4, 1}, {7, 2, 4, 0}}, {{3, 3, 5, 2, 3}, {4, 2, 4, 0}, {5, 2, 4, 0}, {6, 2, 4, 1}, {7, 2, 4, 0}}, {{3, 4, 5, 2, 3}, {4, 2, 4, 0}, {5, 2, 4, 0}, {6, 2, 4, 1}, {7, 2, 4, 0}}, {{7, 2, 4, 0}, {7, 2, 3, 0}, {8, 1, 2, 0}, {8, 1, 1, 0}, {7, 1, 0, 0}, {6, 1, 0, 0}}}}, ["mg_villages/schems/forge_1_0|WORKPLACE"] = {{{{4, 2, 5, 2, 0}, {3, 2, 5, 0}, {2, 2, 5, 0}, {1, 2, 5, 1}, {0, 2, 5, 0}}, {}}}, ["mg_villages/schems/default_town_house_large_2"] = {{{{9, 12, 7, 2, 0}, {10, 12, 6, 0}, {10, 12, 5, 0}, {11, 12, 4, 0}, {12, 12, 4, 1}, {13, 12, 4, 0}, {13, 11, 5, 0}, {13, 10, 6, 0}, {13, 9, 7, 0}, {13, 8, 8, 0}, {14, 7, 9, 0}, {15, 7, 9, 0}, {16, 7, 9, 0}, {16, 7, 8, 0}, {16, 7, 7, 0}, {16, 7, 6, 0}, {16, 7, 5, 0}, {15, 7, 4, 1}, {15, 7, 3, 0}}, {{11, 12, 7, 2, 0}, {10, 12, 6, 0}, {10, 12, 5, 0}, {11, 12, 4, 0}, {12, 12, 4, 1}, {13, 12, 4, 0}, {13, 11, 5, 0}, {13, 10, 6, 0}, {13, 9, 7, 0}, {13, 8, 8, 0}, {14, 7, 9, 0}, {15, 7, 9, 0}, {16, 7, 9, 0}, {16, 7, 8, 0}, {16, 7, 7, 0}, {16, 7, 6, 0}, {16, 7, 5, 0}, {15, 7, 4, 1}, {15, 7, 3, 0}}, {{19, 12, 9, 2, 0}, {18, 12, 8, 0}, {18, 12, 7, 0}, {17, 12, 6, 1}, {16, 12, 6, 0}, {15, 12, 5, 0}, {14, 11, 5, 0}, {14, 10, 6, 0}, {14, 9, 7, 0}, {14, 8, 8, 0}, {14, 7, 9, 0}, {15, 7, 9, 0}, {16, 7, 9, 0}, {16, 7, 8, 0}, {16, 7, 7, 0}, {16, 7, 6, 0}, {16, 7, 5, 0}, {15, 7, 4, 1}, {15, 7, 3, 0}}, {{20, 12, 9, 2, 0}, {21, 12, 8, 0}, {21, 12, 7, 0}, {20, 12, 6, 0}, {19, 12, 6, 0}, {18, 12, 6, 0}, {17, 12, 6, 1}, {16, 12, 6, 0}, {15, 12, 5, 0}, {14, 11, 5, 0}, {14, 10, 6, 0}, {14, 9, 7, 0}, {14, 8, 8, 0}, {14, 7, 9, 0}, {15, 7, 9, 0}, {16, 7, 9, 0}, {16, 7, 8, 0}, {16, 7, 7, 0}, {16, 7, 6, 0}, {16, 7, 5, 0}, {15, 7, 4, 1}, {15, 7, 3, 0}}, {{12, 12, 10, 2, 1}, {12, 13, 10, 0}, {12, 13, 11, 0}, {12, 12, 12, 0}, {13, 12, 12, 1}, {14, 12, 12, 0}, {15, 12, 13, 0}, {16, 11, 13, 0}, {16, 10, 12, 0}, {16, 9, 11, 0}, {16, 8, 10, 0}, {16, 7, 9, 0}, {16, 7, 8, 0}, {16, 7, 7, 0}, {16, 7, 6, 0}, {16, 7, 5, 0}, {15, 7, 4, 1}, {15, 7, 3, 0}}, {{12, 12, 11, 2, 1}, {13, 12, 12, 1}, {14, 12, 12, 0}, {15, 12, 13, 0}, {16, 11, 13, 0}, {16, 10, 12, 0}, {16, 9, 11, 0}, {16, 8, 10, 0}, {16, 7, 9, 0}, {16, 7, 8, 0}, {16, 7, 7, 0}, {16, 7, 6, 0}, {16, 7, 5, 0}, {15, 7, 4, 1}, {15, 7, 3, 0}}, {{20, 12, 11, 2, 3}, {19, 12, 13, 0}, {19, 12, 14, 0}, {18, 12, 14, 1}, {17, 12, 14, 0}, {17, 11, 13, 0}, {17, 10, 12, 0}, {17, 9, 11, 0}, {17, 8, 10, 0}, {17, 7, 9, 0}, {16, 7, 8, 0}, {16, 7, 7, 0}, {16, 7, 6, 0}, {16, 7, 5, 0}, {15, 7, 4, 1}, {15, 7, 3, 0}}, {{21, 12, 13, 2, 2}, {19, 12, 14, 0}, {18, 12, 14, 1}, {17, 12, 14, 0}, {17, 11, 13, 0}, {17, 10, 12, 0}, {17, 9, 11, 0}, {17, 8, 10, 0}, {17, 7, 9, 0}, {16, 7, 8, 0}, {16, 7, 7, 0}, {16, 7, 6, 0}, {16, 7, 5, 0}, {15, 7, 4, 1}, {15, 7, 3, 0}}, {{15, 7, 3, 0}, {15, 7, 2, 0}, {15, 6, 1, 0}, {15, 6, 0, 0}}}, {{{9, 12, 7, 2, 0}, {10, 12, 6, 0}, {10, 12, 5, 0}, {11, 12, 4, 0}, {12, 12, 4, 1}, {13, 12, 4, 0}, {13, 11, 5, 0}, {13, 10, 6, 0}, {13, 9, 7, 0}, {13, 8, 8, 0}, {13, 7, 9, 0}, {14, 7, 10, 0}, {14, 7, 11, 0}, {14, 7, 12, 0}, {14, 7, 13, 0}, {15, 7, 14, 1}, {15, 7, 15, 0}}, {{11, 12, 7, 2, 0}, {10, 12, 6, 0}, {10, 12, 5, 0}, {11, 12, 4, 0}, {12, 12, 4, 1}, {13, 12, 4, 0}, {13, 11, 5, 0}, {13, 10, 6, 0}, {13, 9, 7, 0}, {13, 8, 8, 0}, {13, 7, 9, 0}, {14, 7, 10, 0}, {14, 7, 11, 0}, {14, 7, 12, 0}, {14, 7, 13, 0}, {15, 7, 14, 1}, {15, 7, 15, 0}}, {{19, 12, 9, 2, 0}, {18, 12, 8, 0}, {18, 12, 7, 0}, {17, 12, 6, 1}, {16, 12, 6, 0}, {15, 12, 5, 0}, {14, 11, 5, 0}, {14, 10, 6, 0}, {14, 9, 7, 0}, {14, 8, 8, 0}, {14, 7, 9, 0}, {14, 7, 10, 0}, {14, 7, 11, 0}, {14, 7, 12, 0}, {14, 7, 13, 0}, {15, 7, 14, 1}, {15, 7, 15, 0}}, {{20, 12, 9, 2, 0}, {21, 12, 8, 0}, {21, 12, 7, 0}, {20, 12, 6, 0}, {19, 12, 6, 0}, {18, 12, 6, 0}, {17, 12, 6, 1}, {16, 12, 6, 0}, {15, 12, 5, 0}, {14, 11, 5, 0}, {14, 10, 6, 0}, {14, 9, 7, 0}, {14, 8, 8, 0}, {14, 7, 9, 0}, {14, 7, 10, 0}, {14, 7, 11, 0}, {14, 7, 12, 0}, {14, 7, 13, 0}, {15, 7, 14, 1}, {15, 7, 15, 0}}, {{12, 12, 10, 2, 1}, {12, 13, 10, 0}, {12, 13, 11, 0}, {12, 12, 12, 0}, {13, 12, 12, 1}, {14, 12, 12, 0}, {15, 12, 13, 0}, {16, 11, 13, 0}, {16, 10, 12, 0}, {16, 9, 11, 0}, {16, 8, 10, 0}, {16, 7, 9, 0}, {15, 7, 9, 0}, {14, 7, 9, 0}, {14, 7, 10, 0}, {14, 7, 11, 0}, {14, 7, 12, 0}, {14, 7, 13, 0}, {15, 7, 14, 1}, {15, 7, 15, 0}}, {{12, 12, 11, 2, 1}, {13, 12, 12, 1}, {14, 12, 12, 0}, {15, 12, 13, 0}, {16, 11, 13, 0}, {16, 10, 12, 0}, {16, 9, 11, 0}, {16, 8, 10, 0}, {16, 7, 9, 0}, {15, 7, 9, 0}, {14, 7, 9, 0}, {14, 7, 10, 0}, {14, 7, 11, 0}, {14, 7, 12, 0}, {14, 7, 13, 0}, {15, 7, 14, 1}, {15, 7, 15, 0}}, {{20, 12, 11, 2, 3}, {19, 12, 13, 0}, {19, 12, 14, 0}, {18, 12, 14, 1}, {17, 12, 14, 0}, {17, 11, 13, 0}, {17, 10, 12, 0}, {17, 9, 11, 0}, {17, 8, 10, 0}, {16, 7, 9, 0}, {15, 7, 9, 0}, {14, 7, 9, 0}, {14, 7, 10, 0}, {14, 7, 11, 0}, {14, 7, 12, 0}, {14, 7, 13, 0}, {15, 7, 14, 1}, {15, 7, 15, 0}}, {{21, 12, 13, 2, 2}, {19, 12, 14, 0}, {18, 12, 14, 1}, {17, 12, 14, 0}, {17, 11, 13, 0}, {17, 10, 12, 0}, {17, 9, 11, 0}, {17, 8, 10, 0}, {16, 7, 9, 0}, {15, 7, 9, 0}, {14, 7, 9, 0}, {14, 7, 10, 0}, {14, 7, 11, 0}, {14, 7, 12, 0}, {14, 7, 13, 0}, {15, 7, 14, 1}, {15, 7, 15, 0}}, {{15, 7, 15, 0}, {15, 7, 16, 0}, {15, 6, 17, 0}, {16, 6, 17, 0}, {17, 6, 17, 0}, {18, 6, 16, 0}, {19, 6, 16, 0}, {20, 6, 16, 0}, {21, 6, 16, 0}, {22, 6, 16, 0}, {23, 6, 16, 0}, {24, 6, 16, 0}, {25, 6, 16, 0}, {26, 6, 16, 0}, {27, 7, 16, 0}, {28, 6, 16, 0}, {29, 6, 16, 0}, {30, 6, 16, 0}, {30, 6, 15, 0}, {30, 6, 14, 0}, {30, 6, 13, 0}, {30, 6, 12, 0}, {30, 6, 11, 0}, {30, 6, 10, 0}, {30, 6, 9, 0}, {30, 6, 8, 0}, {29, 6, 7, 0}, {28, 6, 6, 0}, {28, 6, 5, 0}, {28, 6, 4, 0}, {28, 6, 3, 0}, {28, 6, 2, 0}, {27, 6, 1, 0}, {26, 6, 0, 0}, {25, 6, 0, 0}, {24, 6, 0, 0}, {23, 6, 0, 0}, {22, 6, 0, 0}, {21, 6, 0, 0}, {20, 6, 0, 0}, {19, 6, 0, 0}, {18, 6, 0, 0}, {17, 6, 0, 0}, {16, 6, 0, 0}, {15, 6, 0, 0}}}}, ["village_towntest/schems/towntest_kddekadenz_castle_3_90|WORKPLACE"] = {{{{8, 13, 4, 2, 0}, {7, 13, 5, 0}, {6, 9, 5, 0}, {7, 5, 5, 0}, {7, 5, 6, 0}, {7, 5, 7, 0}, {7, 5, 8, 0}, {7, 5, 9, 0}, {7, 5, 10, 0}, {7, 5, 11, 0}, {7, 5, 12, 0}, {7, 5, 13, 0}, {7, 5, 14, 0}, {7, 5, 15, 0}, {7, 5, 16, 0}, {8, 5, 16, 1}, {9, 5, 16, 0}, {10, 5, 15, 0}, {11, 5, 14, 0}, {12, 5, 13, 0}, {13, 5, 12, 0}, {14, 5, 11, 0}, {15, 5, 10, 0}, {16, 5, 9, 0}, {17, 5, 9, 0}, {18, 5, 9, 0}, {19, 5, 9, 0}, {20, 5, 9, 0}, {20, 5, 8, 0}, {20, 5, 7, 0}, {19, 5, 7, 0}, {18, 5, 7, 0}, {18, 5, 6, 1}, {18, 5, 5, 0}}, {{28, 13, 6, 2, 1}, {29, 13, 5, 0}, {30, 9, 5, 0}, {31, 5, 5, 0}, {31, 5, 6, 0}, {31, 5, 7, 0}, {31, 5, 8, 0}, {31, 5, 9, 0}, {31, 5, 10, 0}, {31, 5, 11, 0}, {31, 5, 12, 0}, {31, 5, 13, 0}, {31, 5, 14, 0}, {31, 5, 15, 0}, {30, 5, 15, 1}, {29, 5, 15, 0}, {28, 5, 14, 0}, {27, 5, 13, 0}, {26, 5, 12, 0}, {25, 5, 11, 0}, {24, 5, 10, 0}, {23, 5, 9, 0}, {22, 5, 9, 0}, {21, 5, 9, 0}, {20, 5, 9, 0}, {20, 5, 8, 0}, {20, 5, 7, 0}, {19, 5, 7, 0}, {18, 5, 7, 0}, {18, 5, 6, 1}, {18, 5, 5, 0}}, {{13, 8, 7, 2, 0}, {12, 8, 7, 0}, {11, 8, 7, 0}, {10, 9, 7, 0}, {9, 9, 7, 0}, {9, 9, 6, 0}, {8, 9, 5, 0}, {7, 5, 5, 0}, {7, 5, 6, 0}, {7, 5, 7, 0}, {7, 5, 8, 0}, {7, 5, 9, 0}, {7, 5, 10, 0}, {7, 5, 11, 0}, {7, 5, 12, 0}, {7, 5, 13, 0}, {7, 5, 14, 0}, {7, 5, 15, 0}, {7, 5, 16, 0}, {8, 5, 16, 1}, {9, 5, 16, 0}, {10, 5, 15, 0}, {11, 5, 14, 0}, {12, 5, 13, 0}, {13, 5, 12, 0}, {14, 5, 11, 0}, {15, 5, 10, 0}, {16, 5, 9, 0}, {17, 5, 9, 0}, {18, 5, 9, 0}, {19, 5, 9, 0}, {20, 5, 9, 0}, {20, 5, 8, 0}, {20, 5, 7, 0}, {19, 5, 7, 0}, {18, 5, 7, 0}, {18, 5, 6, 1}, {18, 5, 5, 0}}, {{22, 8, 7, 2, 0}, {23, 8, 7, 0}, {24, 8, 7, 0}, {25, 8, 7, 0}, {26, 8, 7, 0}, {27, 8, 7, 0}, {28, 9, 7, 0}, {29, 9, 7, 0}, {29, 9, 6, 0}, {30, 9, 5, 0}, {31, 5, 5, 0}, {31, 5, 6, 0}, {31, 5, 7, 0}, {31, 5, 8, 0}, {31, 5, 9, 0}, {31, 5, 10, 0}, {31, 5, 11, 0}, {31, 5, 12, 0}, {31, 5, 13, 0}, {31, 5, 14, 0}, {31, 5, 15, 0}, {30, 5, 15, 1}, {29, 5, 15, 0}, {28, 5, 14, 0}, {27, 5, 13, 0}, {26, 5, 12, 0}, {25, 5, 11, 0}, {24, 5, 10, 0}, {23, 5, 9, 0}, {22, 5, 9, 0}, {21, 5, 9, 0}, {20, 5, 9, 0}, {20, 5, 8, 0}, {20, 5, 7, 0}, {19, 5, 7, 0}, {18, 5, 7, 0}, {18, 5, 6, 1}, {18, 5, 5, 0}}, {{17, 5, 9, 2, 3}, {18, 5, 9, 0}, {19, 5, 9, 0}, {20, 5, 9, 0}, {20, 5, 8, 0}, {20, 5, 7, 0}, {19, 5, 7, 0}, {18, 5, 7, 0}, {18, 5, 6, 1}, {18, 5, 5, 0}}, {{22, 5, 16, 2, 0}, {22, 5, 15, 0}, {22, 5, 14, 0}, {22, 5, 13, 0}, {21, 5, 12, 0}, {20, 5, 11, 0}, {20, 5, 10, 0}, {20, 5, 9, 0}, {20, 5, 8, 0}, {20, 5, 7, 0}, {19, 5, 7, 0}, {18, 5, 7, 0}, {18, 5, 6, 1}, {18, 5, 5, 0}}, {{34, 13, 25, 2, 3}, {33, 13, 26, 0}, {32, 9, 26, 0}, {31, 5, 26, 0}, {31, 5, 25, 0}, {31, 5, 24, 0}, {31, 5, 23, 0}, {31, 5, 22, 0}, {31, 5, 21, 0}, {31, 5, 20, 0}, {31, 5, 19, 0}, {31, 5, 18, 0}, {31, 5, 17, 0}, {31, 5, 16, 0}, {31, 5, 15, 0}, {30, 5, 15, 1}, {29, 5, 15, 0}, {28, 5, 14, 0}, {27, 5, 13, 0}, {26, 5, 12, 0}, {25, 5, 11, 0}, {24, 5, 10, 0}, {23, 5, 9, 0}, {22, 5, 9, 0}, {21, 5, 9, 0}, {20, 5, 9, 0}, {20, 5, 8, 0}, {20, 5, 7, 0}, {19, 5, 7, 0}, {18, 5, 7, 0}, {18, 5, 6, 1}, {18, 5, 5, 0}}, {{6, 13, 27, 2, 2}, {7, 13, 26, 0}, {8, 9, 26, 0}, {7, 5, 26, 0}, {7, 5, 25, 0}, {7, 5, 24, 0}, {7, 5, 23, 0}, {7, 5, 22, 0}, {7, 5, 21, 0}, {7, 5, 20, 0}, {7, 5, 19, 0}, {7, 5, 18, 0}, {7, 5, 17, 0}, {7, 5, 16, 0}, {8, 5, 16, 1}, {9, 5, 16, 0}, {10, 5, 15, 0}, {11, 5, 14, 0}, {12, 5, 13, 0}, {13, 5, 12, 0}, {14, 5, 11, 0}, {15, 5, 10, 0}, {16, 5, 9, 0}, {17, 5, 9, 0}, {18, 5, 9, 0}, {19, 5, 9, 0}, {20, 5, 9, 0}, {20, 5, 8, 0}, {20, 5, 7, 0}, {19, 5, 7, 0}, {18, 5, 7, 0}, {18, 5, 6, 1}, {18, 5, 5, 0}}, {{18, 5, 5, 0}, {19, 5, 4, 0}, {19, 5, 3, 0}, {19, 5, 2, 0}, {19, 4, 1, 0}, {19, 4, 0, 0}}}}, ["mg_villages/schems/lumberjack_2"] = {{{{5, 5, 5, 2, 2}, {6, 2, 6, 0}, {5, 2, 6, 0}, {5, 2, 5, 1}, {5, 2, 4, 0}}, {{8, 5, 7, 2, 1}, {6, 2, 6, 0}, {5, 2, 6, 0}, {5, 2, 5, 1}, {5, 2, 4, 0}}, {{3, 5, 8, 2, 3}, {6, 5, 7, 0}, {6, 2, 6, 0}, {5, 2, 6, 0}, {5, 2, 5, 1}, {5, 2, 4, 0}}, {{6, 5, 10, 2, 0}, {5, 5, 8, 0}, {6, 5, 7, 0}, {6, 2, 6, 0}, {5, 2, 6, 0}, {5, 2, 5, 1}, {5, 2, 4, 0}}, {{5, 2, 4, 0}, {5, 1, 3, 0}, {5, 1, 2, 0}, {5, 1, 1, 0}, {5, 1, 0, 0}}}}, ["mg_villages/schems/taverne_1"] = {{{{13, 12, 7, 2, 1}, {11, 12, 8, 0}, {11, 12, 9, 0}, {11, 12, 10, 0}, {11, 12, 11, 0}, {11, 12, 12, 1}, {11, 12, 13, 0}, {10, 12, 13, 1}, {9, 11, 13, 0}, {8, 10, 13, 0}, {7, 9, 13, 0}, {7, 9, 12, 0}, {7, 9, 11, 0}, {8, 9, 11, 0}, {9, 9, 11, 0}, {10, 9, 11, 0}, {11, 9, 11, 0}, {11, 9, 12, 0}, {11, 9, 13, 0}, {10, 8, 13, 0}, {9, 7, 13, 0}, {8, 6, 13, 0}, {8, 6, 12, 0}, {9, 6, 12, 0}, {10, 6, 12, 0}, {11, 6, 12, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {8, 3, 13, 0}, {7, 3, 13, 0}, {6, 3, 13, 1}, {5, 3, 13, 0}}, {{8, 6, 8, 2, 1}, {6, 6, 9, 0}, {6, 6, 10, 0}, {6, 6, 11, 1}, {6, 6, 12, 0}, {7, 6, 12, 0}, {8, 6, 12, 0}, {9, 6, 12, 0}, {10, 6, 12, 0}, {11, 6, 12, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {8, 3, 13, 0}, {7, 3, 13, 0}, {6, 3, 13, 1}, {5, 3, 13, 0}}, {{10, 6, 8, 2, 3}, {12, 6, 9, 0}, {12, 6, 10, 0}, {12, 6, 11, 1}, {12, 6, 12, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {8, 3, 13, 0}, {7, 3, 13, 0}, {6, 3, 13, 1}, {5, 3, 13, 0}}, {{14, 6, 8, 2, 2}, {15, 6, 10, 0}, {15, 6, 11, 1}, {15, 6, 12, 0}, {14, 6, 12, 0}, {13, 6, 12, 0}, {12, 6, 13, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {8, 3, 13, 0}, {7, 3, 13, 0}, {6, 3, 13, 1}, {5, 3, 13, 0}}, {{13, 12, 9, 2, 1}, {11, 12, 10, 0}, {11, 12, 11, 0}, {11, 12, 12, 1}, {11, 12, 13, 0}, {10, 12, 13, 1}, {9, 11, 13, 0}, {8, 10, 13, 0}, {7, 9, 13, 0}, {7, 9, 12, 0}, {7, 9, 11, 0}, {8, 9, 11, 0}, {9, 9, 11, 0}, {10, 9, 11, 0}, {11, 9, 11, 0}, {11, 9, 12, 0}, {11, 9, 13, 0}, {10, 8, 13, 0}, {9, 7, 13, 0}, {8, 6, 13, 0}, {8, 6, 12, 0}, {9, 6, 12, 0}, {10, 6, 12, 0}, {11, 6, 12, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {8, 3, 13, 0}, {7, 3, 13, 0}, {6, 3, 13, 1}, {5, 3, 13, 0}}, {{8, 6, 10, 2, 1}, {6, 6, 11, 1}, {6, 6, 12, 0}, {7, 6, 12, 0}, {8, 6, 12, 0}, {9, 6, 12, 0}, {10, 6, 12, 0}, {11, 6, 12, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {8, 3, 13, 0}, {7, 3, 13, 0}, {6, 3, 13, 1}, {5, 3, 13, 0}}, {{10, 6, 10, 2, 3}, {12, 6, 11, 1}, {12, 6, 12, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {8, 3, 13, 0}, {7, 3, 13, 0}, {6, 3, 13, 1}, {5, 3, 13, 0}}, {{13, 12, 11, 2, 1}, {11, 12, 12, 1}, {11, 12, 13, 0}, {10, 12, 13, 1}, {9, 11, 13, 0}, {8, 10, 13, 0}, {7, 9, 13, 0}, {7, 9, 12, 0}, {7, 9, 11, 0}, {8, 9, 11, 0}, {9, 9, 11, 0}, {10, 9, 11, 0}, {11, 9, 11, 0}, {11, 9, 12, 0}, {11, 9, 13, 0}, {10, 8, 13, 0}, {9, 7, 13, 0}, {8, 6, 13, 0}, {8, 6, 12, 0}, {9, 6, 12, 0}, {10, 6, 12, 0}, {11, 6, 12, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {8, 3, 13, 0}, {7, 3, 13, 0}, {6, 3, 13, 1}, {5, 3, 13, 0}}, {{8, 6, 15, 2, 1}, {6, 6, 14, 1}, {6, 6, 13, 0}, {6, 6, 12, 0}, {7, 6, 12, 0}, {8, 6, 12, 0}, {9, 6, 12, 0}, {10, 6, 12, 0}, {11, 6, 12, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {8, 3, 13, 0}, {7, 3, 13, 0}, {6, 3, 13, 1}, {5, 3, 13, 0}}, {{8, 9, 16, 2, 1}, {6, 9, 15, 0}, {7, 9, 15, 0}, {7, 9, 14, 1}, {7, 9, 13, 0}, {7, 9, 12, 0}, {7, 9, 11, 0}, {8, 9, 11, 0}, {9, 9, 11, 0}, {10, 9, 11, 0}, {11, 9, 11, 0}, {11, 9, 12, 0}, {11, 9, 13, 0}, {10, 8, 13, 0}, {9, 7, 13, 0}, {8, 6, 13, 0}, {8, 6, 12, 0}, {9, 6, 12, 0}, {10, 6, 12, 0}, {11, 6, 12, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {8, 3, 13, 0}, {7, 3, 13, 0}, {6, 3, 13, 1}, {5, 3, 13, 0}}, {{10, 9, 16, 2, 0}, {11, 9, 15, 1}, {11, 9, 14, 0}, {11, 9, 13, 0}, {10, 8, 13, 0}, {9, 7, 13, 0}, {8, 6, 13, 0}, {8, 6, 12, 0}, {9, 6, 12, 0}, {10, 6, 12, 0}, {11, 6, 12, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {8, 3, 13, 0}, {7, 3, 13, 0}, {6, 3, 13, 1}, {5, 3, 13, 0}}, {{16, 9, 16, 2, 1}, {14, 9, 15, 0}, {13, 9, 15, 0}, {13, 9, 14, 1}, {12, 9, 13, 0}, {11, 9, 13, 0}, {10, 8, 13, 0}, {9, 7, 13, 0}, {8, 6, 13, 0}, {8, 6, 12, 0}, {9, 6, 12, 0}, {10, 6, 12, 0}, {11, 6, 12, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {8, 3, 13, 0}, {7, 3, 13, 0}, {6, 3, 13, 1}, {5, 3, 13, 0}}, {{8, 6, 17, 2, 1}, {6, 6, 16, 0}, {6, 6, 15, 0}, {6, 6, 14, 1}, {6, 6, 13, 0}, {6, 6, 12, 0}, {7, 6, 12, 0}, {8, 6, 12, 0}, {9, 6, 12, 0}, {10, 6, 12, 0}, {11, 6, 12, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {8, 3, 13, 0}, {7, 3, 13, 0}, {6, 3, 13, 1}, {5, 3, 13, 0}}, {{11, 6, 17, 2, 0}, {12, 6, 15, 0}, {12, 6, 14, 1}, {12, 6, 13, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {8, 3, 13, 0}, {7, 3, 13, 0}, {6, 3, 13, 1}, {5, 3, 13, 0}}, {{13, 6, 17, 2, 0}, {14, 6, 15, 0}, {15, 6, 15, 0}, {15, 6, 14, 1}, {15, 6, 13, 0}, {15, 6, 12, 0}, {14, 6, 12, 0}, {13, 6, 12, 0}, {12, 6, 13, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {8, 3, 13, 0}, {7, 3, 13, 0}, {6, 3, 13, 1}, {5, 3, 13, 0}}, {{15, 6, 17, 2, 0}, {14, 6, 15, 0}, {15, 6, 15, 0}, {15, 6, 14, 1}, {15, 6, 13, 0}, {15, 6, 12, 0}, {14, 6, 12, 0}, {13, 6, 12, 0}, {12, 6, 13, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {8, 3, 13, 0}, {7, 3, 13, 0}, {6, 3, 13, 1}, {5, 3, 13, 0}}, {{8, 9, 17, 2, 1}, {6, 9, 16, 0}, {6, 9, 15, 0}, {7, 9, 15, 0}, {7, 9, 14, 1}, {7, 9, 13, 0}, {7, 9, 12, 0}, {7, 9, 11, 0}, {8, 9, 11, 0}, {9, 9, 11, 0}, {10, 9, 11, 0}, {11, 9, 11, 0}, {11, 9, 12, 0}, {11, 9, 13, 0}, {10, 8, 13, 0}, {9, 7, 13, 0}, {8, 6, 13, 0}, {8, 6, 12, 0}, {9, 6, 12, 0}, {10, 6, 12, 0}, {11, 6, 12, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {8, 3, 13, 0}, {7, 3, 13, 0}, {6, 3, 13, 1}, {5, 3, 13, 0}}, {{16, 9, 17, 2, 1}, {14, 9, 16, 0}, {14, 9, 15, 0}, {13, 9, 15, 0}, {13, 9, 14, 1}, {12, 9, 13, 0}, {11, 9, 13, 0}, {10, 8, 13, 0}, {9, 7, 13, 0}, {8, 6, 13, 0}, {8, 6, 12, 0}, {9, 6, 12, 0}, {10, 6, 12, 0}, {11, 6, 12, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {8, 3, 13, 0}, {7, 3, 13, 0}, {6, 3, 13, 1}, {5, 3, 13, 0}}, {{10, 9, 18, 2, 0}, {11, 9, 16, 0}, {11, 9, 15, 1}, {11, 9, 14, 0}, {11, 9, 13, 0}, {10, 8, 13, 0}, {9, 7, 13, 0}, {8, 6, 13, 0}, {8, 6, 12, 0}, {9, 6, 12, 0}, {10, 6, 12, 0}, {11, 6, 12, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {8, 3, 13, 0}, {7, 3, 13, 0}, {6, 3, 13, 1}, {5, 3, 13, 0}}, {{5, 3, 13, 0}, {4, 3, 13, 0}, {3, 3, 12, 0}, {2, 3, 12, 0}, {1, 3, 11, 0}, {0, 2, 10, 0}}}, {{{13, 12, 7, 2, 1}, {11, 12, 8, 0}, {11, 12, 9, 0}, {11, 12, 10, 0}, {11, 12, 11, 0}, {11, 12, 12, 1}, {11, 12, 13, 0}, {10, 12, 13, 1}, {9, 11, 13, 0}, {8, 10, 13, 0}, {7, 9, 13, 0}, {7, 9, 12, 0}, {7, 9, 11, 0}, {8, 9, 11, 0}, {9, 9, 11, 0}, {10, 9, 11, 0}, {11, 9, 11, 0}, {11, 9, 12, 0}, {11, 9, 13, 0}, {10, 8, 13, 0}, {9, 7, 13, 0}, {8, 6, 13, 0}, {8, 6, 12, 0}, {9, 6, 12, 0}, {10, 6, 12, 0}, {11, 6, 12, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {9, 3, 12, 0}, {10, 3, 12, 0}, {11, 3, 12, 0}, {12, 3, 12, 1}, {13, 3, 13, 0}, {14, 3, 13, 0}, {15, 3, 13, 1}, {16, 3, 13, 0}}, {{8, 6, 8, 2, 1}, {6, 6, 9, 0}, {6, 6, 10, 0}, {6, 6, 11, 1}, {6, 6, 12, 0}, {7, 6, 12, 0}, {8, 6, 12, 0}, {9, 6, 12, 0}, {10, 6, 12, 0}, {11, 6, 12, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {9, 3, 12, 0}, {10, 3, 12, 0}, {11, 3, 12, 0}, {12, 3, 12, 1}, {13, 3, 13, 0}, {14, 3, 13, 0}, {15, 3, 13, 1}, {16, 3, 13, 0}}, {{10, 6, 8, 2, 3}, {12, 6, 9, 0}, {12, 6, 10, 0}, {12, 6, 11, 1}, {12, 6, 12, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {9, 3, 12, 0}, {10, 3, 12, 0}, {11, 3, 12, 0}, {12, 3, 12, 1}, {13, 3, 13, 0}, {14, 3, 13, 0}, {15, 3, 13, 1}, {16, 3, 13, 0}}, {{14, 6, 8, 2, 2}, {15, 6, 10, 0}, {15, 6, 11, 1}, {15, 6, 12, 0}, {14, 6, 12, 0}, {13, 6, 12, 0}, {12, 6, 13, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {9, 3, 12, 0}, {10, 3, 12, 0}, {11, 3, 12, 0}, {12, 3, 12, 1}, {13, 3, 13, 0}, {14, 3, 13, 0}, {15, 3, 13, 1}, {16, 3, 13, 0}}, {{13, 12, 9, 2, 1}, {11, 12, 10, 0}, {11, 12, 11, 0}, {11, 12, 12, 1}, {11, 12, 13, 0}, {10, 12, 13, 1}, {9, 11, 13, 0}, {8, 10, 13, 0}, {7, 9, 13, 0}, {7, 9, 12, 0}, {7, 9, 11, 0}, {8, 9, 11, 0}, {9, 9, 11, 0}, {10, 9, 11, 0}, {11, 9, 11, 0}, {11, 9, 12, 0}, {11, 9, 13, 0}, {10, 8, 13, 0}, {9, 7, 13, 0}, {8, 6, 13, 0}, {8, 6, 12, 0}, {9, 6, 12, 0}, {10, 6, 12, 0}, {11, 6, 12, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {9, 3, 12, 0}, {10, 3, 12, 0}, {11, 3, 12, 0}, {12, 3, 12, 1}, {13, 3, 13, 0}, {14, 3, 13, 0}, {15, 3, 13, 1}, {16, 3, 13, 0}}, {{8, 6, 10, 2, 1}, {6, 6, 11, 1}, {6, 6, 12, 0}, {7, 6, 12, 0}, {8, 6, 12, 0}, {9, 6, 12, 0}, {10, 6, 12, 0}, {11, 6, 12, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {9, 3, 12, 0}, {10, 3, 12, 0}, {11, 3, 12, 0}, {12, 3, 12, 1}, {13, 3, 13, 0}, {14, 3, 13, 0}, {15, 3, 13, 1}, {16, 3, 13, 0}}, {{10, 6, 10, 2, 3}, {12, 6, 11, 1}, {12, 6, 12, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {9, 3, 12, 0}, {10, 3, 12, 0}, {11, 3, 12, 0}, {12, 3, 12, 1}, {13, 3, 13, 0}, {14, 3, 13, 0}, {15, 3, 13, 1}, {16, 3, 13, 0}}, {{13, 12, 11, 2, 1}, {11, 12, 12, 1}, {11, 12, 13, 0}, {10, 12, 13, 1}, {9, 11, 13, 0}, {8, 10, 13, 0}, {7, 9, 13, 0}, {7, 9, 12, 0}, {7, 9, 11, 0}, {8, 9, 11, 0}, {9, 9, 11, 0}, {10, 9, 11, 0}, {11, 9, 11, 0}, {11, 9, 12, 0}, {11, 9, 13, 0}, {10, 8, 13, 0}, {9, 7, 13, 0}, {8, 6, 13, 0}, {8, 6, 12, 0}, {9, 6, 12, 0}, {10, 6, 12, 0}, {11, 6, 12, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {9, 3, 12, 0}, {10, 3, 12, 0}, {11, 3, 12, 0}, {12, 3, 12, 1}, {13, 3, 13, 0}, {14, 3, 13, 0}, {15, 3, 13, 1}, {16, 3, 13, 0}}, {{8, 6, 15, 2, 1}, {6, 6, 14, 1}, {6, 6, 13, 0}, {6, 6, 12, 0}, {7, 6, 12, 0}, {8, 6, 12, 0}, {9, 6, 12, 0}, {10, 6, 12, 0}, {11, 6, 12, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {9, 3, 12, 0}, {10, 3, 12, 0}, {11, 3, 12, 0}, {12, 3, 12, 1}, {13, 3, 13, 0}, {14, 3, 13, 0}, {15, 3, 13, 1}, {16, 3, 13, 0}}, {{8, 9, 16, 2, 1}, {6, 9, 15, 0}, {7, 9, 15, 0}, {7, 9, 14, 1}, {7, 9, 13, 0}, {7, 9, 12, 0}, {7, 9, 11, 0}, {8, 9, 11, 0}, {9, 9, 11, 0}, {10, 9, 11, 0}, {11, 9, 11, 0}, {11, 9, 12, 0}, {11, 9, 13, 0}, {10, 8, 13, 0}, {9, 7, 13, 0}, {8, 6, 13, 0}, {8, 6, 12, 0}, {9, 6, 12, 0}, {10, 6, 12, 0}, {11, 6, 12, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {9, 3, 12, 0}, {10, 3, 12, 0}, {11, 3, 12, 0}, {12, 3, 12, 1}, {13, 3, 13, 0}, {14, 3, 13, 0}, {15, 3, 13, 1}, {16, 3, 13, 0}}, {{10, 9, 16, 2, 0}, {11, 9, 15, 1}, {11, 9, 14, 0}, {11, 9, 13, 0}, {10, 8, 13, 0}, {9, 7, 13, 0}, {8, 6, 13, 0}, {8, 6, 12, 0}, {9, 6, 12, 0}, {10, 6, 12, 0}, {11, 6, 12, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {9, 3, 12, 0}, {10, 3, 12, 0}, {11, 3, 12, 0}, {12, 3, 12, 1}, {13, 3, 13, 0}, {14, 3, 13, 0}, {15, 3, 13, 1}, {16, 3, 13, 0}}, {{16, 9, 16, 2, 1}, {14, 9, 15, 0}, {13, 9, 15, 0}, {13, 9, 14, 1}, {12, 9, 13, 0}, {11, 9, 13, 0}, {10, 8, 13, 0}, {9, 7, 13, 0}, {8, 6, 13, 0}, {8, 6, 12, 0}, {9, 6, 12, 0}, {10, 6, 12, 0}, {11, 6, 12, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {9, 3, 12, 0}, {10, 3, 12, 0}, {11, 3, 12, 0}, {12, 3, 12, 1}, {13, 3, 13, 0}, {14, 3, 13, 0}, {15, 3, 13, 1}, {16, 3, 13, 0}}, {{8, 6, 17, 2, 1}, {6, 6, 16, 0}, {6, 6, 15, 0}, {6, 6, 14, 1}, {6, 6, 13, 0}, {6, 6, 12, 0}, {7, 6, 12, 0}, {8, 6, 12, 0}, {9, 6, 12, 0}, {10, 6, 12, 0}, {11, 6, 12, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {9, 3, 12, 0}, {10, 3, 12, 0}, {11, 3, 12, 0}, {12, 3, 12, 1}, {13, 3, 13, 0}, {14, 3, 13, 0}, {15, 3, 13, 1}, {16, 3, 13, 0}}, {{11, 6, 17, 2, 0}, {12, 6, 15, 0}, {12, 6, 14, 1}, {12, 6, 13, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {9, 3, 12, 0}, {10, 3, 12, 0}, {11, 3, 12, 0}, {12, 3, 12, 1}, {13, 3, 13, 0}, {14, 3, 13, 0}, {15, 3, 13, 1}, {16, 3, 13, 0}}, {{13, 6, 17, 2, 0}, {14, 6, 15, 0}, {15, 6, 15, 0}, {15, 6, 14, 1}, {15, 6, 13, 0}, {15, 6, 12, 0}, {14, 6, 12, 0}, {13, 6, 12, 0}, {12, 6, 13, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {9, 3, 12, 0}, {10, 3, 12, 0}, {11, 3, 12, 0}, {12, 3, 12, 1}, {13, 3, 13, 0}, {14, 3, 13, 0}, {15, 3, 13, 1}, {16, 3, 13, 0}}, {{15, 6, 17, 2, 0}, {14, 6, 15, 0}, {15, 6, 15, 0}, {15, 6, 14, 1}, {15, 6, 13, 0}, {15, 6, 12, 0}, {14, 6, 12, 0}, {13, 6, 12, 0}, {12, 6, 13, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {9, 3, 12, 0}, {10, 3, 12, 0}, {11, 3, 12, 0}, {12, 3, 12, 1}, {13, 3, 13, 0}, {14, 3, 13, 0}, {15, 3, 13, 1}, {16, 3, 13, 0}}, {{8, 9, 17, 2, 1}, {6, 9, 16, 0}, {6, 9, 15, 0}, {7, 9, 15, 0}, {7, 9, 14, 1}, {7, 9, 13, 0}, {7, 9, 12, 0}, {7, 9, 11, 0}, {8, 9, 11, 0}, {9, 9, 11, 0}, {10, 9, 11, 0}, {11, 9, 11, 0}, {11, 9, 12, 0}, {11, 9, 13, 0}, {10, 8, 13, 0}, {9, 7, 13, 0}, {8, 6, 13, 0}, {8, 6, 12, 0}, {9, 6, 12, 0}, {10, 6, 12, 0}, {11, 6, 12, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {9, 3, 12, 0}, {10, 3, 12, 0}, {11, 3, 12, 0}, {12, 3, 12, 1}, {13, 3, 13, 0}, {14, 3, 13, 0}, {15, 3, 13, 1}, {16, 3, 13, 0}}, {{16, 9, 17, 2, 1}, {14, 9, 16, 0}, {14, 9, 15, 0}, {13, 9, 15, 0}, {13, 9, 14, 1}, {12, 9, 13, 0}, {11, 9, 13, 0}, {10, 8, 13, 0}, {9, 7, 13, 0}, {8, 6, 13, 0}, {8, 6, 12, 0}, {9, 6, 12, 0}, {10, 6, 12, 0}, {11, 6, 12, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {9, 3, 12, 0}, {10, 3, 12, 0}, {11, 3, 12, 0}, {12, 3, 12, 1}, {13, 3, 13, 0}, {14, 3, 13, 0}, {15, 3, 13, 1}, {16, 3, 13, 0}}, {{10, 9, 18, 2, 0}, {11, 9, 16, 0}, {11, 9, 15, 1}, {11, 9, 14, 0}, {11, 9, 13, 0}, {10, 8, 13, 0}, {9, 7, 13, 0}, {8, 6, 13, 0}, {8, 6, 12, 0}, {9, 6, 12, 0}, {10, 6, 12, 0}, {11, 6, 12, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {9, 3, 12, 0}, {10, 3, 12, 0}, {11, 3, 12, 0}, {12, 3, 12, 1}, {13, 3, 13, 0}, {14, 3, 13, 0}, {15, 3, 13, 1}, {16, 3, 13, 0}}, {{16, 3, 13, 0}, {17, 3, 12, 0}, {17, 3, 11, 0}, {17, 3, 10, 0}, {17, 3, 9, 0}, {17, 3, 8, 0}, {17, 3, 7, 0}, {17, 3, 6, 0}, {17, 3, 5, 0}, {17, 3, 4, 0}, {16, 3, 4, 0}, {15, 3, 4, 0}, {14, 3, 4, 0}, {13, 3, 4, 0}, {12, 3, 4, 0}, {11, 3, 4, 0}, {10, 3, 4, 0}, {9, 3, 4, 0}, {8, 3, 4, 0}, {7, 3, 4, 0}, {6, 3, 4, 0}, {6, 3, 5, 0}, {6, 3, 6, 0}, {6, 3, 7, 0}, {5, 3, 7, 0}, {4, 3, 8, 0}, {3, 3, 8, 0}, {2, 3, 8, 0}, {1, 3, 9, 0}, {0, 2, 10, 0}}}}, ["mg_villages/schems/tent_medium_1"] = {{{{2, 2, 4, 2, 0}, {3, 2, 3, 0}, {3, 2, 2, 1}, {3, 2, 1, 0}}, {{3, 2, 4, 2, 0}, {3, 2, 2, 1}, {3, 2, 1, 0}}, {{4, 2, 4, 2, 0}, {3, 2, 3, 0}, {3, 2, 2, 1}, {3, 2, 1, 0}}, {{3, 2, 1, 0}, {3, 2, 0, 0}}}}, ["mg_villages/schems/watermill_1"] = {{{{3, 6, 10, 2, 2}, {5, 6, 11, 1}, {5, 6, 12, 0}, {5, 6, 13, 0}, {5, 6, 14, 0}, {5, 6, 15, 0}, {5, 6, 16, 0}, {6, 5, 16, 1}, {7, 5, 16, 0}, {7, 5, 15, 0}, {7, 5, 14, 0}, {7, 5, 13, 0}, {7, 5, 12, 0}, {7, 5, 11, 0}, {8, 5, 10, 0}, {8, 5, 9, 1}, {8, 5, 8, 0}}, {{5, 6, 10, 2, 1}, {5, 6, 12, 0}, {5, 6, 13, 0}, {5, 6, 14, 0}, {5, 6, 15, 0}, {5, 6, 16, 0}, {6, 5, 16, 1}, {7, 5, 16, 0}, {7, 5, 15, 0}, {7, 5, 14, 0}, {7, 5, 13, 0}, {7, 5, 12, 0}, {7, 5, 11, 0}, {8, 5, 10, 0}, {8, 5, 9, 1}, {8, 5, 8, 0}}, {{8, 5, 8, 0}, {8, 5, 7, 0}, {8, 5, 6, 0}, {8, 5, 5, 0}, {8, 5, 4, 0}, {8, 5, 3, 0}, {8, 5, 2, 0}, {8, 5, 1, 0}, {8, 5, 0, 0}, {9, 5, 0, 0}}}, {{{3, 6, 10, 2, 2}, {5, 6, 11, 1}, {5, 6, 12, 0}, {5, 6, 13, 0}, {5, 6, 14, 0}, {5, 6, 15, 0}, {5, 6, 16, 0}, {6, 5, 16, 1}, {7, 5, 16, 0}, {7, 5, 15, 0}, {7, 5, 14, 0}, {7, 5, 13, 0}, {7, 5, 12, 0}, {7, 5, 11, 0}, {7, 5, 10, 0}, {7, 5, 9, 1}, {7, 5, 8, 0}}, {{5, 6, 10, 2, 1}, {5, 6, 12, 0}, {5, 6, 13, 0}, {5, 6, 14, 0}, {5, 6, 15, 0}, {5, 6, 16, 0}, {6, 5, 16, 1}, {7, 5, 16, 0}, {7, 5, 15, 0}, {7, 5, 14, 0}, {7, 5, 13, 0}, {7, 5, 12, 0}, {7, 5, 11, 0}, {7, 5, 10, 0}, {7, 5, 9, 1}, {7, 5, 8, 0}}, {{7, 5, 8, 0}, {8, 5, 7, 0}, {8, 5, 6, 0}, {8, 5, 5, 0}, {8, 5, 4, 0}, {8, 5, 3, 0}, {8, 5, 2, 0}, {8, 5, 1, 0}, {8, 5, 0, 0}, {9, 5, 0, 0}}}, {{{3, 6, 10, 2, 2}, {5, 6, 11, 1}, {5, 6, 12, 0}, {5, 6, 13, 0}, {5, 6, 14, 0}, {5, 6, 15, 0}, {5, 6, 16, 0}, {6, 5, 16, 1}, {7, 5, 16, 0}, {7, 5, 17, 0}, {7, 5, 18, 1}, {7, 5, 19, 0}}, {{5, 6, 10, 2, 1}, {5, 6, 12, 0}, {5, 6, 13, 0}, {5, 6, 14, 0}, {5, 6, 15, 0}, {5, 6, 16, 0}, {6, 5, 16, 1}, {7, 5, 16, 0}, {7, 5, 17, 0}, {7, 5, 18, 1}, {7, 5, 19, 0}}, {{7, 5, 19, 0}, {6, 5, 20, 0}, {5, 5, 21, 0}, {4, 5, 21, 0}, {3, 5, 21, 0}, {2, 5, 20, 0}, {1, 5, 19, 0}, {1, 5, 18, 0}, {1, 5, 17, 0}, {1, 5, 16, 0}, {1, 5, 15, 0}, {1, 5, 14, 0}, {1, 5, 13, 0}, {1, 5, 12, 0}, {1, 5, 11, 0}, {1, 5, 10, 0}, {1, 5, 9, 0}, {1, 5, 8, 0}, {1, 5, 7, 0}, {2, 5, 7, 0}, {3, 5, 7, 0}, {4, 5, 7, 0}, {5, 5, 7, 0}, {6, 5, 7, 0}, {7, 5, 7, 0}, {8, 5, 6, 0}, {8, 5, 5, 0}, {8, 5, 4, 0}, {8, 5, 3, 0}, {8, 5, 2, 0}, {8, 5, 1, 0}, {8, 5, 0, 0}, {9, 5, 0, 0}}}, {{{3, 6, 10, 2, 2}, {5, 6, 11, 1}, {5, 6, 12, 0}, {5, 6, 13, 0}, {5, 6, 14, 0}, {5, 6, 15, 0}, {5, 6, 16, 0}, {6, 5, 16, 1}, {7, 5, 16, 0}, {8, 5, 17, 0}, {8, 5, 18, 1}, {8, 5, 19, 0}}, {{5, 6, 10, 2, 1}, {5, 6, 12, 0}, {5, 6, 13, 0}, {5, 6, 14, 0}, {5, 6, 15, 0}, {5, 6, 16, 0}, {6, 5, 16, 1}, {7, 5, 16, 0}, {8, 5, 17, 0}, {8, 5, 18, 1}, {8, 5, 19, 0}}, {{8, 5, 19, 0}, {7, 5, 19, 0}, {6, 5, 20, 0}, {5, 5, 21, 0}, {4, 5, 21, 0}, {3, 5, 21, 0}, {2, 5, 20, 0}, {1, 5, 19, 0}, {1, 5, 18, 0}, {1, 5, 17, 0}, {1, 5, 16, 0}, {1, 5, 15, 0}, {1, 5, 14, 0}, {1, 5, 13, 0}, {1, 5, 12, 0}, {1, 5, 11, 0}, {1, 5, 10, 0}, {1, 5, 9, 0}, {1, 5, 8, 0}, {1, 5, 7, 0}, {2, 5, 7, 0}, {3, 5, 7, 0}, {4, 5, 7, 0}, {5, 5, 7, 0}, {6, 5, 7, 0}, {7, 5, 7, 0}, {8, 5, 6, 0}, {8, 5, 5, 0}, {8, 5, 4, 0}, {8, 5, 3, 0}, {8, 5, 2, 0}, {8, 5, 1, 0}, {8, 5, 0, 0}, {9, 5, 0, 0}}}}, ["mg_villages/schems/shed_with_forge_v2_1_0"] = {{{{6, 5, 7, 2, 0}, {5, 5, 5, 0}, {5, 2, 4, 0}, {4, 2, 4, 1}, {3, 2, 4, 0}}, {{3, 2, 4, 0}, {2, 2, 5, 0}, {1, 2, 5, 0}, {0, 2, 5, 0}}}}, ["mg_villages/schems/lumberjack_hotel_1"] = {{{{6, 2, 11, 2, 2}, {7, 2, 13, 0}, {6, 3, 13, 0}, {5, 2, 13, 0}, {4, 2, 13, 0}, {3, 2, 13, 1}, {2, 2, 13, 0}}, {{8, 2, 11, 2, 2}, {9, 2, 13, 0}, {8, 3, 13, 0}, {7, 2, 13, 0}, {6, 3, 13, 0}, {5, 2, 13, 0}, {4, 2, 13, 0}, {3, 2, 13, 1}, {2, 2, 13, 0}}, {{10, 2, 11, 2, 2}, {11, 2, 13, 0}, {10, 3, 13, 0}, {9, 2, 13, 0}, {8, 3, 13, 0}, {7, 2, 13, 0}, {6, 3, 13, 0}, {5, 2, 13, 0}, {4, 2, 13, 0}, {3, 2, 13, 1}, {2, 2, 13, 0}}, {{12, 2, 11, 2, 2}, {11, 2, 13, 0}, {10, 3, 13, 0}, {9, 2, 13, 0}, {8, 3, 13, 0}, {7, 2, 13, 0}, {6, 3, 13, 0}, {5, 2, 13, 0}, {4, 2, 13, 0}, {3, 2, 13, 1}, {2, 2, 13, 0}}, {{6, 3, 11, 2, 2}, {7, 2, 12, 0}, {7, 2, 13, 0}, {6, 3, 13, 0}, {5, 2, 13, 0}, {4, 2, 13, 0}, {3, 2, 13, 1}, {2, 2, 13, 0}}, {{8, 3, 11, 2, 2}, {9, 2, 12, 0}, {9, 2, 13, 0}, {8, 3, 13, 0}, {7, 2, 13, 0}, {6, 3, 13, 0}, {5, 2, 13, 0}, {4, 2, 13, 0}, {3, 2, 13, 1}, {2, 2, 13, 0}}, {{10, 3, 11, 2, 2}, {11, 2, 12, 0}, {11, 2, 13, 0}, {10, 3, 13, 0}, {9, 2, 13, 0}, {8, 3, 13, 0}, {7, 2, 13, 0}, {6, 3, 13, 0}, {5, 2, 13, 0}, {4, 2, 13, 0}, {3, 2, 13, 1}, {2, 2, 13, 0}}, {{12, 3, 11, 2, 2}, {11, 2, 12, 0}, {11, 2, 13, 0}, {10, 3, 13, 0}, {9, 2, 13, 0}, {8, 3, 13, 0}, {7, 2, 13, 0}, {6, 3, 13, 0}, {5, 2, 13, 0}, {4, 2, 13, 0}, {3, 2, 13, 1}, {2, 2, 13, 0}}, {{6, 2, 16, 2, 0}, {7, 2, 14, 0}, {6, 3, 14, 0}, {5, 2, 14, 0}, {4, 2, 13, 0}, {3, 2, 13, 1}, {2, 2, 13, 0}}, {{8, 2, 16, 2, 0}, {9, 2, 14, 0}, {8, 3, 14, 0}, {7, 2, 14, 0}, {6, 3, 14, 0}, {5, 2, 14, 0}, {4, 2, 13, 0}, {3, 2, 13, 1}, {2, 2, 13, 0}}, {{10, 2, 16, 2, 0}, {11, 2, 14, 0}, {10, 3, 14, 0}, {9, 2, 14, 0}, {8, 3, 14, 0}, {7, 2, 14, 0}, {6, 3, 14, 0}, {5, 2, 14, 0}, {4, 2, 13, 0}, {3, 2, 13, 1}, {2, 2, 13, 0}}, {{12, 2, 16, 2, 0}, {11, 2, 14, 0}, {10, 3, 14, 0}, {9, 2, 14, 0}, {8, 3, 14, 0}, {7, 2, 14, 0}, {6, 3, 14, 0}, {5, 2, 14, 0}, {4, 2, 13, 0}, {3, 2, 13, 1}, {2, 2, 13, 0}}, {{6, 3, 16, 2, 0}, {7, 2, 15, 0}, {7, 2, 14, 0}, {6, 3, 14, 0}, {5, 2, 14, 0}, {4, 2, 13, 0}, {3, 2, 13, 1}, {2, 2, 13, 0}}, {{8, 3, 16, 2, 0}, {9, 2, 15, 0}, {9, 2, 14, 0}, {8, 3, 14, 0}, {7, 2, 14, 0}, {6, 3, 14, 0}, {5, 2, 14, 0}, {4, 2, 13, 0}, {3, 2, 13, 1}, {2, 2, 13, 0}}, {{10, 3, 16, 2, 0}, {11, 2, 15, 0}, {11, 2, 14, 0}, {10, 3, 14, 0}, {9, 2, 14, 0}, {8, 3, 14, 0}, {7, 2, 14, 0}, {6, 3, 14, 0}, {5, 2, 14, 0}, {4, 2, 13, 0}, {3, 2, 13, 1}, {2, 2, 13, 0}}, {{12, 3, 16, 2, 0}, {11, 2, 15, 0}, {11, 2, 14, 0}, {10, 3, 14, 0}, {9, 2, 14, 0}, {8, 3, 14, 0}, {7, 2, 14, 0}, {6, 3, 14, 0}, {5, 2, 14, 0}, {4, 2, 13, 0}, {3, 2, 13, 1}, {2, 2, 13, 0}}, {{2, 2, 13, 0}, {1, 2, 12, 0}, {1, 1, 11, 0}, {0, 1, 10, 0}}}, {{{6, 2, 11, 2, 2}, {7, 2, 13, 0}, {6, 3, 13, 0}, {5, 2, 13, 0}, {4, 2, 14, 0}, {3, 2, 14, 1}, {2, 2, 14, 0}}, {{8, 2, 11, 2, 2}, {9, 2, 13, 0}, {8, 3, 13, 0}, {7, 2, 13, 0}, {6, 3, 13, 0}, {5, 2, 13, 0}, {4, 2, 14, 0}, {3, 2, 14, 1}, {2, 2, 14, 0}}, {{10, 2, 11, 2, 2}, {11, 2, 13, 0}, {10, 3, 13, 0}, {9, 2, 13, 0}, {8, 3, 13, 0}, {7, 2, 13, 0}, {6, 3, 13, 0}, {5, 2, 13, 0}, {4, 2, 14, 0}, {3, 2, 14, 1}, {2, 2, 14, 0}}, {{12, 2, 11, 2, 2}, {11, 2, 13, 0}, {10, 3, 13, 0}, {9, 2, 13, 0}, {8, 3, 13, 0}, {7, 2, 13, 0}, {6, 3, 13, 0}, {5, 2, 13, 0}, {4, 2, 14, 0}, {3, 2, 14, 1}, {2, 2, 14, 0}}, {{6, 3, 11, 2, 2}, {7, 2, 12, 0}, {7, 2, 13, 0}, {6, 3, 13, 0}, {5, 2, 13, 0}, {4, 2, 14, 0}, {3, 2, 14, 1}, {2, 2, 14, 0}}, {{8, 3, 11, 2, 2}, {9, 2, 12, 0}, {9, 2, 13, 0}, {8, 3, 13, 0}, {7, 2, 13, 0}, {6, 3, 13, 0}, {5, 2, 13, 0}, {4, 2, 14, 0}, {3, 2, 14, 1}, {2, 2, 14, 0}}, {{10, 3, 11, 2, 2}, {11, 2, 12, 0}, {11, 2, 13, 0}, {10, 3, 13, 0}, {9, 2, 13, 0}, {8, 3, 13, 0}, {7, 2, 13, 0}, {6, 3, 13, 0}, {5, 2, 13, 0}, {4, 2, 14, 0}, {3, 2, 14, 1}, {2, 2, 14, 0}}, {{12, 3, 11, 2, 2}, {11, 2, 12, 0}, {11, 2, 13, 0}, {10, 3, 13, 0}, {9, 2, 13, 0}, {8, 3, 13, 0}, {7, 2, 13, 0}, {6, 3, 13, 0}, {5, 2, 13, 0}, {4, 2, 14, 0}, {3, 2, 14, 1}, {2, 2, 14, 0}}, {{6, 2, 16, 2, 0}, {7, 2, 14, 0}, {6, 3, 14, 0}, {5, 2, 14, 0}, {4, 2, 14, 0}, {3, 2, 14, 1}, {2, 2, 14, 0}}, {{8, 2, 16, 2, 0}, {9, 2, 14, 0}, {8, 3, 14, 0}, {7, 2, 14, 0}, {6, 3, 14, 0}, {5, 2, 14, 0}, {4, 2, 14, 0}, {3, 2, 14, 1}, {2, 2, 14, 0}}, {{10, 2, 16, 2, 0}, {11, 2, 14, 0}, {10, 3, 14, 0}, {9, 2, 14, 0}, {8, 3, 14, 0}, {7, 2, 14, 0}, {6, 3, 14, 0}, {5, 2, 14, 0}, {4, 2, 14, 0}, {3, 2, 14, 1}, {2, 2, 14, 0}}, {{12, 2, 16, 2, 0}, {11, 2, 14, 0}, {10, 3, 14, 0}, {9, 2, 14, 0}, {8, 3, 14, 0}, {7, 2, 14, 0}, {6, 3, 14, 0}, {5, 2, 14, 0}, {4, 2, 14, 0}, {3, 2, 14, 1}, {2, 2, 14, 0}}, {{6, 3, 16, 2, 0}, {7, 2, 15, 0}, {7, 2, 14, 0}, {6, 3, 14, 0}, {5, 2, 14, 0}, {4, 2, 14, 0}, {3, 2, 14, 1}, {2, 2, 14, 0}}, {{8, 3, 16, 2, 0}, {9, 2, 15, 0}, {9, 2, 14, 0}, {8, 3, 14, 0}, {7, 2, 14, 0}, {6, 3, 14, 0}, {5, 2, 14, 0}, {4, 2, 14, 0}, {3, 2, 14, 1}, {2, 2, 14, 0}}, {{10, 3, 16, 2, 0}, {11, 2, 15, 0}, {11, 2, 14, 0}, {10, 3, 14, 0}, {9, 2, 14, 0}, {8, 3, 14, 0}, {7, 2, 14, 0}, {6, 3, 14, 0}, {5, 2, 14, 0}, {4, 2, 14, 0}, {3, 2, 14, 1}, {2, 2, 14, 0}}, {{12, 3, 16, 2, 0}, {11, 2, 15, 0}, {11, 2, 14, 0}, {10, 3, 14, 0}, {9, 2, 14, 0}, {8, 3, 14, 0}, {7, 2, 14, 0}, {6, 3, 14, 0}, {5, 2, 14, 0}, {4, 2, 14, 0}, {3, 2, 14, 1}, {2, 2, 14, 0}}, {{2, 2, 14, 0}, {1, 2, 13, 0}, {1, 2, 12, 0}, {1, 1, 11, 0}, {0, 1, 10, 0}}}, {{{6, 2, 11, 2, 2}, {7, 2, 13, 0}, {8, 3, 13, 0}, {9, 2, 13, 0}, {10, 3, 13, 0}, {11, 2, 13, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 13, 0}, {16, 2, 13, 1}, {16, 2, 12, 0}}, {{8, 2, 11, 2, 2}, {9, 2, 13, 0}, {10, 3, 13, 0}, {11, 2, 13, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 13, 0}, {16, 2, 13, 1}, {16, 2, 12, 0}}, {{10, 2, 11, 2, 2}, {11, 2, 13, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 13, 0}, {16, 2, 13, 1}, {16, 2, 12, 0}}, {{12, 2, 11, 2, 2}, {11, 2, 13, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 13, 0}, {16, 2, 13, 1}, {16, 2, 12, 0}}, {{6, 3, 11, 2, 2}, {7, 2, 12, 0}, {7, 2, 13, 0}, {8, 3, 13, 0}, {9, 2, 13, 0}, {10, 3, 13, 0}, {11, 2, 13, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 13, 0}, {16, 2, 13, 1}, {16, 2, 12, 0}}, {{8, 3, 11, 2, 2}, {9, 2, 12, 0}, {9, 2, 13, 0}, {10, 3, 13, 0}, {11, 2, 13, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 13, 0}, {16, 2, 13, 1}, {16, 2, 12, 0}}, {{10, 3, 11, 2, 2}, {11, 2, 12, 0}, {11, 2, 13, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 13, 0}, {16, 2, 13, 1}, {16, 2, 12, 0}}, {{12, 3, 11, 2, 2}, {11, 2, 12, 0}, {11, 2, 13, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 13, 0}, {16, 2, 13, 1}, {16, 2, 12, 0}}, {{6, 2, 16, 2, 0}, {7, 2, 14, 0}, {8, 3, 14, 0}, {9, 2, 14, 0}, {10, 3, 14, 0}, {11, 2, 14, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 13, 0}, {16, 2, 13, 1}, {16, 2, 12, 0}}, {{8, 2, 16, 2, 0}, {9, 2, 14, 0}, {10, 3, 14, 0}, {11, 2, 14, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 13, 0}, {16, 2, 13, 1}, {16, 2, 12, 0}}, {{10, 2, 16, 2, 0}, {11, 2, 14, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 13, 0}, {16, 2, 13, 1}, {16, 2, 12, 0}}, {{12, 2, 16, 2, 0}, {11, 2, 14, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 13, 0}, {16, 2, 13, 1}, {16, 2, 12, 0}}, {{6, 3, 16, 2, 0}, {7, 2, 15, 0}, {7, 2, 14, 0}, {8, 3, 14, 0}, {9, 2, 14, 0}, {10, 3, 14, 0}, {11, 2, 14, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 13, 0}, {16, 2, 13, 1}, {16, 2, 12, 0}}, {{8, 3, 16, 2, 0}, {9, 2, 15, 0}, {9, 2, 14, 0}, {10, 3, 14, 0}, {11, 2, 14, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 13, 0}, {16, 2, 13, 1}, {16, 2, 12, 0}}, {{10, 3, 16, 2, 0}, {11, 2, 15, 0}, {11, 2, 14, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 13, 0}, {16, 2, 13, 1}, {16, 2, 12, 0}}, {{12, 3, 16, 2, 0}, {11, 2, 15, 0}, {11, 2, 14, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 13, 0}, {16, 2, 13, 1}, {16, 2, 12, 0}}, {{16, 2, 12, 0}, {16, 1, 11, 0}, {15, 1, 10, 0}, {14, 1, 9, 0}, {13, 1, 9, 0}, {12, 1, 9, 0}, {11, 1, 9, 0}, {10, 1, 9, 0}, {9, 1, 9, 0}, {8, 1, 9, 0}, {7, 1, 9, 0}, {6, 1, 9, 0}, {5, 1, 9, 0}, {4, 1, 9, 0}, {3, 1, 9, 0}, {2, 1, 9, 0}, {1, 1, 10, 0}, {0, 1, 10, 0}}}, {{{6, 2, 11, 2, 2}, {7, 2, 13, 0}, {8, 3, 13, 0}, {9, 2, 13, 0}, {10, 3, 13, 0}, {11, 2, 13, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {16, 3, 13, 1}, {16, 2, 12, 0}}, {{8, 2, 11, 2, 2}, {9, 2, 13, 0}, {10, 3, 13, 0}, {11, 2, 13, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {16, 3, 13, 1}, {16, 2, 12, 0}}, {{10, 2, 11, 2, 2}, {11, 2, 13, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {16, 3, 13, 1}, {16, 2, 12, 0}}, {{12, 2, 11, 2, 2}, {11, 2, 13, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {16, 3, 13, 1}, {16, 2, 12, 0}}, {{6, 3, 11, 2, 2}, {7, 2, 12, 0}, {7, 2, 13, 0}, {8, 3, 13, 0}, {9, 2, 13, 0}, {10, 3, 13, 0}, {11, 2, 13, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {16, 3, 13, 1}, {16, 2, 12, 0}}, {{8, 3, 11, 2, 2}, {9, 2, 12, 0}, {9, 2, 13, 0}, {10, 3, 13, 0}, {11, 2, 13, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {16, 3, 13, 1}, {16, 2, 12, 0}}, {{10, 3, 11, 2, 2}, {11, 2, 12, 0}, {11, 2, 13, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {16, 3, 13, 1}, {16, 2, 12, 0}}, {{12, 3, 11, 2, 2}, {11, 2, 12, 0}, {11, 2, 13, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {16, 3, 13, 1}, {16, 2, 12, 0}}, {{6, 2, 16, 2, 0}, {7, 2, 14, 0}, {8, 3, 14, 0}, {9, 2, 14, 0}, {10, 3, 14, 0}, {11, 2, 14, 0}, {12, 2, 14, 0}, {13, 2, 14, 1}, {14, 2, 14, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {16, 3, 13, 1}, {16, 2, 12, 0}}, {{8, 2, 16, 2, 0}, {9, 2, 14, 0}, {10, 3, 14, 0}, {11, 2, 14, 0}, {12, 2, 14, 0}, {13, 2, 14, 1}, {14, 2, 14, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {16, 3, 13, 1}, {16, 2, 12, 0}}, {{10, 2, 16, 2, 0}, {11, 2, 14, 0}, {12, 2, 14, 0}, {13, 2, 14, 1}, {14, 2, 14, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {16, 3, 13, 1}, {16, 2, 12, 0}}, {{12, 2, 16, 2, 0}, {11, 2, 14, 0}, {12, 2, 14, 0}, {13, 2, 14, 1}, {14, 2, 14, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {16, 3, 13, 1}, {16, 2, 12, 0}}, {{6, 3, 16, 2, 0}, {7, 2, 15, 0}, {7, 2, 14, 0}, {8, 3, 14, 0}, {9, 2, 14, 0}, {10, 3, 14, 0}, {11, 2, 14, 0}, {12, 2, 14, 0}, {13, 2, 14, 1}, {14, 2, 14, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {16, 3, 13, 1}, {16, 2, 12, 0}}, {{8, 3, 16, 2, 0}, {9, 2, 15, 0}, {9, 2, 14, 0}, {10, 3, 14, 0}, {11, 2, 14, 0}, {12, 2, 14, 0}, {13, 2, 14, 1}, {14, 2, 14, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {16, 3, 13, 1}, {16, 2, 12, 0}}, {{10, 3, 16, 2, 0}, {11, 2, 15, 0}, {11, 2, 14, 0}, {12, 2, 14, 0}, {13, 2, 14, 1}, {14, 2, 14, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {16, 3, 13, 1}, {16, 2, 12, 0}}, {{12, 3, 16, 2, 0}, {11, 2, 15, 0}, {11, 2, 14, 0}, {12, 2, 14, 0}, {13, 2, 14, 1}, {14, 2, 14, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {16, 3, 13, 1}, {16, 2, 12, 0}}, {{16, 2, 12, 0}, {16, 1, 11, 0}, {15, 1, 10, 0}, {14, 1, 9, 0}, {13, 1, 9, 0}, {12, 1, 9, 0}, {11, 1, 9, 0}, {10, 1, 9, 0}, {9, 1, 9, 0}, {8, 1, 9, 0}, {7, 1, 9, 0}, {6, 1, 9, 0}, {5, 1, 9, 0}, {4, 1, 9, 0}, {3, 1, 9, 0}, {2, 1, 9, 0}, {1, 1, 10, 0}, {0, 1, 10, 0}}}, {{{6, 2, 11, 2, 2}, {7, 2, 13, 0}, {8, 3, 13, 0}, {9, 2, 13, 0}, {10, 3, 13, 0}, {11, 2, 13, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {17, 1, 14, 0}}, {{8, 2, 11, 2, 2}, {9, 2, 13, 0}, {10, 3, 13, 0}, {11, 2, 13, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {17, 1, 14, 0}}, {{10, 2, 11, 2, 2}, {11, 2, 13, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {17, 1, 14, 0}}, {{12, 2, 11, 2, 2}, {11, 2, 13, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {17, 1, 14, 0}}, {{6, 3, 11, 2, 2}, {7, 2, 12, 0}, {7, 2, 13, 0}, {8, 3, 13, 0}, {9, 2, 13, 0}, {10, 3, 13, 0}, {11, 2, 13, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {17, 1, 14, 0}}, {{8, 3, 11, 2, 2}, {9, 2, 12, 0}, {9, 2, 13, 0}, {10, 3, 13, 0}, {11, 2, 13, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {17, 1, 14, 0}}, {{10, 3, 11, 2, 2}, {11, 2, 12, 0}, {11, 2, 13, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {17, 1, 14, 0}}, {{12, 3, 11, 2, 2}, {11, 2, 12, 0}, {11, 2, 13, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {17, 1, 14, 0}}, {{6, 2, 16, 2, 0}, {7, 2, 14, 0}, {8, 3, 14, 0}, {9, 2, 14, 0}, {10, 3, 14, 0}, {11, 2, 14, 0}, {12, 2, 14, 0}, {13, 2, 14, 1}, {14, 2, 14, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {17, 1, 14, 0}}, {{8, 2, 16, 2, 0}, {9, 2, 14, 0}, {10, 3, 14, 0}, {11, 2, 14, 0}, {12, 2, 14, 0}, {13, 2, 14, 1}, {14, 2, 14, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {17, 1, 14, 0}}, {{10, 2, 16, 2, 0}, {11, 2, 14, 0}, {12, 2, 14, 0}, {13, 2, 14, 1}, {14, 2, 14, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {17, 1, 14, 0}}, {{12, 2, 16, 2, 0}, {11, 2, 14, 0}, {12, 2, 14, 0}, {13, 2, 14, 1}, {14, 2, 14, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {17, 1, 14, 0}}, {{6, 3, 16, 2, 0}, {7, 2, 15, 0}, {7, 2, 14, 0}, {8, 3, 14, 0}, {9, 2, 14, 0}, {10, 3, 14, 0}, {11, 2, 14, 0}, {12, 2, 14, 0}, {13, 2, 14, 1}, {14, 2, 14, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {17, 1, 14, 0}}, {{8, 3, 16, 2, 0}, {9, 2, 15, 0}, {9, 2, 14, 0}, {10, 3, 14, 0}, {11, 2, 14, 0}, {12, 2, 14, 0}, {13, 2, 14, 1}, {14, 2, 14, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {17, 1, 14, 0}}, {{10, 3, 16, 2, 0}, {11, 2, 15, 0}, {11, 2, 14, 0}, {12, 2, 14, 0}, {13, 2, 14, 1}, {14, 2, 14, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {17, 1, 14, 0}}, {{12, 3, 16, 2, 0}, {11, 2, 15, 0}, {11, 2, 14, 0}, {12, 2, 14, 0}, {13, 2, 14, 1}, {14, 2, 14, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {17, 1, 14, 0}}, {{17, 1, 14, 0}, {17, 1, 13, 0}, {17, 1, 12, 0}, {17, 1, 11, 0}, {16, 1, 10, 0}, {15, 1, 10, 0}, {14, 1, 9, 0}, {13, 1, 9, 0}, {12, 1, 9, 0}, {11, 1, 9, 0}, {10, 1, 9, 0}, {9, 1, 9, 0}, {8, 1, 9, 0}, {7, 1, 9, 0}, {6, 1, 9, 0}, {5, 1, 9, 0}, {4, 1, 9, 0}, {3, 1, 9, 0}, {2, 1, 9, 0}, {1, 1, 10, 0}, {0, 1, 10, 0}}}}, ["mg_villages/schems/default_town_house_tiny_1"] = {{{{8, 2, 5, 2, 1}, {5, 2, 4, 0}, {5, 2, 3, 1}, {5, 2, 2, 0}}, {{8, 2, 6, 2, 1}, {5, 2, 5, 0}, {5, 2, 4, 0}, {5, 2, 3, 1}, {5, 2, 2, 0}}, {{5, 2, 2, 0}, {5, 1, 1, 0}, {5, 1, 0, 0}}}, {{{8, 2, 5, 2, 1}, {6, 2, 4, 0}, {6, 2, 3, 1}, {6, 2, 2, 0}}, {{8, 2, 6, 2, 1}, {6, 2, 5, 0}, {6, 2, 4, 0}, {6, 2, 3, 1}, {6, 2, 2, 0}}, {{6, 2, 2, 0}, {6, 1, 1, 0}, {5, 1, 0, 0}}}}, ["mg_villages/schems/hut_2"] = {{{{5, 4, 3, 2, 2}, {4, 2, 5, 0}, {4, 2, 4, 0}, {3, 2, 4, 1}, {2, 2, 4, 0}}, {{6, 4, 3, 2, 2}, {7, 4, 5, 0}, {6, 4, 5, 0}, {5, 4, 5, 0}, {4, 2, 5, 0}, {4, 2, 4, 0}, {3, 2, 4, 1}, {2, 2, 4, 0}}, {{2, 2, 4, 0}, {1, 2, 4, 0}, {0, 2, 4, 0}}}}, ["mg_villages/schems/taverne_3"] = {{{{6, 6, 5, 2, 2}, {5, 6, 7, 0}, {6, 6, 7, 0}, {7, 6, 7, 0}, {8, 6, 7, 1}, {9, 6, 7, 0}, {9, 6, 6, 0}, {10, 5, 6, 0}, {10, 4, 7, 0}, {10, 3, 8, 0}, {9, 3, 8, 0}, {8, 3, 8, 1}, {7, 3, 8, 0}}, {{7, 6, 5, 2, 2}, {8, 6, 7, 1}, {9, 6, 7, 0}, {9, 6, 6, 0}, {10, 5, 6, 0}, {10, 4, 7, 0}, {10, 3, 8, 0}, {9, 3, 8, 0}, {8, 3, 8, 1}, {7, 3, 8, 0}}, {{7, 3, 8, 0}, {6, 3, 8, 0}, {5, 3, 8, 0}, {4, 3, 8, 0}, {3, 3, 8, 0}, {2, 3, 8, 0}, {1, 2, 8, 0}, {0, 2, 8, 0}}}}, ["mg_villages/schems/clay_pit_5|WORKPLACE"] = {{{{6, 4, 5, 2, 0}, {5, 5, 5, 0}, {5, 5, 6, 0}, {4, 4, 6, 0}, {4, 3, 7, 0}, {4, 2, 8, 0}, {3, 1, 8, 0}, {2, 1, 7, 0}, {1, 1, 6, 0}, {0, 1, 5, 0}, {0, 1, 4, 0}}, {}}}, ["mg_villages/schems/farm_full_6"] = {{{{4, 8, 3, 2, 2}, {5, 8, 5, 1}, {6, 8, 5, 0}, {6, 8, 4, 0}, {7, 7, 4, 0}, {8, 6, 4, 0}, {9, 5, 4, 0}, {9, 5, 5, 0}, {8, 5, 5, 0}, {7, 4, 5, 0}, {6, 3, 5, 0}, {5, 2, 5, 0}, {5, 2, 6, 0}, {4, 2, 6, 1}, {3, 2, 6, 0}}, {{10, 8, 4, 2, 2}, {9, 8, 6, 0}, {8, 8, 6, 1}, {7, 8, 6, 0}, {6, 8, 6, 0}, {6, 8, 5, 0}, {6, 8, 4, 0}, {7, 7, 4, 0}, {8, 6, 4, 0}, {9, 5, 4, 0}, {9, 5, 5, 0}, {8, 5, 5, 0}, {7, 4, 5, 0}, {6, 3, 5, 0}, {5, 2, 5, 0}, {5, 2, 6, 0}, {4, 2, 6, 1}, {3, 2, 6, 0}}, {{3, 8, 6, 2, 3}, {4, 8, 5, 0}, {5, 8, 5, 1}, {6, 8, 5, 0}, {6, 8, 4, 0}, {7, 7, 4, 0}, {8, 6, 4, 0}, {9, 5, 4, 0}, {9, 5, 5, 0}, {8, 5, 5, 0}, {7, 4, 5, 0}, {6, 3, 5, 0}, {5, 2, 5, 0}, {5, 2, 6, 0}, {4, 2, 6, 1}, {3, 2, 6, 0}}, {{6, 8, 10, 2, 0}, {5, 8, 8, 0}, {6, 8, 8, 0}, {6, 8, 7, 1}, {6, 8, 6, 0}, {6, 8, 5, 0}, {6, 8, 4, 0}, {7, 7, 4, 0}, {8, 6, 4, 0}, {9, 5, 4, 0}, {9, 5, 5, 0}, {8, 5, 5, 0}, {7, 4, 5, 0}, {6, 3, 5, 0}, {5, 2, 5, 0}, {5, 2, 6, 0}, {4, 2, 6, 1}, {3, 2, 6, 0}}, {{7, 8, 10, 2, 0}, {8, 8, 8, 0}, {7, 8, 8, 0}, {6, 8, 8, 0}, {6, 8, 7, 1}, {6, 8, 6, 0}, {6, 8, 5, 0}, {6, 8, 4, 0}, {7, 7, 4, 0}, {8, 6, 4, 0}, {9, 5, 4, 0}, {9, 5, 5, 0}, {8, 5, 5, 0}, {7, 4, 5, 0}, {6, 3, 5, 0}, {5, 2, 5, 0}, {5, 2, 6, 0}, {4, 2, 6, 1}, {3, 2, 6, 0}}, {{3, 2, 6, 0}, {2, 2, 6, 0}, {1, 2, 6, 0}, {0, 2, 6, 0}}}}, ["mg_villages/schems/pub_1_0|WORKPLACE"] = {{{{12, 2, 4, 2, 2}, {11, 2, 4, 0}, {11, 3, 5, 0}, {11, 3, 6, 0}, {11, 2, 7, 0}, {10, 2, 8, 0}, {9, 2, 9, 0}, {9, 2, 10, 0}, {9, 2, 11, 0}, {8, 2, 12, 0}, {8, 2, 13, 0}, {8, 2, 14, 0}, {7, 2, 14, 0}, {6, 2, 15, 0}, {5, 2, 16, 0}, {4, 2, 17, 0}, {3, 2, 18, 0}, {2, 2, 18, 1}, {1, 2, 18, 0}}, {{1, 2, 18, 0}, {0, 2, 17, 0}, {0, 2, 16, 0}, {0, 2, 15, 0}, {0, 2, 14, 0}, {0, 2, 13, 0}, {0, 2, 12, 0}, {0, 2, 11, 0}}}, {{{10, 6, 7, 2, 3}, {11, 6, 6, 0}, {12, 6, 5, 0}, {12, 5, 4, 1}, {12, 5, 3, 0}, {11, 5, 3, 0}, {10, 4, 3, 0}, {9, 3, 3, 0}, {9, 3, 4, 0}, {9, 3, 5, 0}, {9, 3, 6, 0}, {9, 2, 7, 0}, {9, 2, 8, 0}, {9, 2, 9, 0}, {9, 2, 10, 0}, {9, 2, 11, 0}, {8, 2, 12, 0}, {8, 2, 13, 0}, {8, 2, 14, 0}, {7, 2, 15, 0}, {6, 2, 16, 0}, {5, 2, 17, 0}, {4, 2, 18, 0}, {3, 2, 19, 0}, {2, 2, 19, 1}, {1, 2, 19, 0}}, {{10, 6, 8, 2, 3}, {11, 6, 9, 0}, {12, 6, 9, 0}, {12, 6, 8, 0}, {12, 6, 7, 0}, {12, 6, 6, 0}, {12, 6, 5, 0}, {12, 5, 4, 1}, {12, 5, 3, 0}, {11, 5, 3, 0}, {10, 4, 3, 0}, {9, 3, 3, 0}, {9, 3, 4, 0}, {9, 3, 5, 0}, {9, 3, 6, 0}, {9, 2, 7, 0}, {9, 2, 8, 0}, {9, 2, 9, 0}, {9, 2, 10, 0}, {9, 2, 11, 0}, {8, 2, 12, 0}, {8, 2, 13, 0}, {8, 2, 14, 0}, {7, 2, 15, 0}, {6, 2, 16, 0}, {5, 2, 17, 0}, {4, 2, 18, 0}, {3, 2, 19, 0}, {2, 2, 19, 1}, {1, 2, 19, 0}}, {{10, 6, 10, 2, 3}, {11, 6, 9, 0}, {12, 6, 9, 0}, {12, 6, 8, 0}, {12, 6, 7, 0}, {12, 6, 6, 0}, {12, 6, 5, 0}, {12, 5, 4, 1}, {12, 5, 3, 0}, {11, 5, 3, 0}, {10, 4, 3, 0}, {9, 3, 3, 0}, {9, 3, 4, 0}, {9, 3, 5, 0}, {9, 3, 6, 0}, {9, 2, 7, 0}, {9, 2, 8, 0}, {9, 2, 9, 0}, {9, 2, 10, 0}, {9, 2, 11, 0}, {8, 2, 12, 0}, {8, 2, 13, 0}, {8, 2, 14, 0}, {7, 2, 15, 0}, {6, 2, 16, 0}, {5, 2, 17, 0}, {4, 2, 18, 0}, {3, 2, 19, 0}, {2, 2, 19, 1}, {1, 2, 19, 0}}, {{1, 2, 19, 0}, {0, 2, 18, 0}, {0, 2, 17, 0}, {0, 2, 16, 0}, {0, 2, 15, 0}, {0, 2, 14, 0}, {0, 2, 13, 0}, {0, 2, 12, 0}, {0, 2, 11, 0}}}}, ["mg_villages/schems/pub_1_0"] = {{{{10, 6, 7, 2, 3}, {11, 6, 6, 0}, {12, 6, 5, 0}, {12, 5, 4, 1}, {12, 5, 3, 0}, {11, 5, 3, 0}, {10, 4, 3, 0}, {9, 3, 3, 0}, {9, 3, 4, 0}, {9, 3, 5, 0}, {9, 3, 6, 0}, {9, 2, 7, 0}, {9, 2, 8, 0}, {9, 2, 9, 0}, {9, 2, 10, 0}, {9, 2, 11, 0}, {8, 2, 12, 0}, {8, 2, 13, 0}, {8, 2, 14, 0}, {7, 2, 14, 0}, {6, 2, 15, 0}, {5, 2, 16, 0}, {4, 2, 17, 0}, {3, 2, 18, 0}, {2, 2, 18, 1}, {1, 2, 18, 0}}, {{10, 6, 8, 2, 3}, {11, 6, 9, 0}, {12, 6, 9, 0}, {12, 6, 8, 0}, {12, 6, 7, 0}, {12, 6, 6, 0}, {12, 6, 5, 0}, {12, 5, 4, 1}, {12, 5, 3, 0}, {11, 5, 3, 0}, {10, 4, 3, 0}, {9, 3, 3, 0}, {9, 3, 4, 0}, {9, 3, 5, 0}, {9, 3, 6, 0}, {9, 2, 7, 0}, {9, 2, 8, 0}, {9, 2, 9, 0}, {9, 2, 10, 0}, {9, 2, 11, 0}, {8, 2, 12, 0}, {8, 2, 13, 0}, {8, 2, 14, 0}, {7, 2, 14, 0}, {6, 2, 15, 0}, {5, 2, 16, 0}, {4, 2, 17, 0}, {3, 2, 18, 0}, {2, 2, 18, 1}, {1, 2, 18, 0}}, {{10, 6, 10, 2, 3}, {11, 6, 9, 0}, {12, 6, 9, 0}, {12, 6, 8, 0}, {12, 6, 7, 0}, {12, 6, 6, 0}, {12, 6, 5, 0}, {12, 5, 4, 1}, {12, 5, 3, 0}, {11, 5, 3, 0}, {10, 4, 3, 0}, {9, 3, 3, 0}, {9, 3, 4, 0}, {9, 3, 5, 0}, {9, 3, 6, 0}, {9, 2, 7, 0}, {9, 2, 8, 0}, {9, 2, 9, 0}, {9, 2, 10, 0}, {9, 2, 11, 0}, {8, 2, 12, 0}, {8, 2, 13, 0}, {8, 2, 14, 0}, {7, 2, 14, 0}, {6, 2, 15, 0}, {5, 2, 16, 0}, {4, 2, 17, 0}, {3, 2, 18, 0}, {2, 2, 18, 1}, {1, 2, 18, 0}}, {{1, 2, 18, 0}, {0, 2, 17, 0}, {0, 2, 16, 0}, {0, 2, 15, 0}, {0, 2, 14, 0}, {0, 2, 13, 0}, {0, 2, 12, 0}, {0, 2, 11, 0}}}, {{{10, 6, 7, 2, 3}, {11, 6, 6, 0}, {12, 6, 5, 0}, {12, 5, 4, 1}, {12, 5, 3, 0}, {11, 5, 3, 0}, {10, 4, 3, 0}, {9, 3, 3, 0}, {9, 3, 4, 0}, {9, 3, 5, 0}, {9, 3, 6, 0}, {9, 2, 7, 0}, {9, 2, 8, 0}, {9, 2, 9, 0}, {9, 2, 10, 0}, {9, 2, 11, 0}, {8, 2, 12, 0}, {8, 2, 13, 0}, {8, 2, 14, 0}, {7, 2, 15, 0}, {6, 2, 16, 0}, {5, 2, 17, 0}, {4, 2, 18, 0}, {3, 2, 19, 0}, {2, 2, 19, 1}, {1, 2, 19, 0}}, {{10, 6, 8, 2, 3}, {11, 6, 9, 0}, {12, 6, 9, 0}, {12, 6, 8, 0}, {12, 6, 7, 0}, {12, 6, 6, 0}, {12, 6, 5, 0}, {12, 5, 4, 1}, {12, 5, 3, 0}, {11, 5, 3, 0}, {10, 4, 3, 0}, {9, 3, 3, 0}, {9, 3, 4, 0}, {9, 3, 5, 0}, {9, 3, 6, 0}, {9, 2, 7, 0}, {9, 2, 8, 0}, {9, 2, 9, 0}, {9, 2, 10, 0}, {9, 2, 11, 0}, {8, 2, 12, 0}, {8, 2, 13, 0}, {8, 2, 14, 0}, {7, 2, 15, 0}, {6, 2, 16, 0}, {5, 2, 17, 0}, {4, 2, 18, 0}, {3, 2, 19, 0}, {2, 2, 19, 1}, {1, 2, 19, 0}}, {{10, 6, 10, 2, 3}, {11, 6, 9, 0}, {12, 6, 9, 0}, {12, 6, 8, 0}, {12, 6, 7, 0}, {12, 6, 6, 0}, {12, 6, 5, 0}, {12, 5, 4, 1}, {12, 5, 3, 0}, {11, 5, 3, 0}, {10, 4, 3, 0}, {9, 3, 3, 0}, {9, 3, 4, 0}, {9, 3, 5, 0}, {9, 3, 6, 0}, {9, 2, 7, 0}, {9, 2, 8, 0}, {9, 2, 9, 0}, {9, 2, 10, 0}, {9, 2, 11, 0}, {8, 2, 12, 0}, {8, 2, 13, 0}, {8, 2, 14, 0}, {7, 2, 15, 0}, {6, 2, 16, 0}, {5, 2, 17, 0}, {4, 2, 18, 0}, {3, 2, 19, 0}, {2, 2, 19, 1}, {1, 2, 19, 0}}, {{1, 2, 19, 0}, {0, 2, 18, 0}, {0, 2, 17, 0}, {0, 2, 16, 0}, {0, 2, 15, 0}, {0, 2, 14, 0}, {0, 2, 13, 0}, {0, 2, 12, 0}, {0, 2, 11, 0}}}}, ["mg_villages/schems/charachoal_hill|WORKPLACE"] = {{{{5, 5, 3, 2, 2}, {4, 5, 3, 0}, {3, 4, 3, 0}, {2, 3, 3, 0}, {1, 2, 3, 0}, {0, 2, 3, 0}, {0, 2, 4, 0}, {0, 2, 5, 0}}, {}}}, ["village_ruins/schems/watchtower2|WORKPLACE"] = {{{{2, 6, 3, 2, 2}, {3, 6, 2, 0}, {3, 2, 1, 0}, {2, 1, 0, 0}}, {}}}, ["village_towntest/schems/towntest_cornernote_tower_1_90"] = {{{{9, 2, 3, 2, 1}, {8, 2, 4, 0}, {7, 2, 4, 0}, {6, 2, 3, 0}, {5, 2, 3, 0}, {4, 2, 3, 0}, {4, 2, 2, 1}, {4, 2, 1, 0}}, {{4, 2, 1, 0}, {5, 2, 0, 0}, {6, 2, 0, 0}}}}, ["village_sandcity/schems/sandcity_meeting_small_1_1_270|WORKPLACE"] = {{{{4, 2, 3, 2, 2}, {3, 2, 4, 0}, {3, 2, 5, 0}, {3, 2, 6, 1}, {3, 2, 7, 0}}, {}}}, ["mg_villages/schems/logcabin11"] = {{{{5, 4, 2, 2, 2}, {6, 4, 4, 0}, {5, 2, 4, 0}, {6, 2, 3, 0}, {6, 2, 2, 0}, {6, 2, 1, 1}, {6, 2, 0, 0}}, {{7, 4, 2, 2, 2}, {6, 4, 4, 0}, {5, 2, 4, 0}, {6, 2, 3, 0}, {6, 2, 2, 0}, {6, 2, 1, 1}, {6, 2, 0, 0}}, {{2, 2, 5, 2, 3}, {3, 2, 3, 0}, {4, 2, 3, 1}, {5, 2, 3, 0}, {6, 2, 3, 0}, {6, 2, 2, 0}, {6, 2, 1, 1}, {6, 2, 0, 0}}, {{2, 2, 6, 2, 3}, {3, 2, 3, 0}, {4, 2, 3, 1}, {5, 2, 3, 0}, {6, 2, 3, 0}, {6, 2, 2, 0}, {6, 2, 1, 1}, {6, 2, 0, 0}}, {{5, 4, 6, 2, 0}, {6, 4, 4, 0}, {5, 2, 4, 0}, {6, 2, 3, 0}, {6, 2, 2, 0}, {6, 2, 1, 1}, {6, 2, 0, 0}}, {{7, 4, 6, 2, 0}, {6, 4, 4, 0}, {5, 2, 4, 0}, {6, 2, 3, 0}, {6, 2, 2, 0}, {6, 2, 1, 1}, {6, 2, 0, 0}}, {{6, 2, 0, 0}, {5, 2, 0, 0}, {4, 2, 0, 0}}}}, ["mg_villages/schems/lumberjack_13"] = {{{{3, 2, 7, 2, 3}, {4, 2, 8, 0}, {5, 2, 8, 0}, {5, 2, 7, 0}, {5, 2, 6, 1}, {5, 2, 5, 0}}, {{3, 3, 7, 2, 3}, {4, 2, 8, 0}, {5, 2, 8, 0}, {5, 2, 7, 0}, {5, 2, 6, 1}, {5, 2, 5, 0}}, {{3, 2, 9, 2, 3}, {4, 2, 8, 0}, {5, 2, 8, 0}, {5, 2, 7, 0}, {5, 2, 6, 1}, {5, 2, 5, 0}}, {{5, 2, 5, 0}, {5, 1, 4, 0}, {5, 1, 3, 0}, {5, 2, 2, 0}, {5, 1, 1, 0}, {5, 1, 0, 0}}}}, ["village_modern_houses/schems/modern_house_a_5_270"] = {{{{5, 6, 6, 2, 2}, {4, 6, 7, 0}, {4, 6, 8, 0}, {5, 6, 9, 0}, {6, 6, 9, 0}, {7, 6, 9, 0}, {8, 6, 9, 0}, {9, 6, 9, 0}, {10, 6, 9, 0}, {11, 6, 9, 0}, {12, 6, 9, 0}, {13, 6, 9, 0}, {14, 6, 9, 0}, {15, 6, 9, 0}, {16, 6, 9, 0}, {16, 6, 10, 0}, {16, 6, 11, 0}, {16, 6, 12, 0}, {16, 6, 13, 0}, {16, 6, 14, 0}, {16, 6, 15, 0}, {16, 6, 16, 0}, {16, 6, 17, 0}, {16, 6, 18, 0}, {17, 6, 19, 0}, {17, 6, 20, 0}, {17, 6, 21, 0}, {17, 6, 22, 0}, {17, 6, 23, 0}, {17, 6, 24, 0}, {17, 6, 25, 0}, {17, 6, 26, 0}, {17, 6, 27, 0}, {17, 6, 28, 0}, {17, 6, 29, 1}, {17, 6, 30, 0}}, {{6, 6, 6, 2, 2}, {8, 6, 7, 0}, {9, 6, 8, 0}, {10, 6, 9, 0}, {11, 6, 9, 0}, {12, 6, 9, 0}, {13, 6, 9, 0}, {14, 6, 9, 0}, {15, 6, 9, 0}, {16, 6, 9, 0}, {16, 6, 10, 0}, {16, 6, 11, 0}, {16, 6, 12, 0}, {16, 6, 13, 0}, {16, 6, 14, 0}, {16, 6, 15, 0}, {16, 6, 16, 0}, {16, 6, 17, 0}, {16, 6, 18, 0}, {17, 6, 19, 0}, {17, 6, 20, 0}, {17, 6, 21, 0}, {17, 6, 22, 0}, {17, 6, 23, 0}, {17, 6, 24, 0}, {17, 6, 25, 0}, {17, 6, 26, 0}, {17, 6, 27, 0}, {17, 6, 28, 0}, {17, 6, 29, 1}, {17, 6, 30, 0}}, {{17, 12, 6, 2, 2}, {16, 12, 7, 0}, {16, 12, 8, 0}, {17, 12, 8, 0}, {18, 12, 8, 0}, {19, 12, 8, 0}, {20, 12, 8, 0}, {21, 12, 8, 1}, {22, 12, 8, 0}, {23, 11, 8, 0}, {23, 11, 9, 0}, {23, 11, 10, 0}, {23, 11, 11, 0}, {23, 10, 12, 0}, {23, 9, 13, 0}, {23, 8, 14, 0}, {23, 7, 15, 0}, {22, 7, 16, 0}, {21, 6, 16, 0}, {20, 6, 17, 0}, {19, 6, 17, 0}, {18, 6, 17, 0}, {17, 6, 18, 0}, {17, 6, 19, 0}, {17, 6, 20, 0}, {17, 6, 21, 0}, {17, 6, 22, 0}, {17, 6, 23, 0}, {17, 6, 24, 0}, {17, 6, 25, 0}, {17, 6, 26, 0}, {17, 6, 27, 0}, {17, 6, 28, 0}, {17, 6, 29, 1}, {17, 6, 30, 0}}, {{18, 12, 6, 2, 2}, {20, 12, 7, 0}, {21, 12, 8, 1}, {22, 12, 8, 0}, {23, 11, 8, 0}, {23, 11, 9, 0}, {23, 11, 10, 0}, {23, 11, 11, 0}, {23, 10, 12, 0}, {23, 9, 13, 0}, {23, 8, 14, 0}, {23, 7, 15, 0}, {22, 7, 16, 0}, {21, 6, 16, 0}, {20, 6, 17, 0}, {19, 6, 17, 0}, {18, 6, 17, 0}, {17, 6, 18, 0}, {17, 6, 19, 0}, {17, 6, 20, 0}, {17, 6, 21, 0}, {17, 6, 22, 0}, {17, 6, 23, 0}, {17, 6, 24, 0}, {17, 6, 25, 0}, {17, 6, 26, 0}, {17, 6, 27, 0}, {17, 6, 28, 0}, {17, 6, 29, 1}, {17, 6, 30, 0}}, {{22, 6, 21, 2, 1}, {21, 6, 23, 0}, {20, 6, 24, 0}, {19, 6, 25, 0}, {18, 6, 26, 0}, {17, 6, 27, 0}, {17, 6, 28, 0}, {17, 6, 29, 1}, {17, 6, 30, 0}}, {{22, 6, 28, 2, 1}, {21, 6, 27, 0}, {20, 6, 27, 0}, {19, 6, 27, 0}, {18, 6, 28, 0}, {17, 6, 29, 1}, {17, 6, 30, 0}}, {{17, 6, 30, 0}, {17, 6, 31, 0}, {17, 6, 32, 0}, {17, 6, 33, 0}, {16, 6, 34, 0}, {15, 6, 35, 0}}}, {{{5, 6, 6, 2, 2}, {4, 6, 7, 0}, {4, 6, 8, 0}, {5, 6, 9, 0}, {6, 6, 9, 0}, {7, 6, 9, 0}, {8, 6, 9, 0}, {9, 6, 9, 0}, {10, 6, 9, 0}, {11, 6, 9, 0}, {12, 6, 9, 0}, {13, 6, 9, 0}, {14, 6, 9, 0}, {15, 6, 9, 0}, {16, 6, 9, 0}, {16, 6, 10, 0}, {16, 6, 11, 0}, {16, 6, 12, 0}, {16, 6, 13, 0}, {16, 6, 14, 0}, {16, 6, 15, 0}, {16, 6, 16, 0}, {16, 6, 17, 0}, {16, 6, 18, 0}, {17, 6, 19, 0}, {17, 6, 20, 0}, {17, 6, 21, 0}, {17, 6, 22, 0}, {17, 6, 23, 0}, {17, 6, 24, 0}, {17, 6, 25, 0}, {17, 6, 26, 0}, {17, 6, 27, 0}, {18, 6, 28, 0}, {18, 6, 29, 1}, {18, 6, 30, 0}}, {{6, 6, 6, 2, 2}, {8, 6, 7, 0}, {9, 6, 8, 0}, {10, 6, 9, 0}, {11, 6, 9, 0}, {12, 6, 9, 0}, {13, 6, 9, 0}, {14, 6, 9, 0}, {15, 6, 9, 0}, {16, 6, 9, 0}, {16, 6, 10, 0}, {16, 6, 11, 0}, {16, 6, 12, 0}, {16, 6, 13, 0}, {16, 6, 14, 0}, {16, 6, 15, 0}, {16, 6, 16, 0}, {16, 6, 17, 0}, {16, 6, 18, 0}, {17, 6, 19, 0}, {17, 6, 20, 0}, {17, 6, 21, 0}, {17, 6, 22, 0}, {17, 6, 23, 0}, {17, 6, 24, 0}, {17, 6, 25, 0}, {17, 6, 26, 0}, {17, 6, 27, 0}, {18, 6, 28, 0}, {18, 6, 29, 1}, {18, 6, 30, 0}}, {{17, 12, 6, 2, 2}, {16, 12, 7, 0}, {16, 12, 8, 0}, {17, 12, 8, 0}, {18, 12, 8, 0}, {19, 12, 8, 0}, {20, 12, 8, 0}, {21, 12, 8, 1}, {22, 12, 8, 0}, {23, 11, 8, 0}, {23, 11, 9, 0}, {23, 11, 10, 0}, {23, 11, 11, 0}, {23, 10, 12, 0}, {23, 9, 13, 0}, {23, 8, 14, 0}, {23, 7, 15, 0}, {22, 7, 16, 0}, {21, 6, 16, 0}, {20, 6, 17, 0}, {19, 6, 17, 0}, {18, 6, 17, 0}, {18, 6, 18, 0}, {18, 6, 19, 0}, {18, 6, 20, 0}, {18, 6, 21, 0}, {18, 6, 22, 0}, {18, 6, 23, 0}, {18, 6, 24, 0}, {18, 6, 25, 0}, {18, 6, 26, 0}, {18, 6, 27, 0}, {18, 6, 28, 0}, {18, 6, 29, 1}, {18, 6, 30, 0}}, {{18, 12, 6, 2, 2}, {20, 12, 7, 0}, {21, 12, 8, 1}, {22, 12, 8, 0}, {23, 11, 8, 0}, {23, 11, 9, 0}, {23, 11, 10, 0}, {23, 11, 11, 0}, {23, 10, 12, 0}, {23, 9, 13, 0}, {23, 8, 14, 0}, {23, 7, 15, 0}, {22, 7, 16, 0}, {21, 6, 16, 0}, {20, 6, 17, 0}, {19, 6, 17, 0}, {18, 6, 17, 0}, {18, 6, 18, 0}, {18, 6, 19, 0}, {18, 6, 20, 0}, {18, 6, 21, 0}, {18, 6, 22, 0}, {18, 6, 23, 0}, {18, 6, 24, 0}, {18, 6, 25, 0}, {18, 6, 26, 0}, {18, 6, 27, 0}, {18, 6, 28, 0}, {18, 6, 29, 1}, {18, 6, 30, 0}}, {{22, 6, 21, 2, 1}, {21, 6, 23, 0}, {20, 6, 24, 0}, {19, 6, 25, 0}, {18, 6, 26, 0}, {18, 6, 27, 0}, {18, 6, 28, 0}, {18, 6, 29, 1}, {18, 6, 30, 0}}, {{22, 6, 28, 2, 1}, {21, 6, 27, 0}, {20, 6, 27, 0}, {19, 6, 27, 0}, {18, 6, 28, 0}, {18, 6, 29, 1}, {18, 6, 30, 0}}, {{18, 6, 30, 0}, {17, 6, 31, 0}, {17, 6, 32, 0}, {17, 6, 33, 0}, {16, 6, 34, 0}, {15, 6, 35, 0}}}, {{{5, 6, 6, 2, 2}, {4, 6, 7, 0}, {4, 6, 8, 0}, {5, 6, 9, 0}, {6, 6, 9, 0}, {7, 6, 9, 0}, {8, 6, 9, 0}, {9, 6, 9, 0}, {10, 6, 9, 0}, {11, 6, 9, 0}, {12, 6, 9, 0}, {13, 6, 9, 0}, {14, 6, 9, 0}, {15, 6, 9, 0}, {16, 6, 9, 0}, {16, 6, 10, 0}, {16, 6, 11, 0}, {16, 6, 12, 0}, {16, 6, 13, 0}, {16, 6, 14, 0}, {16, 6, 15, 0}, {16, 6, 16, 0}, {16, 6, 17, 0}, {16, 6, 18, 0}, {17, 6, 19, 0}, {17, 6, 20, 0}, {17, 6, 21, 0}, {17, 6, 22, 0}, {17, 6, 23, 0}, {17, 6, 24, 0}, {17, 6, 25, 0}, {17, 6, 26, 0}, {17, 6, 27, 0}, {17, 6, 28, 0}, {17, 7, 29, 1}, {17, 6, 30, 0}}, {{6, 6, 6, 2, 2}, {8, 6, 7, 0}, {9, 6, 8, 0}, {10, 6, 9, 0}, {11, 6, 9, 0}, {12, 6, 9, 0}, {13, 6, 9, 0}, {14, 6, 9, 0}, {15, 6, 9, 0}, {16, 6, 9, 0}, {16, 6, 10, 0}, {16, 6, 11, 0}, {16, 6, 12, 0}, {16, 6, 13, 0}, {16, 6, 14, 0}, {16, 6, 15, 0}, {16, 6, 16, 0}, {16, 6, 17, 0}, {16, 6, 18, 0}, {17, 6, 19, 0}, {17, 6, 20, 0}, {17, 6, 21, 0}, {17, 6, 22, 0}, {17, 6, 23, 0}, {17, 6, 24, 0}, {17, 6, 25, 0}, {17, 6, 26, 0}, {17, 6, 27, 0}, {17, 6, 28, 0}, {17, 7, 29, 1}, {17, 6, 30, 0}}, {{17, 12, 6, 2, 2}, {16, 12, 7, 0}, {16, 12, 8, 0}, {17, 12, 8, 0}, {18, 12, 8, 0}, {19, 12, 8, 0}, {20, 12, 8, 0}, {21, 12, 8, 1}, {22, 12, 8, 0}, {23, 11, 8, 0}, {23, 11, 9, 0}, {23, 11, 10, 0}, {23, 11, 11, 0}, {23, 10, 12, 0}, {23, 9, 13, 0}, {23, 8, 14, 0}, {23, 7, 15, 0}, {22, 7, 16, 0}, {21, 6, 16, 0}, {20, 6, 17, 0}, {19, 6, 17, 0}, {18, 6, 17, 0}, {17, 6, 18, 0}, {17, 6, 19, 0}, {17, 6, 20, 0}, {17, 6, 21, 0}, {17, 6, 22, 0}, {17, 6, 23, 0}, {17, 6, 24, 0}, {17, 6, 25, 0}, {17, 6, 26, 0}, {17, 6, 27, 0}, {17, 6, 28, 0}, {17, 7, 29, 1}, {17, 6, 30, 0}}, {{18, 12, 6, 2, 2}, {20, 12, 7, 0}, {21, 12, 8, 1}, {22, 12, 8, 0}, {23, 11, 8, 0}, {23, 11, 9, 0}, {23, 11, 10, 0}, {23, 11, 11, 0}, {23, 10, 12, 0}, {23, 9, 13, 0}, {23, 8, 14, 0}, {23, 7, 15, 0}, {22, 7, 16, 0}, {21, 6, 16, 0}, {20, 6, 17, 0}, {19, 6, 17, 0}, {18, 6, 17, 0}, {17, 6, 18, 0}, {17, 6, 19, 0}, {17, 6, 20, 0}, {17, 6, 21, 0}, {17, 6, 22, 0}, {17, 6, 23, 0}, {17, 6, 24, 0}, {17, 6, 25, 0}, {17, 6, 26, 0}, {17, 6, 27, 0}, {17, 6, 28, 0}, {17, 7, 29, 1}, {17, 6, 30, 0}}, {{22, 6, 21, 2, 1}, {21, 6, 23, 0}, {20, 6, 24, 0}, {19, 6, 25, 0}, {18, 6, 26, 0}, {17, 6, 27, 0}, {17, 6, 28, 0}, {17, 7, 29, 1}, {17, 6, 30, 0}}, {{22, 6, 28, 2, 1}, {21, 6, 27, 0}, {20, 6, 27, 0}, {19, 6, 27, 0}, {18, 6, 28, 0}, {18, 7, 29, 1}, {18, 6, 30, 0}}, {{17, 6, 30, 0}, {17, 6, 31, 0}, {17, 6, 32, 0}, {17, 6, 33, 0}, {16, 6, 34, 0}, {15, 6, 35, 0}}}, {{{5, 6, 6, 2, 2}, {4, 6, 7, 0}, {4, 6, 8, 0}, {5, 6, 9, 0}, {6, 6, 9, 0}, {7, 6, 9, 0}, {8, 6, 9, 0}, {9, 6, 9, 0}, {10, 6, 9, 0}, {11, 6, 9, 0}, {12, 6, 9, 0}, {13, 6, 9, 0}, {14, 6, 9, 0}, {15, 6, 9, 0}, {16, 6, 9, 0}, {16, 6, 10, 0}, {16, 6, 11, 0}, {16, 6, 12, 0}, {16, 6, 13, 0}, {16, 6, 14, 0}, {16, 6, 15, 0}, {16, 6, 16, 0}, {16, 6, 17, 0}, {16, 6, 18, 0}, {17, 6, 19, 0}, {17, 6, 20, 0}, {17, 6, 21, 0}, {17, 6, 22, 0}, {17, 6, 23, 0}, {17, 6, 24, 0}, {17, 6, 25, 0}, {17, 6, 26, 0}, {17, 6, 27, 0}, {18, 6, 28, 0}, {18, 7, 29, 1}, {18, 6, 30, 0}}, {{6, 6, 6, 2, 2}, {8, 6, 7, 0}, {9, 6, 8, 0}, {10, 6, 9, 0}, {11, 6, 9, 0}, {12, 6, 9, 0}, {13, 6, 9, 0}, {14, 6, 9, 0}, {15, 6, 9, 0}, {16, 6, 9, 0}, {16, 6, 10, 0}, {16, 6, 11, 0}, {16, 6, 12, 0}, {16, 6, 13, 0}, {16, 6, 14, 0}, {16, 6, 15, 0}, {16, 6, 16, 0}, {16, 6, 17, 0}, {16, 6, 18, 0}, {17, 6, 19, 0}, {17, 6, 20, 0}, {17, 6, 21, 0}, {17, 6, 22, 0}, {17, 6, 23, 0}, {17, 6, 24, 0}, {17, 6, 25, 0}, {17, 6, 26, 0}, {17, 6, 27, 0}, {18, 6, 28, 0}, {18, 7, 29, 1}, {18, 6, 30, 0}}, {{17, 12, 6, 2, 2}, {16, 12, 7, 0}, {16, 12, 8, 0}, {17, 12, 8, 0}, {18, 12, 8, 0}, {19, 12, 8, 0}, {20, 12, 8, 0}, {21, 12, 8, 1}, {22, 12, 8, 0}, {23, 11, 8, 0}, {23, 11, 9, 0}, {23, 11, 10, 0}, {23, 11, 11, 0}, {23, 10, 12, 0}, {23, 9, 13, 0}, {23, 8, 14, 0}, {23, 7, 15, 0}, {22, 7, 16, 0}, {21, 6, 16, 0}, {20, 6, 17, 0}, {19, 6, 17, 0}, {18, 6, 17, 0}, {18, 6, 18, 0}, {18, 6, 19, 0}, {18, 6, 20, 0}, {18, 6, 21, 0}, {18, 6, 22, 0}, {18, 6, 23, 0}, {18, 6, 24, 0}, {18, 6, 25, 0}, {18, 6, 26, 0}, {18, 6, 27, 0}, {18, 6, 28, 0}, {18, 7, 29, 1}, {18, 6, 30, 0}}, {{18, 12, 6, 2, 2}, {20, 12, 7, 0}, {21, 12, 8, 1}, {22, 12, 8, 0}, {23, 11, 8, 0}, {23, 11, 9, 0}, {23, 11, 10, 0}, {23, 11, 11, 0}, {23, 10, 12, 0}, {23, 9, 13, 0}, {23, 8, 14, 0}, {23, 7, 15, 0}, {22, 7, 16, 0}, {21, 6, 16, 0}, {20, 6, 17, 0}, {19, 6, 17, 0}, {18, 6, 17, 0}, {18, 6, 18, 0}, {18, 6, 19, 0}, {18, 6, 20, 0}, {18, 6, 21, 0}, {18, 6, 22, 0}, {18, 6, 23, 0}, {18, 6, 24, 0}, {18, 6, 25, 0}, {18, 6, 26, 0}, {18, 6, 27, 0}, {18, 6, 28, 0}, {18, 7, 29, 1}, {18, 6, 30, 0}}, {{22, 6, 21, 2, 1}, {21, 6, 23, 0}, {20, 6, 24, 0}, {19, 6, 25, 0}, {18, 6, 26, 0}, {18, 6, 27, 0}, {18, 6, 28, 0}, {18, 7, 29, 1}, {18, 6, 30, 0}}, {{22, 6, 28, 2, 1}, {21, 6, 27, 0}, {20, 6, 27, 0}, {19, 6, 27, 0}, {18, 6, 28, 0}, {18, 7, 29, 1}, {18, 6, 30, 0}}, {{18, 6, 30, 0}, {17, 6, 31, 0}, {17, 6, 32, 0}, {17, 6, 33, 0}, {16, 6, 34, 0}, {15, 6, 35, 0}}}}, ["mg_villages/schems/watermill_1|WORKPLACE"] = {{{{8, 5, 15, 2, 0}, {8, 5, 14, 0}, {7, 5, 13, 0}, {7, 5, 12, 0}, {7, 5, 11, 0}, {8, 5, 10, 0}, {8, 5, 9, 1}, {8, 5, 8, 0}}, {{8, 5, 8, 0}, {8, 5, 7, 0}, {8, 5, 6, 0}, {8, 5, 5, 0}, {8, 5, 4, 0}, {8, 5, 3, 0}, {8, 5, 2, 0}, {8, 5, 1, 0}, {8, 5, 0, 0}, {9, 5, 0, 0}}}, {{{3, 6, 10, 2, 2}, {5, 6, 11, 1}, {5, 6, 12, 0}, {5, 6, 13, 0}, {5, 6, 14, 0}, {5, 6, 15, 0}, {5, 6, 16, 0}, {6, 5, 16, 1}, {7, 5, 16, 0}, {7, 5, 15, 0}, {7, 5, 14, 0}, {7, 5, 13, 0}, {7, 5, 12, 0}, {7, 5, 11, 0}, {7, 5, 10, 0}, {7, 5, 9, 1}, {7, 5, 8, 0}}, {{5, 6, 10, 2, 1}, {5, 6, 12, 0}, {5, 6, 13, 0}, {5, 6, 14, 0}, {5, 6, 15, 0}, {5, 6, 16, 0}, {6, 5, 16, 1}, {7, 5, 16, 0}, {7, 5, 15, 0}, {7, 5, 14, 0}, {7, 5, 13, 0}, {7, 5, 12, 0}, {7, 5, 11, 0}, {7, 5, 10, 0}, {7, 5, 9, 1}, {7, 5, 8, 0}}, {{7, 5, 8, 0}, {8, 5, 7, 0}, {8, 5, 6, 0}, {8, 5, 5, 0}, {8, 5, 4, 0}, {8, 5, 3, 0}, {8, 5, 2, 0}, {8, 5, 1, 0}, {8, 5, 0, 0}, {9, 5, 0, 0}}}, {{{3, 6, 10, 2, 2}, {5, 6, 11, 1}, {5, 6, 12, 0}, {5, 6, 13, 0}, {5, 6, 14, 0}, {5, 6, 15, 0}, {5, 6, 16, 0}, {6, 5, 16, 1}, {7, 5, 16, 0}, {7, 5, 17, 0}, {7, 5, 18, 1}, {7, 5, 19, 0}}, {{5, 6, 10, 2, 1}, {5, 6, 12, 0}, {5, 6, 13, 0}, {5, 6, 14, 0}, {5, 6, 15, 0}, {5, 6, 16, 0}, {6, 5, 16, 1}, {7, 5, 16, 0}, {7, 5, 17, 0}, {7, 5, 18, 1}, {7, 5, 19, 0}}, {{7, 5, 19, 0}, {6, 5, 20, 0}, {5, 5, 21, 0}, {4, 5, 21, 0}, {3, 5, 21, 0}, {2, 5, 20, 0}, {1, 5, 19, 0}, {1, 5, 18, 0}, {1, 5, 17, 0}, {1, 5, 16, 0}, {1, 5, 15, 0}, {1, 5, 14, 0}, {1, 5, 13, 0}, {1, 5, 12, 0}, {1, 5, 11, 0}, {1, 5, 10, 0}, {1, 5, 9, 0}, {1, 5, 8, 0}, {1, 5, 7, 0}, {2, 5, 7, 0}, {3, 5, 7, 0}, {4, 5, 7, 0}, {5, 5, 7, 0}, {6, 5, 7, 0}, {7, 5, 7, 0}, {8, 5, 6, 0}, {8, 5, 5, 0}, {8, 5, 4, 0}, {8, 5, 3, 0}, {8, 5, 2, 0}, {8, 5, 1, 0}, {8, 5, 0, 0}, {9, 5, 0, 0}}}, {{{3, 6, 10, 2, 2}, {5, 6, 11, 1}, {5, 6, 12, 0}, {5, 6, 13, 0}, {5, 6, 14, 0}, {5, 6, 15, 0}, {5, 6, 16, 0}, {6, 5, 16, 1}, {7, 5, 16, 0}, {8, 5, 17, 0}, {8, 5, 18, 1}, {8, 5, 19, 0}}, {{5, 6, 10, 2, 1}, {5, 6, 12, 0}, {5, 6, 13, 0}, {5, 6, 14, 0}, {5, 6, 15, 0}, {5, 6, 16, 0}, {6, 5, 16, 1}, {7, 5, 16, 0}, {8, 5, 17, 0}, {8, 5, 18, 1}, {8, 5, 19, 0}}, {{8, 5, 19, 0}, {7, 5, 19, 0}, {6, 5, 20, 0}, {5, 5, 21, 0}, {4, 5, 21, 0}, {3, 5, 21, 0}, {2, 5, 20, 0}, {1, 5, 19, 0}, {1, 5, 18, 0}, {1, 5, 17, 0}, {1, 5, 16, 0}, {1, 5, 15, 0}, {1, 5, 14, 0}, {1, 5, 13, 0}, {1, 5, 12, 0}, {1, 5, 11, 0}, {1, 5, 10, 0}, {1, 5, 9, 0}, {1, 5, 8, 0}, {1, 5, 7, 0}, {2, 5, 7, 0}, {3, 5, 7, 0}, {4, 5, 7, 0}, {5, 5, 7, 0}, {6, 5, 7, 0}, {7, 5, 7, 0}, {8, 5, 6, 0}, {8, 5, 5, 0}, {8, 5, 4, 0}, {8, 5, 3, 0}, {8, 5, 2, 0}, {8, 5, 1, 0}, {8, 5, 0, 0}, {9, 5, 0, 0}}}}, ["village_gambit/schems/gambit_tower_1_0_270|WORKPLACE"] = {{{{4, 16, 5, 2, 2}, {4, 7, 4, 0}, {4, 7, 5, 0}, {5, 6, 5, 0}, {5, 5, 4, 0}, {5, 4, 3, 0}, {4, 3, 3, 0}, {4, 2, 4, 0}, {4, 2, 5, 0}, {4, 2, 6, 1}, {4, 2, 7, 0}}, {{4, 2, 7, 0}, {4, 1, 8, 0}}}}, ["village_gambit/schems/gambit_stable_1_2_90|WORKPLACE"] = {{{{4, 3, 6, 2, 0}, {5, 3, 5, 0}, {6, 3, 4, 0}, {6, 3, 3, 0}, {6, 3, 2, 0}, {6, 3, 1, 0}, {7, 3, 0, 0}, {8, 3, 0, 0}, {9, 3, 0, 0}, {10, 3, 0, 0}}, {}}}, ["village_gambit/schems/gambit_shop_large_0_0|WORKPLACE"] = {{{{7, 2, 9, 2, 2}, {6, 2, 9, 0}, {5, 2, 9, 0}, {4, 2, 10, 0}, {4, 2, 11, 0}, {4, 2, 12, 0}, {3, 2, 12, 1}, {2, 2, 12, 0}}, {{2, 2, 12, 0}, {1, 2, 12, 0}, {0, 1, 12, 0}, {0, 1, 11, 0}, {0, 1, 10, 0}, {0, 1, 9, 0}, {0, 1, 8, 0}}}}, ["village_sandcity/schems/sandcity_ap_mixed_1_1_270"] = {{{{4, 2, 2, 2, 1}, {3, 2, 3, 0}, {2, 2, 3, 1}, {1, 2, 3, 0}}, {{7, 2, 4, 2, 1}, {5, 2, 5, 0}, {5, 2, 6, 0}, {5, 2, 7, 1}, {5, 2, 8, 0}}, {{2, 2, 5, 2, 2}, {3, 2, 6, 0}, {3, 2, 7, 1}, {4, 2, 8, 0}}, {{7, 2, 5, 2, 1}, {5, 2, 6, 0}, {5, 2, 7, 1}, {5, 2, 8, 0}}, {{7, 2, 6, 2, 1}, {5, 2, 6, 0}, {5, 2, 7, 1}, {5, 2, 8, 0}}, {{9, 2, 7, 2, 1}, {8, 2, 8, 0}, {7, 2, 8, 1}, {6, 2, 8, 0}}, {{1, 2, 3, 0}, {0, 2, 3, 0}, {0, 2, 4, 0}, {0, 2, 5, 0}, {0, 2, 6, 0}, {0, 2, 7, 0}, {0, 2, 8, 0}, {0, 2, 9, 0}, {1, 2, 10, 0}, {2, 2, 10, 0}, {3, 2, 10, 0}, {4, 2, 10, 0}, {5, 2, 10, 0}}}}, ["village_gambit/schems/gambit_shop_0_90|WORKPLACE"] = {{{{4, 2, 6, 2, 0}, {5, 2, 6, 0}, {6, 2, 6, 0}, {7, 2, 6, 0}, {7, 2, 5, 0}, {7, 2, 4, 0}, {6, 2, 4, 1}, {5, 2, 4, 0}}, {{5, 2, 4, 0}, {5, 2, 3, 0}, {5, 2, 2, 0}, {5, 1, 1, 0}, {5, 1, 0, 0}}}}, ["mg_villages/schems/small_house_1_0"] = {{{{4, 2, 2, 2, 1}, {3, 2, 3, 0}, {2, 2, 3, 0}, {1, 2, 3, 1}, {0, 2, 3, 0}}, {}}}, ["mg_villages/schems/lumberjack_16"] = {{{{4, 2, 5, 2, 0}, {3, 2, 3, 0}, {2, 2, 3, 1}, {1, 2, 3, 0}}, {{4, 3, 5, 2, 0}, {3, 2, 4, 0}, {3, 2, 3, 0}, {2, 2, 3, 1}, {1, 2, 3, 0}}, {{1, 2, 3, 0}, {1, 2, 2, 0}, {1, 2, 1, 0}, {2, 2, 0, 0}, {3, 2, 0, 0}}}}, ["village_gambit/schems/gambit_pub_1_0_0|WORKPLACE"] = {{{{4, 2, 3, 2, 2}, {5, 2, 4, 0}, {6, 2, 4, 0}, {7, 2, 4, 0}, {8, 2, 4, 0}, {8, 2, 5, 0}, {8, 2, 6, 0}, {7, 2, 7, 0}, {6, 2, 7, 0}, {5, 2, 7, 0}, {4, 2, 7, 0}, {3, 1, 7, 0}, {2, 1, 7, 0}, {1, 1, 7, 0}, {0, 1, 7, 0}}, {}}}, ["mg_villages/schems/lumberjack_11"] = {{{{3, 2, 4, 2, 3}, {4, 2, 3, 0}, {4, 2, 2, 1}, {4, 2, 1, 0}}, {{3, 3, 4, 2, 3}, {4, 2, 3, 0}, {4, 2, 2, 1}, {4, 2, 1, 0}}, {{4, 2, 1, 0}, {4, 2, 0, 0}, {3, 2, 0, 0}}}}, ["village_towntest/schems/towntest_kddekadenz_home1_1_270"] = {{{{3, 6, 3, 2, 3}, {4, 6, 5, 0}, {5, 6, 5, 0}, {6, 6, 5, 0}, {7, 6, 5, 0}, {8, 6, 5, 0}, {9, 6, 5, 0}, {9, 6, 4, 0}, {9, 6, 3, 0}, {8, 6, 3, 0}, {7, 5, 3, 0}, {6, 4, 3, 0}, {5, 3, 3, 0}, {5, 2, 4, 0}, {6, 2, 5, 0}, {6, 2, 6, 0}, {6, 2, 7, 0}, {6, 2, 8, 1}, {6, 2, 9, 0}}, {{4, 6, 7, 2, 0}, {3, 6, 6, 0}, {3, 6, 5, 0}, {4, 6, 5, 0}, {5, 6, 5, 0}, {6, 6, 5, 0}, {7, 6, 5, 0}, {8, 6, 5, 0}, {9, 6, 5, 0}, {9, 6, 4, 0}, {9, 6, 3, 0}, {8, 6, 3, 0}, {7, 5, 3, 0}, {6, 4, 3, 0}, {5, 3, 3, 0}, {5, 2, 4, 0}, {6, 2, 5, 0}, {6, 2, 6, 0}, {6, 2, 7, 0}, {6, 2, 8, 1}, {6, 2, 9, 0}}, {{5, 6, 7, 2, 0}, {6, 6, 6, 0}, {6, 6, 5, 0}, {7, 6, 5, 0}, {8, 6, 5, 0}, {9, 6, 5, 0}, {9, 6, 4, 0}, {9, 6, 3, 0}, {8, 6, 3, 0}, {7, 5, 3, 0}, {6, 4, 3, 0}, {5, 3, 3, 0}, {5, 2, 4, 0}, {6, 2, 5, 0}, {6, 2, 6, 0}, {6, 2, 7, 0}, {6, 2, 8, 1}, {6, 2, 9, 0}}, {{7, 6, 7, 2, 0}, {8, 6, 6, 0}, {8, 6, 5, 0}, {9, 6, 5, 0}, {9, 6, 4, 0}, {9, 6, 3, 0}, {8, 6, 3, 0}, {7, 5, 3, 0}, {6, 4, 3, 0}, {5, 3, 3, 0}, {5, 2, 4, 0}, {6, 2, 5, 0}, {6, 2, 6, 0}, {6, 2, 7, 0}, {6, 2, 8, 1}, {6, 2, 9, 0}}, {{9, 6, 7, 2, 0}, {8, 6, 6, 0}, {8, 6, 5, 0}, {9, 6, 5, 0}, {9, 6, 4, 0}, {9, 6, 3, 0}, {8, 6, 3, 0}, {7, 5, 3, 0}, {6, 4, 3, 0}, {5, 3, 3, 0}, {5, 2, 4, 0}, {6, 2, 5, 0}, {6, 2, 6, 0}, {6, 2, 7, 0}, {6, 2, 8, 1}, {6, 2, 9, 0}}, {{6, 2, 9, 0}, {6, 2, 10, 0}, {6, 2, 11, 0}, {6, 2, 12, 0}, {6, 2, 13, 0}, {6, 2, 14, 0}, {6, 2, 15, 0}, {6, 2, 16, 0}}}}, ["village_gambit/schems/gambit_library_hotel_0_180"] = {{{{7, 2, 3, 2, 2}, {6, 2, 4, 0}, {5, 2, 4, 1}, {5, 2, 5, 0}, {5, 2, 6, 0}, {5, 2, 7, 0}, {5, 2, 8, 0}, {5, 2, 9, 0}, {5, 2, 10, 0}, {5, 2, 11, 0}, {6, 2, 11, 0}, {7, 2, 12, 0}, {8, 2, 13, 0}, {8, 2, 14, 0}, {9, 2, 14, 1}, {10, 2, 14, 0}}, {{8, 6, 6, 2, 3}, {10, 6, 7, 0}, {10, 6, 8, 0}, {9, 6, 9, 0}, {8, 6, 9, 0}, {7, 6, 9, 0}, {6, 6, 9, 1}, {5, 6, 9, 0}, {5, 6, 8, 0}, {5, 6, 7, 0}, {5, 6, 6, 0}, {5, 6, 5, 0}, {5, 6, 4, 0}, {6, 6, 4, 0}, {7, 5, 4, 0}, {8, 4, 4, 0}, {9, 3, 4, 0}, {9, 3, 5, 0}, {9, 2, 6, 0}, {9, 2, 7, 0}, {9, 2, 8, 0}, {9, 2, 9, 0}, {9, 2, 10, 0}, {8, 2, 11, 0}, {8, 2, 12, 0}, {8, 2, 13, 0}, {8, 2, 14, 0}, {9, 2, 14, 1}, {10, 2, 14, 0}}, {{8, 6, 7, 2, 3}, {7, 6, 9, 0}, {6, 6, 9, 1}, {5, 6, 9, 0}, {5, 6, 8, 0}, {5, 6, 7, 0}, {5, 6, 6, 0}, {5, 6, 5, 0}, {5, 6, 4, 0}, {6, 6, 4, 0}, {7, 5, 4, 0}, {8, 4, 4, 0}, {9, 3, 4, 0}, {9, 3, 5, 0}, {9, 2, 6, 0}, {9, 2, 7, 0}, {9, 2, 8, 0}, {9, 2, 9, 0}, {9, 2, 10, 0}, {8, 2, 11, 0}, {8, 2, 12, 0}, {8, 2, 13, 0}, {8, 2, 14, 0}, {9, 2, 14, 1}, {10, 2, 14, 0}}, {{8, 6, 15, 2, 3}, {7, 6, 13, 0}, {6, 6, 13, 1}, {5, 6, 13, 0}, {5, 6, 12, 0}, {5, 6, 11, 0}, {5, 6, 10, 0}, {5, 6, 9, 0}, {5, 6, 8, 0}, {5, 6, 7, 0}, {5, 6, 6, 0}, {5, 6, 5, 0}, {5, 6, 4, 0}, {6, 6, 4, 0}, {7, 5, 4, 0}, {8, 4, 4, 0}, {9, 3, 4, 0}, {9, 3, 5, 0}, {9, 2, 6, 0}, {9, 2, 7, 0}, {9, 2, 8, 0}, {9, 2, 9, 0}, {9, 2, 10, 0}, {8, 2, 11, 0}, {8, 2, 12, 0}, {8, 2, 13, 0}, {8, 2, 14, 0}, {9, 2, 14, 1}, {10, 2, 14, 0}}, {{8, 6, 16, 2, 3}, {10, 6, 15, 0}, {10, 6, 14, 0}, {9, 6, 13, 0}, {8, 6, 13, 0}, {7, 6, 13, 0}, {6, 6, 13, 1}, {5, 6, 13, 0}, {5, 6, 12, 0}, {5, 6, 11, 0}, {5, 6, 10, 0}, {5, 6, 9, 0}, {5, 6, 8, 0}, {5, 6, 7, 0}, {5, 6, 6, 0}, {5, 6, 5, 0}, {5, 6, 4, 0}, {6, 6, 4, 0}, {7, 5, 4, 0}, {8, 4, 4, 0}, {9, 3, 4, 0}, {9, 3, 5, 0}, {9, 2, 6, 0}, {9, 2, 7, 0}, {9, 2, 8, 0}, {9, 2, 9, 0}, {9, 2, 10, 0}, {8, 2, 11, 0}, {8, 2, 12, 0}, {8, 2, 13, 0}, {8, 2, 14, 0}, {9, 2, 14, 1}, {10, 2, 14, 0}}, {{10, 2, 14, 0}, {11, 2, 13, 0}, {12, 1, 13, 0}, {13, 1, 12, 0}, {13, 1, 11, 0}, {13, 1, 10, 0}, {13, 1, 9, 0}}}}, ["village_gambit/schems/gambit_house_1_0_0"] = {{{{7, 2, 5, 2, 0}, {6, 2, 6, 0}, {6, 2, 7, 0}, {5, 2, 7, 0}, {4, 2, 8, 0}, {3, 2, 8, 1}, {2, 2, 8, 0}}, {{7, 4, 5, 2, 0}, {6, 2, 4, 0}, {6, 2, 5, 0}, {6, 2, 6, 0}, {6, 2, 7, 0}, {5, 2, 7, 0}, {4, 2, 8, 0}, {3, 2, 8, 1}, {2, 2, 8, 0}}, {{7, 2, 8, 2, 0}, {5, 2, 8, 0}, {4, 2, 8, 0}, {3, 2, 8, 1}, {2, 2, 8, 0}}, {{7, 4, 8, 2, 0}, {6, 2, 7, 0}, {5, 2, 7, 0}, {4, 2, 8, 0}, {3, 2, 8, 1}, {2, 2, 8, 0}}, {{2, 2, 8, 0}, {1, 2, 8, 0}, {0, 1, 8, 0}, {0, 1, 7, 0}, {0, 1, 6, 0}}}}, ["mg_villages/schems/logcabinpub3|WORKPLACE"] = {{{{12, 2, 8, 2, 1}, {12, 2, 9, 0}, {12, 2, 10, 0}, {11, 2, 10, 0}, {10, 2, 10, 0}, {10, 2, 9, 0}, {10, 2, 8, 0}, {10, 2, 7, 0}, {10, 2, 6, 0}, {10, 2, 5, 1}, {10, 2, 4, 0}}, {{10, 2, 4, 0}, {10, 2, 3, 0}, {10, 2, 2, 0}, {10, 2, 1, 0}, {10, 2, 0, 0}}}}, ["mg_villages/schems/library_1_0"] = {{{{2, 2, 4, 2, 0}, {4, 2, 3, 0}, {4, 2, 4, 1}, {4, 2, 5, 0}, {3, 2, 6, 0}, {2, 2, 6, 0}, {1, 2, 6, 1}, {0, 2, 6, 0}}, {}}, {{{2, 2, 4, 2, 0}, {4, 2, 3, 0}, {4, 2, 4, 1}, {4, 2, 5, 0}, {4, 2, 6, 0}, {4, 2, 7, 0}, {4, 2, 8, 0}, {5, 2, 9, 0}, {6, 2, 9, 0}, {7, 2, 9, 0}, {8, 2, 9, 0}, {9, 2, 9, 0}, {10, 2, 9, 0}, {10, 2, 8, 0}, {10, 2, 7, 1}, {10, 2, 6, 0}}, {{10, 2, 6, 0}, {9, 2, 5, 0}, {8, 2, 4, 0}, {8, 2, 3, 0}, {8, 2, 2, 0}, {8, 2, 1, 0}, {8, 2, 0, 0}, {7, 2, 0, 0}, {6, 2, 0, 0}, {5, 2, 0, 0}, {4, 2, 0, 0}, {3, 2, 0, 0}, {2, 2, 0, 0}, {1, 2, 0, 0}, {0, 2, 0, 0}, {0, 2, 1, 0}, {0, 2, 2, 0}, {0, 2, 3, 0}, {0, 2, 4, 0}, {0, 2, 5, 0}, {0, 2, 6, 0}}}}, ["village_gambit/schems/gambit_church_1_0_180|WORKPLACE"] = {{{{4, 3, 6, 2, 3}, {5, 4, 6, 0}, {6, 3, 6, 0}, {7, 2, 6, 0}, {8, 2, 6, 0}, {9, 2, 6, 0}, {10, 2, 6, 0}, {11, 2, 6, 0}, {12, 2, 6, 0}, {13, 2, 6, 0}, {14, 2, 6, 1}, {15, 2, 6, 0}}, {{15, 2, 6, 0}, {16, 2, 6, 0}, {17, 1, 6, 0}}}}, ["mg_villages/schems/tree_place_2|WORKPLACE"] = {{{{2, 1, 6, 2, 1}, {1, 1, 6, 0}, {0, 1, 6, 0}, {0, 1, 5, 0}, {0, 1, 4, 0}}, {}}}, ["village_modern_houses/schems/modern_house_facade_2_90"] = {{{{11, 7, 8, 2, 1}, {10, 7, 7, 0}, {9, 7, 7, 0}, {8, 7, 8, 0}, {7, 6, 9, 0}, {6, 6, 10, 0}, {6, 5, 11, 0}, {5, 4, 11, 0}, {4, 3, 11, 0}, {4, 3, 10, 0}, {4, 3, 9, 0}, {4, 3, 8, 0}, {4, 3, 7, 0}, {4, 3, 6, 0}, {4, 3, 5, 1}, {4, 3, 4, 0}}, {{11, 7, 9, 2, 1}, {10, 7, 10, 0}, {9, 7, 10, 0}, {8, 7, 11, 0}, {7, 6, 11, 0}, {6, 5, 11, 0}, {5, 4, 11, 0}, {4, 3, 11, 0}, {4, 3, 10, 0}, {4, 3, 9, 0}, {4, 3, 8, 0}, {4, 3, 7, 0}, {4, 3, 6, 0}, {4, 3, 5, 1}, {4, 3, 4, 0}}, {{2, 3, 14, 2, 0}, {3, 3, 13, 0}, {3, 3, 12, 1}, {3, 3, 11, 0}, {4, 3, 10, 0}, {4, 3, 9, 0}, {4, 3, 8, 0}, {4, 3, 7, 0}, {4, 3, 6, 0}, {4, 3, 5, 1}, {4, 3, 4, 0}}, {{4, 3, 14, 2, 0}, {3, 3, 13, 0}, {3, 3, 12, 1}, {3, 3, 11, 0}, {4, 3, 10, 0}, {4, 3, 9, 0}, {4, 3, 8, 0}, {4, 3, 7, 0}, {4, 3, 6, 0}, {4, 3, 5, 1}, {4, 3, 4, 0}}, {{4, 3, 4, 0}, {5, 3, 3, 0}, {6, 3, 2, 0}, {6, 3, 1, 0}, {6, 3, 0, 0}}}, {{{11, 7, 8, 2, 1}, {10, 7, 7, 0}, {9, 7, 7, 0}, {8, 7, 8, 0}, {7, 6, 9, 0}, {6, 6, 10, 0}, {6, 5, 11, 0}, {5, 4, 11, 0}, {4, 3, 11, 0}, {4, 3, 10, 0}, {4, 3, 9, 0}, {4, 3, 8, 0}, {4, 3, 7, 0}, {3, 3, 6, 0}, {3, 3, 5, 1}, {3, 3, 4, 0}}, {{11, 7, 9, 2, 1}, {10, 7, 10, 0}, {9, 7, 10, 0}, {8, 7, 11, 0}, {7, 6, 11, 0}, {6, 5, 11, 0}, {5, 4, 11, 0}, {4, 3, 11, 0}, {4, 3, 10, 0}, {4, 3, 9, 0}, {4, 3, 8, 0}, {4, 3, 7, 0}, {3, 3, 6, 0}, {3, 3, 5, 1}, {3, 3, 4, 0}}, {{2, 3, 14, 2, 0}, {3, 3, 13, 0}, {3, 3, 12, 1}, {3, 3, 11, 0}, {3, 3, 10, 0}, {3, 3, 9, 0}, {3, 3, 8, 0}, {3, 3, 7, 0}, {3, 3, 6, 0}, {3, 3, 5, 1}, {3, 3, 4, 0}}, {{4, 3, 14, 2, 0}, {3, 3, 13, 0}, {3, 3, 12, 1}, {3, 3, 11, 0}, {3, 3, 10, 0}, {3, 3, 9, 0}, {3, 3, 8, 0}, {3, 3, 7, 0}, {3, 3, 6, 0}, {3, 3, 5, 1}, {3, 3, 4, 0}}, {{3, 3, 4, 0}, {4, 3, 3, 0}, {5, 3, 2, 0}, {6, 3, 1, 0}, {6, 3, 0, 0}}}}, ["village_ruins/schems/wooden_house|WORKPLACE"] = {{{{7, 1, 3, 2, 1}, {6, 1, 2, 0}, {5, 1, 2, 0}, {4, 1, 1, 1}, {4, 1, 0, 0}}, {}}}, ["mg_villages/schems/farm_tiny_7"] = {{{{10, 9, 4, 2, 1}, {8, 9, 5, 0}, {7, 8, 5, 0}, {6, 8, 5, 0}, {6, 7, 4, 0}, {6, 6, 3, 0}, {5, 6, 3, 0}, {5, 6, 4, 0}, {5, 6, 5, 0}, {5, 6, 6, 0}, {6, 5, 6, 0}, {6, 4, 5, 0}, {6, 3, 4, 0}, {6, 3, 3, 1}, {6, 3, 2, 0}, {5, 2, 2, 0}, {4, 2, 2, 0}, {4, 3, 3, 0}, {3, 3, 3, 0}, {3, 3, 4, 1}, {3, 3, 5, 0}, {3, 3, 6, 0}, {2, 3, 7, 0}, {2, 3, 8, 0}, {2, 3, 9, 0}, {3, 3, 10, 0}, {4, 3, 11, 0}, {4, 3, 12, 1}, {4, 3, 13, 0}}, {{10, 9, 5, 2, 1}, {7, 8, 5, 0}, {6, 8, 5, 0}, {6, 7, 4, 0}, {6, 6, 3, 0}, {5, 6, 3, 0}, {5, 6, 4, 0}, {5, 6, 5, 0}, {5, 6, 6, 0}, {6, 5, 6, 0}, {6, 4, 5, 0}, {6, 3, 4, 0}, {6, 3, 3, 1}, {6, 3, 2, 0}, {5, 2, 2, 0}, {4, 2, 2, 0}, {4, 3, 3, 0}, {3, 3, 3, 0}, {3, 3, 4, 1}, {3, 3, 5, 0}, {3, 3, 6, 0}, {2, 3, 7, 0}, {2, 3, 8, 0}, {2, 3, 9, 0}, {3, 3, 10, 0}, {4, 3, 11, 0}, {4, 3, 12, 1}, {4, 3, 13, 0}}, {{9, 3, 8, 2, 0}, {10, 3, 6, 1}, {10, 3, 5, 0}, {9, 3, 5, 0}, {8, 3, 5, 0}, {7, 3, 5, 0}, {7, 3, 4, 0}, {6, 3, 4, 0}, {6, 3, 3, 1}, {6, 3, 2, 0}, {5, 2, 2, 0}, {4, 2, 2, 0}, {4, 3, 3, 0}, {3, 3, 3, 0}, {3, 3, 4, 1}, {3, 3, 5, 0}, {3, 3, 6, 0}, {2, 3, 7, 0}, {2, 3, 8, 0}, {2, 3, 9, 0}, {3, 3, 10, 0}, {4, 3, 11, 0}, {4, 3, 12, 1}, {4, 3, 13, 0}}, {{11, 6, 8, 2, 2}, {9, 6, 8, 0}, {8, 6, 8, 0}, {7, 6, 8, 1}, {6, 6, 8, 0}, {6, 6, 7, 0}, {6, 5, 6, 0}, {6, 4, 5, 0}, {6, 3, 4, 0}, {6, 3, 3, 1}, {6, 3, 2, 0}, {5, 2, 2, 0}, {4, 2, 2, 0}, {4, 3, 3, 0}, {3, 3, 3, 0}, {3, 3, 4, 1}, {3, 3, 5, 0}, {3, 3, 6, 0}, {2, 3, 7, 0}, {2, 3, 8, 0}, {2, 3, 9, 0}, {3, 3, 10, 0}, {4, 3, 11, 0}, {4, 3, 12, 1}, {4, 3, 13, 0}}, {{9, 9, 8, 2, 1}, {8, 9, 9, 0}, {7, 9, 9, 0}, {7, 9, 8, 0}, {7, 9, 7, 1}, {7, 9, 6, 0}, {7, 8, 5, 0}, {6, 8, 5, 0}, {6, 7, 4, 0}, {6, 6, 3, 0}, {5, 6, 3, 0}, {5, 6, 4, 0}, {5, 6, 5, 0}, {5, 6, 6, 0}, {6, 5, 6, 0}, {6, 4, 5, 0}, {6, 3, 4, 0}, {6, 3, 3, 1}, {6, 3, 2, 0}, {5, 2, 2, 0}, {4, 2, 2, 0}, {4, 3, 3, 0}, {3, 3, 3, 0}, {3, 3, 4, 1}, {3, 3, 5, 0}, {3, 3, 6, 0}, {2, 3, 7, 0}, {2, 3, 8, 0}, {2, 3, 9, 0}, {3, 3, 10, 0}, {4, 3, 11, 0}, {4, 3, 12, 1}, {4, 3, 13, 0}}, {{9, 6, 9, 2, 3}, {8, 6, 8, 0}, {7, 6, 8, 1}, {6, 6, 8, 0}, {6, 6, 7, 0}, {6, 5, 6, 0}, {6, 4, 5, 0}, {6, 3, 4, 0}, {6, 3, 3, 1}, {6, 3, 2, 0}, {5, 2, 2, 0}, {4, 2, 2, 0}, {4, 3, 3, 0}, {3, 3, 3, 0}, {3, 3, 4, 1}, {3, 3, 5, 0}, {3, 3, 6, 0}, {2, 3, 7, 0}, {2, 3, 8, 0}, {2, 3, 9, 0}, {3, 3, 10, 0}, {4, 3, 11, 0}, {4, 3, 12, 1}, {4, 3, 13, 0}}, {{6, 9, 9, 2, 0}, {7, 9, 8, 0}, {7, 9, 7, 1}, {7, 9, 6, 0}, {7, 8, 5, 0}, {6, 8, 5, 0}, {6, 7, 4, 0}, {6, 6, 3, 0}, {5, 6, 3, 0}, {5, 6, 4, 0}, {5, 6, 5, 0}, {5, 6, 6, 0}, {6, 5, 6, 0}, {6, 4, 5, 0}, {6, 3, 4, 0}, {6, 3, 3, 1}, {6, 3, 2, 0}, {5, 2, 2, 0}, {4, 2, 2, 0}, {4, 3, 3, 0}, {3, 3, 3, 0}, {3, 3, 4, 1}, {3, 3, 5, 0}, {3, 3, 6, 0}, {2, 3, 7, 0}, {2, 3, 8, 0}, {2, 3, 9, 0}, {3, 3, 10, 0}, {4, 3, 11, 0}, {4, 3, 12, 1}, {4, 3, 13, 0}}, {{4, 3, 13, 0}, {4, 2, 14, 0}, {5, 2, 14, 0}, {6, 2, 14, 0}, {7, 2, 14, 0}}}, {{{10, 9, 4, 2, 1}, {8, 9, 5, 0}, {7, 8, 5, 0}, {6, 8, 5, 0}, {6, 7, 4, 0}, {6, 6, 3, 0}, {5, 6, 3, 0}, {5, 6, 4, 0}, {5, 6, 5, 0}, {5, 6, 6, 0}, {6, 5, 6, 0}, {6, 4, 5, 0}, {6, 3, 4, 0}, {6, 3, 3, 1}, {6, 3, 2, 0}, {5, 2, 2, 0}, {4, 2, 2, 0}, {4, 3, 3, 0}, {3, 3, 3, 0}, {3, 3, 4, 1}, {3, 3, 5, 0}}, {{10, 9, 5, 2, 1}, {7, 8, 5, 0}, {6, 8, 5, 0}, {6, 7, 4, 0}, {6, 6, 3, 0}, {5, 6, 3, 0}, {5, 6, 4, 0}, {5, 6, 5, 0}, {5, 6, 6, 0}, {6, 5, 6, 0}, {6, 4, 5, 0}, {6, 3, 4, 0}, {6, 3, 3, 1}, {6, 3, 2, 0}, {5, 2, 2, 0}, {4, 2, 2, 0}, {4, 3, 3, 0}, {3, 3, 3, 0}, {3, 3, 4, 1}, {3, 3, 5, 0}}, {{9, 3, 8, 2, 0}, {10, 3, 6, 1}, {10, 3, 5, 0}, {9, 3, 5, 0}, {8, 3, 5, 0}, {7, 3, 5, 0}, {7, 3, 4, 0}, {6, 3, 4, 0}, {6, 3, 3, 1}, {6, 3, 2, 0}, {5, 2, 2, 0}, {4, 2, 2, 0}, {4, 3, 3, 0}, {3, 3, 3, 0}, {3, 3, 4, 1}, {3, 3, 5, 0}}, {{11, 6, 8, 2, 2}, {9, 6, 8, 0}, {8, 6, 8, 0}, {7, 6, 8, 1}, {6, 6, 8, 0}, {6, 6, 7, 0}, {6, 5, 6, 0}, {6, 4, 5, 0}, {6, 3, 4, 0}, {6, 3, 3, 1}, {6, 3, 2, 0}, {5, 2, 2, 0}, {4, 2, 2, 0}, {4, 3, 3, 0}, {3, 3, 3, 0}, {3, 3, 4, 1}, {3, 3, 5, 0}}, {{9, 9, 8, 2, 1}, {8, 9, 9, 0}, {7, 9, 9, 0}, {7, 9, 8, 0}, {7, 9, 7, 1}, {7, 9, 6, 0}, {7, 8, 5, 0}, {6, 8, 5, 0}, {6, 7, 4, 0}, {6, 6, 3, 0}, {5, 6, 3, 0}, {5, 6, 4, 0}, {5, 6, 5, 0}, {5, 6, 6, 0}, {6, 5, 6, 0}, {6, 4, 5, 0}, {6, 3, 4, 0}, {6, 3, 3, 1}, {6, 3, 2, 0}, {5, 2, 2, 0}, {4, 2, 2, 0}, {4, 3, 3, 0}, {3, 3, 3, 0}, {3, 3, 4, 1}, {3, 3, 5, 0}}, {{9, 6, 9, 2, 3}, {8, 6, 8, 0}, {7, 6, 8, 1}, {6, 6, 8, 0}, {6, 6, 7, 0}, {6, 5, 6, 0}, {6, 4, 5, 0}, {6, 3, 4, 0}, {6, 3, 3, 1}, {6, 3, 2, 0}, {5, 2, 2, 0}, {4, 2, 2, 0}, {4, 3, 3, 0}, {3, 3, 3, 0}, {3, 3, 4, 1}, {3, 3, 5, 0}}, {{6, 9, 9, 2, 0}, {7, 9, 8, 0}, {7, 9, 7, 1}, {7, 9, 6, 0}, {7, 8, 5, 0}, {6, 8, 5, 0}, {6, 7, 4, 0}, {6, 6, 3, 0}, {5, 6, 3, 0}, {5, 6, 4, 0}, {5, 6, 5, 0}, {5, 6, 6, 0}, {6, 5, 6, 0}, {6, 4, 5, 0}, {6, 3, 4, 0}, {6, 3, 3, 1}, {6, 3, 2, 0}, {5, 2, 2, 0}, {4, 2, 2, 0}, {4, 3, 3, 0}, {3, 3, 3, 0}, {3, 3, 4, 1}, {3, 3, 5, 0}}, {{3, 3, 5, 0}, {3, 3, 6, 0}, {2, 3, 7, 0}, {2, 3, 8, 0}, {2, 3, 9, 0}, {3, 3, 10, 0}, {4, 3, 11, 0}, {4, 4, 12, 0}, {4, 3, 13, 0}, {4, 2, 14, 0}, {5, 2, 14, 0}, {6, 2, 14, 0}, {7, 2, 14, 0}}}, {{{10, 9, 4, 2, 1}, {8, 9, 5, 0}, {7, 8, 5, 0}, {6, 8, 5, 0}, {6, 7, 4, 0}, {6, 6, 3, 0}, {5, 6, 3, 0}, {5, 6, 4, 0}, {5, 6, 5, 0}, {5, 6, 6, 0}, {6, 5, 6, 0}, {6, 4, 5, 0}, {6, 3, 4, 0}, {6, 3, 3, 1}, {6, 3, 2, 0}}, {{10, 9, 5, 2, 1}, {7, 8, 5, 0}, {6, 8, 5, 0}, {6, 7, 4, 0}, {6, 6, 3, 0}, {5, 6, 3, 0}, {5, 6, 4, 0}, {5, 6, 5, 0}, {5, 6, 6, 0}, {6, 5, 6, 0}, {6, 4, 5, 0}, {6, 3, 4, 0}, {6, 3, 3, 1}, {6, 3, 2, 0}}, {{9, 3, 8, 2, 0}, {10, 3, 6, 1}, {10, 3, 5, 0}, {9, 3, 5, 0}, {8, 3, 5, 0}, {7, 3, 5, 0}, {7, 3, 4, 0}, {6, 3, 4, 0}, {6, 3, 3, 1}, {6, 3, 2, 0}}, {{11, 6, 8, 2, 2}, {9, 6, 8, 0}, {8, 6, 8, 0}, {7, 6, 8, 1}, {6, 6, 8, 0}, {6, 6, 7, 0}, {6, 5, 6, 0}, {6, 4, 5, 0}, {6, 3, 4, 0}, {6, 3, 3, 1}, {6, 3, 2, 0}}, {{9, 9, 8, 2, 1}, {8, 9, 9, 0}, {7, 9, 9, 0}, {7, 9, 8, 0}, {7, 9, 7, 1}, {7, 9, 6, 0}, {7, 8, 5, 0}, {6, 8, 5, 0}, {6, 7, 4, 0}, {6, 6, 3, 0}, {5, 6, 3, 0}, {5, 6, 4, 0}, {5, 6, 5, 0}, {5, 6, 6, 0}, {6, 5, 6, 0}, {6, 4, 5, 0}, {6, 3, 4, 0}, {6, 3, 3, 1}, {6, 3, 2, 0}}, {{9, 6, 9, 2, 3}, {8, 6, 8, 0}, {7, 6, 8, 1}, {6, 6, 8, 0}, {6, 6, 7, 0}, {6, 5, 6, 0}, {6, 4, 5, 0}, {6, 3, 4, 0}, {6, 3, 3, 1}, {6, 3, 2, 0}}, {{6, 9, 9, 2, 0}, {7, 9, 8, 0}, {7, 9, 7, 1}, {7, 9, 6, 0}, {7, 8, 5, 0}, {6, 8, 5, 0}, {6, 7, 4, 0}, {6, 6, 3, 0}, {5, 6, 3, 0}, {5, 6, 4, 0}, {5, 6, 5, 0}, {5, 6, 6, 0}, {6, 5, 6, 0}, {6, 4, 5, 0}, {6, 3, 4, 0}, {6, 3, 3, 1}, {6, 3, 2, 0}}, {{6, 3, 2, 0}, {5, 2, 2, 0}, {4, 2, 2, 0}, {3, 2, 2, 0}, {2, 2, 2, 0}, {1, 2, 2, 0}, {0, 2, 3, 0}, {0, 2, 4, 0}, {0, 2, 5, 0}, {0, 2, 6, 0}, {0, 2, 7, 0}, {0, 2, 8, 0}, {0, 2, 9, 0}, {0, 2, 10, 0}, {0, 2, 11, 0}, {0, 2, 12, 0}, {0, 2, 13, 0}, {1, 2, 14, 0}, {2, 2, 14, 0}, {3, 2, 14, 0}, {4, 2, 14, 0}, {5, 2, 14, 0}, {6, 2, 14, 0}, {7, 2, 14, 0}}}}, ["village_sandcity/schems/sandcity_ap_tower_2_1_270"] = {{{{2, 2, 2, 2, 3}, {4, 2, 3, 0}, {4, 2, 4, 0}, {4, 2, 5, 0}, {4, 2, 6, 1}, {4, 2, 7, 0}}, {{5, 2, 2, 2, 2}, {4, 2, 3, 0}, {4, 2, 4, 0}, {4, 2, 5, 0}, {4, 2, 6, 1}, {4, 2, 7, 0}}, {{2, 2, 3, 2, 3}, {4, 2, 3, 0}, {4, 2, 4, 0}, {4, 2, 5, 0}, {4, 2, 6, 1}, {4, 2, 7, 0}}, {{5, 2, 4, 2, 2}, {4, 2, 5, 0}, {4, 2, 6, 1}, {4, 2, 7, 0}}, {{2, 2, 5, 2, 3}, {4, 2, 5, 0}, {4, 2, 6, 1}, {4, 2, 7, 0}}, {{4, 2, 7, 0}, {3, 2, 8, 0}}}}, ["mg_villages/schems/taverne_2|WORKPLACE"] = {{{{4, 3, 4, 2, 2}, {5, 3, 4, 0}, {6, 3, 4, 1}, {6, 3, 5, 0}, {6, 3, 6, 0}, {5, 3, 6, 0}, {5, 3, 7, 0}, {5, 3, 8, 1}, {4, 3, 9, 0}}, {{4, 3, 9, 0}, {3, 4, 9, 0}, {2, 3, 9, 0}, {1, 2, 8, 0}, {0, 2, 7, 0}}}}, ["mg_villages/schems/farm_tiny_5"] = {{{{6, 6, 16, 2, 3}, {7, 6, 15, 0}, {8, 6, 15, 0}, {9, 6, 15, 0}, {10, 6, 15, 0}, {10, 6, 14, 0}, {10, 6, 13, 0}, {9, 6, 13, 0}, {8, 5, 13, 0}, {7, 4, 13, 0}, {6, 3, 13, 0}, {5, 3, 13, 1}, {4, 3, 13, 0}}, {{9, 6, 16, 2, 3}, {10, 6, 15, 0}, {10, 6, 14, 0}, {10, 6, 13, 0}, {9, 6, 13, 0}, {8, 5, 13, 0}, {7, 4, 13, 0}, {6, 3, 13, 0}, {5, 3, 13, 1}, {4, 3, 13, 0}}, {{7, 3, 17, 2, 0}, {6, 3, 15, 0}, {7, 3, 15, 0}, {8, 3, 15, 0}, {9, 3, 15, 0}, {9, 3, 14, 1}, {9, 3, 13, 0}, {9, 3, 12, 0}, {8, 3, 12, 0}, {7, 3, 12, 0}, {6, 3, 12, 0}, {6, 3, 13, 0}, {5, 3, 13, 1}, {4, 3, 13, 0}}, {{8, 3, 17, 2, 0}, {9, 3, 15, 0}, {9, 3, 14, 1}, {9, 3, 13, 0}, {9, 3, 12, 0}, {8, 3, 12, 0}, {7, 3, 12, 0}, {6, 3, 12, 0}, {6, 3, 13, 0}, {5, 3, 13, 1}, {4, 3, 13, 0}}, {{4, 3, 13, 0}, {3, 2, 13, 0}, {2, 2, 12, 0}, {1, 2, 11, 0}, {0, 2, 10, 0}}}}, ["mg_villages/schems/tree_place_7|WORKPLACE"] = {{{{4, 4, 5, 2, 1}, {4, 4, 4, 0}, {4, 4, 3, 0}, {4, 4, 2, 0}, {3, 3, 2, 0}, {2, 3, 2, 0}, {2, 2, 3, 0}, {1, 1, 4, 0}, {0, 1, 5, 0}}, {}}}, ["village_towntest/schems/towntest_Nanuk_chapel_1_180|WORKPLACE"] = {{{{6, 3, 7, 2, 3}, {6, 2, 6, 0}, {6, 2, 5, 0}, {7, 2, 5, 0}, {8, 2, 5, 0}, {9, 2, 6, 0}, {10, 2, 7, 0}, {11, 2, 7, 0}, {12, 2, 7, 0}, {13, 2, 7, 0}, {14, 2, 7, 0}, {15, 2, 7, 1}, {16, 2, 7, 0}, {17, 2, 7, 0}, {18, 2, 7, 0}, {19, 2, 7, 0}, {20, 2, 7, 0}, {21, 2, 7, 1}, {22, 2, 7, 0}}, {{22, 2, 7, 0}, {23, 2, 7, 0}}}}, ["mg_villages/schems/taverne_1|WORKPLACE"] = {{{{13, 3, 10, 2, 1}, {13, 3, 11, 0}, {13, 3, 12, 0}, {12, 3, 12, 1}, {11, 3, 12, 0}, {10, 3, 12, 0}, {9, 3, 12, 0}, {8, 3, 12, 0}, {7, 3, 13, 0}, {6, 3, 13, 1}, {5, 3, 13, 0}}, {{5, 3, 13, 0}, {4, 3, 13, 0}, {3, 3, 12, 0}, {2, 3, 12, 0}, {1, 3, 11, 0}, {0, 2, 10, 0}}}, {{{13, 12, 7, 2, 1}, {11, 12, 8, 0}, {11, 12, 9, 0}, {11, 12, 10, 0}, {11, 12, 11, 0}, {11, 12, 12, 1}, {11, 12, 13, 0}, {10, 12, 13, 1}, {9, 11, 13, 0}, {8, 10, 13, 0}, {7, 9, 13, 0}, {7, 9, 12, 0}, {7, 9, 11, 0}, {8, 9, 11, 0}, {9, 9, 11, 0}, {10, 9, 11, 0}, {11, 9, 11, 0}, {11, 9, 12, 0}, {11, 9, 13, 0}, {10, 8, 13, 0}, {9, 7, 13, 0}, {8, 6, 13, 0}, {8, 6, 12, 0}, {9, 6, 12, 0}, {10, 6, 12, 0}, {11, 6, 12, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {9, 3, 12, 0}, {10, 3, 12, 0}, {11, 3, 12, 0}, {12, 3, 12, 1}, {13, 3, 13, 0}, {14, 3, 13, 0}, {15, 3, 13, 1}, {16, 3, 13, 0}}, {{8, 6, 8, 2, 1}, {6, 6, 9, 0}, {6, 6, 10, 0}, {6, 6, 11, 1}, {6, 6, 12, 0}, {7, 6, 12, 0}, {8, 6, 12, 0}, {9, 6, 12, 0}, {10, 6, 12, 0}, {11, 6, 12, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {9, 3, 12, 0}, {10, 3, 12, 0}, {11, 3, 12, 0}, {12, 3, 12, 1}, {13, 3, 13, 0}, {14, 3, 13, 0}, {15, 3, 13, 1}, {16, 3, 13, 0}}, {{10, 6, 8, 2, 3}, {12, 6, 9, 0}, {12, 6, 10, 0}, {12, 6, 11, 1}, {12, 6, 12, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {9, 3, 12, 0}, {10, 3, 12, 0}, {11, 3, 12, 0}, {12, 3, 12, 1}, {13, 3, 13, 0}, {14, 3, 13, 0}, {15, 3, 13, 1}, {16, 3, 13, 0}}, {{14, 6, 8, 2, 2}, {15, 6, 10, 0}, {15, 6, 11, 1}, {15, 6, 12, 0}, {14, 6, 12, 0}, {13, 6, 12, 0}, {12, 6, 13, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {9, 3, 12, 0}, {10, 3, 12, 0}, {11, 3, 12, 0}, {12, 3, 12, 1}, {13, 3, 13, 0}, {14, 3, 13, 0}, {15, 3, 13, 1}, {16, 3, 13, 0}}, {{13, 12, 9, 2, 1}, {11, 12, 10, 0}, {11, 12, 11, 0}, {11, 12, 12, 1}, {11, 12, 13, 0}, {10, 12, 13, 1}, {9, 11, 13, 0}, {8, 10, 13, 0}, {7, 9, 13, 0}, {7, 9, 12, 0}, {7, 9, 11, 0}, {8, 9, 11, 0}, {9, 9, 11, 0}, {10, 9, 11, 0}, {11, 9, 11, 0}, {11, 9, 12, 0}, {11, 9, 13, 0}, {10, 8, 13, 0}, {9, 7, 13, 0}, {8, 6, 13, 0}, {8, 6, 12, 0}, {9, 6, 12, 0}, {10, 6, 12, 0}, {11, 6, 12, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {9, 3, 12, 0}, {10, 3, 12, 0}, {11, 3, 12, 0}, {12, 3, 12, 1}, {13, 3, 13, 0}, {14, 3, 13, 0}, {15, 3, 13, 1}, {16, 3, 13, 0}}, {{8, 6, 10, 2, 1}, {6, 6, 11, 1}, {6, 6, 12, 0}, {7, 6, 12, 0}, {8, 6, 12, 0}, {9, 6, 12, 0}, {10, 6, 12, 0}, {11, 6, 12, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {9, 3, 12, 0}, {10, 3, 12, 0}, {11, 3, 12, 0}, {12, 3, 12, 1}, {13, 3, 13, 0}, {14, 3, 13, 0}, {15, 3, 13, 1}, {16, 3, 13, 0}}, {{10, 6, 10, 2, 3}, {12, 6, 11, 1}, {12, 6, 12, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {9, 3, 12, 0}, {10, 3, 12, 0}, {11, 3, 12, 0}, {12, 3, 12, 1}, {13, 3, 13, 0}, {14, 3, 13, 0}, {15, 3, 13, 1}, {16, 3, 13, 0}}, {{13, 12, 11, 2, 1}, {11, 12, 12, 1}, {11, 12, 13, 0}, {10, 12, 13, 1}, {9, 11, 13, 0}, {8, 10, 13, 0}, {7, 9, 13, 0}, {7, 9, 12, 0}, {7, 9, 11, 0}, {8, 9, 11, 0}, {9, 9, 11, 0}, {10, 9, 11, 0}, {11, 9, 11, 0}, {11, 9, 12, 0}, {11, 9, 13, 0}, {10, 8, 13, 0}, {9, 7, 13, 0}, {8, 6, 13, 0}, {8, 6, 12, 0}, {9, 6, 12, 0}, {10, 6, 12, 0}, {11, 6, 12, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {9, 3, 12, 0}, {10, 3, 12, 0}, {11, 3, 12, 0}, {12, 3, 12, 1}, {13, 3, 13, 0}, {14, 3, 13, 0}, {15, 3, 13, 1}, {16, 3, 13, 0}}, {{8, 6, 15, 2, 1}, {6, 6, 14, 1}, {6, 6, 13, 0}, {6, 6, 12, 0}, {7, 6, 12, 0}, {8, 6, 12, 0}, {9, 6, 12, 0}, {10, 6, 12, 0}, {11, 6, 12, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {9, 3, 12, 0}, {10, 3, 12, 0}, {11, 3, 12, 0}, {12, 3, 12, 1}, {13, 3, 13, 0}, {14, 3, 13, 0}, {15, 3, 13, 1}, {16, 3, 13, 0}}, {{8, 9, 16, 2, 1}, {6, 9, 15, 0}, {7, 9, 15, 0}, {7, 9, 14, 1}, {7, 9, 13, 0}, {7, 9, 12, 0}, {7, 9, 11, 0}, {8, 9, 11, 0}, {9, 9, 11, 0}, {10, 9, 11, 0}, {11, 9, 11, 0}, {11, 9, 12, 0}, {11, 9, 13, 0}, {10, 8, 13, 0}, {9, 7, 13, 0}, {8, 6, 13, 0}, {8, 6, 12, 0}, {9, 6, 12, 0}, {10, 6, 12, 0}, {11, 6, 12, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {9, 3, 12, 0}, {10, 3, 12, 0}, {11, 3, 12, 0}, {12, 3, 12, 1}, {13, 3, 13, 0}, {14, 3, 13, 0}, {15, 3, 13, 1}, {16, 3, 13, 0}}, {{10, 9, 16, 2, 0}, {11, 9, 15, 1}, {11, 9, 14, 0}, {11, 9, 13, 0}, {10, 8, 13, 0}, {9, 7, 13, 0}, {8, 6, 13, 0}, {8, 6, 12, 0}, {9, 6, 12, 0}, {10, 6, 12, 0}, {11, 6, 12, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {9, 3, 12, 0}, {10, 3, 12, 0}, {11, 3, 12, 0}, {12, 3, 12, 1}, {13, 3, 13, 0}, {14, 3, 13, 0}, {15, 3, 13, 1}, {16, 3, 13, 0}}, {{16, 9, 16, 2, 1}, {14, 9, 15, 0}, {13, 9, 15, 0}, {13, 9, 14, 1}, {12, 9, 13, 0}, {11, 9, 13, 0}, {10, 8, 13, 0}, {9, 7, 13, 0}, {8, 6, 13, 0}, {8, 6, 12, 0}, {9, 6, 12, 0}, {10, 6, 12, 0}, {11, 6, 12, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {9, 3, 12, 0}, {10, 3, 12, 0}, {11, 3, 12, 0}, {12, 3, 12, 1}, {13, 3, 13, 0}, {14, 3, 13, 0}, {15, 3, 13, 1}, {16, 3, 13, 0}}, {{8, 6, 17, 2, 1}, {6, 6, 16, 0}, {6, 6, 15, 0}, {6, 6, 14, 1}, {6, 6, 13, 0}, {6, 6, 12, 0}, {7, 6, 12, 0}, {8, 6, 12, 0}, {9, 6, 12, 0}, {10, 6, 12, 0}, {11, 6, 12, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {9, 3, 12, 0}, {10, 3, 12, 0}, {11, 3, 12, 0}, {12, 3, 12, 1}, {13, 3, 13, 0}, {14, 3, 13, 0}, {15, 3, 13, 1}, {16, 3, 13, 0}}, {{11, 6, 17, 2, 0}, {12, 6, 15, 0}, {12, 6, 14, 1}, {12, 6, 13, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {9, 3, 12, 0}, {10, 3, 12, 0}, {11, 3, 12, 0}, {12, 3, 12, 1}, {13, 3, 13, 0}, {14, 3, 13, 0}, {15, 3, 13, 1}, {16, 3, 13, 0}}, {{13, 6, 17, 2, 0}, {14, 6, 15, 0}, {15, 6, 15, 0}, {15, 6, 14, 1}, {15, 6, 13, 0}, {15, 6, 12, 0}, {14, 6, 12, 0}, {13, 6, 12, 0}, {12, 6, 13, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {9, 3, 12, 0}, {10, 3, 12, 0}, {11, 3, 12, 0}, {12, 3, 12, 1}, {13, 3, 13, 0}, {14, 3, 13, 0}, {15, 3, 13, 1}, {16, 3, 13, 0}}, {{15, 6, 17, 2, 0}, {14, 6, 15, 0}, {15, 6, 15, 0}, {15, 6, 14, 1}, {15, 6, 13, 0}, {15, 6, 12, 0}, {14, 6, 12, 0}, {13, 6, 12, 0}, {12, 6, 13, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {9, 3, 12, 0}, {10, 3, 12, 0}, {11, 3, 12, 0}, {12, 3, 12, 1}, {13, 3, 13, 0}, {14, 3, 13, 0}, {15, 3, 13, 1}, {16, 3, 13, 0}}, {{8, 9, 17, 2, 1}, {6, 9, 16, 0}, {6, 9, 15, 0}, {7, 9, 15, 0}, {7, 9, 14, 1}, {7, 9, 13, 0}, {7, 9, 12, 0}, {7, 9, 11, 0}, {8, 9, 11, 0}, {9, 9, 11, 0}, {10, 9, 11, 0}, {11, 9, 11, 0}, {11, 9, 12, 0}, {11, 9, 13, 0}, {10, 8, 13, 0}, {9, 7, 13, 0}, {8, 6, 13, 0}, {8, 6, 12, 0}, {9, 6, 12, 0}, {10, 6, 12, 0}, {11, 6, 12, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {9, 3, 12, 0}, {10, 3, 12, 0}, {11, 3, 12, 0}, {12, 3, 12, 1}, {13, 3, 13, 0}, {14, 3, 13, 0}, {15, 3, 13, 1}, {16, 3, 13, 0}}, {{16, 9, 17, 2, 1}, {14, 9, 16, 0}, {14, 9, 15, 0}, {13, 9, 15, 0}, {13, 9, 14, 1}, {12, 9, 13, 0}, {11, 9, 13, 0}, {10, 8, 13, 0}, {9, 7, 13, 0}, {8, 6, 13, 0}, {8, 6, 12, 0}, {9, 6, 12, 0}, {10, 6, 12, 0}, {11, 6, 12, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {9, 3, 12, 0}, {10, 3, 12, 0}, {11, 3, 12, 0}, {12, 3, 12, 1}, {13, 3, 13, 0}, {14, 3, 13, 0}, {15, 3, 13, 1}, {16, 3, 13, 0}}, {{10, 9, 18, 2, 0}, {11, 9, 16, 0}, {11, 9, 15, 1}, {11, 9, 14, 0}, {11, 9, 13, 0}, {10, 8, 13, 0}, {9, 7, 13, 0}, {8, 6, 13, 0}, {8, 6, 12, 0}, {9, 6, 12, 0}, {10, 6, 12, 0}, {11, 6, 12, 0}, {11, 5, 13, 0}, {10, 4, 13, 0}, {9, 3, 13, 0}, {9, 3, 12, 0}, {10, 3, 12, 0}, {11, 3, 12, 0}, {12, 3, 12, 1}, {13, 3, 13, 0}, {14, 3, 13, 0}, {15, 3, 13, 1}, {16, 3, 13, 0}}, {{16, 3, 13, 0}, {17, 3, 12, 0}, {17, 3, 11, 0}, {17, 3, 10, 0}, {17, 3, 9, 0}, {17, 3, 8, 0}, {17, 3, 7, 0}, {17, 3, 6, 0}, {17, 3, 5, 0}, {17, 3, 4, 0}, {16, 3, 4, 0}, {15, 3, 4, 0}, {14, 3, 4, 0}, {13, 3, 4, 0}, {12, 3, 4, 0}, {11, 3, 4, 0}, {10, 3, 4, 0}, {9, 3, 4, 0}, {8, 3, 4, 0}, {7, 3, 4, 0}, {6, 3, 4, 0}, {6, 3, 5, 0}, {6, 3, 6, 0}, {6, 3, 7, 0}, {5, 3, 7, 0}, {4, 3, 8, 0}, {3, 3, 8, 0}, {2, 3, 8, 0}, {1, 3, 9, 0}, {0, 2, 10, 0}}}}, ["mg_villages/schems/chateau_without_garden|WORKPLACE"] = {{{{18, 8, 14, 2, 1}, {17, 8, 13, 0}, {16, 8, 12, 0}, {15, 8, 12, 0}, {14, 8, 12, 0}, {13, 8, 12, 0}, {12, 8, 12, 1}, {11, 8, 12, 0}}, {{11, 8, 12, 0}, {10, 7, 12, 0}, {9, 7, 11, 0}, {8, 7, 10, 0}, {8, 6, 9, 0}, {7, 6, 8, 0}, {7, 5, 7, 0}, {6, 5, 6, 0}, {5, 4, 5, 0}, {4, 4, 5, 0}, {3, 4, 4, 0}, {2, 4, 4, 0}, {1, 4, 4, 0}, {1, 3, 5, 0}, {0, 3, 6, 0}, {0, 3, 7, 0}, {0, 3, 8, 0}, {0, 3, 9, 0}, {0, 3, 10, 0}, {0, 3, 11, 0}, {0, 3, 12, 0}}}, {{{15, 18, 5, 2, 2}, {14, 18, 7, 0}, {15, 18, 7, 0}, {16, 18, 7, 0}, {16, 18, 8, 0}, {16, 18, 9, 1}, {16, 18, 10, 0}, {17, 17, 10, 0}, {18, 16, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{16, 18, 5, 2, 2}, {16, 18, 8, 0}, {16, 18, 9, 1}, {16, 18, 10, 0}, {17, 17, 10, 0}, {18, 16, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{19, 18, 5, 2, 2}, {18, 18, 6, 0}, {18, 18, 7, 0}, {19, 18, 7, 0}, {20, 18, 7, 0}, {20, 18, 8, 0}, {20, 18, 9, 1}, {20, 18, 10, 0}, {20, 18, 11, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{20, 18, 5, 2, 2}, {21, 18, 7, 0}, {20, 18, 7, 0}, {20, 18, 8, 0}, {20, 18, 9, 1}, {20, 18, 10, 0}, {20, 18, 11, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{21, 15, 6, 2, 3}, {20, 15, 5, 0}, {19, 15, 5, 0}, {19, 15, 6, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{21, 15, 7, 2, 3}, {20, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{22, 15, 10, 2, 3}, {22, 15, 12, 0}, {21, 15, 12, 1}, {20, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{22, 18, 11, 2, 3}, {24, 18, 12, 0}, {24, 18, 13, 0}, {23, 18, 13, 0}, {22, 18, 14, 0}, {21, 18, 14, 1}, {20, 18, 14, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{11, 22, 11, 2, 2}, {12, 22, 13, 0}, {13, 22, 13, 0}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{13, 22, 11, 2, 2}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{15, 22, 11, 2, 2}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{22, 18, 12, 2, 3}, {22, 18, 14, 0}, {21, 18, 14, 1}, {20, 18, 14, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{12, 18, 14, 2, 0}, {11, 18, 13, 0}, {11, 18, 12, 0}, {12, 18, 12, 0}, {13, 18, 11, 0}, {14, 18, 11, 1}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{13, 18, 14, 2, 0}, {11, 18, 13, 0}, {11, 18, 12, 0}, {12, 18, 12, 0}, {13, 18, 11, 0}, {14, 18, 11, 1}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{20, 22, 14, 2, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{22, 22, 14, 2, 0}, {23, 22, 12, 0}, {22, 22, 12, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{24, 22, 14, 2, 0}, {23, 22, 12, 0}, {22, 22, 12, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{22, 15, 15, 2, 3}, {22, 15, 13, 0}, {21, 15, 13, 1}, {20, 15, 13, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{13, 15, 17, 2, 1}, {14, 15, 16, 1}, {14, 15, 15, 0}, {14, 15, 14, 0}, {14, 15, 13, 0}, {14, 15, 12, 0}, {14, 15, 11, 0}, {14, 15, 10, 0}, {14, 15, 9, 1}, {14, 15, 8, 0}, {14, 15, 7, 0}, {15, 15, 7, 0}, {16, 15, 7, 0}, {17, 15, 7, 0}, {18, 15, 7, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{22, 15, 17, 2, 2}, {19, 15, 16, 1}, {19, 15, 15, 0}, {18, 15, 14, 0}, {17, 14, 14, 0}, {16, 13, 14, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{23, 15, 17, 2, 2}, {24, 15, 19, 0}, {23, 15, 19, 0}, {22, 15, 19, 0}, {21, 15, 19, 0}, {20, 15, 18, 0}, {19, 15, 17, 0}, {19, 15, 16, 1}, {19, 15, 15, 0}, {18, 15, 14, 0}, {17, 14, 14, 0}, {16, 13, 14, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{13, 15, 20, 2, 1}, {14, 15, 18, 0}, {14, 15, 17, 0}, {14, 15, 16, 1}, {14, 15, 15, 0}, {14, 15, 14, 0}, {14, 15, 13, 0}, {14, 15, 12, 0}, {14, 15, 11, 0}, {14, 15, 10, 0}, {14, 15, 9, 1}, {14, 15, 8, 0}, {14, 15, 7, 0}, {15, 15, 7, 0}, {16, 15, 7, 0}, {17, 15, 7, 0}, {18, 15, 7, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{16, 18, 20, 2, 1}, {16, 18, 18, 0}, {16, 18, 17, 0}, {16, 18, 16, 0}, {16, 18, 15, 1}, {17, 18, 14, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{20, 18, 20, 2, 3}, {20, 18, 18, 0}, {20, 18, 17, 0}, {20, 18, 16, 1}, {20, 18, 15, 0}, {19, 18, 14, 0}, {18, 18, 14, 0}, {17, 18, 14, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 13, 0}, {15, 8, 13, 0}, {14, 8, 13, 0}, {13, 8, 13, 0}, {12, 8, 13, 1}, {11, 8, 13, 0}}, {{11, 8, 13, 0}, {10, 7, 12, 0}, {9, 7, 11, 0}, {8, 7, 10, 0}, {8, 6, 9, 0}, {7, 6, 8, 0}, {7, 5, 7, 0}, {6, 5, 6, 0}, {5, 4, 5, 0}, {4, 4, 5, 0}, {3, 4, 4, 0}, {2, 4, 4, 0}, {1, 4, 4, 0}, {1, 3, 5, 0}, {0, 3, 6, 0}, {0, 3, 7, 0}, {0, 3, 8, 0}, {0, 3, 9, 0}, {0, 3, 10, 0}, {0, 3, 11, 0}, {0, 3, 12, 0}}}, {{{15, 18, 5, 2, 2}, {14, 18, 7, 0}, {15, 18, 7, 0}, {16, 18, 7, 0}, {16, 18, 8, 0}, {16, 18, 9, 1}, {16, 18, 10, 0}, {17, 17, 10, 0}, {18, 16, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{16, 18, 5, 2, 2}, {16, 18, 8, 0}, {16, 18, 9, 1}, {16, 18, 10, 0}, {17, 17, 10, 0}, {18, 16, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{19, 18, 5, 2, 2}, {18, 18, 6, 0}, {18, 18, 7, 0}, {19, 18, 7, 0}, {20, 18, 7, 0}, {20, 18, 8, 0}, {20, 18, 9, 1}, {20, 18, 10, 0}, {20, 18, 11, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{20, 18, 5, 2, 2}, {21, 18, 7, 0}, {20, 18, 7, 0}, {20, 18, 8, 0}, {20, 18, 9, 1}, {20, 18, 10, 0}, {20, 18, 11, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{21, 15, 6, 2, 3}, {20, 15, 5, 0}, {19, 15, 5, 0}, {19, 15, 6, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{21, 15, 7, 2, 3}, {20, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{22, 15, 10, 2, 3}, {22, 15, 12, 0}, {21, 15, 12, 1}, {20, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{22, 18, 11, 2, 3}, {24, 18, 12, 0}, {24, 18, 13, 0}, {23, 18, 13, 0}, {22, 18, 14, 0}, {21, 18, 14, 1}, {20, 18, 14, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{11, 22, 11, 2, 2}, {12, 22, 13, 0}, {13, 22, 13, 0}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{13, 22, 11, 2, 2}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{15, 22, 11, 2, 2}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{22, 18, 12, 2, 3}, {22, 18, 14, 0}, {21, 18, 14, 1}, {20, 18, 14, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{12, 18, 14, 2, 0}, {11, 18, 13, 0}, {11, 18, 12, 0}, {12, 18, 12, 0}, {13, 18, 11, 0}, {14, 18, 11, 1}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{13, 18, 14, 2, 0}, {11, 18, 13, 0}, {11, 18, 12, 0}, {12, 18, 12, 0}, {13, 18, 11, 0}, {14, 18, 11, 1}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{20, 22, 14, 2, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{22, 22, 14, 2, 0}, {23, 22, 12, 0}, {22, 22, 12, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{24, 22, 14, 2, 0}, {23, 22, 12, 0}, {22, 22, 12, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{22, 15, 15, 2, 3}, {22, 15, 13, 0}, {21, 15, 13, 1}, {20, 15, 13, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{13, 15, 17, 2, 1}, {14, 15, 16, 1}, {14, 15, 15, 0}, {14, 15, 14, 0}, {14, 15, 13, 0}, {14, 15, 12, 0}, {14, 15, 11, 0}, {14, 15, 10, 0}, {14, 15, 9, 1}, {14, 15, 8, 0}, {14, 15, 7, 0}, {15, 15, 7, 0}, {16, 15, 7, 0}, {17, 15, 7, 0}, {18, 15, 7, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{22, 15, 17, 2, 2}, {19, 15, 16, 1}, {19, 15, 15, 0}, {18, 15, 14, 0}, {17, 14, 14, 0}, {16, 13, 14, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{23, 15, 17, 2, 2}, {24, 15, 19, 0}, {23, 15, 19, 0}, {22, 15, 19, 0}, {21, 15, 19, 0}, {20, 15, 18, 0}, {19, 15, 17, 0}, {19, 15, 16, 1}, {19, 15, 15, 0}, {18, 15, 14, 0}, {17, 14, 14, 0}, {16, 13, 14, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{13, 15, 20, 2, 1}, {14, 15, 18, 0}, {14, 15, 17, 0}, {14, 15, 16, 1}, {14, 15, 15, 0}, {14, 15, 14, 0}, {14, 15, 13, 0}, {14, 15, 12, 0}, {14, 15, 11, 0}, {14, 15, 10, 0}, {14, 15, 9, 1}, {14, 15, 8, 0}, {14, 15, 7, 0}, {15, 15, 7, 0}, {16, 15, 7, 0}, {17, 15, 7, 0}, {18, 15, 7, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{16, 18, 20, 2, 1}, {16, 18, 18, 0}, {16, 18, 17, 0}, {16, 18, 16, 0}, {16, 18, 15, 1}, {17, 18, 14, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{20, 18, 20, 2, 3}, {20, 18, 18, 0}, {20, 18, 17, 0}, {20, 18, 16, 1}, {20, 18, 15, 0}, {19, 18, 14, 0}, {18, 18, 14, 0}, {17, 18, 14, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 3, 21, 1}, {21, 3, 21, 0}}, {{21, 3, 21, 0}, {20, 3, 21, 0}, {19, 3, 21, 0}, {18, 3, 21, 0}, {17, 3, 21, 0}, {16, 3, 21, 0}, {15, 3, 21, 0}, {14, 3, 21, 0}, {13, 3, 21, 0}, {12, 3, 21, 0}, {11, 3, 21, 0}, {10, 3, 21, 0}, {9, 3, 21, 0}, {8, 4, 21, 0}, {7, 4, 21, 0}, {6, 4, 21, 0}, {5, 4, 21, 0}, {4, 4, 21, 0}, {3, 4, 21, 0}, {2, 4, 21, 0}, {1, 4, 21, 0}, {1, 3, 20, 0}, {0, 3, 19, 0}, {0, 3, 18, 0}, {0, 3, 17, 0}, {0, 3, 16, 0}, {0, 3, 15, 0}, {0, 3, 14, 0}, {0, 3, 13, 0}, {0, 3, 12, 0}}}, {{{15, 18, 5, 2, 2}, {14, 18, 7, 0}, {15, 18, 7, 0}, {16, 18, 7, 0}, {16, 18, 8, 0}, {16, 18, 9, 1}, {16, 18, 10, 0}, {17, 17, 10, 0}, {18, 16, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{16, 18, 5, 2, 2}, {16, 18, 8, 0}, {16, 18, 9, 1}, {16, 18, 10, 0}, {17, 17, 10, 0}, {18, 16, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{19, 18, 5, 2, 2}, {18, 18, 6, 0}, {18, 18, 7, 0}, {19, 18, 7, 0}, {20, 18, 7, 0}, {20, 18, 8, 0}, {20, 18, 9, 1}, {20, 18, 10, 0}, {20, 18, 11, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{20, 18, 5, 2, 2}, {21, 18, 7, 0}, {20, 18, 7, 0}, {20, 18, 8, 0}, {20, 18, 9, 1}, {20, 18, 10, 0}, {20, 18, 11, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{21, 15, 6, 2, 3}, {20, 15, 5, 0}, {19, 15, 5, 0}, {19, 15, 6, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{21, 15, 7, 2, 3}, {20, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{22, 15, 10, 2, 3}, {22, 15, 12, 0}, {21, 15, 12, 1}, {20, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{22, 18, 11, 2, 3}, {24, 18, 12, 0}, {24, 18, 13, 0}, {23, 18, 13, 0}, {22, 18, 14, 0}, {21, 18, 14, 1}, {20, 18, 14, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{11, 22, 11, 2, 2}, {12, 22, 13, 0}, {13, 22, 13, 0}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{13, 22, 11, 2, 2}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{15, 22, 11, 2, 2}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{22, 18, 12, 2, 3}, {22, 18, 14, 0}, {21, 18, 14, 1}, {20, 18, 14, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{12, 18, 14, 2, 0}, {11, 18, 13, 0}, {11, 18, 12, 0}, {12, 18, 12, 0}, {13, 18, 11, 0}, {14, 18, 11, 1}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{13, 18, 14, 2, 0}, {11, 18, 13, 0}, {11, 18, 12, 0}, {12, 18, 12, 0}, {13, 18, 11, 0}, {14, 18, 11, 1}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{20, 22, 14, 2, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{22, 22, 14, 2, 0}, {23, 22, 12, 0}, {22, 22, 12, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{24, 22, 14, 2, 0}, {23, 22, 12, 0}, {22, 22, 12, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{22, 15, 15, 2, 3}, {22, 15, 13, 0}, {21, 15, 13, 1}, {20, 15, 13, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{13, 15, 17, 2, 1}, {14, 15, 16, 1}, {14, 15, 15, 0}, {14, 15, 14, 0}, {14, 15, 13, 0}, {14, 15, 12, 0}, {14, 15, 11, 0}, {14, 15, 10, 0}, {14, 15, 9, 1}, {14, 15, 8, 0}, {14, 15, 7, 0}, {15, 15, 7, 0}, {16, 15, 7, 0}, {17, 15, 7, 0}, {18, 15, 7, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{22, 15, 17, 2, 2}, {19, 15, 16, 1}, {19, 15, 15, 0}, {18, 15, 14, 0}, {17, 14, 14, 0}, {16, 13, 14, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{23, 15, 17, 2, 2}, {24, 15, 19, 0}, {23, 15, 19, 0}, {22, 15, 19, 0}, {21, 15, 19, 0}, {20, 15, 18, 0}, {19, 15, 17, 0}, {19, 15, 16, 1}, {19, 15, 15, 0}, {18, 15, 14, 0}, {17, 14, 14, 0}, {16, 13, 14, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{13, 15, 20, 2, 1}, {14, 15, 18, 0}, {14, 15, 17, 0}, {14, 15, 16, 1}, {14, 15, 15, 0}, {14, 15, 14, 0}, {14, 15, 13, 0}, {14, 15, 12, 0}, {14, 15, 11, 0}, {14, 15, 10, 0}, {14, 15, 9, 1}, {14, 15, 8, 0}, {14, 15, 7, 0}, {15, 15, 7, 0}, {16, 15, 7, 0}, {17, 15, 7, 0}, {18, 15, 7, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{16, 18, 20, 2, 1}, {16, 18, 18, 0}, {16, 18, 17, 0}, {16, 18, 16, 0}, {16, 18, 15, 1}, {17, 18, 14, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{20, 18, 20, 2, 3}, {20, 18, 18, 0}, {20, 18, 17, 0}, {20, 18, 16, 1}, {20, 18, 15, 0}, {19, 18, 14, 0}, {18, 18, 14, 0}, {17, 18, 14, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 3, 22, 1}, {21, 3, 22, 0}}, {{21, 3, 22, 0}, {20, 3, 22, 0}, {19, 3, 22, 0}, {18, 3, 22, 0}, {17, 3, 22, 0}, {16, 3, 22, 0}, {15, 3, 22, 0}, {14, 3, 22, 0}, {13, 3, 22, 0}, {12, 3, 22, 0}, {11, 3, 22, 0}, {10, 3, 22, 0}, {9, 3, 22, 0}, {8, 3, 22, 0}, {7, 3, 22, 0}, {6, 3, 22, 0}, {5, 3, 22, 0}, {4, 3, 22, 0}, {3, 3, 22, 0}, {2, 3, 22, 0}, {1, 3, 22, 0}, {0, 3, 22, 0}, {0, 3, 21, 0}, {0, 3, 20, 0}, {0, 3, 19, 0}, {0, 3, 18, 0}, {0, 3, 17, 0}, {0, 3, 16, 0}, {0, 3, 15, 0}, {0, 3, 14, 0}, {0, 3, 13, 0}, {0, 3, 12, 0}}}, {{{15, 18, 5, 2, 2}, {14, 18, 7, 0}, {15, 18, 7, 0}, {16, 18, 7, 0}, {16, 18, 8, 0}, {16, 18, 9, 1}, {16, 18, 10, 0}, {17, 17, 10, 0}, {18, 16, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{16, 18, 5, 2, 2}, {16, 18, 8, 0}, {16, 18, 9, 1}, {16, 18, 10, 0}, {17, 17, 10, 0}, {18, 16, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{19, 18, 5, 2, 2}, {18, 18, 6, 0}, {18, 18, 7, 0}, {19, 18, 7, 0}, {20, 18, 7, 0}, {20, 18, 8, 0}, {20, 18, 9, 1}, {20, 18, 10, 0}, {20, 18, 11, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{20, 18, 5, 2, 2}, {21, 18, 7, 0}, {20, 18, 7, 0}, {20, 18, 8, 0}, {20, 18, 9, 1}, {20, 18, 10, 0}, {20, 18, 11, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{21, 15, 6, 2, 3}, {20, 15, 5, 0}, {19, 15, 5, 0}, {19, 15, 6, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{21, 15, 7, 2, 3}, {20, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{22, 15, 10, 2, 3}, {22, 15, 12, 0}, {21, 15, 12, 1}, {20, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{22, 18, 11, 2, 3}, {24, 18, 12, 0}, {24, 18, 13, 0}, {23, 18, 13, 0}, {22, 18, 14, 0}, {21, 18, 14, 1}, {20, 18, 14, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{11, 22, 11, 2, 2}, {12, 22, 13, 0}, {13, 22, 13, 0}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{13, 22, 11, 2, 2}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{15, 22, 11, 2, 2}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{22, 18, 12, 2, 3}, {22, 18, 14, 0}, {21, 18, 14, 1}, {20, 18, 14, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{12, 18, 14, 2, 0}, {11, 18, 13, 0}, {11, 18, 12, 0}, {12, 18, 12, 0}, {13, 18, 11, 0}, {14, 18, 11, 1}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{13, 18, 14, 2, 0}, {11, 18, 13, 0}, {11, 18, 12, 0}, {12, 18, 12, 0}, {13, 18, 11, 0}, {14, 18, 11, 1}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{20, 22, 14, 2, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{22, 22, 14, 2, 0}, {23, 22, 12, 0}, {22, 22, 12, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{24, 22, 14, 2, 0}, {23, 22, 12, 0}, {22, 22, 12, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{22, 15, 15, 2, 3}, {22, 15, 13, 0}, {21, 15, 13, 1}, {20, 15, 13, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{13, 15, 17, 2, 1}, {14, 15, 16, 1}, {14, 15, 15, 0}, {14, 15, 14, 0}, {14, 15, 13, 0}, {14, 15, 12, 0}, {14, 15, 11, 0}, {14, 15, 10, 0}, {14, 15, 9, 1}, {14, 15, 8, 0}, {14, 15, 7, 0}, {15, 15, 7, 0}, {16, 15, 7, 0}, {17, 15, 7, 0}, {18, 15, 7, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{22, 15, 17, 2, 2}, {19, 15, 16, 1}, {19, 15, 15, 0}, {18, 15, 14, 0}, {17, 14, 14, 0}, {16, 13, 14, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{23, 15, 17, 2, 2}, {24, 15, 19, 0}, {23, 15, 19, 0}, {22, 15, 19, 0}, {21, 15, 19, 0}, {20, 15, 18, 0}, {19, 15, 17, 0}, {19, 15, 16, 1}, {19, 15, 15, 0}, {18, 15, 14, 0}, {17, 14, 14, 0}, {16, 13, 14, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{13, 15, 20, 2, 1}, {14, 15, 18, 0}, {14, 15, 17, 0}, {14, 15, 16, 1}, {14, 15, 15, 0}, {14, 15, 14, 0}, {14, 15, 13, 0}, {14, 15, 12, 0}, {14, 15, 11, 0}, {14, 15, 10, 0}, {14, 15, 9, 1}, {14, 15, 8, 0}, {14, 15, 7, 0}, {15, 15, 7, 0}, {16, 15, 7, 0}, {17, 15, 7, 0}, {18, 15, 7, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{16, 18, 20, 2, 1}, {16, 18, 18, 0}, {16, 18, 17, 0}, {16, 18, 16, 0}, {16, 18, 15, 1}, {17, 18, 14, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{20, 18, 20, 2, 3}, {20, 18, 18, 0}, {20, 18, 17, 0}, {20, 18, 16, 1}, {20, 18, 15, 0}, {19, 18, 14, 0}, {18, 18, 14, 0}, {17, 18, 14, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 19, 0}, {24, 3, 20, 0}, {23, 3, 21, 0}, {22, 4, 21, 1}, {21, 3, 21, 0}}, {{21, 3, 21, 0}, {20, 3, 21, 0}, {19, 3, 21, 0}, {18, 3, 21, 0}, {17, 3, 21, 0}, {16, 3, 21, 0}, {15, 3, 21, 0}, {14, 3, 21, 0}, {13, 3, 21, 0}, {12, 3, 21, 0}, {11, 3, 21, 0}, {10, 3, 21, 0}, {9, 3, 21, 0}, {8, 4, 21, 0}, {7, 4, 21, 0}, {6, 4, 21, 0}, {5, 4, 21, 0}, {4, 4, 21, 0}, {3, 4, 21, 0}, {2, 4, 21, 0}, {1, 4, 21, 0}, {1, 3, 20, 0}, {0, 3, 19, 0}, {0, 3, 18, 0}, {0, 3, 17, 0}, {0, 3, 16, 0}, {0, 3, 15, 0}, {0, 3, 14, 0}, {0, 3, 13, 0}, {0, 3, 12, 0}}}, {{{15, 18, 5, 2, 2}, {14, 18, 7, 0}, {15, 18, 7, 0}, {16, 18, 7, 0}, {16, 18, 8, 0}, {16, 18, 9, 1}, {16, 18, 10, 0}, {17, 17, 10, 0}, {18, 16, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{16, 18, 5, 2, 2}, {16, 18, 8, 0}, {16, 18, 9, 1}, {16, 18, 10, 0}, {17, 17, 10, 0}, {18, 16, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{19, 18, 5, 2, 2}, {18, 18, 6, 0}, {18, 18, 7, 0}, {19, 18, 7, 0}, {20, 18, 7, 0}, {20, 18, 8, 0}, {20, 18, 9, 1}, {20, 18, 10, 0}, {20, 18, 11, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{20, 18, 5, 2, 2}, {21, 18, 7, 0}, {20, 18, 7, 0}, {20, 18, 8, 0}, {20, 18, 9, 1}, {20, 18, 10, 0}, {20, 18, 11, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{21, 15, 6, 2, 3}, {20, 15, 5, 0}, {19, 15, 5, 0}, {19, 15, 6, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{21, 15, 7, 2, 3}, {20, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{22, 15, 10, 2, 3}, {22, 15, 12, 0}, {21, 15, 12, 1}, {20, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{22, 18, 11, 2, 3}, {24, 18, 12, 0}, {24, 18, 13, 0}, {23, 18, 13, 0}, {22, 18, 14, 0}, {21, 18, 14, 1}, {20, 18, 14, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{11, 22, 11, 2, 2}, {12, 22, 13, 0}, {13, 22, 13, 0}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{13, 22, 11, 2, 2}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{15, 22, 11, 2, 2}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{22, 18, 12, 2, 3}, {22, 18, 14, 0}, {21, 18, 14, 1}, {20, 18, 14, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{12, 18, 14, 2, 0}, {11, 18, 13, 0}, {11, 18, 12, 0}, {12, 18, 12, 0}, {13, 18, 11, 0}, {14, 18, 11, 1}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{13, 18, 14, 2, 0}, {11, 18, 13, 0}, {11, 18, 12, 0}, {12, 18, 12, 0}, {13, 18, 11, 0}, {14, 18, 11, 1}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{20, 22, 14, 2, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{22, 22, 14, 2, 0}, {23, 22, 12, 0}, {22, 22, 12, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{24, 22, 14, 2, 0}, {23, 22, 12, 0}, {22, 22, 12, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{22, 15, 15, 2, 3}, {22, 15, 13, 0}, {21, 15, 13, 1}, {20, 15, 13, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{13, 15, 17, 2, 1}, {14, 15, 16, 1}, {14, 15, 15, 0}, {14, 15, 14, 0}, {14, 15, 13, 0}, {14, 15, 12, 0}, {14, 15, 11, 0}, {14, 15, 10, 0}, {14, 15, 9, 1}, {14, 15, 8, 0}, {14, 15, 7, 0}, {15, 15, 7, 0}, {16, 15, 7, 0}, {17, 15, 7, 0}, {18, 15, 7, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{22, 15, 17, 2, 2}, {19, 15, 16, 1}, {19, 15, 15, 0}, {18, 15, 14, 0}, {17, 14, 14, 0}, {16, 13, 14, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{23, 15, 17, 2, 2}, {24, 15, 19, 0}, {23, 15, 19, 0}, {22, 15, 19, 0}, {21, 15, 19, 0}, {20, 15, 18, 0}, {19, 15, 17, 0}, {19, 15, 16, 1}, {19, 15, 15, 0}, {18, 15, 14, 0}, {17, 14, 14, 0}, {16, 13, 14, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{13, 15, 20, 2, 1}, {14, 15, 18, 0}, {14, 15, 17, 0}, {14, 15, 16, 1}, {14, 15, 15, 0}, {14, 15, 14, 0}, {14, 15, 13, 0}, {14, 15, 12, 0}, {14, 15, 11, 0}, {14, 15, 10, 0}, {14, 15, 9, 1}, {14, 15, 8, 0}, {14, 15, 7, 0}, {15, 15, 7, 0}, {16, 15, 7, 0}, {17, 15, 7, 0}, {18, 15, 7, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{16, 18, 20, 2, 1}, {16, 18, 18, 0}, {16, 18, 17, 0}, {16, 18, 16, 0}, {16, 18, 15, 1}, {17, 18, 14, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{20, 18, 20, 2, 3}, {20, 18, 18, 0}, {20, 18, 17, 0}, {20, 18, 16, 1}, {20, 18, 15, 0}, {19, 18, 14, 0}, {18, 18, 14, 0}, {17, 18, 14, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {29, 3, 19, 0}, {28, 3, 19, 0}, {27, 3, 19, 0}, {26, 3, 19, 0}, {25, 3, 20, 0}, {24, 3, 21, 0}, {23, 3, 22, 0}, {22, 4, 22, 1}, {21, 3, 22, 0}}, {{21, 3, 22, 0}, {20, 3, 22, 0}, {19, 3, 22, 0}, {18, 3, 22, 0}, {17, 3, 22, 0}, {16, 3, 22, 0}, {15, 3, 22, 0}, {14, 3, 22, 0}, {13, 3, 22, 0}, {12, 3, 22, 0}, {11, 3, 22, 0}, {10, 3, 22, 0}, {9, 3, 22, 0}, {8, 3, 22, 0}, {7, 3, 22, 0}, {6, 3, 22, 0}, {5, 3, 22, 0}, {4, 3, 22, 0}, {3, 3, 22, 0}, {2, 3, 22, 0}, {1, 3, 22, 0}, {0, 3, 22, 0}, {0, 3, 21, 0}, {0, 3, 20, 0}, {0, 3, 19, 0}, {0, 3, 18, 0}, {0, 3, 17, 0}, {0, 3, 16, 0}, {0, 3, 15, 0}, {0, 3, 14, 0}, {0, 3, 13, 0}, {0, 3, 12, 0}}}, {{{15, 18, 5, 2, 2}, {14, 18, 7, 0}, {15, 18, 7, 0}, {16, 18, 7, 0}, {16, 18, 8, 0}, {16, 18, 9, 1}, {16, 18, 10, 0}, {17, 17, 10, 0}, {18, 16, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{16, 18, 5, 2, 2}, {16, 18, 8, 0}, {16, 18, 9, 1}, {16, 18, 10, 0}, {17, 17, 10, 0}, {18, 16, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{19, 18, 5, 2, 2}, {18, 18, 6, 0}, {18, 18, 7, 0}, {19, 18, 7, 0}, {20, 18, 7, 0}, {20, 18, 8, 0}, {20, 18, 9, 1}, {20, 18, 10, 0}, {20, 18, 11, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{20, 18, 5, 2, 2}, {21, 18, 7, 0}, {20, 18, 7, 0}, {20, 18, 8, 0}, {20, 18, 9, 1}, {20, 18, 10, 0}, {20, 18, 11, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{21, 15, 6, 2, 3}, {20, 15, 5, 0}, {19, 15, 5, 0}, {19, 15, 6, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{21, 15, 7, 2, 3}, {20, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{22, 15, 10, 2, 3}, {22, 15, 12, 0}, {21, 15, 12, 1}, {20, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{22, 18, 11, 2, 3}, {24, 18, 12, 0}, {24, 18, 13, 0}, {23, 18, 13, 0}, {22, 18, 14, 0}, {21, 18, 14, 1}, {20, 18, 14, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{11, 22, 11, 2, 2}, {12, 22, 13, 0}, {13, 22, 13, 0}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{13, 22, 11, 2, 2}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{15, 22, 11, 2, 2}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{22, 18, 12, 2, 3}, {22, 18, 14, 0}, {21, 18, 14, 1}, {20, 18, 14, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{12, 18, 14, 2, 0}, {11, 18, 13, 0}, {11, 18, 12, 0}, {12, 18, 12, 0}, {13, 18, 11, 0}, {14, 18, 11, 1}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{13, 18, 14, 2, 0}, {11, 18, 13, 0}, {11, 18, 12, 0}, {12, 18, 12, 0}, {13, 18, 11, 0}, {14, 18, 11, 1}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{20, 22, 14, 2, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{22, 22, 14, 2, 0}, {23, 22, 12, 0}, {22, 22, 12, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{24, 22, 14, 2, 0}, {23, 22, 12, 0}, {22, 22, 12, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{22, 15, 15, 2, 3}, {22, 15, 13, 0}, {21, 15, 13, 1}, {20, 15, 13, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{13, 15, 17, 2, 1}, {14, 15, 16, 1}, {14, 15, 15, 0}, {14, 15, 14, 0}, {14, 15, 13, 0}, {14, 15, 12, 0}, {14, 15, 11, 0}, {14, 15, 10, 0}, {14, 15, 9, 1}, {14, 15, 8, 0}, {14, 15, 7, 0}, {15, 15, 7, 0}, {16, 15, 7, 0}, {17, 15, 7, 0}, {18, 15, 7, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{22, 15, 17, 2, 2}, {19, 15, 16, 1}, {19, 15, 15, 0}, {18, 15, 14, 0}, {17, 14, 14, 0}, {16, 13, 14, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{23, 15, 17, 2, 2}, {24, 15, 19, 0}, {23, 15, 19, 0}, {22, 15, 19, 0}, {21, 15, 19, 0}, {20, 15, 18, 0}, {19, 15, 17, 0}, {19, 15, 16, 1}, {19, 15, 15, 0}, {18, 15, 14, 0}, {17, 14, 14, 0}, {16, 13, 14, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{13, 15, 20, 2, 1}, {14, 15, 18, 0}, {14, 15, 17, 0}, {14, 15, 16, 1}, {14, 15, 15, 0}, {14, 15, 14, 0}, {14, 15, 13, 0}, {14, 15, 12, 0}, {14, 15, 11, 0}, {14, 15, 10, 0}, {14, 15, 9, 1}, {14, 15, 8, 0}, {14, 15, 7, 0}, {15, 15, 7, 0}, {16, 15, 7, 0}, {17, 15, 7, 0}, {18, 15, 7, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{16, 18, 20, 2, 1}, {16, 18, 18, 0}, {16, 18, 17, 0}, {16, 18, 16, 0}, {16, 18, 15, 1}, {17, 18, 14, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{20, 18, 20, 2, 3}, {20, 18, 18, 0}, {20, 18, 17, 0}, {20, 18, 16, 1}, {20, 18, 15, 0}, {19, 18, 14, 0}, {18, 18, 14, 0}, {17, 18, 14, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 12, 0}, {23, 8, 12, 1}, {24, 8, 12, 0}}, {{24, 8, 12, 0}, {25, 7, 12, 0}, {26, 7, 12, 0}, {27, 7, 11, 0}, {27, 6, 10, 0}, {27, 5, 9, 0}, {28, 5, 8, 0}, {29, 4, 8, 0}, {30, 3, 8, 0}, {30, 3, 7, 0}, {30, 3, 6, 0}, {31, 3, 5, 0}, {32, 3, 4, 0}, {33, 3, 3, 0}, {33, 3, 2, 0}, {33, 3, 1, 0}, {32, 3, 0, 0}, {31, 3, 0, 0}, {30, 3, 0, 0}, {29, 3, 1, 0}, {28, 3, 1, 0}, {27, 3, 1, 0}, {26, 3, 1, 0}, {25, 3, 1, 0}, {24, 3, 1, 0}, {23, 3, 1, 0}, {22, 3, 1, 0}, {21, 3, 1, 0}, {20, 3, 1, 0}, {19, 3, 1, 0}, {18, 3, 1, 0}, {17, 3, 1, 0}, {16, 3, 1, 0}, {15, 3, 2, 0}, {14, 3, 3, 0}, {13, 3, 3, 0}, {12, 3, 3, 0}, {11, 3, 3, 0}, {10, 3, 3, 0}, {9, 3, 3, 0}, {8, 3, 3, 0}, {7, 3, 3, 0}, {6, 3, 3, 0}, {5, 3, 3, 0}, {4, 3, 3, 0}, {3, 3, 3, 0}, {2, 3, 3, 0}, {1, 3, 3, 0}, {0, 3, 3, 0}, {0, 3, 4, 0}, {0, 3, 5, 0}, {0, 3, 6, 0}, {0, 3, 7, 0}, {0, 3, 8, 0}, {0, 3, 9, 0}, {0, 3, 10, 0}, {0, 3, 11, 0}, {0, 3, 12, 0}}}, {{{15, 18, 5, 2, 2}, {14, 18, 7, 0}, {15, 18, 7, 0}, {16, 18, 7, 0}, {16, 18, 8, 0}, {16, 18, 9, 1}, {16, 18, 10, 0}, {17, 17, 10, 0}, {18, 16, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{16, 18, 5, 2, 2}, {16, 18, 8, 0}, {16, 18, 9, 1}, {16, 18, 10, 0}, {17, 17, 10, 0}, {18, 16, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{19, 18, 5, 2, 2}, {18, 18, 6, 0}, {18, 18, 7, 0}, {19, 18, 7, 0}, {20, 18, 7, 0}, {20, 18, 8, 0}, {20, 18, 9, 1}, {20, 18, 10, 0}, {20, 18, 11, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{20, 18, 5, 2, 2}, {21, 18, 7, 0}, {20, 18, 7, 0}, {20, 18, 8, 0}, {20, 18, 9, 1}, {20, 18, 10, 0}, {20, 18, 11, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{21, 15, 6, 2, 3}, {20, 15, 5, 0}, {19, 15, 5, 0}, {19, 15, 6, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{21, 15, 7, 2, 3}, {20, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{22, 15, 10, 2, 3}, {22, 15, 12, 0}, {21, 15, 12, 1}, {20, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{22, 18, 11, 2, 3}, {24, 18, 12, 0}, {24, 18, 13, 0}, {23, 18, 13, 0}, {22, 18, 14, 0}, {21, 18, 14, 1}, {20, 18, 14, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{11, 22, 11, 2, 2}, {12, 22, 13, 0}, {13, 22, 13, 0}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{13, 22, 11, 2, 2}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{15, 22, 11, 2, 2}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{22, 18, 12, 2, 3}, {22, 18, 14, 0}, {21, 18, 14, 1}, {20, 18, 14, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{12, 18, 14, 2, 0}, {11, 18, 13, 0}, {11, 18, 12, 0}, {12, 18, 12, 0}, {13, 18, 11, 0}, {14, 18, 11, 1}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{13, 18, 14, 2, 0}, {11, 18, 13, 0}, {11, 18, 12, 0}, {12, 18, 12, 0}, {13, 18, 11, 0}, {14, 18, 11, 1}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{20, 22, 14, 2, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{22, 22, 14, 2, 0}, {23, 22, 12, 0}, {22, 22, 12, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{24, 22, 14, 2, 0}, {23, 22, 12, 0}, {22, 22, 12, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{22, 15, 15, 2, 3}, {22, 15, 13, 0}, {21, 15, 13, 1}, {20, 15, 13, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{13, 15, 17, 2, 1}, {14, 15, 16, 1}, {14, 15, 15, 0}, {14, 15, 14, 0}, {14, 15, 13, 0}, {14, 15, 12, 0}, {14, 15, 11, 0}, {14, 15, 10, 0}, {14, 15, 9, 1}, {14, 15, 8, 0}, {14, 15, 7, 0}, {15, 15, 7, 0}, {16, 15, 7, 0}, {17, 15, 7, 0}, {18, 15, 7, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{22, 15, 17, 2, 2}, {19, 15, 16, 1}, {19, 15, 15, 0}, {18, 15, 14, 0}, {17, 14, 14, 0}, {16, 13, 14, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{23, 15, 17, 2, 2}, {24, 15, 19, 0}, {23, 15, 19, 0}, {22, 15, 19, 0}, {21, 15, 19, 0}, {20, 15, 18, 0}, {19, 15, 17, 0}, {19, 15, 16, 1}, {19, 15, 15, 0}, {18, 15, 14, 0}, {17, 14, 14, 0}, {16, 13, 14, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{13, 15, 20, 2, 1}, {14, 15, 18, 0}, {14, 15, 17, 0}, {14, 15, 16, 1}, {14, 15, 15, 0}, {14, 15, 14, 0}, {14, 15, 13, 0}, {14, 15, 12, 0}, {14, 15, 11, 0}, {14, 15, 10, 0}, {14, 15, 9, 1}, {14, 15, 8, 0}, {14, 15, 7, 0}, {15, 15, 7, 0}, {16, 15, 7, 0}, {17, 15, 7, 0}, {18, 15, 7, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{16, 18, 20, 2, 1}, {16, 18, 18, 0}, {16, 18, 17, 0}, {16, 18, 16, 0}, {16, 18, 15, 1}, {17, 18, 14, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{20, 18, 20, 2, 3}, {20, 18, 18, 0}, {20, 18, 17, 0}, {20, 18, 16, 1}, {20, 18, 15, 0}, {19, 18, 14, 0}, {18, 18, 14, 0}, {17, 18, 14, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {21, 8, 12, 0}, {22, 8, 13, 0}, {23, 8, 13, 1}, {24, 8, 13, 0}}, {{24, 8, 13, 0}, {25, 7, 13, 0}, {26, 7, 13, 0}, {27, 7, 14, 0}, {27, 6, 15, 0}, {27, 5, 16, 0}, {28, 5, 17, 0}, {29, 4, 17, 0}, {30, 3, 17, 0}, {30, 3, 18, 0}, {30, 3, 19, 0}, {31, 3, 20, 0}, {32, 3, 21, 0}, {33, 3, 22, 0}, {33, 3, 23, 0}, {33, 3, 24, 0}, {32, 3, 24, 0}, {31, 3, 24, 0}, {30, 3, 24, 0}, {29, 3, 24, 0}, {28, 3, 24, 0}, {27, 3, 24, 0}, {26, 3, 24, 0}, {25, 3, 24, 0}, {24, 3, 24, 0}, {23, 3, 24, 0}, {22, 3, 24, 0}, {21, 3, 24, 0}, {20, 3, 24, 0}, {19, 3, 24, 0}, {18, 3, 24, 0}, {17, 3, 24, 0}, {16, 3, 24, 0}, {15, 3, 24, 0}, {14, 3, 24, 0}, {13, 3, 24, 0}, {12, 3, 24, 0}, {11, 3, 23, 0}, {10, 3, 22, 0}, {9, 3, 22, 0}, {8, 3, 22, 0}, {7, 3, 22, 0}, {6, 3, 22, 0}, {5, 3, 22, 0}, {4, 3, 22, 0}, {3, 3, 22, 0}, {2, 3, 22, 0}, {1, 3, 22, 0}, {0, 3, 22, 0}, {0, 3, 21, 0}, {0, 3, 20, 0}, {0, 3, 19, 0}, {0, 3, 18, 0}, {0, 3, 17, 0}, {0, 3, 16, 0}, {0, 3, 15, 0}, {0, 3, 14, 0}, {0, 3, 13, 0}, {0, 3, 12, 0}}}, {{{15, 18, 5, 2, 2}, {14, 18, 7, 0}, {15, 18, 7, 0}, {16, 18, 7, 0}, {16, 18, 8, 0}, {16, 18, 9, 1}, {16, 18, 10, 0}, {17, 17, 10, 0}, {18, 16, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{16, 18, 5, 2, 2}, {16, 18, 8, 0}, {16, 18, 9, 1}, {16, 18, 10, 0}, {17, 17, 10, 0}, {18, 16, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{19, 18, 5, 2, 2}, {18, 18, 6, 0}, {18, 18, 7, 0}, {19, 18, 7, 0}, {20, 18, 7, 0}, {20, 18, 8, 0}, {20, 18, 9, 1}, {20, 18, 10, 0}, {20, 18, 11, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{20, 18, 5, 2, 2}, {21, 18, 7, 0}, {20, 18, 7, 0}, {20, 18, 8, 0}, {20, 18, 9, 1}, {20, 18, 10, 0}, {20, 18, 11, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{21, 15, 6, 2, 3}, {20, 15, 5, 0}, {19, 15, 5, 0}, {19, 15, 6, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{21, 15, 7, 2, 3}, {20, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{22, 15, 10, 2, 3}, {22, 15, 12, 0}, {21, 15, 12, 1}, {20, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{22, 18, 11, 2, 3}, {24, 18, 12, 0}, {24, 18, 13, 0}, {23, 18, 13, 0}, {22, 18, 14, 0}, {21, 18, 14, 1}, {20, 18, 14, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{11, 22, 11, 2, 2}, {12, 22, 13, 0}, {13, 22, 13, 0}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{13, 22, 11, 2, 2}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{15, 22, 11, 2, 2}, {14, 22, 13, 0}, {15, 18, 13, 0}, {15, 18, 12, 0}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{22, 18, 12, 2, 3}, {22, 18, 14, 0}, {21, 18, 14, 1}, {20, 18, 14, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{12, 18, 14, 2, 0}, {11, 18, 13, 0}, {11, 18, 12, 0}, {12, 18, 12, 0}, {13, 18, 11, 0}, {14, 18, 11, 1}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{13, 18, 14, 2, 0}, {11, 18, 13, 0}, {11, 18, 12, 0}, {12, 18, 12, 0}, {13, 18, 11, 0}, {14, 18, 11, 1}, {15, 18, 11, 0}, {16, 18, 11, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{20, 22, 14, 2, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{22, 22, 14, 2, 0}, {23, 22, 12, 0}, {22, 22, 12, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{24, 22, 14, 2, 0}, {23, 22, 12, 0}, {22, 22, 12, 0}, {21, 22, 12, 0}, {20, 18, 12, 0}, {19, 19, 12, 0}, {19, 19, 13, 0}, {18, 19, 13, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{22, 15, 15, 2, 3}, {22, 15, 13, 0}, {21, 15, 13, 1}, {20, 15, 13, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{13, 15, 17, 2, 1}, {14, 15, 16, 1}, {14, 15, 15, 0}, {14, 15, 14, 0}, {14, 15, 13, 0}, {14, 15, 12, 0}, {14, 15, 11, 0}, {14, 15, 10, 0}, {14, 15, 9, 1}, {14, 15, 8, 0}, {14, 15, 7, 0}, {15, 15, 7, 0}, {16, 15, 7, 0}, {17, 15, 7, 0}, {18, 15, 7, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{22, 15, 17, 2, 2}, {19, 15, 16, 1}, {19, 15, 15, 0}, {18, 15, 14, 0}, {17, 14, 14, 0}, {16, 13, 14, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{23, 15, 17, 2, 2}, {24, 15, 19, 0}, {23, 15, 19, 0}, {22, 15, 19, 0}, {21, 15, 19, 0}, {20, 15, 18, 0}, {19, 15, 17, 0}, {19, 15, 16, 1}, {19, 15, 15, 0}, {18, 15, 14, 0}, {17, 14, 14, 0}, {16, 13, 14, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{13, 15, 20, 2, 1}, {14, 15, 18, 0}, {14, 15, 17, 0}, {14, 15, 16, 1}, {14, 15, 15, 0}, {14, 15, 14, 0}, {14, 15, 13, 0}, {14, 15, 12, 0}, {14, 15, 11, 0}, {14, 15, 10, 0}, {14, 15, 9, 1}, {14, 15, 8, 0}, {14, 15, 7, 0}, {15, 15, 7, 0}, {16, 15, 7, 0}, {17, 15, 7, 0}, {18, 15, 7, 0}, {19, 15, 7, 0}, {19, 15, 8, 0}, {19, 15, 9, 1}, {19, 15, 10, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{16, 18, 20, 2, 1}, {16, 18, 18, 0}, {16, 18, 17, 0}, {16, 18, 16, 0}, {16, 18, 15, 1}, {17, 18, 14, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{20, 18, 20, 2, 3}, {20, 18, 18, 0}, {20, 18, 17, 0}, {20, 18, 16, 1}, {20, 18, 15, 0}, {19, 18, 14, 0}, {18, 18, 14, 0}, {17, 18, 14, 0}, {17, 19, 13, 0}, {17, 18, 12, 0}, {17, 17, 11, 0}, {18, 16, 11, 0}, {19, 15, 11, 0}, {19, 15, 12, 0}, {19, 15, 13, 0}, {18, 16, 13, 0}, {17, 15, 13, 0}, {16, 14, 13, 0}, {16, 13, 12, 0}, {16, 12, 11, 0}, {17, 11, 11, 0}, {18, 10, 11, 0}, {19, 9, 11, 0}, {20, 8, 11, 0}, {20, 8, 12, 0}, {20, 8, 13, 0}, {19, 8, 13, 0}, {18, 8, 13, 0}, {17, 8, 13, 0}, {16, 8, 12, 0}, {16, 8, 11, 0}, {16, 8, 10, 0}, {17, 7, 10, 0}, {18, 6, 10, 0}, {19, 5, 10, 0}, {20, 4, 11, 0}, {20, 3, 12, 0}, {21, 3, 13, 0}, {22, 3, 14, 0}, {23, 3, 14, 1}, {24, 3, 14, 0}}, {{24, 3, 14, 0}, {24, 3, 15, 0}, {24, 3, 16, 0}, {24, 3, 17, 0}, {24, 3, 18, 0}, {24, 3, 19, 0}, {25, 3, 19, 0}, {26, 3, 19, 0}, {27, 3, 19, 0}, {28, 3, 19, 0}, {29, 3, 19, 0}, {30, 3, 19, 0}, {31, 3, 20, 0}, {32, 3, 21, 0}, {33, 3, 22, 0}, {33, 3, 23, 0}, {33, 3, 24, 0}, {32, 3, 24, 0}, {31, 3, 24, 0}, {30, 3, 24, 0}, {29, 3, 24, 0}, {28, 3, 24, 0}, {27, 3, 24, 0}, {26, 3, 24, 0}, {25, 3, 24, 0}, {24, 3, 24, 0}, {23, 3, 24, 0}, {22, 3, 24, 0}, {21, 3, 24, 0}, {20, 3, 24, 0}, {19, 3, 24, 0}, {18, 3, 24, 0}, {17, 3, 24, 0}, {16, 3, 24, 0}, {15, 3, 24, 0}, {14, 3, 24, 0}, {13, 3, 24, 0}, {12, 3, 24, 0}, {11, 3, 23, 0}, {10, 3, 22, 0}, {9, 3, 22, 0}, {8, 3, 22, 0}, {7, 3, 22, 0}, {6, 3, 22, 0}, {5, 3, 22, 0}, {4, 3, 22, 0}, {3, 3, 22, 0}, {2, 3, 22, 0}, {1, 3, 22, 0}, {0, 3, 22, 0}, {0, 3, 21, 0}, {0, 3, 20, 0}, {0, 3, 19, 0}, {0, 3, 18, 0}, {0, 3, 17, 0}, {0, 3, 16, 0}, {0, 3, 15, 0}, {0, 3, 14, 0}, {0, 3, 13, 0}, {0, 3, 12, 0}}}}, ["mg_villages/schems/lumberjack_10"] = {{{{3, 2, 6, 2, 0}, {4, 2, 5, 0}, {4, 2, 4, 0}, {4, 2, 3, 0}, {3, 2, 3, 0}, {3, 2, 2, 1}, {3, 2, 1, 0}}, {{3, 3, 6, 2, 0}, {4, 2, 5, 0}, {4, 2, 4, 0}, {4, 2, 3, 0}, {3, 2, 3, 0}, {3, 2, 2, 1}, {3, 2, 1, 0}}, {{3, 2, 1, 0}, {4, 1, 0, 0}}}}, ["mg_villages/schems/tent_big_2"] = {{{{2, 2, 4, 2, 0}, {3, 2, 3, 0}, {3, 2, 2, 1}, {3, 2, 1, 0}}, {{5, 2, 4, 2, 0}, {3, 2, 3, 0}, {3, 2, 2, 1}, {3, 2, 1, 0}}, {{3, 2, 5, 2, 0}, {3, 2, 3, 0}, {3, 2, 2, 1}, {3, 2, 1, 0}}, {{4, 2, 5, 2, 0}, {3, 2, 3, 0}, {3, 2, 2, 1}, {3, 2, 1, 0}}, {{3, 2, 1, 0}, {3, 2, 0, 0}, {2, 2, 0, 0}, {1, 2, 0, 0}, {0, 2, 1, 0}, {0, 2, 2, 0}, {0, 2, 3, 0}, {0, 2, 4, 0}, {0, 2, 5, 0}, {0, 2, 6, 0}, {1, 2, 7, 0}, {2, 2, 7, 0}, {3, 2, 7, 0}}}, {{{2, 2, 4, 2, 0}, {4, 2, 3, 0}, {4, 2, 2, 1}, {4, 2, 1, 0}}, {{5, 2, 4, 2, 0}, {4, 2, 3, 0}, {4, 2, 2, 1}, {4, 2, 1, 0}}, {{3, 2, 5, 2, 0}, {4, 2, 3, 0}, {4, 2, 2, 1}, {4, 2, 1, 0}}, {{4, 2, 5, 2, 0}, {4, 2, 3, 0}, {4, 2, 2, 1}, {4, 2, 1, 0}}, {{4, 2, 1, 0}, {3, 2, 0, 0}, {2, 2, 0, 0}, {1, 2, 0, 0}, {0, 2, 1, 0}, {0, 2, 2, 0}, {0, 2, 3, 0}, {0, 2, 4, 0}, {0, 2, 5, 0}, {0, 2, 6, 0}, {1, 2, 7, 0}, {2, 2, 7, 0}, {3, 2, 7, 0}}}}, ["village_sandcity/schems/sandcity_ap_tiny_3b_1_270"] = {{{{4, 2, 2, 2, 2}, {5, 2, 3, 0}, {5, 2, 4, 1}, {5, 2, 5, 0}}, {{8, 2, 2, 2, 2}, {7, 2, 3, 0}, {7, 2, 4, 1}, {6, 2, 5, 0}}, {{4, 2, 3, 2, 2}, {5, 2, 4, 1}, {5, 2, 5, 0}}, {{2, 2, 4, 2, 3}, {3, 2, 5, 1}, {4, 2, 5, 0}}, {{5, 2, 5, 0}, {5, 2, 6, 0}, {5, 2, 7, 0}}}}, ["mg_villages/schems/library_1_0|WORKPLACE"] = {{{{5, 2, 3, 2, 1}, {4, 2, 3, 0}, {4, 2, 4, 1}, {4, 2, 5, 0}, {3, 2, 6, 0}, {2, 2, 6, 0}, {1, 2, 6, 1}, {0, 2, 6, 0}}, {}}, {{{2, 2, 4, 2, 0}, {4, 2, 3, 0}, {4, 2, 4, 1}, {4, 2, 5, 0}, {4, 2, 6, 0}, {4, 2, 7, 0}, {4, 2, 8, 0}, {5, 2, 9, 0}, {6, 2, 9, 0}, {7, 2, 9, 0}, {8, 2, 9, 0}, {9, 2, 9, 0}, {10, 2, 9, 0}, {10, 2, 8, 0}, {10, 2, 7, 1}, {10, 2, 6, 0}}, {{10, 2, 6, 0}, {9, 2, 5, 0}, {8, 2, 4, 0}, {8, 2, 3, 0}, {8, 2, 2, 0}, {8, 2, 1, 0}, {8, 2, 0, 0}, {7, 2, 0, 0}, {6, 2, 0, 0}, {5, 2, 0, 0}, {4, 2, 0, 0}, {3, 2, 0, 0}, {2, 2, 0, 0}, {1, 2, 0, 0}, {0, 2, 0, 0}, {0, 2, 1, 0}, {0, 2, 2, 0}, {0, 2, 3, 0}, {0, 2, 4, 0}, {0, 2, 5, 0}, {0, 2, 6, 0}}}}, ["mg_villages/schems/tent_tiny_1"] = {{{{2, 2, 5, 2, 0}, {2, 2, 3, 1}, {1, 2, 3, 0}}, {{1, 2, 3, 0}, {0, 2, 3, 0}, {0, 2, 4, 0}, {0, 2, 5, 0}, {0, 2, 6, 0}, {1, 2, 7, 0}, {2, 2, 8, 0}}}}, ["village_sandcity/schems/sandcity_ap_mixed_2_1_270"] = {{{{2, 2, 2, 2, 2}, {3, 2, 4, 0}, {3, 2, 5, 1}, {3, 2, 6, 0}}, {{3, 2, 2, 2, 2}, {3, 2, 4, 0}, {3, 2, 5, 1}, {3, 2, 6, 0}}, {{4, 2, 2, 2, 2}, {3, 2, 4, 0}, {3, 2, 5, 1}, {3, 2, 6, 0}}, {{6, 2, 3, 2, 2}, {7, 2, 5, 0}, {7, 2, 6, 1}, {7, 2, 7, 0}}, {{7, 2, 3, 2, 2}, {7, 2, 5, 0}, {7, 2, 6, 1}, {7, 2, 7, 0}}, {{8, 2, 3, 2, 2}, {7, 2, 5, 0}, {7, 2, 6, 1}, {7, 2, 7, 0}}, {{11, 2, 5, 2, 2}, {10, 2, 6, 0}, {10, 2, 7, 1}, {9, 2, 8, 0}}, {{3, 2, 6, 0}, {4, 2, 7, 0}, {5, 2, 8, 0}, {6, 2, 8, 0}}}}, ["mg_villages/schems/logcabinpub2"] = {{{{7, 5, 3, 2, 2}, {8, 5, 5, 0}, {8, 5, 6, 0}, {9, 5, 6, 1}, {9, 5, 7, 1}, {10, 5, 7, 0}, {11, 5, 7, 0}, {11, 4, 6, 0}, {10, 3, 6, 0}, {9, 2, 6, 0}, {9, 2, 5, 1}, {9, 2, 4, 0}}, {{8, 5, 3, 2, 2}, {8, 5, 5, 0}, {8, 5, 6, 0}, {9, 5, 6, 1}, {9, 5, 7, 1}, {10, 5, 7, 0}, {11, 5, 7, 0}, {11, 4, 6, 0}, {10, 3, 6, 0}, {9, 2, 6, 0}, {9, 2, 5, 1}, {9, 2, 4, 0}}, {{9, 5, 3, 2, 3}, {11, 5, 4, 1}, {11, 5, 5, 0}, {11, 4, 6, 0}, {10, 3, 6, 0}, {9, 2, 6, 0}, {9, 2, 5, 1}, {9, 2, 4, 0}}, {{9, 5, 4, 2, 3}, {8, 5, 5, 0}, {8, 5, 6, 0}, {9, 5, 6, 1}, {9, 5, 7, 1}, {10, 5, 7, 0}, {11, 5, 7, 0}, {11, 4, 6, 0}, {10, 3, 6, 0}, {9, 2, 6, 0}, {9, 2, 5, 1}, {9, 2, 4, 0}}, {{7, 5, 8, 2, 3}, {9, 5, 8, 0}, {9, 5, 7, 1}, {10, 5, 7, 0}, {11, 5, 7, 0}, {11, 4, 6, 0}, {10, 3, 6, 0}, {9, 2, 6, 0}, {9, 2, 5, 1}, {9, 2, 4, 0}}, {{7, 5, 9, 2, 3}, {8, 5, 8, 0}, {9, 5, 8, 0}, {9, 5, 7, 1}, {10, 5, 7, 0}, {11, 5, 7, 0}, {11, 4, 6, 0}, {10, 3, 6, 0}, {9, 2, 6, 0}, {9, 2, 5, 1}, {9, 2, 4, 0}}, {{7, 5, 10, 2, 3}, {8, 5, 9, 0}, {8, 5, 8, 0}, {9, 5, 8, 0}, {9, 5, 7, 1}, {10, 5, 7, 0}, {11, 5, 7, 0}, {11, 4, 6, 0}, {10, 3, 6, 0}, {9, 2, 6, 0}, {9, 2, 5, 1}, {9, 2, 4, 0}}, {{10, 5, 10, 2, 0}, {11, 5, 9, 0}, {11, 5, 8, 1}, {11, 5, 7, 0}, {11, 4, 6, 0}, {10, 3, 6, 0}, {9, 2, 6, 0}, {9, 2, 5, 1}, {9, 2, 4, 0}}, {{11, 5, 10, 2, 0}, {11, 5, 8, 1}, {11, 5, 7, 0}, {11, 4, 6, 0}, {10, 3, 6, 0}, {9, 2, 6, 0}, {9, 2, 5, 1}, {9, 2, 4, 0}}, {{12, 5, 10, 2, 0}, {11, 5, 8, 1}, {11, 5, 7, 0}, {11, 4, 6, 0}, {10, 3, 6, 0}, {9, 2, 6, 0}, {9, 2, 5, 1}, {9, 2, 4, 0}}, {{9, 2, 4, 0}, {8, 2, 3, 0}, {8, 2, 2, 0}, {8, 2, 1, 0}, {7, 2, 0, 0}}}}, ["village_towntest/schems/towntest_kddekadenz_barn1_1_90|WORKPLACE"] = {{{{8, 2, 6, 2, 0}, {7, 2, 5, 0}, {6, 2, 4, 0}, {6, 2, 3, 0}, {6, 2, 2, 1}, {6, 2, 1, 0}}, {{6, 2, 1, 0}, {6, 2, 0, 0}}}}, ["village_gambit/schems/gambit_shop_large_0_0"] = {{{{9, 2, 4, 2, 2}, {10, 2, 6, 0}, {10, 2, 7, 0}, {10, 2, 8, 1}, {10, 2, 9, 0}, {9, 2, 9, 0}, {8, 2, 9, 0}, {7, 2, 9, 0}, {6, 2, 9, 0}, {5, 2, 9, 0}, {4, 2, 10, 0}, {4, 2, 11, 0}, {4, 2, 12, 0}, {3, 2, 12, 1}, {2, 2, 12, 0}}, {{9, 2, 6, 2, 2}, {10, 2, 7, 0}, {10, 2, 8, 1}, {10, 2, 9, 0}, {9, 2, 9, 0}, {8, 2, 9, 0}, {7, 2, 9, 0}, {6, 2, 9, 0}, {5, 2, 9, 0}, {4, 2, 10, 0}, {4, 2, 11, 0}, {4, 2, 12, 0}, {3, 2, 12, 1}, {2, 2, 12, 0}}, {{2, 2, 12, 0}, {1, 2, 12, 0}, {0, 1, 12, 0}, {0, 1, 11, 0}, {0, 1, 10, 0}, {0, 1, 9, 0}, {0, 1, 8, 0}}}}, ["village_sandcity/schems/sandcity_ap_tower_7_1_270"] = {{{{2, 2, 2, 2, 2}, {3, 2, 4, 0}, {4, 2, 4, 0}, {4, 2, 5, 1}, {5, 2, 6, 0}}, {{3, 2, 2, 2, 2}, {4, 2, 4, 0}, {4, 2, 5, 1}, {5, 2, 6, 0}}, {{4, 2, 2, 2, 2}, {4, 2, 4, 0}, {4, 2, 5, 1}, {5, 2, 6, 0}}, {{7, 2, 3, 2, 2}, {6, 2, 4, 0}, {6, 2, 5, 1}, {5, 2, 6, 0}}, {{7, 5, 3, 2, 2}, {6, 5, 4, 0}, {6, 5, 5, 1}, {5, 2, 5, 0}}, {{2, 2, 7, 2, 3}, {3, 2, 6, 0}, {4, 2, 6, 1}, {5, 2, 6, 0}}, {{5, 2, 6, 0}, {5, 2, 7, 0}, {5, 2, 8, 0}, {4, 2, 9, 0}}}}, ["mg_villages/schems/default_town_house_small"] = {{{{8, 7, 9, 2, 2}, {8, 8, 9, 0}, {9, 8, 9, 0}, {10, 7, 9, 0}, {11, 7, 9, 0}, {12, 7, 9, 0}, {12, 7, 8, 1}, {12, 7, 7, 0}}, {{9, 7, 9, 2, 2}, {11, 7, 9, 0}, {12, 7, 9, 0}, {12, 7, 8, 1}, {12, 7, 7, 0}}, {{13, 7, 12, 2, 0}, {12, 7, 11, 0}, {12, 7, 10, 0}, {12, 7, 9, 0}, {12, 7, 8, 1}, {12, 7, 7, 0}}, {{12, 7, 13, 2, 1}, {12, 7, 11, 0}, {12, 7, 10, 0}, {12, 7, 9, 0}, {12, 7, 8, 1}, {12, 7, 7, 0}}, {{12, 7, 7, 0}, {12, 6, 6, 0}, {11, 6, 5, 0}, {10, 6, 4, 0}, {9, 6, 3, 0}, {9, 6, 2, 0}, {9, 6, 1, 0}, {8, 6, 0, 0}}}}, ["village_sandcity/schems/sandcity_ap_tower_6_1_270"] = {{{{5, 4, 2, 2, 2}, {4, 4, 3, 0}, {4, 4, 4, 1}, {4, 5, 5, 0}}, {{7, 4, 2, 2, 2}, {8, 4, 3, 0}, {8, 4, 4, 1}, {8, 5, 5, 0}}, {{2, 2, 4, 2, 3}, {3, 2, 5, 0}, {4, 2, 5, 1}, {5, 2, 6, 0}}, {{10, 2, 4, 2, 1}, {9, 2, 5, 0}, {8, 2, 5, 1}, {7, 2, 6, 0}}, {{4, 5, 5, 0}, {4, 2, 6, 0}, {5, 2, 7, 0}, {6, 2, 7, 0}}}}, ["village_sandcity/schems/sandcity_ap_tower_5_1_270"] = {{{{2, 2, 3, 2, 3}, {4, 2, 4, 0}, {4, 2, 5, 0}, {5, 2, 5, 1}, {5, 2, 6, 0}}, {{12, 2, 3, 2, 1}, {10, 2, 4, 0}, {10, 2, 5, 0}, {9, 2, 5, 1}, {9, 2, 6, 0}}, {{10, 5, 3, 2, 2}, {11, 5, 4, 0}, {10, 5, 5, 0}, {9, 5, 5, 1}, {9, 5, 6, 0}}, {{12, 5, 3, 2, 2}, {11, 5, 4, 0}, {10, 5, 5, 0}, {9, 5, 5, 1}, {9, 5, 6, 0}}, {{12, 2, 4, 2, 1}, {10, 2, 5, 0}, {9, 2, 5, 1}, {9, 2, 6, 0}}, {{2, 7, 4, 2, 3}, {4, 7, 5, 0}, {5, 7, 5, 1}, {5, 7, 6, 0}}, {{2, 2, 5, 2, 3}, {4, 2, 5, 0}, {5, 2, 5, 1}, {5, 2, 6, 0}}, {{2, 7, 5, 2, 3}, {4, 7, 5, 0}, {5, 7, 5, 1}, {5, 7, 6, 0}}, {{3, 2, 8, 2, 3}, {4, 2, 7, 0}, {5, 2, 7, 1}, {6, 2, 7, 0}}, {{11, 2, 8, 2, 1}, {10, 2, 7, 0}, {9, 2, 7, 1}, {8, 2, 7, 0}}, {{3, 7, 8, 2, 3}, {4, 7, 7, 0}, {5, 7, 7, 1}, {5, 7, 6, 0}}, {{5, 2, 6, 0}, {6, 2, 7, 0}, {7, 2, 8, 0}, {7, 2, 9, 0}, {7, 2, 10, 0}}}}, ["mg_villages/schems/hut_1"] = {{{{7, 2, 3, 2, 2}, {5, 2, 4, 0}, {4, 2, 4, 0}, {3, 2, 4, 1}, {2, 2, 4, 0}}, {{2, 2, 4, 0}, {1, 2, 4, 0}, {0, 2, 4, 0}}}}, ["village_sandcity/schems/sandcity_ap_tower_4_1_270"] = {{{{2, 2, 2, 2, 2}, {3, 2, 3, 0}, {3, 2, 4, 0}, {3, 2, 5, 0}, {3, 2, 6, 0}, {4, 2, 7, 0}, {5, 2, 7, 1}, {5, 2, 8, 0}}, {{4, 2, 2, 2, 2}, {3, 2, 3, 0}, {3, 2, 4, 0}, {3, 2, 5, 0}, {3, 2, 6, 0}, {4, 2, 7, 0}, {5, 2, 7, 1}, {5, 2, 8, 0}}, {{10, 2, 2, 2, 3}, {11, 2, 3, 0}, {11, 2, 4, 0}, {11, 2, 5, 0}, {11, 2, 6, 0}, {10, 2, 7, 0}, {9, 2, 7, 1}, {9, 2, 8, 0}}, {{4, 5, 2, 2, 1}, {3, 5, 3, 0}, {2, 5, 4, 0}, {2, 5, 5, 1}, {2, 5, 6, 0}}, {{10, 5, 2, 2, 2}, {11, 5, 4, 0}, {12, 5, 4, 0}, {12, 5, 5, 1}, {12, 5, 6, 0}}, {{11, 5, 2, 2, 2}, {12, 5, 4, 0}, {12, 5, 5, 1}, {12, 5, 6, 0}}, {{12, 5, 2, 2, 2}, {12, 5, 4, 0}, {12, 5, 5, 1}, {12, 5, 6, 0}}, {{10, 2, 3, 2, 3}, {11, 2, 4, 0}, {11, 2, 5, 0}, {11, 2, 6, 0}, {10, 2, 7, 0}, {9, 2, 7, 1}, {9, 2, 8, 0}}, {{4, 5, 3, 2, 1}, {2, 5, 4, 0}, {2, 5, 5, 1}, {2, 5, 6, 0}}, {{8, 5, 3, 2, 1}, {7, 5, 4, 0}, {6, 5, 5, 0}, {5, 5, 5, 1}, {5, 5, 6, 0}}, {{4, 5, 4, 2, 1}, {2, 5, 4, 0}, {2, 5, 5, 1}, {2, 5, 6, 0}}, {{8, 5, 4, 2, 1}, {6, 5, 5, 0}, {5, 5, 5, 1}, {5, 5, 6, 0}}, {{5, 2, 8, 0}, {5, 2, 9, 0}, {6, 2, 9, 0}, {7, 2, 9, 0}}}}, ["village_sandcity/schems/sandcity_ap_tower_3_1_270"] = {{{{4, 2, 2, 2, 1}, {3, 2, 3, 0}, {2, 2, 4, 0}, {1, 2, 4, 1}, {1, 2, 5, 0}}, {{8, 2, 2, 2, 2}, {7, 2, 3, 0}, {8, 2, 4, 0}, {9, 2, 4, 1}, {9, 2, 5, 0}}, {{2, 5, 2, 2, 2}, {3, 5, 4, 0}, {4, 5, 4, 1}, {5, 5, 4, 0}}, {{3, 5, 2, 2, 2}, {4, 5, 4, 1}, {5, 5, 4, 0}}, {{4, 5, 2, 2, 2}, {4, 5, 4, 1}, {5, 5, 4, 0}}, {{6, 5, 2, 2, 2}, {6, 5, 4, 1}, {5, 5, 4, 0}}, {{7, 5, 2, 2, 2}, {6, 5, 4, 1}, {5, 5, 4, 0}}, {{8, 5, 2, 2, 2}, {7, 5, 4, 0}, {6, 5, 4, 1}, {5, 5, 4, 0}}, {{1, 2, 5, 0}, {1, 2, 6, 0}, {1, 2, 7, 0}, {2, 2, 7, 0}, {3, 2, 7, 0}, {4, 2, 7, 0}, {5, 2, 7, 0}}}}, ["mg_villages/schems/farm_tiny_3"] = {{{{13, 5, 10, 2, 1}, {11, 5, 11, 1}, {10, 5, 11, 0}, {10, 5, 10, 0}, {9, 5, 10, 0}, {8, 5, 10, 0}, {7, 4, 10, 0}, {6, 3, 10, 0}, {5, 2, 10, 0}, {5, 2, 11, 0}, {4, 2, 11, 1}, {3, 2, 11, 0}}, {{5, 5, 14, 2, 0}, {4, 5, 12, 0}, {5, 5, 12, 0}, {6, 5, 12, 0}, {7, 5, 12, 0}, {8, 5, 12, 0}, {8, 5, 11, 1}, {8, 5, 10, 0}, {7, 4, 10, 0}, {6, 3, 10, 0}, {5, 2, 10, 0}, {5, 2, 11, 0}, {4, 2, 11, 1}, {3, 2, 11, 0}}, {{6, 5, 14, 2, 0}, {8, 5, 12, 0}, {8, 5, 11, 1}, {8, 5, 10, 0}, {7, 4, 10, 0}, {6, 3, 10, 0}, {5, 2, 10, 0}, {5, 2, 11, 0}, {4, 2, 11, 1}, {3, 2, 11, 0}}, {{13, 5, 14, 2, 1}, {11, 5, 13, 0}, {10, 5, 13, 0}, {10, 5, 12, 1}, {10, 5, 11, 0}, {10, 5, 10, 0}, {9, 5, 10, 0}, {8, 5, 10, 0}, {7, 4, 10, 0}, {6, 3, 10, 0}, {5, 2, 10, 0}, {5, 2, 11, 0}, {4, 2, 11, 1}, {3, 2, 11, 0}}, {{3, 2, 11, 0}, {2, 2, 11, 0}, {2, 2, 10, 0}, {2, 2, 9, 0}, {1, 2, 9, 0}, {0, 2, 9, 0}, {0, 2, 8, 0}}}}, ["village_ruins/schems/watchtower|WORKPLACE"] = {{{{2, 9, 2, 2, 0}, {3, 1, 2, 0}, {3, 1, 3, 0}, {3, 1, 4, 1}, {3, 1, 5, 0}}, {{3, 1, 5, 0}, {2, 1, 5, 0}, {1, 1, 5, 0}, {0, 1, 5, 0}, {0, 1, 4, 0}, {0, 1, 3, 0}, {0, 1, 2, 0}, {0, 1, 1, 0}, {0, 1, 0, 0}, {1, 1, 0, 0}, {2, 1, 0, 0}}}}, ["village_sandcity/schems/sandcity_ap_tower_1_1_270"] = {{{{6, 3, 2, 2, 2}, {6, 3, 4, 0}, {6, 3, 5, 1}, {5, 3, 6, 0}}, {{7, 3, 2, 2, 2}, {6, 3, 4, 0}, {6, 3, 5, 1}, {5, 3, 6, 0}}, {{8, 3, 2, 2, 2}, {7, 3, 4, 0}, {6, 3, 4, 0}, {6, 3, 5, 1}, {5, 3, 6, 0}}, {{4, 4, 2, 2, 1}, {3, 4, 3, 0}, {2, 4, 4, 0}, {1, 4, 4, 1}, {1, 4, 5, 0}}, {{4, 4, 3, 2, 1}, {2, 4, 4, 0}, {1, 4, 4, 1}, {1, 4, 5, 0}}, {{4, 4, 4, 2, 1}, {2, 4, 4, 0}, {1, 4, 4, 1}, {1, 4, 5, 0}}, {{5, 3, 6, 0}, {5, 2, 7, 0}, {5, 2, 8, 0}}}}, ["village_sandcity/schems/sandcity_small_5_1_270"] = {{{{2, 2, 2, 2, 3}, {3, 2, 3, 0}, {4, 2, 4, 0}, {5, 2, 4, 0}, {5, 2, 5, 1}, {5, 2, 6, 0}}, {{2, 2, 3, 2, 3}, {4, 2, 4, 0}, {5, 2, 4, 0}, {5, 2, 5, 1}, {5, 2, 6, 0}}, {{2, 2, 4, 2, 3}, {4, 2, 4, 0}, {5, 2, 4, 0}, {5, 2, 5, 1}, {5, 2, 6, 0}}, {{5, 2, 6, 0}, {4, 2, 7, 0}, {3, 2, 7, 0}}}}, ["village_sandcity/schems/sandcity_small_4_1_270"] = {{{{2, 2, 2, 2, 2}, {3, 2, 4, 0}, {4, 2, 4, 0}, {4, 2, 5, 1}, {4, 2, 6, 0}}, {{3, 2, 2, 2, 2}, {4, 2, 4, 0}, {4, 2, 5, 1}, {4, 2, 6, 0}}, {{4, 2, 2, 2, 2}, {4, 2, 4, 0}, {4, 2, 5, 1}, {4, 2, 6, 0}}, {{4, 2, 6, 0}, {3, 2, 6, 0}}}}, ["mg_villages/schems/farm_tiny_4"] = {{{{10, 3, 3, 2, 3}, {9, 3, 4, 0}, {8, 3, 4, 0}, {7, 3, 4, 0}, {6, 3, 4, 0}, {6, 3, 5, 0}, {5, 3, 6, 0}, {5, 3, 7, 0}, {4, 3, 7, 1}, {3, 3, 7, 0}}, {{6, 6, 3, 2, 3}, {8, 6, 4, 0}, {8, 7, 5, 0}, {8, 7, 6, 0}, {8, 6, 7, 0}, {7, 5, 7, 0}, {6, 4, 7, 0}, {5, 3, 7, 0}, {4, 3, 7, 1}, {3, 3, 7, 0}}, {{12, 3, 4, 2, 0}, {10, 3, 4, 1}, {9, 3, 4, 0}, {8, 3, 4, 0}, {7, 3, 4, 0}, {6, 3, 4, 0}, {6, 3, 5, 0}, {5, 3, 6, 0}, {5, 3, 7, 0}, {4, 3, 7, 1}, {3, 3, 7, 0}}, {{6, 6, 5, 2, 3}, {8, 6, 4, 0}, {8, 7, 5, 0}, {8, 7, 6, 0}, {8, 6, 7, 0}, {7, 5, 7, 0}, {6, 4, 7, 0}, {5, 3, 7, 0}, {4, 3, 7, 1}, {3, 3, 7, 0}}, {{3, 3, 7, 0}, {2, 3, 7, 0}, {1, 2, 7, 0}, {0, 2, 8, 0}, {0, 2, 9, 0}}}, {{{10, 3, 3, 2, 3}, {9, 3, 4, 0}, {9, 3, 5, 1}, {9, 3, 6, 0}, {10, 3, 6, 0}, {11, 3, 6, 0}, {12, 3, 6, 0}, {12, 3, 7, 0}, {12, 3, 8, 1}, {12, 3, 9, 0}, {11, 3, 9, 0}, {10, 2, 9, 0}, {9, 2, 9, 0}, {8, 2, 9, 0}, {7, 2, 9, 1}, {6, 2, 9, 0}}, {{6, 6, 3, 2, 3}, {8, 6, 4, 0}, {8, 7, 5, 0}, {8, 7, 6, 0}, {8, 6, 7, 0}, {7, 5, 7, 0}, {6, 4, 7, 0}, {5, 3, 7, 0}, {5, 3, 6, 0}, {6, 3, 5, 0}, {6, 3, 4, 0}, {7, 3, 4, 0}, {8, 3, 4, 0}, {9, 3, 4, 0}, {9, 3, 5, 1}, {9, 3, 6, 0}, {10, 3, 6, 0}, {11, 3, 6, 0}, {12, 3, 6, 0}, {12, 3, 7, 0}, {12, 3, 8, 1}, {12, 3, 9, 0}, {11, 3, 9, 0}, {10, 2, 9, 0}, {9, 2, 9, 0}, {8, 2, 9, 0}, {7, 2, 9, 1}, {6, 2, 9, 0}}, {{12, 3, 4, 2, 0}, {10, 3, 4, 1}, {9, 3, 4, 0}, {9, 3, 5, 1}, {9, 3, 6, 0}, {10, 3, 6, 0}, {11, 3, 6, 0}, {12, 3, 6, 0}, {12, 3, 7, 0}, {12, 3, 8, 1}, {12, 3, 9, 0}, {11, 3, 9, 0}, {10, 2, 9, 0}, {9, 2, 9, 0}, {8, 2, 9, 0}, {7, 2, 9, 1}, {6, 2, 9, 0}}, {{6, 6, 5, 2, 3}, {8, 6, 4, 0}, {8, 7, 5, 0}, {8, 7, 6, 0}, {8, 6, 7, 0}, {7, 5, 7, 0}, {6, 4, 7, 0}, {5, 3, 7, 0}, {5, 3, 6, 0}, {6, 3, 5, 0}, {6, 3, 4, 0}, {7, 3, 4, 0}, {8, 3, 4, 0}, {9, 3, 4, 0}, {9, 3, 5, 1}, {9, 3, 6, 0}, {10, 3, 6, 0}, {11, 3, 6, 0}, {12, 3, 6, 0}, {12, 3, 7, 0}, {12, 3, 8, 1}, {12, 3, 9, 0}, {11, 3, 9, 0}, {10, 2, 9, 0}, {9, 2, 9, 0}, {8, 2, 9, 0}, {7, 2, 9, 1}, {6, 2, 9, 0}}, {{6, 2, 9, 0}, {5, 2, 9, 0}, {4, 2, 9, 0}, {3, 2, 9, 0}, {2, 2, 9, 0}, {1, 2, 9, 0}, {0, 2, 9, 0}}}, {{{10, 3, 3, 2, 3}, {9, 3, 4, 0}, {9, 3, 5, 1}, {9, 3, 6, 0}, {10, 3, 6, 0}, {11, 3, 6, 0}, {12, 3, 6, 0}, {12, 3, 7, 0}, {12, 3, 8, 1}, {12, 3, 9, 0}, {13, 2, 9, 0}, {14, 2, 9, 1}, {15, 2, 9, 0}, {15, 2, 10, 0}, {15, 2, 11, 0}, {15, 2, 12, 0}, {15, 2, 13, 0}, {14, 2, 13, 1}, {13, 2, 13, 0}, {12, 2, 13, 0}, {11, 2, 13, 0}, {10, 2, 14, 0}, {9, 2, 14, 0}, {8, 2, 14, 0}, {8, 2, 13, 0}, {7, 2, 13, 0}, {6, 2, 12, 0}, {5, 2, 11, 0}, {4, 2, 11, 0}, {3, 2, 11, 0}, {3, 2, 10, 1}, {3, 2, 9, 0}}, {{6, 6, 3, 2, 3}, {8, 6, 4, 0}, {8, 7, 5, 0}, {8, 7, 6, 0}, {8, 6, 7, 0}, {7, 5, 7, 0}, {6, 4, 7, 0}, {5, 3, 7, 0}, {5, 3, 6, 0}, {6, 3, 5, 0}, {6, 3, 4, 0}, {7, 3, 4, 0}, {8, 3, 4, 0}, {9, 3, 4, 0}, {9, 3, 5, 1}, {9, 3, 6, 0}, {10, 3, 6, 0}, {11, 3, 6, 0}, {12, 3, 6, 0}, {12, 3, 7, 0}, {12, 3, 8, 1}, {12, 3, 9, 0}, {13, 2, 9, 0}, {14, 2, 9, 1}, {15, 2, 9, 0}, {15, 2, 10, 0}, {15, 2, 11, 0}, {15, 2, 12, 0}, {15, 2, 13, 0}, {14, 2, 13, 1}, {13, 2, 13, 0}, {12, 2, 13, 0}, {11, 2, 13, 0}, {10, 2, 14, 0}, {9, 2, 14, 0}, {8, 2, 14, 0}, {8, 2, 13, 0}, {7, 2, 13, 0}, {6, 2, 12, 0}, {5, 2, 11, 0}, {4, 2, 11, 0}, {3, 2, 11, 0}, {3, 2, 10, 1}, {3, 2, 9, 0}}, {{12, 3, 4, 2, 0}, {10, 3, 4, 1}, {9, 3, 4, 0}, {9, 3, 5, 1}, {9, 3, 6, 0}, {10, 3, 6, 0}, {11, 3, 6, 0}, {12, 3, 6, 0}, {12, 3, 7, 0}, {12, 3, 8, 1}, {12, 3, 9, 0}, {13, 2, 9, 0}, {14, 2, 9, 1}, {15, 2, 9, 0}, {15, 2, 10, 0}, {15, 2, 11, 0}, {15, 2, 12, 0}, {15, 2, 13, 0}, {14, 2, 13, 1}, {13, 2, 13, 0}, {12, 2, 13, 0}, {11, 2, 13, 0}, {10, 2, 14, 0}, {9, 2, 14, 0}, {8, 2, 14, 0}, {8, 2, 13, 0}, {7, 2, 13, 0}, {6, 2, 12, 0}, {5, 2, 11, 0}, {4, 2, 11, 0}, {3, 2, 11, 0}, {3, 2, 10, 1}, {3, 2, 9, 0}}, {{6, 6, 5, 2, 3}, {8, 6, 4, 0}, {8, 7, 5, 0}, {8, 7, 6, 0}, {8, 6, 7, 0}, {7, 5, 7, 0}, {6, 4, 7, 0}, {5, 3, 7, 0}, {5, 3, 6, 0}, {6, 3, 5, 0}, {6, 3, 4, 0}, {7, 3, 4, 0}, {8, 3, 4, 0}, {9, 3, 4, 0}, {9, 3, 5, 1}, {9, 3, 6, 0}, {10, 3, 6, 0}, {11, 3, 6, 0}, {12, 3, 6, 0}, {12, 3, 7, 0}, {12, 3, 8, 1}, {12, 3, 9, 0}, {13, 2, 9, 0}, {14, 2, 9, 1}, {15, 2, 9, 0}, {15, 2, 10, 0}, {15, 2, 11, 0}, {15, 2, 12, 0}, {15, 2, 13, 0}, {14, 2, 13, 1}, {13, 2, 13, 0}, {12, 2, 13, 0}, {11, 2, 13, 0}, {10, 2, 14, 0}, {9, 2, 14, 0}, {8, 2, 14, 0}, {8, 2, 13, 0}, {7, 2, 13, 0}, {6, 2, 12, 0}, {5, 2, 11, 0}, {4, 2, 11, 0}, {3, 2, 11, 0}, {3, 2, 10, 1}, {3, 2, 9, 0}}, {{3, 2, 9, 0}, {2, 2, 9, 0}, {1, 2, 9, 0}, {0, 2, 9, 0}}}, {{{10, 3, 3, 2, 3}, {9, 3, 4, 0}, {9, 3, 5, 1}, {9, 3, 6, 0}, {10, 3, 6, 0}, {11, 3, 6, 0}, {12, 3, 6, 0}, {12, 3, 7, 0}, {12, 3, 8, 1}, {12, 3, 9, 0}, {13, 2, 9, 0}, {14, 2, 9, 1}, {15, 2, 9, 0}, {15, 2, 10, 0}, {15, 2, 11, 0}, {15, 2, 12, 0}, {15, 2, 13, 0}, {14, 2, 13, 1}, {13, 2, 13, 0}}, {{6, 6, 3, 2, 3}, {8, 6, 4, 0}, {8, 7, 5, 0}, {8, 7, 6, 0}, {8, 6, 7, 0}, {7, 5, 7, 0}, {6, 4, 7, 0}, {5, 3, 7, 0}, {5, 3, 6, 0}, {6, 3, 5, 0}, {6, 3, 4, 0}, {7, 3, 4, 0}, {8, 3, 4, 0}, {9, 3, 4, 0}, {9, 3, 5, 1}, {9, 3, 6, 0}, {10, 3, 6, 0}, {11, 3, 6, 0}, {12, 3, 6, 0}, {12, 3, 7, 0}, {12, 3, 8, 1}, {12, 3, 9, 0}, {13, 2, 9, 0}, {14, 2, 9, 1}, {15, 2, 9, 0}, {15, 2, 10, 0}, {15, 2, 11, 0}, {15, 2, 12, 0}, {15, 2, 13, 0}, {14, 2, 13, 1}, {13, 2, 13, 0}}, {{12, 3, 4, 2, 0}, {10, 3, 4, 1}, {9, 3, 4, 0}, {9, 3, 5, 1}, {9, 3, 6, 0}, {10, 3, 6, 0}, {11, 3, 6, 0}, {12, 3, 6, 0}, {12, 3, 7, 0}, {12, 3, 8, 1}, {12, 3, 9, 0}, {13, 2, 9, 0}, {14, 2, 9, 1}, {15, 2, 9, 0}, {15, 2, 10, 0}, {15, 2, 11, 0}, {15, 2, 12, 0}, {15, 2, 13, 0}, {14, 2, 13, 1}, {13, 2, 13, 0}}, {{6, 6, 5, 2, 3}, {8, 6, 4, 0}, {8, 7, 5, 0}, {8, 7, 6, 0}, {8, 6, 7, 0}, {7, 5, 7, 0}, {6, 4, 7, 0}, {5, 3, 7, 0}, {5, 3, 6, 0}, {6, 3, 5, 0}, {6, 3, 4, 0}, {7, 3, 4, 0}, {8, 3, 4, 0}, {9, 3, 4, 0}, {9, 3, 5, 1}, {9, 3, 6, 0}, {10, 3, 6, 0}, {11, 3, 6, 0}, {12, 3, 6, 0}, {12, 3, 7, 0}, {12, 3, 8, 1}, {12, 3, 9, 0}, {13, 2, 9, 0}, {14, 2, 9, 1}, {15, 2, 9, 0}, {15, 2, 10, 0}, {15, 2, 11, 0}, {15, 2, 12, 0}, {15, 2, 13, 0}, {14, 2, 13, 1}, {13, 2, 13, 0}}, {{13, 2, 13, 0}, {12, 2, 13, 0}, {11, 2, 13, 0}, {10, 2, 14, 0}, {9, 2, 14, 0}, {8, 2, 14, 0}, {8, 2, 13, 0}, {7, 2, 13, 0}, {6, 2, 12, 0}, {5, 2, 11, 0}, {4, 2, 11, 0}, {3, 2, 11, 0}, {2, 3, 11, 0}, {1, 2, 10, 0}, {0, 2, 9, 0}}}, {{{10, 3, 3, 2, 3}, {9, 3, 4, 0}, {9, 3, 5, 1}, {9, 3, 6, 0}, {10, 3, 6, 0}, {11, 3, 6, 0}, {12, 3, 6, 0}, {12, 3, 7, 0}, {12, 3, 8, 1}, {12, 3, 9, 0}, {13, 2, 9, 0}, {14, 2, 9, 1}, {15, 2, 9, 0}}, {{6, 6, 3, 2, 3}, {8, 6, 4, 0}, {8, 7, 5, 0}, {8, 7, 6, 0}, {8, 6, 7, 0}, {7, 5, 7, 0}, {6, 4, 7, 0}, {5, 3, 7, 0}, {5, 3, 6, 0}, {6, 3, 5, 0}, {6, 3, 4, 0}, {7, 3, 4, 0}, {8, 3, 4, 0}, {9, 3, 4, 0}, {9, 3, 5, 1}, {9, 3, 6, 0}, {10, 3, 6, 0}, {11, 3, 6, 0}, {12, 3, 6, 0}, {12, 3, 7, 0}, {12, 3, 8, 1}, {12, 3, 9, 0}, {13, 2, 9, 0}, {14, 2, 9, 1}, {15, 2, 9, 0}}, {{12, 3, 4, 2, 0}, {10, 3, 4, 1}, {9, 3, 4, 0}, {9, 3, 5, 1}, {9, 3, 6, 0}, {10, 3, 6, 0}, {11, 3, 6, 0}, {12, 3, 6, 0}, {12, 3, 7, 0}, {12, 3, 8, 1}, {12, 3, 9, 0}, {13, 2, 9, 0}, {14, 2, 9, 1}, {15, 2, 9, 0}}, {{6, 6, 5, 2, 3}, {8, 6, 4, 0}, {8, 7, 5, 0}, {8, 7, 6, 0}, {8, 6, 7, 0}, {7, 5, 7, 0}, {6, 4, 7, 0}, {5, 3, 7, 0}, {5, 3, 6, 0}, {6, 3, 5, 0}, {6, 3, 4, 0}, {7, 3, 4, 0}, {8, 3, 4, 0}, {9, 3, 4, 0}, {9, 3, 5, 1}, {9, 3, 6, 0}, {10, 3, 6, 0}, {11, 3, 6, 0}, {12, 3, 6, 0}, {12, 3, 7, 0}, {12, 3, 8, 1}, {12, 3, 9, 0}, {13, 2, 9, 0}, {14, 2, 9, 1}, {15, 2, 9, 0}}, {{15, 2, 9, 0}, {15, 2, 10, 0}, {15, 2, 11, 0}, {15, 2, 12, 0}, {14, 3, 12, 0}, {13, 2, 12, 0}, {12, 2, 12, 0}, {11, 2, 13, 0}, {10, 2, 14, 0}, {9, 2, 14, 0}, {8, 2, 14, 0}, {8, 2, 13, 0}, {7, 2, 13, 0}, {6, 2, 12, 0}, {5, 2, 11, 0}, {4, 2, 11, 0}, {3, 2, 11, 0}, {2, 3, 11, 0}, {1, 2, 10, 0}, {0, 2, 9, 0}}}}, ["village_sandcity/schems/sandcity_small_3_1_270"] = {{{{2, 2, 2, 2, 2}, {3, 2, 4, 0}, {3, 2, 5, 1}, {3, 2, 6, 0}}, {{3, 2, 2, 2, 2}, {3, 2, 4, 0}, {3, 2, 5, 1}, {3, 2, 6, 0}}, {{4, 2, 2, 2, 2}, {3, 2, 4, 0}, {3, 2, 5, 1}, {3, 2, 6, 0}}, {}}}, ["village_sandcity/schems/sandcity_small_2_1_270"] = {{{{2, 2, 2, 2, 2}, {3, 2, 4, 0}, {3, 2, 5, 1}, {3, 2, 6, 0}}, {{3, 2, 2, 2, 2}, {3, 2, 4, 0}, {3, 2, 5, 1}, {3, 2, 6, 0}}, {{4, 2, 2, 2, 2}, {3, 2, 4, 0}, {3, 2, 5, 1}, {3, 2, 6, 0}}, {{3, 2, 6, 0}, {3, 2, 7, 0}}}}, ["village_sandcity/schems/sandcity_tiny_4_1_270"] = {{{{2, 2, 2, 2, 3}, {4, 2, 3, 0}, {4, 2, 4, 1}, {4, 2, 5, 0}}, {{2, 2, 3, 2, 3}, {4, 2, 3, 0}, {4, 2, 4, 1}, {4, 2, 5, 0}}, {{4, 2, 5, 0}, {3, 2, 5, 0}}}}, ["village_sandcity/schems/sandcity_tiny_3_1_270"] = {{{{2, 2, 2, 2, 3}, {3, 2, 3, 0}, {3, 2, 4, 1}, {3, 2, 5, 0}}, {{3, 2, 5, 0}, {2, 2, 5, 0}}}}, ["village_sandcity/schems/sandcity_tiny_2_1_270"] = {{{{2, 2, 3, 2, 0}, {3, 2, 4, 1}, {3, 2, 5, 0}}, {{3, 2, 5, 0}, {2, 2, 6, 0}}}}, ["village_towntest/schems/towntest_VanessaE_home1_1_90"] = {{{{10, 15, 6, 2, 2}, {11, 15, 7, 0}, {11, 15, 8, 0}, {11, 15, 9, 0}, {11, 15, 10, 0}, {11, 15, 11, 0}, {11, 15, 12, 0}, {10, 15, 13, 0}, {10, 15, 14, 1}, {10, 15, 15, 0}, {11, 15, 16, 0}, {11, 15, 17, 0}, {11, 15, 18, 0}, {11, 15, 19, 0}, {11, 15, 20, 0}, {11, 15, 21, 0}, {11, 15, 22, 0}, {11, 15, 23, 0}, {12, 14, 23, 0}, {12, 13, 22, 0}, {12, 12, 21, 0}, {12, 11, 20, 0}, {12, 10, 19, 0}, {11, 9, 19, 0}, {10, 8, 19, 0}, {10, 7, 20, 0}, {10, 6, 21, 0}, {10, 5, 22, 0}, {11, 4, 23, 0}, {12, 3, 23, 0}, {12, 3, 22, 0}, {12, 3, 21, 0}, {12, 3, 20, 0}, {12, 3, 19, 0}, {12, 3, 18, 0}, {12, 3, 17, 0}, {12, 3, 16, 0}, {12, 3, 15, 0}, {12, 3, 14, 0}, {12, 3, 13, 0}, {12, 3, 12, 0}, {12, 3, 11, 0}, {12, 3, 10, 0}, {12, 3, 9, 0}, {12, 3, 8, 0}, {12, 3, 7, 0}, {11, 3, 6, 0}, {10, 3, 5, 0}, {10, 3, 4, 1}, {10, 3, 3, 0}}, {{16, 15, 7, 2, 1}, {14, 15, 8, 0}, {13, 15, 9, 0}, {12, 15, 10, 0}, {11, 15, 11, 0}, {11, 15, 12, 0}, {10, 15, 13, 0}, {10, 15, 14, 1}, {10, 15, 15, 0}, {11, 15, 16, 0}, {11, 15, 17, 0}, {11, 15, 18, 0}, {11, 15, 19, 0}, {11, 15, 20, 0}, {11, 15, 21, 0}, {11, 15, 22, 0}, {11, 15, 23, 0}, {12, 14, 23, 0}, {12, 13, 22, 0}, {12, 12, 21, 0}, {12, 11, 20, 0}, {12, 10, 19, 0}, {11, 9, 19, 0}, {10, 8, 19, 0}, {10, 7, 20, 0}, {10, 6, 21, 0}, {10, 5, 22, 0}, {11, 4, 23, 0}, {12, 3, 23, 0}, {12, 3, 22, 0}, {12, 3, 21, 0}, {12, 3, 20, 0}, {12, 3, 19, 0}, {12, 3, 18, 0}, {12, 3, 17, 0}, {12, 3, 16, 0}, {12, 3, 15, 0}, {12, 3, 14, 0}, {12, 3, 13, 0}, {12, 3, 12, 0}, {12, 3, 11, 0}, {12, 3, 10, 0}, {12, 3, 9, 0}, {12, 3, 8, 0}, {12, 3, 7, 0}, {11, 3, 6, 0}, {10, 3, 5, 0}, {10, 3, 4, 1}, {10, 3, 3, 0}}, {{16, 15, 8, 2, 1}, {13, 15, 9, 0}, {12, 15, 10, 0}, {11, 15, 11, 0}, {11, 15, 12, 0}, {10, 15, 13, 0}, {10, 15, 14, 1}, {10, 15, 15, 0}, {11, 15, 16, 0}, {11, 15, 17, 0}, {11, 15, 18, 0}, {11, 15, 19, 0}, {11, 15, 20, 0}, {11, 15, 21, 0}, {11, 15, 22, 0}, {11, 15, 23, 0}, {12, 14, 23, 0}, {12, 13, 22, 0}, {12, 12, 21, 0}, {12, 11, 20, 0}, {12, 10, 19, 0}, {11, 9, 19, 0}, {10, 8, 19, 0}, {10, 7, 20, 0}, {10, 6, 21, 0}, {10, 5, 22, 0}, {11, 4, 23, 0}, {12, 3, 23, 0}, {12, 3, 22, 0}, {12, 3, 21, 0}, {12, 3, 20, 0}, {12, 3, 19, 0}, {12, 3, 18, 0}, {12, 3, 17, 0}, {12, 3, 16, 0}, {12, 3, 15, 0}, {12, 3, 14, 0}, {12, 3, 13, 0}, {12, 3, 12, 0}, {12, 3, 11, 0}, {12, 3, 10, 0}, {12, 3, 9, 0}, {12, 3, 8, 0}, {12, 3, 7, 0}, {11, 3, 6, 0}, {10, 3, 5, 0}, {10, 3, 4, 1}, {10, 3, 3, 0}}, {{22, 15, 13, 2, 2}, {20, 15, 13, 0}, {19, 15, 13, 0}, {18, 15, 13, 0}, {17, 15, 13, 0}, {16, 15, 13, 0}, {15, 15, 14, 0}, {14, 15, 14, 0}, {13, 15, 15, 0}, {12, 15, 15, 1}, {11, 15, 15, 0}, {11, 15, 16, 0}, {11, 15, 17, 0}, {11, 15, 18, 0}, {11, 15, 19, 0}, {11, 15, 20, 0}, {11, 15, 21, 0}, {11, 15, 22, 0}, {11, 15, 23, 0}, {12, 14, 23, 0}, {12, 13, 22, 0}, {12, 12, 21, 0}, {12, 11, 20, 0}, {12, 10, 19, 0}, {11, 9, 19, 0}, {10, 8, 19, 0}, {10, 7, 20, 0}, {10, 6, 21, 0}, {10, 5, 22, 0}, {11, 4, 23, 0}, {12, 3, 23, 0}, {12, 3, 22, 0}, {12, 3, 21, 0}, {12, 3, 20, 0}, {12, 3, 19, 0}, {12, 3, 18, 0}, {12, 3, 17, 0}, {12, 3, 16, 0}, {12, 3, 15, 0}, {12, 3, 14, 0}, {12, 3, 13, 0}, {12, 3, 12, 0}, {12, 3, 11, 0}, {12, 3, 10, 0}, {12, 3, 9, 0}, {12, 3, 8, 0}, {12, 3, 7, 0}, {11, 3, 6, 0}, {10, 3, 5, 0}, {10, 3, 4, 1}, {10, 3, 3, 0}}, {{23, 15, 13, 2, 2}, {24, 15, 14, 0}, {24, 15, 15, 0}, {23, 15, 15, 0}, {22, 15, 15, 0}, {21, 15, 15, 0}, {20, 15, 15, 0}, {19, 15, 15, 0}, {18, 15, 15, 0}, {17, 15, 15, 0}, {16, 15, 15, 0}, {15, 15, 15, 0}, {14, 15, 15, 0}, {13, 15, 15, 0}, {12, 15, 15, 1}, {11, 15, 15, 0}, {11, 15, 16, 0}, {11, 15, 17, 0}, {11, 15, 18, 0}, {11, 15, 19, 0}, {11, 15, 20, 0}, {11, 15, 21, 0}, {11, 15, 22, 0}, {11, 15, 23, 0}, {12, 14, 23, 0}, {12, 13, 22, 0}, {12, 12, 21, 0}, {12, 11, 20, 0}, {12, 10, 19, 0}, {11, 9, 19, 0}, {10, 8, 19, 0}, {10, 7, 20, 0}, {10, 6, 21, 0}, {10, 5, 22, 0}, {11, 4, 23, 0}, {12, 3, 23, 0}, {12, 3, 22, 0}, {12, 3, 21, 0}, {12, 3, 20, 0}, {12, 3, 19, 0}, {12, 3, 18, 0}, {12, 3, 17, 0}, {12, 3, 16, 0}, {12, 3, 15, 0}, {12, 3, 14, 0}, {12, 3, 13, 0}, {12, 3, 12, 0}, {12, 3, 11, 0}, {12, 3, 10, 0}, {12, 3, 9, 0}, {12, 3, 8, 0}, {12, 3, 7, 0}, {11, 3, 6, 0}, {10, 3, 5, 0}, {10, 3, 4, 1}, {10, 3, 3, 0}}, {{10, 3, 3, 0}, {11, 3, 2, 0}, {11, 3, 1, 0}, {11, 2, 0, 0}, {12, 2, 0, 0}, {13, 2, 0, 0}, {14, 2, 0, 0}}}, {{{10, 15, 6, 2, 2}, {11, 15, 7, 0}, {11, 15, 8, 0}, {11, 15, 9, 0}, {11, 15, 10, 0}, {11, 15, 11, 0}, {11, 15, 12, 0}, {10, 15, 13, 0}, {10, 15, 14, 1}, {10, 15, 15, 0}, {11, 15, 16, 0}, {11, 15, 17, 0}, {11, 15, 18, 0}, {11, 15, 19, 0}, {11, 15, 20, 0}, {11, 15, 21, 0}, {11, 15, 22, 0}, {11, 15, 23, 0}, {12, 14, 23, 0}, {12, 13, 22, 0}, {12, 12, 21, 0}, {12, 11, 20, 0}, {12, 10, 19, 0}, {11, 9, 19, 0}, {10, 8, 19, 0}, {10, 7, 20, 0}, {10, 6, 21, 0}, {10, 5, 22, 0}, {10, 4, 23, 0}, {10, 3, 24, 0}, {11, 3, 25, 0}, {12, 3, 26, 0}, {12, 3, 27, 1}, {12, 3, 28, 0}}, {{16, 15, 7, 2, 1}, {14, 15, 8, 0}, {13, 15, 9, 0}, {12, 15, 10, 0}, {11, 15, 11, 0}, {11, 15, 12, 0}, {10, 15, 13, 0}, {10, 15, 14, 1}, {10, 15, 15, 0}, {11, 15, 16, 0}, {11, 15, 17, 0}, {11, 15, 18, 0}, {11, 15, 19, 0}, {11, 15, 20, 0}, {11, 15, 21, 0}, {11, 15, 22, 0}, {11, 15, 23, 0}, {12, 14, 23, 0}, {12, 13, 22, 0}, {12, 12, 21, 0}, {12, 11, 20, 0}, {12, 10, 19, 0}, {11, 9, 19, 0}, {10, 8, 19, 0}, {10, 7, 20, 0}, {10, 6, 21, 0}, {10, 5, 22, 0}, {10, 4, 23, 0}, {10, 3, 24, 0}, {11, 3, 25, 0}, {12, 3, 26, 0}, {12, 3, 27, 1}, {12, 3, 28, 0}}, {{16, 15, 8, 2, 1}, {13, 15, 9, 0}, {12, 15, 10, 0}, {11, 15, 11, 0}, {11, 15, 12, 0}, {10, 15, 13, 0}, {10, 15, 14, 1}, {10, 15, 15, 0}, {11, 15, 16, 0}, {11, 15, 17, 0}, {11, 15, 18, 0}, {11, 15, 19, 0}, {11, 15, 20, 0}, {11, 15, 21, 0}, {11, 15, 22, 0}, {11, 15, 23, 0}, {12, 14, 23, 0}, {12, 13, 22, 0}, {12, 12, 21, 0}, {12, 11, 20, 0}, {12, 10, 19, 0}, {11, 9, 19, 0}, {10, 8, 19, 0}, {10, 7, 20, 0}, {10, 6, 21, 0}, {10, 5, 22, 0}, {10, 4, 23, 0}, {10, 3, 24, 0}, {11, 3, 25, 0}, {12, 3, 26, 0}, {12, 3, 27, 1}, {12, 3, 28, 0}}, {{22, 15, 13, 2, 2}, {20, 15, 13, 0}, {19, 15, 13, 0}, {18, 15, 13, 0}, {17, 15, 13, 0}, {16, 15, 13, 0}, {15, 15, 14, 0}, {14, 15, 14, 0}, {13, 15, 15, 0}, {12, 15, 15, 1}, {11, 15, 15, 0}, {11, 15, 16, 0}, {11, 15, 17, 0}, {11, 15, 18, 0}, {11, 15, 19, 0}, {11, 15, 20, 0}, {11, 15, 21, 0}, {11, 15, 22, 0}, {11, 15, 23, 0}, {12, 14, 23, 0}, {12, 13, 22, 0}, {12, 12, 21, 0}, {12, 11, 20, 0}, {12, 10, 19, 0}, {11, 9, 19, 0}, {10, 8, 19, 0}, {10, 7, 20, 0}, {10, 6, 21, 0}, {10, 5, 22, 0}, {10, 4, 23, 0}, {10, 3, 24, 0}, {11, 3, 25, 0}, {12, 3, 26, 0}, {12, 3, 27, 1}, {12, 3, 28, 0}}, {{23, 15, 13, 2, 2}, {24, 15, 14, 0}, {24, 15, 15, 0}, {23, 15, 15, 0}, {22, 15, 15, 0}, {21, 15, 15, 0}, {20, 15, 15, 0}, {19, 15, 15, 0}, {18, 15, 15, 0}, {17, 15, 15, 0}, {16, 15, 15, 0}, {15, 15, 15, 0}, {14, 15, 15, 0}, {13, 15, 15, 0}, {12, 15, 15, 1}, {11, 15, 15, 0}, {11, 15, 16, 0}, {11, 15, 17, 0}, {11, 15, 18, 0}, {11, 15, 19, 0}, {11, 15, 20, 0}, {11, 15, 21, 0}, {11, 15, 22, 0}, {11, 15, 23, 0}, {12, 14, 23, 0}, {12, 13, 22, 0}, {12, 12, 21, 0}, {12, 11, 20, 0}, {12, 10, 19, 0}, {11, 9, 19, 0}, {10, 8, 19, 0}, {10, 7, 20, 0}, {10, 6, 21, 0}, {10, 5, 22, 0}, {10, 4, 23, 0}, {10, 3, 24, 0}, {11, 3, 25, 0}, {12, 3, 26, 0}, {12, 3, 27, 1}, {12, 3, 28, 0}}, {{12, 3, 28, 0}, {11, 3, 28, 0}, {10, 4, 28, 0}, {9, 3, 28, 0}, {8, 3, 28, 0}, {7, 3, 28, 0}, {7, 3, 27, 0}, {7, 3, 26, 0}, {7, 3, 25, 0}, {7, 3, 24, 0}, {7, 3, 23, 0}, {7, 3, 22, 0}, {7, 3, 21, 0}, {7, 3, 20, 0}, {7, 3, 19, 0}, {7, 3, 18, 0}, {7, 3, 17, 0}, {7, 3, 16, 0}, {7, 3, 15, 0}, {7, 3, 14, 0}, {7, 3, 13, 0}, {7, 3, 12, 0}, {7, 3, 11, 0}, {7, 3, 10, 0}, {7, 3, 9, 0}, {7, 3, 8, 0}, {7, 3, 7, 0}, {7, 3, 6, 0}, {7, 3, 5, 0}, {7, 4, 4, 0}, {7, 3, 3, 0}, {8, 3, 3, 0}, {9, 3, 3, 0}, {10, 3, 2, 0}, {11, 3, 1, 0}, {11, 2, 0, 0}, {12, 2, 0, 0}, {13, 2, 0, 0}, {14, 2, 0, 0}}}}, ["mg_villages/schems/taverne_4"] = {{{{5, 2, 3, 2, 3}, {7, 2, 4, 0}, {8, 2, 4, 0}, {8, 2, 5, 1}, {8, 2, 6, 0}, {8, 2, 7, 0}, {7, 2, 7, 1}, {6, 2, 7, 0}, {5, 2, 6, 0}, {4, 2, 6, 1}, {3, 2, 6, 0}}, {{3, 2, 6, 0}, {2, 2, 6, 0}, {1, 2, 6, 0}, {0, 2, 6, 0}}}, {{{5, 2, 3, 2, 3}, {7, 2, 4, 0}, {8, 2, 4, 0}, {8, 2, 5, 1}, {8, 2, 6, 0}, {8, 2, 7, 0}, {7, 2, 7, 1}, {6, 2, 7, 0}, {5, 2, 7, 0}, {4, 2, 7, 1}, {3, 2, 7, 0}}, {{3, 2, 7, 0}, {2, 2, 6, 0}, {1, 2, 6, 0}, {0, 2, 6, 0}}}}, ["mg_villages/schems/taverne_3|WORKPLACE"] = {{{{8, 3, 7, 2, 1}, {7, 3, 8, 0}, {6, 3, 8, 0}, {5, 3, 8, 0}, {4, 3, 8, 0}, {3, 3, 8, 0}, {2, 3, 8, 0}, {1, 2, 8, 0}, {0, 2, 8, 0}}, {}}}, ["village_towntest/schems/towntest_Nanuk_lavabeacon_0_90"] = {{{{7, 2, 6, 2, 0}, {5, 2, 5, 0}, {5, 2, 4, 0}, {5, 2, 3, 0}, {5, 2, 2, 1}, {5, 1, 1, 0}}, {{5, 1, 1, 0}, {5, 1, 0, 0}}}}, ["village_towntest/schems/towntest_kddekadenz_windmill_0_90|WORKPLACE"] = {{{{4, 1, 7, 2, 0}, {4, 1, 6, 0}, {4, 1, 5, 0}, {4, 1, 4, 0}, {4, 1, 3, 1}, {4, 1, 2, 0}}, {{4, 1, 2, 0}, {4, 1, 1, 0}, {4, 1, 0, 0}}}}, ["village_towntest/schems/towntest_kddekadenz_windmill_0_90"] = {{{{6, 1, 7, 2, 0}, {4, 1, 6, 0}, {4, 1, 5, 0}, {4, 1, 4, 0}, {4, 1, 3, 1}, {4, 1, 2, 0}}, {{4, 1, 2, 0}, {4, 1, 1, 0}, {4, 1, 0, 0}}}}, ["village_towntest/schems/towntest_kddekadenz_home2_1_270"] = {{{{3, 6, 3, 2, 3}, {3, 6, 5, 0}, {3, 5, 6, 0}, {3, 4, 7, 0}, {4, 4, 7, 0}, {5, 3, 7, 0}, {6, 2, 7, 0}, {6, 2, 8, 1}, {6, 2, 9, 0}}, {{6, 6, 3, 2, 2}, {7, 6, 4, 0}, {7, 6, 5, 0}, {6, 6, 5, 0}, {5, 6, 5, 0}, {4, 6, 6, 0}, {3, 5, 6, 0}, {3, 4, 7, 0}, {4, 4, 7, 0}, {5, 3, 7, 0}, {6, 2, 7, 0}, {6, 2, 8, 1}, {6, 2, 9, 0}}, {{9, 6, 3, 2, 1}, {8, 6, 4, 0}, {7, 6, 4, 0}, {7, 6, 5, 0}, {6, 6, 5, 0}, {5, 6, 5, 0}, {4, 6, 6, 0}, {3, 5, 6, 0}, {3, 4, 7, 0}, {4, 4, 7, 0}, {5, 3, 7, 0}, {6, 2, 7, 0}, {6, 2, 8, 1}, {6, 2, 9, 0}}, {{9, 6, 5, 2, 1}, {8, 6, 6, 0}, {7, 6, 6, 0}, {7, 6, 5, 0}, {6, 6, 5, 0}, {5, 6, 5, 0}, {4, 6, 6, 0}, {3, 5, 6, 0}, {3, 4, 7, 0}, {4, 4, 7, 0}, {5, 3, 7, 0}, {6, 2, 7, 0}, {6, 2, 8, 1}, {6, 2, 9, 0}}, {{6, 6, 7, 2, 0}, {7, 6, 6, 0}, {7, 6, 5, 0}, {6, 6, 5, 0}, {5, 6, 5, 0}, {4, 6, 6, 0}, {3, 5, 6, 0}, {3, 4, 7, 0}, {4, 4, 7, 0}, {5, 3, 7, 0}, {6, 2, 7, 0}, {6, 2, 8, 1}, {6, 2, 9, 0}}, {{9, 6, 7, 2, 1}, {8, 6, 6, 0}, {7, 6, 6, 0}, {7, 6, 5, 0}, {6, 6, 5, 0}, {5, 6, 5, 0}, {4, 6, 6, 0}, {3, 5, 6, 0}, {3, 4, 7, 0}, {4, 4, 7, 0}, {5, 3, 7, 0}, {6, 2, 7, 0}, {6, 2, 8, 1}, {6, 2, 9, 0}}, {{6, 2, 9, 0}, {6, 2, 10, 0}, {6, 2, 11, 0}, {6, 2, 12, 0}, {6, 2, 13, 0}, {6, 2, 14, 0}, {6, 2, 15, 0}, {6, 2, 16, 0}, {6, 2, 17, 0}, {6, 2, 18, 0}, {6, 2, 19, 0}, {6, 2, 20, 0}}}}, ["village_gambit/schems/gambit_library_hotel_0_180|WORKPLACE"] = {{{{4, 2, 14, 2, 3}, {4, 2, 13, 0}, {4, 2, 12, 0}, {4, 2, 11, 0}, {5, 2, 11, 0}, {6, 2, 11, 0}, {7, 2, 12, 0}, {8, 2, 13, 0}, {8, 2, 14, 0}, {9, 2, 14, 1}, {10, 2, 14, 0}}, {{10, 2, 14, 0}, {11, 2, 13, 0}, {12, 1, 13, 0}, {13, 1, 12, 0}, {13, 1, 11, 0}, {13, 1, 10, 0}, {13, 1, 9, 0}}}}, ["mg_villages/schems/tent_big_1|WORKPLACE"] = {{{{4, 2, 3, 2, 1}, {3, 2, 2, 1}, {3, 2, 1, 0}}, {{3, 2, 1, 0}, {3, 2, 0, 0}}}}, ["mg_villages/schems/church_1|WORKPLACE"] = {{{{24, 3, 6, 2, 1}, {24, 3, 5, 0}, {23, 3, 5, 0}, {22, 3, 5, 0}, {21, 3, 6, 0}, {20, 3, 6, 0}, {19, 3, 6, 0}, {18, 3, 6, 0}, {17, 3, 6, 0}, {16, 3, 6, 0}, {15, 3, 6, 0}, {14, 3, 6, 0}, {13, 3, 6, 0}, {12, 3, 6, 0}, {11, 3, 6, 0}, {10, 3, 6, 0}, {9, 3, 6, 0}, {8, 3, 6, 0}, {7, 3, 6, 0}, {6, 3, 6, 0}, {5, 3, 6, 1}, {4, 3, 6, 0}}, {{4, 3, 6, 0}, {3, 3, 6, 0}, {2, 3, 6, 0}, {1, 3, 6, 0}, {0, 2, 6, 0}}}}, ["mg_villages/schems/hochsitz_4|WORKPLACE"] = {{{{3, 7, 2, 2, 3}, {2, 7, 2, 0}, {1, 2, 2, 0}, {0, 2, 2, 0}}, {}}}, ["village_towntest/schems/towntest_irksomeduck_manor_0_90"] = {{{{2, 5, 12, 2, 3}, {3, 5, 13, 0}, {4, 5, 13, 0}, {4, 5, 14, 0}, {4, 5, 15, 0}, {4, 5, 16, 0}, {4, 4, 17, 0}, {3, 3, 17, 0}, {2, 2, 17, 0}, {2, 2, 16, 0}, {3, 2, 15, 0}, {4, 2, 15, 0}, {5, 2, 15, 0}, {6, 2, 15, 1}, {7, 2, 15, 0}, {8, 2, 15, 0}, {8, 2, 14, 1}, {8, 2, 13, 0}}, {{14, 5, 12, 2, 1}, {13, 5, 13, 0}, {12, 5, 13, 0}, {12, 5, 14, 0}, {12, 5, 15, 0}, {12, 5, 16, 0}, {12, 4, 17, 0}, {13, 3, 17, 0}, {14, 2, 17, 0}, {14, 2, 16, 0}, {13, 2, 15, 0}, {12, 2, 15, 0}, {11, 2, 15, 0}, {10, 2, 15, 1}, {9, 2, 15, 0}, {8, 2, 15, 0}, {8, 2, 14, 1}, {8, 2, 13, 0}}, {{5, 5, 13, 2, 0}, {4, 5, 14, 0}, {4, 5, 15, 0}, {4, 5, 16, 0}, {4, 4, 17, 0}, {3, 3, 17, 0}, {2, 2, 17, 0}, {2, 2, 16, 0}, {3, 2, 15, 0}, {4, 2, 15, 0}, {5, 2, 15, 0}, {6, 2, 15, 1}, {7, 2, 15, 0}, {8, 2, 15, 0}, {8, 2, 14, 1}, {8, 2, 13, 0}}, {{11, 5, 13, 2, 0}, {12, 5, 14, 0}, {12, 5, 15, 0}, {12, 5, 16, 0}, {12, 4, 17, 0}, {13, 3, 17, 0}, {14, 2, 17, 0}, {14, 2, 16, 0}, {13, 2, 15, 0}, {12, 2, 15, 0}, {11, 2, 15, 0}, {10, 2, 15, 1}, {9, 2, 15, 0}, {8, 2, 15, 0}, {8, 2, 14, 1}, {8, 2, 13, 0}}, {{2, 5, 14, 2, 3}, {3, 5, 15, 0}, {4, 5, 16, 0}, {4, 4, 17, 0}, {3, 3, 17, 0}, {2, 2, 17, 0}, {2, 2, 16, 0}, {3, 2, 15, 0}, {4, 2, 15, 0}, {5, 2, 15, 0}, {6, 2, 15, 1}, {7, 2, 15, 0}, {8, 2, 15, 0}, {8, 2, 14, 1}, {8, 2, 13, 0}}, {{14, 5, 14, 2, 1}, {13, 5, 15, 0}, {12, 5, 15, 0}, {12, 5, 16, 0}, {12, 4, 17, 0}, {13, 3, 17, 0}, {14, 2, 17, 0}, {14, 2, 16, 0}, {13, 2, 15, 0}, {12, 2, 15, 0}, {11, 2, 15, 0}, {10, 2, 15, 1}, {9, 2, 15, 0}, {8, 2, 15, 0}, {8, 2, 14, 1}, {8, 2, 13, 0}}, {{5, 5, 15, 2, 0}, {4, 5, 16, 0}, {4, 4, 17, 0}, {3, 3, 17, 0}, {2, 2, 17, 0}, {2, 2, 16, 0}, {3, 2, 15, 0}, {4, 2, 15, 0}, {5, 2, 15, 0}, {6, 2, 15, 1}, {7, 2, 15, 0}, {8, 2, 15, 0}, {8, 2, 14, 1}, {8, 2, 13, 0}}, {{14, 5, 16, 2, 1}, {13, 5, 15, 0}, {12, 5, 15, 0}, {12, 5, 16, 0}, {12, 4, 17, 0}, {13, 3, 17, 0}, {14, 2, 17, 0}, {14, 2, 16, 0}, {13, 2, 15, 0}, {12, 2, 15, 0}, {11, 2, 15, 0}, {10, 2, 15, 1}, {9, 2, 15, 0}, {8, 2, 15, 0}, {8, 2, 14, 1}, {8, 2, 13, 0}}, {{8, 2, 13, 0}, {8, 2, 12, 0}, {8, 2, 11, 0}, {8, 2, 10, 0}, {8, 2, 9, 0}, {8, 2, 8, 0}, {8, 2, 7, 0}, {8, 2, 6, 0}, {8, 2, 5, 0}, {8, 2, 4, 0}, {8, 2, 3, 0}, {8, 2, 2, 0}, {8, 2, 1, 0}, {8, 1, 0, 0}}}, {{{2, 5, 12, 2, 3}, {3, 5, 13, 0}, {4, 5, 13, 0}, {4, 5, 14, 0}, {4, 5, 15, 0}, {4, 5, 16, 0}, {4, 4, 17, 0}, {3, 3, 17, 0}, {2, 2, 17, 0}, {2, 2, 16, 0}, {3, 2, 15, 0}, {4, 2, 15, 0}, {5, 2, 15, 0}, {6, 2, 15, 1}, {7, 2, 15, 0}, {8, 2, 15, 0}, {8, 2, 16, 1}, {8, 2, 17, 0}}, {{14, 5, 12, 2, 1}, {13, 5, 13, 0}, {12, 5, 13, 0}, {12, 5, 14, 0}, {12, 5, 15, 0}, {12, 5, 16, 0}, {12, 4, 17, 0}, {13, 3, 17, 0}, {14, 2, 17, 0}, {14, 2, 16, 0}, {13, 2, 15, 0}, {12, 2, 15, 0}, {11, 2, 15, 0}, {10, 2, 15, 1}, {9, 2, 15, 0}, {8, 2, 15, 0}, {8, 2, 16, 1}, {8, 2, 17, 0}}, {{5, 5, 13, 2, 0}, {4, 5, 14, 0}, {4, 5, 15, 0}, {4, 5, 16, 0}, {4, 4, 17, 0}, {3, 3, 17, 0}, {2, 2, 17, 0}, {2, 2, 16, 0}, {3, 2, 15, 0}, {4, 2, 15, 0}, {5, 2, 15, 0}, {6, 2, 15, 1}, {7, 2, 15, 0}, {8, 2, 15, 0}, {8, 2, 16, 1}, {8, 2, 17, 0}}, {{11, 5, 13, 2, 0}, {12, 5, 14, 0}, {12, 5, 15, 0}, {12, 5, 16, 0}, {12, 4, 17, 0}, {13, 3, 17, 0}, {14, 2, 17, 0}, {14, 2, 16, 0}, {13, 2, 15, 0}, {12, 2, 15, 0}, {11, 2, 15, 0}, {10, 2, 15, 1}, {9, 2, 15, 0}, {8, 2, 15, 0}, {8, 2, 16, 1}, {8, 2, 17, 0}}, {{2, 5, 14, 2, 3}, {3, 5, 15, 0}, {4, 5, 16, 0}, {4, 4, 17, 0}, {3, 3, 17, 0}, {2, 2, 17, 0}, {2, 2, 16, 0}, {3, 2, 15, 0}, {4, 2, 15, 0}, {5, 2, 15, 0}, {6, 2, 15, 1}, {7, 2, 15, 0}, {8, 2, 15, 0}, {8, 2, 16, 1}, {8, 2, 17, 0}}, {{14, 5, 14, 2, 1}, {13, 5, 15, 0}, {12, 5, 15, 0}, {12, 5, 16, 0}, {12, 4, 17, 0}, {13, 3, 17, 0}, {14, 2, 17, 0}, {14, 2, 16, 0}, {13, 2, 15, 0}, {12, 2, 15, 0}, {11, 2, 15, 0}, {10, 2, 15, 1}, {9, 2, 15, 0}, {8, 2, 15, 0}, {8, 2, 16, 1}, {8, 2, 17, 0}}, {{5, 5, 15, 2, 0}, {4, 5, 16, 0}, {4, 4, 17, 0}, {3, 3, 17, 0}, {2, 2, 17, 0}, {2, 2, 16, 0}, {3, 2, 15, 0}, {4, 2, 15, 0}, {5, 2, 15, 0}, {6, 2, 15, 1}, {7, 2, 15, 0}, {8, 2, 15, 0}, {8, 2, 16, 1}, {8, 2, 17, 0}}, {{14, 5, 16, 2, 1}, {13, 5, 15, 0}, {12, 5, 15, 0}, {12, 5, 16, 0}, {12, 4, 17, 0}, {13, 3, 17, 0}, {14, 2, 17, 0}, {14, 2, 16, 0}, {13, 2, 15, 0}, {12, 2, 15, 0}, {11, 2, 15, 0}, {10, 2, 15, 1}, {9, 2, 15, 0}, {8, 2, 15, 0}, {8, 2, 16, 1}, {8, 2, 17, 0}}, {{8, 2, 17, 0}, {9, 2, 18, 0}, {9, 1, 19, 0}, {10, 1, 19, 0}, {11, 1, 19, 0}, {12, 1, 19, 0}, {13, 1, 19, 0}, {14, 1, 19, 0}, {15, 1, 19, 0}, {16, 1, 19, 0}, {16, 1, 18, 0}, {16, 1, 17, 0}, {16, 1, 16, 0}, {16, 1, 15, 0}, {16, 1, 14, 0}, {16, 1, 13, 0}, {16, 1, 12, 0}, {16, 1, 11, 0}, {16, 1, 10, 0}, {15, 1, 9, 0}, {14, 1, 8, 0}, {13, 1, 7, 0}, {12, 1, 6, 0}, {11, 1, 5, 0}, {10, 1, 4, 0}, {10, 1, 3, 0}, {10, 1, 2, 0}, {10, 1, 1, 0}, {10, 1, 0, 0}, {9, 1, 0, 0}, {8, 1, 0, 0}}}}, ["mg_villages/schems/baking_house_3|WORKPLACE"] = {{{{4, 2, 8, 2, 3}, {4, 3, 7, 0}, {4, 3, 6, 0}, {4, 2, 5, 0}, {4, 2, 4, 0}, {3, 2, 3, 1}, {3, 2, 2, 0}}, {{3, 2, 2, 0}, {2, 2, 2, 0}, {1, 2, 2, 0}, {0, 2, 3, 0}, {0, 2, 4, 0}, {0, 2, 5, 0}, {0, 2, 6, 0}, {0, 2, 7, 0}}}}, ["village_towntest/schems/towntest_cornernote_turret_1_90"] = {{{{4, 2, 3, 2, 0}, {3, 2, 2, 0}, {3, 2, 1, 1}, {3, 2, 0, 0}}, {}}}, ["mg_villages/schems/clay_pit_1|WORKPLACE"] = {{{{5, 4, 5, 2, 3}, {4, 5, 5, 0}, {3, 5, 5, 0}, {2, 5, 4, 0}, {1, 5, 4, 0}, {0, 5, 4, 0}}, {}}}, ["mg_villages/schems/tent_tiny_2"] = {{{{2, 2, 3, 2, 0}, {2, 2, 1, 1}, {2, 2, 0, 0}}, {{2, 2, 0, 0}, {1, 2, 0, 0}, {0, 2, 0, 0}, {0, 2, 1, 0}, {0, 2, 2, 0}, {0, 2, 3, 0}, {0, 2, 4, 0}, {0, 2, 5, 0}, {1, 2, 5, 0}, {2, 2, 5, 0}}}}, ["village_towntest/schems/towntest_cornernote_fortress_4_0|WORKPLACE"] = {{{{19, 10, 6, 2, 0}, {19, 10, 7, 0}, {18, 10, 7, 0}, {17, 9, 7, 0}, {17, 8, 6, 0}, {18, 7, 6, 0}, {19, 6, 7, 0}, {19, 6, 8, 0}, {19, 6, 9, 1}, {19, 6, 10, 0}, {19, 6, 11, 0}, {19, 6, 12, 0}, {19, 6, 13, 0}, {19, 6, 14, 0}, {19, 6, 15, 0}, {19, 6, 16, 0}, {18, 6, 16, 1}, {17, 5, 16, 0}}, {{38, 10, 7, 2, 0}, {38, 9, 6, 0}, {39, 8, 6, 0}, {39, 7, 7, 0}, {38, 6, 8, 0}, {37, 6, 8, 0}, {37, 6, 9, 1}, {37, 6, 10, 0}, {36, 6, 11, 0}, {35, 6, 12, 0}, {34, 6, 12, 0}, {33, 6, 12, 0}, {32, 6, 12, 0}, {31, 6, 12, 0}, {30, 6, 12, 0}, {29, 6, 12, 0}, {28, 6, 12, 0}, {27, 6, 12, 0}, {26, 6, 12, 0}, {25, 6, 12, 0}, {24, 6, 12, 0}, {23, 6, 12, 0}, {22, 6, 13, 0}, {21, 6, 14, 0}, {20, 6, 15, 0}, {19, 6, 16, 0}, {18, 6, 16, 1}, {17, 5, 16, 0}}, {{30, 6, 18, 2, 1}, {30, 6, 17, 0}, {29, 6, 17, 0}, {28, 6, 17, 0}, {27, 6, 16, 0}, {26, 6, 16, 0}, {25, 6, 16, 0}, {24, 6, 16, 1}, {23, 6, 16, 0}, {22, 6, 16, 0}, {21, 6, 16, 0}, {20, 6, 16, 0}, {19, 6, 16, 0}, {18, 6, 16, 1}, {17, 5, 16, 0}}, {}, {{17, 10, 24, 2, 1}, {18, 10, 24, 0}, {18, 10, 25, 0}, {18, 9, 26, 0}, {17, 8, 26, 0}, {17, 7, 25, 0}, {18, 6, 24, 0}, {19, 6, 24, 0}, {19, 6, 23, 1}, {19, 6, 22, 0}, {19, 6, 21, 0}, {19, 6, 20, 0}, {19, 6, 19, 0}, {19, 6, 18, 0}, {19, 6, 17, 0}, {18, 6, 16, 1}, {17, 5, 16, 0}}, {{38, 10, 25, 2, 3}, {39, 9, 25, 0}, {39, 8, 26, 0}, {38, 7, 26, 0}, {37, 6, 25, 0}, {37, 6, 24, 0}, {37, 6, 23, 1}, {37, 6, 22, 0}, {36, 6, 21, 0}, {35, 6, 20, 0}, {34, 6, 20, 0}, {33, 6, 20, 0}, {32, 6, 20, 0}, {31, 6, 20, 0}, {30, 6, 20, 0}, {29, 6, 20, 0}, {28, 6, 20, 0}, {27, 6, 20, 0}, {26, 6, 20, 0}, {25, 6, 20, 0}, {24, 6, 20, 0}, {23, 6, 20, 0}, {22, 6, 19, 0}, {21, 6, 18, 0}, {20, 6, 17, 0}, {19, 6, 16, 0}, {18, 6, 16, 1}, {17, 5, 16, 0}}, {{17, 5, 16, 0}, {16, 5, 16, 0}, {15, 5, 16, 0}, {14, 5, 16, 0}, {13, 5, 16, 0}, {12, 5, 16, 0}, {11, 5, 16, 0}, {10, 5, 16, 0}, {9, 5, 16, 0}, {8, 5, 16, 0}, {7, 5, 16, 0}, {6, 5, 16, 0}, {5, 5, 16, 0}, {4, 5, 16, 0}, {3, 5, 16, 0}, {2, 5, 16, 0}, {1, 5, 16, 0}, {0, 5, 16, 0}}}}, ["mg_villages/schems/house_medieval_fancy_1_90"] = {{{{10, 8, 4, 2, 3}, {10, 8, 6, 0}, {10, 8, 7, 0}, {9, 8, 7, 1}, {8, 8, 7, 0}, {8, 8, 6, 0}, {8, 7, 5, 0}, {8, 7, 4, 0}, {7, 7, 4, 0}, {6, 6, 4, 0}, {6, 5, 3, 0}, {7, 5, 3, 0}, {8, 5, 3, 0}, {8, 4, 4, 0}, {7, 3, 4, 0}, {6, 2, 4, 0}, {5, 2, 4, 1}, {4, 2, 4, 0}}, {{5, 8, 5, 2, 3}, {6, 8, 6, 0}, {7, 8, 6, 1}, {8, 8, 6, 0}, {8, 7, 5, 0}, {8, 7, 4, 0}, {7, 7, 4, 0}, {6, 6, 4, 0}, {6, 5, 3, 0}, {7, 5, 3, 0}, {8, 5, 3, 0}, {8, 4, 4, 0}, {7, 3, 4, 0}, {6, 2, 4, 0}, {5, 2, 4, 1}, {4, 2, 4, 0}}, {{5, 8, 7, 2, 3}, {6, 8, 6, 0}, {7, 8, 6, 1}, {8, 8, 6, 0}, {8, 7, 5, 0}, {8, 7, 4, 0}, {7, 7, 4, 0}, {6, 6, 4, 0}, {6, 5, 3, 0}, {7, 5, 3, 0}, {8, 5, 3, 0}, {8, 4, 4, 0}, {7, 3, 4, 0}, {6, 2, 4, 0}, {5, 2, 4, 1}, {4, 2, 4, 0}}, {{10, 2, 8, 2, 1}, {8, 2, 9, 1}, {7, 2, 9, 0}, {7, 2, 8, 0}, {7, 2, 7, 0}, {6, 2, 6, 0}, {6, 2, 5, 1}, {6, 2, 4, 0}, {5, 2, 4, 1}, {4, 2, 4, 0}}, {{9, 5, 9, 2, 0}, {11, 5, 8, 0}, {11, 5, 7, 1}, {11, 5, 6, 0}, {11, 5, 5, 0}, {10, 5, 5, 1}, {10, 5, 4, 0}, {9, 5, 4, 0}, {8, 4, 4, 0}, {7, 3, 4, 0}, {6, 2, 4, 0}, {5, 2, 4, 1}, {4, 2, 4, 0}}, {{10, 5, 9, 2, 3}, {11, 5, 8, 0}, {11, 5, 7, 1}, {11, 5, 6, 0}, {11, 5, 5, 0}, {10, 5, 5, 1}, {10, 5, 4, 0}, {9, 5, 4, 0}, {8, 4, 4, 0}, {7, 3, 4, 0}, {6, 2, 4, 0}, {5, 2, 4, 1}, {4, 2, 4, 0}}, {{6, 5, 10, 2, 0}, {6, 6, 9, 0}, {7, 6, 9, 0}, {7, 5, 8, 0}, {7, 5, 7, 1}, {7, 5, 6, 0}, {6, 5, 6, 0}, {5, 5, 6, 0}, {5, 5, 5, 1}, {5, 5, 4, 0}, {5, 5, 3, 0}, {6, 5, 3, 0}, {7, 5, 3, 0}, {8, 5, 3, 0}, {8, 4, 4, 0}, {7, 3, 4, 0}, {6, 2, 4, 0}, {5, 2, 4, 1}, {4, 2, 4, 0}}, {{7, 5, 10, 2, 0}, {7, 5, 7, 1}, {7, 5, 6, 0}, {6, 5, 6, 0}, {5, 5, 6, 0}, {5, 5, 5, 1}, {5, 5, 4, 0}, {5, 5, 3, 0}, {6, 5, 3, 0}, {7, 5, 3, 0}, {8, 5, 3, 0}, {8, 4, 4, 0}, {7, 3, 4, 0}, {6, 2, 4, 0}, {5, 2, 4, 1}, {4, 2, 4, 0}}, {{4, 2, 4, 0}, {3, 2, 5, 0}, {2, 2, 6, 0}, {1, 2, 7, 0}, {0, 2, 7, 0}}}, {{{10, 8, 4, 2, 3}, {10, 8, 6, 0}, {10, 8, 7, 0}, {9, 8, 7, 1}, {8, 8, 7, 0}, {8, 8, 6, 0}, {8, 7, 5, 0}, {8, 7, 4, 0}, {7, 7, 4, 0}, {6, 6, 4, 0}, {6, 5, 3, 0}, {7, 5, 3, 0}, {8, 5, 3, 0}, {8, 4, 4, 0}, {7, 3, 4, 0}, {6, 2, 4, 0}, {6, 2, 3, 0}, {7, 2, 3, 0}, {8, 2, 3, 1}, {9, 2, 3, 0}, {10, 2, 3, 0}, {10, 2, 4, 0}, {11, 2, 4, 1}, {12, 2, 4, 0}}, {{5, 8, 5, 2, 3}, {6, 8, 6, 0}, {7, 8, 6, 1}, {8, 8, 6, 0}, {8, 7, 5, 0}, {8, 7, 4, 0}, {7, 7, 4, 0}, {6, 6, 4, 0}, {6, 5, 3, 0}, {7, 5, 3, 0}, {8, 5, 3, 0}, {8, 4, 4, 0}, {7, 3, 4, 0}, {6, 2, 4, 0}, {6, 2, 3, 0}, {7, 2, 3, 0}, {8, 2, 3, 1}, {9, 2, 3, 0}, {10, 2, 3, 0}, {10, 2, 4, 0}, {11, 2, 4, 1}, {12, 2, 4, 0}}, {{5, 8, 7, 2, 3}, {6, 8, 6, 0}, {7, 8, 6, 1}, {8, 8, 6, 0}, {8, 7, 5, 0}, {8, 7, 4, 0}, {7, 7, 4, 0}, {6, 6, 4, 0}, {6, 5, 3, 0}, {7, 5, 3, 0}, {8, 5, 3, 0}, {8, 4, 4, 0}, {7, 3, 4, 0}, {6, 2, 4, 0}, {6, 2, 3, 0}, {7, 2, 3, 0}, {8, 2, 3, 1}, {9, 2, 3, 0}, {10, 2, 3, 0}, {10, 2, 4, 0}, {11, 2, 4, 1}, {12, 2, 4, 0}}, {{10, 2, 8, 2, 1}, {8, 2, 9, 1}, {7, 2, 9, 0}, {7, 2, 8, 0}, {7, 2, 7, 0}, {6, 2, 6, 0}, {6, 2, 5, 1}, {6, 2, 4, 0}, {6, 2, 3, 0}, {7, 2, 3, 0}, {8, 2, 3, 1}, {9, 2, 3, 0}, {10, 2, 3, 0}, {10, 2, 4, 0}, {11, 2, 4, 1}, {12, 2, 4, 0}}, {{9, 5, 9, 2, 0}, {11, 5, 8, 0}, {11, 5, 7, 1}, {11, 5, 6, 0}, {11, 5, 5, 0}, {10, 5, 5, 1}, {10, 5, 4, 0}, {9, 5, 4, 0}, {8, 4, 4, 0}, {7, 3, 4, 0}, {6, 2, 4, 0}, {6, 2, 3, 0}, {7, 2, 3, 0}, {8, 2, 3, 1}, {9, 2, 3, 0}, {10, 2, 3, 0}, {10, 2, 4, 0}, {11, 2, 4, 1}, {12, 2, 4, 0}}, {{10, 5, 9, 2, 3}, {11, 5, 8, 0}, {11, 5, 7, 1}, {11, 5, 6, 0}, {11, 5, 5, 0}, {10, 5, 5, 1}, {10, 5, 4, 0}, {9, 5, 4, 0}, {8, 4, 4, 0}, {7, 3, 4, 0}, {6, 2, 4, 0}, {6, 2, 3, 0}, {7, 2, 3, 0}, {8, 2, 3, 1}, {9, 2, 3, 0}, {10, 2, 3, 0}, {10, 2, 4, 0}, {11, 2, 4, 1}, {12, 2, 4, 0}}, {{6, 5, 10, 2, 0}, {6, 6, 9, 0}, {7, 6, 9, 0}, {7, 5, 8, 0}, {7, 5, 7, 1}, {7, 5, 6, 0}, {6, 5, 6, 0}, {5, 5, 6, 0}, {5, 5, 5, 1}, {5, 5, 4, 0}, {5, 5, 3, 0}, {6, 5, 3, 0}, {7, 5, 3, 0}, {8, 5, 3, 0}, {8, 4, 4, 0}, {7, 3, 4, 0}, {6, 2, 4, 0}, {6, 2, 3, 0}, {7, 2, 3, 0}, {8, 2, 3, 1}, {9, 2, 3, 0}, {10, 2, 3, 0}, {10, 2, 4, 0}, {11, 2, 4, 1}, {12, 2, 4, 0}}, {{7, 5, 10, 2, 0}, {7, 5, 7, 1}, {7, 5, 6, 0}, {6, 5, 6, 0}, {5, 5, 6, 0}, {5, 5, 5, 1}, {5, 5, 4, 0}, {5, 5, 3, 0}, {6, 5, 3, 0}, {7, 5, 3, 0}, {8, 5, 3, 0}, {8, 4, 4, 0}, {7, 3, 4, 0}, {6, 2, 4, 0}, {6, 2, 3, 0}, {7, 2, 3, 0}, {8, 2, 3, 1}, {9, 2, 3, 0}, {10, 2, 3, 0}, {10, 2, 4, 0}, {11, 2, 4, 1}, {12, 2, 4, 0}}, {{12, 2, 4, 0}, {12, 2, 3, 0}, {12, 2, 2, 0}, {11, 2, 1, 0}, {10, 2, 0, 0}, {9, 2, 0, 0}, {8, 2, 0, 0}, {7, 2, 0, 0}, {6, 2, 0, 0}, {5, 2, 1, 0}, {4, 2, 2, 0}, {3, 2, 3, 0}, {2, 2, 4, 0}, {1, 2, 5, 0}, {0, 2, 6, 0}, {0, 2, 7, 0}}}}, ["mg_villages/schems/logcabinpub3"] = {{{{8, 5, 3, 2, 2}, {9, 5, 5, 0}, {9, 5, 6, 1}, {10, 5, 6, 0}, {10, 5, 7, 0}, {11, 5, 7, 0}, {12, 5, 7, 0}, {12, 4, 6, 0}, {11, 3, 6, 0}, {10, 2, 6, 0}, {10, 2, 5, 1}, {10, 2, 4, 0}}, {{9, 5, 3, 2, 2}, {9, 5, 5, 0}, {9, 5, 6, 1}, {10, 5, 6, 0}, {10, 5, 7, 0}, {11, 5, 7, 0}, {12, 5, 7, 0}, {12, 4, 6, 0}, {11, 3, 6, 0}, {10, 2, 6, 0}, {10, 2, 5, 1}, {10, 2, 4, 0}}, {{10, 5, 3, 2, 3}, {12, 5, 4, 1}, {12, 5, 5, 0}, {12, 4, 6, 0}, {11, 3, 6, 0}, {10, 2, 6, 0}, {10, 2, 5, 1}, {10, 2, 4, 0}}, {{10, 5, 4, 2, 3}, {9, 5, 5, 0}, {9, 5, 6, 1}, {10, 5, 6, 0}, {10, 5, 7, 0}, {11, 5, 7, 0}, {12, 5, 7, 0}, {12, 4, 6, 0}, {11, 3, 6, 0}, {10, 2, 6, 0}, {10, 2, 5, 1}, {10, 2, 4, 0}}, {{8, 5, 5, 2, 2}, {9, 5, 6, 1}, {10, 5, 6, 0}, {10, 5, 7, 0}, {11, 5, 7, 0}, {12, 5, 7, 0}, {12, 4, 6, 0}, {11, 3, 6, 0}, {10, 2, 6, 0}, {10, 2, 5, 1}, {10, 2, 4, 0}}, {{3, 4, 8, 2, 2}, {4, 4, 9, 0}, {5, 4, 9, 0}, {6, 4, 9, 0}, {7, 5, 9, 0}, {8, 5, 9, 0}, {9, 5, 9, 0}, {10, 5, 9, 0}, {10, 5, 8, 1}, {10, 5, 7, 0}, {11, 5, 7, 0}, {12, 5, 7, 0}, {12, 4, 6, 0}, {11, 3, 6, 0}, {10, 2, 6, 0}, {10, 2, 5, 1}, {10, 2, 4, 0}}, {{4, 4, 8, 2, 2}, {5, 4, 9, 0}, {6, 4, 9, 0}, {7, 5, 9, 0}, {8, 5, 9, 0}, {9, 5, 9, 0}, {10, 5, 9, 0}, {10, 5, 8, 1}, {10, 5, 7, 0}, {11, 5, 7, 0}, {12, 5, 7, 0}, {12, 4, 6, 0}, {11, 3, 6, 0}, {10, 2, 6, 0}, {10, 2, 5, 1}, {10, 2, 4, 0}}, {{5, 4, 8, 2, 2}, {6, 4, 9, 0}, {7, 5, 9, 0}, {8, 5, 9, 0}, {9, 5, 9, 0}, {10, 5, 9, 0}, {10, 5, 8, 1}, {10, 5, 7, 0}, {11, 5, 7, 0}, {12, 5, 7, 0}, {12, 4, 6, 0}, {11, 3, 6, 0}, {10, 2, 6, 0}, {10, 2, 5, 1}, {10, 2, 4, 0}}, {{6, 4, 8, 2, 2}, {7, 5, 9, 0}, {8, 5, 9, 0}, {9, 5, 9, 0}, {10, 5, 9, 0}, {10, 5, 8, 1}, {10, 5, 7, 0}, {11, 5, 7, 0}, {12, 5, 7, 0}, {12, 4, 6, 0}, {11, 3, 6, 0}, {10, 2, 6, 0}, {10, 2, 5, 1}, {10, 2, 4, 0}}, {{7, 5, 8, 2, 2}, {8, 5, 9, 0}, {9, 5, 9, 0}, {10, 5, 9, 0}, {10, 5, 8, 1}, {10, 5, 7, 0}, {11, 5, 7, 0}, {12, 5, 7, 0}, {12, 4, 6, 0}, {11, 3, 6, 0}, {10, 2, 6, 0}, {10, 2, 5, 1}, {10, 2, 4, 0}}, {{8, 5, 8, 2, 2}, {9, 5, 9, 0}, {10, 5, 9, 0}, {10, 5, 8, 1}, {10, 5, 7, 0}, {11, 5, 7, 0}, {12, 5, 7, 0}, {12, 4, 6, 0}, {11, 3, 6, 0}, {10, 2, 6, 0}, {10, 2, 5, 1}, {10, 2, 4, 0}}, {{9, 5, 8, 2, 2}, {10, 5, 7, 0}, {11, 5, 7, 0}, {12, 5, 7, 0}, {12, 4, 6, 0}, {11, 3, 6, 0}, {10, 2, 6, 0}, {10, 2, 5, 1}, {10, 2, 4, 0}}, {{12, 5, 10, 2, 0}, {12, 5, 8, 1}, {12, 5, 7, 0}, {12, 4, 6, 0}, {11, 3, 6, 0}, {10, 2, 6, 0}, {10, 2, 5, 1}, {10, 2, 4, 0}}, {{13, 5, 10, 2, 0}, {12, 5, 8, 1}, {12, 5, 7, 0}, {12, 4, 6, 0}, {11, 3, 6, 0}, {10, 2, 6, 0}, {10, 2, 5, 1}, {10, 2, 4, 0}}, {{10, 2, 4, 0}, {10, 2, 3, 0}, {10, 2, 2, 0}, {10, 2, 1, 0}, {10, 2, 0, 0}}}}, ["village_towntest/schems/towntest_ACDC_house_0_90"] = {{{{30, 12, 3, 2, 1}, {29, 12, 4, 0}, {28, 12, 4, 0}, {27, 12, 5, 0}, {26, 12, 6, 0}, {25, 12, 7, 0}, {24, 12, 8, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 11, 0}, {19, 8, 11, 0}, {18, 7, 11, 0}, {17, 7, 11, 0}, {16, 7, 11, 0}, {15, 6, 11, 0}, {14, 5, 11, 0}, {14, 5, 10, 0}, {14, 4, 9, 0}, {14, 3, 8, 0}, {15, 2, 7, 0}, {16, 2, 6, 0}, {17, 2, 5, 0}, {17, 2, 4, 1}, {17, 2, 3, 0}}, {{30, 12, 6, 2, 1}, {29, 12, 7, 0}, {28, 12, 7, 0}, {27, 12, 7, 0}, {26, 12, 7, 0}, {25, 12, 7, 0}, {24, 12, 8, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 11, 0}, {19, 8, 11, 0}, {18, 7, 11, 0}, {17, 7, 11, 0}, {16, 7, 11, 0}, {15, 6, 11, 0}, {14, 5, 11, 0}, {14, 5, 10, 0}, {14, 4, 9, 0}, {14, 3, 8, 0}, {15, 2, 7, 0}, {16, 2, 6, 0}, {17, 2, 5, 0}, {17, 2, 4, 1}, {17, 2, 3, 0}}, {{5, 12, 7, 2, 3}, {6, 12, 8, 0}, {7, 12, 8, 0}, {8, 12, 8, 0}, {9, 12, 8, 0}, {10, 12, 8, 0}, {11, 12, 8, 0}, {12, 12, 8, 0}, {13, 12, 8, 0}, {14, 12, 8, 0}, {15, 12, 8, 0}, {16, 12, 8, 0}, {17, 12, 8, 0}, {18, 12, 8, 0}, {19, 12, 8, 0}, {20, 12, 9, 0}, {21, 11, 9, 0}, {21, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 11, 0}, {19, 8, 11, 0}, {18, 7, 11, 0}, {17, 7, 11, 0}, {16, 7, 11, 0}, {15, 6, 11, 0}, {14, 5, 11, 0}, {14, 5, 10, 0}, {14, 4, 9, 0}, {14, 3, 8, 0}, {15, 2, 7, 0}, {16, 2, 6, 0}, {17, 2, 5, 0}, {17, 2, 4, 1}, {17, 2, 3, 0}}, {{30, 12, 9, 2, 1}, {29, 12, 10, 0}, {28, 12, 10, 0}, {27, 12, 9, 0}, {26, 12, 9, 0}, {25, 12, 9, 0}, {24, 12, 9, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 11, 0}, {19, 8, 11, 0}, {18, 7, 11, 0}, {17, 7, 11, 0}, {16, 7, 11, 0}, {15, 6, 11, 0}, {14, 5, 11, 0}, {14, 5, 10, 0}, {14, 4, 9, 0}, {14, 3, 8, 0}, {15, 2, 7, 0}, {16, 2, 6, 0}, {17, 2, 5, 0}, {17, 2, 4, 1}, {17, 2, 3, 0}}, {{5, 12, 10, 2, 3}, {6, 12, 11, 0}, {7, 12, 11, 0}, {8, 12, 10, 0}, {9, 12, 9, 0}, {10, 12, 9, 0}, {11, 12, 9, 0}, {12, 12, 9, 0}, {13, 12, 9, 0}, {14, 12, 9, 0}, {15, 12, 9, 0}, {16, 12, 9, 0}, {17, 12, 9, 0}, {18, 12, 9, 0}, {19, 12, 9, 0}, {20, 12, 9, 0}, {21, 11, 9, 0}, {21, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 11, 0}, {19, 8, 11, 0}, {18, 7, 11, 0}, {17, 7, 11, 0}, {16, 7, 11, 0}, {15, 6, 11, 0}, {14, 5, 11, 0}, {14, 5, 10, 0}, {14, 4, 9, 0}, {14, 3, 8, 0}, {15, 2, 7, 0}, {16, 2, 6, 0}, {17, 2, 5, 0}, {17, 2, 4, 1}, {17, 2, 3, 0}}, {{30, 12, 12, 2, 1}, {29, 12, 13, 0}, {28, 12, 13, 0}, {27, 12, 12, 0}, {26, 12, 11, 0}, {25, 12, 10, 0}, {24, 12, 9, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 11, 0}, {19, 8, 11, 0}, {18, 7, 11, 0}, {17, 7, 11, 0}, {16, 7, 11, 0}, {15, 6, 11, 0}, {14, 5, 11, 0}, {14, 5, 10, 0}, {14, 4, 9, 0}, {14, 3, 8, 0}, {15, 2, 7, 0}, {16, 2, 6, 0}, {17, 2, 5, 0}, {17, 2, 4, 1}, {17, 2, 3, 0}}, {{5, 12, 13, 2, 3}, {6, 12, 14, 0}, {7, 12, 14, 0}, {8, 12, 13, 0}, {9, 12, 12, 0}, {10, 12, 11, 0}, {11, 12, 10, 0}, {12, 12, 9, 0}, {13, 12, 9, 0}, {14, 12, 9, 0}, {15, 12, 9, 0}, {16, 12, 9, 0}, {17, 12, 9, 0}, {18, 12, 9, 0}, {19, 12, 9, 0}, {20, 12, 9, 0}, {21, 11, 9, 0}, {21, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 11, 0}, {19, 8, 11, 0}, {18, 7, 11, 0}, {17, 7, 11, 0}, {16, 7, 11, 0}, {15, 6, 11, 0}, {14, 5, 11, 0}, {14, 5, 10, 0}, {14, 4, 9, 0}, {14, 3, 8, 0}, {15, 2, 7, 0}, {16, 2, 6, 0}, {17, 2, 5, 0}, {17, 2, 4, 1}, {17, 2, 3, 0}}, {{30, 12, 15, 2, 1}, {29, 12, 16, 0}, {28, 12, 16, 0}, {27, 12, 15, 0}, {26, 12, 14, 0}, {25, 12, 13, 0}, {24, 12, 12, 0}, {23, 12, 11, 0}, {23, 12, 10, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 11, 0}, {19, 8, 11, 0}, {18, 7, 11, 0}, {17, 7, 11, 0}, {16, 7, 11, 0}, {15, 6, 11, 0}, {14, 5, 11, 0}, {14, 5, 10, 0}, {14, 4, 9, 0}, {14, 3, 8, 0}, {15, 2, 7, 0}, {16, 2, 6, 0}, {17, 2, 5, 0}, {17, 2, 4, 1}, {17, 2, 3, 0}}, {{5, 12, 16, 2, 3}, {6, 12, 14, 0}, {7, 12, 14, 0}, {8, 12, 13, 0}, {9, 12, 12, 0}, {10, 12, 11, 0}, {11, 12, 10, 0}, {12, 12, 9, 0}, {13, 12, 9, 0}, {14, 12, 9, 0}, {15, 12, 9, 0}, {16, 12, 9, 0}, {17, 12, 9, 0}, {18, 12, 9, 0}, {19, 12, 9, 0}, {20, 12, 9, 0}, {21, 11, 9, 0}, {21, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 11, 0}, {19, 8, 11, 0}, {18, 7, 11, 0}, {17, 7, 11, 0}, {16, 7, 11, 0}, {15, 6, 11, 0}, {14, 5, 11, 0}, {14, 5, 10, 0}, {14, 4, 9, 0}, {14, 3, 8, 0}, {15, 2, 7, 0}, {16, 2, 6, 0}, {17, 2, 5, 0}, {17, 2, 4, 1}, {17, 2, 3, 0}}, {{17, 2, 3, 0}, {17, 2, 2, 0}, {17, 1, 1, 0}, {17, 1, 0, 0}}}, {{{30, 12, 3, 2, 1}, {29, 12, 4, 0}, {28, 12, 4, 0}, {27, 12, 5, 0}, {26, 12, 6, 0}, {25, 12, 7, 0}, {24, 12, 8, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 11, 0}, {19, 8, 11, 0}, {18, 7, 11, 0}, {17, 7, 11, 0}, {16, 7, 11, 0}, {15, 6, 11, 0}, {14, 5, 11, 0}, {14, 5, 10, 0}, {14, 4, 9, 0}, {14, 3, 8, 0}, {15, 2, 8, 0}, {16, 2, 7, 0}, {17, 2, 6, 0}, {18, 2, 5, 0}, {18, 2, 4, 1}, {18, 2, 3, 0}}, {{30, 12, 6, 2, 1}, {29, 12, 7, 0}, {28, 12, 7, 0}, {27, 12, 7, 0}, {26, 12, 7, 0}, {25, 12, 7, 0}, {24, 12, 8, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 11, 0}, {19, 8, 11, 0}, {18, 7, 11, 0}, {17, 7, 11, 0}, {16, 7, 11, 0}, {15, 6, 11, 0}, {14, 5, 11, 0}, {14, 5, 10, 0}, {14, 4, 9, 0}, {14, 3, 8, 0}, {15, 2, 8, 0}, {16, 2, 7, 0}, {17, 2, 6, 0}, {18, 2, 5, 0}, {18, 2, 4, 1}, {18, 2, 3, 0}}, {{5, 12, 7, 2, 3}, {6, 12, 8, 0}, {7, 12, 8, 0}, {8, 12, 8, 0}, {9, 12, 8, 0}, {10, 12, 8, 0}, {11, 12, 8, 0}, {12, 12, 8, 0}, {13, 12, 8, 0}, {14, 12, 8, 0}, {15, 12, 8, 0}, {16, 12, 8, 0}, {17, 12, 8, 0}, {18, 12, 8, 0}, {19, 12, 8, 0}, {20, 12, 9, 0}, {21, 11, 9, 0}, {21, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 11, 0}, {19, 8, 11, 0}, {18, 7, 11, 0}, {17, 7, 11, 0}, {16, 7, 11, 0}, {15, 6, 11, 0}, {14, 5, 11, 0}, {14, 5, 10, 0}, {14, 4, 9, 0}, {14, 3, 8, 0}, {15, 2, 8, 0}, {16, 2, 7, 0}, {17, 2, 6, 0}, {18, 2, 5, 0}, {18, 2, 4, 1}, {18, 2, 3, 0}}, {{30, 12, 9, 2, 1}, {29, 12, 10, 0}, {28, 12, 10, 0}, {27, 12, 9, 0}, {26, 12, 9, 0}, {25, 12, 9, 0}, {24, 12, 9, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 11, 0}, {19, 8, 11, 0}, {18, 7, 11, 0}, {17, 7, 11, 0}, {16, 7, 11, 0}, {15, 6, 11, 0}, {14, 5, 11, 0}, {14, 5, 10, 0}, {14, 4, 9, 0}, {14, 3, 8, 0}, {15, 2, 8, 0}, {16, 2, 7, 0}, {17, 2, 6, 0}, {18, 2, 5, 0}, {18, 2, 4, 1}, {18, 2, 3, 0}}, {{5, 12, 10, 2, 3}, {6, 12, 11, 0}, {7, 12, 11, 0}, {8, 12, 10, 0}, {9, 12, 9, 0}, {10, 12, 9, 0}, {11, 12, 9, 0}, {12, 12, 9, 0}, {13, 12, 9, 0}, {14, 12, 9, 0}, {15, 12, 9, 0}, {16, 12, 9, 0}, {17, 12, 9, 0}, {18, 12, 9, 0}, {19, 12, 9, 0}, {20, 12, 9, 0}, {21, 11, 9, 0}, {21, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 11, 0}, {19, 8, 11, 0}, {18, 7, 11, 0}, {17, 7, 11, 0}, {16, 7, 11, 0}, {15, 6, 11, 0}, {14, 5, 11, 0}, {14, 5, 10, 0}, {14, 4, 9, 0}, {14, 3, 8, 0}, {15, 2, 8, 0}, {16, 2, 7, 0}, {17, 2, 6, 0}, {18, 2, 5, 0}, {18, 2, 4, 1}, {18, 2, 3, 0}}, {{30, 12, 12, 2, 1}, {29, 12, 13, 0}, {28, 12, 13, 0}, {27, 12, 12, 0}, {26, 12, 11, 0}, {25, 12, 10, 0}, {24, 12, 9, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 11, 0}, {19, 8, 11, 0}, {18, 7, 11, 0}, {17, 7, 11, 0}, {16, 7, 11, 0}, {15, 6, 11, 0}, {14, 5, 11, 0}, {14, 5, 10, 0}, {14, 4, 9, 0}, {14, 3, 8, 0}, {15, 2, 8, 0}, {16, 2, 7, 0}, {17, 2, 6, 0}, {18, 2, 5, 0}, {18, 2, 4, 1}, {18, 2, 3, 0}}, {{5, 12, 13, 2, 3}, {6, 12, 14, 0}, {7, 12, 14, 0}, {8, 12, 13, 0}, {9, 12, 12, 0}, {10, 12, 11, 0}, {11, 12, 10, 0}, {12, 12, 9, 0}, {13, 12, 9, 0}, {14, 12, 9, 0}, {15, 12, 9, 0}, {16, 12, 9, 0}, {17, 12, 9, 0}, {18, 12, 9, 0}, {19, 12, 9, 0}, {20, 12, 9, 0}, {21, 11, 9, 0}, {21, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 11, 0}, {19, 8, 11, 0}, {18, 7, 11, 0}, {17, 7, 11, 0}, {16, 7, 11, 0}, {15, 6, 11, 0}, {14, 5, 11, 0}, {14, 5, 10, 0}, {14, 4, 9, 0}, {14, 3, 8, 0}, {15, 2, 8, 0}, {16, 2, 7, 0}, {17, 2, 6, 0}, {18, 2, 5, 0}, {18, 2, 4, 1}, {18, 2, 3, 0}}, {{30, 12, 15, 2, 1}, {29, 12, 16, 0}, {28, 12, 16, 0}, {27, 12, 15, 0}, {26, 12, 14, 0}, {25, 12, 13, 0}, {24, 12, 12, 0}, {23, 12, 11, 0}, {23, 12, 10, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 11, 0}, {19, 8, 11, 0}, {18, 7, 11, 0}, {17, 7, 11, 0}, {16, 7, 11, 0}, {15, 6, 11, 0}, {14, 5, 11, 0}, {14, 5, 10, 0}, {14, 4, 9, 0}, {14, 3, 8, 0}, {15, 2, 8, 0}, {16, 2, 7, 0}, {17, 2, 6, 0}, {18, 2, 5, 0}, {18, 2, 4, 1}, {18, 2, 3, 0}}, {{5, 12, 16, 2, 3}, {6, 12, 14, 0}, {7, 12, 14, 0}, {8, 12, 13, 0}, {9, 12, 12, 0}, {10, 12, 11, 0}, {11, 12, 10, 0}, {12, 12, 9, 0}, {13, 12, 9, 0}, {14, 12, 9, 0}, {15, 12, 9, 0}, {16, 12, 9, 0}, {17, 12, 9, 0}, {18, 12, 9, 0}, {19, 12, 9, 0}, {20, 12, 9, 0}, {21, 11, 9, 0}, {21, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 11, 0}, {19, 8, 11, 0}, {18, 7, 11, 0}, {17, 7, 11, 0}, {16, 7, 11, 0}, {15, 6, 11, 0}, {14, 5, 11, 0}, {14, 5, 10, 0}, {14, 4, 9, 0}, {14, 3, 8, 0}, {15, 2, 8, 0}, {16, 2, 7, 0}, {17, 2, 6, 0}, {18, 2, 5, 0}, {18, 2, 4, 1}, {18, 2, 3, 0}}, {{18, 2, 3, 0}, {17, 2, 2, 0}, {17, 1, 1, 0}, {17, 1, 0, 0}}}, {{{30, 12, 3, 2, 1}, {29, 12, 4, 0}, {28, 12, 4, 0}, {27, 12, 5, 0}, {26, 12, 6, 0}, {25, 12, 7, 0}, {24, 12, 8, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 11, 0}, {19, 8, 11, 0}, {18, 7, 11, 0}, {17, 7, 11, 0}, {16, 7, 11, 0}, {15, 6, 11, 0}, {14, 5, 11, 0}, {14, 5, 10, 0}, {14, 4, 9, 0}, {14, 3, 8, 0}, {15, 2, 8, 0}, {16, 2, 8, 0}, {17, 2, 8, 0}, {18, 2, 8, 0}, {19, 2, 8, 0}, {20, 2, 8, 0}, {21, 2, 8, 0}, {22, 2, 8, 0}, {23, 2, 8, 0}, {24, 2, 8, 0}, {25, 2, 8, 0}, {26, 2, 8, 0}, {27, 2, 8, 0}, {28, 2, 8, 0}, {29, 2, 8, 0}, {30, 2, 8, 0}, {31, 2, 9, 0}, {32, 2, 9, 1}, {33, 1, 9, 0}}, {{30, 12, 6, 2, 1}, {29, 12, 7, 0}, {28, 12, 7, 0}, {27, 12, 7, 0}, {26, 12, 7, 0}, {25, 12, 7, 0}, {24, 12, 8, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 11, 0}, {19, 8, 11, 0}, {18, 7, 11, 0}, {17, 7, 11, 0}, {16, 7, 11, 0}, {15, 6, 11, 0}, {14, 5, 11, 0}, {14, 5, 10, 0}, {14, 4, 9, 0}, {14, 3, 8, 0}, {15, 2, 8, 0}, {16, 2, 8, 0}, {17, 2, 8, 0}, {18, 2, 8, 0}, {19, 2, 8, 0}, {20, 2, 8, 0}, {21, 2, 8, 0}, {22, 2, 8, 0}, {23, 2, 8, 0}, {24, 2, 8, 0}, {25, 2, 8, 0}, {26, 2, 8, 0}, {27, 2, 8, 0}, {28, 2, 8, 0}, {29, 2, 8, 0}, {30, 2, 8, 0}, {31, 2, 9, 0}, {32, 2, 9, 1}, {33, 1, 9, 0}}, {{5, 12, 7, 2, 3}, {6, 12, 8, 0}, {7, 12, 8, 0}, {8, 12, 8, 0}, {9, 12, 8, 0}, {10, 12, 8, 0}, {11, 12, 8, 0}, {12, 12, 8, 0}, {13, 12, 8, 0}, {14, 12, 8, 0}, {15, 12, 8, 0}, {16, 12, 8, 0}, {17, 12, 8, 0}, {18, 12, 8, 0}, {19, 12, 8, 0}, {20, 12, 9, 0}, {21, 11, 9, 0}, {21, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 11, 0}, {19, 8, 11, 0}, {18, 7, 11, 0}, {17, 7, 11, 0}, {16, 7, 11, 0}, {15, 6, 11, 0}, {14, 5, 11, 0}, {14, 5, 10, 0}, {14, 4, 9, 0}, {14, 3, 8, 0}, {15, 2, 8, 0}, {16, 2, 8, 0}, {17, 2, 8, 0}, {18, 2, 8, 0}, {19, 2, 8, 0}, {20, 2, 8, 0}, {21, 2, 8, 0}, {22, 2, 8, 0}, {23, 2, 8, 0}, {24, 2, 8, 0}, {25, 2, 8, 0}, {26, 2, 8, 0}, {27, 2, 8, 0}, {28, 2, 8, 0}, {29, 2, 8, 0}, {30, 2, 8, 0}, {31, 2, 9, 0}, {32, 2, 9, 1}, {33, 1, 9, 0}}, {{30, 12, 9, 2, 1}, {29, 12, 10, 0}, {28, 12, 10, 0}, {27, 12, 9, 0}, {26, 12, 9, 0}, {25, 12, 9, 0}, {24, 12, 9, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 11, 0}, {19, 8, 11, 0}, {18, 7, 11, 0}, {17, 7, 11, 0}, {16, 7, 11, 0}, {15, 6, 11, 0}, {14, 5, 11, 0}, {14, 5, 10, 0}, {14, 4, 9, 0}, {14, 3, 8, 0}, {15, 2, 8, 0}, {16, 2, 8, 0}, {17, 2, 8, 0}, {18, 2, 8, 0}, {19, 2, 8, 0}, {20, 2, 8, 0}, {21, 2, 8, 0}, {22, 2, 8, 0}, {23, 2, 8, 0}, {24, 2, 8, 0}, {25, 2, 8, 0}, {26, 2, 8, 0}, {27, 2, 8, 0}, {28, 2, 8, 0}, {29, 2, 8, 0}, {30, 2, 8, 0}, {31, 2, 9, 0}, {32, 2, 9, 1}, {33, 1, 9, 0}}, {{5, 12, 10, 2, 3}, {6, 12, 11, 0}, {7, 12, 11, 0}, {8, 12, 10, 0}, {9, 12, 9, 0}, {10, 12, 9, 0}, {11, 12, 9, 0}, {12, 12, 9, 0}, {13, 12, 9, 0}, {14, 12, 9, 0}, {15, 12, 9, 0}, {16, 12, 9, 0}, {17, 12, 9, 0}, {18, 12, 9, 0}, {19, 12, 9, 0}, {20, 12, 9, 0}, {21, 11, 9, 0}, {21, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 11, 0}, {19, 8, 11, 0}, {18, 7, 11, 0}, {17, 7, 11, 0}, {16, 7, 11, 0}, {15, 6, 11, 0}, {14, 5, 11, 0}, {14, 5, 10, 0}, {14, 4, 9, 0}, {14, 3, 8, 0}, {15, 2, 8, 0}, {16, 2, 8, 0}, {17, 2, 8, 0}, {18, 2, 8, 0}, {19, 2, 8, 0}, {20, 2, 8, 0}, {21, 2, 8, 0}, {22, 2, 8, 0}, {23, 2, 8, 0}, {24, 2, 8, 0}, {25, 2, 8, 0}, {26, 2, 8, 0}, {27, 2, 8, 0}, {28, 2, 8, 0}, {29, 2, 8, 0}, {30, 2, 8, 0}, {31, 2, 9, 0}, {32, 2, 9, 1}, {33, 1, 9, 0}}, {{30, 12, 12, 2, 1}, {29, 12, 13, 0}, {28, 12, 13, 0}, {27, 12, 12, 0}, {26, 12, 11, 0}, {25, 12, 10, 0}, {24, 12, 9, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 11, 0}, {19, 8, 11, 0}, {18, 7, 11, 0}, {17, 7, 11, 0}, {16, 7, 11, 0}, {15, 6, 11, 0}, {14, 5, 11, 0}, {14, 5, 10, 0}, {14, 4, 9, 0}, {14, 3, 8, 0}, {15, 2, 8, 0}, {16, 2, 8, 0}, {17, 2, 8, 0}, {18, 2, 8, 0}, {19, 2, 8, 0}, {20, 2, 8, 0}, {21, 2, 8, 0}, {22, 2, 8, 0}, {23, 2, 8, 0}, {24, 2, 8, 0}, {25, 2, 8, 0}, {26, 2, 8, 0}, {27, 2, 8, 0}, {28, 2, 8, 0}, {29, 2, 8, 0}, {30, 2, 8, 0}, {31, 2, 9, 0}, {32, 2, 9, 1}, {33, 1, 9, 0}}, {{5, 12, 13, 2, 3}, {6, 12, 14, 0}, {7, 12, 14, 0}, {8, 12, 13, 0}, {9, 12, 12, 0}, {10, 12, 11, 0}, {11, 12, 10, 0}, {12, 12, 9, 0}, {13, 12, 9, 0}, {14, 12, 9, 0}, {15, 12, 9, 0}, {16, 12, 9, 0}, {17, 12, 9, 0}, {18, 12, 9, 0}, {19, 12, 9, 0}, {20, 12, 9, 0}, {21, 11, 9, 0}, {21, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 11, 0}, {19, 8, 11, 0}, {18, 7, 11, 0}, {17, 7, 11, 0}, {16, 7, 11, 0}, {15, 6, 11, 0}, {14, 5, 11, 0}, {14, 5, 10, 0}, {14, 4, 9, 0}, {14, 3, 8, 0}, {15, 2, 8, 0}, {16, 2, 8, 0}, {17, 2, 8, 0}, {18, 2, 8, 0}, {19, 2, 8, 0}, {20, 2, 8, 0}, {21, 2, 8, 0}, {22, 2, 8, 0}, {23, 2, 8, 0}, {24, 2, 8, 0}, {25, 2, 8, 0}, {26, 2, 8, 0}, {27, 2, 8, 0}, {28, 2, 8, 0}, {29, 2, 8, 0}, {30, 2, 8, 0}, {31, 2, 9, 0}, {32, 2, 9, 1}, {33, 1, 9, 0}}, {{30, 12, 15, 2, 1}, {29, 12, 16, 0}, {28, 12, 16, 0}, {27, 12, 15, 0}, {26, 12, 14, 0}, {25, 12, 13, 0}, {24, 12, 12, 0}, {23, 12, 11, 0}, {23, 12, 10, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 11, 0}, {19, 8, 11, 0}, {18, 7, 11, 0}, {17, 7, 11, 0}, {16, 7, 11, 0}, {15, 6, 11, 0}, {14, 5, 11, 0}, {14, 5, 10, 0}, {14, 4, 9, 0}, {14, 3, 8, 0}, {15, 2, 8, 0}, {16, 2, 8, 0}, {17, 2, 8, 0}, {18, 2, 8, 0}, {19, 2, 8, 0}, {20, 2, 8, 0}, {21, 2, 8, 0}, {22, 2, 8, 0}, {23, 2, 8, 0}, {24, 2, 8, 0}, {25, 2, 8, 0}, {26, 2, 8, 0}, {27, 2, 8, 0}, {28, 2, 8, 0}, {29, 2, 8, 0}, {30, 2, 8, 0}, {31, 2, 9, 0}, {32, 2, 9, 1}, {33, 1, 9, 0}}, {{5, 12, 16, 2, 3}, {6, 12, 14, 0}, {7, 12, 14, 0}, {8, 12, 13, 0}, {9, 12, 12, 0}, {10, 12, 11, 0}, {11, 12, 10, 0}, {12, 12, 9, 0}, {13, 12, 9, 0}, {14, 12, 9, 0}, {15, 12, 9, 0}, {16, 12, 9, 0}, {17, 12, 9, 0}, {18, 12, 9, 0}, {19, 12, 9, 0}, {20, 12, 9, 0}, {21, 11, 9, 0}, {21, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 11, 0}, {19, 8, 11, 0}, {18, 7, 11, 0}, {17, 7, 11, 0}, {16, 7, 11, 0}, {15, 6, 11, 0}, {14, 5, 11, 0}, {14, 5, 10, 0}, {14, 4, 9, 0}, {14, 3, 8, 0}, {15, 2, 8, 0}, {16, 2, 8, 0}, {17, 2, 8, 0}, {18, 2, 8, 0}, {19, 2, 8, 0}, {20, 2, 8, 0}, {21, 2, 8, 0}, {22, 2, 8, 0}, {23, 2, 8, 0}, {24, 2, 8, 0}, {25, 2, 8, 0}, {26, 2, 8, 0}, {27, 2, 8, 0}, {28, 2, 8, 0}, {29, 2, 8, 0}, {30, 2, 8, 0}, {31, 2, 9, 0}, {32, 2, 9, 1}, {33, 1, 9, 0}}, {{33, 1, 9, 0}, {34, 1, 9, 0}, {34, 1, 8, 0}, {34, 1, 7, 0}, {34, 1, 6, 0}, {34, 1, 5, 0}, {34, 1, 4, 0}, {34, 1, 3, 0}, {34, 1, 2, 0}, {34, 1, 1, 0}, {33, 1, 0, 0}, {32, 1, 0, 0}, {31, 1, 0, 0}, {30, 1, 0, 0}, {29, 1, 0, 0}, {28, 1, 0, 0}, {27, 1, 0, 0}, {26, 1, 0, 0}, {25, 1, 0, 0}, {24, 1, 0, 0}, {23, 1, 0, 0}, {22, 1, 0, 0}, {21, 1, 0, 0}, {20, 1, 0, 0}, {19, 1, 0, 0}, {18, 1, 0, 0}, {17, 1, 0, 0}}}, {{{30, 12, 3, 2, 1}, {29, 12, 4, 0}, {28, 12, 4, 0}, {27, 12, 5, 0}, {26, 12, 6, 0}, {25, 12, 7, 0}, {24, 12, 8, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {15, 2, 14, 0}, {16, 2, 14, 0}, {17, 2, 13, 0}, {18, 2, 12, 0}, {19, 2, 11, 0}, {20, 2, 10, 0}, {21, 2, 10, 0}, {22, 2, 10, 0}, {23, 2, 10, 0}, {24, 2, 10, 0}, {25, 2, 10, 0}, {26, 2, 10, 0}, {27, 2, 10, 0}, {28, 2, 10, 0}, {29, 2, 10, 0}, {30, 2, 10, 0}, {31, 2, 10, 0}, {32, 2, 10, 1}, {33, 1, 10, 0}}, {{30, 12, 6, 2, 1}, {29, 12, 7, 0}, {28, 12, 7, 0}, {27, 12, 7, 0}, {26, 12, 7, 0}, {25, 12, 7, 0}, {24, 12, 8, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {15, 2, 14, 0}, {16, 2, 14, 0}, {17, 2, 13, 0}, {18, 2, 12, 0}, {19, 2, 11, 0}, {20, 2, 10, 0}, {21, 2, 10, 0}, {22, 2, 10, 0}, {23, 2, 10, 0}, {24, 2, 10, 0}, {25, 2, 10, 0}, {26, 2, 10, 0}, {27, 2, 10, 0}, {28, 2, 10, 0}, {29, 2, 10, 0}, {30, 2, 10, 0}, {31, 2, 10, 0}, {32, 2, 10, 1}, {33, 1, 10, 0}}, {{5, 12, 7, 2, 3}, {6, 12, 8, 0}, {7, 12, 8, 0}, {8, 12, 8, 0}, {9, 12, 8, 0}, {10, 12, 8, 0}, {11, 12, 8, 0}, {12, 12, 8, 0}, {13, 12, 8, 0}, {14, 12, 8, 0}, {15, 12, 8, 0}, {16, 12, 8, 0}, {17, 12, 8, 0}, {18, 12, 8, 0}, {19, 12, 8, 0}, {20, 12, 9, 0}, {21, 11, 9, 0}, {21, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {15, 2, 14, 0}, {16, 2, 14, 0}, {17, 2, 13, 0}, {18, 2, 12, 0}, {19, 2, 11, 0}, {20, 2, 10, 0}, {21, 2, 10, 0}, {22, 2, 10, 0}, {23, 2, 10, 0}, {24, 2, 10, 0}, {25, 2, 10, 0}, {26, 2, 10, 0}, {27, 2, 10, 0}, {28, 2, 10, 0}, {29, 2, 10, 0}, {30, 2, 10, 0}, {31, 2, 10, 0}, {32, 2, 10, 1}, {33, 1, 10, 0}}, {{30, 12, 9, 2, 1}, {29, 12, 10, 0}, {28, 12, 10, 0}, {27, 12, 9, 0}, {26, 12, 9, 0}, {25, 12, 9, 0}, {24, 12, 9, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {15, 2, 14, 0}, {16, 2, 14, 0}, {17, 2, 13, 0}, {18, 2, 12, 0}, {19, 2, 11, 0}, {20, 2, 10, 0}, {21, 2, 10, 0}, {22, 2, 10, 0}, {23, 2, 10, 0}, {24, 2, 10, 0}, {25, 2, 10, 0}, {26, 2, 10, 0}, {27, 2, 10, 0}, {28, 2, 10, 0}, {29, 2, 10, 0}, {30, 2, 10, 0}, {31, 2, 10, 0}, {32, 2, 10, 1}, {33, 1, 10, 0}}, {{5, 12, 10, 2, 3}, {6, 12, 11, 0}, {7, 12, 11, 0}, {8, 12, 10, 0}, {9, 12, 9, 0}, {10, 12, 9, 0}, {11, 12, 9, 0}, {12, 12, 9, 0}, {13, 12, 9, 0}, {14, 12, 9, 0}, {15, 12, 9, 0}, {16, 12, 9, 0}, {17, 12, 9, 0}, {18, 12, 9, 0}, {19, 12, 9, 0}, {20, 12, 9, 0}, {21, 11, 9, 0}, {21, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {15, 2, 14, 0}, {16, 2, 14, 0}, {17, 2, 13, 0}, {18, 2, 12, 0}, {19, 2, 11, 0}, {20, 2, 10, 0}, {21, 2, 10, 0}, {22, 2, 10, 0}, {23, 2, 10, 0}, {24, 2, 10, 0}, {25, 2, 10, 0}, {26, 2, 10, 0}, {27, 2, 10, 0}, {28, 2, 10, 0}, {29, 2, 10, 0}, {30, 2, 10, 0}, {31, 2, 10, 0}, {32, 2, 10, 1}, {33, 1, 10, 0}}, {{30, 12, 12, 2, 1}, {29, 12, 13, 0}, {28, 12, 13, 0}, {27, 12, 12, 0}, {26, 12, 11, 0}, {25, 12, 10, 0}, {24, 12, 9, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {15, 2, 14, 0}, {16, 2, 14, 0}, {17, 2, 13, 0}, {18, 2, 12, 0}, {19, 2, 11, 0}, {20, 2, 10, 0}, {21, 2, 10, 0}, {22, 2, 10, 0}, {23, 2, 10, 0}, {24, 2, 10, 0}, {25, 2, 10, 0}, {26, 2, 10, 0}, {27, 2, 10, 0}, {28, 2, 10, 0}, {29, 2, 10, 0}, {30, 2, 10, 0}, {31, 2, 10, 0}, {32, 2, 10, 1}, {33, 1, 10, 0}}, {{5, 12, 13, 2, 3}, {6, 12, 14, 0}, {7, 12, 14, 0}, {8, 12, 13, 0}, {9, 12, 12, 0}, {10, 12, 11, 0}, {11, 12, 10, 0}, {12, 12, 9, 0}, {13, 12, 9, 0}, {14, 12, 9, 0}, {15, 12, 9, 0}, {16, 12, 9, 0}, {17, 12, 9, 0}, {18, 12, 9, 0}, {19, 12, 9, 0}, {20, 12, 9, 0}, {21, 11, 9, 0}, {21, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {15, 2, 14, 0}, {16, 2, 14, 0}, {17, 2, 13, 0}, {18, 2, 12, 0}, {19, 2, 11, 0}, {20, 2, 10, 0}, {21, 2, 10, 0}, {22, 2, 10, 0}, {23, 2, 10, 0}, {24, 2, 10, 0}, {25, 2, 10, 0}, {26, 2, 10, 0}, {27, 2, 10, 0}, {28, 2, 10, 0}, {29, 2, 10, 0}, {30, 2, 10, 0}, {31, 2, 10, 0}, {32, 2, 10, 1}, {33, 1, 10, 0}}, {{30, 12, 15, 2, 1}, {29, 12, 16, 0}, {28, 12, 16, 0}, {27, 12, 15, 0}, {26, 12, 14, 0}, {25, 12, 13, 0}, {24, 12, 12, 0}, {23, 12, 11, 0}, {23, 12, 10, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {15, 2, 14, 0}, {16, 2, 14, 0}, {17, 2, 13, 0}, {18, 2, 12, 0}, {19, 2, 11, 0}, {20, 2, 10, 0}, {21, 2, 10, 0}, {22, 2, 10, 0}, {23, 2, 10, 0}, {24, 2, 10, 0}, {25, 2, 10, 0}, {26, 2, 10, 0}, {27, 2, 10, 0}, {28, 2, 10, 0}, {29, 2, 10, 0}, {30, 2, 10, 0}, {31, 2, 10, 0}, {32, 2, 10, 1}, {33, 1, 10, 0}}, {{5, 12, 16, 2, 3}, {6, 12, 14, 0}, {7, 12, 14, 0}, {8, 12, 13, 0}, {9, 12, 12, 0}, {10, 12, 11, 0}, {11, 12, 10, 0}, {12, 12, 9, 0}, {13, 12, 9, 0}, {14, 12, 9, 0}, {15, 12, 9, 0}, {16, 12, 9, 0}, {17, 12, 9, 0}, {18, 12, 9, 0}, {19, 12, 9, 0}, {20, 12, 9, 0}, {21, 11, 9, 0}, {21, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {15, 2, 14, 0}, {16, 2, 14, 0}, {17, 2, 13, 0}, {18, 2, 12, 0}, {19, 2, 11, 0}, {20, 2, 10, 0}, {21, 2, 10, 0}, {22, 2, 10, 0}, {23, 2, 10, 0}, {24, 2, 10, 0}, {25, 2, 10, 0}, {26, 2, 10, 0}, {27, 2, 10, 0}, {28, 2, 10, 0}, {29, 2, 10, 0}, {30, 2, 10, 0}, {31, 2, 10, 0}, {32, 2, 10, 1}, {33, 1, 10, 0}}, {{33, 1, 10, 0}, {34, 1, 9, 0}, {34, 1, 8, 0}, {34, 1, 7, 0}, {34, 1, 6, 0}, {34, 1, 5, 0}, {34, 1, 4, 0}, {34, 1, 3, 0}, {34, 1, 2, 0}, {34, 1, 1, 0}, {33, 1, 0, 0}, {32, 1, 0, 0}, {31, 1, 0, 0}, {30, 1, 0, 0}, {29, 1, 0, 0}, {28, 1, 0, 0}, {27, 1, 0, 0}, {26, 1, 0, 0}, {25, 1, 0, 0}, {24, 1, 0, 0}, {23, 1, 0, 0}, {22, 1, 0, 0}, {21, 1, 0, 0}, {20, 1, 0, 0}, {19, 1, 0, 0}, {18, 1, 0, 0}, {17, 1, 0, 0}}}, {{{30, 12, 3, 2, 1}, {29, 12, 4, 0}, {28, 12, 4, 0}, {27, 12, 5, 0}, {26, 12, 6, 0}, {25, 12, 7, 0}, {24, 12, 8, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {13, 2, 15, 0}, {12, 2, 15, 0}, {11, 2, 16, 0}, {11, 2, 17, 0}, {11, 2, 18, 0}, {10, 2, 19, 0}, {9, 2, 20, 0}, {8, 2, 21, 0}, {8, 2, 22, 1}, {7, 2, 23, 0}}, {{30, 12, 6, 2, 1}, {29, 12, 7, 0}, {28, 12, 7, 0}, {27, 12, 7, 0}, {26, 12, 7, 0}, {25, 12, 7, 0}, {24, 12, 8, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {13, 2, 15, 0}, {12, 2, 15, 0}, {11, 2, 16, 0}, {11, 2, 17, 0}, {11, 2, 18, 0}, {10, 2, 19, 0}, {9, 2, 20, 0}, {8, 2, 21, 0}, {8, 2, 22, 1}, {7, 2, 23, 0}}, {{5, 12, 7, 2, 3}, {6, 12, 8, 0}, {7, 12, 8, 0}, {8, 12, 8, 0}, {9, 12, 8, 0}, {10, 12, 8, 0}, {11, 12, 8, 0}, {12, 12, 8, 0}, {13, 12, 8, 0}, {14, 12, 8, 0}, {15, 12, 8, 0}, {16, 12, 8, 0}, {17, 12, 8, 0}, {18, 12, 8, 0}, {19, 12, 8, 0}, {20, 12, 9, 0}, {21, 11, 9, 0}, {21, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {13, 2, 15, 0}, {12, 2, 15, 0}, {11, 2, 16, 0}, {11, 2, 17, 0}, {11, 2, 18, 0}, {10, 2, 19, 0}, {9, 2, 20, 0}, {8, 2, 21, 0}, {8, 2, 22, 1}, {7, 2, 23, 0}}, {{30, 12, 9, 2, 1}, {29, 12, 10, 0}, {28, 12, 10, 0}, {27, 12, 9, 0}, {26, 12, 9, 0}, {25, 12, 9, 0}, {24, 12, 9, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {13, 2, 15, 0}, {12, 2, 15, 0}, {11, 2, 16, 0}, {11, 2, 17, 0}, {11, 2, 18, 0}, {10, 2, 19, 0}, {9, 2, 20, 0}, {8, 2, 21, 0}, {8, 2, 22, 1}, {7, 2, 23, 0}}, {{5, 12, 10, 2, 3}, {6, 12, 11, 0}, {7, 12, 11, 0}, {8, 12, 10, 0}, {9, 12, 9, 0}, {10, 12, 9, 0}, {11, 12, 9, 0}, {12, 12, 9, 0}, {13, 12, 9, 0}, {14, 12, 9, 0}, {15, 12, 9, 0}, {16, 12, 9, 0}, {17, 12, 9, 0}, {18, 12, 9, 0}, {19, 12, 9, 0}, {20, 12, 9, 0}, {21, 11, 9, 0}, {21, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {13, 2, 15, 0}, {12, 2, 15, 0}, {11, 2, 16, 0}, {11, 2, 17, 0}, {11, 2, 18, 0}, {10, 2, 19, 0}, {9, 2, 20, 0}, {8, 2, 21, 0}, {8, 2, 22, 1}, {7, 2, 23, 0}}, {{30, 12, 12, 2, 1}, {29, 12, 13, 0}, {28, 12, 13, 0}, {27, 12, 12, 0}, {26, 12, 11, 0}, {25, 12, 10, 0}, {24, 12, 9, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {13, 2, 15, 0}, {12, 2, 15, 0}, {11, 2, 16, 0}, {11, 2, 17, 0}, {11, 2, 18, 0}, {10, 2, 19, 0}, {9, 2, 20, 0}, {8, 2, 21, 0}, {8, 2, 22, 1}, {7, 2, 23, 0}}, {{5, 12, 13, 2, 3}, {6, 12, 14, 0}, {7, 12, 14, 0}, {8, 12, 13, 0}, {9, 12, 12, 0}, {10, 12, 11, 0}, {11, 12, 10, 0}, {12, 12, 9, 0}, {13, 12, 9, 0}, {14, 12, 9, 0}, {15, 12, 9, 0}, {16, 12, 9, 0}, {17, 12, 9, 0}, {18, 12, 9, 0}, {19, 12, 9, 0}, {20, 12, 9, 0}, {21, 11, 9, 0}, {21, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {13, 2, 15, 0}, {12, 2, 15, 0}, {11, 2, 16, 0}, {11, 2, 17, 0}, {11, 2, 18, 0}, {10, 2, 19, 0}, {9, 2, 20, 0}, {8, 2, 21, 0}, {8, 2, 22, 1}, {7, 2, 23, 0}}, {{30, 12, 15, 2, 1}, {29, 12, 16, 0}, {28, 12, 16, 0}, {27, 12, 15, 0}, {26, 12, 14, 0}, {25, 12, 13, 0}, {24, 12, 12, 0}, {23, 12, 11, 0}, {23, 12, 10, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {13, 2, 15, 0}, {12, 2, 15, 0}, {11, 2, 16, 0}, {11, 2, 17, 0}, {11, 2, 18, 0}, {10, 2, 19, 0}, {9, 2, 20, 0}, {8, 2, 21, 0}, {8, 2, 22, 1}, {7, 2, 23, 0}}, {{5, 12, 16, 2, 3}, {6, 12, 14, 0}, {7, 12, 14, 0}, {8, 12, 13, 0}, {9, 12, 12, 0}, {10, 12, 11, 0}, {11, 12, 10, 0}, {12, 12, 9, 0}, {13, 12, 9, 0}, {14, 12, 9, 0}, {15, 12, 9, 0}, {16, 12, 9, 0}, {17, 12, 9, 0}, {18, 12, 9, 0}, {19, 12, 9, 0}, {20, 12, 9, 0}, {21, 11, 9, 0}, {21, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {13, 2, 15, 0}, {12, 2, 15, 0}, {11, 2, 16, 0}, {11, 2, 17, 0}, {11, 2, 18, 0}, {10, 2, 19, 0}, {9, 2, 20, 0}, {8, 2, 21, 0}, {8, 2, 22, 1}, {7, 2, 23, 0}}, {{7, 2, 23, 0}, {6, 2, 23, 0}, {5, 1, 23, 0}, {4, 1, 23, 0}, {3, 1, 23, 0}, {2, 1, 23, 0}, {2, 1, 22, 0}, {2, 1, 21, 0}, {2, 1, 20, 0}, {2, 1, 19, 0}, {1, 1, 18, 0}, {1, 1, 17, 0}, {1, 1, 16, 0}, {1, 1, 15, 0}, {1, 1, 14, 0}, {1, 1, 13, 0}, {1, 1, 12, 0}, {1, 1, 11, 0}, {1, 1, 10, 0}, {1, 1, 9, 0}, {1, 1, 8, 0}, {1, 1, 7, 0}, {1, 1, 6, 0}, {1, 1, 5, 0}, {1, 1, 4, 0}, {1, 1, 3, 0}, {1, 1, 2, 0}, {1, 1, 1, 0}, {2, 1, 0, 0}, {3, 1, 0, 0}, {4, 1, 0, 0}, {5, 1, 0, 0}, {6, 1, 0, 0}, {7, 1, 0, 0}, {8, 1, 0, 0}, {9, 1, 0, 0}, {10, 1, 0, 0}, {11, 1, 0, 0}, {12, 1, 0, 0}, {13, 1, 0, 0}, {14, 1, 0, 0}, {15, 1, 0, 0}, {16, 1, 0, 0}, {17, 1, 0, 0}}}, {{{30, 12, 3, 2, 1}, {29, 12, 4, 0}, {28, 12, 4, 0}, {27, 12, 5, 0}, {26, 12, 6, 0}, {25, 12, 7, 0}, {24, 12, 8, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {13, 2, 15, 0}, {12, 2, 15, 0}, {11, 2, 16, 0}, {11, 2, 17, 0}, {10, 2, 18, 0}, {9, 2, 19, 0}, {8, 2, 20, 0}, {7, 2, 21, 0}, {7, 2, 22, 1}, {7, 2, 23, 0}}, {{30, 12, 6, 2, 1}, {29, 12, 7, 0}, {28, 12, 7, 0}, {27, 12, 7, 0}, {26, 12, 7, 0}, {25, 12, 7, 0}, {24, 12, 8, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {13, 2, 15, 0}, {12, 2, 15, 0}, {11, 2, 16, 0}, {11, 2, 17, 0}, {10, 2, 18, 0}, {9, 2, 19, 0}, {8, 2, 20, 0}, {7, 2, 21, 0}, {7, 2, 22, 1}, {7, 2, 23, 0}}, {{5, 12, 7, 2, 3}, {6, 12, 8, 0}, {7, 12, 8, 0}, {8, 12, 8, 0}, {9, 12, 8, 0}, {10, 12, 8, 0}, {11, 12, 8, 0}, {12, 12, 8, 0}, {13, 12, 8, 0}, {14, 12, 8, 0}, {15, 12, 8, 0}, {16, 12, 8, 0}, {17, 12, 8, 0}, {18, 12, 8, 0}, {19, 12, 8, 0}, {20, 12, 9, 0}, {21, 11, 9, 0}, {21, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {13, 2, 15, 0}, {12, 2, 15, 0}, {11, 2, 16, 0}, {11, 2, 17, 0}, {10, 2, 18, 0}, {9, 2, 19, 0}, {8, 2, 20, 0}, {7, 2, 21, 0}, {7, 2, 22, 1}, {7, 2, 23, 0}}, {{30, 12, 9, 2, 1}, {29, 12, 10, 0}, {28, 12, 10, 0}, {27, 12, 9, 0}, {26, 12, 9, 0}, {25, 12, 9, 0}, {24, 12, 9, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {13, 2, 15, 0}, {12, 2, 15, 0}, {11, 2, 16, 0}, {11, 2, 17, 0}, {10, 2, 18, 0}, {9, 2, 19, 0}, {8, 2, 20, 0}, {7, 2, 21, 0}, {7, 2, 22, 1}, {7, 2, 23, 0}}, {{5, 12, 10, 2, 3}, {6, 12, 11, 0}, {7, 12, 11, 0}, {8, 12, 10, 0}, {9, 12, 9, 0}, {10, 12, 9, 0}, {11, 12, 9, 0}, {12, 12, 9, 0}, {13, 12, 9, 0}, {14, 12, 9, 0}, {15, 12, 9, 0}, {16, 12, 9, 0}, {17, 12, 9, 0}, {18, 12, 9, 0}, {19, 12, 9, 0}, {20, 12, 9, 0}, {21, 11, 9, 0}, {21, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {13, 2, 15, 0}, {12, 2, 15, 0}, {11, 2, 16, 0}, {11, 2, 17, 0}, {10, 2, 18, 0}, {9, 2, 19, 0}, {8, 2, 20, 0}, {7, 2, 21, 0}, {7, 2, 22, 1}, {7, 2, 23, 0}}, {{30, 12, 12, 2, 1}, {29, 12, 13, 0}, {28, 12, 13, 0}, {27, 12, 12, 0}, {26, 12, 11, 0}, {25, 12, 10, 0}, {24, 12, 9, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {13, 2, 15, 0}, {12, 2, 15, 0}, {11, 2, 16, 0}, {11, 2, 17, 0}, {10, 2, 18, 0}, {9, 2, 19, 0}, {8, 2, 20, 0}, {7, 2, 21, 0}, {7, 2, 22, 1}, {7, 2, 23, 0}}, {{5, 12, 13, 2, 3}, {6, 12, 14, 0}, {7, 12, 14, 0}, {8, 12, 13, 0}, {9, 12, 12, 0}, {10, 12, 11, 0}, {11, 12, 10, 0}, {12, 12, 9, 0}, {13, 12, 9, 0}, {14, 12, 9, 0}, {15, 12, 9, 0}, {16, 12, 9, 0}, {17, 12, 9, 0}, {18, 12, 9, 0}, {19, 12, 9, 0}, {20, 12, 9, 0}, {21, 11, 9, 0}, {21, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {13, 2, 15, 0}, {12, 2, 15, 0}, {11, 2, 16, 0}, {11, 2, 17, 0}, {10, 2, 18, 0}, {9, 2, 19, 0}, {8, 2, 20, 0}, {7, 2, 21, 0}, {7, 2, 22, 1}, {7, 2, 23, 0}}, {{30, 12, 15, 2, 1}, {29, 12, 16, 0}, {28, 12, 16, 0}, {27, 12, 15, 0}, {26, 12, 14, 0}, {25, 12, 13, 0}, {24, 12, 12, 0}, {23, 12, 11, 0}, {23, 12, 10, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {13, 2, 15, 0}, {12, 2, 15, 0}, {11, 2, 16, 0}, {11, 2, 17, 0}, {10, 2, 18, 0}, {9, 2, 19, 0}, {8, 2, 20, 0}, {7, 2, 21, 0}, {7, 2, 22, 1}, {7, 2, 23, 0}}, {{5, 12, 16, 2, 3}, {6, 12, 14, 0}, {7, 12, 14, 0}, {8, 12, 13, 0}, {9, 12, 12, 0}, {10, 12, 11, 0}, {11, 12, 10, 0}, {12, 12, 9, 0}, {13, 12, 9, 0}, {14, 12, 9, 0}, {15, 12, 9, 0}, {16, 12, 9, 0}, {17, 12, 9, 0}, {18, 12, 9, 0}, {19, 12, 9, 0}, {20, 12, 9, 0}, {21, 11, 9, 0}, {21, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {13, 2, 15, 0}, {12, 2, 15, 0}, {11, 2, 16, 0}, {11, 2, 17, 0}, {10, 2, 18, 0}, {9, 2, 19, 0}, {8, 2, 20, 0}, {7, 2, 21, 0}, {7, 2, 22, 1}, {7, 2, 23, 0}}, {{7, 2, 23, 0}, {6, 2, 23, 0}, {5, 1, 23, 0}, {4, 1, 23, 0}, {3, 1, 23, 0}, {2, 1, 23, 0}, {2, 1, 22, 0}, {2, 1, 21, 0}, {2, 1, 20, 0}, {2, 1, 19, 0}, {1, 1, 18, 0}, {1, 1, 17, 0}, {1, 1, 16, 0}, {1, 1, 15, 0}, {1, 1, 14, 0}, {1, 1, 13, 0}, {1, 1, 12, 0}, {1, 1, 11, 0}, {1, 1, 10, 0}, {1, 1, 9, 0}, {1, 1, 8, 0}, {1, 1, 7, 0}, {1, 1, 6, 0}, {1, 1, 5, 0}, {1, 1, 4, 0}, {1, 1, 3, 0}, {1, 1, 2, 0}, {1, 1, 1, 0}, {2, 1, 0, 0}, {3, 1, 0, 0}, {4, 1, 0, 0}, {5, 1, 0, 0}, {6, 1, 0, 0}, {7, 1, 0, 0}, {8, 1, 0, 0}, {9, 1, 0, 0}, {10, 1, 0, 0}, {11, 1, 0, 0}, {12, 1, 0, 0}, {13, 1, 0, 0}, {14, 1, 0, 0}, {15, 1, 0, 0}, {16, 1, 0, 0}, {17, 1, 0, 0}}}, {{{30, 12, 3, 2, 1}, {29, 12, 4, 0}, {28, 12, 4, 0}, {27, 12, 5, 0}, {26, 12, 6, 0}, {25, 12, 7, 0}, {24, 12, 8, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {15, 2, 15, 0}, {16, 2, 15, 0}, {17, 2, 15, 0}, {17, 2, 16, 1}, {17, 2, 17, 0}}, {{30, 12, 6, 2, 1}, {29, 12, 7, 0}, {28, 12, 7, 0}, {27, 12, 7, 0}, {26, 12, 7, 0}, {25, 12, 7, 0}, {24, 12, 8, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {15, 2, 15, 0}, {16, 2, 15, 0}, {17, 2, 15, 0}, {17, 2, 16, 1}, {17, 2, 17, 0}}, {{5, 12, 7, 2, 3}, {6, 12, 8, 0}, {7, 12, 8, 0}, {8, 12, 8, 0}, {9, 12, 8, 0}, {10, 12, 8, 0}, {11, 12, 8, 0}, {12, 12, 8, 0}, {13, 12, 8, 0}, {14, 12, 8, 0}, {15, 12, 8, 0}, {16, 12, 8, 0}, {17, 12, 8, 0}, {18, 12, 8, 0}, {19, 12, 8, 0}, {20, 12, 9, 0}, {21, 11, 9, 0}, {21, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {15, 2, 15, 0}, {16, 2, 15, 0}, {17, 2, 15, 0}, {17, 2, 16, 1}, {17, 2, 17, 0}}, {{30, 12, 9, 2, 1}, {29, 12, 10, 0}, {28, 12, 10, 0}, {27, 12, 9, 0}, {26, 12, 9, 0}, {25, 12, 9, 0}, {24, 12, 9, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {15, 2, 15, 0}, {16, 2, 15, 0}, {17, 2, 15, 0}, {17, 2, 16, 1}, {17, 2, 17, 0}}, {{5, 12, 10, 2, 3}, {6, 12, 11, 0}, {7, 12, 11, 0}, {8, 12, 10, 0}, {9, 12, 9, 0}, {10, 12, 9, 0}, {11, 12, 9, 0}, {12, 12, 9, 0}, {13, 12, 9, 0}, {14, 12, 9, 0}, {15, 12, 9, 0}, {16, 12, 9, 0}, {17, 12, 9, 0}, {18, 12, 9, 0}, {19, 12, 9, 0}, {20, 12, 9, 0}, {21, 11, 9, 0}, {21, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {15, 2, 15, 0}, {16, 2, 15, 0}, {17, 2, 15, 0}, {17, 2, 16, 1}, {17, 2, 17, 0}}, {{30, 12, 12, 2, 1}, {29, 12, 13, 0}, {28, 12, 13, 0}, {27, 12, 12, 0}, {26, 12, 11, 0}, {25, 12, 10, 0}, {24, 12, 9, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {15, 2, 15, 0}, {16, 2, 15, 0}, {17, 2, 15, 0}, {17, 2, 16, 1}, {17, 2, 17, 0}}, {{5, 12, 13, 2, 3}, {6, 12, 14, 0}, {7, 12, 14, 0}, {8, 12, 13, 0}, {9, 12, 12, 0}, {10, 12, 11, 0}, {11, 12, 10, 0}, {12, 12, 9, 0}, {13, 12, 9, 0}, {14, 12, 9, 0}, {15, 12, 9, 0}, {16, 12, 9, 0}, {17, 12, 9, 0}, {18, 12, 9, 0}, {19, 12, 9, 0}, {20, 12, 9, 0}, {21, 11, 9, 0}, {21, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {15, 2, 15, 0}, {16, 2, 15, 0}, {17, 2, 15, 0}, {17, 2, 16, 1}, {17, 2, 17, 0}}, {{30, 12, 15, 2, 1}, {29, 12, 16, 0}, {28, 12, 16, 0}, {27, 12, 15, 0}, {26, 12, 14, 0}, {25, 12, 13, 0}, {24, 12, 12, 0}, {23, 12, 11, 0}, {23, 12, 10, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {15, 2, 15, 0}, {16, 2, 15, 0}, {17, 2, 15, 0}, {17, 2, 16, 1}, {17, 2, 17, 0}}, {{5, 12, 16, 2, 3}, {6, 12, 14, 0}, {7, 12, 14, 0}, {8, 12, 13, 0}, {9, 12, 12, 0}, {10, 12, 11, 0}, {11, 12, 10, 0}, {12, 12, 9, 0}, {13, 12, 9, 0}, {14, 12, 9, 0}, {15, 12, 9, 0}, {16, 12, 9, 0}, {17, 12, 9, 0}, {18, 12, 9, 0}, {19, 12, 9, 0}, {20, 12, 9, 0}, {21, 11, 9, 0}, {21, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {15, 2, 15, 0}, {16, 2, 15, 0}, {17, 2, 15, 0}, {17, 2, 16, 1}, {17, 2, 17, 0}}, {{17, 2, 17, 0}, {17, 1, 18, 0}, {17, 1, 19, 0}, {16, 1, 20, 0}, {15, 1, 21, 0}, {14, 1, 22, 0}, {13, 1, 23, 0}, {12, 1, 23, 0}, {11, 1, 23, 0}, {10, 1, 24, 0}, {9, 1, 24, 0}, {8, 1, 24, 0}, {7, 1, 24, 0}, {6, 1, 24, 0}, {5, 1, 24, 0}, {4, 1, 23, 0}, {3, 1, 23, 0}, {2, 1, 23, 0}, {2, 1, 22, 0}, {2, 1, 21, 0}, {2, 1, 20, 0}, {2, 1, 19, 0}, {1, 1, 18, 0}, {1, 1, 17, 0}, {1, 1, 16, 0}, {1, 1, 15, 0}, {1, 1, 14, 0}, {1, 1, 13, 0}, {1, 1, 12, 0}, {1, 1, 11, 0}, {1, 1, 10, 0}, {1, 1, 9, 0}, {1, 1, 8, 0}, {1, 1, 7, 0}, {1, 1, 6, 0}, {1, 1, 5, 0}, {1, 1, 4, 0}, {1, 1, 3, 0}, {1, 1, 2, 0}, {1, 1, 1, 0}, {2, 1, 0, 0}, {3, 1, 0, 0}, {4, 1, 0, 0}, {5, 1, 0, 0}, {6, 1, 0, 0}, {7, 1, 0, 0}, {8, 1, 0, 0}, {9, 1, 0, 0}, {10, 1, 0, 0}, {11, 1, 0, 0}, {12, 1, 0, 0}, {13, 1, 0, 0}, {14, 1, 0, 0}, {15, 1, 0, 0}, {16, 1, 0, 0}, {17, 1, 0, 0}}}, {{{30, 12, 3, 2, 1}, {29, 12, 4, 0}, {28, 12, 4, 0}, {27, 12, 5, 0}, {26, 12, 6, 0}, {25, 12, 7, 0}, {24, 12, 8, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {15, 2, 15, 0}, {16, 2, 15, 0}, {17, 2, 15, 0}, {18, 2, 15, 0}, {19, 2, 15, 0}, {20, 2, 15, 0}, {21, 2, 15, 0}, {22, 2, 15, 0}, {23, 2, 15, 0}, {24, 2, 16, 0}, {24, 2, 17, 0}, {24, 2, 18, 0}, {25, 2, 19, 0}, {26, 2, 20, 0}, {27, 2, 21, 0}, {27, 2, 22, 1}, {28, 2, 23, 0}}, {{30, 12, 6, 2, 1}, {29, 12, 7, 0}, {28, 12, 7, 0}, {27, 12, 7, 0}, {26, 12, 7, 0}, {25, 12, 7, 0}, {24, 12, 8, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {15, 2, 15, 0}, {16, 2, 15, 0}, {17, 2, 15, 0}, {18, 2, 15, 0}, {19, 2, 15, 0}, {20, 2, 15, 0}, {21, 2, 15, 0}, {22, 2, 15, 0}, {23, 2, 15, 0}, {24, 2, 16, 0}, {24, 2, 17, 0}, {24, 2, 18, 0}, {25, 2, 19, 0}, {26, 2, 20, 0}, {27, 2, 21, 0}, {27, 2, 22, 1}, {28, 2, 23, 0}}, {{5, 12, 7, 2, 3}, {6, 12, 8, 0}, {7, 12, 8, 0}, {8, 12, 8, 0}, {9, 12, 8, 0}, {10, 12, 8, 0}, {11, 12, 8, 0}, {12, 12, 8, 0}, {13, 12, 8, 0}, {14, 12, 8, 0}, {15, 12, 8, 0}, {16, 12, 8, 0}, {17, 12, 8, 0}, {18, 12, 8, 0}, {19, 12, 8, 0}, {20, 12, 9, 0}, {21, 11, 9, 0}, {21, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {15, 2, 15, 0}, {16, 2, 15, 0}, {17, 2, 15, 0}, {18, 2, 15, 0}, {19, 2, 15, 0}, {20, 2, 15, 0}, {21, 2, 15, 0}, {22, 2, 15, 0}, {23, 2, 15, 0}, {24, 2, 16, 0}, {24, 2, 17, 0}, {24, 2, 18, 0}, {25, 2, 19, 0}, {26, 2, 20, 0}, {27, 2, 21, 0}, {27, 2, 22, 1}, {28, 2, 23, 0}}, {{30, 12, 9, 2, 1}, {29, 12, 10, 0}, {28, 12, 10, 0}, {27, 12, 9, 0}, {26, 12, 9, 0}, {25, 12, 9, 0}, {24, 12, 9, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {15, 2, 15, 0}, {16, 2, 15, 0}, {17, 2, 15, 0}, {18, 2, 15, 0}, {19, 2, 15, 0}, {20, 2, 15, 0}, {21, 2, 15, 0}, {22, 2, 15, 0}, {23, 2, 15, 0}, {24, 2, 16, 0}, {24, 2, 17, 0}, {24, 2, 18, 0}, {25, 2, 19, 0}, {26, 2, 20, 0}, {27, 2, 21, 0}, {27, 2, 22, 1}, {28, 2, 23, 0}}, {{5, 12, 10, 2, 3}, {6, 12, 11, 0}, {7, 12, 11, 0}, {8, 12, 10, 0}, {9, 12, 9, 0}, {10, 12, 9, 0}, {11, 12, 9, 0}, {12, 12, 9, 0}, {13, 12, 9, 0}, {14, 12, 9, 0}, {15, 12, 9, 0}, {16, 12, 9, 0}, {17, 12, 9, 0}, {18, 12, 9, 0}, {19, 12, 9, 0}, {20, 12, 9, 0}, {21, 11, 9, 0}, {21, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {15, 2, 15, 0}, {16, 2, 15, 0}, {17, 2, 15, 0}, {18, 2, 15, 0}, {19, 2, 15, 0}, {20, 2, 15, 0}, {21, 2, 15, 0}, {22, 2, 15, 0}, {23, 2, 15, 0}, {24, 2, 16, 0}, {24, 2, 17, 0}, {24, 2, 18, 0}, {25, 2, 19, 0}, {26, 2, 20, 0}, {27, 2, 21, 0}, {27, 2, 22, 1}, {28, 2, 23, 0}}, {{30, 12, 12, 2, 1}, {29, 12, 13, 0}, {28, 12, 13, 0}, {27, 12, 12, 0}, {26, 12, 11, 0}, {25, 12, 10, 0}, {24, 12, 9, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {15, 2, 15, 0}, {16, 2, 15, 0}, {17, 2, 15, 0}, {18, 2, 15, 0}, {19, 2, 15, 0}, {20, 2, 15, 0}, {21, 2, 15, 0}, {22, 2, 15, 0}, {23, 2, 15, 0}, {24, 2, 16, 0}, {24, 2, 17, 0}, {24, 2, 18, 0}, {25, 2, 19, 0}, {26, 2, 20, 0}, {27, 2, 21, 0}, {27, 2, 22, 1}, {28, 2, 23, 0}}, {{5, 12, 13, 2, 3}, {6, 12, 14, 0}, {7, 12, 14, 0}, {8, 12, 13, 0}, {9, 12, 12, 0}, {10, 12, 11, 0}, {11, 12, 10, 0}, {12, 12, 9, 0}, {13, 12, 9, 0}, {14, 12, 9, 0}, {15, 12, 9, 0}, {16, 12, 9, 0}, {17, 12, 9, 0}, {18, 12, 9, 0}, {19, 12, 9, 0}, {20, 12, 9, 0}, {21, 11, 9, 0}, {21, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {15, 2, 15, 0}, {16, 2, 15, 0}, {17, 2, 15, 0}, {18, 2, 15, 0}, {19, 2, 15, 0}, {20, 2, 15, 0}, {21, 2, 15, 0}, {22, 2, 15, 0}, {23, 2, 15, 0}, {24, 2, 16, 0}, {24, 2, 17, 0}, {24, 2, 18, 0}, {25, 2, 19, 0}, {26, 2, 20, 0}, {27, 2, 21, 0}, {27, 2, 22, 1}, {28, 2, 23, 0}}, {{30, 12, 15, 2, 1}, {29, 12, 16, 0}, {28, 12, 16, 0}, {27, 12, 15, 0}, {26, 12, 14, 0}, {25, 12, 13, 0}, {24, 12, 12, 0}, {23, 12, 11, 0}, {23, 12, 10, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {15, 2, 15, 0}, {16, 2, 15, 0}, {17, 2, 15, 0}, {18, 2, 15, 0}, {19, 2, 15, 0}, {20, 2, 15, 0}, {21, 2, 15, 0}, {22, 2, 15, 0}, {23, 2, 15, 0}, {24, 2, 16, 0}, {24, 2, 17, 0}, {24, 2, 18, 0}, {25, 2, 19, 0}, {26, 2, 20, 0}, {27, 2, 21, 0}, {27, 2, 22, 1}, {28, 2, 23, 0}}, {{5, 12, 16, 2, 3}, {6, 12, 14, 0}, {7, 12, 14, 0}, {8, 12, 13, 0}, {9, 12, 12, 0}, {10, 12, 11, 0}, {11, 12, 10, 0}, {12, 12, 9, 0}, {13, 12, 9, 0}, {14, 12, 9, 0}, {15, 12, 9, 0}, {16, 12, 9, 0}, {17, 12, 9, 0}, {18, 12, 9, 0}, {19, 12, 9, 0}, {20, 12, 9, 0}, {21, 11, 9, 0}, {21, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {15, 2, 15, 0}, {16, 2, 15, 0}, {17, 2, 15, 0}, {18, 2, 15, 0}, {19, 2, 15, 0}, {20, 2, 15, 0}, {21, 2, 15, 0}, {22, 2, 15, 0}, {23, 2, 15, 0}, {24, 2, 16, 0}, {24, 2, 17, 0}, {24, 2, 18, 0}, {25, 2, 19, 0}, {26, 2, 20, 0}, {27, 2, 21, 0}, {27, 2, 22, 1}, {28, 2, 23, 0}}, {{28, 2, 23, 0}, {29, 2, 23, 0}, {30, 1, 23, 0}, {31, 1, 23, 0}, {32, 1, 23, 0}, {33, 1, 23, 0}, {33, 1, 22, 0}, {33, 1, 21, 0}, {33, 1, 20, 0}, {33, 1, 19, 0}, {34, 1, 18, 0}, {34, 1, 17, 0}, {34, 1, 16, 0}, {34, 1, 15, 0}, {34, 1, 14, 0}, {34, 1, 13, 0}, {34, 1, 12, 0}, {34, 1, 11, 0}, {34, 1, 10, 0}, {34, 1, 9, 0}, {34, 1, 8, 0}, {34, 1, 7, 0}, {34, 1, 6, 0}, {34, 1, 5, 0}, {34, 1, 4, 0}, {34, 1, 3, 0}, {34, 1, 2, 0}, {34, 1, 1, 0}, {33, 1, 0, 0}, {32, 1, 0, 0}, {31, 1, 0, 0}, {30, 1, 0, 0}, {29, 1, 0, 0}, {28, 1, 0, 0}, {27, 1, 0, 0}, {26, 1, 0, 0}, {25, 1, 0, 0}, {24, 1, 0, 0}, {23, 1, 0, 0}, {22, 1, 0, 0}, {21, 1, 0, 0}, {20, 1, 0, 0}, {19, 1, 0, 0}, {18, 1, 0, 0}, {17, 1, 0, 0}}}, {{{30, 12, 3, 2, 1}, {29, 12, 4, 0}, {28, 12, 4, 0}, {27, 12, 5, 0}, {26, 12, 6, 0}, {25, 12, 7, 0}, {24, 12, 8, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {15, 2, 15, 0}, {16, 2, 15, 0}, {17, 2, 15, 0}, {18, 2, 15, 0}, {19, 2, 15, 0}, {20, 2, 15, 0}, {21, 2, 15, 0}, {22, 2, 15, 0}, {23, 2, 15, 0}, {24, 2, 16, 0}, {24, 2, 17, 0}, {25, 2, 18, 0}, {26, 2, 19, 0}, {27, 2, 20, 0}, {28, 2, 21, 0}, {28, 2, 22, 1}, {28, 2, 23, 0}}, {{30, 12, 6, 2, 1}, {29, 12, 7, 0}, {28, 12, 7, 0}, {27, 12, 7, 0}, {26, 12, 7, 0}, {25, 12, 7, 0}, {24, 12, 8, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {15, 2, 15, 0}, {16, 2, 15, 0}, {17, 2, 15, 0}, {18, 2, 15, 0}, {19, 2, 15, 0}, {20, 2, 15, 0}, {21, 2, 15, 0}, {22, 2, 15, 0}, {23, 2, 15, 0}, {24, 2, 16, 0}, {24, 2, 17, 0}, {25, 2, 18, 0}, {26, 2, 19, 0}, {27, 2, 20, 0}, {28, 2, 21, 0}, {28, 2, 22, 1}, {28, 2, 23, 0}}, {{5, 12, 7, 2, 3}, {6, 12, 8, 0}, {7, 12, 8, 0}, {8, 12, 8, 0}, {9, 12, 8, 0}, {10, 12, 8, 0}, {11, 12, 8, 0}, {12, 12, 8, 0}, {13, 12, 8, 0}, {14, 12, 8, 0}, {15, 12, 8, 0}, {16, 12, 8, 0}, {17, 12, 8, 0}, {18, 12, 8, 0}, {19, 12, 8, 0}, {20, 12, 9, 0}, {21, 11, 9, 0}, {21, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {15, 2, 15, 0}, {16, 2, 15, 0}, {17, 2, 15, 0}, {18, 2, 15, 0}, {19, 2, 15, 0}, {20, 2, 15, 0}, {21, 2, 15, 0}, {22, 2, 15, 0}, {23, 2, 15, 0}, {24, 2, 16, 0}, {24, 2, 17, 0}, {25, 2, 18, 0}, {26, 2, 19, 0}, {27, 2, 20, 0}, {28, 2, 21, 0}, {28, 2, 22, 1}, {28, 2, 23, 0}}, {{30, 12, 9, 2, 1}, {29, 12, 10, 0}, {28, 12, 10, 0}, {27, 12, 9, 0}, {26, 12, 9, 0}, {25, 12, 9, 0}, {24, 12, 9, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {15, 2, 15, 0}, {16, 2, 15, 0}, {17, 2, 15, 0}, {18, 2, 15, 0}, {19, 2, 15, 0}, {20, 2, 15, 0}, {21, 2, 15, 0}, {22, 2, 15, 0}, {23, 2, 15, 0}, {24, 2, 16, 0}, {24, 2, 17, 0}, {25, 2, 18, 0}, {26, 2, 19, 0}, {27, 2, 20, 0}, {28, 2, 21, 0}, {28, 2, 22, 1}, {28, 2, 23, 0}}, {{5, 12, 10, 2, 3}, {6, 12, 11, 0}, {7, 12, 11, 0}, {8, 12, 10, 0}, {9, 12, 9, 0}, {10, 12, 9, 0}, {11, 12, 9, 0}, {12, 12, 9, 0}, {13, 12, 9, 0}, {14, 12, 9, 0}, {15, 12, 9, 0}, {16, 12, 9, 0}, {17, 12, 9, 0}, {18, 12, 9, 0}, {19, 12, 9, 0}, {20, 12, 9, 0}, {21, 11, 9, 0}, {21, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {15, 2, 15, 0}, {16, 2, 15, 0}, {17, 2, 15, 0}, {18, 2, 15, 0}, {19, 2, 15, 0}, {20, 2, 15, 0}, {21, 2, 15, 0}, {22, 2, 15, 0}, {23, 2, 15, 0}, {24, 2, 16, 0}, {24, 2, 17, 0}, {25, 2, 18, 0}, {26, 2, 19, 0}, {27, 2, 20, 0}, {28, 2, 21, 0}, {28, 2, 22, 1}, {28, 2, 23, 0}}, {{30, 12, 12, 2, 1}, {29, 12, 13, 0}, {28, 12, 13, 0}, {27, 12, 12, 0}, {26, 12, 11, 0}, {25, 12, 10, 0}, {24, 12, 9, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {15, 2, 15, 0}, {16, 2, 15, 0}, {17, 2, 15, 0}, {18, 2, 15, 0}, {19, 2, 15, 0}, {20, 2, 15, 0}, {21, 2, 15, 0}, {22, 2, 15, 0}, {23, 2, 15, 0}, {24, 2, 16, 0}, {24, 2, 17, 0}, {25, 2, 18, 0}, {26, 2, 19, 0}, {27, 2, 20, 0}, {28, 2, 21, 0}, {28, 2, 22, 1}, {28, 2, 23, 0}}, {{5, 12, 13, 2, 3}, {6, 12, 14, 0}, {7, 12, 14, 0}, {8, 12, 13, 0}, {9, 12, 12, 0}, {10, 12, 11, 0}, {11, 12, 10, 0}, {12, 12, 9, 0}, {13, 12, 9, 0}, {14, 12, 9, 0}, {15, 12, 9, 0}, {16, 12, 9, 0}, {17, 12, 9, 0}, {18, 12, 9, 0}, {19, 12, 9, 0}, {20, 12, 9, 0}, {21, 11, 9, 0}, {21, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {15, 2, 15, 0}, {16, 2, 15, 0}, {17, 2, 15, 0}, {18, 2, 15, 0}, {19, 2, 15, 0}, {20, 2, 15, 0}, {21, 2, 15, 0}, {22, 2, 15, 0}, {23, 2, 15, 0}, {24, 2, 16, 0}, {24, 2, 17, 0}, {25, 2, 18, 0}, {26, 2, 19, 0}, {27, 2, 20, 0}, {28, 2, 21, 0}, {28, 2, 22, 1}, {28, 2, 23, 0}}, {{30, 12, 15, 2, 1}, {29, 12, 16, 0}, {28, 12, 16, 0}, {27, 12, 15, 0}, {26, 12, 14, 0}, {25, 12, 13, 0}, {24, 12, 12, 0}, {23, 12, 11, 0}, {23, 12, 10, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {15, 2, 15, 0}, {16, 2, 15, 0}, {17, 2, 15, 0}, {18, 2, 15, 0}, {19, 2, 15, 0}, {20, 2, 15, 0}, {21, 2, 15, 0}, {22, 2, 15, 0}, {23, 2, 15, 0}, {24, 2, 16, 0}, {24, 2, 17, 0}, {25, 2, 18, 0}, {26, 2, 19, 0}, {27, 2, 20, 0}, {28, 2, 21, 0}, {28, 2, 22, 1}, {28, 2, 23, 0}}, {{5, 12, 16, 2, 3}, {6, 12, 14, 0}, {7, 12, 14, 0}, {8, 12, 13, 0}, {9, 12, 12, 0}, {10, 12, 11, 0}, {11, 12, 10, 0}, {12, 12, 9, 0}, {13, 12, 9, 0}, {14, 12, 9, 0}, {15, 12, 9, 0}, {16, 12, 9, 0}, {17, 12, 9, 0}, {18, 12, 9, 0}, {19, 12, 9, 0}, {20, 12, 9, 0}, {21, 11, 9, 0}, {21, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {15, 2, 15, 0}, {16, 2, 15, 0}, {17, 2, 15, 0}, {18, 2, 15, 0}, {19, 2, 15, 0}, {20, 2, 15, 0}, {21, 2, 15, 0}, {22, 2, 15, 0}, {23, 2, 15, 0}, {24, 2, 16, 0}, {24, 2, 17, 0}, {25, 2, 18, 0}, {26, 2, 19, 0}, {27, 2, 20, 0}, {28, 2, 21, 0}, {28, 2, 22, 1}, {28, 2, 23, 0}}, {{28, 2, 23, 0}, {29, 2, 23, 0}, {30, 1, 23, 0}, {31, 1, 23, 0}, {32, 1, 23, 0}, {33, 1, 23, 0}, {33, 1, 22, 0}, {33, 1, 21, 0}, {33, 1, 20, 0}, {33, 1, 19, 0}, {34, 1, 18, 0}, {34, 1, 17, 0}, {34, 1, 16, 0}, {34, 1, 15, 0}, {34, 1, 14, 0}, {34, 1, 13, 0}, {34, 1, 12, 0}, {34, 1, 11, 0}, {34, 1, 10, 0}, {34, 1, 9, 0}, {34, 1, 8, 0}, {34, 1, 7, 0}, {34, 1, 6, 0}, {34, 1, 5, 0}, {34, 1, 4, 0}, {34, 1, 3, 0}, {34, 1, 2, 0}, {34, 1, 1, 0}, {33, 1, 0, 0}, {32, 1, 0, 0}, {31, 1, 0, 0}, {30, 1, 0, 0}, {29, 1, 0, 0}, {28, 1, 0, 0}, {27, 1, 0, 0}, {26, 1, 0, 0}, {25, 1, 0, 0}, {24, 1, 0, 0}, {23, 1, 0, 0}, {22, 1, 0, 0}, {21, 1, 0, 0}, {20, 1, 0, 0}, {19, 1, 0, 0}, {18, 1, 0, 0}, {17, 1, 0, 0}}}, {{{30, 12, 3, 2, 1}, {29, 12, 4, 0}, {28, 12, 4, 0}, {27, 12, 5, 0}, {26, 12, 6, 0}, {25, 12, 7, 0}, {24, 12, 8, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {15, 2, 15, 0}, {16, 2, 15, 0}, {17, 2, 15, 0}, {18, 2, 15, 0}, {18, 2, 16, 1}, {18, 2, 17, 0}}, {{30, 12, 6, 2, 1}, {29, 12, 7, 0}, {28, 12, 7, 0}, {27, 12, 7, 0}, {26, 12, 7, 0}, {25, 12, 7, 0}, {24, 12, 8, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {15, 2, 15, 0}, {16, 2, 15, 0}, {17, 2, 15, 0}, {18, 2, 15, 0}, {18, 2, 16, 1}, {18, 2, 17, 0}}, {{5, 12, 7, 2, 3}, {6, 12, 8, 0}, {7, 12, 8, 0}, {8, 12, 8, 0}, {9, 12, 8, 0}, {10, 12, 8, 0}, {11, 12, 8, 0}, {12, 12, 8, 0}, {13, 12, 8, 0}, {14, 12, 8, 0}, {15, 12, 8, 0}, {16, 12, 8, 0}, {17, 12, 8, 0}, {18, 12, 8, 0}, {19, 12, 8, 0}, {20, 12, 9, 0}, {21, 11, 9, 0}, {21, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {15, 2, 15, 0}, {16, 2, 15, 0}, {17, 2, 15, 0}, {18, 2, 15, 0}, {18, 2, 16, 1}, {18, 2, 17, 0}}, {{30, 12, 9, 2, 1}, {29, 12, 10, 0}, {28, 12, 10, 0}, {27, 12, 9, 0}, {26, 12, 9, 0}, {25, 12, 9, 0}, {24, 12, 9, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {15, 2, 15, 0}, {16, 2, 15, 0}, {17, 2, 15, 0}, {18, 2, 15, 0}, {18, 2, 16, 1}, {18, 2, 17, 0}}, {{5, 12, 10, 2, 3}, {6, 12, 11, 0}, {7, 12, 11, 0}, {8, 12, 10, 0}, {9, 12, 9, 0}, {10, 12, 9, 0}, {11, 12, 9, 0}, {12, 12, 9, 0}, {13, 12, 9, 0}, {14, 12, 9, 0}, {15, 12, 9, 0}, {16, 12, 9, 0}, {17, 12, 9, 0}, {18, 12, 9, 0}, {19, 12, 9, 0}, {20, 12, 9, 0}, {21, 11, 9, 0}, {21, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {15, 2, 15, 0}, {16, 2, 15, 0}, {17, 2, 15, 0}, {18, 2, 15, 0}, {18, 2, 16, 1}, {18, 2, 17, 0}}, {{30, 12, 12, 2, 1}, {29, 12, 13, 0}, {28, 12, 13, 0}, {27, 12, 12, 0}, {26, 12, 11, 0}, {25, 12, 10, 0}, {24, 12, 9, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {15, 2, 15, 0}, {16, 2, 15, 0}, {17, 2, 15, 0}, {18, 2, 15, 0}, {18, 2, 16, 1}, {18, 2, 17, 0}}, {{5, 12, 13, 2, 3}, {6, 12, 14, 0}, {7, 12, 14, 0}, {8, 12, 13, 0}, {9, 12, 12, 0}, {10, 12, 11, 0}, {11, 12, 10, 0}, {12, 12, 9, 0}, {13, 12, 9, 0}, {14, 12, 9, 0}, {15, 12, 9, 0}, {16, 12, 9, 0}, {17, 12, 9, 0}, {18, 12, 9, 0}, {19, 12, 9, 0}, {20, 12, 9, 0}, {21, 11, 9, 0}, {21, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {15, 2, 15, 0}, {16, 2, 15, 0}, {17, 2, 15, 0}, {18, 2, 15, 0}, {18, 2, 16, 1}, {18, 2, 17, 0}}, {{30, 12, 15, 2, 1}, {29, 12, 16, 0}, {28, 12, 16, 0}, {27, 12, 15, 0}, {26, 12, 14, 0}, {25, 12, 13, 0}, {24, 12, 12, 0}, {23, 12, 11, 0}, {23, 12, 10, 0}, {23, 12, 9, 0}, {22, 11, 9, 0}, {22, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {15, 2, 15, 0}, {16, 2, 15, 0}, {17, 2, 15, 0}, {18, 2, 15, 0}, {18, 2, 16, 1}, {18, 2, 17, 0}}, {{5, 12, 16, 2, 3}, {6, 12, 14, 0}, {7, 12, 14, 0}, {8, 12, 13, 0}, {9, 12, 12, 0}, {10, 12, 11, 0}, {11, 12, 10, 0}, {12, 12, 9, 0}, {13, 12, 9, 0}, {14, 12, 9, 0}, {15, 12, 9, 0}, {16, 12, 9, 0}, {17, 12, 9, 0}, {18, 12, 9, 0}, {19, 12, 9, 0}, {20, 12, 9, 0}, {21, 11, 9, 0}, {21, 10, 10, 0}, {21, 9, 11, 0}, {20, 9, 12, 0}, {19, 8, 12, 0}, {18, 7, 12, 0}, {17, 7, 13, 0}, {16, 7, 14, 0}, {15, 7, 15, 0}, {14, 2, 15, 0}, {15, 2, 15, 0}, {16, 2, 15, 0}, {17, 2, 15, 0}, {18, 2, 15, 0}, {18, 2, 16, 1}, {18, 2, 17, 0}}, {{18, 2, 17, 0}, {18, 1, 18, 0}, {17, 1, 19, 0}, {16, 1, 20, 0}, {15, 1, 21, 0}, {14, 1, 22, 0}, {13, 1, 23, 0}, {12, 1, 23, 0}, {11, 1, 23, 0}, {10, 1, 24, 0}, {9, 1, 24, 0}, {8, 1, 24, 0}, {7, 1, 24, 0}, {6, 1, 24, 0}, {5, 1, 24, 0}, {4, 1, 23, 0}, {3, 1, 23, 0}, {2, 1, 23, 0}, {2, 1, 22, 0}, {2, 1, 21, 0}, {2, 1, 20, 0}, {2, 1, 19, 0}, {1, 1, 18, 0}, {1, 1, 17, 0}, {1, 1, 16, 0}, {1, 1, 15, 0}, {1, 1, 14, 0}, {1, 1, 13, 0}, {1, 1, 12, 0}, {1, 1, 11, 0}, {1, 1, 10, 0}, {1, 1, 9, 0}, {1, 1, 8, 0}, {1, 1, 7, 0}, {1, 1, 6, 0}, {1, 1, 5, 0}, {1, 1, 4, 0}, {1, 1, 3, 0}, {1, 1, 2, 0}, {1, 1, 1, 0}, {2, 1, 0, 0}, {3, 1, 0, 0}, {4, 1, 0, 0}, {5, 1, 0, 0}, {6, 1, 0, 0}, {7, 1, 0, 0}, {8, 1, 0, 0}, {9, 1, 0, 0}, {10, 1, 0, 0}, {11, 1, 0, 0}, {12, 1, 0, 0}, {13, 1, 0, 0}, {14, 1, 0, 0}, {15, 1, 0, 0}, {16, 1, 0, 0}, {17, 1, 0, 0}}}}, ["mg_villages/schems/shed_with_forge_v2_1_0|WORKPLACE"] = {{{{6, 2, 7, 2, 0}, {6, 2, 6, 0}, {6, 2, 5, 0}, {6, 2, 4, 0}, {5, 2, 4, 0}, {4, 2, 4, 1}, {3, 2, 4, 0}}, {{3, 2, 4, 0}, {2, 2, 5, 0}, {1, 2, 5, 0}, {0, 2, 5, 0}}}}, ["mg_villages/schems/cow_shed_1_270|WORKPLACE"] = {{{{5, 2, 11, 2, 3}, {5, 2, 10, 0}, {5, 2, 9, 0}, {5, 2, 8, 0}, {5, 2, 7, 0}, {5, 2, 6, 0}, {5, 2, 5, 0}, {4, 2, 5, 1}, {3, 2, 5, 0}}, {{3, 2, 5, 0}, {2, 2, 6, 0}, {1, 2, 7, 0}, {0, 2, 8, 0}, {0, 2, 9, 0}}}}, ["mg_villages/schems/baking_house_4|WORKPLACE"] = {{{{7, 2, 8, 2, 2}, {6, 2, 7, 0}, {6, 2, 6, 0}, {6, 2, 5, 0}, {6, 2, 4, 0}, {6, 2, 3, 1}, {6, 2, 2, 0}}, {{6, 2, 2, 0}, {6, 2, 1, 0}, {5, 2, 1, 0}, {4, 2, 1, 0}, {3, 2, 1, 0}, {2, 2, 2, 0}, {1, 2, 3, 0}, {0, 2, 3, 0}, {0, 2, 4, 0}, {0, 2, 5, 0}, {0, 2, 6, 0}, {0, 2, 7, 0}, {0, 2, 8, 0}}}}, ["village_towntest/schems/towntest_cornernote_turret_1_90|WORKPLACE"] = {{{{2, 6, 2, 2, 0}, {3, 6, 2, 0}, {4, 6, 3, 0}, {4, 2, 4, 0}, {3, 2, 4, 0}, {3, 2, 3, 0}, {3, 2, 2, 0}, {3, 2, 1, 1}, {3, 2, 0, 0}}, {}}}, ["mg_villages/schems/baking_house_2|WORKPLACE"] = {{{{4, 2, 7, 2, 3}, {5, 2, 7, 0}, {5, 2, 6, 0}, {5, 2, 5, 0}, {5, 2, 4, 0}, {5, 2, 3, 0}, {5, 2, 2, 1}, {5, 2, 1, 0}}, {{5, 2, 1, 0}, {4, 2, 0, 0}, {3, 2, 0, 0}, {2, 2, 0, 0}, {1, 2, 1, 0}, {0, 2, 2, 0}, {0, 2, 3, 0}, {0, 2, 4, 0}, {0, 2, 5, 0}, {0, 2, 6, 0}}}}, ["mg_villages/schems/logcabinpub1|WORKPLACE"] = {{{{10, 2, 7, 2, 1}, {9, 2, 7, 0}, {9, 2, 6, 0}, {9, 2, 5, 1}, {9, 2, 4, 0}}, {{9, 2, 4, 0}, {8, 2, 3, 0}, {8, 2, 2, 0}, {8, 2, 1, 0}, {7, 2, 0, 0}, {6, 2, 0, 0}}}}, ["village_towntest/schems/towntest_kddekadenz_factory_1_90|WORKPLACE"] = {{{{5, 2, 4, 2, 2}, {6, 2, 5, 0}, {6, 2, 6, 0}, {7, 2, 6, 0}, {8, 2, 6, 0}, {9, 2, 6, 0}, {9, 2, 5, 0}, {9, 2, 4, 0}, {10, 2, 3, 0}, {10, 2, 2, 0}, {10, 2, 1, 0}, {9, 2, 0, 0}, {8, 2, 0, 0}}, {}}}, ["mg_villages/schems/house_with_garden_1_0"] = {{{{3, 5, 5, 2, 0}, {2, 5, 4, 0}, {2, 5, 3, 0}, {3, 4, 2, 0}, {4, 3, 2, 0}, {5, 2, 2, 0}, {5, 2, 3, 0}, {4, 2, 3, 0}, {3, 2, 3, 0}, {2, 2, 4, 0}, {1, 2, 4, 1}, {0, 2, 4, 0}}, {{4, 5, 5, 2, 0}, {5, 5, 4, 0}, {5, 5, 3, 0}, {4, 5, 3, 0}, {3, 5, 3, 0}, {3, 4, 2, 0}, {4, 3, 2, 0}, {5, 2, 2, 0}, {5, 2, 3, 0}, {4, 2, 3, 0}, {3, 2, 3, 0}, {2, 2, 4, 0}, {1, 2, 4, 1}, {0, 2, 4, 0}}, {{0, 2, 4, 0}, {0, 2, 3, 0}}}, {{{3, 5, 5, 2, 0}, {2, 5, 4, 0}, {2, 5, 3, 0}, {3, 4, 2, 0}, {4, 3, 2, 0}, {5, 2, 2, 0}, {6, 2, 2, 1}, {7, 2, 2, 0}}, {{4, 5, 5, 2, 0}, {5, 5, 4, 0}, {5, 5, 3, 0}, {4, 5, 3, 0}, {3, 5, 3, 0}, {3, 4, 2, 0}, {4, 3, 2, 0}, {5, 2, 2, 0}, {6, 2, 2, 1}, {7, 2, 2, 0}}, {{7, 2, 2, 0}, {7, 3, 1, 0}, {7, 2, 0, 0}, {6, 2, 0, 0}, {5, 2, 0, 0}, {4, 2, 0, 0}, {3, 2, 0, 0}, {2, 2, 0, 0}, {1, 2, 0, 0}, {0, 2, 0, 0}, {0, 2, 1, 0}, {0, 2, 2, 0}, {0, 2, 3, 0}}}}, ["mg_villages/schems/lumberjack_school"] = {{{{4, 6, 14, 2, 0}, {5, 6, 12, 0}, {5, 6, 11, 1}, {5, 6, 10, 0}, {5, 6, 9, 0}, {5, 6, 8, 0}, {6, 6, 8, 0}, {6, 6, 7, 1}, {6, 6, 6, 0}, {7, 6, 6, 1}, {8, 6, 6, 0}}, {{8, 6, 6, 0}, {9, 6, 5, 0}, {9, 5, 4, 0}, {9, 4, 3, 0}, {9, 4, 2, 0}, {8, 4, 2, 0}, {7, 4, 2, 0}, {6, 3, 2, 0}, {5, 2, 2, 0}, {5, 2, 1, 0}, {5, 1, 0, 0}}}}, ["mg_villages/schems/logcabin6"] = {{{{2, 3, 5, 2, 0}, {3, 2, 5, 0}, {3, 2, 4, 0}, {3, 2, 3, 1}, {3, 2, 2, 0}}, {{3, 2, 2, 0}, {3, 2, 1, 0}, {3, 2, 0, 0}}}}, ["mg_villages/schems/hochsitz_3|WORKPLACE"] = {{{{2, 6, 3, 2, 1}, {3, 2, 3, 0}, {2, 2, 3, 0}, {1, 2, 3, 0}, {0, 2, 3, 0}}, {}}}, ["mg_villages/schems/hochsitz_2|WORKPLACE"] = {{{{3, 6, 3, 2, 2}, {3, 6, 2, 0}, {4, 6, 2, 0}, {4, 2, 1, 0}, {3, 2, 1, 0}, {2, 2, 1, 0}, {1, 2, 1, 0}, {0, 2, 2, 0}}, {}}}, ["mg_villages/schems/farm_full_5"] = {{{{5, 5, 15, 2, 2}, {6, 5, 16, 0}, {6, 5, 17, 0}, {6, 5, 18, 1}, {6, 5, 19, 0}, {7, 5, 19, 0}, {8, 5, 19, 0}, {8, 4, 18, 0}, {8, 3, 17, 0}, {8, 2, 16, 0}, {8, 2, 15, 1}, {8, 2, 14, 0}}, {{12, 5, 16, 2, 1}, {10, 5, 17, 0}, {10, 5, 18, 0}, {10, 5, 19, 0}, {9, 5, 19, 1}, {8, 5, 19, 0}, {8, 4, 18, 0}, {8, 3, 17, 0}, {8, 2, 16, 0}, {8, 2, 15, 1}, {8, 2, 14, 0}}, {{12, 5, 17, 2, 1}, {10, 5, 18, 0}, {10, 5, 19, 0}, {9, 5, 19, 1}, {8, 5, 19, 0}, {8, 4, 18, 0}, {8, 3, 17, 0}, {8, 2, 16, 0}, {8, 2, 15, 1}, {8, 2, 14, 0}}, {{5, 5, 18, 2, 0}, {6, 5, 19, 0}, {7, 5, 19, 0}, {8, 5, 19, 0}, {8, 4, 18, 0}, {8, 3, 17, 0}, {8, 2, 16, 0}, {8, 2, 15, 1}, {8, 2, 14, 0}}, {{5, 5, 20, 2, 2}, {7, 5, 21, 0}, {7, 5, 20, 1}, {7, 5, 19, 0}, {8, 5, 19, 0}, {8, 4, 18, 0}, {8, 3, 17, 0}, {8, 2, 16, 0}, {8, 2, 15, 1}, {8, 2, 14, 0}}, {{8, 2, 14, 0}, {7, 2, 13, 0}, {6, 2, 12, 0}, {5, 2, 12, 0}, {4, 2, 12, 0}, {3, 2, 12, 0}, {2, 2, 12, 0}, {1, 2, 12, 0}, {0, 2, 12, 0}}}, {{{5, 5, 15, 2, 2}, {6, 5, 16, 0}, {6, 5, 17, 0}, {6, 5, 18, 1}, {6, 5, 19, 0}, {7, 5, 19, 0}, {8, 5, 19, 0}, {8, 4, 18, 0}, {8, 3, 17, 0}, {8, 2, 16, 0}, {7, 2, 16, 0}, {7, 2, 17, 0}, {7, 2, 18, 0}, {7, 2, 19, 0}, {8, 2, 19, 0}, {9, 2, 19, 1}, {10, 2, 19, 0}, {11, 2, 19, 0}, {12, 2, 19, 0}, {12, 2, 18, 1}, {12, 2, 17, 0}, {12, 2, 16, 0}, {12, 2, 15, 1}, {12, 2, 14, 0}}, {{12, 5, 16, 2, 1}, {10, 5, 17, 0}, {10, 5, 18, 0}, {10, 5, 19, 0}, {9, 5, 19, 1}, {8, 5, 19, 0}, {8, 4, 18, 0}, {8, 3, 17, 0}, {8, 2, 16, 0}, {7, 2, 16, 0}, {7, 2, 17, 0}, {7, 2, 18, 0}, {7, 2, 19, 0}, {8, 2, 19, 0}, {9, 2, 19, 1}, {10, 2, 19, 0}, {11, 2, 19, 0}, {12, 2, 19, 0}, {12, 2, 18, 1}, {12, 2, 17, 0}, {12, 2, 16, 0}, {12, 2, 15, 1}, {12, 2, 14, 0}}, {{12, 5, 17, 2, 1}, {10, 5, 18, 0}, {10, 5, 19, 0}, {9, 5, 19, 1}, {8, 5, 19, 0}, {8, 4, 18, 0}, {8, 3, 17, 0}, {8, 2, 16, 0}, {7, 2, 16, 0}, {7, 2, 17, 0}, {7, 2, 18, 0}, {7, 2, 19, 0}, {8, 2, 19, 0}, {9, 2, 19, 1}, {10, 2, 19, 0}, {11, 2, 19, 0}, {12, 2, 19, 0}, {12, 2, 18, 1}, {12, 2, 17, 0}, {12, 2, 16, 0}, {12, 2, 15, 1}, {12, 2, 14, 0}}, {{5, 5, 18, 2, 0}, {6, 5, 19, 0}, {7, 5, 19, 0}, {8, 5, 19, 0}, {8, 4, 18, 0}, {8, 3, 17, 0}, {8, 2, 16, 0}, {7, 2, 16, 0}, {7, 2, 17, 0}, {7, 2, 18, 0}, {7, 2, 19, 0}, {8, 2, 19, 0}, {9, 2, 19, 1}, {10, 2, 19, 0}, {11, 2, 19, 0}, {12, 2, 19, 0}, {12, 2, 18, 1}, {12, 2, 17, 0}, {12, 2, 16, 0}, {12, 2, 15, 1}, {12, 2, 14, 0}}, {{5, 5, 20, 2, 2}, {7, 5, 21, 0}, {7, 5, 20, 1}, {7, 5, 19, 0}, {8, 5, 19, 0}, {8, 4, 18, 0}, {8, 3, 17, 0}, {8, 2, 16, 0}, {7, 2, 16, 0}, {7, 2, 17, 0}, {7, 2, 18, 0}, {7, 2, 19, 0}, {8, 2, 19, 0}, {9, 2, 19, 1}, {10, 2, 19, 0}, {11, 2, 19, 0}, {12, 2, 19, 0}, {12, 2, 18, 1}, {12, 2, 17, 0}, {12, 2, 16, 0}, {12, 2, 15, 1}, {12, 2, 14, 0}}, {{12, 2, 14, 0}, {11, 2, 13, 0}, {11, 2, 12, 0}, {10, 2, 12, 0}, {9, 2, 12, 0}, {8, 2, 12, 0}, {7, 2, 12, 0}, {6, 2, 12, 0}, {5, 2, 12, 0}, {4, 2, 12, 0}, {3, 2, 12, 0}, {2, 2, 12, 0}, {1, 2, 12, 0}, {0, 2, 12, 0}}}}, ["mg_villages/schems/tent_open_big_3|WORKPLACE"] = {{{{2, 2, 2, 2, 2}, {3, 2, 3, 0}, {3, 2, 4, 0}, {3, 2, 5, 0}, {3, 3, 6, 0}, {3, 2, 7, 0}}, {}}}, ["mg_villages/schems/lumberjack_school|WORKPLACE"] = {{{{5, 2, 13, 2, 0}, {4, 2, 13, 0}, {3, 2, 13, 0}, {3, 2, 12, 0}, {3, 2, 11, 0}, {4, 2, 11, 0}, {5, 2, 11, 0}, {5, 2, 10, 0}, {5, 2, 9, 0}, {5, 2, 8, 0}, {5, 2, 7, 0}, {5, 2, 6, 0}, {5, 2, 5, 0}, {5, 2, 4, 0}, {5, 2, 3, 1}, {5, 2, 2, 0}}, {{5, 2, 2, 0}, {5, 2, 1, 0}, {5, 1, 0, 0}}}, {{{4, 6, 14, 2, 0}, {5, 6, 12, 0}, {5, 6, 11, 1}, {5, 6, 10, 0}, {5, 6, 9, 0}, {5, 6, 8, 0}, {6, 6, 8, 0}, {6, 6, 7, 1}, {6, 6, 6, 0}, {7, 6, 6, 1}, {8, 6, 6, 0}}, {{8, 6, 6, 0}, {9, 6, 5, 0}, {9, 5, 4, 0}, {9, 4, 3, 0}, {9, 4, 2, 0}, {8, 4, 2, 0}, {7, 4, 2, 0}, {6, 3, 2, 0}, {5, 2, 2, 0}, {5, 2, 1, 0}, {5, 1, 0, 0}}}}, ["mg_villages/schems/tent_open_big_2|WORKPLACE"] = {{{{6, 2, 3, 2, 1}, {6, 2, 4, 0}, {5, 2, 5, 0}, {4, 2, 6, 0}, {3, 2, 7, 0}}, {}}}, ["mg_villages/schems/inn_1_0"] = {{{{5, 2, 2, 2, 2}, {6, 2, 3, 0}, {6, 2, 4, 1}, {6, 2, 5, 0}, {5, 2, 6, 0}, {4, 2, 6, 0}, {3, 2, 7, 0}, {2, 2, 8, 0}, {1, 2, 8, 1}, {0, 2, 8, 0}}, {{4, 6, 6, 2, 0}, {3, 6, 5, 0}, {3, 6, 4, 0}, {4, 6, 4, 0}, {5, 6, 3, 0}, {5, 5, 2, 0}, {4, 4, 2, 0}, {3, 3, 2, 0}, {2, 2, 2, 0}, {2, 2, 3, 1}, {2, 2, 4, 0}, {2, 2, 5, 0}, {2, 2, 6, 0}, {2, 2, 7, 0}, {2, 2, 8, 0}, {1, 2, 8, 1}, {0, 2, 8, 0}}, {{5, 6, 6, 2, 0}, {6, 6, 5, 0}, {6, 6, 4, 0}, {5, 6, 3, 0}, {5, 5, 2, 0}, {4, 4, 2, 0}, {3, 3, 2, 0}, {2, 2, 2, 0}, {2, 2, 3, 1}, {2, 2, 4, 0}, {2, 2, 5, 0}, {2, 2, 6, 0}, {2, 2, 7, 0}, {2, 2, 8, 0}, {1, 2, 8, 1}, {0, 2, 8, 0}}, {{4, 6, 10, 2, 2}, {3, 6, 11, 0}, {3, 6, 12, 0}, {4, 6, 12, 0}, {5, 6, 13, 0}, {5, 5, 14, 0}, {4, 4, 14, 0}, {3, 3, 14, 0}, {2, 2, 14, 0}, {2, 2, 13, 1}, {2, 2, 12, 0}, {2, 2, 11, 0}, {2, 2, 10, 0}, {2, 2, 9, 0}, {2, 2, 8, 0}, {1, 2, 8, 1}, {0, 2, 8, 0}}, {{5, 6, 10, 2, 2}, {6, 6, 11, 0}, {6, 6, 12, 0}, {5, 6, 13, 0}, {5, 5, 14, 0}, {4, 4, 14, 0}, {3, 3, 14, 0}, {2, 2, 14, 0}, {2, 2, 13, 1}, {2, 2, 12, 0}, {2, 2, 11, 0}, {2, 2, 10, 0}, {2, 2, 9, 0}, {2, 2, 8, 0}, {1, 2, 8, 1}, {0, 2, 8, 0}}, {{5, 2, 14, 2, 0}, {6, 2, 13, 0}, {6, 2, 12, 1}, {6, 2, 11, 0}, {5, 2, 11, 0}, {4, 2, 11, 0}, {3, 2, 10, 0}, {2, 2, 9, 0}, {2, 2, 8, 0}, {1, 2, 8, 1}, {0, 2, 8, 0}}, {}}}, ["mg_villages/schems/tent_open_1|WORKPLACE"] = {{{{2, 2, 2, 2, 3}, {1, 2, 2, 0}, {1, 2, 3, 0}, {0, 2, 4, 0}, {0, 2, 5, 0}, {0, 2, 6, 0}, {1, 2, 6, 0}, {2, 2, 6, 0}, {3, 2, 6, 0}}, {}}}, ["mg_villages/schems/logcabin5"] = {{{{2, 3, 4, 2, 0}, {3, 2, 3, 0}, {3, 2, 2, 0}, {3, 2, 1, 1}, {3, 2, 0, 0}}, {}}}, ["mg_villages/schems/logcabin1"] = {{{{2, 2, 5, 2, 3}, {3, 2, 4, 0}, {4, 2, 4, 0}, {4, 2, 3, 0}, {4, 2, 2, 1}, {4, 2, 1, 0}}, {{2, 3, 5, 2, 3}, {3, 2, 4, 0}, {4, 2, 4, 0}, {4, 2, 3, 0}, {4, 2, 2, 1}, {4, 2, 1, 0}}, {{4, 2, 1, 0}, {4, 2, 0, 0}}}}, ["mg_villages/schems/tree_place_3|WORKPLACE"] = {{{{6, 2, 7, 2, 2}, {5, 2, 6, 0}, {4, 2, 5, 0}, {3, 2, 5, 0}, {2, 2, 5, 0}, {1, 2, 5, 0}, {0, 1, 5, 0}}, {}}}, ["village_modern_houses/schems/modern_house_serenity_1_180"] = {{{{7, 8, 7, 2, 2}, {9, 8, 8, 0}, {9, 8, 9, 0}, {9, 8, 10, 0}, {10, 8, 11, 0}, {11, 8, 12, 0}, {11, 8, 13, 0}, {11, 8, 14, 0}, {11, 8, 15, 0}, {11, 8, 16, 0}, {11, 8, 17, 0}, {10, 7, 17, 0}, {9, 6, 17, 0}, {8, 5, 17, 0}, {7, 4, 17, 0}, {7, 4, 16, 0}, {8, 3, 16, 0}, {9, 3, 15, 0}, {10, 3, 14, 0}, {11, 3, 13, 0}, {12, 3, 13, 0}, {13, 3, 13, 0}, {14, 3, 12, 0}, {15, 3, 11, 0}, {16, 3, 10, 0}, {17, 3, 9, 0}, {17, 3, 8, 0}, {17, 3, 7, 0}, {17, 3, 6, 0}, {18, 3, 6, 1}, {19, 3, 6, 0}}, {{10, 8, 7, 2, 2}, {11, 8, 8, 0}, {11, 8, 9, 0}, {11, 8, 10, 0}, {11, 8, 11, 0}, {11, 8, 12, 0}, {11, 8, 13, 0}, {11, 8, 14, 0}, {11, 8, 15, 0}, {11, 8, 16, 0}, {11, 8, 17, 0}, {10, 7, 17, 0}, {9, 6, 17, 0}, {8, 5, 17, 0}, {7, 4, 17, 0}, {7, 4, 16, 0}, {8, 3, 16, 0}, {9, 3, 15, 0}, {10, 3, 14, 0}, {11, 3, 13, 0}, {12, 3, 13, 0}, {13, 3, 13, 0}, {14, 3, 12, 0}, {15, 3, 11, 0}, {16, 3, 10, 0}, {17, 3, 9, 0}, {17, 3, 8, 0}, {17, 3, 7, 0}, {17, 3, 6, 0}, {18, 3, 6, 1}, {19, 3, 6, 0}}, {{13, 8, 7, 2, 2}, {14, 8, 8, 0}, {14, 8, 9, 0}, {14, 8, 10, 0}, {14, 8, 11, 0}, {14, 8, 12, 0}, {14, 8, 13, 0}, {14, 8, 14, 0}, {13, 8, 15, 0}, {12, 8, 16, 0}, {11, 8, 17, 0}, {10, 7, 17, 0}, {9, 6, 17, 0}, {8, 5, 17, 0}, {7, 4, 17, 0}, {7, 4, 16, 0}, {8, 3, 16, 0}, {9, 3, 15, 0}, {10, 3, 14, 0}, {11, 3, 13, 0}, {12, 3, 13, 0}, {13, 3, 13, 0}, {14, 3, 12, 0}, {15, 3, 11, 0}, {16, 3, 10, 0}, {17, 3, 9, 0}, {17, 3, 8, 0}, {17, 3, 7, 0}, {17, 3, 6, 0}, {18, 3, 6, 1}, {19, 3, 6, 0}}, {{16, 8, 7, 2, 2}, {17, 8, 8, 0}, {17, 8, 9, 0}, {17, 8, 10, 0}, {17, 8, 11, 0}, {16, 8, 12, 0}, {15, 8, 13, 0}, {14, 8, 14, 0}, {13, 8, 15, 0}, {12, 8, 16, 0}, {11, 8, 17, 0}, {10, 7, 17, 0}, {9, 6, 17, 0}, {8, 5, 17, 0}, {7, 4, 17, 0}, {7, 4, 16, 0}, {8, 3, 16, 0}, {9, 3, 15, 0}, {10, 3, 14, 0}, {11, 3, 13, 0}, {12, 3, 13, 0}, {13, 3, 13, 0}, {14, 3, 12, 0}, {15, 3, 11, 0}, {16, 3, 10, 0}, {17, 3, 9, 0}, {17, 3, 8, 0}, {17, 3, 7, 0}, {17, 3, 6, 0}, {18, 3, 6, 1}, {19, 3, 6, 0}}, {{8, 8, 15, 2, 0}, {8, 9, 15, 0}, {9, 9, 15, 0}, {10, 9, 16, 0}, {11, 8, 16, 0}, {11, 8, 17, 0}, {10, 7, 17, 0}, {9, 6, 17, 0}, {8, 5, 17, 0}, {7, 4, 17, 0}, {7, 4, 16, 0}, {8, 3, 16, 0}, {9, 3, 15, 0}, {10, 3, 14, 0}, {11, 3, 13, 0}, {12, 3, 13, 0}, {13, 3, 13, 0}, {14, 3, 12, 0}, {15, 3, 11, 0}, {16, 3, 10, 0}, {17, 3, 9, 0}, {17, 3, 8, 0}, {17, 3, 7, 0}, {17, 3, 6, 0}, {18, 3, 6, 1}, {19, 3, 6, 0}}, {{9, 8, 15, 2, 0}, {11, 8, 15, 0}, {11, 8, 16, 0}, {11, 8, 17, 0}, {10, 7, 17, 0}, {9, 6, 17, 0}, {8, 5, 17, 0}, {7, 4, 17, 0}, {7, 4, 16, 0}, {8, 3, 16, 0}, {9, 3, 15, 0}, {10, 3, 14, 0}, {11, 3, 13, 0}, {12, 3, 13, 0}, {13, 3, 13, 0}, {14, 3, 12, 0}, {15, 3, 11, 0}, {16, 3, 10, 0}, {17, 3, 9, 0}, {17, 3, 8, 0}, {17, 3, 7, 0}, {17, 3, 6, 0}, {18, 3, 6, 1}, {19, 3, 6, 0}}, {{19, 3, 6, 0}, {20, 3, 6, 0}, {21, 3, 6, 0}, {22, 3, 6, 0}, {22, 3, 7, 0}, {22, 2, 8, 0}, {23, 2, 9, 0}, {23, 2, 10, 0}, {23, 2, 11, 0}}}, {{{7, 8, 7, 2, 2}, {9, 8, 8, 0}, {9, 8, 9, 0}, {9, 8, 10, 0}, {10, 8, 11, 0}, {11, 8, 12, 0}, {11, 8, 13, 0}, {11, 8, 14, 0}, {11, 8, 15, 0}, {11, 8, 16, 0}, {11, 8, 17, 0}, {10, 7, 17, 0}, {9, 6, 17, 0}, {8, 5, 17, 0}, {7, 4, 17, 0}, {7, 4, 16, 0}, {7, 3, 15, 0}, {7, 3, 14, 0}, {7, 3, 13, 0}, {7, 3, 12, 0}, {7, 3, 11, 0}, {6, 3, 11, 1}, {5, 3, 10, 0}, {5, 3, 9, 0}, {5, 3, 8, 0}, {5, 3, 7, 0}, {5, 3, 6, 0}, {5, 3, 5, 0}, {5, 3, 4, 0}, {5, 3, 3, 0}, {6, 3, 3, 0}, {7, 3, 3, 0}, {8, 3, 3, 0}, {9, 3, 3, 1}, {10, 3, 3, 0}}, {{10, 8, 7, 2, 2}, {11, 8, 8, 0}, {11, 8, 9, 0}, {11, 8, 10, 0}, {11, 8, 11, 0}, {11, 8, 12, 0}, {11, 8, 13, 0}, {11, 8, 14, 0}, {11, 8, 15, 0}, {11, 8, 16, 0}, {11, 8, 17, 0}, {10, 7, 17, 0}, {9, 6, 17, 0}, {8, 5, 17, 0}, {7, 4, 17, 0}, {7, 4, 16, 0}, {7, 3, 15, 0}, {7, 3, 14, 0}, {7, 3, 13, 0}, {7, 3, 12, 0}, {7, 3, 11, 0}, {6, 3, 11, 1}, {5, 3, 10, 0}, {5, 3, 9, 0}, {5, 3, 8, 0}, {5, 3, 7, 0}, {5, 3, 6, 0}, {5, 3, 5, 0}, {5, 3, 4, 0}, {5, 3, 3, 0}, {6, 3, 3, 0}, {7, 3, 3, 0}, {8, 3, 3, 0}, {9, 3, 3, 1}, {10, 3, 3, 0}}, {{13, 8, 7, 2, 2}, {14, 8, 8, 0}, {14, 8, 9, 0}, {14, 8, 10, 0}, {14, 8, 11, 0}, {14, 8, 12, 0}, {14, 8, 13, 0}, {14, 8, 14, 0}, {13, 8, 15, 0}, {12, 8, 16, 0}, {11, 8, 17, 0}, {10, 7, 17, 0}, {9, 6, 17, 0}, {8, 5, 17, 0}, {7, 4, 17, 0}, {7, 4, 16, 0}, {7, 3, 15, 0}, {7, 3, 14, 0}, {7, 3, 13, 0}, {7, 3, 12, 0}, {7, 3, 11, 0}, {6, 3, 11, 1}, {5, 3, 10, 0}, {5, 3, 9, 0}, {5, 3, 8, 0}, {5, 3, 7, 0}, {5, 3, 6, 0}, {5, 3, 5, 0}, {5, 3, 4, 0}, {5, 3, 3, 0}, {6, 3, 3, 0}, {7, 3, 3, 0}, {8, 3, 3, 0}, {9, 3, 3, 1}, {10, 3, 3, 0}}, {{16, 8, 7, 2, 2}, {17, 8, 8, 0}, {17, 8, 9, 0}, {17, 8, 10, 0}, {17, 8, 11, 0}, {16, 8, 12, 0}, {15, 8, 13, 0}, {14, 8, 14, 0}, {13, 8, 15, 0}, {12, 8, 16, 0}, {11, 8, 17, 0}, {10, 7, 17, 0}, {9, 6, 17, 0}, {8, 5, 17, 0}, {7, 4, 17, 0}, {7, 4, 16, 0}, {7, 3, 15, 0}, {7, 3, 14, 0}, {7, 3, 13, 0}, {7, 3, 12, 0}, {7, 3, 11, 0}, {6, 3, 11, 1}, {5, 3, 10, 0}, {5, 3, 9, 0}, {5, 3, 8, 0}, {5, 3, 7, 0}, {5, 3, 6, 0}, {5, 3, 5, 0}, {5, 3, 4, 0}, {5, 3, 3, 0}, {6, 3, 3, 0}, {7, 3, 3, 0}, {8, 3, 3, 0}, {9, 3, 3, 1}, {10, 3, 3, 0}}, {{8, 8, 15, 2, 0}, {8, 9, 15, 0}, {9, 9, 15, 0}, {10, 9, 16, 0}, {11, 8, 16, 0}, {11, 8, 17, 0}, {10, 7, 17, 0}, {9, 6, 17, 0}, {8, 5, 17, 0}, {7, 4, 17, 0}, {7, 4, 16, 0}, {7, 3, 15, 0}, {7, 3, 14, 0}, {7, 3, 13, 0}, {7, 3, 12, 0}, {7, 3, 11, 0}, {6, 3, 11, 1}, {5, 3, 10, 0}, {5, 3, 9, 0}, {5, 3, 8, 0}, {5, 3, 7, 0}, {5, 3, 6, 0}, {5, 3, 5, 0}, {5, 3, 4, 0}, {5, 3, 3, 0}, {6, 3, 3, 0}, {7, 3, 3, 0}, {8, 3, 3, 0}, {9, 3, 3, 1}, {10, 3, 3, 0}}, {{9, 8, 15, 2, 0}, {11, 8, 15, 0}, {11, 8, 16, 0}, {11, 8, 17, 0}, {10, 7, 17, 0}, {9, 6, 17, 0}, {8, 5, 17, 0}, {7, 4, 17, 0}, {7, 4, 16, 0}, {7, 3, 15, 0}, {7, 3, 14, 0}, {7, 3, 13, 0}, {7, 3, 12, 0}, {7, 3, 11, 0}, {6, 3, 11, 1}, {5, 3, 10, 0}, {5, 3, 9, 0}, {5, 3, 8, 0}, {5, 3, 7, 0}, {5, 3, 6, 0}, {5, 3, 5, 0}, {5, 3, 4, 0}, {5, 3, 3, 0}, {6, 3, 3, 0}, {7, 3, 3, 0}, {8, 3, 3, 0}, {9, 3, 3, 1}, {10, 3, 3, 0}}, {{10, 3, 3, 0}, {11, 3, 3, 0}, {12, 3, 3, 0}, {13, 3, 3, 0}, {14, 3, 3, 0}, {15, 3, 3, 0}, {16, 3, 3, 0}, {17, 3, 3, 0}, {18, 3, 3, 0}, {19, 3, 3, 0}, {20, 3, 4, 0}, {20, 3, 5, 0}, {21, 3, 6, 0}, {22, 3, 6, 0}, {22, 3, 7, 0}, {22, 2, 8, 0}, {23, 2, 9, 0}, {23, 2, 10, 0}, {23, 2, 11, 0}}}, {{{7, 8, 7, 2, 2}, {9, 8, 8, 0}, {9, 8, 9, 0}, {9, 8, 10, 0}, {10, 8, 11, 0}, {11, 8, 12, 0}, {11, 8, 13, 0}, {11, 8, 14, 0}, {11, 8, 15, 0}, {11, 8, 16, 0}, {11, 8, 17, 0}, {10, 7, 17, 0}, {9, 6, 17, 0}, {8, 5, 17, 0}, {7, 4, 17, 0}, {7, 4, 16, 0}, {7, 3, 15, 0}, {7, 3, 14, 0}, {7, 3, 13, 0}, {7, 3, 12, 0}, {7, 3, 11, 0}, {6, 3, 11, 1}, {5, 3, 10, 0}}, {{10, 8, 7, 2, 2}, {11, 8, 8, 0}, {11, 8, 9, 0}, {11, 8, 10, 0}, {11, 8, 11, 0}, {11, 8, 12, 0}, {11, 8, 13, 0}, {11, 8, 14, 0}, {11, 8, 15, 0}, {11, 8, 16, 0}, {11, 8, 17, 0}, {10, 7, 17, 0}, {9, 6, 17, 0}, {8, 5, 17, 0}, {7, 4, 17, 0}, {7, 4, 16, 0}, {7, 3, 15, 0}, {7, 3, 14, 0}, {7, 3, 13, 0}, {7, 3, 12, 0}, {7, 3, 11, 0}, {6, 3, 11, 1}, {5, 3, 10, 0}}, {{13, 8, 7, 2, 2}, {14, 8, 8, 0}, {14, 8, 9, 0}, {14, 8, 10, 0}, {14, 8, 11, 0}, {14, 8, 12, 0}, {14, 8, 13, 0}, {14, 8, 14, 0}, {13, 8, 15, 0}, {12, 8, 16, 0}, {11, 8, 17, 0}, {10, 7, 17, 0}, {9, 6, 17, 0}, {8, 5, 17, 0}, {7, 4, 17, 0}, {7, 4, 16, 0}, {7, 3, 15, 0}, {7, 3, 14, 0}, {7, 3, 13, 0}, {7, 3, 12, 0}, {7, 3, 11, 0}, {6, 3, 11, 1}, {5, 3, 10, 0}}, {{16, 8, 7, 2, 2}, {17, 8, 8, 0}, {17, 8, 9, 0}, {17, 8, 10, 0}, {17, 8, 11, 0}, {16, 8, 12, 0}, {15, 8, 13, 0}, {14, 8, 14, 0}, {13, 8, 15, 0}, {12, 8, 16, 0}, {11, 8, 17, 0}, {10, 7, 17, 0}, {9, 6, 17, 0}, {8, 5, 17, 0}, {7, 4, 17, 0}, {7, 4, 16, 0}, {7, 3, 15, 0}, {7, 3, 14, 0}, {7, 3, 13, 0}, {7, 3, 12, 0}, {7, 3, 11, 0}, {6, 3, 11, 1}, {5, 3, 10, 0}}, {{8, 8, 15, 2, 0}, {8, 9, 15, 0}, {9, 9, 15, 0}, {10, 9, 16, 0}, {11, 8, 16, 0}, {11, 8, 17, 0}, {10, 7, 17, 0}, {9, 6, 17, 0}, {8, 5, 17, 0}, {7, 4, 17, 0}, {7, 4, 16, 0}, {7, 3, 15, 0}, {7, 3, 14, 0}, {7, 3, 13, 0}, {7, 3, 12, 0}, {7, 3, 11, 0}, {6, 3, 11, 1}, {5, 3, 10, 0}}, {{9, 8, 15, 2, 0}, {11, 8, 15, 0}, {11, 8, 16, 0}, {11, 8, 17, 0}, {10, 7, 17, 0}, {9, 6, 17, 0}, {8, 5, 17, 0}, {7, 4, 17, 0}, {7, 4, 16, 0}, {7, 3, 15, 0}, {7, 3, 14, 0}, {7, 3, 13, 0}, {7, 3, 12, 0}, {7, 3, 11, 0}, {6, 3, 11, 1}, {5, 3, 10, 0}}, {{5, 3, 10, 0}, {5, 3, 9, 0}, {5, 3, 8, 0}, {5, 3, 7, 0}, {5, 3, 6, 0}, {5, 3, 5, 0}, {5, 3, 4, 0}, {5, 3, 3, 0}, {6, 3, 3, 0}, {7, 3, 3, 0}, {8, 3, 2, 0}, {8, 4, 1, 0}, {9, 4, 1, 0}, {10, 4, 1, 0}, {11, 4, 1, 0}, {12, 4, 1, 0}, {13, 4, 1, 0}, {14, 3, 2, 0}, {15, 3, 3, 0}, {16, 3, 3, 0}, {17, 3, 3, 0}, {18, 3, 3, 0}, {19, 3, 3, 0}, {20, 3, 4, 0}, {20, 3, 5, 0}, {21, 3, 6, 0}, {22, 3, 6, 0}, {22, 3, 7, 0}, {22, 2, 8, 0}, {23, 2, 9, 0}, {23, 2, 10, 0}, {23, 2, 11, 0}}}, {{{7, 8, 7, 2, 2}, {9, 8, 8, 0}, {9, 8, 9, 0}, {9, 8, 10, 0}, {10, 8, 11, 0}, {11, 8, 12, 0}, {11, 8, 13, 0}, {11, 8, 14, 0}, {11, 8, 15, 0}, {11, 8, 16, 0}, {11, 8, 17, 0}, {10, 7, 17, 0}, {9, 6, 17, 0}, {8, 5, 17, 0}, {7, 4, 17, 0}, {7, 4, 16, 0}, {7, 3, 15, 0}, {7, 3, 14, 0}, {7, 3, 13, 0}, {7, 3, 12, 0}, {7, 3, 11, 0}, {7, 3, 10, 0}, {6, 3, 10, 1}, {5, 3, 10, 0}}, {{10, 8, 7, 2, 2}, {11, 8, 8, 0}, {11, 8, 9, 0}, {11, 8, 10, 0}, {11, 8, 11, 0}, {11, 8, 12, 0}, {11, 8, 13, 0}, {11, 8, 14, 0}, {11, 8, 15, 0}, {11, 8, 16, 0}, {11, 8, 17, 0}, {10, 7, 17, 0}, {9, 6, 17, 0}, {8, 5, 17, 0}, {7, 4, 17, 0}, {7, 4, 16, 0}, {7, 3, 15, 0}, {7, 3, 14, 0}, {7, 3, 13, 0}, {7, 3, 12, 0}, {7, 3, 11, 0}, {7, 3, 10, 0}, {6, 3, 10, 1}, {5, 3, 10, 0}}, {{13, 8, 7, 2, 2}, {14, 8, 8, 0}, {14, 8, 9, 0}, {14, 8, 10, 0}, {14, 8, 11, 0}, {14, 8, 12, 0}, {14, 8, 13, 0}, {14, 8, 14, 0}, {13, 8, 15, 0}, {12, 8, 16, 0}, {11, 8, 17, 0}, {10, 7, 17, 0}, {9, 6, 17, 0}, {8, 5, 17, 0}, {7, 4, 17, 0}, {7, 4, 16, 0}, {7, 3, 15, 0}, {7, 3, 14, 0}, {7, 3, 13, 0}, {7, 3, 12, 0}, {7, 3, 11, 0}, {7, 3, 10, 0}, {6, 3, 10, 1}, {5, 3, 10, 0}}, {{16, 8, 7, 2, 2}, {17, 8, 8, 0}, {17, 8, 9, 0}, {17, 8, 10, 0}, {17, 8, 11, 0}, {16, 8, 12, 0}, {15, 8, 13, 0}, {14, 8, 14, 0}, {13, 8, 15, 0}, {12, 8, 16, 0}, {11, 8, 17, 0}, {10, 7, 17, 0}, {9, 6, 17, 0}, {8, 5, 17, 0}, {7, 4, 17, 0}, {7, 4, 16, 0}, {7, 3, 15, 0}, {7, 3, 14, 0}, {7, 3, 13, 0}, {7, 3, 12, 0}, {7, 3, 11, 0}, {7, 3, 10, 0}, {6, 3, 10, 1}, {5, 3, 10, 0}}, {{8, 8, 15, 2, 0}, {8, 9, 15, 0}, {9, 9, 15, 0}, {10, 9, 16, 0}, {11, 8, 16, 0}, {11, 8, 17, 0}, {10, 7, 17, 0}, {9, 6, 17, 0}, {8, 5, 17, 0}, {7, 4, 17, 0}, {7, 4, 16, 0}, {7, 3, 15, 0}, {7, 3, 14, 0}, {7, 3, 13, 0}, {7, 3, 12, 0}, {7, 3, 11, 0}, {7, 3, 10, 0}, {6, 3, 10, 1}, {5, 3, 10, 0}}, {{9, 8, 15, 2, 0}, {11, 8, 15, 0}, {11, 8, 16, 0}, {11, 8, 17, 0}, {10, 7, 17, 0}, {9, 6, 17, 0}, {8, 5, 17, 0}, {7, 4, 17, 0}, {7, 4, 16, 0}, {7, 3, 15, 0}, {7, 3, 14, 0}, {7, 3, 13, 0}, {7, 3, 12, 0}, {7, 3, 11, 0}, {7, 3, 10, 0}, {6, 3, 10, 1}, {5, 3, 10, 0}}, {{5, 3, 10, 0}, {5, 3, 9, 0}, {5, 3, 8, 0}, {5, 3, 7, 0}, {5, 3, 6, 0}, {5, 3, 5, 0}, {5, 3, 4, 0}, {5, 3, 3, 0}, {6, 3, 3, 0}, {7, 3, 3, 0}, {8, 3, 2, 0}, {8, 4, 1, 0}, {9, 4, 1, 0}, {10, 4, 1, 0}, {11, 4, 1, 0}, {12, 4, 1, 0}, {13, 4, 1, 0}, {14, 3, 2, 0}, {15, 3, 3, 0}, {16, 3, 3, 0}, {17, 3, 3, 0}, {18, 3, 3, 0}, {19, 3, 3, 0}, {20, 3, 4, 0}, {20, 3, 5, 0}, {21, 3, 6, 0}, {22, 3, 6, 0}, {22, 3, 7, 0}, {22, 2, 8, 0}, {23, 2, 9, 0}, {23, 2, 10, 0}, {23, 2, 11, 0}}}}, ["mg_villages/schems/trader_clay_1|WORKPLACE"] = {{{{7, 2, 5, 2, 0}, {7, 3, 4, 0}, {7, 2, 3, 0}, {6, 2, 3, 1}, {5, 2, 3, 0}}, {{5, 2, 3, 0}, {5, 2, 2, 0}, {5, 2, 1, 0}, {5, 1, 0, 0}}}}, ["mg_villages/schems/lumberjack_15"] = {{{{3, 3, 5, 2, 3}, {5, 3, 4, 0}, {5, 3, 3, 1}, {5, 3, 2, 0}}, {{3, 4, 5, 2, 3}, {4, 3, 4, 0}, {5, 3, 4, 0}, {5, 3, 3, 1}, {5, 3, 2, 0}}, {{5, 3, 2, 0}, {5, 2, 1, 0}, {5, 1, 0, 0}, {4, 1, 0, 0}}}}, ["mg_villages/schems/default_town_tower"] = {{{{3, 2, 7, 2, 3}, {4, 2, 6, 0}, {5, 2, 6, 0}, {5, 2, 5, 1}, {5, 2, 4, 0}}, {{5, 2, 4, 0}, {5, 1, 3, 0}, {5, 1, 2, 0}, {5, 1, 1, 0}, {5, 1, 0, 0}}}}, ["village_ruins/schems/watchtower"] = {{{{2, 1, 2, 2, 2}, {3, 1, 3, 0}, {3, 1, 4, 1}, {3, 1, 5, 0}}, {{3, 1, 5, 0}, {2, 1, 5, 0}, {1, 1, 5, 0}, {0, 1, 5, 0}, {0, 1, 4, 0}, {0, 1, 3, 0}, {0, 1, 2, 0}, {0, 1, 1, 0}, {0, 1, 0, 0}, {1, 1, 0, 0}, {2, 1, 0, 0}}}}, ["mg_villages/schems/charachoal_hut"] = {{{{6, 2, 4, 2, 1}, {4, 2, 4, 0}, {3, 2, 4, 1}, {2, 2, 4, 0}}, {{2, 2, 4, 0}, {1, 2, 4, 0}, {0, 2, 4, 0}}}}, ["mg_villages/schems/tower_1_0"] = {{{{4, 2, 4, 2, 1}, {2, 2, 3, 0}, {1, 2, 3, 1}, {0, 2, 3, 0}}, {}}}, ["mg_villages/schems/clay_pit_2|WORKPLACE"] = {{{{5, 2, 4, 2, 1}, {4, 3, 4, 0}, {3, 3, 3, 0}, {2, 3, 3, 0}, {1, 3, 3, 0}, {0, 3, 3, 0}}, {}}}, ["mg_villages/schems/logcabin4"] = {{{{2, 4, 2, 2, 2}, {3, 2, 4, 0}, {4, 2, 4, 0}, {4, 2, 3, 1}, {4, 2, 2, 0}}, {{3, 4, 2, 2, 2}, {3, 2, 4, 0}, {4, 2, 4, 0}, {4, 2, 3, 1}, {4, 2, 2, 0}}, {{4, 4, 2, 2, 2}, {3, 2, 4, 0}, {4, 2, 4, 0}, {4, 2, 3, 1}, {4, 2, 2, 0}}, {{4, 2, 2, 0}, {3, 2, 1, 0}, {3, 2, 0, 0}}}}, ["mg_villages/schems/lumberjack_hotel_1|WORKPLACE"] = {{{{14, 2, 14, 2, 1}, {15, 2, 13, 0}, {16, 2, 13, 1}, {16, 2, 12, 0}}, {{16, 2, 12, 0}, {16, 1, 11, 0}, {15, 1, 10, 0}, {14, 1, 9, 0}, {13, 1, 9, 0}, {12, 1, 9, 0}, {11, 1, 9, 0}, {10, 1, 9, 0}, {9, 1, 9, 0}, {8, 1, 9, 0}, {7, 1, 9, 0}, {6, 1, 9, 0}, {5, 1, 9, 0}, {4, 1, 9, 0}, {3, 1, 9, 0}, {2, 1, 9, 0}, {1, 1, 10, 0}, {0, 1, 10, 0}}}, {{{6, 2, 11, 2, 2}, {7, 2, 13, 0}, {6, 3, 13, 0}, {5, 2, 13, 0}, {4, 2, 13, 0}, {3, 2, 13, 1}, {2, 2, 13, 0}}, {{8, 2, 11, 2, 2}, {9, 2, 13, 0}, {8, 3, 13, 0}, {7, 2, 13, 0}, {6, 3, 13, 0}, {5, 2, 13, 0}, {4, 2, 13, 0}, {3, 2, 13, 1}, {2, 2, 13, 0}}, {{10, 2, 11, 2, 2}, {11, 2, 13, 0}, {10, 3, 13, 0}, {9, 2, 13, 0}, {8, 3, 13, 0}, {7, 2, 13, 0}, {6, 3, 13, 0}, {5, 2, 13, 0}, {4, 2, 13, 0}, {3, 2, 13, 1}, {2, 2, 13, 0}}, {{12, 2, 11, 2, 2}, {11, 2, 13, 0}, {10, 3, 13, 0}, {9, 2, 13, 0}, {8, 3, 13, 0}, {7, 2, 13, 0}, {6, 3, 13, 0}, {5, 2, 13, 0}, {4, 2, 13, 0}, {3, 2, 13, 1}, {2, 2, 13, 0}}, {{6, 3, 11, 2, 2}, {7, 2, 12, 0}, {7, 2, 13, 0}, {6, 3, 13, 0}, {5, 2, 13, 0}, {4, 2, 13, 0}, {3, 2, 13, 1}, {2, 2, 13, 0}}, {{8, 3, 11, 2, 2}, {9, 2, 12, 0}, {9, 2, 13, 0}, {8, 3, 13, 0}, {7, 2, 13, 0}, {6, 3, 13, 0}, {5, 2, 13, 0}, {4, 2, 13, 0}, {3, 2, 13, 1}, {2, 2, 13, 0}}, {{10, 3, 11, 2, 2}, {11, 2, 12, 0}, {11, 2, 13, 0}, {10, 3, 13, 0}, {9, 2, 13, 0}, {8, 3, 13, 0}, {7, 2, 13, 0}, {6, 3, 13, 0}, {5, 2, 13, 0}, {4, 2, 13, 0}, {3, 2, 13, 1}, {2, 2, 13, 0}}, {{12, 3, 11, 2, 2}, {11, 2, 12, 0}, {11, 2, 13, 0}, {10, 3, 13, 0}, {9, 2, 13, 0}, {8, 3, 13, 0}, {7, 2, 13, 0}, {6, 3, 13, 0}, {5, 2, 13, 0}, {4, 2, 13, 0}, {3, 2, 13, 1}, {2, 2, 13, 0}}, {{6, 2, 16, 2, 0}, {7, 2, 14, 0}, {6, 3, 14, 0}, {5, 2, 14, 0}, {4, 2, 13, 0}, {3, 2, 13, 1}, {2, 2, 13, 0}}, {{8, 2, 16, 2, 0}, {9, 2, 14, 0}, {8, 3, 14, 0}, {7, 2, 14, 0}, {6, 3, 14, 0}, {5, 2, 14, 0}, {4, 2, 13, 0}, {3, 2, 13, 1}, {2, 2, 13, 0}}, {{10, 2, 16, 2, 0}, {11, 2, 14, 0}, {10, 3, 14, 0}, {9, 2, 14, 0}, {8, 3, 14, 0}, {7, 2, 14, 0}, {6, 3, 14, 0}, {5, 2, 14, 0}, {4, 2, 13, 0}, {3, 2, 13, 1}, {2, 2, 13, 0}}, {{12, 2, 16, 2, 0}, {11, 2, 14, 0}, {10, 3, 14, 0}, {9, 2, 14, 0}, {8, 3, 14, 0}, {7, 2, 14, 0}, {6, 3, 14, 0}, {5, 2, 14, 0}, {4, 2, 13, 0}, {3, 2, 13, 1}, {2, 2, 13, 0}}, {{6, 3, 16, 2, 0}, {7, 2, 15, 0}, {7, 2, 14, 0}, {6, 3, 14, 0}, {5, 2, 14, 0}, {4, 2, 13, 0}, {3, 2, 13, 1}, {2, 2, 13, 0}}, {{8, 3, 16, 2, 0}, {9, 2, 15, 0}, {9, 2, 14, 0}, {8, 3, 14, 0}, {7, 2, 14, 0}, {6, 3, 14, 0}, {5, 2, 14, 0}, {4, 2, 13, 0}, {3, 2, 13, 1}, {2, 2, 13, 0}}, {{10, 3, 16, 2, 0}, {11, 2, 15, 0}, {11, 2, 14, 0}, {10, 3, 14, 0}, {9, 2, 14, 0}, {8, 3, 14, 0}, {7, 2, 14, 0}, {6, 3, 14, 0}, {5, 2, 14, 0}, {4, 2, 13, 0}, {3, 2, 13, 1}, {2, 2, 13, 0}}, {{12, 3, 16, 2, 0}, {11, 2, 15, 0}, {11, 2, 14, 0}, {10, 3, 14, 0}, {9, 2, 14, 0}, {8, 3, 14, 0}, {7, 2, 14, 0}, {6, 3, 14, 0}, {5, 2, 14, 0}, {4, 2, 13, 0}, {3, 2, 13, 1}, {2, 2, 13, 0}}, {{2, 2, 13, 0}, {1, 2, 12, 0}, {1, 1, 11, 0}, {0, 1, 10, 0}}}, {{{6, 2, 11, 2, 2}, {7, 2, 13, 0}, {6, 3, 13, 0}, {5, 2, 13, 0}, {4, 2, 14, 0}, {3, 2, 14, 1}, {2, 2, 14, 0}}, {{8, 2, 11, 2, 2}, {9, 2, 13, 0}, {8, 3, 13, 0}, {7, 2, 13, 0}, {6, 3, 13, 0}, {5, 2, 13, 0}, {4, 2, 14, 0}, {3, 2, 14, 1}, {2, 2, 14, 0}}, {{10, 2, 11, 2, 2}, {11, 2, 13, 0}, {10, 3, 13, 0}, {9, 2, 13, 0}, {8, 3, 13, 0}, {7, 2, 13, 0}, {6, 3, 13, 0}, {5, 2, 13, 0}, {4, 2, 14, 0}, {3, 2, 14, 1}, {2, 2, 14, 0}}, {{12, 2, 11, 2, 2}, {11, 2, 13, 0}, {10, 3, 13, 0}, {9, 2, 13, 0}, {8, 3, 13, 0}, {7, 2, 13, 0}, {6, 3, 13, 0}, {5, 2, 13, 0}, {4, 2, 14, 0}, {3, 2, 14, 1}, {2, 2, 14, 0}}, {{6, 3, 11, 2, 2}, {7, 2, 12, 0}, {7, 2, 13, 0}, {6, 3, 13, 0}, {5, 2, 13, 0}, {4, 2, 14, 0}, {3, 2, 14, 1}, {2, 2, 14, 0}}, {{8, 3, 11, 2, 2}, {9, 2, 12, 0}, {9, 2, 13, 0}, {8, 3, 13, 0}, {7, 2, 13, 0}, {6, 3, 13, 0}, {5, 2, 13, 0}, {4, 2, 14, 0}, {3, 2, 14, 1}, {2, 2, 14, 0}}, {{10, 3, 11, 2, 2}, {11, 2, 12, 0}, {11, 2, 13, 0}, {10, 3, 13, 0}, {9, 2, 13, 0}, {8, 3, 13, 0}, {7, 2, 13, 0}, {6, 3, 13, 0}, {5, 2, 13, 0}, {4, 2, 14, 0}, {3, 2, 14, 1}, {2, 2, 14, 0}}, {{12, 3, 11, 2, 2}, {11, 2, 12, 0}, {11, 2, 13, 0}, {10, 3, 13, 0}, {9, 2, 13, 0}, {8, 3, 13, 0}, {7, 2, 13, 0}, {6, 3, 13, 0}, {5, 2, 13, 0}, {4, 2, 14, 0}, {3, 2, 14, 1}, {2, 2, 14, 0}}, {{6, 2, 16, 2, 0}, {7, 2, 14, 0}, {6, 3, 14, 0}, {5, 2, 14, 0}, {4, 2, 14, 0}, {3, 2, 14, 1}, {2, 2, 14, 0}}, {{8, 2, 16, 2, 0}, {9, 2, 14, 0}, {8, 3, 14, 0}, {7, 2, 14, 0}, {6, 3, 14, 0}, {5, 2, 14, 0}, {4, 2, 14, 0}, {3, 2, 14, 1}, {2, 2, 14, 0}}, {{10, 2, 16, 2, 0}, {11, 2, 14, 0}, {10, 3, 14, 0}, {9, 2, 14, 0}, {8, 3, 14, 0}, {7, 2, 14, 0}, {6, 3, 14, 0}, {5, 2, 14, 0}, {4, 2, 14, 0}, {3, 2, 14, 1}, {2, 2, 14, 0}}, {{12, 2, 16, 2, 0}, {11, 2, 14, 0}, {10, 3, 14, 0}, {9, 2, 14, 0}, {8, 3, 14, 0}, {7, 2, 14, 0}, {6, 3, 14, 0}, {5, 2, 14, 0}, {4, 2, 14, 0}, {3, 2, 14, 1}, {2, 2, 14, 0}}, {{6, 3, 16, 2, 0}, {7, 2, 15, 0}, {7, 2, 14, 0}, {6, 3, 14, 0}, {5, 2, 14, 0}, {4, 2, 14, 0}, {3, 2, 14, 1}, {2, 2, 14, 0}}, {{8, 3, 16, 2, 0}, {9, 2, 15, 0}, {9, 2, 14, 0}, {8, 3, 14, 0}, {7, 2, 14, 0}, {6, 3, 14, 0}, {5, 2, 14, 0}, {4, 2, 14, 0}, {3, 2, 14, 1}, {2, 2, 14, 0}}, {{10, 3, 16, 2, 0}, {11, 2, 15, 0}, {11, 2, 14, 0}, {10, 3, 14, 0}, {9, 2, 14, 0}, {8, 3, 14, 0}, {7, 2, 14, 0}, {6, 3, 14, 0}, {5, 2, 14, 0}, {4, 2, 14, 0}, {3, 2, 14, 1}, {2, 2, 14, 0}}, {{12, 3, 16, 2, 0}, {11, 2, 15, 0}, {11, 2, 14, 0}, {10, 3, 14, 0}, {9, 2, 14, 0}, {8, 3, 14, 0}, {7, 2, 14, 0}, {6, 3, 14, 0}, {5, 2, 14, 0}, {4, 2, 14, 0}, {3, 2, 14, 1}, {2, 2, 14, 0}}, {{2, 2, 14, 0}, {1, 2, 13, 0}, {1, 2, 12, 0}, {1, 1, 11, 0}, {0, 1, 10, 0}}}, {{{6, 2, 11, 2, 2}, {7, 2, 13, 0}, {8, 3, 13, 0}, {9, 2, 13, 0}, {10, 3, 13, 0}, {11, 2, 13, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {16, 3, 13, 1}, {16, 2, 12, 0}}, {{8, 2, 11, 2, 2}, {9, 2, 13, 0}, {10, 3, 13, 0}, {11, 2, 13, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {16, 3, 13, 1}, {16, 2, 12, 0}}, {{10, 2, 11, 2, 2}, {11, 2, 13, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {16, 3, 13, 1}, {16, 2, 12, 0}}, {{12, 2, 11, 2, 2}, {11, 2, 13, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {16, 3, 13, 1}, {16, 2, 12, 0}}, {{6, 3, 11, 2, 2}, {7, 2, 12, 0}, {7, 2, 13, 0}, {8, 3, 13, 0}, {9, 2, 13, 0}, {10, 3, 13, 0}, {11, 2, 13, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {16, 3, 13, 1}, {16, 2, 12, 0}}, {{8, 3, 11, 2, 2}, {9, 2, 12, 0}, {9, 2, 13, 0}, {10, 3, 13, 0}, {11, 2, 13, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {16, 3, 13, 1}, {16, 2, 12, 0}}, {{10, 3, 11, 2, 2}, {11, 2, 12, 0}, {11, 2, 13, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {16, 3, 13, 1}, {16, 2, 12, 0}}, {{12, 3, 11, 2, 2}, {11, 2, 12, 0}, {11, 2, 13, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {16, 3, 13, 1}, {16, 2, 12, 0}}, {{6, 2, 16, 2, 0}, {7, 2, 14, 0}, {8, 3, 14, 0}, {9, 2, 14, 0}, {10, 3, 14, 0}, {11, 2, 14, 0}, {12, 2, 14, 0}, {13, 2, 14, 1}, {14, 2, 14, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {16, 3, 13, 1}, {16, 2, 12, 0}}, {{8, 2, 16, 2, 0}, {9, 2, 14, 0}, {10, 3, 14, 0}, {11, 2, 14, 0}, {12, 2, 14, 0}, {13, 2, 14, 1}, {14, 2, 14, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {16, 3, 13, 1}, {16, 2, 12, 0}}, {{10, 2, 16, 2, 0}, {11, 2, 14, 0}, {12, 2, 14, 0}, {13, 2, 14, 1}, {14, 2, 14, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {16, 3, 13, 1}, {16, 2, 12, 0}}, {{12, 2, 16, 2, 0}, {11, 2, 14, 0}, {12, 2, 14, 0}, {13, 2, 14, 1}, {14, 2, 14, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {16, 3, 13, 1}, {16, 2, 12, 0}}, {{6, 3, 16, 2, 0}, {7, 2, 15, 0}, {7, 2, 14, 0}, {8, 3, 14, 0}, {9, 2, 14, 0}, {10, 3, 14, 0}, {11, 2, 14, 0}, {12, 2, 14, 0}, {13, 2, 14, 1}, {14, 2, 14, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {16, 3, 13, 1}, {16, 2, 12, 0}}, {{8, 3, 16, 2, 0}, {9, 2, 15, 0}, {9, 2, 14, 0}, {10, 3, 14, 0}, {11, 2, 14, 0}, {12, 2, 14, 0}, {13, 2, 14, 1}, {14, 2, 14, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {16, 3, 13, 1}, {16, 2, 12, 0}}, {{10, 3, 16, 2, 0}, {11, 2, 15, 0}, {11, 2, 14, 0}, {12, 2, 14, 0}, {13, 2, 14, 1}, {14, 2, 14, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {16, 3, 13, 1}, {16, 2, 12, 0}}, {{12, 3, 16, 2, 0}, {11, 2, 15, 0}, {11, 2, 14, 0}, {12, 2, 14, 0}, {13, 2, 14, 1}, {14, 2, 14, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {16, 3, 13, 1}, {16, 2, 12, 0}}, {{16, 2, 12, 0}, {16, 1, 11, 0}, {15, 1, 10, 0}, {14, 1, 9, 0}, {13, 1, 9, 0}, {12, 1, 9, 0}, {11, 1, 9, 0}, {10, 1, 9, 0}, {9, 1, 9, 0}, {8, 1, 9, 0}, {7, 1, 9, 0}, {6, 1, 9, 0}, {5, 1, 9, 0}, {4, 1, 9, 0}, {3, 1, 9, 0}, {2, 1, 9, 0}, {1, 1, 10, 0}, {0, 1, 10, 0}}}, {{{6, 2, 11, 2, 2}, {7, 2, 13, 0}, {8, 3, 13, 0}, {9, 2, 13, 0}, {10, 3, 13, 0}, {11, 2, 13, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {17, 1, 14, 0}}, {{8, 2, 11, 2, 2}, {9, 2, 13, 0}, {10, 3, 13, 0}, {11, 2, 13, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {17, 1, 14, 0}}, {{10, 2, 11, 2, 2}, {11, 2, 13, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {17, 1, 14, 0}}, {{12, 2, 11, 2, 2}, {11, 2, 13, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {17, 1, 14, 0}}, {{6, 3, 11, 2, 2}, {7, 2, 12, 0}, {7, 2, 13, 0}, {8, 3, 13, 0}, {9, 2, 13, 0}, {10, 3, 13, 0}, {11, 2, 13, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {17, 1, 14, 0}}, {{8, 3, 11, 2, 2}, {9, 2, 12, 0}, {9, 2, 13, 0}, {10, 3, 13, 0}, {11, 2, 13, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {17, 1, 14, 0}}, {{10, 3, 11, 2, 2}, {11, 2, 12, 0}, {11, 2, 13, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {17, 1, 14, 0}}, {{12, 3, 11, 2, 2}, {11, 2, 12, 0}, {11, 2, 13, 0}, {12, 2, 13, 0}, {13, 2, 13, 1}, {14, 2, 13, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {17, 1, 14, 0}}, {{6, 2, 16, 2, 0}, {7, 2, 14, 0}, {8, 3, 14, 0}, {9, 2, 14, 0}, {10, 3, 14, 0}, {11, 2, 14, 0}, {12, 2, 14, 0}, {13, 2, 14, 1}, {14, 2, 14, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {17, 1, 14, 0}}, {{8, 2, 16, 2, 0}, {9, 2, 14, 0}, {10, 3, 14, 0}, {11, 2, 14, 0}, {12, 2, 14, 0}, {13, 2, 14, 1}, {14, 2, 14, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {17, 1, 14, 0}}, {{10, 2, 16, 2, 0}, {11, 2, 14, 0}, {12, 2, 14, 0}, {13, 2, 14, 1}, {14, 2, 14, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {17, 1, 14, 0}}, {{12, 2, 16, 2, 0}, {11, 2, 14, 0}, {12, 2, 14, 0}, {13, 2, 14, 1}, {14, 2, 14, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {17, 1, 14, 0}}, {{6, 3, 16, 2, 0}, {7, 2, 15, 0}, {7, 2, 14, 0}, {8, 3, 14, 0}, {9, 2, 14, 0}, {10, 3, 14, 0}, {11, 2, 14, 0}, {12, 2, 14, 0}, {13, 2, 14, 1}, {14, 2, 14, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {17, 1, 14, 0}}, {{8, 3, 16, 2, 0}, {9, 2, 15, 0}, {9, 2, 14, 0}, {10, 3, 14, 0}, {11, 2, 14, 0}, {12, 2, 14, 0}, {13, 2, 14, 1}, {14, 2, 14, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {17, 1, 14, 0}}, {{10, 3, 16, 2, 0}, {11, 2, 15, 0}, {11, 2, 14, 0}, {12, 2, 14, 0}, {13, 2, 14, 1}, {14, 2, 14, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {17, 1, 14, 0}}, {{12, 3, 16, 2, 0}, {11, 2, 15, 0}, {11, 2, 14, 0}, {12, 2, 14, 0}, {13, 2, 14, 1}, {14, 2, 14, 0}, {15, 2, 14, 0}, {16, 2, 14, 1}, {17, 1, 14, 0}}, {{17, 1, 14, 0}, {17, 1, 13, 0}, {17, 1, 12, 0}, {17, 1, 11, 0}, {16, 1, 10, 0}, {15, 1, 10, 0}, {14, 1, 9, 0}, {13, 1, 9, 0}, {12, 1, 9, 0}, {11, 1, 9, 0}, {10, 1, 9, 0}, {9, 1, 9, 0}, {8, 1, 9, 0}, {7, 1, 9, 0}, {6, 1, 9, 0}, {5, 1, 9, 0}, {4, 1, 9, 0}, {3, 1, 9, 0}, {2, 1, 9, 0}, {1, 1, 10, 0}, {0, 1, 10, 0}}}}, ["mg_villages/schems/tree_place_1|WORKPLACE"] = {{{{2, 1, 2, 2, 2}, {1, 1, 2, 0}, {0, 1, 3, 0}, {0, 1, 4, 0}}, {}}}, ["mg_villages/schems/logcabin2"] = {{{{2, 2, 3, 2, 0}, {4, 2, 2, 0}, {4, 2, 1, 1}, {4, 2, 0, 0}}, {{2, 3, 3, 2, 0}, {3, 2, 2, 0}, {4, 2, 2, 0}, {4, 2, 1, 1}, {4, 2, 0, 0}}, {{4, 2, 0, 0}, {3, 2, 0, 0}}}}, ["mg_villages/schems/trader_clay_5|WORKPLACE"] = {{{{5, 2, 9, 2, 0}, {5, 2, 8, 0}, {5, 2, 7, 0}, {5, 2, 6, 1}, {5, 2, 5, 0}}, {{5, 2, 5, 0}, {5, 1, 4, 0}, {5, 1, 3, 0}, {5, 1, 2, 0}, {5, 1, 1, 0}, {5, 1, 0, 0}}}, {{{3, 5, 9, 2, 3}, {4, 5, 8, 0}, {4, 5, 7, 0}, {4, 5, 6, 1}, {4, 5, 5, 0}}, {{6, 5, 9, 2, 1}, {5, 5, 8, 0}, {4, 5, 8, 0}, {4, 5, 7, 0}, {4, 5, 6, 1}, {4, 5, 5, 0}}, {{7, 5, 9, 2, 0}, {5, 5, 8, 0}, {4, 5, 8, 0}, {4, 5, 7, 0}, {4, 5, 6, 1}, {4, 5, 5, 0}}, {{4, 5, 5, 0}, {3, 4, 4, 0}, {3, 3, 3, 0}, {3, 2, 2, 0}, {3, 1, 1, 0}, {4, 1, 0, 0}, {5, 1, 0, 0}}}}, ["mg_villages/schems/logcabin9"] = {{{{3, 2, 5, 2, 0}, {4, 2, 4, 0}, {4, 2, 3, 0}, {4, 2, 2, 1}, {4, 2, 1, 0}}, {{4, 2, 1, 0}, {5, 2, 0, 0}, {6, 2, 0, 0}}}}, ["mg_villages/schems/trader_clay_3|WORKPLACE"] = {{{{4, 2, 11, 2, 0}, {4, 2, 10, 0}, {5, 2, 10, 0}, {5, 2, 9, 0}, {5, 2, 8, 1}, {5, 2, 7, 0}}, {{5, 2, 7, 0}, {5, 1, 6, 0}, {5, 1, 5, 0}, {5, 1, 4, 0}, {5, 1, 3, 0}, {5, 1, 2, 0}, {5, 1, 1, 0}, {5, 1, 0, 0}}}}, ["mg_villages/schems/default_town_tower|WORKPLACE"] = {{{{5, 13, 4, 2, 0}, {4, 13, 5, 0}, {4, 13, 6, 0}, {4, 13, 7, 0}, {5, 13, 7, 0}, {6, 12, 7, 0}, {6, 11, 6, 0}, {5, 10, 6, 0}, {5, 9, 7, 0}, {6, 8, 7, 0}, {6, 7, 6, 0}, {5, 6, 6, 0}, {5, 5, 7, 0}, {6, 4, 7, 0}, {6, 3, 6, 0}, {5, 2, 6, 0}, {5, 2, 5, 1}, {5, 2, 4, 0}}, {{5, 2, 4, 0}, {5, 1, 3, 0}, {5, 1, 2, 0}, {5, 1, 1, 0}, {5, 1, 0, 0}}}}, ["mg_villages/schems/clay_pit_3|WORKPLACE"] = {{{{8, 7, 2, 2, 2}, {7, 8, 2, 0}, {6, 8, 3, 0}, {5, 8, 4, 0}, {4, 8, 5, 0}, {3, 8, 6, 0}, {2, 8, 6, 0}, {1, 8, 6, 0}, {0, 8, 6, 0}}, {}}}, ["mg_villages/schems/farm_full_4"] = {{{{5, 5, 10, 2, 2}, {4, 5, 12, 0}, {4, 5, 13, 0}, {4, 5, 14, 1}, {4, 5, 15, 0}, {4, 5, 16, 0}, {5, 5, 16, 0}, {6, 5, 16, 0}, {7, 5, 16, 0}, {7, 4, 15, 0}, {6, 3, 15, 0}, {5, 2, 15, 0}, {5, 2, 14, 0}, {4, 2, 14, 1}, {3, 2, 14, 0}}, {{7, 5, 10, 2, 2}, {8, 5, 12, 0}, {8, 5, 13, 0}, {8, 5, 14, 1}, {8, 5, 15, 0}, {7, 4, 15, 0}, {6, 3, 15, 0}, {5, 2, 15, 0}, {5, 2, 14, 0}, {4, 2, 14, 1}, {3, 2, 14, 0}}, {{12, 5, 11, 2, 2}, {13, 5, 12, 0}, {13, 5, 13, 1}, {13, 5, 14, 0}, {12, 5, 14, 0}, {11, 5, 14, 1}, {10, 5, 14, 0}, {9, 5, 14, 0}, {8, 5, 15, 0}, {7, 4, 15, 0}, {6, 3, 15, 0}, {5, 2, 15, 0}, {5, 2, 14, 0}, {4, 2, 14, 1}, {3, 2, 14, 0}}, {{15, 2, 12, 2, 1}, {13, 2, 11, 0}, {12, 2, 11, 1}, {12, 2, 10, 1}, {12, 2, 9, 0}, {12, 2, 8, 0}, {11, 2, 8, 0}, {10, 2, 8, 1}, {9, 2, 8, 0}}, {{5, 5, 12, 2, 2}, {4, 5, 13, 0}, {4, 5, 14, 1}, {4, 5, 15, 0}, {4, 5, 16, 0}, {5, 5, 16, 0}, {6, 5, 16, 0}, {7, 5, 16, 0}, {7, 4, 15, 0}, {6, 3, 15, 0}, {5, 2, 15, 0}, {5, 2, 14, 0}, {4, 2, 14, 1}, {3, 2, 14, 0}}, {{7, 5, 12, 2, 2}, {8, 5, 13, 0}, {8, 5, 14, 1}, {8, 5, 15, 0}, {7, 4, 15, 0}, {6, 3, 15, 0}, {5, 2, 15, 0}, {5, 2, 14, 0}, {4, 2, 14, 1}, {3, 2, 14, 0}}, {{16, 5, 12, 2, 1}, {14, 5, 11, 0}, {13, 5, 11, 0}, {13, 5, 12, 0}, {13, 5, 13, 1}, {13, 5, 14, 0}, {12, 5, 14, 0}, {11, 5, 14, 1}, {10, 5, 14, 0}, {9, 5, 14, 0}, {8, 5, 15, 0}, {7, 4, 15, 0}, {6, 3, 15, 0}, {5, 2, 15, 0}, {5, 2, 14, 0}, {4, 2, 14, 1}, {3, 2, 14, 0}}, {{15, 2, 13, 2, 1}, {13, 2, 12, 0}, {13, 2, 11, 0}, {12, 2, 11, 1}, {12, 2, 10, 1}, {12, 2, 9, 0}, {12, 2, 8, 0}, {11, 2, 8, 0}, {10, 2, 8, 1}, {9, 2, 8, 0}}, {{3, 2, 14, 0}, {2, 2, 13, 0}, {1, 2, 12, 0}, {0, 2, 11, 0}, {0, 2, 10, 0}, {0, 2, 9, 0}}}, {{{5, 5, 10, 2, 2}, {4, 5, 12, 0}, {4, 5, 13, 0}, {4, 5, 14, 1}, {4, 5, 15, 0}, {4, 5, 16, 0}, {5, 5, 16, 0}, {6, 5, 16, 0}, {7, 5, 16, 0}, {7, 4, 15, 0}, {6, 3, 15, 0}, {5, 2, 15, 0}, {5, 2, 14, 0}, {6, 2, 13, 0}, {7, 2, 13, 0}, {7, 2, 12, 0}, {7, 2, 11, 0}, {8, 2, 11, 0}, {9, 2, 11, 0}, {10, 2, 11, 1}, {11, 2, 11, 0}, {12, 2, 11, 1}, {12, 2, 10, 1}, {12, 2, 9, 0}, {12, 2, 8, 0}, {11, 2, 8, 0}, {10, 2, 8, 1}, {9, 2, 8, 0}}, {{7, 5, 10, 2, 2}, {8, 5, 12, 0}, {8, 5, 13, 0}, {8, 5, 14, 1}, {8, 5, 15, 0}, {7, 4, 15, 0}, {6, 3, 15, 0}, {5, 2, 15, 0}, {5, 2, 14, 0}, {6, 2, 13, 0}, {7, 2, 13, 0}, {7, 2, 12, 0}, {7, 2, 11, 0}, {8, 2, 11, 0}, {9, 2, 11, 0}, {10, 2, 11, 1}, {11, 2, 11, 0}, {12, 2, 11, 1}, {12, 2, 10, 1}, {12, 2, 9, 0}, {12, 2, 8, 0}, {11, 2, 8, 0}, {10, 2, 8, 1}, {9, 2, 8, 0}}, {{12, 5, 11, 2, 2}, {13, 5, 12, 0}, {13, 5, 13, 1}, {13, 5, 14, 0}, {12, 5, 14, 0}, {11, 5, 14, 1}, {10, 5, 14, 0}, {9, 5, 14, 0}, {8, 5, 15, 0}, {7, 4, 15, 0}, {6, 3, 15, 0}, {5, 2, 15, 0}, {5, 2, 14, 0}, {6, 2, 13, 0}, {7, 2, 13, 0}, {7, 2, 12, 0}, {7, 2, 11, 0}, {8, 2, 11, 0}, {9, 2, 11, 0}, {10, 2, 11, 1}, {11, 2, 11, 0}, {12, 2, 11, 1}, {12, 2, 10, 1}, {12, 2, 9, 0}, {12, 2, 8, 0}, {11, 2, 8, 0}, {10, 2, 8, 1}, {9, 2, 8, 0}}, {{15, 2, 12, 2, 1}, {13, 2, 11, 0}, {12, 2, 11, 1}, {12, 2, 10, 1}, {12, 2, 9, 0}, {12, 2, 8, 0}, {11, 2, 8, 0}, {10, 2, 8, 1}, {9, 2, 8, 0}}, {{5, 5, 12, 2, 2}, {4, 5, 13, 0}, {4, 5, 14, 1}, {4, 5, 15, 0}, {4, 5, 16, 0}, {5, 5, 16, 0}, {6, 5, 16, 0}, {7, 5, 16, 0}, {7, 4, 15, 0}, {6, 3, 15, 0}, {5, 2, 15, 0}, {5, 2, 14, 0}, {6, 2, 13, 0}, {7, 2, 13, 0}, {7, 2, 12, 0}, {7, 2, 11, 0}, {8, 2, 11, 0}, {9, 2, 11, 0}, {10, 2, 11, 1}, {11, 2, 11, 0}, {12, 2, 11, 1}, {12, 2, 10, 1}, {12, 2, 9, 0}, {12, 2, 8, 0}, {11, 2, 8, 0}, {10, 2, 8, 1}, {9, 2, 8, 0}}, {{7, 5, 12, 2, 2}, {8, 5, 13, 0}, {8, 5, 14, 1}, {8, 5, 15, 0}, {7, 4, 15, 0}, {6, 3, 15, 0}, {5, 2, 15, 0}, {5, 2, 14, 0}, {6, 2, 13, 0}, {7, 2, 13, 0}, {7, 2, 12, 0}, {7, 2, 11, 0}, {8, 2, 11, 0}, {9, 2, 11, 0}, {10, 2, 11, 1}, {11, 2, 11, 0}, {12, 2, 11, 1}, {12, 2, 10, 1}, {12, 2, 9, 0}, {12, 2, 8, 0}, {11, 2, 8, 0}, {10, 2, 8, 1}, {9, 2, 8, 0}}, {{16, 5, 12, 2, 1}, {14, 5, 11, 0}, {13, 5, 11, 0}, {13, 5, 12, 0}, {13, 5, 13, 1}, {13, 5, 14, 0}, {12, 5, 14, 0}, {11, 5, 14, 1}, {10, 5, 14, 0}, {9, 5, 14, 0}, {8, 5, 15, 0}, {7, 4, 15, 0}, {6, 3, 15, 0}, {5, 2, 15, 0}, {5, 2, 14, 0}, {6, 2, 13, 0}, {7, 2, 13, 0}, {7, 2, 12, 0}, {7, 2, 11, 0}, {8, 2, 11, 0}, {9, 2, 11, 0}, {10, 2, 11, 1}, {11, 2, 11, 0}, {12, 2, 11, 1}, {12, 2, 10, 1}, {12, 2, 9, 0}, {12, 2, 8, 0}, {11, 2, 8, 0}, {10, 2, 8, 1}, {9, 2, 8, 0}}, {{15, 2, 13, 2, 1}, {13, 2, 12, 0}, {13, 2, 11, 0}, {12, 2, 11, 1}, {12, 2, 10, 1}, {12, 2, 9, 0}, {12, 2, 8, 0}, {11, 2, 8, 0}, {10, 2, 8, 1}, {9, 2, 8, 0}}, {{9, 2, 8, 0}, {8, 2, 7, 0}, {7, 2, 6, 0}, {6, 2, 6, 0}, {5, 2, 6, 0}, {4, 2, 6, 0}, {3, 2, 7, 0}, {2, 2, 8, 0}, {1, 2, 9, 0}, {0, 2, 9, 0}}}}, ["mg_villages/schems/logcabin7"] = {{{{4, 4, 4, 2, 3}, {6, 2, 5, 0}, {5, 2, 5, 0}, {5, 2, 4, 0}, {5, 2, 3, 1}, {5, 2, 2, 0}}, {{4, 4, 5, 2, 3}, {6, 2, 5, 0}, {5, 2, 5, 0}, {5, 2, 4, 0}, {5, 2, 3, 1}, {5, 2, 2, 0}}, {{4, 4, 6, 2, 3}, {6, 2, 5, 0}, {5, 2, 5, 0}, {5, 2, 4, 0}, {5, 2, 3, 1}, {5, 2, 2, 0}}, {{5, 2, 2, 0}, {4, 2, 2, 0}, {4, 2, 1, 0}, {4, 2, 0, 0}}}}, ["mg_villages/schems/taverne_4|WORKPLACE"] = {{{{8, 2, 7, 2, 1}, {7, 2, 7, 1}, {6, 2, 7, 0}, {5, 2, 6, 0}, {4, 2, 6, 1}, {3, 2, 6, 0}}, {{3, 2, 6, 0}, {2, 2, 6, 0}, {1, 2, 6, 0}, {0, 2, 6, 0}}}, {{{5, 2, 3, 2, 3}, {7, 2, 4, 0}, {8, 2, 4, 0}, {8, 2, 5, 1}, {8, 2, 6, 0}, {8, 2, 7, 0}, {7, 2, 7, 1}, {6, 2, 7, 0}, {5, 2, 7, 0}, {4, 2, 7, 1}, {3, 2, 7, 0}}, {{3, 2, 7, 0}, {2, 2, 6, 0}, {1, 2, 6, 0}, {0, 2, 6, 0}}}}, ["mg_villages/schems/lumberjack_14"] = {{{{2, 2, 7, 2, 0}, {3, 2, 5, 0}, {3, 2, 4, 0}, {4, 2, 4, 0}, {4, 2, 3, 1}, {4, 2, 2, 0}}, {{4, 2, 7, 2, 0}, {3, 2, 5, 0}, {3, 2, 4, 0}, {4, 2, 4, 0}, {4, 2, 3, 1}, {4, 2, 2, 0}}, {{4, 2, 2, 0}, {4, 1, 1, 0}, {3, 1, 0, 0}}}}, ["mg_villages/schems/lumberjack_1"] = {{{{3, 3, 6, 2, 0}, {4, 3, 5, 0}, {4, 3, 4, 1}, {4, 3, 3, 0}}, {{6, 3, 8, 2, 0}, {4, 3, 7, 0}, {4, 3, 6, 0}, {4, 3, 5, 0}, {4, 3, 4, 1}, {4, 3, 3, 0}}, {{5, 6, 8, 2, 0}, {4, 6, 6, 0}, {5, 6, 6, 0}, {5, 3, 5, 0}, {4, 3, 5, 0}, {4, 3, 4, 1}, {4, 3, 3, 0}}, {{4, 3, 3, 0}, {4, 2, 2, 0}, {4, 2, 1, 0}, {4, 1, 0, 0}}}}, ["mg_villages/schems/baking_house_1|WORKPLACE"] = {{{{4, 2, 7, 2, 3}, {5, 2, 7, 0}, {5, 2, 6, 0}, {5, 2, 5, 0}, {5, 2, 4, 0}, {5, 2, 3, 0}, {5, 2, 2, 1}, {5, 2, 1, 0}}, {{5, 2, 1, 0}, {4, 2, 0, 0}, {3, 2, 0, 0}, {2, 2, 0, 0}, {1, 2, 1, 0}, {0, 2, 2, 0}, {0, 2, 3, 0}, {0, 2, 4, 0}, {0, 2, 5, 0}, {0, 2, 6, 0}}}}, ["mg_villages/schems/forge_1|WORKPLACE"] = {{{{9, 2, 6, 2, 0}, {8, 2, 6, 0}, {7, 2, 6, 0}, {6, 2, 5, 0}, {5, 2, 5, 1}, {4, 2, 5, 0}}, {{4, 2, 5, 0}, {3, 2, 5, 0}, {2, 2, 5, 0}, {1, 2, 5, 0}, {0, 2, 5, 0}}}}, ["mg_villages/schems/trader_clay_4"] = {{{{4, 5, 12, 2, 0}, {3, 5, 10, 0}, {3, 5, 9, 0}, {4, 5, 9, 0}, {5, 5, 9, 0}, {6, 5, 9, 0}, {6, 5, 10, 0}, {7, 4, 10, 0}, {7, 3, 9, 0}, {7, 2, 8, 0}, {6, 2, 8, 0}, {6, 2, 7, 1}, {6, 2, 6, 0}}, {{5, 5, 12, 2, 0}, {7, 5, 11, 0}, {7, 4, 10, 0}, {7, 3, 9, 0}, {7, 2, 8, 0}, {6, 2, 8, 0}, {6, 2, 7, 1}, {6, 2, 6, 0}}, {{6, 2, 6, 0}, {6, 1, 5, 0}, {5, 1, 4, 0}, {5, 1, 3, 0}, {5, 1, 2, 0}, {5, 1, 1, 0}, {5, 1, 0, 0}}}}, ["mg_villages/schems/farm_tiny_2"] = {{{{8, 2, 5, 2, 1}, {6, 2, 7, 0}, {6, 2, 8, 0}, {5, 2, 8, 1}, {4, 2, 8, 0}}, {{6, 5, 6, 2, 0}, {8, 5, 5, 0}, {9, 5, 5, 0}, {9, 5, 6, 1}, {9, 5, 7, 0}, {8, 4, 7, 0}, {7, 3, 7, 0}, {6, 2, 7, 0}, {6, 2, 8, 0}, {5, 2, 8, 1}, {4, 2, 8, 0}}, {{10, 5, 6, 2, 0}, {9, 5, 7, 0}, {8, 4, 7, 0}, {7, 3, 7, 0}, {6, 2, 7, 0}, {6, 2, 8, 0}, {5, 2, 8, 1}, {4, 2, 8, 0}}, {{6, 5, 10, 2, 3}, {9, 5, 9, 0}, {9, 5, 8, 1}, {9, 5, 7, 0}, {8, 4, 7, 0}, {7, 3, 7, 0}, {6, 2, 7, 0}, {6, 2, 8, 0}, {5, 2, 8, 1}, {4, 2, 8, 0}}, {{6, 5, 11, 2, 3}, {8, 5, 10, 0}, {9, 5, 9, 0}, {9, 5, 8, 1}, {9, 5, 7, 0}, {8, 4, 7, 0}, {7, 3, 7, 0}, {6, 2, 7, 0}, {6, 2, 8, 0}, {5, 2, 8, 1}, {4, 2, 8, 0}}, {{10, 2, 12, 2, 0}, {8, 2, 10, 0}, {7, 2, 10, 0}, {7, 2, 9, 1}, {7, 2, 8, 0}, {6, 2, 8, 0}, {5, 2, 8, 1}, {4, 2, 8, 0}}, {{4, 2, 8, 0}, {3, 2, 8, 0}, {2, 2, 8, 0}, {1, 2, 8, 0}, {0, 2, 8, 0}}}}, ["mg_villages/schems/lumberjack_stable|WORKPLACE"] = {{{{8, 2, 6, 2, 2}, {8, 2, 7, 0}, {8, 2, 8, 0}, {8, 2, 9, 0}, {8, 2, 10, 0}, {8, 2, 11, 1}, {8, 2, 12, 0}}, {{8, 2, 12, 0}, {8, 2, 13, 0}, {8, 2, 14, 0}, {7, 2, 15, 0}, {7, 2, 16, 0}, {7, 2, 17, 0}}}}, ["village_gambit/schems/gambit_forge_1_2_270|WORKPLACE"] = {{{{3, 3, 2, 2, 2}, {3, 3, 3, 0}, {3, 3, 4, 0}, {3, 3, 5, 0}, {3, 3, 6, 0}, {3, 3, 7, 1}, {4, 3, 8, 0}}, {{4, 3, 8, 0}, {5, 3, 8, 0}}}}, ["mg_villages/schems/logcabinpub2|WORKPLACE"] = {{{{11, 2, 9, 2, 1}, {11, 2, 10, 0}, {10, 2, 10, 0}, {9, 2, 10, 0}, {9, 2, 9, 0}, {9, 2, 8, 0}, {9, 2, 7, 0}, {9, 2, 6, 0}, {9, 2, 5, 1}, {9, 2, 4, 0}}, {{9, 2, 4, 0}, {8, 2, 3, 0}, {8, 2, 2, 0}, {8, 2, 1, 0}, {7, 2, 0, 0}}}}, ["village_towntest/schems/towntest_cornernote_fortress_4_0"] = {{{{37, 6, 6, 2, 2}, {38, 6, 7, 0}, {38, 6, 8, 0}, {37, 6, 8, 0}, {37, 6, 9, 1}, {37, 6, 10, 0}, {36, 6, 11, 0}, {35, 6, 12, 0}, {34, 6, 12, 0}, {33, 6, 12, 0}, {32, 6, 12, 0}, {31, 6, 12, 0}, {30, 6, 12, 0}, {29, 6, 12, 0}, {28, 6, 12, 0}, {27, 6, 12, 0}, {26, 6, 12, 0}, {25, 6, 12, 0}, {24, 6, 12, 0}, {23, 6, 12, 0}, {22, 6, 13, 0}, {21, 6, 14, 0}, {20, 6, 15, 0}, {19, 6, 16, 0}, {18, 6, 16, 1}, {17, 5, 16, 0}}, {{17, 6, 8, 2, 3}, {18, 6, 7, 0}, {19, 6, 7, 0}, {19, 6, 8, 0}, {19, 6, 9, 1}, {19, 6, 10, 0}, {19, 6, 11, 0}, {19, 6, 12, 0}, {19, 6, 13, 0}, {19, 6, 14, 0}, {19, 6, 15, 0}, {19, 6, 16, 0}, {18, 6, 16, 1}, {17, 5, 16, 0}}, {{26, 6, 14, 2, 1}, {25, 6, 16, 0}, {24, 6, 16, 1}, {23, 6, 16, 0}, {22, 6, 16, 0}, {21, 6, 16, 0}, {20, 6, 16, 0}, {19, 6, 16, 0}, {18, 6, 16, 1}, {17, 5, 16, 0}}, {{26, 8, 14, 2, 1}, {28, 7, 14, 0}, {28, 6, 15, 0}, {27, 6, 16, 0}, {26, 6, 16, 0}, {25, 6, 16, 0}, {24, 6, 16, 1}, {23, 6, 16, 0}, {22, 6, 16, 0}, {21, 6, 16, 0}, {20, 6, 16, 0}, {19, 6, 16, 0}, {18, 6, 16, 1}, {17, 5, 16, 0}}, {{39, 6, 24, 2, 1}, {38, 6, 25, 0}, {37, 6, 25, 0}, {37, 6, 24, 0}, {37, 6, 23, 1}, {37, 6, 22, 0}, {36, 6, 21, 0}, {35, 6, 20, 0}, {34, 6, 20, 0}, {33, 6, 20, 0}, {32, 6, 20, 0}, {31, 6, 20, 0}, {30, 6, 20, 0}, {29, 6, 20, 0}, {28, 6, 20, 0}, {27, 6, 20, 0}, {26, 6, 20, 0}, {25, 6, 20, 0}, {24, 6, 20, 0}, {23, 6, 20, 0}, {22, 6, 19, 0}, {21, 6, 18, 0}, {20, 6, 17, 0}, {19, 6, 16, 0}, {18, 6, 16, 1}, {17, 5, 16, 0}}, {{19, 6, 26, 2, 0}, {18, 6, 25, 0}, {18, 6, 24, 0}, {19, 6, 24, 0}, {19, 6, 23, 1}, {19, 6, 22, 0}, {19, 6, 21, 0}, {19, 6, 20, 0}, {19, 6, 19, 0}, {19, 6, 18, 0}, {19, 6, 17, 0}, {18, 6, 16, 1}, {17, 5, 16, 0}}, {{17, 5, 16, 0}, {16, 5, 16, 0}, {15, 5, 16, 0}, {14, 5, 16, 0}, {13, 5, 16, 0}, {12, 5, 16, 0}, {11, 5, 16, 0}, {10, 5, 16, 0}, {9, 5, 16, 0}, {8, 5, 16, 0}, {7, 5, 16, 0}, {6, 5, 16, 0}, {5, 5, 16, 0}, {4, 5, 16, 0}, {3, 5, 16, 0}, {2, 5, 16, 0}, {1, 5, 16, 0}, {0, 5, 16, 0}}}, {{{37, 6, 6, 2, 2}, {38, 6, 7, 0}, {38, 6, 8, 0}, {37, 6, 8, 0}, {37, 6, 9, 1}, {37, 6, 10, 0}, {36, 6, 11, 0}, {35, 6, 12, 0}, {34, 6, 12, 0}, {33, 6, 12, 0}, {32, 6, 12, 0}, {31, 6, 12, 0}, {30, 6, 12, 0}, {29, 6, 12, 0}, {28, 6, 12, 0}, {27, 6, 12, 0}, {26, 6, 12, 0}, {25, 6, 12, 0}, {24, 6, 12, 0}, {23, 6, 12, 0}, {22, 6, 13, 0}, {21, 6, 14, 0}, {20, 6, 15, 0}, {19, 6, 16, 0}, {19, 6, 17, 0}, {18, 6, 17, 1}, {17, 5, 17, 0}}, {{17, 6, 8, 2, 3}, {18, 6, 7, 0}, {19, 6, 7, 0}, {19, 6, 8, 0}, {19, 6, 9, 1}, {19, 6, 10, 0}, {19, 6, 11, 0}, {19, 6, 12, 0}, {19, 6, 13, 0}, {19, 6, 14, 0}, {19, 6, 15, 0}, {19, 6, 16, 0}, {19, 6, 17, 0}, {18, 6, 17, 1}, {17, 5, 17, 0}}, {{26, 6, 14, 2, 1}, {25, 6, 16, 0}, {24, 6, 16, 1}, {23, 6, 16, 0}, {22, 6, 16, 0}, {21, 6, 16, 0}, {20, 6, 16, 0}, {19, 6, 17, 0}, {18, 6, 17, 1}, {17, 5, 17, 0}}, {{26, 8, 14, 2, 1}, {28, 7, 14, 0}, {28, 6, 15, 0}, {27, 6, 16, 0}, {26, 6, 16, 0}, {25, 6, 16, 0}, {24, 6, 16, 1}, {23, 6, 16, 0}, {22, 6, 16, 0}, {21, 6, 16, 0}, {20, 6, 16, 0}, {19, 6, 17, 0}, {18, 6, 17, 1}, {17, 5, 17, 0}}, {{39, 6, 24, 2, 1}, {38, 6, 25, 0}, {37, 6, 25, 0}, {37, 6, 24, 0}, {37, 6, 23, 1}, {37, 6, 22, 0}, {36, 6, 21, 0}, {35, 6, 20, 0}, {34, 6, 20, 0}, {33, 6, 20, 0}, {32, 6, 20, 0}, {31, 6, 20, 0}, {30, 6, 20, 0}, {29, 6, 20, 0}, {28, 6, 20, 0}, {27, 6, 20, 0}, {26, 6, 20, 0}, {25, 6, 20, 0}, {24, 6, 20, 0}, {23, 6, 20, 0}, {22, 6, 19, 0}, {21, 6, 18, 0}, {20, 6, 17, 0}, {19, 6, 17, 0}, {18, 6, 17, 1}, {17, 5, 17, 0}}, {{19, 6, 26, 2, 0}, {18, 6, 25, 0}, {18, 6, 24, 0}, {19, 6, 24, 0}, {19, 6, 23, 1}, {19, 6, 22, 0}, {19, 6, 21, 0}, {19, 6, 20, 0}, {19, 6, 19, 0}, {19, 6, 18, 0}, {19, 6, 17, 0}, {18, 6, 17, 1}, {17, 5, 17, 0}}, {{17, 5, 17, 0}, {16, 5, 16, 0}, {15, 5, 16, 0}, {14, 5, 16, 0}, {13, 5, 16, 0}, {12, 5, 16, 0}, {11, 5, 16, 0}, {10, 5, 16, 0}, {9, 5, 16, 0}, {8, 5, 16, 0}, {7, 5, 16, 0}, {6, 5, 16, 0}, {5, 5, 16, 0}, {4, 5, 16, 0}, {3, 5, 16, 0}, {2, 5, 16, 0}, {1, 5, 16, 0}, {0, 5, 16, 0}}}}, ["mg_villages/schems/tent_medium_4"] = {{{{2, 2, 4, 2, 0}, {3, 2, 3, 0}, {3, 2, 2, 1}, {3, 2, 1, 0}}, {{3, 2, 4, 2, 0}, {3, 2, 2, 1}, {3, 2, 1, 0}}, {{4, 2, 4, 2, 0}, {3, 2, 3, 0}, {3, 2, 2, 1}, {3, 2, 1, 0}}, {{3, 2, 1, 0}, {3, 2, 0, 0}}}}, ["mg_villages/schems/tent_open_big_1|WORKPLACE"] = {{{{6, 2, 2, 2, 2}, {6, 2, 3, 0}, {6, 2, 4, 0}, {5, 3, 4, 0}, {4, 3, 5, 0}, {3, 3, 6, 0}, {3, 2, 7, 0}}, {}}}, ["village_towntest/schems/towntest_VanessaE_home2_0_0"] = {{{{6, 10, 13, 2, 3}, {7, 10, 14, 0}, {8, 10, 14, 0}, {9, 10, 14, 0}, {10, 10, 14, 0}, {11, 10, 14, 0}, {12, 10, 13, 0}, {12, 10, 12, 1}, {12, 10, 11, 0}, {13, 10, 10, 0}, {14, 10, 9, 0}, {15, 10, 9, 0}, {16, 10, 9, 0}, {17, 10, 9, 0}, {17, 11, 8, 0}, {17, 10, 7, 0}, {16, 9, 7, 0}, {15, 8, 7, 0}, {14, 7, 7, 0}, {13, 6, 7, 0}, {12, 5, 7, 0}, {11, 5, 7, 0}, {10, 5, 7, 0}, {9, 5, 7, 0}, {8, 5, 7, 0}, {7, 5, 7, 0}, {6, 5, 7, 0}, {5, 5, 7, 1}, {4, 5, 7, 0}}, {{17, 15, 18, 2, 2}, {16, 15, 17, 1}, {16, 15, 16, 0}, {15, 15, 15, 0}, {14, 15, 14, 0}, {14, 16, 13, 0}, {14, 15, 12, 0}, {15, 14, 12, 0}, {16, 13, 12, 0}, {17, 12, 12, 0}, {18, 11, 12, 0}, {19, 10, 11, 0}, {19, 10, 10, 0}, {19, 10, 9, 0}, {19, 10, 8, 0}, {19, 10, 7, 0}, {18, 10, 7, 0}, {17, 10, 7, 0}, {16, 9, 7, 0}, {15, 8, 7, 0}, {14, 7, 7, 0}, {13, 6, 7, 0}, {12, 5, 7, 0}, {11, 5, 7, 0}, {10, 5, 7, 0}, {9, 5, 7, 0}, {8, 5, 7, 0}, {7, 5, 7, 0}, {6, 5, 7, 0}, {5, 5, 7, 1}, {4, 5, 7, 0}}, {{18, 15, 18, 2, 2}, {19, 15, 19, 0}, {19, 15, 20, 0}, {18, 15, 20, 0}, {17, 15, 20, 0}, {16, 15, 20, 0}, {16, 15, 19, 0}, {16, 15, 18, 0}, {16, 15, 17, 1}, {16, 15, 16, 0}, {15, 15, 15, 0}, {14, 15, 14, 0}, {14, 16, 13, 0}, {14, 15, 12, 0}, {15, 14, 12, 0}, {16, 13, 12, 0}, {17, 12, 12, 0}, {18, 11, 12, 0}, {19, 10, 11, 0}, {19, 10, 10, 0}, {19, 10, 9, 0}, {19, 10, 8, 0}, {19, 10, 7, 0}, {18, 10, 7, 0}, {17, 10, 7, 0}, {16, 9, 7, 0}, {15, 8, 7, 0}, {14, 7, 7, 0}, {13, 6, 7, 0}, {12, 5, 7, 0}, {11, 5, 7, 0}, {10, 5, 7, 0}, {9, 5, 7, 0}, {8, 5, 7, 0}, {7, 5, 7, 0}, {6, 5, 7, 0}, {5, 5, 7, 1}, {4, 5, 7, 0}}, {{13, 15, 20, 2, 1}, {12, 15, 18, 0}, {12, 15, 17, 1}, {12, 15, 16, 0}, {12, 15, 15, 0}, {12, 15, 14, 0}, {12, 15, 13, 0}, {12, 15, 12, 0}, {13, 15, 12, 0}, {14, 15, 11, 0}, {15, 14, 11, 0}, {16, 13, 11, 0}, {17, 12, 11, 0}, {18, 11, 11, 0}, {19, 10, 11, 0}, {19, 10, 10, 0}, {19, 10, 9, 0}, {19, 10, 8, 0}, {19, 10, 7, 0}, {18, 10, 7, 0}, {17, 10, 7, 0}, {16, 9, 7, 0}, {15, 8, 7, 0}, {14, 7, 7, 0}, {13, 6, 7, 0}, {12, 5, 7, 0}, {11, 5, 7, 0}, {10, 5, 7, 0}, {9, 5, 7, 0}, {8, 5, 7, 0}, {7, 5, 7, 0}, {6, 5, 7, 0}, {5, 5, 7, 1}, {4, 5, 7, 0}}, {{13, 15, 21, 2, 1}, {12, 15, 22, 0}, {11, 15, 22, 0}, {11, 15, 21, 0}, {11, 15, 20, 0}, {11, 15, 19, 0}, {12, 15, 18, 0}, {12, 15, 17, 1}, {12, 15, 16, 0}, {12, 15, 15, 0}, {12, 15, 14, 0}, {12, 15, 13, 0}, {12, 15, 12, 0}, {13, 15, 12, 0}, {14, 15, 11, 0}, {15, 14, 11, 0}, {16, 13, 11, 0}, {17, 12, 11, 0}, {18, 11, 11, 0}, {19, 10, 11, 0}, {19, 10, 10, 0}, {19, 10, 9, 0}, {19, 10, 8, 0}, {19, 10, 7, 0}, {18, 10, 7, 0}, {17, 10, 7, 0}, {16, 9, 7, 0}, {15, 8, 7, 0}, {14, 7, 7, 0}, {13, 6, 7, 0}, {12, 5, 7, 0}, {11, 5, 7, 0}, {10, 5, 7, 0}, {9, 5, 7, 0}, {8, 5, 7, 0}, {7, 5, 7, 0}, {6, 5, 7, 0}, {5, 5, 7, 1}, {4, 5, 7, 0}}, {{15, 10, 23, 2, 0}, {13, 10, 22, 0}, {12, 10, 21, 0}, {12, 10, 20, 0}, {12, 10, 19, 0}, {12, 10, 18, 0}, {12, 10, 17, 0}, {12, 10, 16, 0}, {12, 10, 15, 0}, {12, 10, 14, 0}, {12, 10, 13, 0}, {12, 10, 12, 1}, {12, 10, 11, 0}, {13, 10, 10, 0}, {14, 10, 9, 0}, {15, 10, 9, 0}, {16, 10, 9, 0}, {17, 10, 9, 0}, {17, 11, 8, 0}, {17, 10, 7, 0}, {16, 9, 7, 0}, {15, 8, 7, 0}, {14, 7, 7, 0}, {13, 6, 7, 0}, {12, 5, 7, 0}, {11, 5, 7, 0}, {10, 5, 7, 0}, {9, 5, 7, 0}, {8, 5, 7, 0}, {7, 5, 7, 0}, {6, 5, 7, 0}, {5, 5, 7, 1}, {4, 5, 7, 0}}, {{4, 5, 7, 0}, {3, 5, 8, 0}, {2, 5, 9, 0}, {2, 4, 10, 0}, {2, 3, 11, 0}, {2, 2, 12, 0}, {2, 1, 13, 0}, {1, 1, 14, 0}, {0, 1, 14, 0}}}, {{{6, 10, 13, 2, 3}, {7, 10, 14, 0}, {8, 10, 14, 0}, {9, 10, 14, 0}, {10, 10, 14, 0}, {11, 10, 14, 0}, {12, 10, 13, 0}, {12, 10, 12, 1}, {12, 10, 11, 0}, {13, 10, 10, 0}, {14, 10, 9, 0}, {15, 10, 9, 0}, {16, 10, 9, 0}, {17, 10, 9, 0}, {17, 11, 8, 0}, {17, 10, 7, 0}, {16, 9, 7, 0}, {15, 8, 7, 0}, {14, 7, 7, 0}, {13, 6, 7, 0}, {12, 5, 7, 0}, {12, 5, 8, 0}, {12, 5, 9, 0}, {13, 5, 10, 0}, {14, 5, 11, 0}, {15, 5, 12, 0}, {16, 5, 12, 0}, {16, 5, 13, 0}, {16, 5, 14, 0}, {16, 5, 15, 0}, {16, 5, 16, 0}, {16, 5, 17, 0}, {16, 5, 18, 0}, {16, 5, 19, 0}, {16, 5, 20, 0}, {16, 5, 21, 0}, {16, 5, 22, 0}, {16, 5, 23, 0}, {16, 5, 24, 1}, {16, 5, 25, 0}}, {{17, 15, 18, 2, 2}, {16, 15, 17, 1}, {16, 15, 16, 0}, {15, 15, 15, 0}, {14, 15, 14, 0}, {14, 16, 13, 0}, {14, 15, 12, 0}, {15, 14, 12, 0}, {16, 13, 12, 0}, {17, 12, 12, 0}, {18, 11, 12, 0}, {19, 10, 11, 0}, {19, 10, 10, 0}, {19, 10, 9, 0}, {19, 10, 8, 0}, {19, 10, 7, 0}, {18, 10, 7, 0}, {17, 10, 7, 0}, {16, 9, 7, 0}, {15, 8, 7, 0}, {14, 7, 7, 0}, {13, 6, 7, 0}, {12, 5, 7, 0}, {12, 5, 8, 0}, {12, 5, 9, 0}, {13, 5, 10, 0}, {14, 5, 11, 0}, {15, 5, 12, 0}, {16, 5, 12, 0}, {16, 5, 13, 0}, {16, 5, 14, 0}, {16, 5, 15, 0}, {16, 5, 16, 0}, {16, 5, 17, 0}, {16, 5, 18, 0}, {16, 5, 19, 0}, {16, 5, 20, 0}, {16, 5, 21, 0}, {16, 5, 22, 0}, {16, 5, 23, 0}, {16, 5, 24, 1}, {16, 5, 25, 0}}, {{18, 15, 18, 2, 2}, {19, 15, 19, 0}, {19, 15, 20, 0}, {18, 15, 20, 0}, {17, 15, 20, 0}, {16, 15, 20, 0}, {16, 15, 19, 0}, {16, 15, 18, 0}, {16, 15, 17, 1}, {16, 15, 16, 0}, {15, 15, 15, 0}, {14, 15, 14, 0}, {14, 16, 13, 0}, {14, 15, 12, 0}, {15, 14, 12, 0}, {16, 13, 12, 0}, {17, 12, 12, 0}, {18, 11, 12, 0}, {19, 10, 11, 0}, {19, 10, 10, 0}, {19, 10, 9, 0}, {19, 10, 8, 0}, {19, 10, 7, 0}, {18, 10, 7, 0}, {17, 10, 7, 0}, {16, 9, 7, 0}, {15, 8, 7, 0}, {14, 7, 7, 0}, {13, 6, 7, 0}, {12, 5, 7, 0}, {12, 5, 8, 0}, {12, 5, 9, 0}, {13, 5, 10, 0}, {14, 5, 11, 0}, {15, 5, 12, 0}, {16, 5, 12, 0}, {16, 5, 13, 0}, {16, 5, 14, 0}, {16, 5, 15, 0}, {16, 5, 16, 0}, {16, 5, 17, 0}, {16, 5, 18, 0}, {16, 5, 19, 0}, {16, 5, 20, 0}, {16, 5, 21, 0}, {16, 5, 22, 0}, {16, 5, 23, 0}, {16, 5, 24, 1}, {16, 5, 25, 0}}, {{13, 15, 20, 2, 1}, {12, 15, 18, 0}, {12, 15, 17, 1}, {12, 15, 16, 0}, {12, 15, 15, 0}, {12, 15, 14, 0}, {12, 15, 13, 0}, {12, 15, 12, 0}, {13, 15, 12, 0}, {14, 15, 11, 0}, {15, 14, 11, 0}, {16, 13, 11, 0}, {17, 12, 11, 0}, {18, 11, 11, 0}, {19, 10, 11, 0}, {19, 10, 10, 0}, {19, 10, 9, 0}, {19, 10, 8, 0}, {19, 10, 7, 0}, {18, 10, 7, 0}, {17, 10, 7, 0}, {16, 9, 7, 0}, {15, 8, 7, 0}, {14, 7, 7, 0}, {13, 6, 7, 0}, {12, 5, 7, 0}, {12, 5, 8, 0}, {12, 5, 9, 0}, {13, 5, 10, 0}, {14, 5, 11, 0}, {15, 5, 12, 0}, {16, 5, 12, 0}, {16, 5, 13, 0}, {16, 5, 14, 0}, {16, 5, 15, 0}, {16, 5, 16, 0}, {16, 5, 17, 0}, {16, 5, 18, 0}, {16, 5, 19, 0}, {16, 5, 20, 0}, {16, 5, 21, 0}, {16, 5, 22, 0}, {16, 5, 23, 0}, {16, 5, 24, 1}, {16, 5, 25, 0}}, {{13, 15, 21, 2, 1}, {12, 15, 22, 0}, {11, 15, 22, 0}, {11, 15, 21, 0}, {11, 15, 20, 0}, {11, 15, 19, 0}, {12, 15, 18, 0}, {12, 15, 17, 1}, {12, 15, 16, 0}, {12, 15, 15, 0}, {12, 15, 14, 0}, {12, 15, 13, 0}, {12, 15, 12, 0}, {13, 15, 12, 0}, {14, 15, 11, 0}, {15, 14, 11, 0}, {16, 13, 11, 0}, {17, 12, 11, 0}, {18, 11, 11, 0}, {19, 10, 11, 0}, {19, 10, 10, 0}, {19, 10, 9, 0}, {19, 10, 8, 0}, {19, 10, 7, 0}, {18, 10, 7, 0}, {17, 10, 7, 0}, {16, 9, 7, 0}, {15, 8, 7, 0}, {14, 7, 7, 0}, {13, 6, 7, 0}, {12, 5, 7, 0}, {12, 5, 8, 0}, {12, 5, 9, 0}, {13, 5, 10, 0}, {14, 5, 11, 0}, {15, 5, 12, 0}, {16, 5, 12, 0}, {16, 5, 13, 0}, {16, 5, 14, 0}, {16, 5, 15, 0}, {16, 5, 16, 0}, {16, 5, 17, 0}, {16, 5, 18, 0}, {16, 5, 19, 0}, {16, 5, 20, 0}, {16, 5, 21, 0}, {16, 5, 22, 0}, {16, 5, 23, 0}, {16, 5, 24, 1}, {16, 5, 25, 0}}, {{15, 10, 23, 2, 0}, {13, 10, 22, 0}, {12, 10, 21, 0}, {12, 10, 20, 0}, {12, 10, 19, 0}, {12, 10, 18, 0}, {12, 10, 17, 0}, {12, 10, 16, 0}, {12, 10, 15, 0}, {12, 10, 14, 0}, {12, 10, 13, 0}, {12, 10, 12, 1}, {12, 10, 11, 0}, {13, 10, 10, 0}, {14, 10, 9, 0}, {15, 10, 9, 0}, {16, 10, 9, 0}, {17, 10, 9, 0}, {17, 11, 8, 0}, {17, 10, 7, 0}, {16, 9, 7, 0}, {15, 8, 7, 0}, {14, 7, 7, 0}, {13, 6, 7, 0}, {12, 5, 7, 0}, {12, 5, 8, 0}, {12, 5, 9, 0}, {13, 5, 10, 0}, {14, 5, 11, 0}, {15, 5, 12, 0}, {16, 5, 12, 0}, {16, 5, 13, 0}, {16, 5, 14, 0}, {16, 5, 15, 0}, {16, 5, 16, 0}, {16, 5, 17, 0}, {16, 5, 18, 0}, {16, 5, 19, 0}, {16, 5, 20, 0}, {16, 5, 21, 0}, {16, 5, 22, 0}, {16, 5, 23, 0}, {16, 5, 24, 1}, {16, 5, 25, 0}}, {{16, 5, 25, 0}, {15, 6, 25, 0}, {14, 5, 25, 0}, {13, 5, 25, 0}, {12, 5, 25, 0}, {11, 5, 25, 0}, {10, 5, 25, 0}, {9, 5, 25, 0}, {8, 5, 25, 0}, {7, 5, 25, 0}, {6, 5, 25, 0}, {5, 5, 25, 0}, {4, 5, 25, 0}, {4, 5, 24, 0}, {4, 5, 23, 0}, {4, 5, 22, 0}, {4, 5, 21, 0}, {4, 5, 20, 0}, {4, 5, 19, 0}, {4, 5, 18, 0}, {4, 5, 17, 0}, {4, 5, 16, 0}, {4, 5, 15, 0}, {4, 5, 14, 0}, {4, 5, 13, 0}, {4, 5, 12, 0}, {4, 5, 11, 0}, {4, 6, 10, 0}, {4, 6, 9, 0}, {3, 5, 9, 0}, {3, 4, 10, 0}, {3, 3, 11, 0}, {2, 2, 12, 0}, {2, 1, 13, 0}, {1, 1, 14, 0}, {0, 1, 14, 0}}}}, ["mg_villages/schems/lumberjack_8"] = {{{{3, 2, 6, 2, 0}, {5, 2, 5, 0}, {6, 2, 5, 0}, {6, 2, 4, 0}, {6, 2, 3, 0}, {6, 2, 2, 1}, {6, 2, 1, 0}}, {{5, 2, 6, 2, 1}, {6, 2, 5, 0}, {6, 2, 4, 0}, {6, 2, 3, 0}, {6, 2, 2, 1}, {6, 2, 1, 0}}, {{6, 2, 6, 2, 3}, {6, 2, 4, 0}, {6, 2, 3, 0}, {6, 2, 2, 1}, {6, 2, 1, 0}}, {{8, 2, 6, 2, 0}, {6, 2, 4, 0}, {6, 2, 3, 0}, {6, 2, 2, 1}, {6, 2, 1, 0}}, {{3, 3, 6, 2, 0}, {4, 2, 5, 0}, {5, 2, 5, 0}, {6, 2, 5, 0}, {6, 2, 4, 0}, {6, 2, 3, 0}, {6, 2, 2, 1}, {6, 2, 1, 0}}, {{5, 3, 6, 2, 1}, {6, 2, 5, 0}, {6, 2, 4, 0}, {6, 2, 3, 0}, {6, 2, 2, 1}, {6, 2, 1, 0}}, {{6, 3, 6, 2, 3}, {6, 2, 5, 0}, {6, 2, 4, 0}, {6, 2, 3, 0}, {6, 2, 2, 1}, {6, 2, 1, 0}}, {{8, 3, 6, 2, 0}, {8, 2, 4, 0}, {7, 2, 4, 0}, {6, 2, 4, 0}, {6, 2, 3, 0}, {6, 2, 2, 1}, {6, 2, 1, 0}}, {{4, 6, 6, 2, 0}, {3, 6, 4, 0}, {4, 6, 4, 0}, {5, 6, 4, 1}, {6, 6, 4, 0}, {7, 6, 4, 0}, {8, 2, 4, 0}, {7, 2, 4, 0}, {6, 2, 4, 0}, {6, 2, 3, 0}, {6, 2, 2, 1}, {6, 2, 1, 0}}, {{6, 2, 1, 0}, {5, 1, 0, 0}}}}, ["mg_villages/schems/lumberjack_6"] = {{{{7, 5, 3, 2, 3}, {9, 5, 4, 0}, {9, 5, 5, 0}, {9, 2, 6, 0}, {8, 2, 6, 0}, {7, 2, 6, 0}, {7, 2, 7, 0}, {6, 2, 7, 1}, {5, 2, 7, 0}}, {{7, 2, 4, 2, 0}, {9, 2, 3, 0}, {10, 2, 3, 0}, {10, 2, 4, 0}, {10, 2, 5, 1}, {10, 2, 6, 0}, {9, 2, 6, 0}, {8, 2, 6, 0}, {7, 2, 6, 0}, {7, 2, 7, 0}, {6, 2, 7, 1}, {5, 2, 7, 0}}, {{8, 2, 4, 2, 3}, {9, 2, 3, 0}, {10, 2, 3, 0}, {10, 2, 4, 0}, {10, 2, 5, 1}, {10, 2, 6, 0}, {9, 2, 6, 0}, {8, 2, 6, 0}, {7, 2, 6, 0}, {7, 2, 7, 0}, {6, 2, 7, 1}, {5, 2, 7, 0}}, {{7, 5, 4, 2, 3}, {9, 5, 5, 0}, {9, 2, 6, 0}, {8, 2, 6, 0}, {7, 2, 6, 0}, {7, 2, 7, 0}, {6, 2, 7, 1}, {5, 2, 7, 0}}, {{7, 5, 5, 2, 3}, {9, 2, 6, 0}, {8, 2, 6, 0}, {7, 2, 6, 0}, {7, 2, 7, 0}, {6, 2, 7, 1}, {5, 2, 7, 0}}, {{5, 2, 7, 0}, {4, 2, 7, 0}, {3, 2, 7, 0}, {2, 2, 7, 0}, {2, 2, 6, 0}, {2, 1, 5, 0}, {2, 1, 4, 0}, {3, 1, 4, 0}, {4, 1, 4, 0}, {5, 1, 4, 0}, {5, 1, 3, 0}, {5, 1, 2, 0}, {5, 1, 1, 0}, {6, 1, 0, 0}}}}, ["mg_villages/schems/tree_place_5|WORKPLACE"] = {{{{1, 1, 2, 2, 2}, {0, 1, 2, 0}, {0, 1, 3, 0}, {0, 1, 4, 0}}, {}}}, ["village_ruins/schems/church|WORKPLACE"] = {{{{6, 3, 14, 2, 0}, {7, 3, 14, 0}, {7, 2, 13, 0}, {7, 2, 12, 0}, {6, 2, 12, 0}, {5, 2, 11, 0}, {5, 2, 10, 0}, {5, 2, 9, 0}, {5, 2, 8, 0}, {5, 2, 7, 0}, {5, 2, 6, 0}, {5, 2, 5, 0}, {5, 2, 4, 0}, {5, 2, 3, 0}, {5, 2, 2, 1}, {5, 2, 1, 0}}, {{5, 2, 1, 0}, {5, 1, 0, 0}}}}, ["mg_villages/schems/farm_full_2"] = {{{{3, 5, 5, 2, 2}, {4, 5, 7, 0}, {5, 5, 7, 1}, {6, 5, 7, 0}, {6, 5, 8, 0}, {7, 4, 8, 0}, {7, 3, 7, 0}, {7, 2, 6, 0}, {7, 2, 5, 0}, {7, 2, 4, 1}, {7, 2, 3, 0}}, {{7, 5, 5, 2, 1}, {6, 5, 7, 0}, {6, 5, 8, 0}, {7, 4, 8, 0}, {7, 3, 7, 0}, {7, 2, 6, 0}, {7, 2, 5, 0}, {7, 2, 4, 1}, {7, 2, 3, 0}}, {{4, 5, 11, 2, 0}, {3, 5, 9, 0}, {4, 5, 9, 0}, {5, 5, 9, 0}, {6, 5, 9, 1}, {7, 4, 8, 0}, {7, 3, 7, 0}, {7, 2, 6, 0}, {7, 2, 5, 0}, {7, 2, 4, 1}, {7, 2, 3, 0}}, {{5, 5, 11, 2, 0}, {6, 5, 9, 1}, {7, 4, 8, 0}, {7, 3, 7, 0}, {7, 2, 6, 0}, {7, 2, 5, 0}, {7, 2, 4, 1}, {7, 2, 3, 0}}, {{3, 2, 12, 2, 0}, {4, 2, 10, 0}, {4, 2, 9, 1}, {4, 2, 8, 0}, {4, 2, 7, 0}, {4, 2, 6, 0}, {4, 2, 5, 0}, {5, 2, 5, 1}, {6, 2, 5, 0}, {7, 2, 5, 0}, {7, 2, 4, 1}, {7, 2, 3, 0}}, {{7, 2, 3, 0}, {8, 2, 2, 0}, {9, 2, 1, 0}, {9, 2, 0, 0}}}, {{{3, 5, 5, 2, 2}, {4, 5, 7, 0}, {5, 5, 7, 1}, {6, 5, 7, 0}, {6, 5, 8, 0}, {7, 4, 8, 0}, {7, 3, 7, 0}, {7, 2, 6, 0}, {8, 2, 6, 1}, {9, 2, 6, 0}, {10, 2, 6, 0}, {11, 2, 6, 0}, {12, 2, 6, 0}, {12, 2, 5, 0}, {12, 2, 4, 1}, {12, 2, 3, 0}}, {{7, 5, 5, 2, 1}, {6, 5, 7, 0}, {6, 5, 8, 0}, {7, 4, 8, 0}, {7, 3, 7, 0}, {7, 2, 6, 0}, {8, 2, 6, 1}, {9, 2, 6, 0}, {10, 2, 6, 0}, {11, 2, 6, 0}, {12, 2, 6, 0}, {12, 2, 5, 0}, {12, 2, 4, 1}, {12, 2, 3, 0}}, {{4, 5, 11, 2, 0}, {3, 5, 9, 0}, {4, 5, 9, 0}, {5, 5, 9, 0}, {6, 5, 9, 1}, {7, 4, 8, 0}, {7, 3, 7, 0}, {7, 2, 6, 0}, {8, 2, 6, 1}, {9, 2, 6, 0}, {10, 2, 6, 0}, {11, 2, 6, 0}, {12, 2, 6, 0}, {12, 2, 5, 0}, {12, 2, 4, 1}, {12, 2, 3, 0}}, {{5, 5, 11, 2, 0}, {6, 5, 9, 1}, {7, 4, 8, 0}, {7, 3, 7, 0}, {7, 2, 6, 0}, {8, 2, 6, 1}, {9, 2, 6, 0}, {10, 2, 6, 0}, {11, 2, 6, 0}, {12, 2, 6, 0}, {12, 2, 5, 0}, {12, 2, 4, 1}, {12, 2, 3, 0}}, {{3, 2, 12, 2, 0}, {4, 2, 10, 0}, {4, 2, 9, 1}, {4, 2, 8, 0}, {4, 2, 7, 0}, {4, 2, 6, 0}, {4, 2, 5, 0}, {5, 2, 5, 1}, {6, 2, 5, 0}, {7, 2, 6, 0}, {8, 2, 6, 1}, {9, 2, 6, 0}, {10, 2, 6, 0}, {11, 2, 6, 0}, {12, 2, 6, 0}, {12, 2, 5, 0}, {12, 2, 4, 1}, {12, 2, 3, 0}}, {{12, 2, 3, 0}, {11, 2, 2, 0}, {10, 2, 1, 0}, {9, 2, 0, 0}}}, {{{3, 5, 5, 2, 2}, {4, 5, 7, 0}, {5, 5, 7, 1}, {6, 5, 7, 0}, {6, 5, 8, 0}, {7, 4, 8, 0}, {7, 3, 7, 0}, {7, 2, 6, 0}, {8, 2, 6, 1}, {9, 2, 6, 0}, {10, 2, 6, 0}, {11, 2, 6, 0}, {12, 2, 6, 0}, {13, 2, 5, 0}, {13, 2, 4, 1}, {13, 2, 3, 0}}, {{7, 5, 5, 2, 1}, {6, 5, 7, 0}, {6, 5, 8, 0}, {7, 4, 8, 0}, {7, 3, 7, 0}, {7, 2, 6, 0}, {8, 2, 6, 1}, {9, 2, 6, 0}, {10, 2, 6, 0}, {11, 2, 6, 0}, {12, 2, 6, 0}, {13, 2, 5, 0}, {13, 2, 4, 1}, {13, 2, 3, 0}}, {{4, 5, 11, 2, 0}, {3, 5, 9, 0}, {4, 5, 9, 0}, {5, 5, 9, 0}, {6, 5, 9, 1}, {7, 4, 8, 0}, {7, 3, 7, 0}, {7, 2, 6, 0}, {8, 2, 6, 1}, {9, 2, 6, 0}, {10, 2, 6, 0}, {11, 2, 6, 0}, {12, 2, 6, 0}, {13, 2, 5, 0}, {13, 2, 4, 1}, {13, 2, 3, 0}}, {{5, 5, 11, 2, 0}, {6, 5, 9, 1}, {7, 4, 8, 0}, {7, 3, 7, 0}, {7, 2, 6, 0}, {8, 2, 6, 1}, {9, 2, 6, 0}, {10, 2, 6, 0}, {11, 2, 6, 0}, {12, 2, 6, 0}, {13, 2, 5, 0}, {13, 2, 4, 1}, {13, 2, 3, 0}}, {{3, 2, 12, 2, 0}, {4, 2, 10, 0}, {4, 2, 9, 1}, {4, 2, 8, 0}, {4, 2, 7, 0}, {4, 2, 6, 0}, {4, 2, 5, 0}, {5, 2, 5, 1}, {6, 2, 5, 0}, {7, 2, 6, 0}, {8, 2, 6, 1}, {9, 2, 6, 0}, {10, 2, 6, 0}, {11, 2, 6, 0}, {12, 2, 6, 0}, {13, 2, 5, 0}, {13, 2, 4, 1}, {13, 2, 3, 0}}, {{13, 2, 3, 0}, {12, 2, 2, 0}, {11, 2, 1, 0}, {10, 2, 0, 0}, {9, 2, 0, 0}}}}, ["mg_villages/schems/tree_place_8|WORKPLACE"] = {{{{1, 1, 1, 2, 1}, {0, 1, 1, 0}, {0, 1, 2, 0}, {0, 1, 3, 0}}, {}}}, ["mg_villages/schems/tree_place_6|WORKPLACE"] = {{{{2, 1, 8, 2, 1}, {1, 1, 8, 0}, {0, 1, 7, 0}, {0, 1, 6, 0}, {0, 1, 5, 0}}, {}}}, ["village_ruins/schems/cabin"] = {{{{2, 2, 8, 2, 0}, {3, 2, 7, 0}, {3, 2, 6, 0}, {3, 2, 5, 0}, {3, 2, 4, 1}, {3, 2, 3, 0}}, {{3, 2, 3, 0}, {3, 1, 2, 0}, {3, 1, 1, 0}, {3, 1, 0, 0}}}}, ["mg_villages/schems/logcabin3"] = {{{{2, 2, 5, 2, 0}, {3, 2, 4, 0}, {4, 2, 4, 1}, {5, 2, 3, 0}, {5, 2, 2, 0}, {5, 2, 1, 1}, {5, 2, 0, 0}}, {{2, 3, 5, 2, 0}, {3, 2, 4, 0}, {4, 2, 4, 1}, {5, 2, 3, 0}, {5, 2, 2, 0}, {5, 2, 1, 1}, {5, 2, 0, 0}}, {{2, 4, 5, 2, 0}, {3, 2, 4, 0}, {4, 2, 4, 1}, {5, 2, 3, 0}, {5, 2, 2, 0}, {5, 2, 1, 1}, {5, 2, 0, 0}}, {{5, 2, 0, 0}, {4, 2, 0, 0}, {3, 2, 0, 0}}}}, ["mg_villages/schems/lumberjack_9"] = {{{{9, 5, 9, 2, 2}, {7, 2, 9, 0}, {8, 2, 9, 0}, {8, 2, 8, 1}, {8, 2, 7, 0}}, {{3, 6, 9, 2, 3}, {4, 6, 10, 0}, {5, 6, 10, 0}, {6, 6, 10, 1}, {7, 6, 10, 0}, {8, 5, 10, 0}, {8, 5, 9, 0}, {7, 2, 9, 0}, {8, 2, 9, 0}, {8, 2, 8, 1}, {8, 2, 7, 0}}, {{9, 5, 11, 2, 1}, {8, 5, 9, 0}, {7, 2, 9, 0}, {8, 2, 9, 0}, {8, 2, 8, 1}, {8, 2, 7, 0}}, {{4, 6, 11, 2, 3}, {5, 6, 10, 0}, {6, 6, 10, 1}, {7, 6, 10, 0}, {8, 5, 10, 0}, {8, 5, 9, 0}, {7, 2, 9, 0}, {8, 2, 9, 0}, {8, 2, 8, 1}, {8, 2, 7, 0}}, {{9, 6, 11, 2, 1}, {8, 5, 10, 0}, {8, 5, 9, 0}, {7, 2, 9, 0}, {8, 2, 9, 0}, {8, 2, 8, 1}, {8, 2, 7, 0}}, {{8, 2, 7, 0}, {8, 2, 6, 0}, {7, 2, 5, 0}, {7, 1, 4, 0}, {7, 1, 3, 0}, {7, 1, 2, 0}, {7, 1, 1, 0}, {6, 1, 0, 0}}}, {{{9, 5, 9, 2, 2}, {7, 2, 9, 0}, {8, 2, 9, 0}, {9, 2, 9, 0}, {9, 2, 8, 1}, {9, 2, 7, 0}}, {{3, 6, 9, 2, 3}, {4, 6, 10, 0}, {5, 6, 10, 0}, {6, 6, 10, 1}, {7, 6, 10, 0}, {8, 5, 10, 0}, {8, 5, 9, 0}, {7, 2, 9, 0}, {8, 2, 9, 0}, {9, 2, 9, 0}, {9, 2, 8, 1}, {9, 2, 7, 0}}, {{9, 5, 11, 2, 1}, {8, 5, 9, 0}, {7, 2, 9, 0}, {8, 2, 9, 0}, {9, 2, 9, 0}, {9, 2, 8, 1}, {9, 2, 7, 0}}, {{4, 6, 11, 2, 3}, {5, 6, 10, 0}, {6, 6, 10, 1}, {7, 6, 10, 0}, {8, 5, 10, 0}, {8, 5, 9, 0}, {7, 2, 9, 0}, {8, 2, 9, 0}, {9, 2, 9, 0}, {9, 2, 8, 1}, {9, 2, 7, 0}}, {{9, 6, 11, 2, 1}, {8, 5, 10, 0}, {8, 5, 9, 0}, {7, 2, 9, 0}, {8, 2, 9, 0}, {9, 2, 9, 0}, {9, 2, 8, 1}, {9, 2, 7, 0}}, {{9, 2, 7, 0}, {8, 2, 6, 0}, {7, 2, 5, 0}, {7, 1, 4, 0}, {7, 1, 3, 0}, {7, 1, 2, 0}, {7, 1, 1, 0}, {6, 1, 0, 0}}}}, ["mg_villages/schems/farm_tiny_1"] = {{{{10, 2, 3, 2, 3}, {9, 2, 4, 1}, {8, 2, 4, 0}, {7, 2, 4, 0}, {6, 2, 4, 0}, {5, 2, 4, 0}, {4, 2, 4, 1}, {3, 2, 4, 0}}, {{10, 2, 6, 2, 3}, {10, 2, 4, 0}, {9, 2, 4, 1}, {8, 2, 4, 0}, {7, 2, 4, 0}, {6, 2, 4, 0}, {5, 2, 4, 0}, {4, 2, 4, 1}, {3, 2, 4, 0}}, {{3, 2, 4, 0}, {2, 2, 5, 0}, {1, 2, 6, 0}, {0, 2, 6, 0}}}}, ["mg_villages/schems/tree_place_4|WORKPLACE"] = {{{{2, 1, 1, 2, 1}, {1, 1, 1, 0}, {0, 1, 2, 0}, {0, 1, 3, 0}}, {}}}, ["mg_villages/schems/lumberjack_7"] = {{{{3, 5, 6, 2, 3}, {4, 5, 5, 0}, {4, 5, 4, 0}, {4, 5, 3, 0}, {3, 5, 3, 1}, {2, 1, 3, 0}}, {{3, 7, 6, 2, 0}, {4, 5, 4, 0}, {4, 5, 3, 0}, {3, 5, 3, 1}, {2, 1, 3, 0}}, {{4, 7, 6, 2, 0}, {4, 5, 4, 0}, {4, 5, 3, 0}, {3, 5, 3, 1}, {2, 1, 3, 0}}, {{5, 7, 6, 2, 0}, {4, 5, 4, 0}, {4, 5, 3, 0}, {3, 5, 3, 1}, {2, 1, 3, 0}}, {{6, 7, 6, 2, 0}, {4, 5, 4, 0}, {4, 5, 3, 0}, {3, 5, 3, 1}, {2, 1, 3, 0}}, {{2, 1, 3, 0}, {2, 1, 2, 0}, {3, 1, 1, 0}, {4, 1, 0, 0}}}}, ["mg_villages/schems/tree_place_9|WORKPLACE"] = {{{{4, 4, 5, 2, 0}, {4, 4, 4, 0}, {4, 4, 3, 0}, {4, 4, 2, 0}, {4, 4, 1, 0}, {3, 3, 1, 0}, {2, 3, 1, 0}, {2, 2, 2, 0}, {1, 1, 3, 0}, {0, 1, 4, 0}}, {}}}, ["mg_villages/schems/logcabin8"] = {{{{2, 2, 5, 2, 3}, {3, 2, 3, 0}, {3, 2, 2, 0}, {3, 2, 1, 1}, {3, 2, 0, 0}}, {{2, 3, 5, 2, 3}, {3, 2, 4, 0}, {3, 2, 3, 0}, {3, 2, 2, 0}, {3, 2, 1, 1}, {3, 2, 0, 0}}, {}}}, ["mg_villages/schems/tent_medium_3"] = {{{{2, 2, 3, 2, 0}, {3, 2, 2, 1}, {3, 2, 1, 0}}, {{4, 2, 3, 2, 0}, {3, 2, 2, 1}, {3, 2, 1, 0}}, {{3, 2, 1, 0}, {3, 2, 0, 0}}}}, ["mg_villages/schems/farm_full_3"] = {{{{6, 5, 10, 2, 3}, {8, 5, 9, 1}, {9, 5, 9, 0}, {10, 5, 9, 0}, {10, 4, 10, 0}, {9, 3, 10, 0}, {8, 2, 10, 0}, {8, 2, 9, 0}, {7, 2, 9, 0}, {6, 2, 9, 1}, {5, 2, 9, 0}}, {{12, 2, 13, 2, 1}, {10, 2, 12, 0}, {9, 2, 12, 0}, {8, 2, 12, 0}, {8, 2, 11, 1}, {8, 2, 10, 0}, {8, 2, 9, 0}, {7, 2, 9, 0}, {6, 2, 9, 1}, {5, 2, 9, 0}}, {{6, 5, 13, 2, 3}, {8, 5, 12, 0}, {8, 5, 11, 0}, {9, 5, 11, 0}, {10, 5, 11, 0}, {10, 4, 10, 0}, {9, 3, 10, 0}, {8, 2, 10, 0}, {8, 2, 9, 0}, {7, 2, 9, 0}, {6, 2, 9, 1}, {5, 2, 9, 0}}, {{9, 5, 13, 2, 3}, {12, 5, 12, 1}, {12, 5, 11, 0}, {11, 5, 10, 0}, {10, 4, 10, 0}, {9, 3, 10, 0}, {8, 2, 10, 0}, {8, 2, 9, 0}, {7, 2, 9, 0}, {6, 2, 9, 1}, {5, 2, 9, 0}}, {{13, 5, 13, 2, 0}, {12, 5, 12, 1}, {12, 5, 11, 0}, {11, 5, 10, 0}, {10, 4, 10, 0}, {9, 3, 10, 0}, {8, 2, 10, 0}, {8, 2, 9, 0}, {7, 2, 9, 0}, {6, 2, 9, 1}, {5, 2, 9, 0}}, {{5, 2, 9, 0}, {4, 2, 8, 0}, {3, 2, 8, 0}, {2, 2, 8, 0}, {1, 2, 8, 0}, {0, 2, 8, 0}}}, {{{6, 5, 10, 2, 3}, {8, 5, 9, 1}, {9, 5, 9, 0}, {10, 5, 9, 0}, {10, 4, 10, 0}, {9, 3, 10, 0}, {8, 2, 10, 0}, {8, 2, 9, 0}, {9, 2, 9, 0}, {10, 2, 9, 0}, {11, 2, 9, 0}, {11, 2, 8, 1}, {11, 2, 7, 0}, {11, 2, 6, 0}, {10, 2, 6, 1}, {9, 2, 6, 0}, {8, 2, 6, 0}, {7, 2, 6, 0}, {6, 2, 6, 1}, {5, 2, 6, 0}}, {{12, 2, 13, 2, 1}, {10, 2, 12, 0}, {9, 2, 12, 0}, {8, 2, 12, 0}, {8, 2, 11, 1}, {8, 2, 10, 0}, {8, 2, 9, 0}, {9, 2, 9, 0}, {10, 2, 9, 0}, {11, 2, 9, 0}, {11, 2, 8, 1}, {11, 2, 7, 0}, {11, 2, 6, 0}, {10, 2, 6, 1}, {9, 2, 6, 0}, {8, 2, 6, 0}, {7, 2, 6, 0}, {6, 2, 6, 1}, {5, 2, 6, 0}}, {{6, 5, 13, 2, 3}, {8, 5, 12, 0}, {8, 5, 11, 0}, {9, 5, 11, 0}, {10, 5, 11, 0}, {10, 4, 10, 0}, {9, 3, 10, 0}, {8, 2, 10, 0}, {8, 2, 9, 0}, {9, 2, 9, 0}, {10, 2, 9, 0}, {11, 2, 9, 0}, {11, 2, 8, 1}, {11, 2, 7, 0}, {11, 2, 6, 0}, {10, 2, 6, 1}, {9, 2, 6, 0}, {8, 2, 6, 0}, {7, 2, 6, 0}, {6, 2, 6, 1}, {5, 2, 6, 0}}, {{9, 5, 13, 2, 3}, {12, 5, 12, 1}, {12, 5, 11, 0}, {11, 5, 10, 0}, {10, 4, 10, 0}, {9, 3, 10, 0}, {8, 2, 10, 0}, {8, 2, 9, 0}, {9, 2, 9, 0}, {10, 2, 9, 0}, {11, 2, 9, 0}, {11, 2, 8, 1}, {11, 2, 7, 0}, {11, 2, 6, 0}, {10, 2, 6, 1}, {9, 2, 6, 0}, {8, 2, 6, 0}, {7, 2, 6, 0}, {6, 2, 6, 1}, {5, 2, 6, 0}}, {{13, 5, 13, 2, 0}, {12, 5, 12, 1}, {12, 5, 11, 0}, {11, 5, 10, 0}, {10, 4, 10, 0}, {9, 3, 10, 0}, {8, 2, 10, 0}, {8, 2, 9, 0}, {9, 2, 9, 0}, {10, 2, 9, 0}, {11, 2, 9, 0}, {11, 2, 8, 1}, {11, 2, 7, 0}, {11, 2, 6, 0}, {10, 2, 6, 1}, {9, 2, 6, 0}, {8, 2, 6, 0}, {7, 2, 6, 0}, {6, 2, 6, 1}, {5, 2, 6, 0}}, {{5, 2, 6, 0}, {4, 2, 7, 0}, {3, 2, 8, 0}, {2, 2, 8, 0}, {1, 2, 8, 0}, {0, 2, 8, 0}}}, {{{6, 5, 10, 2, 3}, {8, 5, 9, 1}, {9, 5, 9, 0}, {10, 5, 9, 0}, {10, 4, 10, 0}, {9, 3, 10, 0}, {8, 2, 10, 0}, {8, 2, 9, 0}, {9, 2, 9, 0}, {10, 2, 9, 0}, {11, 2, 9, 0}, {11, 2, 8, 1}, {11, 2, 7, 0}, {11, 2, 6, 0}, {10, 2, 6, 1}, {9, 2, 6, 0}, {9, 2, 5, 1}, {9, 2, 4, 0}, {8, 2, 4, 0}, {7, 2, 4, 0}, {6, 2, 4, 1}, {5, 2, 4, 0}}, {{12, 2, 13, 2, 1}, {10, 2, 12, 0}, {9, 2, 12, 0}, {8, 2, 12, 0}, {8, 2, 11, 1}, {8, 2, 10, 0}, {8, 2, 9, 0}, {9, 2, 9, 0}, {10, 2, 9, 0}, {11, 2, 9, 0}, {11, 2, 8, 1}, {11, 2, 7, 0}, {11, 2, 6, 0}, {10, 2, 6, 1}, {9, 2, 6, 0}, {9, 2, 5, 1}, {9, 2, 4, 0}, {8, 2, 4, 0}, {7, 2, 4, 0}, {6, 2, 4, 1}, {5, 2, 4, 0}}, {{6, 5, 13, 2, 3}, {8, 5, 12, 0}, {8, 5, 11, 0}, {9, 5, 11, 0}, {10, 5, 11, 0}, {10, 4, 10, 0}, {9, 3, 10, 0}, {8, 2, 10, 0}, {8, 2, 9, 0}, {9, 2, 9, 0}, {10, 2, 9, 0}, {11, 2, 9, 0}, {11, 2, 8, 1}, {11, 2, 7, 0}, {11, 2, 6, 0}, {10, 2, 6, 1}, {9, 2, 6, 0}, {9, 2, 5, 1}, {9, 2, 4, 0}, {8, 2, 4, 0}, {7, 2, 4, 0}, {6, 2, 4, 1}, {5, 2, 4, 0}}, {{9, 5, 13, 2, 3}, {12, 5, 12, 1}, {12, 5, 11, 0}, {11, 5, 10, 0}, {10, 4, 10, 0}, {9, 3, 10, 0}, {8, 2, 10, 0}, {8, 2, 9, 0}, {9, 2, 9, 0}, {10, 2, 9, 0}, {11, 2, 9, 0}, {11, 2, 8, 1}, {11, 2, 7, 0}, {11, 2, 6, 0}, {10, 2, 6, 1}, {9, 2, 6, 0}, {9, 2, 5, 1}, {9, 2, 4, 0}, {8, 2, 4, 0}, {7, 2, 4, 0}, {6, 2, 4, 1}, {5, 2, 4, 0}}, {{13, 5, 13, 2, 0}, {12, 5, 12, 1}, {12, 5, 11, 0}, {11, 5, 10, 0}, {10, 4, 10, 0}, {9, 3, 10, 0}, {8, 2, 10, 0}, {8, 2, 9, 0}, {9, 2, 9, 0}, {10, 2, 9, 0}, {11, 2, 9, 0}, {11, 2, 8, 1}, {11, 2, 7, 0}, {11, 2, 6, 0}, {10, 2, 6, 1}, {9, 2, 6, 0}, {9, 2, 5, 1}, {9, 2, 4, 0}, {8, 2, 4, 0}, {7, 2, 4, 0}, {6, 2, 4, 1}, {5, 2, 4, 0}}, {{5, 2, 4, 0}, {4, 2, 5, 0}, {3, 2, 6, 0}, {2, 2, 7, 0}, {1, 2, 8, 0}, {0, 2, 8, 0}}}, {{{6, 5, 10, 2, 3}, {8, 5, 9, 1}, {9, 5, 9, 0}, {10, 5, 9, 0}, {10, 4, 10, 0}, {9, 3, 10, 0}, {8, 2, 10, 0}, {8, 2, 9, 0}, {9, 2, 9, 0}, {10, 2, 9, 0}, {11, 2, 9, 0}, {11, 2, 8, 1}, {11, 2, 7, 0}, {11, 2, 6, 0}, {10, 2, 6, 1}, {9, 2, 6, 0}, {9, 2, 5, 1}, {9, 2, 4, 0}, {8, 2, 4, 0}, {7, 2, 3, 0}, {6, 2, 3, 1}, {5, 2, 3, 0}}, {{12, 2, 13, 2, 1}, {10, 2, 12, 0}, {9, 2, 12, 0}, {8, 2, 12, 0}, {8, 2, 11, 1}, {8, 2, 10, 0}, {8, 2, 9, 0}, {9, 2, 9, 0}, {10, 2, 9, 0}, {11, 2, 9, 0}, {11, 2, 8, 1}, {11, 2, 7, 0}, {11, 2, 6, 0}, {10, 2, 6, 1}, {9, 2, 6, 0}, {9, 2, 5, 1}, {9, 2, 4, 0}, {8, 2, 4, 0}, {7, 2, 3, 0}, {6, 2, 3, 1}, {5, 2, 3, 0}}, {{6, 5, 13, 2, 3}, {8, 5, 12, 0}, {8, 5, 11, 0}, {9, 5, 11, 0}, {10, 5, 11, 0}, {10, 4, 10, 0}, {9, 3, 10, 0}, {8, 2, 10, 0}, {8, 2, 9, 0}, {9, 2, 9, 0}, {10, 2, 9, 0}, {11, 2, 9, 0}, {11, 2, 8, 1}, {11, 2, 7, 0}, {11, 2, 6, 0}, {10, 2, 6, 1}, {9, 2, 6, 0}, {9, 2, 5, 1}, {9, 2, 4, 0}, {8, 2, 4, 0}, {7, 2, 3, 0}, {6, 2, 3, 1}, {5, 2, 3, 0}}, {{9, 5, 13, 2, 3}, {12, 5, 12, 1}, {12, 5, 11, 0}, {11, 5, 10, 0}, {10, 4, 10, 0}, {9, 3, 10, 0}, {8, 2, 10, 0}, {8, 2, 9, 0}, {9, 2, 9, 0}, {10, 2, 9, 0}, {11, 2, 9, 0}, {11, 2, 8, 1}, {11, 2, 7, 0}, {11, 2, 6, 0}, {10, 2, 6, 1}, {9, 2, 6, 0}, {9, 2, 5, 1}, {9, 2, 4, 0}, {8, 2, 4, 0}, {7, 2, 3, 0}, {6, 2, 3, 1}, {5, 2, 3, 0}}, {{13, 5, 13, 2, 0}, {12, 5, 12, 1}, {12, 5, 11, 0}, {11, 5, 10, 0}, {10, 4, 10, 0}, {9, 3, 10, 0}, {8, 2, 10, 0}, {8, 2, 9, 0}, {9, 2, 9, 0}, {10, 2, 9, 0}, {11, 2, 9, 0}, {11, 2, 8, 1}, {11, 2, 7, 0}, {11, 2, 6, 0}, {10, 2, 6, 1}, {9, 2, 6, 0}, {9, 2, 5, 1}, {9, 2, 4, 0}, {8, 2, 4, 0}, {7, 2, 3, 0}, {6, 2, 3, 1}, {5, 2, 3, 0}}, {{5, 2, 3, 0}, {4, 2, 4, 0}, {3, 2, 5, 0}, {3, 2, 6, 0}, {2, 2, 7, 0}, {1, 2, 8, 0}, {0, 2, 8, 0}}}}, ["mg_villages/schems/farm_full_1"] = {{{{8, 5, 10, 2, 3}, {10, 5, 9, 0}, {9, 4, 9, 0}, {8, 3, 9, 0}, {7, 2, 9, 0}, {6, 2, 9, 1}, {5, 2, 9, 0}}, {{8, 5, 11, 2, 3}, {10, 5, 10, 0}, {10, 5, 9, 0}, {9, 4, 9, 0}, {8, 3, 9, 0}, {7, 2, 9, 0}, {6, 2, 9, 1}, {5, 2, 9, 0}}, {{5, 2, 9, 0}, {4, 2, 9, 0}, {3, 2, 8, 0}, {2, 2, 8, 0}, {1, 2, 7, 0}, {0, 2, 7, 0}}}, {{{8, 5, 10, 2, 3}, {10, 5, 9, 0}, {9, 4, 9, 0}, {8, 3, 9, 0}, {7, 2, 9, 0}, {7, 2, 8, 1}, {7, 2, 7, 0}, {7, 2, 6, 0}, {6, 2, 6, 1}, {5, 2, 6, 0}}, {{8, 5, 11, 2, 3}, {10, 5, 10, 0}, {10, 5, 9, 0}, {9, 4, 9, 0}, {8, 3, 9, 0}, {7, 2, 9, 0}, {7, 2, 8, 1}, {7, 2, 7, 0}, {7, 2, 6, 0}, {6, 2, 6, 1}, {5, 2, 6, 0}}, {{5, 2, 6, 0}, {4, 2, 5, 0}, {3, 2, 5, 0}, {2, 2, 5, 0}, {1, 2, 6, 0}, {0, 2, 7, 0}}}, {{{8, 5, 10, 2, 3}, {10, 5, 9, 0}, {9, 4, 9, 0}, {8, 3, 9, 0}, {7, 2, 9, 0}, {7, 2, 8, 1}, {7, 2, 7, 0}, {7, 2, 6, 0}, {7, 2, 5, 0}, {6, 2, 5, 1}, {5, 2, 5, 0}}, {{8, 5, 11, 2, 3}, {10, 5, 10, 0}, {10, 5, 9, 0}, {9, 4, 9, 0}, {8, 3, 9, 0}, {7, 2, 9, 0}, {7, 2, 8, 1}, {7, 2, 7, 0}, {7, 2, 6, 0}, {7, 2, 5, 0}, {6, 2, 5, 1}, {5, 2, 5, 0}}, {{5, 2, 5, 0}, {4, 2, 5, 0}, {3, 2, 5, 0}, {2, 2, 5, 0}, {1, 2, 6, 0}, {0, 2, 7, 0}}}}, ["mg_villages/schems/taverne_2"] = {{{{7, 6, 7, 2, 0}, {6, 6, 6, 0}, {5, 6, 6, 0}, {4, 6, 5, 0}, {4, 6, 4, 0}, {4, 6, 3, 0}, {5, 6, 3, 0}, {6, 5, 3, 0}, {7, 4, 3, 0}, {8, 3, 3, 0}, {8, 3, 4, 0}, {7, 3, 4, 0}, {6, 3, 5, 0}, {6, 3, 6, 0}, {5, 3, 6, 0}, {5, 3, 7, 0}, {5, 3, 8, 1}, {4, 3, 9, 0}}, {{8, 6, 7, 2, 0}, {9, 6, 5, 0}, {8, 6, 5, 0}, {7, 6, 5, 0}, {6, 6, 5, 0}, {5, 6, 5, 0}, {4, 6, 5, 0}, {4, 6, 4, 0}, {4, 6, 3, 0}, {5, 6, 3, 0}, {6, 5, 3, 0}, {7, 4, 3, 0}, {8, 3, 3, 0}, {8, 3, 4, 0}, {7, 3, 4, 0}, {6, 3, 5, 0}, {6, 3, 6, 0}, {5, 3, 6, 0}, {5, 3, 7, 0}, {5, 3, 8, 1}, {4, 3, 9, 0}}, {{4, 3, 9, 0}, {3, 4, 9, 0}, {2, 3, 9, 0}, {1, 2, 8, 0}, {0, 2, 7, 0}}}}, ["mg_villages/schems/trader_clay_2"] = {{{{11, 2, 8, 2, 1}, {10, 2, 7, 1}, {10, 2, 6, 0}, {10, 2, 5, 0}, {10, 2, 4, 0}, {9, 2, 4, 0}, {8, 2, 4, 1}, {7, 2, 4, 0}}, {{7, 2, 4, 0}, {6, 2, 3, 0}, {5, 2, 3, 0}, {5, 2, 2, 0}, {5, 2, 1, 0}, {6, 1, 0, 0}}}}, ["mg_villages/schems/logcabinpub1"] = {{{{7, 5, 3, 2, 2}, {8, 5, 4, 0}, {8, 5, 5, 0}, {8, 5, 6, 0}, {8, 5, 7, 0}, {8, 5, 8, 0}, {8, 5, 9, 0}, {8, 2, 10, 0}, {8, 2, 9, 0}, {9, 2, 9, 0}, {9, 2, 8, 0}, {9, 2, 7, 0}, {9, 2, 6, 0}, {9, 2, 5, 1}, {9, 2, 4, 0}}, {{9, 5, 3, 2, 2}, {8, 5, 4, 0}, {8, 5, 5, 0}, {8, 5, 6, 0}, {8, 5, 7, 0}, {8, 5, 8, 0}, {8, 5, 9, 0}, {8, 2, 10, 0}, {8, 2, 9, 0}, {9, 2, 9, 0}, {9, 2, 8, 0}, {9, 2, 7, 0}, {9, 2, 6, 0}, {9, 2, 5, 1}, {9, 2, 4, 0}}, {{7, 5, 6, 2, 2}, {8, 5, 7, 0}, {8, 5, 8, 0}, {8, 5, 9, 0}, {8, 2, 10, 0}, {8, 2, 9, 0}, {9, 2, 9, 0}, {9, 2, 8, 0}, {9, 2, 7, 0}, {9, 2, 6, 0}, {9, 2, 5, 1}, {9, 2, 4, 0}}, {{9, 5, 6, 2, 2}, {8, 5, 7, 0}, {8, 5, 8, 0}, {8, 5, 9, 0}, {8, 2, 10, 0}, {8, 2, 9, 0}, {9, 2, 9, 0}, {9, 2, 8, 0}, {9, 2, 7, 0}, {9, 2, 6, 0}, {9, 2, 5, 1}, {9, 2, 4, 0}}, {{7, 5, 9, 2, 2}, {8, 2, 10, 0}, {8, 2, 9, 0}, {9, 2, 9, 0}, {9, 2, 8, 0}, {9, 2, 7, 0}, {9, 2, 6, 0}, {9, 2, 5, 1}, {9, 2, 4, 0}}, {{9, 5, 9, 2, 2}, {8, 2, 10, 0}, {8, 2, 9, 0}, {9, 2, 9, 0}, {9, 2, 8, 0}, {9, 2, 7, 0}, {9, 2, 6, 0}, {9, 2, 5, 1}, {9, 2, 4, 0}}, {{9, 2, 4, 0}, {8, 2, 3, 0}, {8, 2, 2, 0}, {8, 2, 1, 0}, {7, 2, 0, 0}, {6, 2, 0, 0}}}}, ["village_sandcity/schems/sandcity_ap_tiny_3_1_270"] = {{{{6, 2, 2, 2, 2}, {5, 2, 3, 0}, {5, 2, 4, 1}, {5, 2, 5, 0}}, {{2, 2, 3, 2, 3}, {3, 2, 4, 0}, {4, 2, 4, 1}, {5, 2, 5, 0}}, {{9, 2, 3, 2, 1}, {8, 2, 4, 0}, {7, 2, 4, 1}, {7, 2, 5, 0}}, {{5, 2, 5, 0}, {5, 2, 6, 0}}}}, ["mg_villages/schems/lumberjack_church_1|WORKPLACE"] = {{{{5, 3, 13, 2, 0}, {6, 3, 13, 0}, {6, 3, 12, 0}, {6, 2, 11, 0}, {5, 2, 11, 0}, {5, 2, 10, 0}, {5, 2, 9, 0}, {5, 2, 8, 0}, {5, 2, 7, 0}, {5, 2, 6, 0}, {5, 2, 5, 0}, {5, 2, 4, 0}, {5, 2, 3, 1}, {5, 2, 2, 0}}, {{5, 2, 2, 0}, {5, 2, 1, 0}, {5, 1, 0, 0}}}}, ["mg_villages/schems/lumberjack_shop_1|WORKPLACE"] = {{{{8, 2, 6, 2, 1}, {8, 2, 5, 0}, {7, 2, 5, 0}, {6, 2, 5, 0}, {6, 2, 4, 1}, {6, 2, 3, 0}}, {{6, 2, 3, 0}, {6, 2, 2, 0}, {6, 2, 1, 0}, {6, 1, 0, 0}}}}, ["mg_villages/schems/lumberjack_pub_1|WORKPLACE"] = {{{{8, 2, 10, 2, 0}, {9, 2, 10, 0}, {9, 2, 9, 0}, {9, 2, 8, 0}, {8, 2, 8, 0}, {7, 2, 8, 0}, {6, 2, 8, 0}, {6, 2, 7, 0}, {6, 2, 6, 0}, {6, 2, 5, 0}, {6, 2, 4, 0}, {6, 2, 3, 1}, {6, 2, 2, 0}}, {{6, 2, 2, 0}, {6, 2, 1, 0}, {6, 1, 0, 0}}}}, ["mg_villages/schems/trader_clay_3"] = {{{{7, 2, 9, 2, 1}, {5, 2, 8, 1}, {5, 2, 7, 0}}, {{7, 2, 11, 2, 1}, {5, 2, 10, 0}, {5, 2, 9, 0}, {5, 2, 8, 1}, {5, 2, 7, 0}}, {{5, 2, 7, 0}, {5, 1, 6, 0}, {5, 1, 5, 0}, {5, 1, 4, 0}, {5, 1, 3, 0}, {5, 1, 2, 0}, {5, 1, 1, 0}, {5, 1, 0, 0}}}}, ["mg_villages/schems/trader_clay_4|WORKPLACE"] = {{{{5, 2, 10, 2, 3}, {6, 2, 9, 0}, {6, 2, 8, 0}, {6, 2, 7, 1}, {6, 2, 6, 0}}, {{6, 2, 6, 0}, {6, 1, 5, 0}, {5, 1, 4, 0}, {5, 1, 3, 0}, {5, 1, 2, 0}, {5, 1, 1, 0}, {5, 1, 0, 0}}}}, ["mg_villages/schems/trader_clay_5"] = {{{{3, 5, 9, 2, 3}, {4, 5, 8, 0}, {4, 5, 7, 0}, {4, 5, 6, 1}, {4, 5, 5, 0}}, {{6, 5, 9, 2, 1}, {5, 5, 8, 0}, {4, 5, 8, 0}, {4, 5, 7, 0}, {4, 5, 6, 1}, {4, 5, 5, 0}}, {{7, 5, 9, 2, 0}, {5, 5, 8, 0}, {4, 5, 8, 0}, {4, 5, 7, 0}, {4, 5, 6, 1}, {4, 5, 5, 0}}, {{4, 5, 5, 0}, {3, 4, 4, 0}, {3, 3, 3, 0}, {3, 2, 2, 0}, {3, 1, 1, 0}, {4, 1, 0, 0}, {5, 1, 0, 0}}}}, ["mg_villages/schems/tower_1_0|WORKPLACE"] = {{{{2, 2, 4, 2, 0}, {2, 2, 3, 0}, {1, 2, 3, 1}, {0, 2, 3, 0}}, {}}}, ["village_towntest/schems/towntest_cornernote_tower_1_90|WORKPLACE"] = {{{{7, 14, 3, 2, 0}, {6, 14, 4, 0}, {6, 14, 5, 0}, {6, 14, 6, 0}, {6, 11, 7, 0}, {6, 11, 6, 0}, {6, 11, 5, 0}, {6, 11, 4, 0}, {6, 8, 3, 0}, {6, 8, 4, 0}, {6, 8, 5, 0}, {6, 8, 6, 0}, {6, 5, 7, 0}, {6, 5, 6, 0}, {6, 5, 5, 0}, {6, 5, 4, 0}, {6, 2, 3, 0}, {5, 2, 3, 0}, {4, 2, 3, 0}, {4, 2, 2, 1}, {4, 2, 1, 0}}, {{4, 2, 1, 0}, {5, 2, 0, 0}, {6, 2, 0, 0}}}}, ["mg_villages/schems/tree_place_10|WORKPLACE"] = {{{{4, 1, 9, 2, 1}, {3, 1, 8, 0}, {2, 1, 7, 0}, {1, 1, 6, 0}, {0, 1, 6, 0}}, {}}}, ["mg_villages/schems/house_1_0"] = {{{{2, 2, 2, 2, 3}, {2, 2, 4, 0}, {1, 2, 4, 1}, {0, 2, 4, 0}}, {{4, 6, 2, 2, 2}, {3, 6, 3, 0}, {3, 6, 4, 0}, {4, 6, 4, 0}, {5, 6, 4, 0}, {6, 6, 4, 0}, {6, 6, 5, 0}, {6, 6, 6, 0}, {5, 5, 6, 0}, {4, 4, 6, 0}, {3, 3, 6, 0}, {3, 2, 5, 0}, {2, 2, 4, 0}, {1, 2, 4, 1}, {0, 2, 4, 0}}, {{5, 6, 2, 2, 2}, {6, 6, 3, 0}, {6, 6, 4, 0}, {6, 6, 5, 0}, {6, 6, 6, 0}, {5, 5, 6, 0}, {4, 4, 6, 0}, {3, 3, 6, 0}, {3, 2, 5, 0}, {2, 2, 4, 0}, {1, 2, 4, 1}, {0, 2, 4, 0}}, {{5, 2, 6, 2, 3}, {4, 2, 4, 0}, {3, 2, 4, 0}, {2, 2, 4, 0}, {1, 2, 4, 1}, {0, 2, 4, 0}}, {}}}, ["village_sandcity/schems/sandcity_tiny_1_1_270"] = {{{{3, 2, 2, 2, 1}, {2, 2, 3, 0}, {2, 2, 4, 1}, {2, 2, 5, 0}}, {}}}, ["mg_villages/schems/clay_pit_4|WORKPLACE"] = {{{{8, 2, 6, 2, 0}, {7, 2, 7, 0}, {7, 2, 8, 0}, {7, 2, 9, 0}, {6, 3, 9, 0}, {5, 3, 9, 0}, {4, 3, 9, 0}, {3, 2, 9, 0}, {2, 2, 8, 0}, {1, 2, 7, 0}, {0, 2, 6, 0}, {0, 2, 5, 0}}, {}}}, ["mg_villages/schems/mill_1|WORKPLACE"] = {{{{10, 7, 8, 2, 0}, {10, 7, 7, 0}, {9, 7, 7, 1}, {8, 7, 7, 0}}, {{8, 7, 7, 0}, {8, 6, 8, 0}, {7, 5, 8, 0}, {6, 5, 8, 0}, {5, 5, 8, 0}, {4, 4, 8, 0}, {3, 4, 8, 0}, {2, 3, 8, 0}, {1, 3, 8, 0}, {0, 2, 8, 0}}}}, ["mg_villages/schems/default_town_house_large_1"] = {{{{10, 17, 13, 2, 1}, {10, 17, 15, 0}, {10, 17, 16, 1}, {10, 17, 17, 0}, {10, 17, 18, 0}, {10, 17, 19, 0}, {10, 17, 20, 0}, {11, 16, 20, 0}, {11, 15, 19, 0}, {11, 14, 18, 0}, {11, 13, 17, 0}, {10, 12, 17, 0}, {9, 12, 18, 0}, {9, 12, 19, 0}, {9, 12, 20, 0}, {10, 12, 21, 0}, {11, 12, 22, 0}, {12, 12, 23, 0}, {12, 12, 24, 0}, {13, 12, 24, 0}, {14, 12, 24, 0}, {15, 12, 23, 0}, {15, 11, 22, 0}, {15, 10, 21, 0}, {15, 9, 20, 0}, {15, 8, 19, 0}, {15, 7, 18, 0}, {15, 7, 17, 0}, {16, 7, 16, 0}, {16, 7, 15, 0}, {16, 7, 14, 0}, {15, 7, 13, 0}, {15, 7, 12, 0}, {15, 7, 11, 0}, {15, 7, 10, 0}, {15, 7, 9, 0}, {15, 7, 8, 0}, {15, 7, 7, 1}, {15, 7, 6, 0}}, {{12, 17, 15, 2, 0}, {13, 17, 16, 1}, {13, 17, 17, 0}, {12, 17, 17, 0}, {11, 17, 17, 0}, {10, 17, 17, 0}, {10, 17, 18, 0}, {10, 17, 19, 0}, {10, 17, 20, 0}, {11, 16, 20, 0}, {11, 15, 19, 0}, {11, 14, 18, 0}, {11, 13, 17, 0}, {10, 12, 17, 0}, {9, 12, 18, 0}, {9, 12, 19, 0}, {9, 12, 20, 0}, {10, 12, 21, 0}, {11, 12, 22, 0}, {12, 12, 23, 0}, {12, 12, 24, 0}, {13, 12, 24, 0}, {14, 12, 24, 0}, {15, 12, 23, 0}, {15, 11, 22, 0}, {15, 10, 21, 0}, {15, 9, 20, 0}, {15, 8, 19, 0}, {15, 7, 18, 0}, {15, 7, 17, 0}, {16, 7, 16, 0}, {16, 7, 15, 0}, {16, 7, 14, 0}, {15, 7, 13, 0}, {15, 7, 12, 0}, {15, 7, 11, 0}, {15, 7, 10, 0}, {15, 7, 9, 0}, {15, 7, 8, 0}, {15, 7, 7, 1}, {15, 7, 6, 0}}, {{15, 17, 15, 2, 0}, {13, 17, 15, 0}, {13, 17, 16, 1}, {13, 17, 17, 0}, {12, 17, 17, 0}, {11, 17, 17, 0}, {10, 17, 17, 0}, {10, 17, 18, 0}, {10, 17, 19, 0}, {10, 17, 20, 0}, {11, 16, 20, 0}, {11, 15, 19, 0}, {11, 14, 18, 0}, {11, 13, 17, 0}, {10, 12, 17, 0}, {9, 12, 18, 0}, {9, 12, 19, 0}, {9, 12, 20, 0}, {10, 12, 21, 0}, {11, 12, 22, 0}, {12, 12, 23, 0}, {12, 12, 24, 0}, {13, 12, 24, 0}, {14, 12, 24, 0}, {15, 12, 23, 0}, {15, 11, 22, 0}, {15, 10, 21, 0}, {15, 9, 20, 0}, {15, 8, 19, 0}, {15, 7, 18, 0}, {15, 7, 17, 0}, {16, 7, 16, 0}, {16, 7, 15, 0}, {16, 7, 14, 0}, {15, 7, 13, 0}, {15, 7, 12, 0}, {15, 7, 11, 0}, {15, 7, 10, 0}, {15, 7, 9, 0}, {15, 7, 8, 0}, {15, 7, 7, 1}, {15, 7, 6, 0}}, {{17, 17, 15, 2, 3}, {18, 17, 14, 0}, {19, 17, 14, 0}, {19, 17, 15, 0}, {19, 17, 16, 0}, {19, 17, 17, 0}, {18, 17, 17, 0}, {17, 17, 18, 0}, {16, 17, 18, 1}, {15, 17, 18, 0}, {14, 17, 17, 0}, {13, 17, 17, 0}, {12, 17, 17, 0}, {11, 17, 17, 0}, {10, 17, 17, 0}, {10, 17, 18, 0}, {10, 17, 19, 0}, {10, 17, 20, 0}, {11, 16, 20, 0}, {11, 15, 19, 0}, {11, 14, 18, 0}, {11, 13, 17, 0}, {10, 12, 17, 0}, {9, 12, 18, 0}, {9, 12, 19, 0}, {9, 12, 20, 0}, {10, 12, 21, 0}, {11, 12, 22, 0}, {12, 12, 23, 0}, {12, 12, 24, 0}, {13, 12, 24, 0}, {14, 12, 24, 0}, {15, 12, 23, 0}, {15, 11, 22, 0}, {15, 10, 21, 0}, {15, 9, 20, 0}, {15, 8, 19, 0}, {15, 7, 18, 0}, {15, 7, 17, 0}, {16, 7, 16, 0}, {16, 7, 15, 0}, {16, 7, 14, 0}, {15, 7, 13, 0}, {15, 7, 12, 0}, {15, 7, 11, 0}, {15, 7, 10, 0}, {15, 7, 9, 0}, {15, 7, 8, 0}, {15, 7, 7, 1}, {15, 7, 6, 0}}, {{9, 17, 16, 2, 1}, {10, 17, 17, 0}, {10, 17, 18, 0}, {10, 17, 19, 0}, {10, 17, 20, 0}, {11, 16, 20, 0}, {11, 15, 19, 0}, {11, 14, 18, 0}, {11, 13, 17, 0}, {10, 12, 17, 0}, {9, 12, 18, 0}, {9, 12, 19, 0}, {9, 12, 20, 0}, {10, 12, 21, 0}, {11, 12, 22, 0}, {12, 12, 23, 0}, {12, 12, 24, 0}, {13, 12, 24, 0}, {14, 12, 24, 0}, {15, 12, 23, 0}, {15, 11, 22, 0}, {15, 10, 21, 0}, {15, 9, 20, 0}, {15, 8, 19, 0}, {15, 7, 18, 0}, {15, 7, 17, 0}, {16, 7, 16, 0}, {16, 7, 15, 0}, {16, 7, 14, 0}, {15, 7, 13, 0}, {15, 7, 12, 0}, {15, 7, 11, 0}, {15, 7, 10, 0}, {15, 7, 9, 0}, {15, 7, 8, 0}, {15, 7, 7, 1}, {15, 7, 6, 0}}, {{17, 17, 16, 2, 3}, {17, 17, 18, 0}, {16, 17, 18, 1}, {15, 17, 18, 0}, {14, 17, 17, 0}, {13, 17, 17, 0}, {12, 17, 17, 0}, {11, 17, 17, 0}, {10, 17, 17, 0}, {10, 17, 18, 0}, {10, 17, 19, 0}, {10, 17, 20, 0}, {11, 16, 20, 0}, {11, 15, 19, 0}, {11, 14, 18, 0}, {11, 13, 17, 0}, {10, 12, 17, 0}, {9, 12, 18, 0}, {9, 12, 19, 0}, {9, 12, 20, 0}, {10, 12, 21, 0}, {11, 12, 22, 0}, {12, 12, 23, 0}, {12, 12, 24, 0}, {13, 12, 24, 0}, {14, 12, 24, 0}, {15, 12, 23, 0}, {15, 11, 22, 0}, {15, 10, 21, 0}, {15, 9, 20, 0}, {15, 8, 19, 0}, {15, 7, 18, 0}, {15, 7, 17, 0}, {16, 7, 16, 0}, {16, 7, 15, 0}, {16, 7, 14, 0}, {15, 7, 13, 0}, {15, 7, 12, 0}, {15, 7, 11, 0}, {15, 7, 10, 0}, {15, 7, 9, 0}, {15, 7, 8, 0}, {15, 7, 7, 1}, {15, 7, 6, 0}}, {{15, 17, 20, 2, 2}, {14, 17, 21, 0}, {14, 17, 22, 0}, {13, 17, 22, 1}, {12, 17, 22, 0}, {11, 17, 21, 0}, {11, 16, 20, 0}, {11, 15, 19, 0}, {11, 14, 18, 0}, {11, 13, 17, 0}, {10, 12, 17, 0}, {9, 12, 18, 0}, {9, 12, 19, 0}, {9, 12, 20, 0}, {10, 12, 21, 0}, {11, 12, 22, 0}, {12, 12, 23, 0}, {12, 12, 24, 0}, {13, 12, 24, 0}, {14, 12, 24, 0}, {15, 12, 23, 0}, {15, 11, 22, 0}, {15, 10, 21, 0}, {15, 9, 20, 0}, {15, 8, 19, 0}, {15, 7, 18, 0}, {15, 7, 17, 0}, {16, 7, 16, 0}, {16, 7, 15, 0}, {16, 7, 14, 0}, {15, 7, 13, 0}, {15, 7, 12, 0}, {15, 7, 11, 0}, {15, 7, 10, 0}, {15, 7, 9, 0}, {15, 7, 8, 0}, {15, 7, 7, 1}, {15, 7, 6, 0}}, {{16, 17, 20, 2, 2}, {17, 17, 21, 0}, {17, 17, 22, 0}, {16, 17, 22, 0}, {15, 17, 22, 0}, {14, 17, 22, 0}, {13, 17, 22, 1}, {12, 17, 22, 0}, {11, 17, 21, 0}, {11, 16, 20, 0}, {11, 15, 19, 0}, {11, 14, 18, 0}, {11, 13, 17, 0}, {10, 12, 17, 0}, {9, 12, 18, 0}, {9, 12, 19, 0}, {9, 12, 20, 0}, {10, 12, 21, 0}, {11, 12, 22, 0}, {12, 12, 23, 0}, {12, 12, 24, 0}, {13, 12, 24, 0}, {14, 12, 24, 0}, {15, 12, 23, 0}, {15, 11, 22, 0}, {15, 10, 21, 0}, {15, 9, 20, 0}, {15, 8, 19, 0}, {15, 7, 18, 0}, {15, 7, 17, 0}, {16, 7, 16, 0}, {16, 7, 15, 0}, {16, 7, 14, 0}, {15, 7, 13, 0}, {15, 7, 12, 0}, {15, 7, 11, 0}, {15, 7, 10, 0}, {15, 7, 9, 0}, {15, 7, 8, 0}, {15, 7, 7, 1}, {15, 7, 6, 0}}, {{15, 7, 6, 0}, {15, 6, 5, 0}, {15, 6, 4, 0}, {15, 6, 3, 0}, {15, 6, 2, 0}, {15, 6, 1, 0}, {15, 6, 0, 0}}}, {{{10, 17, 13, 2, 1}, {10, 17, 15, 0}, {10, 17, 16, 1}, {10, 17, 17, 0}, {10, 17, 18, 0}, {10, 17, 19, 0}, {10, 17, 20, 0}, {11, 16, 20, 0}, {11, 15, 19, 0}, {11, 14, 18, 0}, {11, 13, 17, 0}, {10, 12, 17, 0}, {9, 12, 18, 0}, {9, 12, 19, 0}, {9, 12, 20, 0}, {10, 12, 21, 0}, {11, 12, 22, 0}, {12, 12, 23, 0}, {12, 12, 24, 0}, {13, 12, 24, 0}, {14, 12, 24, 0}, {14, 12, 23, 0}, {14, 11, 22, 0}, {14, 10, 21, 0}, {14, 9, 20, 0}, {14, 8, 19, 0}, {14, 7, 18, 0}, {14, 7, 17, 0}, {13, 7, 16, 0}, {13, 7, 15, 0}, {13, 7, 14, 0}, {14, 7, 13, 0}, {14, 7, 12, 0}, {14, 7, 11, 0}, {14, 7, 10, 0}, {14, 7, 9, 0}, {14, 7, 8, 0}, {14, 7, 7, 1}, {14, 7, 6, 0}}, {{12, 17, 15, 2, 0}, {13, 17, 16, 1}, {13, 17, 17, 0}, {12, 17, 17, 0}, {11, 17, 17, 0}, {10, 17, 17, 0}, {10, 17, 18, 0}, {10, 17, 19, 0}, {10, 17, 20, 0}, {11, 16, 20, 0}, {11, 15, 19, 0}, {11, 14, 18, 0}, {11, 13, 17, 0}, {10, 12, 17, 0}, {9, 12, 18, 0}, {9, 12, 19, 0}, {9, 12, 20, 0}, {10, 12, 21, 0}, {11, 12, 22, 0}, {12, 12, 23, 0}, {12, 12, 24, 0}, {13, 12, 24, 0}, {14, 12, 24, 0}, {14, 12, 23, 0}, {14, 11, 22, 0}, {14, 10, 21, 0}, {14, 9, 20, 0}, {14, 8, 19, 0}, {14, 7, 18, 0}, {14, 7, 17, 0}, {13, 7, 16, 0}, {13, 7, 15, 0}, {13, 7, 14, 0}, {14, 7, 13, 0}, {14, 7, 12, 0}, {14, 7, 11, 0}, {14, 7, 10, 0}, {14, 7, 9, 0}, {14, 7, 8, 0}, {14, 7, 7, 1}, {14, 7, 6, 0}}, {{15, 17, 15, 2, 0}, {13, 17, 15, 0}, {13, 17, 16, 1}, {13, 17, 17, 0}, {12, 17, 17, 0}, {11, 17, 17, 0}, {10, 17, 17, 0}, {10, 17, 18, 0}, {10, 17, 19, 0}, {10, 17, 20, 0}, {11, 16, 20, 0}, {11, 15, 19, 0}, {11, 14, 18, 0}, {11, 13, 17, 0}, {10, 12, 17, 0}, {9, 12, 18, 0}, {9, 12, 19, 0}, {9, 12, 20, 0}, {10, 12, 21, 0}, {11, 12, 22, 0}, {12, 12, 23, 0}, {12, 12, 24, 0}, {13, 12, 24, 0}, {14, 12, 24, 0}, {14, 12, 23, 0}, {14, 11, 22, 0}, {14, 10, 21, 0}, {14, 9, 20, 0}, {14, 8, 19, 0}, {14, 7, 18, 0}, {14, 7, 17, 0}, {13, 7, 16, 0}, {13, 7, 15, 0}, {13, 7, 14, 0}, {14, 7, 13, 0}, {14, 7, 12, 0}, {14, 7, 11, 0}, {14, 7, 10, 0}, {14, 7, 9, 0}, {14, 7, 8, 0}, {14, 7, 7, 1}, {14, 7, 6, 0}}, {{17, 17, 15, 2, 3}, {18, 17, 14, 0}, {19, 17, 14, 0}, {19, 17, 15, 0}, {19, 17, 16, 0}, {19, 17, 17, 0}, {18, 17, 17, 0}, {17, 17, 18, 0}, {16, 17, 18, 1}, {15, 17, 18, 0}, {14, 17, 17, 0}, {13, 17, 17, 0}, {12, 17, 17, 0}, {11, 17, 17, 0}, {10, 17, 17, 0}, {10, 17, 18, 0}, {10, 17, 19, 0}, {10, 17, 20, 0}, {11, 16, 20, 0}, {11, 15, 19, 0}, {11, 14, 18, 0}, {11, 13, 17, 0}, {10, 12, 17, 0}, {9, 12, 18, 0}, {9, 12, 19, 0}, {9, 12, 20, 0}, {10, 12, 21, 0}, {11, 12, 22, 0}, {12, 12, 23, 0}, {12, 12, 24, 0}, {13, 12, 24, 0}, {14, 12, 24, 0}, {14, 12, 23, 0}, {14, 11, 22, 0}, {14, 10, 21, 0}, {14, 9, 20, 0}, {14, 8, 19, 0}, {14, 7, 18, 0}, {14, 7, 17, 0}, {13, 7, 16, 0}, {13, 7, 15, 0}, {13, 7, 14, 0}, {14, 7, 13, 0}, {14, 7, 12, 0}, {14, 7, 11, 0}, {14, 7, 10, 0}, {14, 7, 9, 0}, {14, 7, 8, 0}, {14, 7, 7, 1}, {14, 7, 6, 0}}, {{9, 17, 16, 2, 1}, {10, 17, 17, 0}, {10, 17, 18, 0}, {10, 17, 19, 0}, {10, 17, 20, 0}, {11, 16, 20, 0}, {11, 15, 19, 0}, {11, 14, 18, 0}, {11, 13, 17, 0}, {10, 12, 17, 0}, {9, 12, 18, 0}, {9, 12, 19, 0}, {9, 12, 20, 0}, {10, 12, 21, 0}, {11, 12, 22, 0}, {12, 12, 23, 0}, {12, 12, 24, 0}, {13, 12, 24, 0}, {14, 12, 24, 0}, {14, 12, 23, 0}, {14, 11, 22, 0}, {14, 10, 21, 0}, {14, 9, 20, 0}, {14, 8, 19, 0}, {14, 7, 18, 0}, {14, 7, 17, 0}, {13, 7, 16, 0}, {13, 7, 15, 0}, {13, 7, 14, 0}, {14, 7, 13, 0}, {14, 7, 12, 0}, {14, 7, 11, 0}, {14, 7, 10, 0}, {14, 7, 9, 0}, {14, 7, 8, 0}, {14, 7, 7, 1}, {14, 7, 6, 0}}, {{17, 17, 16, 2, 3}, {17, 17, 18, 0}, {16, 17, 18, 1}, {15, 17, 18, 0}, {14, 17, 17, 0}, {13, 17, 17, 0}, {12, 17, 17, 0}, {11, 17, 17, 0}, {10, 17, 17, 0}, {10, 17, 18, 0}, {10, 17, 19, 0}, {10, 17, 20, 0}, {11, 16, 20, 0}, {11, 15, 19, 0}, {11, 14, 18, 0}, {11, 13, 17, 0}, {10, 12, 17, 0}, {9, 12, 18, 0}, {9, 12, 19, 0}, {9, 12, 20, 0}, {10, 12, 21, 0}, {11, 12, 22, 0}, {12, 12, 23, 0}, {12, 12, 24, 0}, {13, 12, 24, 0}, {14, 12, 24, 0}, {14, 12, 23, 0}, {14, 11, 22, 0}, {14, 10, 21, 0}, {14, 9, 20, 0}, {14, 8, 19, 0}, {14, 7, 18, 0}, {14, 7, 17, 0}, {13, 7, 16, 0}, {13, 7, 15, 0}, {13, 7, 14, 0}, {14, 7, 13, 0}, {14, 7, 12, 0}, {14, 7, 11, 0}, {14, 7, 10, 0}, {14, 7, 9, 0}, {14, 7, 8, 0}, {14, 7, 7, 1}, {14, 7, 6, 0}}, {{15, 17, 20, 2, 2}, {14, 17, 21, 0}, {14, 17, 22, 0}, {13, 17, 22, 1}, {12, 17, 22, 0}, {11, 17, 21, 0}, {11, 16, 20, 0}, {11, 15, 19, 0}, {11, 14, 18, 0}, {11, 13, 17, 0}, {10, 12, 17, 0}, {9, 12, 18, 0}, {9, 12, 19, 0}, {9, 12, 20, 0}, {10, 12, 21, 0}, {11, 12, 22, 0}, {12, 12, 23, 0}, {12, 12, 24, 0}, {13, 12, 24, 0}, {14, 12, 24, 0}, {14, 12, 23, 0}, {14, 11, 22, 0}, {14, 10, 21, 0}, {14, 9, 20, 0}, {14, 8, 19, 0}, {14, 7, 18, 0}, {14, 7, 17, 0}, {13, 7, 16, 0}, {13, 7, 15, 0}, {13, 7, 14, 0}, {14, 7, 13, 0}, {14, 7, 12, 0}, {14, 7, 11, 0}, {14, 7, 10, 0}, {14, 7, 9, 0}, {14, 7, 8, 0}, {14, 7, 7, 1}, {14, 7, 6, 0}}, {{16, 17, 20, 2, 2}, {17, 17, 21, 0}, {17, 17, 22, 0}, {16, 17, 22, 0}, {15, 17, 22, 0}, {14, 17, 22, 0}, {13, 17, 22, 1}, {12, 17, 22, 0}, {11, 17, 21, 0}, {11, 16, 20, 0}, {11, 15, 19, 0}, {11, 14, 18, 0}, {11, 13, 17, 0}, {10, 12, 17, 0}, {9, 12, 18, 0}, {9, 12, 19, 0}, {9, 12, 20, 0}, {10, 12, 21, 0}, {11, 12, 22, 0}, {12, 12, 23, 0}, {12, 12, 24, 0}, {13, 12, 24, 0}, {14, 12, 24, 0}, {14, 12, 23, 0}, {14, 11, 22, 0}, {14, 10, 21, 0}, {14, 9, 20, 0}, {14, 8, 19, 0}, {14, 7, 18, 0}, {14, 7, 17, 0}, {13, 7, 16, 0}, {13, 7, 15, 0}, {13, 7, 14, 0}, {14, 7, 13, 0}, {14, 7, 12, 0}, {14, 7, 11, 0}, {14, 7, 10, 0}, {14, 7, 9, 0}, {14, 7, 8, 0}, {14, 7, 7, 1}, {14, 7, 6, 0}}, {{14, 7, 6, 0}, {14, 6, 5, 0}, {15, 6, 4, 0}, {15, 6, 3, 0}, {15, 6, 2, 0}, {15, 6, 1, 0}, {15, 6, 0, 0}}}, {{{10, 17, 13, 2, 1}, {10, 17, 15, 0}, {10, 17, 16, 1}, {10, 17, 17, 0}, {10, 17, 18, 0}, {10, 17, 19, 0}, {10, 17, 20, 0}, {11, 16, 20, 0}, {11, 15, 19, 0}, {11, 14, 18, 0}, {11, 13, 17, 0}, {10, 12, 17, 0}, {9, 12, 18, 0}, {9, 12, 19, 0}, {9, 12, 20, 0}, {10, 12, 21, 0}, {11, 12, 22, 0}, {12, 12, 23, 0}, {12, 12, 24, 0}, {13, 12, 24, 0}, {14, 12, 24, 0}, {14, 12, 23, 0}, {14, 11, 22, 0}, {14, 10, 21, 0}, {14, 9, 20, 0}, {14, 8, 19, 0}, {14, 7, 18, 0}, {13, 7, 18, 0}, {12, 7, 18, 1}, {11, 7, 18, 0}, {10, 7, 18, 0}, {10, 7, 19, 1}, {10, 7, 20, 0}, {10, 7, 21, 0}, {11, 7, 22, 0}, {12, 7, 23, 0}, {12, 7, 24, 0}, {13, 7, 24, 1}, {14, 7, 25, 0}, {14, 7, 26, 1}, {14, 7, 27, 0}}, {{12, 17, 15, 2, 0}, {13, 17, 16, 1}, {13, 17, 17, 0}, {12, 17, 17, 0}, {11, 17, 17, 0}, {10, 17, 17, 0}, {10, 17, 18, 0}, {10, 17, 19, 0}, {10, 17, 20, 0}, {11, 16, 20, 0}, {11, 15, 19, 0}, {11, 14, 18, 0}, {11, 13, 17, 0}, {10, 12, 17, 0}, {9, 12, 18, 0}, {9, 12, 19, 0}, {9, 12, 20, 0}, {10, 12, 21, 0}, {11, 12, 22, 0}, {12, 12, 23, 0}, {12, 12, 24, 0}, {13, 12, 24, 0}, {14, 12, 24, 0}, {14, 12, 23, 0}, {14, 11, 22, 0}, {14, 10, 21, 0}, {14, 9, 20, 0}, {14, 8, 19, 0}, {14, 7, 18, 0}, {13, 7, 18, 0}, {12, 7, 18, 1}, {11, 7, 18, 0}, {10, 7, 18, 0}, {10, 7, 19, 1}, {10, 7, 20, 0}, {10, 7, 21, 0}, {11, 7, 22, 0}, {12, 7, 23, 0}, {12, 7, 24, 0}, {13, 7, 24, 1}, {14, 7, 25, 0}, {14, 7, 26, 1}, {14, 7, 27, 0}}, {{15, 17, 15, 2, 0}, {13, 17, 15, 0}, {13, 17, 16, 1}, {13, 17, 17, 0}, {12, 17, 17, 0}, {11, 17, 17, 0}, {10, 17, 17, 0}, {10, 17, 18, 0}, {10, 17, 19, 0}, {10, 17, 20, 0}, {11, 16, 20, 0}, {11, 15, 19, 0}, {11, 14, 18, 0}, {11, 13, 17, 0}, {10, 12, 17, 0}, {9, 12, 18, 0}, {9, 12, 19, 0}, {9, 12, 20, 0}, {10, 12, 21, 0}, {11, 12, 22, 0}, {12, 12, 23, 0}, {12, 12, 24, 0}, {13, 12, 24, 0}, {14, 12, 24, 0}, {14, 12, 23, 0}, {14, 11, 22, 0}, {14, 10, 21, 0}, {14, 9, 20, 0}, {14, 8, 19, 0}, {14, 7, 18, 0}, {13, 7, 18, 0}, {12, 7, 18, 1}, {11, 7, 18, 0}, {10, 7, 18, 0}, {10, 7, 19, 1}, {10, 7, 20, 0}, {10, 7, 21, 0}, {11, 7, 22, 0}, {12, 7, 23, 0}, {12, 7, 24, 0}, {13, 7, 24, 1}, {14, 7, 25, 0}, {14, 7, 26, 1}, {14, 7, 27, 0}}, {{17, 17, 15, 2, 3}, {18, 17, 14, 0}, {19, 17, 14, 0}, {19, 17, 15, 0}, {19, 17, 16, 0}, {19, 17, 17, 0}, {18, 17, 17, 0}, {17, 17, 18, 0}, {16, 17, 18, 1}, {15, 17, 18, 0}, {14, 17, 17, 0}, {13, 17, 17, 0}, {12, 17, 17, 0}, {11, 17, 17, 0}, {10, 17, 17, 0}, {10, 17, 18, 0}, {10, 17, 19, 0}, {10, 17, 20, 0}, {11, 16, 20, 0}, {11, 15, 19, 0}, {11, 14, 18, 0}, {11, 13, 17, 0}, {10, 12, 17, 0}, {9, 12, 18, 0}, {9, 12, 19, 0}, {9, 12, 20, 0}, {10, 12, 21, 0}, {11, 12, 22, 0}, {12, 12, 23, 0}, {12, 12, 24, 0}, {13, 12, 24, 0}, {14, 12, 24, 0}, {14, 12, 23, 0}, {14, 11, 22, 0}, {14, 10, 21, 0}, {14, 9, 20, 0}, {14, 8, 19, 0}, {14, 7, 18, 0}, {13, 7, 18, 0}, {12, 7, 18, 1}, {11, 7, 18, 0}, {10, 7, 18, 0}, {10, 7, 19, 1}, {10, 7, 20, 0}, {10, 7, 21, 0}, {11, 7, 22, 0}, {12, 7, 23, 0}, {12, 7, 24, 0}, {13, 7, 24, 1}, {14, 7, 25, 0}, {14, 7, 26, 1}, {14, 7, 27, 0}}, {{9, 17, 16, 2, 1}, {10, 17, 17, 0}, {10, 17, 18, 0}, {10, 17, 19, 0}, {10, 17, 20, 0}, {11, 16, 20, 0}, {11, 15, 19, 0}, {11, 14, 18, 0}, {11, 13, 17, 0}, {10, 12, 17, 0}, {9, 12, 18, 0}, {9, 12, 19, 0}, {9, 12, 20, 0}, {10, 12, 21, 0}, {11, 12, 22, 0}, {12, 12, 23, 0}, {12, 12, 24, 0}, {13, 12, 24, 0}, {14, 12, 24, 0}, {14, 12, 23, 0}, {14, 11, 22, 0}, {14, 10, 21, 0}, {14, 9, 20, 0}, {14, 8, 19, 0}, {14, 7, 18, 0}, {13, 7, 18, 0}, {12, 7, 18, 1}, {11, 7, 18, 0}, {10, 7, 18, 0}, {10, 7, 19, 1}, {10, 7, 20, 0}, {10, 7, 21, 0}, {11, 7, 22, 0}, {12, 7, 23, 0}, {12, 7, 24, 0}, {13, 7, 24, 1}, {14, 7, 25, 0}, {14, 7, 26, 1}, {14, 7, 27, 0}}, {{17, 17, 16, 2, 3}, {17, 17, 18, 0}, {16, 17, 18, 1}, {15, 17, 18, 0}, {14, 17, 17, 0}, {13, 17, 17, 0}, {12, 17, 17, 0}, {11, 17, 17, 0}, {10, 17, 17, 0}, {10, 17, 18, 0}, {10, 17, 19, 0}, {10, 17, 20, 0}, {11, 16, 20, 0}, {11, 15, 19, 0}, {11, 14, 18, 0}, {11, 13, 17, 0}, {10, 12, 17, 0}, {9, 12, 18, 0}, {9, 12, 19, 0}, {9, 12, 20, 0}, {10, 12, 21, 0}, {11, 12, 22, 0}, {12, 12, 23, 0}, {12, 12, 24, 0}, {13, 12, 24, 0}, {14, 12, 24, 0}, {14, 12, 23, 0}, {14, 11, 22, 0}, {14, 10, 21, 0}, {14, 9, 20, 0}, {14, 8, 19, 0}, {14, 7, 18, 0}, {13, 7, 18, 0}, {12, 7, 18, 1}, {11, 7, 18, 0}, {10, 7, 18, 0}, {10, 7, 19, 1}, {10, 7, 20, 0}, {10, 7, 21, 0}, {11, 7, 22, 0}, {12, 7, 23, 0}, {12, 7, 24, 0}, {13, 7, 24, 1}, {14, 7, 25, 0}, {14, 7, 26, 1}, {14, 7, 27, 0}}, {{15, 17, 20, 2, 2}, {14, 17, 21, 0}, {14, 17, 22, 0}, {13, 17, 22, 1}, {12, 17, 22, 0}, {11, 17, 21, 0}, {11, 16, 20, 0}, {11, 15, 19, 0}, {11, 14, 18, 0}, {11, 13, 17, 0}, {10, 12, 17, 0}, {9, 12, 18, 0}, {9, 12, 19, 0}, {9, 12, 20, 0}, {10, 12, 21, 0}, {11, 12, 22, 0}, {12, 12, 23, 0}, {12, 12, 24, 0}, {13, 12, 24, 0}, {14, 12, 24, 0}, {14, 12, 23, 0}, {14, 11, 22, 0}, {14, 10, 21, 0}, {14, 9, 20, 0}, {14, 8, 19, 0}, {14, 7, 18, 0}, {13, 7, 18, 0}, {12, 7, 18, 1}, {11, 7, 18, 0}, {10, 7, 18, 0}, {10, 7, 19, 1}, {10, 7, 20, 0}, {10, 7, 21, 0}, {11, 7, 22, 0}, {12, 7, 23, 0}, {12, 7, 24, 0}, {13, 7, 24, 1}, {14, 7, 25, 0}, {14, 7, 26, 1}, {14, 7, 27, 0}}, {{16, 17, 20, 2, 2}, {17, 17, 21, 0}, {17, 17, 22, 0}, {16, 17, 22, 0}, {15, 17, 22, 0}, {14, 17, 22, 0}, {13, 17, 22, 1}, {12, 17, 22, 0}, {11, 17, 21, 0}, {11, 16, 20, 0}, {11, 15, 19, 0}, {11, 14, 18, 0}, {11, 13, 17, 0}, {10, 12, 17, 0}, {9, 12, 18, 0}, {9, 12, 19, 0}, {9, 12, 20, 0}, {10, 12, 21, 0}, {11, 12, 22, 0}, {12, 12, 23, 0}, {12, 12, 24, 0}, {13, 12, 24, 0}, {14, 12, 24, 0}, {14, 12, 23, 0}, {14, 11, 22, 0}, {14, 10, 21, 0}, {14, 9, 20, 0}, {14, 8, 19, 0}, {14, 7, 18, 0}, {13, 7, 18, 0}, {12, 7, 18, 1}, {11, 7, 18, 0}, {10, 7, 18, 0}, {10, 7, 19, 1}, {10, 7, 20, 0}, {10, 7, 21, 0}, {11, 7, 22, 0}, {12, 7, 23, 0}, {12, 7, 24, 0}, {13, 7, 24, 1}, {14, 7, 25, 0}, {14, 7, 26, 1}, {14, 7, 27, 0}}, {{14, 7, 27, 0}, {14, 6, 28, 0}, {13, 6, 28, 0}, {12, 6, 29, 0}, {11, 6, 29, 0}, {10, 6, 29, 0}, {9, 6, 29, 0}, {8, 6, 29, 0}, {7, 6, 29, 0}, {6, 6, 28, 0}, {5, 6, 28, 0}, {5, 6, 27, 0}, {5, 6, 26, 0}, {5, 6, 25, 0}, {4, 6, 24, 0}, {4, 6, 23, 0}, {4, 6, 22, 0}, {4, 6, 21, 0}, {4, 6, 20, 0}, {4, 6, 19, 0}, {5, 6, 18, 0}, {5, 6, 17, 0}, {5, 6, 16, 0}, {5, 6, 15, 0}, {5, 6, 14, 0}, {5, 6, 13, 0}, {5, 6, 12, 0}, {5, 6, 11, 0}, {5, 6, 10, 0}, {5, 6, 9, 0}, {6, 6, 8, 0}, {7, 6, 7, 0}, {8, 6, 6, 0}, {9, 6, 5, 0}, {10, 6, 4, 0}, {11, 6, 3, 0}, {12, 6, 2, 0}, {12, 6, 1, 0}, {13, 6, 0, 0}, {14, 6, 0, 0}, {15, 6, 0, 0}}}, {{{10, 17, 13, 2, 1}, {10, 17, 15, 0}, {10, 17, 16, 1}, {10, 17, 17, 0}, {10, 17, 18, 0}, {10, 17, 19, 0}, {10, 17, 20, 0}, {11, 16, 20, 0}, {11, 15, 19, 0}, {11, 14, 18, 0}, {11, 13, 17, 0}, {10, 12, 17, 0}, {9, 12, 18, 0}, {9, 12, 19, 0}, {9, 12, 20, 0}, {10, 12, 21, 0}, {11, 12, 22, 0}, {12, 12, 23, 0}, {12, 12, 24, 0}, {13, 12, 24, 0}, {14, 12, 24, 0}, {15, 12, 23, 0}, {15, 11, 22, 0}, {15, 10, 21, 0}, {15, 9, 20, 0}, {15, 8, 19, 0}, {15, 7, 18, 0}, {16, 7, 18, 0}, {17, 7, 18, 0}, {18, 7, 18, 0}, {19, 7, 18, 0}, {19, 7, 19, 1}, {19, 7, 20, 0}, {18, 7, 21, 0}, {18, 7, 22, 0}, {17, 7, 23, 0}, {17, 7, 24, 0}, {16, 7, 24, 1}, {15, 7, 25, 0}, {15, 7, 26, 1}, {15, 7, 27, 0}}, {{12, 17, 15, 2, 0}, {13, 17, 16, 1}, {13, 17, 17, 0}, {12, 17, 17, 0}, {11, 17, 17, 0}, {10, 17, 17, 0}, {10, 17, 18, 0}, {10, 17, 19, 0}, {10, 17, 20, 0}, {11, 16, 20, 0}, {11, 15, 19, 0}, {11, 14, 18, 0}, {11, 13, 17, 0}, {10, 12, 17, 0}, {9, 12, 18, 0}, {9, 12, 19, 0}, {9, 12, 20, 0}, {10, 12, 21, 0}, {11, 12, 22, 0}, {12, 12, 23, 0}, {12, 12, 24, 0}, {13, 12, 24, 0}, {14, 12, 24, 0}, {15, 12, 23, 0}, {15, 11, 22, 0}, {15, 10, 21, 0}, {15, 9, 20, 0}, {15, 8, 19, 0}, {15, 7, 18, 0}, {16, 7, 18, 0}, {17, 7, 18, 0}, {18, 7, 18, 0}, {19, 7, 18, 0}, {19, 7, 19, 1}, {19, 7, 20, 0}, {18, 7, 21, 0}, {18, 7, 22, 0}, {17, 7, 23, 0}, {17, 7, 24, 0}, {16, 7, 24, 1}, {15, 7, 25, 0}, {15, 7, 26, 1}, {15, 7, 27, 0}}, {{15, 17, 15, 2, 0}, {13, 17, 15, 0}, {13, 17, 16, 1}, {13, 17, 17, 0}, {12, 17, 17, 0}, {11, 17, 17, 0}, {10, 17, 17, 0}, {10, 17, 18, 0}, {10, 17, 19, 0}, {10, 17, 20, 0}, {11, 16, 20, 0}, {11, 15, 19, 0}, {11, 14, 18, 0}, {11, 13, 17, 0}, {10, 12, 17, 0}, {9, 12, 18, 0}, {9, 12, 19, 0}, {9, 12, 20, 0}, {10, 12, 21, 0}, {11, 12, 22, 0}, {12, 12, 23, 0}, {12, 12, 24, 0}, {13, 12, 24, 0}, {14, 12, 24, 0}, {15, 12, 23, 0}, {15, 11, 22, 0}, {15, 10, 21, 0}, {15, 9, 20, 0}, {15, 8, 19, 0}, {15, 7, 18, 0}, {16, 7, 18, 0}, {17, 7, 18, 0}, {18, 7, 18, 0}, {19, 7, 18, 0}, {19, 7, 19, 1}, {19, 7, 20, 0}, {18, 7, 21, 0}, {18, 7, 22, 0}, {17, 7, 23, 0}, {17, 7, 24, 0}, {16, 7, 24, 1}, {15, 7, 25, 0}, {15, 7, 26, 1}, {15, 7, 27, 0}}, {{17, 17, 15, 2, 3}, {18, 17, 14, 0}, {19, 17, 14, 0}, {19, 17, 15, 0}, {19, 17, 16, 0}, {19, 17, 17, 0}, {18, 17, 17, 0}, {17, 17, 18, 0}, {16, 17, 18, 1}, {15, 17, 18, 0}, {14, 17, 17, 0}, {13, 17, 17, 0}, {12, 17, 17, 0}, {11, 17, 17, 0}, {10, 17, 17, 0}, {10, 17, 18, 0}, {10, 17, 19, 0}, {10, 17, 20, 0}, {11, 16, 20, 0}, {11, 15, 19, 0}, {11, 14, 18, 0}, {11, 13, 17, 0}, {10, 12, 17, 0}, {9, 12, 18, 0}, {9, 12, 19, 0}, {9, 12, 20, 0}, {10, 12, 21, 0}, {11, 12, 22, 0}, {12, 12, 23, 0}, {12, 12, 24, 0}, {13, 12, 24, 0}, {14, 12, 24, 0}, {15, 12, 23, 0}, {15, 11, 22, 0}, {15, 10, 21, 0}, {15, 9, 20, 0}, {15, 8, 19, 0}, {15, 7, 18, 0}, {16, 7, 18, 0}, {17, 7, 18, 0}, {18, 7, 18, 0}, {19, 7, 18, 0}, {19, 7, 19, 1}, {19, 7, 20, 0}, {18, 7, 21, 0}, {18, 7, 22, 0}, {17, 7, 23, 0}, {17, 7, 24, 0}, {16, 7, 24, 1}, {15, 7, 25, 0}, {15, 7, 26, 1}, {15, 7, 27, 0}}, {{9, 17, 16, 2, 1}, {10, 17, 17, 0}, {10, 17, 18, 0}, {10, 17, 19, 0}, {10, 17, 20, 0}, {11, 16, 20, 0}, {11, 15, 19, 0}, {11, 14, 18, 0}, {11, 13, 17, 0}, {10, 12, 17, 0}, {9, 12, 18, 0}, {9, 12, 19, 0}, {9, 12, 20, 0}, {10, 12, 21, 0}, {11, 12, 22, 0}, {12, 12, 23, 0}, {12, 12, 24, 0}, {13, 12, 24, 0}, {14, 12, 24, 0}, {15, 12, 23, 0}, {15, 11, 22, 0}, {15, 10, 21, 0}, {15, 9, 20, 0}, {15, 8, 19, 0}, {15, 7, 18, 0}, {16, 7, 18, 0}, {17, 7, 18, 0}, {18, 7, 18, 0}, {19, 7, 18, 0}, {19, 7, 19, 1}, {19, 7, 20, 0}, {18, 7, 21, 0}, {18, 7, 22, 0}, {17, 7, 23, 0}, {17, 7, 24, 0}, {16, 7, 24, 1}, {15, 7, 25, 0}, {15, 7, 26, 1}, {15, 7, 27, 0}}, {{17, 17, 16, 2, 3}, {17, 17, 18, 0}, {16, 17, 18, 1}, {15, 17, 18, 0}, {14, 17, 17, 0}, {13, 17, 17, 0}, {12, 17, 17, 0}, {11, 17, 17, 0}, {10, 17, 17, 0}, {10, 17, 18, 0}, {10, 17, 19, 0}, {10, 17, 20, 0}, {11, 16, 20, 0}, {11, 15, 19, 0}, {11, 14, 18, 0}, {11, 13, 17, 0}, {10, 12, 17, 0}, {9, 12, 18, 0}, {9, 12, 19, 0}, {9, 12, 20, 0}, {10, 12, 21, 0}, {11, 12, 22, 0}, {12, 12, 23, 0}, {12, 12, 24, 0}, {13, 12, 24, 0}, {14, 12, 24, 0}, {15, 12, 23, 0}, {15, 11, 22, 0}, {15, 10, 21, 0}, {15, 9, 20, 0}, {15, 8, 19, 0}, {15, 7, 18, 0}, {16, 7, 18, 0}, {17, 7, 18, 0}, {18, 7, 18, 0}, {19, 7, 18, 0}, {19, 7, 19, 1}, {19, 7, 20, 0}, {18, 7, 21, 0}, {18, 7, 22, 0}, {17, 7, 23, 0}, {17, 7, 24, 0}, {16, 7, 24, 1}, {15, 7, 25, 0}, {15, 7, 26, 1}, {15, 7, 27, 0}}, {{15, 17, 20, 2, 2}, {14, 17, 21, 0}, {14, 17, 22, 0}, {13, 17, 22, 1}, {12, 17, 22, 0}, {11, 17, 21, 0}, {11, 16, 20, 0}, {11, 15, 19, 0}, {11, 14, 18, 0}, {11, 13, 17, 0}, {10, 12, 17, 0}, {9, 12, 18, 0}, {9, 12, 19, 0}, {9, 12, 20, 0}, {10, 12, 21, 0}, {11, 12, 22, 0}, {12, 12, 23, 0}, {12, 12, 24, 0}, {13, 12, 24, 0}, {14, 12, 24, 0}, {15, 12, 23, 0}, {15, 11, 22, 0}, {15, 10, 21, 0}, {15, 9, 20, 0}, {15, 8, 19, 0}, {15, 7, 18, 0}, {16, 7, 18, 0}, {17, 7, 18, 0}, {18, 7, 18, 0}, {19, 7, 18, 0}, {19, 7, 19, 1}, {19, 7, 20, 0}, {18, 7, 21, 0}, {18, 7, 22, 0}, {17, 7, 23, 0}, {17, 7, 24, 0}, {16, 7, 24, 1}, {15, 7, 25, 0}, {15, 7, 26, 1}, {15, 7, 27, 0}}, {{16, 17, 20, 2, 2}, {17, 17, 21, 0}, {17, 17, 22, 0}, {16, 17, 22, 0}, {15, 17, 22, 0}, {14, 17, 22, 0}, {13, 17, 22, 1}, {12, 17, 22, 0}, {11, 17, 21, 0}, {11, 16, 20, 0}, {11, 15, 19, 0}, {11, 14, 18, 0}, {11, 13, 17, 0}, {10, 12, 17, 0}, {9, 12, 18, 0}, {9, 12, 19, 0}, {9, 12, 20, 0}, {10, 12, 21, 0}, {11, 12, 22, 0}, {12, 12, 23, 0}, {12, 12, 24, 0}, {13, 12, 24, 0}, {14, 12, 24, 0}, {15, 12, 23, 0}, {15, 11, 22, 0}, {15, 10, 21, 0}, {15, 9, 20, 0}, {15, 8, 19, 0}, {15, 7, 18, 0}, {16, 7, 18, 0}, {17, 7, 18, 0}, {18, 7, 18, 0}, {19, 7, 18, 0}, {19, 7, 19, 1}, {19, 7, 20, 0}, {18, 7, 21, 0}, {18, 7, 22, 0}, {17, 7, 23, 0}, {17, 7, 24, 0}, {16, 7, 24, 1}, {15, 7, 25, 0}, {15, 7, 26, 1}, {15, 7, 27, 0}}, {{15, 7, 27, 0}, {15, 6, 28, 0}, {16, 6, 28, 0}, {17, 6, 28, 0}, {18, 6, 27, 0}, {19, 6, 27, 0}, {20, 6, 27, 0}, {21, 6, 27, 0}, {22, 6, 27, 0}, {23, 6, 27, 0}, {24, 6, 27, 0}, {25, 6, 27, 0}, {26, 6, 27, 0}, {26, 6, 26, 0}, {26, 6, 25, 0}, {26, 6, 24, 0}, {26, 6, 23, 0}, {26, 6, 22, 0}, {26, 6, 21, 0}, {26, 6, 20, 0}, {26, 6, 19, 0}, {26, 6, 18, 0}, {25, 6, 17, 0}, {25, 6, 16, 0}, {24, 6, 15, 0}, {24, 6, 14, 0}, {24, 6, 13, 0}, {24, 6, 12, 0}, {24, 6, 11, 0}, {24, 6, 10, 0}, {23, 6, 9, 0}, {22, 6, 8, 0}, {21, 6, 7, 0}, {20, 6, 6, 0}, {19, 6, 5, 0}, {18, 6, 4, 0}, {17, 6, 3, 0}, {16, 6, 3, 0}, {15, 6, 3, 0}, {15, 6, 2, 0}, {15, 6, 1, 0}, {15, 6, 0, 0}}}}, ["mg_villages/schems/default_town_house_medium"] = {{{{4, 7, 10, 2, 0}, {5, 7, 11, 0}, {5, 7, 12, 1}, {5, 7, 13, 0}, {6, 7, 13, 0}, {7, 7, 13, 0}, {8, 7, 13, 0}, {8, 7, 12, 0}, {8, 7, 11, 0}, {8, 7, 10, 0}, {8, 7, 9, 0}, {8, 7, 8, 1}, {8, 6, 7, 0}}, {{11, 12, 10, 2, 0}, {12, 12, 11, 0}, {11, 12, 12, 0}, {10, 12, 12, 1}, {9, 12, 12, 0}, {8, 12, 12, 0}, {7, 12, 12, 0}, {7, 12, 13, 0}, {7, 12, 14, 0}, {6, 12, 15, 0}, {6, 11, 16, 0}, {7, 10, 16, 0}, {8, 9, 16, 0}, {8, 9, 15, 0}, {8, 8, 14, 0}, {8, 7, 13, 0}, {8, 7, 12, 0}, {8, 7, 11, 0}, {8, 7, 10, 0}, {8, 7, 9, 0}, {8, 7, 8, 1}, {8, 6, 7, 0}}, {{13, 12, 10, 2, 2}, {12, 12, 11, 0}, {11, 12, 12, 0}, {10, 12, 12, 1}, {9, 12, 12, 0}, {8, 12, 12, 0}, {7, 12, 12, 0}, {7, 12, 13, 0}, {7, 12, 14, 0}, {6, 12, 15, 0}, {6, 11, 16, 0}, {7, 10, 16, 0}, {8, 9, 16, 0}, {8, 9, 15, 0}, {8, 8, 14, 0}, {8, 7, 13, 0}, {8, 7, 12, 0}, {8, 7, 11, 0}, {8, 7, 10, 0}, {8, 7, 9, 0}, {8, 7, 8, 1}, {8, 6, 7, 0}}, {{6, 7, 11, 2, 0}, {5, 7, 12, 1}, {5, 7, 13, 0}, {6, 7, 13, 0}, {7, 7, 13, 0}, {8, 7, 13, 0}, {8, 7, 12, 0}, {8, 7, 11, 0}, {8, 7, 10, 0}, {8, 7, 9, 0}, {8, 7, 8, 1}, {8, 6, 7, 0}}, {{10, 12, 15, 2, 3}, {9, 12, 14, 1}, {8, 12, 14, 0}, {7, 12, 14, 0}, {6, 12, 15, 0}, {6, 11, 16, 0}, {7, 10, 16, 0}, {8, 9, 16, 0}, {8, 9, 15, 0}, {8, 8, 14, 0}, {8, 7, 13, 0}, {8, 7, 12, 0}, {8, 7, 11, 0}, {8, 7, 10, 0}, {8, 7, 9, 0}, {8, 7, 8, 1}, {8, 6, 7, 0}}, {{10, 12, 16, 2, 3}, {10, 13, 16, 0}, {10, 13, 15, 0}, {10, 12, 14, 0}, {9, 12, 14, 1}, {8, 12, 14, 0}, {7, 12, 14, 0}, {6, 12, 15, 0}, {6, 11, 16, 0}, {7, 10, 16, 0}, {8, 9, 16, 0}, {8, 9, 15, 0}, {8, 8, 14, 0}, {8, 7, 13, 0}, {8, 7, 12, 0}, {8, 7, 11, 0}, {8, 7, 10, 0}, {8, 7, 9, 0}, {8, 7, 8, 1}, {8, 6, 7, 0}}, {{8, 6, 7, 0}, {8, 6, 6, 0}, {8, 6, 5, 0}, {8, 6, 4, 0}, {8, 6, 3, 0}, {8, 6, 2, 0}, {8, 6, 1, 0}, {8, 6, 0, 0}}}, {{{4, 7, 10, 2, 0}, {5, 7, 11, 0}, {5, 7, 12, 1}, {5, 7, 13, 0}, {6, 7, 13, 0}, {7, 7, 13, 0}, {8, 7, 13, 0}, {8, 7, 12, 0}, {8, 7, 11, 0}, {8, 7, 10, 0}, {9, 7, 9, 0}, {9, 7, 8, 1}, {9, 6, 7, 0}}, {{11, 12, 10, 2, 0}, {12, 12, 11, 0}, {11, 12, 12, 0}, {10, 12, 12, 1}, {9, 12, 12, 0}, {8, 12, 12, 0}, {7, 12, 12, 0}, {7, 12, 13, 0}, {7, 12, 14, 0}, {6, 12, 15, 0}, {6, 11, 16, 0}, {7, 10, 16, 0}, {8, 9, 16, 0}, {8, 9, 15, 0}, {8, 8, 14, 0}, {8, 7, 13, 0}, {8, 7, 12, 0}, {8, 7, 11, 0}, {8, 7, 10, 0}, {9, 7, 9, 0}, {9, 7, 8, 1}, {9, 6, 7, 0}}, {{13, 12, 10, 2, 2}, {12, 12, 11, 0}, {11, 12, 12, 0}, {10, 12, 12, 1}, {9, 12, 12, 0}, {8, 12, 12, 0}, {7, 12, 12, 0}, {7, 12, 13, 0}, {7, 12, 14, 0}, {6, 12, 15, 0}, {6, 11, 16, 0}, {7, 10, 16, 0}, {8, 9, 16, 0}, {8, 9, 15, 0}, {8, 8, 14, 0}, {8, 7, 13, 0}, {8, 7, 12, 0}, {8, 7, 11, 0}, {8, 7, 10, 0}, {9, 7, 9, 0}, {9, 7, 8, 1}, {9, 6, 7, 0}}, {{6, 7, 11, 2, 0}, {5, 7, 12, 1}, {5, 7, 13, 0}, {6, 7, 13, 0}, {7, 7, 13, 0}, {8, 7, 13, 0}, {8, 7, 12, 0}, {8, 7, 11, 0}, {8, 7, 10, 0}, {9, 7, 9, 0}, {9, 7, 8, 1}, {9, 6, 7, 0}}, {{10, 12, 15, 2, 3}, {9, 12, 14, 1}, {8, 12, 14, 0}, {7, 12, 14, 0}, {6, 12, 15, 0}, {6, 11, 16, 0}, {7, 10, 16, 0}, {8, 9, 16, 0}, {8, 9, 15, 0}, {8, 8, 14, 0}, {8, 7, 13, 0}, {8, 7, 12, 0}, {8, 7, 11, 0}, {8, 7, 10, 0}, {9, 7, 9, 0}, {9, 7, 8, 1}, {9, 6, 7, 0}}, {{10, 12, 16, 2, 3}, {10, 13, 16, 0}, {10, 13, 15, 0}, {10, 12, 14, 0}, {9, 12, 14, 1}, {8, 12, 14, 0}, {7, 12, 14, 0}, {6, 12, 15, 0}, {6, 11, 16, 0}, {7, 10, 16, 0}, {8, 9, 16, 0}, {8, 9, 15, 0}, {8, 8, 14, 0}, {8, 7, 13, 0}, {8, 7, 12, 0}, {8, 7, 11, 0}, {8, 7, 10, 0}, {9, 7, 9, 0}, {9, 7, 8, 1}, {9, 6, 7, 0}}, {{9, 6, 7, 0}, {8, 6, 6, 0}, {8, 6, 5, 0}, {8, 6, 4, 0}, {8, 6, 3, 0}, {8, 6, 2, 0}, {8, 6, 1, 0}, {8, 6, 0, 0}}}}, ["mg_villages/schems/trader_clay_1"] = {{{{9, 2, 6, 2, 0}, {8, 2, 4, 0}, {8, 2, 3, 0}, {7, 2, 3, 0}, {6, 2, 3, 1}, {5, 2, 3, 0}}, {{5, 2, 3, 0}, {5, 2, 2, 0}, {5, 2, 1, 0}, {5, 1, 0, 0}}}}, ["mg_villages/schems/lumberjack_sawmill_1|WORKPLACE"] = {{{{4, 9, 9, 2, 3}, {5, 10, 9, 0}, {5, 10, 8, 0}, {5, 9, 7, 0}, {6, 9, 6, 0}, {6, 9, 5, 0}, {6, 9, 4, 0}, {6, 9, 3, 0}, {6, 9, 2, 0}, {6, 9, 1, 0}, {6, 9, 0, 0}}, {}}}} diff --git a/mods/mg_villages/name_gen.lua b/mods/mg_villages/name_gen.lua new file mode 100644 index 0000000..9833d20 --- /dev/null +++ b/mods/mg_villages/name_gen.lua @@ -0,0 +1,90 @@ + +namegen = {}; + +namegen.prefixes = {'ac','ast','lang','pen','shep','ship'} +namegen.suffixes = {'beck','ey','ay','bury','burgh','brough','by','by','caster', + 'cester','cum','den','don','field','firth','ford','ham','ham','ham', + 'hope','ing','kirk','hill','law','leigh','mouth','ness','pool','shaw', + 'stead','ster','tun','ton','ton','ton','ton','wold','worth','worthy', + 'ville','river','forrest','lake'} + +-- people/environmental features + + + + + +namegen.silben = { 'a', 'an', 'ab', 'ac', 'am', + 'be', 'ba', 'bi', 'bl', 'bm', 'bn', 'bo', 'br', 'bst', 'bu', + 'ca', 'ce', 'ch', 'ci', 'ck', 'cl', 'cm', 'cn', 'co', 'cv', + 'da', 'de', 'df', 'di', 'dl', 'dm', 'dn', 'do', 'dr', 'ds', 'dt', 'du', 'dv', + 'do','ren','nav','ben','ada','min','org','san','pa','re','ne','en','er','ich', + 'the','and','tha','ent','ing','ion','tio','for','nde', + 'has','nce','edt','tis','oft','sth','mem', + 'ich','ein','und','der','nde','sch','die','den','end','cht', + 'the','and','tha','ent','ing','ion','for','de', + 'has','ce','ed','is','ft','sth','mem', + 'ch','ei','un','der','ie','den','end', + 'do','ren','nav','ben','ada','min','org','san','pa','re','ne','en','er','ich', + 'ta','bek','nik','le','lan','nem', + 'bal','cir','da','en','fan','fir','fern','fa','oak','nut','gen','ga','hu','hi','hal', + 'in','ig','ir','im','ja','je','jo','kla','kon','ker','log','lag','leg','lil', + 'lon','las','leve','lere','mes','mir','mon','mm','mer','mig', + 'na','nn','nerv','neu','oto','on','opt','oll','ome','ott', + 'pen','par','pi','pa','po','pel','pig','qu','ren','rig','raf','res','ring', + 'rib','rast','rost','ru','rum','rem','sem','sim','su','spring', + 'cotton','cot','wood','palm', + 'do','na','ik','ke','gen','bra','bn','lla','lle','st','aa','kir', + 'nn','en','fo','fn','gi','ja','jn','ke','kr','kon','lis','on','ok','or','op', + 'pp','p','qu','re','ra','rn','ri','so','sn','se','ti','tu', + 'a','e','i','o','u', + 're','ro','pe','pn','ci','co','cl', + 'no','en','wi','we','er','en','ba','ki','nn','va','wu','x','tel','or', + 'so','me','mi','em','en','eg','ge','kn'}; + + +namegen.generate_village_name = function( pr ) + local anz_silben = pr:next(2,5); + local name = ''; + local prefix = ''; + local postfix = ''; + if( pr:next(1,8)==1) then + prefix = namegen.prefixes[ #namegen.prefixes ]; + anz_silben = anz_silben -1; + end + if( pr:next(1,4)==1) then + postfix = name..namegen.suffixes[ #namegen.suffixes ]; + anz_silben = anz_silben -2; + end + if( anz_silben < 2 ) then + anz_silben = 2; + end + for i = 1, anz_silben do + name = name..namegen.silben[ pr:next( 1, #namegen.silben )]; + end + name = prefix..name..postfix; + name = string.upper( string.sub( name, 1, 1 ) )..string.sub( name, 2 ); + return name; +end + + +namegen.generate_village_name_with_prefix = function( pr, village ) + + local name = namegen.generate_village_name( pr ); + + -- if a village consists of a single house, it gets a prefix depending on the house type + if( village.is_single_house and village.to_add_data and village.to_add_data.bpos ) then + -- the building got removed from mg_villages.BUILDINGS in the meantime + if( not( mg_villages.BUILDINGS[ village.to_add_data.bpos[1].btype] )) then + return 'Abandomed building'; + end + local btyp = mg_villages.BUILDINGS[ village.to_add_data.bpos[1].btype].typ; + local bdata = mg_villages.village_type_data[ btyp ]; + if( bdata and (bdata.name_prefix or bdata.name_postfix )) then + name = (bdata.name_prefix or '')..name..(bdata.name_postfix or ''); + else + name = 'House '..name; + end + end + return name; +end diff --git a/mods/mg_villages/nodes.lua b/mods/mg_villages/nodes.lua new file mode 100644 index 0000000..61d28ce --- /dev/null +++ b/mods/mg_villages/nodes.lua @@ -0,0 +1,184 @@ + +-- slightly lower than a normal nodes for better look +minetest.register_node("mg_villages:road", { + description = "village road", + tiles = {"default_gravel.png", "default_dirt.png"}, + is_ground_content = false, -- will not be removed by the cave generator + groups = {crumbly=2}, -- does not fall + sounds = default.node_sound_gravel_defaults, +-- sounds = default.node_sound_dirt_defaults({ +-- footstep = {name="default_gravel_footstep", gain=0.5}, +-- dug = {name="default_gravel_footstep", gain=1.0}, +-- }), + paramtype = "light", + paramtype2 = "facedir", + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { { -0.5, -0.5, -0.5, 0.5, 0.5-2/16, 0.5}, }, + }, +}) + +mg_villages.road_node = minetest.get_content_id( 'mg_villages:road' ); +-- do not drop snow on roads +if( minetest.get_modpath("moresnow")) then + moresnow.snow_cover[ mg_villages.road_node ] = moresnow.c_air; +end + + +-- special soil that does not need abms/lbms or water +minetest.register_node("mg_villages:soil", { + description = "Soil found on a field", + tiles = {"default_dirt.png^farming_soil_wet.png", "default_dirt.png"}, + drop = "default:dirt", + is_ground_content = true, + groups = {crumbly=3, not_in_creative_inventory=1, grassland = 1, soil=3, wet=1}, + sounds = default.node_sound_dirt_defaults, +}) + +minetest.register_node("mg_villages:desert_sand_soil", { + description = "Desert Sand", + tiles = {"default_desert_sand.png^farming_soil_wet.png", "default_desert_sand.png"}, + is_ground_content = true, + drop = "default:desert_sand", + groups = {crumbly=3, not_in_creative_inventory = 1, sand=1, desert = 1, soil=3, wet=1}, + sounds = default.node_sound_sand_defaults, +}) + + +-- this non-snow-melting-torch is only needed if you use the old snow mod +if( mg_villages.USE_DEFAULT_3D_TORCHES == false ) then + -- This torch is not hot. It will not melt snow and cause no floodings in villages. + minetest.register_node("mg_villages:torch", { + description = "Torch", + drawtype = "torchlike", + --tiles = {"default_torch_on_floor.png", "default_torch_on_ceiling.png", "default_torch.png"}, + tiles = { + {name="default_torch_on_floor_animated.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=3.0}}, + {name="default_torch_on_ceiling_animated.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=3.0}}, + {name="default_torch_animated.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=3.0}} + }, + inventory_image = "default_torch_on_floor.png", + wield_image = "default_torch_on_floor.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + light_source = LIGHT_MAX-1, + selection_box = { + type = "wallmounted", + wall_top = {-0.1, 0.5-0.6, -0.1, 0.1, 0.5, 0.1}, + wall_bottom = {-0.1, -0.5, -0.1, 0.1, -0.5+0.6, 0.1}, + wall_side = {-0.5, -0.3, -0.1, -0.5+0.3, 0.3, 0.1}, + }, + groups = {choppy=2,dig_immediate=3,flammable=1,attached_node=1}, + legacy_wallmounted = true, + sounds = default.node_sound_defaults, + drop = "default:torch", + is_ground_content = false, + }) +end + + +-- get information about a plot, the building, its inhabitants; allow to buy the plot etc. +minetest.register_node("mg_villages:plotmarker", { + description = "Plot marker", + drawtype = "nodebox", + tiles = {"default_stone_brick.png"}, + is_ground_content = false, + paramtype = "light", + paramtype2 = "facedir", + node_box = { + type = "fixed", + fixed = { + {-0.5+2/16, -0.5, -0.5+2/16, 0.5-2/16, -0.5+3/16, 0.5-2/16}, + }, + }, + groups = {cracky=3,stone=2}, + + on_rightclick = function( pos, node, clicker, itemstack, pointed_thing) + return mg_villages.plotmarker_formspec( pos, nil, {}, clicker ) + end, + + on_receive_fields = function(pos, formname, fields, sender) + return mg_villages.plotmarker_formspec( pos, formname, fields, sender ); + end, + + -- protect against digging + can_dig = function( pos, player ) + local meta = minetest.get_meta( pos ); + if( meta and meta:get_string( 'village_id' )~='' and meta:get_int( 'plot_nr' ) and meta:get_int( 'plot_nr' )>0) then + return false; + end + return true; + end +}) + + +-- place this node where a mob that works in your building ought to stand +minetest.register_node("mg_villages:mob_workplace_marker", { + description = "Place where a mob ought to work", + drawtype = "nodebox", + tiles = {"character.png"}, + paramtype = "light", + paramtype2 = "facedir", + walkable = false, + is_ground_content = false, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.5+1/16, 0.5}, + }, + }, + groups = {crumbly=3}, +}) + +-- helper node for villager/mob mods that want to spawn npc +minetest.register_node("mg_villages:mob_spawner", { + description = "Mob spawner", + tiles = {"wool_cyan.png^beds_bed_fancy.png","wool_blue.png^doors_door_wood.png"}, + is_ground_content = false, + groups = {not_in_creative_inventory = 1 }, -- cannot be digged by players + on_rightclick = function( pos, node, clicker, itemstack, pointed_thing) + return mg_villages.mob_spanwer_on_rightclick( pos, node, clicker, itemstack, pointed_thing); + end +}) + + +-- default to safe lava - prevent fire +if( not( mg_villages.use_normal_unsafe_lava )) then + local lava = minetest.registered_nodes[ "default:lava_source"]; + if( lava ) then + -- a deep copy for the table would be more helpful...but, well, ... + local new_def = minetest.deserialize( minetest.serialize( lava )); + -- this lava does not cause fire to spread + new_def.name = nil; + new_def.groups.lava = nil; + new_def.groups.hot = nil; + new_def.groups.igniter = nil; + new_def.groups.lava_tamed = 3; + new_def.description = "Lava Source (tame)"; + new_def.liquid_alternative_flowing = "mg_villages:lava_flowing_tamed"; + new_def.liquid_alternative_source = "mg_villages:lava_source_tamed"; + -- we create a NEW type of lava for this + minetest.register_node( "mg_villages:lava_source_tamed", new_def ); + end + + -- take care of the flowing variant as well + lava = minetest.registered_nodes[ "default:lava_flowing"]; + if( lava ) then + -- a deep copy for the table would be more helpful...but, well, ... + local new_def = minetest.deserialize( minetest.serialize( lava )); + -- this lava does not cause fire to spread + new_def.name = nil; + new_def.groups.lava = nil; + new_def.groups.hot = nil; + new_def.groups.igniter = nil; + new_def.groups.lava_tamed = 3; + new_def.description = "Flowing Lava (tame)"; + new_def.liquid_alternative_flowing = "mg_villages:lava_flowing_tamed"; + new_def.liquid_alternative_source = "mg_villages:lava_source_tamed"; + -- and a NEW type of flowing lava... + minetest.register_node( "mg_villages:lava_flowing_tamed", new_def ); + end +end diff --git a/mods/mg_villages/plotmarker_formspec.lua b/mods/mg_villages/plotmarker_formspec.lua new file mode 100644 index 0000000..e796e9e --- /dev/null +++ b/mods/mg_villages/plotmarker_formspec.lua @@ -0,0 +1,545 @@ + +-- used for buying plots, restoring buildings, getting information about mobs etc. +mg_villages.plotmarker_formspec = function( pos, formname, fields, player ) + +-- if( not( mg_villages.ENABLE_PROTECTION )) then +-- return; +-- end + if( not( pos )) then + return; + end + local meta = minetest.get_meta( pos ); + if( not( meta )) then + return; + end + local village_id = meta:get_string('village_id'); + local plot_nr = meta:get_int( 'plot_nr'); + local pname = player:get_player_name(); + + if( not( village_id ) + or not( mg_villages.all_villages ) + or not( mg_villages.all_villages[ village_id ] ) + or not( plot_nr ) + or not( mg_villages.all_villages[ village_id ].to_add_data ) + or not( mg_villages.all_villages[ village_id ].to_add_data.bpos ) + or not( mg_villages.all_villages[ village_id ].to_add_data.bpos[ plot_nr ] )) then + minetest.chat_send_player( pname, 'Error. This plot marker is not configured correctly.'..minetest.serialize({village_id,plot_nr })); + return; + end + + local village = mg_villages.all_villages[ village_id ]; + local plot = mg_villages.all_villages[ village_id ].to_add_data.bpos[ plot_nr ]; + + local owner_name = plot.owner; + if( not( owner_name ) or owner_name == "" ) then + if( plot.btype=="road" ) then + owner_name = "- the village community -"; + else + owner_name = "- for sale -"; + end + end + + -- missing data + if( not( plot.btype ) or not( mg_villages.BUILDINGS[ plot.btype ] ) + or not( mg_villages.BUILDINGS[ plot.btype ].mts_path ) + or not( mg_villages.BUILDINGS[ plot.btype ].scm )) then + minetest.chat_send_player( pname, 'Error. Unknown building. btype: '..tostring( plot.btype )); + return; + end + local building_name = mg_villages.BUILDINGS[ plot.btype ].mts_path..mg_villages.BUILDINGS[ plot.btype ].scm; + + -- show coordinates of the village center to the player + local village_pos = minetest.pos_to_string( {x=village.vx, y=village.vh, z=village.vz}); + -- distance from village center + local distance = math.floor( math.sqrt( (village.vx - pos.x ) * (village.vx - pos.x ) + + (village.vh - pos.y ) * (village.vh - pos.y ) + + (village.vz - pos.z ) * (village.vz - pos.z ) )); + + -- show a list of who lives (or works) here at this plot + if( fields and fields.inhabitants ) then + minetest.show_formspec( pname, "mg_villages:plot_mob_list", + mg_villages.inhabitants.print_house_info( village.to_add_data.bpos, plot_nr, village_id, pname )); + --mg_villages.debug_inhabitants( village, plot_nr); + return; + end + + local mirror_str = ""; + if( plot.mirror ) then + mirror_str = minetest.formspec_escape(" (mirrored)"); + end + -- create the header + local formspec = "size[13,10]".. + "label[3.3,0.0;Plot No.: "..tostring( plot_nr )..", with "..tostring( mg_villages.BUILDINGS[ plot.btype ].scm ).."]".. + "label[0.3,0.4;Located at:]" .."label[3.3,0.4;"..(minetest.pos_to_string( pos ) or '?')..", which is "..tostring( distance ).." m away]" + .."label[7.3,0.4;from the village center]".. + "label[0.3,0.8;Part of village:]" .."label[3.3,0.8;"..(village.name or "- name unknown -").."]" + .."label[7.3,0.8;located at "..(village_pos).."]".. + "label[0.3,1.2;Owned by:]" .."label[3.3,1.2;"..(owner_name).."]".. + "label[3.3,1.6;Click on a menu entry to select it:]".. + "field[20,20;0.1,0.1;pos2str;Pos;"..minetest.pos_to_string( pos ).."]"; + build_chest.show_size_data( building_name ); + + -- deprecated; adds buttons for registered mobf_traders + --formspec = mg_villages.plotmarker_list_traders( plot, formspec ); + + local replace_row = -1; + -- the player selected a material which ought to be replaced + if( fields.build_chest_replacements ) then + local event = minetest.explode_table_event( fields.build_chest_replacements ); + if( event and event.row and event.row > 0 ) then + replace_row = event.row; + fields.show_materials = "show_materials"; + end + + -- the player provided the name of the material for the replacement of the currently selected + elseif( fields.store_replacement and fields.store_repalcement ~= "" + and fields.replace_row_with and fields.replace_row_with ~= "" + and fields.replace_row_material and fields.replace_row_material ~= "") then + + build_chest.replacements_apply( pos, meta, fields.replace_row_material, fields.replace_row_with, village_id ); + fields.show_materials = "show_materials"; + + + -- group selections for easily changing several nodes at once + elseif( fields.wood_selection ) then + build_chest.replacements_apply_for_group( pos, meta, 'wood', fields.wood_selection, fields.set_wood, village_id ); + fields.set_wood = nil; + fields.show_materials = "show_materials"; + + elseif( fields.farming_selection ) then + build_chest.replacements_apply_for_group( pos, meta, 'farming', fields.farming_selection, fields.set_farming, village_id ); + fields.set_farming = nil; + fields.show_materials = "show_materials"; + + elseif( fields.roof_selection ) then + build_chest.replacements_apply_for_group( pos, meta, 'roof', fields.roof_selection, fields.set_roof, village_id ); + fields.set_roof = nil; + fields.show_materials = "show_materials"; + + + -- actually store the new group replacement + elseif( (fields.set_wood and fields.set_wood ~= "") + or (fields.set_farming and fields.set_farming ~= "" ) + or (fields.set_roof and fields.set_roof ~= "" )) then + minetest.show_formspec( pname, "mg_villages:formspec_plotmarker", + handle_schematics.get_formspec_group_replacement( pos, fields, formspec )); + return; + end + + -- show which materials (and replacements!) where used for the building + if( (fields.show_materials and fields.show_materials ~= "" ) + or (fields.replace_row_with and fields.replace_row_with ~= "") + or (fields.replace_row_material and fields.replace_row_material ~= "")) then + + formspec = formspec.."button[9.9,0.4;2,0.5;info;Back]"; + if( not( minetest.check_player_privs( pname, {protection_bypass=true}))) then + -- do not allow any changes; just show the materials and their replacements + minetest.show_formspec( pname, "mg_villages:formspec_plotmarker", + formspec..build_chest.replacements_get_list_formspec( pos, nil, 0, meta, village_id, building_name, replace_row )); + else + minetest.show_formspec( pname, "mg_villages:formspec_plotmarker", + formspec..build_chest.replacements_get_list_formspec( pos, nil, 1, nil, village_id, building_name, replace_row )); + end + return; + + -- place the building again + elseif( (fields.reset_building and fields.reset_building ~= "") + or (fields.remove_building and fields.remove_building ~= "")) then + + formspec = formspec.."button[9.9,0.4;2,0.5;back;Back]"; + + if( not( minetest.check_player_privs( pname, {protection_bypass=true}))) then + minetest.show_formspec( pname, "mg_villages:formspec_plotmarker", formspec.. + "label[3,3;You need the protection_bypass priv in order to use this functin.]" ); + return; + end + + local selected_building = build_chest.building[ building_name ]; + local start_pos = {x=plot.x, y=plot.y, z=plot.z, brotate=plot.brotate}; + if( selected_building.yoff ) then + start_pos.y = start_pos.y + selected_building.yoff; + end + local end_pos = {x=plot.x+plot.bsizex-1, + y=plot.y+selected_building.yoff-1+selected_building.ysize, + z=plot.z+plot.bsizez-1}; + + local replacements = build_chest.replacements_get_current( meta, village_id ); + + if( fields.remove_building and fields.remove_building ~= "" ) then + -- clear the space above ground, put dirt below ground, but keep the + -- surface intact + handle_schematics.clear_area( start_pos, end_pos, pos.y-1); + -- also clear the meta data to avoid strange effects + handle_schematics.clear_meta( start_pos, end_pos ); + formspec = formspec.."label[3,3;The plot has been cleared.]"; + else + -- actually place it (disregarding mirroring) + local error_msg = handle_schematics.place_building_from_file( + start_pos, + end_pos, + building_name, + replacements, + plot.o, + build_chest.building[ building_name ].axis, plot.mirror, 1, true ); + formspec = formspec.."label[3,3;The building has been reset.]"; + if( error_msg ) then + formspec = formspec..'label[4,3;Error: '..tostring( fields.error_msg ).."]"; + end + end + minetest.show_formspec( pname, "mg_villages:formspec_plotmarker", formspec ); + return; + + elseif( fields.info and fields.info ~= "" ) then + local show_material_text = "Change materials used"; + if( not( minetest.check_player_privs( pname, {protection_bypass=true}))) then + show_material_text = "Show materials used"; + end + + minetest.show_formspec( pname, "mg_villages:formspec_plotmarker", + formspec.. + "button[9.9,0.4;2,0.5;back;Back]".. + "button[3,3;5,0.5;create_backup;Create backup of current stage]".. + "button[4,4;3,0.5;show_materials;"..show_material_text.."]".. + "button[4,5;3,0.5;reset_building;Reset building]".. + "button[4,6;3,0.5;remove_building;Remove building]"); + return; + end + + local owner = plot.owner; + local btype = plot.btype; + + + local original_formspec = "size[8,3]".. + "button[7.0,0.0;1.0,0.5;info;Info]".. + "button[6.0,1.0;2.0,0.5;inhabitants;Who lives here]".. + "label[1.0,0.5;Plot No.: "..tostring( plot_nr ).."]".. + "label[2.5,0.5;Building:]".. + "label[3.5,0.5;"..tostring( mg_villages.BUILDINGS[btype].scm )..mirror_str.."]".. + "field[20,20;0.1,0.1;pos2str;Pos;"..minetest.pos_to_string( pos ).."]"; + local formspec = ""; + local ifinhabit = ""; + + -- Get Price + local price = "default:gold_ingot 2"; + + if (btype ~= 'road' and mg_villages.BUILDINGS[btype]) then + local plot_descr = 'Plot No. '..tostring( plot_nr ).. ' with '..tostring( mg_villages.BUILDINGS[btype].scm) + + if (mg_villages.BUILDINGS[btype].price) then + price = mg_villages.BUILDINGS[btype].price; + elseif (mg_villages.BUILDINGS[btype].typ and mg_villages.prices[ mg_villages.BUILDINGS[btype].typ ]) then + price = mg_villages.prices[ mg_villages.BUILDINGS[btype].typ ]; + end + -- Get if is inhabitant house + if (mg_villages.BUILDINGS[btype].inh and mg_villages.BUILDINGS[btype].inh > 0 ) then + ifinhabit = "label[1,1.5;Owners of this plot count as village inhabitants.]"; + end + end + -- Determine price depending on building type + local price_stack= ItemStack( price ); + + + -- If nobody owns the plot + if (not(owner) or owner=='') then + + formspec = original_formspec .. + "label[1,1;You can buy this plot for]".. + "label[3.8,1;"..tostring( price_stack:get_count() ).." x ]".. + "item_image[4.3,0.8;1,1;"..( price_stack:get_name() ).."]".. + ifinhabit.. + "button[2,2.5;1.5,0.5;buy;Buy plot]".. + "button_exit[4,2.5;1.5,0.5;abort;Exit]"; + + -- On Press buy button + if (fields['buy']) then + local inv = player:get_inventory(); + + if not mg_villages.all_villages[village_id].ownerlist then + mg_villages.all_villages[village_id].ownerlist = {} + end + + -- Check if player already has a house in the village + if mg_villages.all_villages[village_id].ownerlist[pname] then + formspec = formspec.."label[1,1.9;Sorry. You already have a plot in this village.]"; + + -- Check if the price can be paid + elseif( inv and inv:contains_item( 'main', price_stack )) then + formspec = original_formspec.. + "label[1,1;Congratulations! You have bought this plot.]".. + "button_exit[5.75,2.5;1.5,0.5;abort;Exit]"; + mg_villages.all_villages[ village_id ].to_add_data.bpos[ plot_nr ].owner = pname; + if mg_villages.all_villages[village_id].ownerlist then + mg_villages.all_villages[village_id].ownerlist[pname] = true; + else + mg_villages.all_villages[village_id].ownerlist[pname] = true; + end + meta:set_string('infotext', 'Plot No. '..tostring( plot_nr ).. ' with '..tostring( mg_villages.BUILDINGS[btype].scm)..' (owned by '..tostring( pname )..')'); + -- save the data so that it survives server restart + mg_villages.save_data(); + -- substract the price from the players inventory + inv:remove_item( 'main', price_stack ); + else + formspec = formspec.."label[1,1.9;Sorry. You are not able to pay the price.]"; + end + end + + -- If player is the owner of the plot + elseif (owner==pname) then + + -- Check if inhabitant house + if(btype ~= 'road' + and mg_villages.BUILDINGS[btype] + and mg_villages.BUILDINGS[btype].inh + and mg_villages.BUILDINGS[btype].inh > 0 ) then + + ifinhabit = "label[1,1.5;You are allowed to modify the common village area.]"; + end + + formspec = original_formspec.."size[8,3]".. + "label[1,1;This is your plot. You have bought it.]".. + "button[0.75,2.5;3,0.5;add_remove;Add/Remove Players]".. + ifinhabit.. + "button_exit[3.75,2.5;2.0,0.5;abandon;Abandon plot]".. + "button_exit[5.75,2.5;1.5,0.5;abort;Exit]"; + + -- If Player wants to abandon plot + if(fields['abandon'] ) then + formspec = original_formspec.. + "label[1,1;You have abandoned this plot.]".. + "button_exit[5.75,2.5;1.5,0.5;abort;Exit]"; + mg_villages.all_villages[village_id].ownerlist[pname] = nil; + mg_villages.all_villages[ village_id ].to_add_data.bpos[ plot_nr ].can_edit = {} + mg_villages.all_villages[ village_id ].to_add_data.bpos[ plot_nr ].owner = nil; + -- Return price to player + local inv = player:get_inventory(); + inv:add_item( 'main', price_stack ); + meta:set_string('infotext', 'Plot No. '..tostring( plot_nr ).. ' with '..tostring( mg_villages.BUILDINGS[btype].scm) ); + mg_villages.save_data(); + end + + -- If Player wants to add/remove trusted players + if (fields['add_remove']) then + local previousTrustees = mg_villages.all_villages[ village_id ].to_add_data.bpos[ plot_nr ].can_edit + local output = ""; + if previousTrustees == nil then + previousTrustees = {} + else + for _, player in ipairs(previousTrustees) do + output = output..player.."\n" + end + end + formspec = "size[8,3]".. + "field[20,20;0.1,0.1;pos2str;Pos;"..minetest.pos_to_string( pos ).."]".. + "textarea[0.3,0.2;8,2.5;ownerplayers;Trusted Players;"..output.."]".. + "button[3.25,2.5;1.5,0.5;savetrustees;Save]"; + + mg_villages.save_data() + end + + -- Save trusted players + if (fields["savetrustees"] == "Save") then + + if not mg_villages.all_villages[ village_id ].to_add_data.bpos[ plot_nr ].can_edit then + mg_villages.all_villages[ village_id ].to_add_data.bpos[ plot_nr ].can_edit = {} + end + + local x = 1; + for _, player in ipairs(fields.ownerplayers:split("\n")) do + mg_villages.all_villages[ village_id ].to_add_data.bpos[ plot_nr ].can_edit[x] = player + x = x + 1 + end + + mg_villages.save_data(); + end + + -- If A different Player owns plot + else + formspec = original_formspec.."label[1,1;"..tostring( owner ).." owns this plot.]".. + "button_exit[3,2.5;1.5,0.5;abort;Exit]"; + end + + minetest.show_formspec( pname, "mg_villages:formspec_plotmarker", formspec ); +end + + + +mg_villages.form_input_handler = function( player, formname, fields) +-- mg_villages.print(mg_villages.DEBUG_LEVEL_NORMAL,minetest.serialize(fields)); + if( not( mg_villages.ENABLE_PROTECTION )) then + return false; + end + + -- teleport to a plot or mob + if( fields[ 'teleport_to' ] + and fields[ 'pos2str' ] + and player ) then + local pname = player:get_player_name(); + if( minetest.check_player_privs( pname, {teleport=true})) then + local pos = minetest.string_to_pos( fields.pos2str ); + -- teleport the player to the target position + player:moveto( { x=pos.x, y=(pos.y+1), z=pos.z }, false); + else + minetest.chat_sned_player( pname, "Sorry. You do not have the teleport privilege."); + end + -- do not abort; continue with showing the formspec + end + + + -- are we supposed to show information about a particular mob? + local mob_selected = nil; + -- show previous mob that lives on the plot + if( formname=="mg_villages:formspec_list_one_mob" and fields["prev"] and fields["bed_nr"]) then + mob_selected = tonumber(fields.bed_nr) - 1; + -- show next mob that lives on the mob + elseif( formname=="mg_villages:formspec_list_one_mob" and fields["next"] and fields["bed_nr"]) then + mob_selected = tonumber(fields.bed_nr) + 1; + -- show informaton about mob selected from list of inhabitants + elseif( not( fields['back_to_houselist']) + and fields['mg_villages:formspec_list_inhabitants'] + and fields['mg_villages:formspec_list_inhabitants']~="" + and fields['village_id'] + and fields['plot_nr']) then + local selection = minetest.explode_table_event( fields['mg_villages:formspec_list_inhabitants'] ); + mob_selected = selection.row; + end + + -- this index has to be a number and not a string + fields.plot_nr = tonumber( fields.plot_nr or "0"); + local pname = player:get_player_name(); + + -- provide information about a particular mob + if( mob_selected + and fields.village_id + and fields.plot_nr + and mg_villages.all_villages[ fields.village_id ] + and mg_villages.all_villages[ fields.village_id ].to_add_data + and mg_villages.all_villages[ fields.village_id ].to_add_data.bpos + and mg_villages.all_villages[ fields.village_id ].to_add_data.bpos[ fields.plot_nr ])then +-- and mg_villages.all_villages[ fields.village_id ].to_add_data.bpos[ fields.plot_nr ].beds[mob_selected]) then + if( not( mg_villages.all_villages[ fields.village_id ].to_add_data.bpos[ fields.plot_nr ].beds) + or not( mg_villages.all_villages[ fields.village_id ].to_add_data.bpos[ fields.plot_nr ].beds[ mob_selected] )) then + -- allow to click at the worker + local bpos = mg_villages.all_villages[ fields.village_id ].to_add_data.bpos; + if( bpos[ fields.plot_nr ].worker + and bpos[ fields.plot_nr ].worker.lives_at + and bpos[ bpos[ fields.plot_nr ].worker.lives_at ] + and bpos[ bpos[ fields.plot_nr ].worker.lives_at ].beds + and bpos[ bpos[ fields.plot_nr ].worker.lives_at ].beds[1] ) then + fields.plot_nr = tonumber(bpos[ fields.plot_nr ].worker.lives_at); + mob_selected = 1; + -- allow to click at the owner + elseif( bpos[ fields.plot_nr ].belongs_to + and bpos[ bpos[ fields.plot_nr ].belongs_to ] + and bpos[ bpos[ fields.plot_nr ].belongs_to ].beds + and bpos[ bpos[ fields.plot_nr ].belongs_to ].beds[1] ) then + fields.plot_nr = tonumber(bpos[ fields.plot_nr ].belongs_to); + mob_selected = 1; + -- this is not a mob + else + mob_selected = nil; + end + end + if( mob_selected ) then + local village = mg_villages.all_villages[ fields.village_id ]; + minetest.show_formspec( pname, "mg_villages:formspec_list_one_mob", + mg_villages.inhabitants.print_mob_info( village.to_add_data.bpos, fields.plot_nr, fields.village_id, mob_selected, pname )); + return true; + end + end + + + -- are we supposed to show information about a particular plot? + local plot_selected = nil; + -- show previous plot of that village + if( formname=="mg_villages:formspec_list_inhabitants" and fields["prev"] and fields["plot_nr"]) then + plot_selected = fields.plot_nr - 1; + -- show next plot of that village + elseif( formname=="mg_villages:formspec_list_inhabitants" and fields["next"] and fields["plot_nr"]) then + plot_selected = fields.plot_nr + 1; + -- back from the list of details of a mob to the list of inhabitants of the plot where it lives + elseif( fields['back_to_houselist'] ) then + plot_selected = fields.plot_nr; + -- show informaton about plot selected from list of plots in a village + elseif( not( fields['back_to_plotlist']) + and fields['mg_villages:formspec_list_plots'] + and fields['mg_villages:formspec_list_plots']~="" + and fields['village_id']) then + local selection = minetest.explode_table_event( fields['mg_villages:formspec_list_plots'] ); + plot_selected = selection.row-1; + end + + -- provide information about the inhabitants of a particular plot + if( plot_selected + and fields.village_id + and mg_villages.all_villages[ fields.village_id ] + and mg_villages.all_villages[ fields.village_id ].to_add_data + and mg_villages.all_villages[ fields.village_id ].to_add_data.bpos + and mg_villages.all_villages[ fields.village_id ].to_add_data.bpos[ plot_selected ]) then + + local village = mg_villages.all_villages[ fields.village_id ]; + minetest.show_formspec( pname, "mg_villages:formspec_list_inhabitants", + mg_villages.inhabitants.print_house_info( village.to_add_data.bpos, plot_selected, fields.village_id, pname )); + return true; + end + + + -- are we supposed to show the plots contained in a particular village? + local village_selected = nil; + -- where are we currently in the list of villages as shown to that particular player? + local liste = mg_villages.tmp_player_village_list[ pname ]; + local curr_list_pos = -1; + if( liste ) then + for i,v in ipairs( liste ) do + if( fields.village_id and v==fields.village_id ) then + curr_list_pos = i; + end + end + end + -- show previous village in list + if( formname=="mg_villages:formspec_list_plots" and fields["prev"] and curr_list_pos>1) then + village_selected = liste[ curr_list_pos - 1 ]; + -- show next village + elseif( formname=="mg_villages:formspec_list_plots" and fields["next"] and curr_list_pos<#liste) then + village_selected = liste[ curr_list_pos + 1 ]; + -- back from the list of inhabitants to the list of plots of a village + elseif( fields['back_to_plotlist'] and fields.village_id) then + village_selected = fields.village_id; + -- show informaton about all plots in the selected village + elseif( not( fields['back_to_villagelist']) + and fields['mg_villages:formspec_list_villages'] + and fields['mg_villages:formspec_list_villages']~="" ) then + local selection = minetest.explode_table_event( fields['mg_villages:formspec_list_villages'] ); + -- this is the village the player is intrested in + village_selected = mg_villages.tmp_player_village_list[ pname ][ selection.row-1 ]; + end + + -- the player has selected a village in the village list + if( village_selected + and mg_villages.all_villages[ village_selected ] + and mg_villages.all_villages[ village_selected ].to_add_data + and mg_villages.all_villages[ village_selected ].to_add_data.bpos ) then + + fields.village_id = village_selected; + -- show the player a list of plots of the selected village + mg_villages.list_plots_formspec( player, 'mg_villages:formspec_list_plots', fields ); + return true; + end + + -- back from plotlist of a village to the list of nearby villages + -- mg_villages.list_villages_formspec can be found in chat_commands.lua + if( fields['back_to_villagelist']) then + mg_villages.list_villages_formspec( player, "mg_villages:formspec_list_villages", {}); + + return true; + end + + if( (formname == "mg_villages:formspec_plotmarker") and fields.pos2str and not( fields.abort )) then + local pos = minetest.string_to_pos( fields.pos2str ); + mg_villages.plotmarker_formspec( pos, formname, fields, player ); + return true; + end + return false; +end + + +minetest.register_on_player_receive_fields( mg_villages.form_input_handler ) diff --git a/mods/mg_villages/protection.lua b/mods/mg_villages/protection.lua new file mode 100644 index 0000000..f4eb9f3 --- /dev/null +++ b/mods/mg_villages/protection.lua @@ -0,0 +1,163 @@ +-- get the id of the village pos lies in (or nil if outside of villages) +mg_villages.get_town_id_at_pos = function( pos ) + for id, v in pairs( mg_villages.all_villages ) do + local height_diff = pos.y - v.vh; + if( height_diff < 40 and height_diff > -10 ) then + + local size = v.vs * 3; + if( ( math.abs( pos.x - v.vx ) < size ) + and ( math.abs( pos.z - v.vz ) < size )) then + local village_noise = minetest.get_perlin(7635, 3, 0.5, 16); + if( mg_villages.inside_village_area( pos.x, pos.z, v, village_noise)) then + + local node = minetest.get_node( pos ); + -- leaves can be digged in villages + if( node and node.name ) then + if( minetest.registered_nodes[ node.name ] + and minetest.registered_nodes[ node.name ].groups + and minetest.registered_nodes[ node.name ].groups.leaves ) then + return nil; + elseif( node.name=='default:snow' ) then + return nil; + -- bones can be digged in villages + elseif( node.name == 'bones:bones' ) then + return nil; + else + return id; + end + else + return id; + end + end + end + end + end + return nil; +end + + +-- checks if the plot marker is still present; places a new one if needed +-- p: plot data (position, size, orientation, owner, ..) +mg_villages.check_plot_marker = function( p, plot_nr, village_id ) + -- roads cannot be bought + if( p.btype and p.btype=="road" ) then + return; + end + local plot_pos = { x=p.x, y=p.y, z=p.z }; + if( p.o==3 ) then + plot_pos = { x=p.x, y=p.y+1, z=p.z-1 }; + elseif( p.o==1 ) then + plot_pos = { x=p.x+p.bsizex-1, y=p.y+1, z=p.z+p.bsizez }; + elseif ( p.o==2 ) then + plot_pos = { x=p.x+p.bsizex, y=p.y+1, z=p.z }; + elseif ( p.o==0 ) then + plot_pos = { x=p.x-1, y=p.y+1, z=p.z+p.bsizez-1 }; + end + -- is the plotmarker still present? + local node = minetest.get_node( plot_pos ); + if( not(node) or not(node.name) or node.name ~= "mg_villages:plotmarker" ) then + -- place a new one if needed + minetest.set_node( plot_pos, {name="mg_villages:plotmarker", param2=p.o}); + local meta = minetest.get_meta( plot_pos ); + -- strange error happend; maybe we're more lucky next time... + if( not( meta )) then + return; + end + meta:set_string('village_id', village_id ); + meta:set_int( 'plot_nr', plot_nr ); + end +end + + + +local old_is_protected = minetest.is_protected +minetest.is_protected = function(pos, name) + + if( not( mg_villages.ENABLE_PROTECTION )) then + return old_is_protected( pos, name ); + end + + -- allow players with protection_bypass to build anyway + if( minetest.check_player_privs( name, {protection_bypass=true})) then + return false; + end + + local village_id = mg_villages.get_town_id_at_pos( pos ); + if( village_id ) then + local is_houseowner = false; + for nr, p in ipairs( mg_villages.all_villages[ village_id ].to_add_data.bpos ) do + + local trustedusers = p.can_edit + local trustedUser = false + if trustedusers ~= nil then + for _,trusted in ipairs(trustedusers) do + if trusted == name then + trustedUser = true + end + end + end + + -- we have located the right plot; the player can build here if he owns this particular plot + if( p.x <= pos.x and (p.x + p.bsizex) >= pos.x + and p.z <= pos.z and (p.z + p.bsizez) >= pos.z) then + + -- place a new plot marker if necessary + mg_villages.check_plot_marker( p, nr, village_id ); + + -- If player has been trusted by owner, can build + if (trustedUser) then + return false; + -- If player is owner, can build + elseif( p.owner and p.owner == name ) then + return false; + -- the allmende can be used by all + elseif( mg_villages.BUILDINGS[p.btype] and mg_villages.BUILDINGS[p.btype].typ=="allmende" ) then + return false; + -- the player cannot modify other plots, even though he may be house owner of another house and be allowed to modify common ground + else + return true; + end + -- if the player just owns another plot in the village, check if it's one where villagers may live + elseif( p.owner and p.owner == name or trustedUser) then + local btype = mg_villages.all_villages[ village_id ].to_add_data.bpos[ nr ].btype; + if( btype ~= 'road' + and mg_villages.BUILDINGS[btype] + and mg_villages.BUILDINGS[btype].inh + and mg_villages.BUILDINGS[btype].inh > 0 ) then + is_houseowner = true; + -- check the node below + local node = minetest.get_node( {x=pos.x, y=pos.y-1, z=pos.z}); + -- replace the fake, inaktive village soil with real farming soil if a player diggs the plant above + if( node and node.name and node.name=="mg_villages:soil" ) then + minetest.swap_node( {x=pos.x, y=pos.y-1, z=pos.z}, {name="farming:soil_wet"}); + end + end + end + end + -- players who own a house in town where villagers may live (not only work!) + -- are allowed to modify common ground + if( is_houseowner ) then + return false; + end + return true; + end + return old_is_protected(pos, name); +end + + +minetest.register_on_protection_violation( function(pos, name) + + if( not( mg_villages.ENABLE_PROTECTION )) then + return; + end + + local found = mg_villages.get_town_id_at_pos( pos ); + if( not( found ) or not( mg_villages.all_villages[ found ])) then + minetest.chat_send_player( name, 'Error: This area does not belong to a village.'); + return; + end + + minetest.chat_send_player( name, "You are inside of the area of the village ".. + tostring( mg_villages.all_villages[ found ].name ).. + ". The inhabitants do not allow you any modifications."); +end ); diff --git a/mods/mg_villages/replacements.lua b/mods/mg_villages/replacements.lua new file mode 100644 index 0000000..3a7fc75 --- /dev/null +++ b/mods/mg_villages/replacements.lua @@ -0,0 +1,996 @@ + +-- fountains and lakes have river water, not salt water +handle_schematics.global_replacement_table[ 'default:water_source' ] = 'default:river_water_source'; +handle_schematics.global_replacement_table[ 'default:water_flowing' ] = 'default:river_water_flowing'; +-- always use the cheaper simulated soil that has no problem with water beeing 4 nodes away +handle_schematics.global_replacement_table[ 'farming:soil_wet' ] = 'mg_villages:soil'; +handle_schematics.global_replacement_table[ 'farming:soil' ] = 'mg_villages:soil'; +handle_schematics.global_replacement_table[ 'farming:desert_sand_soil_wet' ] = 'mg_villages:desert_sand_soil'; +handle_schematics.global_replacement_table[ 'farming:desert_sand_soil' ] = 'mg_villages:desert_sand_soil'; + +-- if cottages is not installed, place "normal" beds in the chateau and wherever else needed +if( not( minetest.get_modpath( 'cottages' ))) then + handle_schematics.global_replacement_table[ 'cottages:bed_head' ] = 'beds:fancy_bed_top'; + handle_schematics.global_replacement_table[ 'cottages:bed_foot' ] = 'beds:fancy_bed_bottom'; +end + +-- ethereal comes with some intresting trees +if( minetest.get_modpath( 'ethereal' )) then + mg_villages.ethereal_trees = {'acacia','willow','redwood','frost','mushroom','yellow','palm','banana'}; +end + +if( minetest.get_modpath( 'forest' )) then + mg_villages.forest_trees = {'beech','birch','cherry','fir','ginkgo','lavender','mirabelle','oak','plum','willow'}; +end + +-- we are dealing with the TinyTrees mod from Bas080 +if( minetest.get_modpath( 'trees' ) + and minetest.registered_nodes[ 'trees:wood_mangrove' ] ) then + mg_villages.tinytrees_trees = {'mangrove','palm','conifer'}; +end + +-- The trees modname is not unique; there are other mods which bear that name. +-- If all the other mods are present as well, it's a strong indication for realtest beeing the game. +if( minetest.get_modpath( 'trees' ) + and minetest.get_modpath( 'anvil') + and minetest.get_modpath( 'joiner_table') + and minetest.get_modpath( 'scribing_table' )) then + mg_villages.realtest_trees = {'ash','aspen','birch','maple','chestnut','pine','spruce'}; + --print('REALTEST trees will be used.'); else print( 'NO REALTEST trees'); + + -- realtest is very special as far as stairs are concerned + mg_villages.realtest_stairs = {'default:stone','default:stone_flat','default:stone_bricks', + 'default:desert_stone_flat','default:desert_stone_bricks'}; + for i,v in ipairs(metals.list) do + table.insert( mg_villages.realtest_stairs, 'metals:'..v..'_block' ); + end + -- the list of minteral names is local; so we can't add "decorations:"..mineral[1].."_block" +end + + +-- only the function mg_villages.get_replacement_table(..) is called from outside this file + +mg_villages.replace_materials = function( replacements, pr, original_materials, prefixes, materials, old_material ) + + local postfixes = {}; + local use_realtest_stairs = false; + -- handle realtest stairs/slabs + if( mg_villages.realtest_trees + and #prefixes==3 + and prefixes[1]=='stairs:stair_' and prefixes[2]=='stairs:slab_' and prefixes[3]=='default:' ) then + + prefixes = {''}; + materials = mg_villages.realtest_stairs; + postfixes = {''}; + use_realtest_stairs = true; + + elseif( mg_villages.realtest_trees + and #prefixes==1 + and prefixes[1]=='stairs:stair_') then + + return; + else + for i,v in ipairs( prefixes ) do + postfixes[i] = ''; + end + end + + local known_materials = {}; + local wood_found = false; + -- for all alternate materials + for i,m in ipairs( materials ) do + -- check if that material exists for each supplied prefix + for j,p in ipairs( prefixes ) do + -- if wood is present, later on try moretrees wood as well + if( 'default:wood' == m ) then + wood_found = true; + end + if( minetest.registered_nodes[ p..m..postfixes[j] ] ) then + table.insert( known_materials, m..postfixes[j] ); + end + end + end + + -- support wooden planks from moretrees + if( wood_found and mg_villages.moretrees_treelist ) then + for _,v in ipairs( mg_villages.moretrees_treelist ) do + if( minetest.registered_nodes[ "moretrees:"..v[1].."_planks"] ) then + table.insert( known_materials, "moretrees:"..v[1].."_planks" ); + end + end + end + +--[[ + -- deco is used by BigFreakingDig; as that one lacks default nodes, it doesn't work out here + if( wood_found and minetest.get_modpath('deco')) then + local bfd_treelist = {'birch', 'cherry', 'evergreen', 'oak' }; + for _,v in ipairs( bfd_treelist ) do + if( minetest.registered_nodes[ "deco:"..v.."_plank"] ) then + table.insert( known_materials, "deco:"..v.."_plank" ); + end + end + end +--]] + + if( wood_found and mg_villages.ethereal_trees ) then + for _,v in ipairs( mg_villages.ethereal_trees ) do + -- mushroom in ethereal is a pretty decorative material; increase its probability + if( v == 'mushroom' ) then + table.insert( known_materials, "ethereal:mushroom_pore" ); + table.insert( known_materials, "ethereal:mushroom_pore" ); + table.insert( known_materials, "ethereal:mushroom_pore" ); + -- also increase probability for the decorative blueish wood + table.insert( known_materials, "ethereal:frost_wood" ); + table.insert( known_materials, "ethereal:frost_wood" ); + elseif( minetest.registered_nodes[ "ethereal:"..v.."_wood"] ) then + table.insert( known_materials, "ethereal:"..v.."_wood" ); + end + end + end + + if( wood_found and mg_villages.forest_trees ) then + for _,v in ipairs( mg_villages.forest_trees ) do + if( minetest.registered_nodes[ 'forest:'..v..'_wood'] ) then + table.insert( known_materials, 'forest:'..v..'_wood' ); + end + end + end + + if( wood_found and mg_villages.tinytrees_trees ) then + for _,v in ipairs( mg_villages.tinytrees_trees ) do + if( minetest.registered_nodes[ 'trees:wood_'..v] ) then + table.insert( known_materials, 'trees:wood_'..v ); + end + end + end + + if( wood_found and mg_villages.realtest_trees ) then + for _,v in ipairs( mg_villages.realtest_trees ) do + if( minetest.registered_nodes[ 'trees:'..v..'_planks'] ) then + table.insert( known_materials, 'trees:'..v..'_planks' ); + end + end + end + + + -- nothing found which could be used + if( #known_materials < 1 ) then + return; + end + local new_material = known_materials[ pr:next( 1, #known_materials )]; + + if( use_realtest_stairs == true ) then + table.insert( replacements, { original_materials[ 1 ], new_material..'_stair' } ); + table.insert( replacements, { original_materials[ 2 ], new_material..'_slab' } ); + table.insert( replacements, { original_materials[ 3 ], new_material } ); + table.insert( replacements, { original_materials[ 1 ]..'upside_down', new_material..'_stair_upside_down' } ); + table.insert( replacements, { original_materials[ 2 ]..'upside_down', new_material..'_slab_upside_down' } ); + return new_material; + end + + -- no replacement necessary if we did choose the same material as before + if( new_material == old_material or old_material == (prefixes[1]..new_material)) then + return old_material; + end + + for i,v in ipairs( prefixes ) do + table.insert( replacements, { original_materials[ i ], v..new_material } ); + end + return new_material; +end + +-- replace the tree trunk as well so that it fits to the wood type +mg_villages.replace_tree_trunk = function( replacements, wood_type ) + if( wood_type == 'default:junglewood' ) then + table.insert( replacements, {'default:tree', 'default:jungletree'}); + elseif( wood_type == 'default:pine_wood' ) then + table.insert( replacements, {'default:tree', 'default:pine_tree'}); + elseif( wood_type == 'default:acacia_wood' ) then + table.insert( replacements, {'default:tree', 'default:acacia_tree'}); + elseif( wood_type == 'default:aspen_wood' ) then + table.insert( replacements, {'default:tree', 'default:aspen_tree'}); + elseif( wood_type == 'mg:savannawood' ) then + table.insert( replacements, {'default:tree', 'mg:savannatree'}); + elseif( wood_type == 'mg:pinewood' ) then + table.insert( replacements, {'default:tree', 'mg:pinetree'}); + + elseif( mg_villages.moretrees_treelist ) then + for _,v in ipairs( mg_villages.moretrees_treelist ) do + if( wood_type == "moretrees:"..v[1].."_planks" ) then + table.insert( replacements, {'default:tree', "moretrees:"..v[1].."_trunk"}); + table.insert( replacements, {'default:leaves', "moretrees:"..v[1].."_leaves"}); + end + end + + elseif( wood_type == 'deco:birch_plank' ) then + table.insert( replacements, {'default:tree', "mapgen:birch_log"}); + elseif( wood_type == 'deco:cherry_plank' ) then + table.insert( replacements, {'default:tree', "mapgen:cherry_log"}); + elseif( wood_type == 'deco:evergreen_plank' ) then + table.insert( replacements, {'default:tree', "mapgen:evergreen_log"}); + elseif( wood_type == 'deco:oak_plank' ) then + table.insert( replacements, {'default:tree', "mapgen:oak_log"}); + + elseif( wood_type == 'ethereal:frost_wood' ) then + table.insert( replacements, {'default:tree', "ethereal:frost_tree"}); + + elseif( wood_type == "ethereal:mushroom_pore" ) then + table.insert( replacements, {'default:tree', "ethereal:mushroom_trunk"}); + + elseif( mg_villages.ethereal_trees ) then + for _,v in ipairs( mg_villages.ethereal_trees ) do + if( wood_type == "ethereal:"..v.."_wood" ) then + table.insert( replacements, {'default:tree', "ethereal:"..v.."_trunk"}); + end + end + + elseif( mg_villages.forest_trees ) then + for _,v in ipairs( mg_villages.forest_trees ) do + if( wood_type == "forest:"..v.."_wood" ) then + table.insert( replacements, {'default:tree', "forest:"..v.."_tree"}); + end + end + + elseif( mg_villages.tinytrees_trees ) then + for _,v in ipairs( mg_villages.tinytrees_trees ) do + if( wood_type == "trees:wood_"..v ) then + table.insert( replacements, {'default:tree', "trees:tree_"..v}); + end + end + + elseif( mg_villages.realtest_trees ) then + for _,v in ipairs( mg_villages.realtest_trees ) do + if( wood_type == 'trees:'..v..'_planks' ) then + table.insert( replacements, {'default:tree', "trees:"..v..'_log'}); + -- realtest does not have most of the nodes from default, so we need to replace them as well + table.insert( replacements, {'default:wood', 'trees:'..v..'_planks'}); + table.insert( replacements, {'default:leaves', 'trees:'..v..'_leaves'}); + table.insert( replacements, {'default:ladder', 'trees:'..v..'_ladder'}); + table.insert( replacements, {'default:chest', 'trees:'..v..'_chest'}); + table.insert( replacements, {'default:chest_locked', 'trees:'..v..'_chest_locked'}); + table.insert( replacements, {'default:fence_wood', 'fences:'..v..'_fence'}); + table.insert( replacements, {'default:bookshelf', 'decorations:bookshelf_'..v}); + table.insert( replacements, {'doors:door_wood_t_1', 'doors:door_'..v..'_t_1'}); + table.insert( replacements, {'doors:door_wood_b_1', 'doors:door_'..v..'_b_1'}); + table.insert( replacements, {'doors:door_wood_t_2', 'doors:door_'..v..'_t_2'}); + table.insert( replacements, {'doors:door_wood_b_2', 'doors:door_'..v..'_b_2'}); + -- not really wood-realted, but needs to be replaced as well + table.insert( replacements, {'default:furnace', 'oven:oven'}); + -- farming is also handled diffrently + table.insert( replacements, {'farming:soil_wet', 'farming:soil'}); + table.insert( replacements, {'farming:cotton_1', 'farming:flax_1'}); + table.insert( replacements, {'farming:cotton_2', 'farming:flax_1'}); + table.insert( replacements, {'farming:cotton_3', 'farming:flax_2'}); + table.insert( replacements, {'farming:cotton_4', 'farming:flax_2'}); + table.insert( replacements, {'farming:cotton_5', 'farming:flax_3'}); + table.insert( replacements, {'farming:cotton_6', 'farming:flax_3'}); + table.insert( replacements, {'farming:cotton_7', 'farming:flax_4'}); + table.insert( replacements, {'farming:cotton_8', 'farming:flax_4'}); + -- stairs and slabs made out of default wood + table.insert( replacements, {'stairs:stair_wood', 'trees:'..v..'_planks_stair'}); + table.insert( replacements, {'stairs:slab_wood', 'trees:'..v..'_planks_slab'}); + table.insert( replacements, {'stairs:stair_woodupside_down','trees:'..v..'_planks_stair_upside_down' } ); + table.insert( replacements, {'stairs:slab_woodupside_down', 'trees:'..v..'_planks_slab_upside_down' } ); + end + end + else + return nil; + end + return wood_type; +-- TODO if minetest.get_modpath("moreblocks") and moretrees.enable_stairsplus the +end + + +-- if buildings are made out of a certain wood type, people might expect trees of that type nearby +mg_villages.replace_saplings = function( replacements, wood_type ) + if( wood_type == 'default:junglewood' ) then + table.insert( replacements, {'default:sapling', 'default:junglesapling'}); + elseif( wood_type == 'default:pine_wood' ) then + table.insert( replacements, {'default:sapling', 'default:pine_sapling'}); + elseif( wood_type == 'default:acacia_wood' ) then + table.insert( replacements, {'default:sapling', 'default:acacia_sapling'}); + elseif( wood_type == 'default:aspen_wood' ) then + table.insert( replacements, {'default:sapling', 'default:aspen_sapling'}); + elseif( wood_type == 'mg:savannawood' ) then + table.insert( replacements, {'default:sapling', 'mg:savannasapling'}); + elseif( wood_type == 'mg:pinewood' ) then + table.insert( replacements, {'default:sapling', 'mg:pinesapling'}); + elseif( mg_villages.moretrees_treelist ) then + for _,v in ipairs( mg_villages.moretrees_treelist ) do + if( wood_type == "moretrees:"..v[1].."_planks" ) then + table.insert( replacements, {'default:sapling', "moretrees:"..v[1].."_sapling_ongen"}); + end + end + elseif( mg_villages.ethereal_trees ) then + for _,v in ipairs( mg_villages.ethereal_trees ) do + if( wood_type == "ethereal:"..v.."_wood" ) then + table.insert( replacements, {'default:sapling', "ethereal:"..v.."_sapling"}); + end + end + + elseif( mg_villages.forest_trees ) then + for _,v in ipairs( mg_villages.forest_trees ) do + if( wood_type == "forest:"..v.."_wood" ) then + table.insert( replacements, {'default:sapling', "forest:"..v.."_sapling"}); + end + end + + elseif( mg_villages.tinytrees_trees ) then + for _,v in ipairs( mg_villages.tinytrees_trees ) do + if( wood_type == "trees:wood_"..v ) then + table.insert( replacements, {'default:sapling', "trees:sapling_"..v}); + end + + end + elseif( mg_villages.realtest_trees ) then + for _,v in ipairs( mg_villages.realtest_trees ) do + if( wood_type == 'trees:'..v..'_planks' ) then + table.insert( replacements, {'default:sapling', "trees:"..v.."_sapling"}); + table.insert( replacements, {'default:junglesapling', "trees:"..v.."_sapling"}); + table.insert( replacements, {'default:pine_sapling', "trees:"..v.."_sapling"}); + table.insert( replacements, {'default:aspen_sapling', "trees:"..v.."_sapling"}); + end + end + + elseif( wood_type == 'deco:birch_plank' ) then + table.insert( replacements, {'default:sapling', "mapgen:birch_sapling"}); + elseif( wood_type == 'deco:cherry_plank' ) then + table.insert( replacements, {'default:sapling', "mapgen:cherry_sapling"}); + elseif( wood_type == 'deco:evergreen_plank' ) then + table.insert( replacements, {'default:sapling', "mapgen:evergreen_sapling"}); + elseif( wood_type == 'deco:oak_plank' ) then + table.insert( replacements, {'default:sapling', "mapgen:oak_sapling"}); + end +end + + +-- Note: This function is taken from the villages mod (by Sokomine) +-- at least the cottages may come in a variety of building materials +-- IMPORTANT: don't add any nodes which have on_construct here UNLESS they where in the original file already +-- on_construct will only be called for known nodes that need that treatment (see villages.analyze_mts_file and on_constr) +mg_villages.get_replacement_list = function( housetype, pr ) + + local replacements = {}; + + -- else some grass would never (re)grow (if it's below a roof) +-- table.insert( replacements, {'default:dirt', dirt_with_grass_replacement }); +-- table.insert( replacements, {'default:dirt_with_grass', dirt_with_grass_replacement }); + table.insert( replacements, {'default:dirt', 'default:dirt_with_grass' }); + + -- realtest lacks quite a lot from default + if( mg_villages.realtest_trees ) then + for i=1,8 do + table.insert( replacements, {'farming:wheat_'..i, 'farming:spelt_'..tostring( (i+(i%2))/2) }); + table.insert( replacements, {'farming:cotton_'..i, 'farming:flax_' ..tostring( (i+(i%2))/2) }); + end + for i=1,5 do + table.insert( replacements, {'default:grass_'..i, 'air' }); + end + table.insert( replacements, {'default:apple', 'air' }); + table.insert( replacements, {'default:cobble', 'default:stone_macadam' }); + table.insert( replacements, {'default:obsidian_glass', 'default:glass' }); + + -- the default doors from minetest game have been changed since the schematics where built + -- TODO: the door replacement function needs to be more complex; doesn't really work this way + else + table.insert( replacements, {'doors:door_wood_t_1', 'doors:hidden'}); + table.insert( replacements, {'doors:door_wood_b_1', 'doors:door_wood_a'}); + table.insert( replacements, {'doors:door_wood_t_2', 'doors:hidden'}); + table.insert( replacements, {'doors:door_wood_b_2', 'doors:door_wood_b'}); + end + + if( housetype and mg_villages.village_type_data[ housetype ] and mg_villages.village_type_data[ housetype ].replacement_function ) then + return mg_villages.village_type_data[ housetype ].replacement_function( housetype, pr, replacements ); + end + return replacements; +end + + + +-- Taokis houses from structure i/o +mg_villages.replacements_taoki = function( housetype, pr, replacements ) + local wood_type = 'default:wood'; + + if( mg_villages.realtest_trees ) then + wood_type = mg_villages.replace_materials( replacements, pr, + {'default:wood'}, + {''}, + {'default:wood'}, + 'default:wood'); + table.insert( replacements, {'stairs:stair_cobble', 'default:stone_bricks_stair' }); + table.insert( replacements, {'stairs:slab_cobble', 'default:stone_bricks_slab' }); + table.insert( replacements, {'stairs:stair_stone', 'default:stone_flat_stair' }); + table.insert( replacements, {'stairs:slab_stone', 'default:stone_flat_slab' }); + else + -- the main body of the houses in the .mts files is made out of wood + wood_type = mg_villages.replace_materials( replacements, pr, + {'default:wood'}, + {''}, + {'default:wood', 'default:junglewood', 'default:pine_wood', 'default:acacia_wood', 'default:aspen_wood', 'mg:pinewood', 'mg:savannawood', + 'default:clay', 'default:brick', 'default:sandstone', + 'default:stonebrick', 'default:desert_stonebrick','default:sandstonebrick', 'default:sandstone','default:stone','default:desert_stone', + 'default:coalblock','default:steelblock','default:goldblock', 'default:bronzeblock', 'default:copperblock', 'wool:white', + 'default:stone_flat', 'default:desert_stone_flat', -- realtest + 'darkage:adobe', 'darkage:basalt', 'darkage:basalt_cobble', 'darkage:chalk', + 'darkage:gneiss', 'darkage:gneiss_cobble', 'darkage:marble', 'darkage:marble_tile', + 'darkage:mud', 'darkage:ors', 'darkage:ors_cobble', + 'darkage:schist', 'darkage:serpentine', 'darkage:shale', 'darkage:silt', 'darkage:slate', + 'mapgen:mese_stone', 'mapgen:soap_stone'}, + 'default:wood'); + end + -- tree trunks are seldom used in these houses; let's change them anyway + mg_villages.replace_tree_trunk( replacements, wood_type ); + + -- all this comes in variants for stairs and slabs as well + mg_villages.replace_materials( replacements, pr, + {'stairs:stair_stonebrick', 'stairs:slab_stonebrick', 'default:stonebrick'}, + {'stairs:stair_', 'stairs:slab_', 'default:' }, + { 'stonebrick', 'stone', 'sandstone', 'cobble'}, + 'stonebrick'); + + -- decorative slabs above doors etc. + mg_villages.replace_materials( replacements, pr, + {'stairs:stair_wood'}, + {'stairs:stair_'}, + {'stonebrick', 'stone', 'sandstone', 'cobble', 'wood', 'junglewood', 'pine_wood', 'acaica_wood', 'aspen_wood' }, + 'wood'); + + -- brick roofs are a bit odd; but then... + -- all three shapes of roof parts have to fit together + mg_villages.replace_materials( replacements, pr, + {'stairs:stair_brick', 'stairs:slab_brick', 'default:brick'}, + {'stairs:stair_', 'stairs:slab_', 'default:' }, + { 'brick', 'stone', 'cobble', 'stonebrick', 'wood', 'junglewood', 'pine_wood', 'acacia_wood', 'aspen_wood', 'sandstone' }, + 'brick' ); + + return replacements; + end + + +mg_villages.replacements_nore = function( housetype, pr, replacements ) + + mg_villages.replace_materials( replacements, pr, +-- {'default:stonebrick'}, +-- {'default:'}, + {'stairs:stair_stonebrick', 'stairs:slab_stonebrick', 'default:stonebrick'}, + {'stairs:stair_', 'stairs:slab_', 'default:' }, + {'stonebrick', 'desert_stonebrick','sandstonebrick', 'sandstone','stone','desert_stone','stone_flat','desert_stone_flat','stone_bricks','desert_strone_bricks'}, + 'stonebrick'); + + -- replace the wood as well + local wood_type = mg_villages.replace_materials( replacements, pr, + {'default:wood'}, + {''}, + { 'default:wood', 'default:junglewood', 'default:pine_wood', 'default:acacia_wood', 'default:aspen_wood', 'mg:savannawood', 'mg:pinewood' }, + 'default:wood'); + mg_villages.replace_tree_trunk( replacements, wood_type ); + mg_villages.replace_saplings( replacements, wood_type ); + + if( pr:next(1,3)==1 and not( mg_villages.realtest_trees)) then + table.insert( replacements, {'default:glass', 'default:obsidian_glass'}); + end + + if( mg_villages.realtest_trees ) then + table.insert( replacements, {'stairs:stair_cobble', 'default:stone_bricks_stair' }); + table.insert( replacements, {'stairs:slab_cobble', 'default:stone_bricks_slab' }); + end + return replacements; +end + + +mg_villages.replacements_lumberjack = function( housetype, pr, replacements ) + -- replace the wood - those are lumberjacks after all + local wood_type = mg_villages.replace_materials( replacements, pr, + {'default:wood'}, + {''}, + { 'default:wood', 'default:junglewood', 'default:pine_wood', 'default:acacia_wood', 'default:aspen_wood', 'mg:savannawood', 'mg:pinewood' }, + 'default:wood'); + mg_villages.replace_tree_trunk( replacements, wood_type ); + mg_villages.replace_saplings( replacements, wood_type ); + + if( not( minetest.get_modpath('bell' ))) then + table.insert( replacements, {'bell:bell', 'default:goldblock' }); + end + if( mg_villages.realtest_trees ) then + table.insert( replacements, {'stairs:stair_cobble', 'default:stone_bricks_stair' }); + table.insert( replacements, {'stairs:slab_cobble', 'default:stone_bricks_slab' }); + end + return replacements; +end + + +mg_villages.replacements_logcabin = function( housetype, pr, replacements ) + + -- for logcabins, wood is the most likely type of roof material + local roof_type = mg_villages.replace_materials( replacements, pr, + {'stairs:stair_cobble', 'stairs:slab_cobble' }, + {'cottages:roof_connector_', 'cottages:roof_flat_' }, + {'straw', 'wood', 'wood', 'wood', 'reet', 'slate', 'red', 'brown', 'black'}, + '' ); + -- some houses have junglewood roofs + if( roof_type ) then + table.insert( replacements, {'stairs:stair_junglewood', 'cottages:roof_connector_'..roof_type }); + table.insert( replacements, {'stairs:slab_junglewood', 'cottages:roof_flat_'..roof_type }); + table.insert( replacements, {'cottages:roof_connector_wood', 'cottages:roof_connector_'..roof_type }); + table.insert( replacements, {'cottages:roof_flat_wood', 'cottages:roof_flat_'..roof_type }); + -- realtest does not have normal stairs + elseif( mg_villages.realtest_trees ) then + table.insert( replacements, {'stairs:stair_junglewood', 'trees:aspen_planks_stair' }); + table.insert( replacements, {'stairs:slab_junglewood', 'trees:aspen_planks_slab' }); + end + + if( mg_villages.realtest_trees ) then + local wood_type = mg_villages.replace_materials( replacements, pr, + {'default:wood'}, + {''}, + { 'default:wood' }, + 'default:wood'); + mg_villages.replace_tree_trunk( replacements, wood_type ); + mg_villages.replace_saplings( replacements, wood_type ); + table.insert( replacements, {'default:stonebrick', 'default:stone_bricks' }); -- used for chimneys + table.insert( replacements, {'stairs:stair_stonebrick', 'default:stone_bricks_stair' }); + -- table.insert( replacements, {'default:junglewood', wood_type }); -- replace the floor + -- replace the floor with another type of wood (looks better than the same type as above) + mg_villages.replace_materials( replacements, pr, + {'default:junglewood'}, + {''}, + { 'default:wood' }, + 'default:junglewood'); + end + return replacements; +end + + +mg_villages.replacements_chateau = function( housetype, pr, replacements ) + + if( minetest.get_modpath( 'cottages' )) then + -- straw is the most likely building material for roofs for historical buildings + mg_villages.replace_materials( replacements, pr, + -- all three shapes of roof parts have to fit together + { 'cottages:roof_straw', 'cottages:roof_connector_straw', 'cottages:roof_flat_straw' }, + { 'cottages:roof_', 'cottages:roof_connector_', 'cottages:roof_flat_'}, + {'straw', 'straw', 'straw', 'straw', 'straw', + 'reet', 'reet', 'reet', + 'slate', 'slate', + 'wood', 'wood', + 'red', + 'brown', + 'black'}, + 'straw'); + else + mg_villages.replace_materials( replacements, pr, + -- all three shapes of roof parts have to fit together + { 'cottages:roof_straw', 'cottages:roof_connector_straw', 'cottages:roof_flat_straw' }, + { 'stairs:stair_', 'stairs:stair_', 'stairs:slab_'}, + {'cobble', 'stonebrick', 'desert_cobble', 'desert_stonebrick', 'stone'}, + 'stonebrick'); + table.insert( replacements, { 'cottages:glass_pane', 'default:glass' }); + end + + + local wood_type = mg_villages.replace_materials( replacements, pr, + {'default:wood'}, + {''}, + { 'default:wood', 'default:junglewood', 'default:pine_wood', 'default:acacia_wood', 'default:aspen_wood', 'mg:savannawood', 'mg:pinewood'}, --, 'default:brick', 'default:sandstone', 'default:desert_cobble' }, + 'default:wood'); + mg_villages.replace_tree_trunk( replacements, wood_type ); + mg_villages.replace_saplings( replacements, wood_type ); + + + if( mg_villages.realtest_trees ) then + -- replace the floor with another type of wood (looks better than the same type as above) + mg_villages.replace_materials( replacements, pr, + {'stairs:stair_junglewood', 'stairs:slab_junglewood', 'default:junglewood'}, + {'stairs:stair_', 'stairs:slab_', 'default:' }, + { 'default:wood' }, + 'wood' ); + end + + + local mfs2 = mg_villages.replace_materials( replacements, pr, + {'stairs:stair_cobble', 'stairs:slab_cobble', 'default:cobble'}, + {'stairs:stair_', 'stairs:slab_', 'default:' }, + { 'cobble', 'brick', 'clay', 'desert_cobble', 'desert_stone', 'desert_stonebrick', 'sandstone', 'sandstonebrick', 'stonebrick' }, + 'cobble'); + + return replacements; +end + + +mg_villages.replacements_tent = function( housetype, pr, replacements ) + table.insert( replacements, { "glasspanes:wool_pane", "cottages:wool_tent" }); + table.insert( replacements, { "default:gravel", "default:sand" }); + -- realtest needs diffrent fence posts and doors + if( mg_villages.realtest_trees ) then + local wood_type = mg_villages.replace_materials( replacements, pr, + {'default:wood'}, + {''}, + { 'default:wood' }, + 'default:wood'); + mg_villages.replace_tree_trunk( replacements, wood_type ); + mg_villages.replace_saplings( replacements, wood_type ); + end + return replacements; +end + + +mg_villages.replacements_grasshut = function( housetype, pr, replacements ) + table.insert( replacements, {'moreblocks:fence_jungle_wood', 'default:fence' }); + if( pr:next( 1, 4) == 1 ) then + table.insert( replacements, {'dryplants:reed_roof', 'cottages:roof_straw'}); + table.insert( replacements, {'dryplants:reed_slab', 'cottages:roof_flat_straw' }); + table.insert( replacements, {'dryplants:wetreed_roof', 'cottages:roof_reet' }); + table.insert( replacements, {'dryplants:wetreed_slab', 'cottages:roof_flat_reet' }); + else -- replace the straw and cobble one of the huts uses + table.insert( replacements, {'cottages:straw', 'dryplants:wetreed' }); + table.insert( replacements, {'stairs:slab_cobble', 'dryplants:reed_slab' }); + end +--[[ does not look nice + if( pr:next( 1, 4) == 1 ) then + table.insert( replacements, {'dryplants:wetreed_roof_corner', 'default:wood' }); + table.insert( replacements, {'dryplants:wetreed_roof_corner_2', 'default:junglewood' }); + end +--]] + if( not( minetest.get_modpath( 'cavestuff' ))) then + table.insert( replacements, {'cavestuff:desert_pebble_2', 'default:slab_desert_stone' }); + end + + table.insert( replacements, {'default:desert_sand', 'default:dirt_with_grass' }); + return replacements; +end + + +mg_villages.replacements_claytrader = function( housetype, pr, replacements ) + -- the walls of the clay trader houses are made out of brick + mg_villages.replace_materials( replacements, pr, + { 'stairs:stair_brick', 'stairs:slab_brick', 'default:brick' }, -- default_materials + { 'stairs:stair_', 'stairs:slab_', 'default:' }, -- prefixes (for new materials) + { 'brick', 'stone', 'sandstone', 'sandstonebrick', 'desert_stone', 'desert_cobble', 'desert_stonebrick' }, -- new materials + 'brick' ); -- original material + + -- material for the floor + mg_villages.replace_materials( replacements, pr, + {'default:stone'}, + {'default:'}, + { 'brick', 'stone', 'sandstone', 'sandstonebrick', 'clay', 'desert_stone', 'desert_cobble', 'desert_stonebrick', + 'default:stone_flat', 'default:desert_stone_flat', -- realtest + }, + 'stone'); + + -- the clay trader homes come with stone stair roofs; slabs are used in other places as well (but those replacements here are ok) + mg_villages.replace_materials( replacements, pr, + {'stairs:stair_stone', 'stairs:slab_stone' }, + {'cottages:roof_connector_', 'cottages:roof_flat_' }, + {'straw', 'straw', 'straw', 'straw', 'straw', + 'reet', 'reet', 'reet', + 'slate', 'slate', + 'wood', 'wood', + 'red', + 'brown', + 'black'}, + ''); + + -- hills and pits that contain the materials clay traders dig for + mg_villages.replace_materials( replacements, pr, + {'default:stone_with_coal'}, + {'default:'}, + {'sand', 'sandstone', 'clay'}, + ''); + + if( mg_villages.realtest_trees ) then + local wood_type = mg_villages.replace_materials( replacements, pr, + {'default:wood'}, + {''}, + { 'default:wood' }, + 'default:wood'); + mg_villages.replace_tree_trunk( replacements, wood_type ); + mg_villages.replace_saplings( replacements, wood_type ); + table.insert( replacements, {'default:clay', 'default:dirt_with_clay'}); + local mfs2 = mg_villages.replace_materials( replacements, pr, + {'stairs:stair_cobble', 'stairs:slab_cobble', 'default:cobble'}, + {'stairs:stair_', 'stairs:slab_', 'default:' }, + { 'stone' }, -- will be replaced by mg_villages.realtest_stairs + 'sandstone'); + end + return replacements; +end + + +mg_villages.replacements_charachoal = function( housetype, pr, replacements ) + if( mg_villages.realtest_trees ) then + local wood_type = mg_villages.replace_materials( replacements, pr, + {'default:wood'}, + {''}, + { 'default:wood' }, + 'default:wood'); + mg_villages.replace_tree_trunk( replacements, wood_type ); + mg_villages.replace_saplings( replacements, wood_type ); + + table.insert( replacements, {'stairs:slab_loam', 'cottages:loam'}); + table.insert( replacements, {'stairs:stair_loam', 'cottages:loam'}); + end + return replacements; +end + + +-- wells can get the same replacements as the sourrounding village; they'll get a fitting roof that way +mg_villages.replacements_medieval = function( housetype, pr, replacements ) + + if( not( minetest.get_modpath('bell' ))) then + table.insert( replacements, {'bell:bell', 'default:goldblock' }); + end + + -- glass that served as a marker got copied accidently; there's usually no glass in cottages + table.insert( replacements, {'default:glass', 'air'}); + -- some plants started growing while the buildings where saved - eliminate them + table.insert( replacements, {'junglegrass:medium', 'air'}); + table.insert( replacements, {'junglegrass:short', 'air'}); + table.insert( replacements, {'poisonivy:seedling', 'air'}); + +-- TODO: sometimes, half_door/half_door_inverted gets rotated wrong +-- table.insert( replacements, {'cottages:half_door', 'cottages:half_door_inverted'}); +-- table.insert( replacements, {'cottages:half_door_inverted', 'cottages:half_door'}); + + -- some poor cottage owners cannot afford glass + if( pr:next( 1, 2 ) == 2 ) then +-- table.insert( replacements, {'cottages:glass_pane', 'default:fence_wood'}); + local gp = mg_villages.replace_materials( replacements, pr, + {'cottages:glass_pane'}, + {''}, + {'xpanes:pane', 'default:glass', 'default:obsidian_glass', 'default:fence_wood', + 'darkage:medieval_glass', 'darkage:iron_bars', 'darkage:iron_grille', 'darkage:wood_bars', + 'darkage:wood_frame', 'darkage:wood_grille'}, + 'cottages:glass_pane'); + end + + -- 'glass' is admittedly debatable; yet it may represent modernized old houses where only the tree-part was left standing + -- loam and clay are mentioned multiple times because those are the most likely building materials in reality + local materials = {'cottages:loam', 'cottages:loam', 'cottages:loam', 'cottages:loam', 'cottages:loam', + 'default:clay', 'default:clay', 'default:clay', 'default:clay', 'default:clay', + 'default:wood','default:junglewood', 'default:pine_wood', 'default:acacia_wood', 'default:aspen_wood', 'default:sandstone', + 'default:desert_stone','default:brick','default:cobble','default:stonebrick', + 'default:desert_stonebrick','default:sandstonebrick','default:stone', + 'mg:savannawood', 'mg:savannawood', 'mg:savannawood', 'mg:savannawood', + 'mg:pinewood', 'mg:pinewood', 'mg:pinewood', 'mg:pinewood', + 'default:stone_flat', 'default:desert_stone_flat', -- realtest + 'darkage:adobe', 'darkage:basalt', 'darkage:basalt_cobble', 'darkage:chalk', + 'darkage:gneiss', 'darkage:gneiss_cobble', 'darkage:marble', 'darkage:marble_tile', + 'darkage:mud', 'darkage:ors', 'darkage:ors_cobble', 'darkage:reinforced_chalk', + 'darkage:reinforced_wood', 'darkage:reinforced_wood_left', 'darkage:reinforced_wood_right', + 'darkage:schist', 'darkage:serpentine', 'darkage:shale', 'darkage:silt', 'darkage:slate', + 'darkage:slate_cobble', 'darkage:slate_tile', 'darkage:stone_brick', + 'mapgen:mese_stone', 'mapgen:soap_stone'}; + + -- what is sandstone (the floor) may be turned into something else + local mfs = mg_villages.replace_materials( replacements, pr, + {'default:sandstone'}, + {''}, + materials, + 'default:sandstone'); + if( mg_villages.realtest_trees ) then + table.insert( replacements, {'stairs:slab_sandstone', 'default:stone_slab'}); + local mfs2 = mg_villages.replace_materials( replacements, pr, + {'stairs:stair_sandstone', 'stairs:slab_sandstone', 'default:sandstone'}, + {'stairs:stair_', 'stairs:slab_', 'default:' }, + { 'stone' }, -- will be replaced by mg_villages.realtest_stairs + 'sandstone'); + elseif( mfs and mfs ~= 'default:sandstone' ) then + + if( mfs == 'cottages:loam' or mfs == 'default:clay' or mfs == 'mg:savannawood' or mfs == 'mg:pinewood') then + mfs = 'default:wood'; + elseif( mfs =='default:sandstonebrick' or mfs == 'default:desert_stone' or mfs == 'default:desert_stonebrick' + or not( minetest.registered_nodes[ 'stairs:slab_'..string.sub( mfs, 9 )] )) then + mfs = ''; + end + + if( mfs and mfs ~= '' ) then + -- realtest needs special treatment + table.insert( replacements, {'stairs:slab_sandstone', 'stairs:slab_'..string.sub( mfs, 9 )}); + end + end + -- except for the floor, everything else may be glass + table.insert( materials, 'default:glass' ); + + local uses_wood = false; + -- bottom part of the house (usually ground floor from outside) + local replace_clay = mg_villages.replace_materials( replacements, pr, + {'default:clay'}, + {''}, + materials, + 'default:clay'); + if( replace_clay and replace_clay ~= 'default:clay' ) then + uses_wood = mg_villages.replace_tree_trunk( replacements, replace_clay ); + mg_villages.replace_saplings( replacements, replace_clay ); + end + + -- upper part of the house (may be the same as the material for the lower part) + local replace_loam = mg_villages.replace_materials( replacements, pr, + {'cottages:loam'}, + {''}, + materials, + 'cottages:loam'); + -- if the bottom was not replaced by wood, perhaps the top is + if( not( uses_wood ) and replace_loam ) then + mg_villages.replace_tree_trunk( replacements, replace_loam ); + mg_villages.replace_saplings( replacements, replace_loam ); + elseif( mg_villages.realtest_trees ) then + local wood_type = mg_villages.replace_materials( replacements, pr, + {'default:wood'}, + {''}, + { 'default:wood' }, + 'default:wood'); + mg_villages.replace_tree_trunk( replacements, wood_type ); + mg_villages.replace_saplings( replacements, wood_type ); + end + + + -- replace cobble; for these nodes, a stony material is needed (used in wells as well) + -- mossycobble is fine here as well + local mcs = mg_villages.replace_materials( replacements, pr, + {'default:cobble'}, + {'default:'}, + {'sandstone', 'desert_stone', 'desert_cobble', + 'cobble', 'cobble', + 'stonebrick', 'stonebrick', 'stonebrick', -- more common than other materials + 'mossycobble', 'mossycobble','mossycobble', + 'stone', 'stone', + 'desert_stonebrick','sandstonebrick'}, + 'cobble'); + -- set a fitting material for the slabs; mossycobble uses the default cobble slabs + if( mg_villages.realtest_trees ) then + local mcs2 = mg_villages.replace_materials( replacements, pr, + {'stairs:stair_cobble', 'stairs:slab_cobble', 'default:cobble'}, + {'stairs:stair_', 'stairs:slab_', 'default:' }, + { 'stone' }, -- will be replaced by mg_villages.realtest_stairs + 'cobble'); + table.insert( replacements, {'moreblocks:slab_cobble', 'default:'..mcs..'_slab'}); + elseif( mcs ~= 'mossycobble' and mcs ~= 'cobble') then + + -- if no slab exists, use sandstone slabs + if( not( mcs ) or not( minetest.registered_nodes[ 'stairs:slab_'..mcs ])) then + mcs = 'sandstone'; + end + table.insert( replacements, {'stairs:slab_cobble', 'stairs:slab_'..mcs}); + table.insert( replacements, {'moreblocks:slab_cobble', 'stairs:slab_'..mcs}); + else + table.insert( replacements, {'moreblocks:slab_cobble', 'stairs:slab_'..mcs}); + end + + + -- straw is the most likely building material for roofs for historical buildings + mg_villages.replace_materials( replacements, pr, + -- all three shapes of roof parts have to fit together + { 'cottages:roof_straw', 'cottages:roof_connector_straw', 'cottages:roof_flat_straw' }, + { 'cottages:roof_', 'cottages:roof_connector_', 'cottages:roof_flat_'}, + {'straw', 'straw', 'straw', 'straw', 'straw', + 'reet', 'reet', 'reet', + 'slate', 'slate', + 'wood', 'wood', + 'red', + 'brown', + 'black'}, + 'straw'); + +--print('REPLACEMENTS used: '..minetest.serialize( replacements )); + return replacements; +end + + +mg_villages.replacements_tower = function( housetype, pr, replacements ) + -- replace the wood - this is needed in particular for the fences + local wood_type = mg_villages.replace_materials( replacements, pr, + {'default:wood'}, + {''}, + { 'default:wood', 'default:junglewood', 'mg:savannawood', 'mg:pinewood' }, + 'default:wood'); + mg_villages.replace_tree_trunk( replacements, wood_type ); + mg_villages.replace_saplings( replacements, wood_type ); + + mg_villages.replace_materials( replacements, pr, + {'stairs:stair_cobble', 'stairs:slab_cobble', 'default:cobble'}, + {'stairs:stair_', 'stairs:slab_', 'default:' }, + {'stonebrick', 'desert_stonebrick','sandstonebrick', 'sandstone','stone','desert_stone','stone_flat','desert_stone_flat','stone_bricks','desert_strone_bricks'}, + 'stonebrick'); + + return replacements; +end + + + +-- Translate replacement function from above (which aims at place_schematic) for the villages in Nores mapgen +mg_villages.get_replacement_ids = function( housetype, pr ) + + local replace = {}; + local replacements = mg_villages.get_replacement_list( housetype, pr ); + for i,v in ipairs( replacements ) do + if( v and #v == 2 ) then + replace[ minetest.get_content_id( v[1] )] = minetest.get_content_id( v[2] ); + end + end + return replace; +end + + + +-- mapgen based replacements work best using a table, while minetest.place_schematic(..) based spawning needs a list +mg_villages.get_replacement_table = function( housetype, pr, replacements ) + + local rtable = {}; + local ids = {}; + if( not( replacements )) then + replacements = mg_villages.get_replacement_list( housetype, pr ); + end + -- it is very problematic if the torches on houses melt snow and cause flooding; thus, we use a torch that is not hot + if( mg_villages.USE_DEFAULT_3D_TORCHES == false ) then + table.insert( replacements, {'default:torch', 'mg_villages:torch'}); + end + + -- make charachoal villages safe from spreading fire + if( not( mg_villages.use_normal_unsafe_lava )) then + table.insert( replacements, {'default:lava_source', 'mg_villages:lava_source_tamed'}); + table.insert( replacements, {'default:lava_flowing', 'mg_villages:lava_flowing_tamed'}); + end + + for i,v in ipairs( replacements ) do + if( v and #v == 2 ) then + rtable[ v[1] ] = v[2]; + ids[ minetest.get_content_id( v[1] )] = minetest.get_content_id( v[2] ); + end + end + return { table = rtable, list = replacements, ids = ids }; +end + +mg_villages.get_content_id_replaced = function( node_name, replacements ) + if( not( node_name ) or not( replacements ) or not(replacements.table )) then + return minetest.get_content_id( 'ignore' ); + end + if( replacements.table[ node_name ]) then + return minetest.get_content_id( replacements.table[ node_name ] ); + else + return minetest.get_content_id( node_name ); + end +end + + +-- they don't all grow cotton; farming_plus fruits are far more intresting! +-- Note: This function modifies replacements.ids and replacements.table for each building +-- as far as fruits are concerned. It needs to be called before placing a building +-- which contains fruits. +-- The function might as well be a local one. +mg_villages.get_fruit_replacements = function( replacements, fruit) + + if( not( fruit )) then + return; + end + + for i=1,8 do + local old_name = ''; + local new_name = ''; + -- farming_plus plants sometimes come in 3 or 4 variants, but not in 8 as cotton does + if( minetest.registered_nodes[ 'farming_plus:'..fruit..'_'..i ]) then + old_name = "farming:cotton_"..i; + new_name = 'farming_plus:'..fruit..'_'..i; + + -- "surplus" cotton variants will be replaced with the full grown fruit + elseif( minetest.registered_nodes[ 'farming_plus:'..fruit ]) then + old_name = "farming:cotton_"..i; + new_name = 'farming_plus:'..fruit; + + -- and plants from farming: are supported as well + elseif( minetest.registered_nodes[ 'farming:'..fruit..'_'..i ]) then + old_name = "farming:cotton_"..i; + new_name = 'farming:'..fruit..'_'..i; + + elseif( minetest.registered_nodes[ 'farming:'..fruit ]) then + old_name = "farming:cotton_"..i; + new_name = 'farming:'..fruit; + end + + if( old_name ~= '' and new_name ~= '' ) then + -- this is mostly used by the voxelmanip based spawning of .we files + replacements.ids[ minetest.get_content_id( old_name )] = minetest.get_content_id( new_name ); + -- this is used by the place_schematic based spawning + replacements.table[ old_name ] = new_name; + end + end +end diff --git a/mods/mg_villages/roads.lua b/mods/mg_villages/roads.lua new file mode 100644 index 0000000..5391f83 --- /dev/null +++ b/mods/mg_villages/roads.lua @@ -0,0 +1,209 @@ + +-- helper function for get_path_from_pos_to_plot +mg_villages.next_step_on_road_path = function( p, this_road_xdir, following_road ) + if( this_road_xdir == true ) then + if( p.x < following_road.x ) then + p.x = following_road.x; + else + p.x = following_road.x + following_road.bsizex -1; + end + else + if( p.z < following_road.z ) then + p.z = following_road.z; + else + p.z = following_road.z + following_road.bsizez -1; + end + end + return p; +end + + +-- pos needs to be a position either on a road or at max 1 node away from a road +mg_villages.get_path_from_pos_to_plot_via_roads = function( village_id, pos, target_plot_nr ) + if( not( mg_villages.all_villages[ village_id ] ) + or not( target_plot_nr ) + or not( mg_villages.all_villages[ village_id ].to_add_data.bpos[ target_plot_nr ]) + or not( mg_villages.all_villages[ village_id ].to_add_data.bpos[ target_plot_nr ].road_nr)) then + return {}; + end + local bpos_list = mg_villages.all_villages[ village_id ].to_add_data.bpos; + + -- find out which road is the one next to pos + local standing_on_road = nil; + local roads = mg_villages.get_road_list( village_id, false ); + for i,road in ipairs( roads ) do + local r = bpos_list[ road ]; -- road data + -- if this is really a road, and if a parent road exists (or is 0) + if( r and r.btype == "road" and r.parent_road_plot + -- ..and pos is in the area of the road or next to it + and pos.x >= r.x-1 and pos.x <= r.x + r.bsizex + 1 + and pos.z >= r.z-1 and pos.z <= r.z + r.bsizez + 1 + and pos.y >= r.y-4 and pos.y <= r.y + 4 ) then + standing_on_road = i; + end + end + -- nothing found + if( not( standing_on_road )) then + return; + end + + -- walk from pos up to the main road + local start_to_main_road = {}; + local next_road_plot = roads[ standing_on_road ]; + while( next_road_plot and bpos_list[ next_road_plot ] and bpos_list[ next_road_plot ].btype=="road" ) do + table.insert( start_to_main_road, next_road_plot ); + next_road_plot = bpos_list[ next_road_plot ].parent_road_plot; + end + + -- walk from the target road up to the main road - until we find a road that is + -- already part of the path from pos to the main road + local target_to_main_road = {}; + local next_road_plot = roads[ bpos_list[ target_plot_nr ].road_nr ]; + local match_found = -1; + while( next_road_plot and bpos_list[ next_road_plot ] and bpos_list[ next_road_plot ].btype=="road" and match_found==-1) do + -- it may not be necessary to go all the way back to the main road + for i,r in ipairs( start_to_main_road ) do + if( r == next_road_plot ) then + match_found = i; + end + end + if( match_found == -1) then + table.insert( target_to_main_road, next_road_plot ); + end + next_road_plot = bpos_list[ next_road_plot ].parent_road_plot; + end + + if( match_found == -1 ) then + match_found = #start_to_main_road; + end + -- we may have gone too far up and can take a turn much earlier + local start_to_target = {}; + for i=1,match_found do + table.insert( start_to_target, start_to_main_road[i] ); + end + + -- combine the full walk through the tree-like road structure into one list of roads + for i=#target_to_main_road,1,-1 do + table.insert( start_to_target, target_to_main_road[i] ); + end + + -- generate a path for travelling on these roads + local path = {}; + + -- let the mob take the first step onto the road + local first_road = bpos_list[ start_to_target[1] ]; + local p = {x=pos.x, y=first_road.y+1, z=pos.z}; + p = mg_villages.next_step_on_road_path( p, not(first_road.xdir), first_road ); + table.insert( path, {x=p.x, y=p.y, z=p.z} ); + + -- travel using all the given roads + for i=1,#start_to_target-1 do + local this_road = bpos_list[ start_to_target[i] ]; + local following_road = bpos_list[ start_to_target[i+1]]; + -- walk on the inside in curves instead of taking longer paths + p = mg_villages.next_step_on_road_path( p, this_road.xdir, following_road ); + table.insert( path, {x=p.x, y=p.y, z=p.z} ); + end + + -- walk on the last road to the target plot + local last_road = bpos_list[ start_to_target[ #start_to_target ] ]; + local target = {x=bpos_list[ target_plot_nr ].x + math.floor(bpos_list[ target_plot_nr ].bsizex/2), + y = p.y, + z=bpos_list[ target_plot_nr ].z + math.floor(bpos_list[ target_plot_nr ].bsizez/2), + bsizex = 2, bsizez = 2}; + p = mg_villages.next_step_on_road_path( p, last_road.xdir, target); + table.insert( path, {x=p.x, y=p.y, z=p.z} ); + + -- take the very last step and leave the road + p = mg_villages.next_step_on_road_path( p, not(last_road.xdir), target); + -- make sure we do not walk further than one step into the plot + if( p.x < last_road.x ) then + p.x = last_road.x - 1; + elseif( p.x >= last_road.x + last_road.bsizex ) then + p.x = last_road.x + last_road.bsizex + 1; + elseif( p.z < last_road.z ) then + p.z = last_road.z - 1; + elseif( p.z >= last_road.z + last_road.bsizez ) then + p.z = last_road.z + last_road.bsizez + 1; + end + table.insert( path, {x=p.x, y=p.y, z=p.z} ); + +--[[ + -- if you want to visualize the path with yellow wool blocks for debugging, uncomment this + local str = " path: "; + for i,p in ipairs( path ) do + minetest.set_node( p, {name="wool:yellow"}); + str = str.." "..minetest.pos_to_string( p ); + end + minetest.chat_send_player("singleplayer","roads to walk on: "..minetest.serialize( start_to_target)..str); +--]] + return path; +end + +-- try to reconstruct the tree-like road network structure (the data was +-- not saved completely from the beginning) +mg_villages.get_road_list = function( village_id, force_check ) + if( not( mg_villages.all_villages[ village_id ] )) then + return {}; + end + local bpos_list = mg_villages.all_villages[ village_id ].to_add_data.bpos; + local roads = {}; + for i,pos in ipairs( bpos_list ) do + if( pos.btype and pos.btype=="road" ) then + -- store the plot nr for each road nr + roads[ pos.road_nr ] = i; + -- store weather the road streches in x- or z-direction + if( pos.bsizex >= pos.bsizez) then + pos.xdir = true; + else + pos.xdir = false; + end + end + end + -- a village without roads (i.e. a single house) + if( not( roads[1])) then + return {}; + end + -- the parent roads have already been identified + if( not( force_check ) and bpos_list[ roads[ 1 ]].parent_road_plot == 0 ) then + return roads; + end + + -- assume that road nr. 1 is the main road (which it is due to the way villages are constructed) + bpos_list[ roads[ 1 ]].parent_road_plot = 0; + + -- identify all parent roads + for i=1,#roads do + if( bpos_list[ roads[i] ].parent_road_plot ) then + mg_villages.mark_roads_that_branch_off( bpos_list, roads, roads[i] ); + end + end + + return roads; +end + + +-- changes bpos_list and sets bpos_list[ road ].parent_road_plot = plot_nr for those roads where +-- plot_nr contains the road from which road branches off +mg_villages.mark_roads_that_branch_off = function( bpos_list, roads, plot_nr ) + -- see which roads branch off from this parent road + local parent_road = bpos_list[ plot_nr ]; + for i,road in ipairs( roads ) do + local r = bpos_list[ road ]; -- road data + -- if the road is not yet connected to another one + if( r.parent_road_plot == nil + -- and if it is 90 degree rotated compared to the potential parent road + and( r.xdir ~= parent_road.xdir ) + -- and if one end lies inside the parent road + and( (r.x >= parent_road.x and r.x <= parent_road.x + parent_road.bsizex) + or(r.x+r.bsizex >= parent_road.x and r.x+r.bsizex <= parent_road.x + parent_road.bsizex)) + and( (r.z >= parent_road.z and r.z <= parent_road.z + parent_road.bsizez) + or(r.z+r.bsizez >= parent_road.z and r.z+r.bsizez <= parent_road.z + parent_road.bsizez))) then + + -- store plot_nr instead of road_nr as that is more useful + bpos_list[ road ].parent_road_plot = plot_nr; + end + end +end + + diff --git a/mods/mg_villages/schems/allmende_3_90.mts b/mods/mg_villages/schems/allmende_3_90.mts new file mode 100644 index 0000000..27cf78d Binary files /dev/null and b/mods/mg_villages/schems/allmende_3_90.mts differ diff --git a/mods/mg_villages/schems/bench_1.mts b/mods/mg_villages/schems/bench_1.mts new file mode 100644 index 0000000..0923ff0 Binary files /dev/null and b/mods/mg_villages/schems/bench_1.mts differ diff --git a/mods/mg_villages/schems/bench_2.mts b/mods/mg_villages/schems/bench_2.mts new file mode 100644 index 0000000..a0e5a52 Binary files /dev/null and b/mods/mg_villages/schems/bench_2.mts differ diff --git a/mods/mg_villages/schems/bench_3.mts b/mods/mg_villages/schems/bench_3.mts new file mode 100644 index 0000000..7451c69 Binary files /dev/null and b/mods/mg_villages/schems/bench_3.mts differ diff --git a/mods/mg_villages/schems/bench_4.mts b/mods/mg_villages/schems/bench_4.mts new file mode 100644 index 0000000..5817331 Binary files /dev/null and b/mods/mg_villages/schems/bench_4.mts differ diff --git a/mods/mg_villages/schems/charachoal_hill.mts b/mods/mg_villages/schems/charachoal_hill.mts new file mode 100644 index 0000000..2be9f3c Binary files /dev/null and b/mods/mg_villages/schems/charachoal_hill.mts differ diff --git a/mods/mg_villages/schems/charachoal_hut.mts b/mods/mg_villages/schems/charachoal_hut.mts new file mode 100644 index 0000000..a2391e1 Binary files /dev/null and b/mods/mg_villages/schems/charachoal_hut.mts differ diff --git a/mods/mg_villages/schems/chateau_without_garden.mts b/mods/mg_villages/schems/chateau_without_garden.mts new file mode 100644 index 0000000..27e49df Binary files /dev/null and b/mods/mg_villages/schems/chateau_without_garden.mts differ diff --git a/mods/mg_villages/schems/church_1.mts b/mods/mg_villages/schems/church_1.mts new file mode 100644 index 0000000..787c842 Binary files /dev/null and b/mods/mg_villages/schems/church_1.mts differ diff --git a/mods/mg_villages/schems/church_1_0.mts b/mods/mg_villages/schems/church_1_0.mts new file mode 100644 index 0000000..e5e6160 Binary files /dev/null and b/mods/mg_villages/schems/church_1_0.mts differ diff --git a/mods/mg_villages/schems/clay_pit_1.mts b/mods/mg_villages/schems/clay_pit_1.mts new file mode 100644 index 0000000..cd6ce96 Binary files /dev/null and b/mods/mg_villages/schems/clay_pit_1.mts differ diff --git a/mods/mg_villages/schems/clay_pit_2.mts b/mods/mg_villages/schems/clay_pit_2.mts new file mode 100644 index 0000000..d47b858 Binary files /dev/null and b/mods/mg_villages/schems/clay_pit_2.mts differ diff --git a/mods/mg_villages/schems/clay_pit_3.mts b/mods/mg_villages/schems/clay_pit_3.mts new file mode 100644 index 0000000..3304ada Binary files /dev/null and b/mods/mg_villages/schems/clay_pit_3.mts differ diff --git a/mods/mg_villages/schems/clay_pit_4.mts b/mods/mg_villages/schems/clay_pit_4.mts new file mode 100644 index 0000000..b85474a Binary files /dev/null and b/mods/mg_villages/schems/clay_pit_4.mts differ diff --git a/mods/mg_villages/schems/clay_pit_5.mts b/mods/mg_villages/schems/clay_pit_5.mts new file mode 100644 index 0000000..a7676b2 Binary files /dev/null and b/mods/mg_villages/schems/clay_pit_5.mts differ diff --git a/mods/mg_villages/schems/cotton_field.mts b/mods/mg_villages/schems/cotton_field.mts new file mode 100644 index 0000000..ac32a0a Binary files /dev/null and b/mods/mg_villages/schems/cotton_field.mts differ diff --git a/mods/mg_villages/schems/cow_shed_1_270.mts b/mods/mg_villages/schems/cow_shed_1_270.mts new file mode 100644 index 0000000..589db94 Binary files /dev/null and b/mods/mg_villages/schems/cow_shed_1_270.mts differ diff --git a/mods/mg_villages/schems/default_town_farm.mts b/mods/mg_villages/schems/default_town_farm.mts new file mode 100644 index 0000000..7353d3b Binary files /dev/null and b/mods/mg_villages/schems/default_town_farm.mts differ diff --git a/mods/mg_villages/schems/default_town_fountain.mts b/mods/mg_villages/schems/default_town_fountain.mts new file mode 100644 index 0000000..ee7b050 Binary files /dev/null and b/mods/mg_villages/schems/default_town_fountain.mts differ diff --git a/mods/mg_villages/schems/default_town_hotel.mts b/mods/mg_villages/schems/default_town_hotel.mts new file mode 100644 index 0000000..e11b4e7 Binary files /dev/null and b/mods/mg_villages/schems/default_town_hotel.mts differ diff --git a/mods/mg_villages/schems/default_town_hotel_(.mts b/mods/mg_villages/schems/default_town_hotel_(.mts new file mode 100644 index 0000000..4812267 Binary files /dev/null and b/mods/mg_villages/schems/default_town_hotel_(.mts differ diff --git a/mods/mg_villages/schems/default_town_hotel_).mts b/mods/mg_villages/schems/default_town_hotel_).mts new file mode 100644 index 0000000..5c36f8f Binary files /dev/null and b/mods/mg_villages/schems/default_town_hotel_).mts differ diff --git a/mods/mg_villages/schems/default_town_house_large_1.mts b/mods/mg_villages/schems/default_town_house_large_1.mts new file mode 100644 index 0000000..c5b9914 Binary files /dev/null and b/mods/mg_villages/schems/default_town_house_large_1.mts differ diff --git a/mods/mg_villages/schems/default_town_house_large_2.mts b/mods/mg_villages/schems/default_town_house_large_2.mts new file mode 100644 index 0000000..2b34b84 Binary files /dev/null and b/mods/mg_villages/schems/default_town_house_large_2.mts differ diff --git a/mods/mg_villages/schems/default_town_house_medium.mts b/mods/mg_villages/schems/default_town_house_medium.mts new file mode 100644 index 0000000..1386b99 Binary files /dev/null and b/mods/mg_villages/schems/default_town_house_medium.mts differ diff --git a/mods/mg_villages/schems/default_town_house_small.mts b/mods/mg_villages/schems/default_town_house_small.mts new file mode 100644 index 0000000..1ab6b8b Binary files /dev/null and b/mods/mg_villages/schems/default_town_house_small.mts differ diff --git a/mods/mg_villages/schems/default_town_house_tiny_1.mts b/mods/mg_villages/schems/default_town_house_tiny_1.mts new file mode 100644 index 0000000..0839a9f Binary files /dev/null and b/mods/mg_villages/schems/default_town_house_tiny_1.mts differ diff --git a/mods/mg_villages/schems/default_town_house_tiny_2.mts b/mods/mg_villages/schems/default_town_house_tiny_2.mts new file mode 100644 index 0000000..7bec7d5 Binary files /dev/null and b/mods/mg_villages/schems/default_town_house_tiny_2.mts differ diff --git a/mods/mg_villages/schems/default_town_house_tiny_3.mts b/mods/mg_villages/schems/default_town_house_tiny_3.mts new file mode 100644 index 0000000..e6d16d8 Binary files /dev/null and b/mods/mg_villages/schems/default_town_house_tiny_3.mts differ diff --git a/mods/mg_villages/schems/default_town_park.mts b/mods/mg_villages/schems/default_town_park.mts new file mode 100644 index 0000000..3af734c Binary files /dev/null and b/mods/mg_villages/schems/default_town_park.mts differ diff --git a/mods/mg_villages/schems/default_town_tower.mts b/mods/mg_villages/schems/default_town_tower.mts new file mode 100644 index 0000000..38fff89 Binary files /dev/null and b/mods/mg_villages/schems/default_town_tower.mts differ diff --git a/mods/mg_villages/schems/default_town_well.mts b/mods/mg_villages/schems/default_town_well.mts new file mode 100644 index 0000000..28e6c64 Binary files /dev/null and b/mods/mg_villages/schems/default_town_well.mts differ diff --git a/mods/mg_villages/schems/empty_1.mts b/mods/mg_villages/schems/empty_1.mts new file mode 100644 index 0000000..6fae916 Binary files /dev/null and b/mods/mg_villages/schems/empty_1.mts differ diff --git a/mods/mg_villages/schems/empty_16x32_2_90.mts b/mods/mg_villages/schems/empty_16x32_2_90.mts new file mode 100644 index 0000000..7c9f43a Binary files /dev/null and b/mods/mg_villages/schems/empty_16x32_2_90.mts differ diff --git a/mods/mg_villages/schems/empty_2.mts b/mods/mg_villages/schems/empty_2.mts new file mode 100644 index 0000000..7d310a1 Binary files /dev/null and b/mods/mg_villages/schems/empty_2.mts differ diff --git a/mods/mg_villages/schems/empty_3.mts b/mods/mg_villages/schems/empty_3.mts new file mode 100644 index 0000000..2a4fff1 Binary files /dev/null and b/mods/mg_villages/schems/empty_3.mts differ diff --git a/mods/mg_villages/schems/empty_32x32_2_90.mts b/mods/mg_villages/schems/empty_32x32_2_90.mts new file mode 100644 index 0000000..903e5cc Binary files /dev/null and b/mods/mg_villages/schems/empty_32x32_2_90.mts differ diff --git a/mods/mg_villages/schems/empty_4.mts b/mods/mg_villages/schems/empty_4.mts new file mode 100644 index 0000000..381cbef Binary files /dev/null and b/mods/mg_villages/schems/empty_4.mts differ diff --git a/mods/mg_villages/schems/empty_5.mts b/mods/mg_villages/schems/empty_5.mts new file mode 100644 index 0000000..91f6fff Binary files /dev/null and b/mods/mg_villages/schems/empty_5.mts differ diff --git a/mods/mg_villages/schems/farm_full_1.mts b/mods/mg_villages/schems/farm_full_1.mts new file mode 100644 index 0000000..58b96bf Binary files /dev/null and b/mods/mg_villages/schems/farm_full_1.mts differ diff --git a/mods/mg_villages/schems/farm_full_2.mts b/mods/mg_villages/schems/farm_full_2.mts new file mode 100644 index 0000000..8be12dc Binary files /dev/null and b/mods/mg_villages/schems/farm_full_2.mts differ diff --git a/mods/mg_villages/schems/farm_full_3.mts b/mods/mg_villages/schems/farm_full_3.mts new file mode 100644 index 0000000..d5dc169 Binary files /dev/null and b/mods/mg_villages/schems/farm_full_3.mts differ diff --git a/mods/mg_villages/schems/farm_full_4.mts b/mods/mg_villages/schems/farm_full_4.mts new file mode 100644 index 0000000..de1dcaa Binary files /dev/null and b/mods/mg_villages/schems/farm_full_4.mts differ diff --git a/mods/mg_villages/schems/farm_full_5.mts b/mods/mg_villages/schems/farm_full_5.mts new file mode 100644 index 0000000..ee72977 Binary files /dev/null and b/mods/mg_villages/schems/farm_full_5.mts differ diff --git a/mods/mg_villages/schems/farm_full_6.mts b/mods/mg_villages/schems/farm_full_6.mts new file mode 100644 index 0000000..f6d6f95 Binary files /dev/null and b/mods/mg_villages/schems/farm_full_6.mts differ diff --git a/mods/mg_villages/schems/farm_tiny_1.mts b/mods/mg_villages/schems/farm_tiny_1.mts new file mode 100644 index 0000000..bdb76a5 Binary files /dev/null and b/mods/mg_villages/schems/farm_tiny_1.mts differ diff --git a/mods/mg_villages/schems/farm_tiny_2.mts b/mods/mg_villages/schems/farm_tiny_2.mts new file mode 100644 index 0000000..099d23b Binary files /dev/null and b/mods/mg_villages/schems/farm_tiny_2.mts differ diff --git a/mods/mg_villages/schems/farm_tiny_3.mts b/mods/mg_villages/schems/farm_tiny_3.mts new file mode 100644 index 0000000..c639cdf Binary files /dev/null and b/mods/mg_villages/schems/farm_tiny_3.mts differ diff --git a/mods/mg_villages/schems/farm_tiny_4.mts b/mods/mg_villages/schems/farm_tiny_4.mts new file mode 100644 index 0000000..bc7131f Binary files /dev/null and b/mods/mg_villages/schems/farm_tiny_4.mts differ diff --git a/mods/mg_villages/schems/farm_tiny_5.mts b/mods/mg_villages/schems/farm_tiny_5.mts new file mode 100644 index 0000000..3b9d858 Binary files /dev/null and b/mods/mg_villages/schems/farm_tiny_5.mts differ diff --git a/mods/mg_villages/schems/farm_tiny_6.mts b/mods/mg_villages/schems/farm_tiny_6.mts new file mode 100644 index 0000000..3b7d92d Binary files /dev/null and b/mods/mg_villages/schems/farm_tiny_6.mts differ diff --git a/mods/mg_villages/schems/farm_tiny_7.mts b/mods/mg_villages/schems/farm_tiny_7.mts new file mode 100644 index 0000000..d9e6ebb Binary files /dev/null and b/mods/mg_villages/schems/farm_tiny_7.mts differ diff --git a/mods/mg_villages/schems/field_1.mts b/mods/mg_villages/schems/field_1.mts new file mode 100644 index 0000000..e0fc520 Binary files /dev/null and b/mods/mg_villages/schems/field_1.mts differ diff --git a/mods/mg_villages/schems/field_2.mts b/mods/mg_villages/schems/field_2.mts new file mode 100644 index 0000000..bd78dac Binary files /dev/null and b/mods/mg_villages/schems/field_2.mts differ diff --git a/mods/mg_villages/schems/field_3.mts b/mods/mg_villages/schems/field_3.mts new file mode 100644 index 0000000..a3cfed4 Binary files /dev/null and b/mods/mg_villages/schems/field_3.mts differ diff --git a/mods/mg_villages/schems/field_4.mts b/mods/mg_villages/schems/field_4.mts new file mode 100644 index 0000000..45f3d17 Binary files /dev/null and b/mods/mg_villages/schems/field_4.mts differ diff --git a/mods/mg_villages/schems/forge.mts b/mods/mg_villages/schems/forge.mts new file mode 100644 index 0000000..8835c9e Binary files /dev/null and b/mods/mg_villages/schems/forge.mts differ diff --git a/mods/mg_villages/schems/forge_1.mts b/mods/mg_villages/schems/forge_1.mts new file mode 100644 index 0000000..0439926 Binary files /dev/null and b/mods/mg_villages/schems/forge_1.mts differ diff --git a/mods/mg_villages/schems/forge_1_0.mts b/mods/mg_villages/schems/forge_1_0.mts new file mode 100644 index 0000000..ea482e4 Binary files /dev/null and b/mods/mg_villages/schems/forge_1_0.mts differ diff --git a/mods/mg_villages/schems/fountain.mts b/mods/mg_villages/schems/fountain.mts new file mode 100644 index 0000000..43bdaab Binary files /dev/null and b/mods/mg_villages/schems/fountain.mts differ diff --git a/mods/mg_villages/schems/grasshut1_1_90.mts b/mods/mg_villages/schems/grasshut1_1_90.mts new file mode 100644 index 0000000..941f90c Binary files /dev/null and b/mods/mg_villages/schems/grasshut1_1_90.mts differ diff --git a/mods/mg_villages/schems/grasshut2_1_90.mts b/mods/mg_villages/schems/grasshut2_1_90.mts new file mode 100644 index 0000000..bb94410 Binary files /dev/null and b/mods/mg_villages/schems/grasshut2_1_90.mts differ diff --git a/mods/mg_villages/schems/grasshut3_1_90.mts b/mods/mg_villages/schems/grasshut3_1_90.mts new file mode 100644 index 0000000..85feff3 Binary files /dev/null and b/mods/mg_villages/schems/grasshut3_1_90.mts differ diff --git a/mods/mg_villages/schems/grasshut4_1_90.mts b/mods/mg_villages/schems/grasshut4_1_90.mts new file mode 100644 index 0000000..2fe289c Binary files /dev/null and b/mods/mg_villages/schems/grasshut4_1_90.mts differ diff --git a/mods/mg_villages/schems/grasshut5_1_90.mts b/mods/mg_villages/schems/grasshut5_1_90.mts new file mode 100644 index 0000000..7a4e3b4 Binary files /dev/null and b/mods/mg_villages/schems/grasshut5_1_90.mts differ diff --git a/mods/mg_villages/schems/grasshut6_1_90.mts b/mods/mg_villages/schems/grasshut6_1_90.mts new file mode 100644 index 0000000..e69880d Binary files /dev/null and b/mods/mg_villages/schems/grasshut6_1_90.mts differ diff --git a/mods/mg_villages/schems/grasshut7_1_90.mts b/mods/mg_villages/schems/grasshut7_1_90.mts new file mode 100644 index 0000000..35e021a Binary files /dev/null and b/mods/mg_villages/schems/grasshut7_1_90.mts differ diff --git a/mods/mg_villages/schems/grasshut8_1_90.mts b/mods/mg_villages/schems/grasshut8_1_90.mts new file mode 100644 index 0000000..7f21392 Binary files /dev/null and b/mods/mg_villages/schems/grasshut8_1_90.mts differ diff --git a/mods/mg_villages/schems/grasshut9_1_90.mts b/mods/mg_villages/schems/grasshut9_1_90.mts new file mode 100644 index 0000000..e069aee Binary files /dev/null and b/mods/mg_villages/schems/grasshut9_1_90.mts differ diff --git a/mods/mg_villages/schems/grasshut_hotel_1_90.mts b/mods/mg_villages/schems/grasshut_hotel_1_90.mts new file mode 100644 index 0000000..4dee35f Binary files /dev/null and b/mods/mg_villages/schems/grasshut_hotel_1_90.mts differ diff --git a/mods/mg_villages/schems/grasshut_pub_1_90.mts b/mods/mg_villages/schems/grasshut_pub_1_90.mts new file mode 100644 index 0000000..30f7e94 Binary files /dev/null and b/mods/mg_villages/schems/grasshut_pub_1_90.mts differ diff --git a/mods/mg_villages/schems/grasshut_shop_1_90.mts b/mods/mg_villages/schems/grasshut_shop_1_90.mts new file mode 100644 index 0000000..708c844 Binary files /dev/null and b/mods/mg_villages/schems/grasshut_shop_1_90.mts differ diff --git a/mods/mg_villages/schems/grasshutcenter_1_90.mts b/mods/mg_villages/schems/grasshutcenter_1_90.mts new file mode 100644 index 0000000..e922873 Binary files /dev/null and b/mods/mg_villages/schems/grasshutcenter_1_90.mts differ diff --git a/mods/mg_villages/schems/grasshutwell_8_90.mts b/mods/mg_villages/schems/grasshutwell_8_90.mts new file mode 100644 index 0000000..8b7560f Binary files /dev/null and b/mods/mg_villages/schems/grasshutwell_8_90.mts differ diff --git a/mods/mg_villages/schems/hochsitz_1.mts b/mods/mg_villages/schems/hochsitz_1.mts new file mode 100644 index 0000000..51218fe Binary files /dev/null and b/mods/mg_villages/schems/hochsitz_1.mts differ diff --git a/mods/mg_villages/schems/hochsitz_2.mts b/mods/mg_villages/schems/hochsitz_2.mts new file mode 100644 index 0000000..a075acf Binary files /dev/null and b/mods/mg_villages/schems/hochsitz_2.mts differ diff --git a/mods/mg_villages/schems/hochsitz_3.mts b/mods/mg_villages/schems/hochsitz_3.mts new file mode 100644 index 0000000..9822b55 Binary files /dev/null and b/mods/mg_villages/schems/hochsitz_3.mts differ diff --git a/mods/mg_villages/schems/hochsitz_4.mts b/mods/mg_villages/schems/hochsitz_4.mts new file mode 100644 index 0000000..4183700 Binary files /dev/null and b/mods/mg_villages/schems/hochsitz_4.mts differ diff --git a/mods/mg_villages/schems/house_1_0.mts b/mods/mg_villages/schems/house_1_0.mts new file mode 100644 index 0000000..d004e37 Binary files /dev/null and b/mods/mg_villages/schems/house_1_0.mts differ diff --git a/mods/mg_villages/schems/house_medieval_fancy_1_90.mts b/mods/mg_villages/schems/house_medieval_fancy_1_90.mts new file mode 100644 index 0000000..3bab9e5 Binary files /dev/null and b/mods/mg_villages/schems/house_medieval_fancy_1_90.mts differ diff --git a/mods/mg_villages/schems/house_with_garden_1_0.mts b/mods/mg_villages/schems/house_with_garden_1_0.mts new file mode 100644 index 0000000..99592bb Binary files /dev/null and b/mods/mg_villages/schems/house_with_garden_1_0.mts differ diff --git a/mods/mg_villages/schems/hut_1.mts b/mods/mg_villages/schems/hut_1.mts new file mode 100644 index 0000000..2351831 Binary files /dev/null and b/mods/mg_villages/schems/hut_1.mts differ diff --git a/mods/mg_villages/schems/hut_2.mts b/mods/mg_villages/schems/hut_2.mts new file mode 100644 index 0000000..de1d174 Binary files /dev/null and b/mods/mg_villages/schems/hut_2.mts differ diff --git a/mods/mg_villages/schems/inn_1_0.mts b/mods/mg_villages/schems/inn_1_0.mts new file mode 100644 index 0000000..7df1253 Binary files /dev/null and b/mods/mg_villages/schems/inn_1_0.mts differ diff --git a/mods/mg_villages/schems/lamp.mts b/mods/mg_villages/schems/lamp.mts new file mode 100644 index 0000000..14cd338 Binary files /dev/null and b/mods/mg_villages/schems/lamp.mts differ diff --git a/mods/mg_villages/schems/library_1_0.mts b/mods/mg_villages/schems/library_1_0.mts new file mode 100644 index 0000000..bcf5c7b Binary files /dev/null and b/mods/mg_villages/schems/library_1_0.mts differ diff --git a/mods/mg_villages/schems/logcabin1.mts b/mods/mg_villages/schems/logcabin1.mts new file mode 100644 index 0000000..652b2e7 Binary files /dev/null and b/mods/mg_villages/schems/logcabin1.mts differ diff --git a/mods/mg_villages/schems/logcabin10.mts b/mods/mg_villages/schems/logcabin10.mts new file mode 100644 index 0000000..5fe93aa Binary files /dev/null and b/mods/mg_villages/schems/logcabin10.mts differ diff --git a/mods/mg_villages/schems/logcabin11.mts b/mods/mg_villages/schems/logcabin11.mts new file mode 100644 index 0000000..6a4b7d9 Binary files /dev/null and b/mods/mg_villages/schems/logcabin11.mts differ diff --git a/mods/mg_villages/schems/logcabin2.mts b/mods/mg_villages/schems/logcabin2.mts new file mode 100644 index 0000000..a8ea9f1 Binary files /dev/null and b/mods/mg_villages/schems/logcabin2.mts differ diff --git a/mods/mg_villages/schems/logcabin3.mts b/mods/mg_villages/schems/logcabin3.mts new file mode 100644 index 0000000..3b4e2e3 Binary files /dev/null and b/mods/mg_villages/schems/logcabin3.mts differ diff --git a/mods/mg_villages/schems/logcabin4.mts b/mods/mg_villages/schems/logcabin4.mts new file mode 100644 index 0000000..6715080 Binary files /dev/null and b/mods/mg_villages/schems/logcabin4.mts differ diff --git a/mods/mg_villages/schems/logcabin5.mts b/mods/mg_villages/schems/logcabin5.mts new file mode 100644 index 0000000..ff0a1da Binary files /dev/null and b/mods/mg_villages/schems/logcabin5.mts differ diff --git a/mods/mg_villages/schems/logcabin6.mts b/mods/mg_villages/schems/logcabin6.mts new file mode 100644 index 0000000..5f00576 Binary files /dev/null and b/mods/mg_villages/schems/logcabin6.mts differ diff --git a/mods/mg_villages/schems/logcabin7.mts b/mods/mg_villages/schems/logcabin7.mts new file mode 100644 index 0000000..eec1211 Binary files /dev/null and b/mods/mg_villages/schems/logcabin7.mts differ diff --git a/mods/mg_villages/schems/logcabin8.mts b/mods/mg_villages/schems/logcabin8.mts new file mode 100644 index 0000000..c54e2b3 Binary files /dev/null and b/mods/mg_villages/schems/logcabin8.mts differ diff --git a/mods/mg_villages/schems/logcabin9.mts b/mods/mg_villages/schems/logcabin9.mts new file mode 100644 index 0000000..2bcd822 Binary files /dev/null and b/mods/mg_villages/schems/logcabin9.mts differ diff --git a/mods/mg_villages/schems/logcabinpub1.mts b/mods/mg_villages/schems/logcabinpub1.mts new file mode 100644 index 0000000..c6b70c0 Binary files /dev/null and b/mods/mg_villages/schems/logcabinpub1.mts differ diff --git a/mods/mg_villages/schems/logcabinpub2.mts b/mods/mg_villages/schems/logcabinpub2.mts new file mode 100644 index 0000000..deec124 Binary files /dev/null and b/mods/mg_villages/schems/logcabinpub2.mts differ diff --git a/mods/mg_villages/schems/logcabinpub3.mts b/mods/mg_villages/schems/logcabinpub3.mts new file mode 100644 index 0000000..e42759e Binary files /dev/null and b/mods/mg_villages/schems/logcabinpub3.mts differ diff --git a/mods/mg_villages/schems/lumberjack_1.mts b/mods/mg_villages/schems/lumberjack_1.mts new file mode 100644 index 0000000..a16723b Binary files /dev/null and b/mods/mg_villages/schems/lumberjack_1.mts differ diff --git a/mods/mg_villages/schems/lumberjack_10.mts b/mods/mg_villages/schems/lumberjack_10.mts new file mode 100644 index 0000000..8afba27 Binary files /dev/null and b/mods/mg_villages/schems/lumberjack_10.mts differ diff --git a/mods/mg_villages/schems/lumberjack_11.mts b/mods/mg_villages/schems/lumberjack_11.mts new file mode 100644 index 0000000..3da623d Binary files /dev/null and b/mods/mg_villages/schems/lumberjack_11.mts differ diff --git a/mods/mg_villages/schems/lumberjack_12.mts b/mods/mg_villages/schems/lumberjack_12.mts new file mode 100644 index 0000000..3b3851b Binary files /dev/null and b/mods/mg_villages/schems/lumberjack_12.mts differ diff --git a/mods/mg_villages/schems/lumberjack_13.mts b/mods/mg_villages/schems/lumberjack_13.mts new file mode 100644 index 0000000..7f1271b Binary files /dev/null and b/mods/mg_villages/schems/lumberjack_13.mts differ diff --git a/mods/mg_villages/schems/lumberjack_14.mts b/mods/mg_villages/schems/lumberjack_14.mts new file mode 100644 index 0000000..5c2b7f0 Binary files /dev/null and b/mods/mg_villages/schems/lumberjack_14.mts differ diff --git a/mods/mg_villages/schems/lumberjack_15.mts b/mods/mg_villages/schems/lumberjack_15.mts new file mode 100644 index 0000000..cc73dab Binary files /dev/null and b/mods/mg_villages/schems/lumberjack_15.mts differ diff --git a/mods/mg_villages/schems/lumberjack_16.mts b/mods/mg_villages/schems/lumberjack_16.mts new file mode 100644 index 0000000..6340425 Binary files /dev/null and b/mods/mg_villages/schems/lumberjack_16.mts differ diff --git a/mods/mg_villages/schems/lumberjack_2.mts b/mods/mg_villages/schems/lumberjack_2.mts new file mode 100644 index 0000000..8a1f6d6 Binary files /dev/null and b/mods/mg_villages/schems/lumberjack_2.mts differ diff --git a/mods/mg_villages/schems/lumberjack_3.mts b/mods/mg_villages/schems/lumberjack_3.mts new file mode 100644 index 0000000..0549842 Binary files /dev/null and b/mods/mg_villages/schems/lumberjack_3.mts differ diff --git a/mods/mg_villages/schems/lumberjack_4.mts b/mods/mg_villages/schems/lumberjack_4.mts new file mode 100644 index 0000000..74e6730 Binary files /dev/null and b/mods/mg_villages/schems/lumberjack_4.mts differ diff --git a/mods/mg_villages/schems/lumberjack_5.mts b/mods/mg_villages/schems/lumberjack_5.mts new file mode 100644 index 0000000..b9ba866 Binary files /dev/null and b/mods/mg_villages/schems/lumberjack_5.mts differ diff --git a/mods/mg_villages/schems/lumberjack_6.mts b/mods/mg_villages/schems/lumberjack_6.mts new file mode 100644 index 0000000..0140be4 Binary files /dev/null and b/mods/mg_villages/schems/lumberjack_6.mts differ diff --git a/mods/mg_villages/schems/lumberjack_7.mts b/mods/mg_villages/schems/lumberjack_7.mts new file mode 100644 index 0000000..679ef87 Binary files /dev/null and b/mods/mg_villages/schems/lumberjack_7.mts differ diff --git a/mods/mg_villages/schems/lumberjack_8.mts b/mods/mg_villages/schems/lumberjack_8.mts new file mode 100644 index 0000000..0c48f34 Binary files /dev/null and b/mods/mg_villages/schems/lumberjack_8.mts differ diff --git a/mods/mg_villages/schems/lumberjack_9.mts b/mods/mg_villages/schems/lumberjack_9.mts new file mode 100644 index 0000000..c1b9633 Binary files /dev/null and b/mods/mg_villages/schems/lumberjack_9.mts differ diff --git a/mods/mg_villages/schems/lumberjack_church_1.mts b/mods/mg_villages/schems/lumberjack_church_1.mts new file mode 100644 index 0000000..744fa70 Binary files /dev/null and b/mods/mg_villages/schems/lumberjack_church_1.mts differ diff --git a/mods/mg_villages/schems/lumberjack_hotel_1.mts b/mods/mg_villages/schems/lumberjack_hotel_1.mts new file mode 100644 index 0000000..6d6824c Binary files /dev/null and b/mods/mg_villages/schems/lumberjack_hotel_1.mts differ diff --git a/mods/mg_villages/schems/lumberjack_pub_1.mts b/mods/mg_villages/schems/lumberjack_pub_1.mts new file mode 100644 index 0000000..911d714 Binary files /dev/null and b/mods/mg_villages/schems/lumberjack_pub_1.mts differ diff --git a/mods/mg_villages/schems/lumberjack_sawmill_1.mts b/mods/mg_villages/schems/lumberjack_sawmill_1.mts new file mode 100644 index 0000000..fe47234 Binary files /dev/null and b/mods/mg_villages/schems/lumberjack_sawmill_1.mts differ diff --git a/mods/mg_villages/schems/lumberjack_school.mts b/mods/mg_villages/schems/lumberjack_school.mts new file mode 100644 index 0000000..b6f7734 Binary files /dev/null and b/mods/mg_villages/schems/lumberjack_school.mts differ diff --git a/mods/mg_villages/schems/lumberjack_shop_1.mts b/mods/mg_villages/schems/lumberjack_shop_1.mts new file mode 100644 index 0000000..8ba0147 Binary files /dev/null and b/mods/mg_villages/schems/lumberjack_shop_1.mts differ diff --git a/mods/mg_villages/schems/lumberjack_stable.mts b/mods/mg_villages/schems/lumberjack_stable.mts new file mode 100644 index 0000000..54bcf44 Binary files /dev/null and b/mods/mg_villages/schems/lumberjack_stable.mts differ diff --git a/mods/mg_villages/schems/mill_1.mts b/mods/mg_villages/schems/mill_1.mts new file mode 100644 index 0000000..56704ef Binary files /dev/null and b/mods/mg_villages/schems/mill_1.mts differ diff --git a/mods/mg_villages/schems/pub_1_0.mts b/mods/mg_villages/schems/pub_1_0.mts new file mode 100644 index 0000000..56dccb6 Binary files /dev/null and b/mods/mg_villages/schems/pub_1_0.mts differ diff --git a/mods/mg_villages/schems/shed_1.mts b/mods/mg_villages/schems/shed_1.mts new file mode 100644 index 0000000..95d23c8 Binary files /dev/null and b/mods/mg_villages/schems/shed_1.mts differ diff --git a/mods/mg_villages/schems/shed_10.mts b/mods/mg_villages/schems/shed_10.mts new file mode 100644 index 0000000..e203f11 Binary files /dev/null and b/mods/mg_villages/schems/shed_10.mts differ diff --git a/mods/mg_villages/schems/shed_11.mts b/mods/mg_villages/schems/shed_11.mts new file mode 100644 index 0000000..560a24c Binary files /dev/null and b/mods/mg_villages/schems/shed_11.mts differ diff --git a/mods/mg_villages/schems/shed_12.mts b/mods/mg_villages/schems/shed_12.mts new file mode 100644 index 0000000..6cf9da9 Binary files /dev/null and b/mods/mg_villages/schems/shed_12.mts differ diff --git a/mods/mg_villages/schems/shed_2.mts b/mods/mg_villages/schems/shed_2.mts new file mode 100644 index 0000000..922f3e4 Binary files /dev/null and b/mods/mg_villages/schems/shed_2.mts differ diff --git a/mods/mg_villages/schems/shed_3.mts b/mods/mg_villages/schems/shed_3.mts new file mode 100644 index 0000000..501b8c2 Binary files /dev/null and b/mods/mg_villages/schems/shed_3.mts differ diff --git a/mods/mg_villages/schems/shed_5.mts b/mods/mg_villages/schems/shed_5.mts new file mode 100644 index 0000000..dd3bf08 Binary files /dev/null and b/mods/mg_villages/schems/shed_5.mts differ diff --git a/mods/mg_villages/schems/shed_6.mts b/mods/mg_villages/schems/shed_6.mts new file mode 100644 index 0000000..1139a13 Binary files /dev/null and b/mods/mg_villages/schems/shed_6.mts differ diff --git a/mods/mg_villages/schems/shed_7.mts b/mods/mg_villages/schems/shed_7.mts new file mode 100644 index 0000000..270a55e Binary files /dev/null and b/mods/mg_villages/schems/shed_7.mts differ diff --git a/mods/mg_villages/schems/shed_8.mts b/mods/mg_villages/schems/shed_8.mts new file mode 100644 index 0000000..6973b82 Binary files /dev/null and b/mods/mg_villages/schems/shed_8.mts differ diff --git a/mods/mg_villages/schems/shed_9.mts b/mods/mg_villages/schems/shed_9.mts new file mode 100644 index 0000000..a48df9c Binary files /dev/null and b/mods/mg_villages/schems/shed_9.mts differ diff --git a/mods/mg_villages/schems/shed_with_forge_v2_1_0.mts b/mods/mg_villages/schems/shed_with_forge_v2_1_0.mts new file mode 100644 index 0000000..c62d47c Binary files /dev/null and b/mods/mg_villages/schems/shed_with_forge_v2_1_0.mts differ diff --git a/mods/mg_villages/schems/small_house_1_0.mts b/mods/mg_villages/schems/small_house_1_0.mts new file mode 100644 index 0000000..88dc5eb Binary files /dev/null and b/mods/mg_villages/schems/small_house_1_0.mts differ diff --git a/mods/mg_villages/schems/taverne_1.mts b/mods/mg_villages/schems/taverne_1.mts new file mode 100644 index 0000000..5aab4b7 Binary files /dev/null and b/mods/mg_villages/schems/taverne_1.mts differ diff --git a/mods/mg_villages/schems/taverne_2.mts b/mods/mg_villages/schems/taverne_2.mts new file mode 100644 index 0000000..dee6ba8 Binary files /dev/null and b/mods/mg_villages/schems/taverne_2.mts differ diff --git a/mods/mg_villages/schems/taverne_3.mts b/mods/mg_villages/schems/taverne_3.mts new file mode 100644 index 0000000..dbb7dc7 Binary files /dev/null and b/mods/mg_villages/schems/taverne_3.mts differ diff --git a/mods/mg_villages/schems/taverne_4.mts b/mods/mg_villages/schems/taverne_4.mts new file mode 100644 index 0000000..dd7027e Binary files /dev/null and b/mods/mg_villages/schems/taverne_4.mts differ diff --git a/mods/mg_villages/schems/tent_big_1.mts b/mods/mg_villages/schems/tent_big_1.mts new file mode 100644 index 0000000..a8f77d0 Binary files /dev/null and b/mods/mg_villages/schems/tent_big_1.mts differ diff --git a/mods/mg_villages/schems/tent_big_2.mts b/mods/mg_villages/schems/tent_big_2.mts new file mode 100644 index 0000000..c079510 Binary files /dev/null and b/mods/mg_villages/schems/tent_big_2.mts differ diff --git a/mods/mg_villages/schems/tent_medium_1.mts b/mods/mg_villages/schems/tent_medium_1.mts new file mode 100644 index 0000000..0166326 Binary files /dev/null and b/mods/mg_villages/schems/tent_medium_1.mts differ diff --git a/mods/mg_villages/schems/tent_medium_2.mts b/mods/mg_villages/schems/tent_medium_2.mts new file mode 100644 index 0000000..711f38b Binary files /dev/null and b/mods/mg_villages/schems/tent_medium_2.mts differ diff --git a/mods/mg_villages/schems/tent_medium_3.mts b/mods/mg_villages/schems/tent_medium_3.mts new file mode 100644 index 0000000..bdf054e Binary files /dev/null and b/mods/mg_villages/schems/tent_medium_3.mts differ diff --git a/mods/mg_villages/schems/tent_medium_4.mts b/mods/mg_villages/schems/tent_medium_4.mts new file mode 100644 index 0000000..66ea1e8 Binary files /dev/null and b/mods/mg_villages/schems/tent_medium_4.mts differ diff --git a/mods/mg_villages/schems/tent_open_1.mts b/mods/mg_villages/schems/tent_open_1.mts new file mode 100644 index 0000000..d2d58e6 Binary files /dev/null and b/mods/mg_villages/schems/tent_open_1.mts differ diff --git a/mods/mg_villages/schems/tent_open_2.mts b/mods/mg_villages/schems/tent_open_2.mts new file mode 100644 index 0000000..54e23d0 Binary files /dev/null and b/mods/mg_villages/schems/tent_open_2.mts differ diff --git a/mods/mg_villages/schems/tent_open_3.mts b/mods/mg_villages/schems/tent_open_3.mts new file mode 100644 index 0000000..13500e8 Binary files /dev/null and b/mods/mg_villages/schems/tent_open_3.mts differ diff --git a/mods/mg_villages/schems/tent_open_big_1.mts b/mods/mg_villages/schems/tent_open_big_1.mts new file mode 100644 index 0000000..ce99c83 Binary files /dev/null and b/mods/mg_villages/schems/tent_open_big_1.mts differ diff --git a/mods/mg_villages/schems/tent_open_big_2.mts b/mods/mg_villages/schems/tent_open_big_2.mts new file mode 100644 index 0000000..e715aa3 Binary files /dev/null and b/mods/mg_villages/schems/tent_open_big_2.mts differ diff --git a/mods/mg_villages/schems/tent_open_big_3.mts b/mods/mg_villages/schems/tent_open_big_3.mts new file mode 100644 index 0000000..c8c2388 Binary files /dev/null and b/mods/mg_villages/schems/tent_open_big_3.mts differ diff --git a/mods/mg_villages/schems/tent_tiny_1.mts b/mods/mg_villages/schems/tent_tiny_1.mts new file mode 100644 index 0000000..ae6447f Binary files /dev/null and b/mods/mg_villages/schems/tent_tiny_1.mts differ diff --git a/mods/mg_villages/schems/tent_tiny_2.mts b/mods/mg_villages/schems/tent_tiny_2.mts new file mode 100644 index 0000000..9202ed9 Binary files /dev/null and b/mods/mg_villages/schems/tent_tiny_2.mts differ diff --git a/mods/mg_villages/schems/tower_1_0.mts b/mods/mg_villages/schems/tower_1_0.mts new file mode 100644 index 0000000..8283cf8 Binary files /dev/null and b/mods/mg_villages/schems/tower_1_0.mts differ diff --git a/mods/mg_villages/schems/trader_clay_1.mts b/mods/mg_villages/schems/trader_clay_1.mts new file mode 100644 index 0000000..7377c7f Binary files /dev/null and b/mods/mg_villages/schems/trader_clay_1.mts differ diff --git a/mods/mg_villages/schems/trader_clay_2.mts b/mods/mg_villages/schems/trader_clay_2.mts new file mode 100644 index 0000000..86866ab Binary files /dev/null and b/mods/mg_villages/schems/trader_clay_2.mts differ diff --git a/mods/mg_villages/schems/trader_clay_3.mts b/mods/mg_villages/schems/trader_clay_3.mts new file mode 100644 index 0000000..690c269 Binary files /dev/null and b/mods/mg_villages/schems/trader_clay_3.mts differ diff --git a/mods/mg_villages/schems/trader_clay_4.mts b/mods/mg_villages/schems/trader_clay_4.mts new file mode 100644 index 0000000..2a02066 Binary files /dev/null and b/mods/mg_villages/schems/trader_clay_4.mts differ diff --git a/mods/mg_villages/schems/trader_clay_5.mts b/mods/mg_villages/schems/trader_clay_5.mts new file mode 100644 index 0000000..8f16fd6 Binary files /dev/null and b/mods/mg_villages/schems/trader_clay_5.mts differ diff --git a/mods/mg_villages/schems/tree_place_1.mts b/mods/mg_villages/schems/tree_place_1.mts new file mode 100644 index 0000000..180e647 Binary files /dev/null and b/mods/mg_villages/schems/tree_place_1.mts differ diff --git a/mods/mg_villages/schems/tree_place_10.mts b/mods/mg_villages/schems/tree_place_10.mts new file mode 100644 index 0000000..b675014 Binary files /dev/null and b/mods/mg_villages/schems/tree_place_10.mts differ diff --git a/mods/mg_villages/schems/tree_place_2.mts b/mods/mg_villages/schems/tree_place_2.mts new file mode 100644 index 0000000..b9f5731 Binary files /dev/null and b/mods/mg_villages/schems/tree_place_2.mts differ diff --git a/mods/mg_villages/schems/tree_place_3.mts b/mods/mg_villages/schems/tree_place_3.mts new file mode 100644 index 0000000..22976bf Binary files /dev/null and b/mods/mg_villages/schems/tree_place_3.mts differ diff --git a/mods/mg_villages/schems/tree_place_4.mts b/mods/mg_villages/schems/tree_place_4.mts new file mode 100644 index 0000000..e353cf9 Binary files /dev/null and b/mods/mg_villages/schems/tree_place_4.mts differ diff --git a/mods/mg_villages/schems/tree_place_5.mts b/mods/mg_villages/schems/tree_place_5.mts new file mode 100644 index 0000000..3f88e7c Binary files /dev/null and b/mods/mg_villages/schems/tree_place_5.mts differ diff --git a/mods/mg_villages/schems/tree_place_6.mts b/mods/mg_villages/schems/tree_place_6.mts new file mode 100644 index 0000000..f06bb40 Binary files /dev/null and b/mods/mg_villages/schems/tree_place_6.mts differ diff --git a/mods/mg_villages/schems/tree_place_7.mts b/mods/mg_villages/schems/tree_place_7.mts new file mode 100644 index 0000000..6b2776a Binary files /dev/null and b/mods/mg_villages/schems/tree_place_7.mts differ diff --git a/mods/mg_villages/schems/tree_place_8.mts b/mods/mg_villages/schems/tree_place_8.mts new file mode 100644 index 0000000..f1e1406 Binary files /dev/null and b/mods/mg_villages/schems/tree_place_8.mts differ diff --git a/mods/mg_villages/schems/tree_place_9.mts b/mods/mg_villages/schems/tree_place_9.mts new file mode 100644 index 0000000..194a21c Binary files /dev/null and b/mods/mg_villages/schems/tree_place_9.mts differ diff --git a/mods/mg_villages/schems/wagon_1.mts b/mods/mg_villages/schems/wagon_1.mts new file mode 100644 index 0000000..974a04d Binary files /dev/null and b/mods/mg_villages/schems/wagon_1.mts differ diff --git a/mods/mg_villages/schems/wagon_10.mts b/mods/mg_villages/schems/wagon_10.mts new file mode 100644 index 0000000..751d18b Binary files /dev/null and b/mods/mg_villages/schems/wagon_10.mts differ diff --git a/mods/mg_villages/schems/wagon_11.mts b/mods/mg_villages/schems/wagon_11.mts new file mode 100644 index 0000000..c04e4bc Binary files /dev/null and b/mods/mg_villages/schems/wagon_11.mts differ diff --git a/mods/mg_villages/schems/wagon_12.mts b/mods/mg_villages/schems/wagon_12.mts new file mode 100644 index 0000000..b01f080 Binary files /dev/null and b/mods/mg_villages/schems/wagon_12.mts differ diff --git a/mods/mg_villages/schems/wagon_2.mts b/mods/mg_villages/schems/wagon_2.mts new file mode 100644 index 0000000..36dc26f Binary files /dev/null and b/mods/mg_villages/schems/wagon_2.mts differ diff --git a/mods/mg_villages/schems/wagon_3.mts b/mods/mg_villages/schems/wagon_3.mts new file mode 100644 index 0000000..4baaa2d Binary files /dev/null and b/mods/mg_villages/schems/wagon_3.mts differ diff --git a/mods/mg_villages/schems/wagon_4.mts b/mods/mg_villages/schems/wagon_4.mts new file mode 100644 index 0000000..fca2b9b Binary files /dev/null and b/mods/mg_villages/schems/wagon_4.mts differ diff --git a/mods/mg_villages/schems/wagon_5.mts b/mods/mg_villages/schems/wagon_5.mts new file mode 100644 index 0000000..1ac77b9 Binary files /dev/null and b/mods/mg_villages/schems/wagon_5.mts differ diff --git a/mods/mg_villages/schems/wagon_6.mts b/mods/mg_villages/schems/wagon_6.mts new file mode 100644 index 0000000..1ce0409 Binary files /dev/null and b/mods/mg_villages/schems/wagon_6.mts differ diff --git a/mods/mg_villages/schems/wagon_7.mts b/mods/mg_villages/schems/wagon_7.mts new file mode 100644 index 0000000..379d40f Binary files /dev/null and b/mods/mg_villages/schems/wagon_7.mts differ diff --git a/mods/mg_villages/schems/wagon_8.mts b/mods/mg_villages/schems/wagon_8.mts new file mode 100644 index 0000000..95f8eab Binary files /dev/null and b/mods/mg_villages/schems/wagon_8.mts differ diff --git a/mods/mg_villages/schems/wagon_9.mts b/mods/mg_villages/schems/wagon_9.mts new file mode 100644 index 0000000..b919d88 Binary files /dev/null and b/mods/mg_villages/schems/wagon_9.mts differ diff --git a/mods/mg_villages/schems/watermill_1.mts b/mods/mg_villages/schems/watermill_1.mts new file mode 100644 index 0000000..6276c33 Binary files /dev/null and b/mods/mg_villages/schems/watermill_1.mts differ diff --git a/mods/mg_villages/schems/weide_1.mts b/mods/mg_villages/schems/weide_1.mts new file mode 100644 index 0000000..e1e559b Binary files /dev/null and b/mods/mg_villages/schems/weide_1.mts differ diff --git a/mods/mg_villages/schems/weide_2.mts b/mods/mg_villages/schems/weide_2.mts new file mode 100644 index 0000000..51c8221 Binary files /dev/null and b/mods/mg_villages/schems/weide_2.mts differ diff --git a/mods/mg_villages/schems/weide_3.mts b/mods/mg_villages/schems/weide_3.mts new file mode 100644 index 0000000..fea0506 Binary files /dev/null and b/mods/mg_villages/schems/weide_3.mts differ diff --git a/mods/mg_villages/schems/weide_4.mts b/mods/mg_villages/schems/weide_4.mts new file mode 100644 index 0000000..2ab6b2c Binary files /dev/null and b/mods/mg_villages/schems/weide_4.mts differ diff --git a/mods/mg_villages/schems/weide_5.mts b/mods/mg_villages/schems/weide_5.mts new file mode 100644 index 0000000..6877d3e Binary files /dev/null and b/mods/mg_villages/schems/weide_5.mts differ diff --git a/mods/mg_villages/schems/weide_6.mts b/mods/mg_villages/schems/weide_6.mts new file mode 100644 index 0000000..37445d1 Binary files /dev/null and b/mods/mg_villages/schems/weide_6.mts differ diff --git a/mods/mg_villages/schems/well.mts b/mods/mg_villages/schems/well.mts new file mode 100644 index 0000000..2dc65de Binary files /dev/null and b/mods/mg_villages/schems/well.mts differ diff --git a/mods/mg_villages/schems/well_1.mts b/mods/mg_villages/schems/well_1.mts new file mode 100644 index 0000000..3304575 Binary files /dev/null and b/mods/mg_villages/schems/well_1.mts differ diff --git a/mods/mg_villages/schems/well_2.mts b/mods/mg_villages/schems/well_2.mts new file mode 100644 index 0000000..4966620 Binary files /dev/null and b/mods/mg_villages/schems/well_2.mts differ diff --git a/mods/mg_villages/schems/well_3.mts b/mods/mg_villages/schems/well_3.mts new file mode 100644 index 0000000..e5e548e Binary files /dev/null and b/mods/mg_villages/schems/well_3.mts differ diff --git a/mods/mg_villages/schems/well_4.mts b/mods/mg_villages/schems/well_4.mts new file mode 100644 index 0000000..8a0c830 Binary files /dev/null and b/mods/mg_villages/schems/well_4.mts differ diff --git a/mods/mg_villages/schems/well_5.mts b/mods/mg_villages/schems/well_5.mts new file mode 100644 index 0000000..e0a9a61 Binary files /dev/null and b/mods/mg_villages/schems/well_5.mts differ diff --git a/mods/mg_villages/schems/well_6.mts b/mods/mg_villages/schems/well_6.mts new file mode 100644 index 0000000..875f352 Binary files /dev/null and b/mods/mg_villages/schems/well_6.mts differ diff --git a/mods/mg_villages/schems/well_7.mts b/mods/mg_villages/schems/well_7.mts new file mode 100644 index 0000000..2d6fe1f Binary files /dev/null and b/mods/mg_villages/schems/well_7.mts differ diff --git a/mods/mg_villages/schems/well_8.mts b/mods/mg_villages/schems/well_8.mts new file mode 100644 index 0000000..1b9a4ab Binary files /dev/null and b/mods/mg_villages/schems/well_8.mts differ diff --git a/mods/mg_villages/schems/wheat_field.mts b/mods/mg_villages/schems/wheat_field.mts new file mode 100644 index 0000000..1abd214 Binary files /dev/null and b/mods/mg_villages/schems/wheat_field.mts differ diff --git a/mods/mg_villages/spawn_player.lua b/mods/mg_villages/spawn_player.lua new file mode 100644 index 0000000..af502cb --- /dev/null +++ b/mods/mg_villages/spawn_player.lua @@ -0,0 +1,47 @@ + + +mg_villages.spawnplayer = function(player) + if( minetest.settings and minetest.settings:get("static_spawnpoint")) then + return; + end + + -- make sure the village types are initialized + if( not( mg_villages.village_types )) then + mg_villages.init_weights(); + end + + local noise1 = minetest.get_perlin(12345, 6, 0.5, 256) + local min_dist = math.huge + local min_pos = {x = 0, y = 3, z = 0} + for bx = -20, 20 do + for bz = -20, 20 do + local minp = {x = -32 + 80 * bx, y = -32, z = -32 + 80 * bz} + for _, village in ipairs(mg_villages.villages_at_point(minp, noise1)) do + if math.abs(village.vx) + math.abs(village.vz) < min_dist then + min_pos = {x = village.vx, y = village.vh + 2, z = village.vz} + -- some villages are later adjusted in height; adapt these changes + local village_id = tostring( village.vx )..':'..tostring( village.vz ); + if( mg_villages.all_villages[ village_id ] + and mg_villages.all_villages[ village_id ].optimal_height ) then + min_pos.y = mg_villages.all_villages[ village_id ].vh + 2; + -- the first villages will have a height of 1 in order to make sure that the player does not end up embedded in stone + else + min_pos.y = 1+2; + end + min_dist = math.abs(village.vx) + math.abs(village.vz) + end + end + end + end + player:set_pos(min_pos) +end + +minetest.register_on_newplayer(function(player) + mg_villages.spawnplayer(player) +end) + +minetest.register_on_respawnplayer(function(player) + mg_villages.spawnplayer(player) + return true +end) + diff --git a/mods/mg_villages/terrain_blend.lua b/mods/mg_villages/terrain_blend.lua new file mode 100644 index 0000000..d0e44f8 --- /dev/null +++ b/mods/mg_villages/terrain_blend.lua @@ -0,0 +1,82 @@ + +-- this function needs to be fed house x, z dimensions and rotation +-- it will then calculate the minimum point (xbmin, avsurfy, zbmin) where the house should be spawned +-- and mark a mapchunk-sized 'house area' for terrain blending + +-- re-use already created data structures by the perlin noise functions +local noise_object_blending = nil; +local noise_buffer = nil; + +mg_villages.village_area_mark_single_house_area = function(village_area, minp, maxp, pos, pr, village_nr, village) + + local YFLATMIN = 2 -- Lowest flat area height + local FFAPROP = 0.5 -- front flat area proportion of dimension + local np_blend = { + offset = 0, + scale = 1, + spread = {x=12, y=12, z=12}, + seed = 38393, + octaves = 3, + persist = 0.67 + } + + local sidelen = maxp.x - minp.x + 1 + + local xdim, zdim -- dimensions of house plus front flat area + if pos.brotate == 0 or pos.brotate == 2 then + xdim = pos.bsizex + zdim = pos.bsizez + math.floor(FFAPROP * pos.bsizez) + else + xdim = pos.bsizex + math.floor(FFAPROP * pos.bsizex) + zdim = pos.bsizez + end + + -- 2D noise perlinmap + local chulens = {x=sidelen, y=sidelen, z=sidelen} + local minpos = {x=minp.x, y=minp.z} + + noise_object_blending = noise_object_blending or minetest.get_perlin_map(np_blend, chulens); + local nvals_blend = noise_object_blending:get2dMap_flat(minpos, noise_buffer); +-- local nvals_blend = minetest.get_perlin_map(np_blend, chulens):get2dMap_flat(minpos) + + -- mark mapchunk-sized house area + local ni = 1 +-- for z = minp.z, maxp.z do +-- for x = minp.x, maxp.x do -- for each column do + for z = math.max( village.vz - village.vs, minp.z), math.min(village.vz + village.vs, maxp.z), 1 do + for x = math.max( village.vx - village.vs, minp.x), math.min(village.vx + village.vs, maxp.x), 1 do -- for each column do + + local xrm = x - minp.x -- relative to mapchunk minp + local zrm = z - minp.z + local xr = x - village.vx -- relative to blend centre + local zr = z - village.vz + local xre1 = (zdim / 2) * (xr / zr) + local zre1 = zdim / 2 + local xre2 = xdim / 2 + local zre2 = (xdim / 2) * (zr / xr) + local rade1 = math.sqrt(xre1 ^ 2 + zre1 ^ 2) + local rade2 = math.sqrt(xre2 ^ 2 + zre2 ^ 2) + local flatrad = math.min(rade1, rade2) -- radius at edge of rectangular house flat area + local n_absblend = math.abs(nvals_blend[ni]) + local blenradn = village.vs - n_absblend * 2 -- vary blend radius + local flatradn = flatrad + n_absblend * 2 -- vary shape of house flat area + local nodrad = math.sqrt(xr ^ 2 + zr ^ 2) -- node radius + + -- only blend the terrain if it does not already belong to another village + if( village_area[ x ][ z ][ 2 ] == 0 ) then + if x >= (pos.x-1) and x <= (pos.x + pos.bsizex + 1) -- area reserved for house + and z >= (pos.z-1) and z <= (pos.z + pos.bsizez + 1) then + village_area[ x ][ z ] = {village_nr, 4} + elseif nodrad <= flatradn or (xr == 0 and zr == 0) then -- irregular flat area around house + village_area[ x ][ z ] = {village_nr, 1} + elseif nodrad <= blenradn then -- terrain blend area + local blenprop = ((nodrad - flatradn) / (blenradn - flatradn)) + village_area[ x ][ z ] = {village_nr, -1 * blenprop} -- terrain blending + else -- no change to terrain + --village_area[xrm][zrm] = {village_nr, 0} + end + end + ni = ni + 1 + end + end +end diff --git a/mods/mg_villages/textures/d0.png b/mods/mg_villages/textures/d0.png new file mode 100644 index 0000000..394368e Binary files /dev/null and b/mods/mg_villages/textures/d0.png differ diff --git a/mods/mg_villages/textures/d10.png b/mods/mg_villages/textures/d10.png new file mode 100644 index 0000000..4146522 Binary files /dev/null and b/mods/mg_villages/textures/d10.png differ diff --git a/mods/mg_villages/textures/d20.png b/mods/mg_villages/textures/d20.png new file mode 100644 index 0000000..4fcf627 Binary files /dev/null and b/mods/mg_villages/textures/d20.png differ diff --git a/mods/mg_villages/textures/d30.png b/mods/mg_villages/textures/d30.png new file mode 100644 index 0000000..8ded174 Binary files /dev/null and b/mods/mg_villages/textures/d30.png differ diff --git a/mods/mg_villages/textures/d40.png b/mods/mg_villages/textures/d40.png new file mode 100644 index 0000000..b2d450b Binary files /dev/null and b/mods/mg_villages/textures/d40.png differ diff --git a/mods/mg_villages/textures/d45.png b/mods/mg_villages/textures/d45.png new file mode 100644 index 0000000..8057db8 Binary files /dev/null and b/mods/mg_villages/textures/d45.png differ diff --git a/mods/mg_villages/textures/d50.png b/mods/mg_villages/textures/d50.png new file mode 100644 index 0000000..fd3d908 Binary files /dev/null and b/mods/mg_villages/textures/d50.png differ diff --git a/mods/mg_villages/textures/d60.png b/mods/mg_villages/textures/d60.png new file mode 100644 index 0000000..2ad33d5 Binary files /dev/null and b/mods/mg_villages/textures/d60.png differ diff --git a/mods/mg_villages/textures/d70.png b/mods/mg_villages/textures/d70.png new file mode 100644 index 0000000..0802047 Binary files /dev/null and b/mods/mg_villages/textures/d70.png differ diff --git a/mods/mg_villages/textures/d80.png b/mods/mg_villages/textures/d80.png new file mode 100644 index 0000000..e9425fd Binary files /dev/null and b/mods/mg_villages/textures/d80.png differ diff --git a/mods/mg_villages/trees.lua b/mods/mg_villages/trees.lua new file mode 100644 index 0000000..f0f647a --- /dev/null +++ b/mods/mg_villages/trees.lua @@ -0,0 +1,234 @@ +-- this code is taken from https://github.com/VanessaE/dreambuilder_game/blob/master/mods/default/trees.lua + +local c_air = minetest.get_content_id("air") +local c_ignore = minetest.get_content_id("ignore") +local c_tree = minetest.get_content_id("default:tree") +local c_leaves = minetest.get_content_id("default:leaves") +local c_sapling = minetest.get_content_id("default:sapling"); +local c_junglesapling = minetest.get_content_id("default:junglesapling"); +local c_snow = minetest.get_content_id("default:snow"); +local c_msnow_top = minetest.get_content_id( 'moresnow:snow_top' ); + +local c_msnow_leaves1 = minetest.get_content_id( 'default:leaves' ); +local c_msnow_leaves2 = minetest.get_content_id( 'default:leaves' ); +if( minetest.registered_nodes[ 'moresnow:autumnleaves_tree' ] ) then + c_msnow_leaves1 = minetest.get_content_id( 'moresnow:autumnleaves_tree' ); +end +if( minetest.registered_nodes[ 'moresnow:winterleaves_tree' ] ) then + c_msnow_leaves2 = minetest.get_content_id( 'moresnow:winterleaves_tree' ); +end + +mg_villages.grow_tree = function(data, a, pos, is_apple_tree, seed, snow) + --[[ + NOTE: Tree-placing code is currently duplicated in the engine + and in games that have saplings; both are deprecated but not + replaced yet + ]]-- + local leaves_type = c_leaves; + if( snow + or data[ a:index(pos.x, pos.y, pos.z) ] == c_snow + or data[ a:index(pos.x, pos.y+1, pos.z) ] == c_snow ) then + leaves_type = c_msnow_leaves2; + end + + local hight = math.random(4, 5) + for x_area = -2, 2 do + for y_area = -1, 2 do + for z_area = -2, 2 do + if math.random(1,30) < 23 then --randomize leaves + local area_l = a:index(pos.x+x_area, pos.y+hight+y_area-1, pos.z+z_area) --sets area for leaves + if data[area_l] == c_air or data[area_l] == c_ignore or data[area_l]== c_snow then --sets if it's air or ignore + if( snow and c_msnow_leaves1 and math.random( 1,5 )==1) then + data[area_l] = c_msnow_leaves1; + else + data[area_l] = leaves_type --add leaves now + end + end + -- put a snow top on some leaves + if ( snow and math.random(1,3)==1 )then + mg_villages.trees_add_snow(data, a:index(pos.x+x_area, pos.y+hight+y_area, pos.z+z_area), c_air, c_ignore, c_snow) + end + end + end + end + end + for tree_h = 0, hight-1 do -- add the trunk + local area_t = a:index(pos.x, pos.y+tree_h, pos.z) --set area for tree + if data[area_t] == c_air or data[area_t] == c_leaves or data[area_t] == c_sapling or data[area_t] == c_snow or data[area_t] == c_msnow_top or data[area_t] == c_msnow_leaves1 or data[area_t] == c_msnow_leaves2 then --sets if air + data[area_t] = c_tree --add tree now + end + end +end + +local c_jungletree = minetest.get_content_id("default:jungletree") +local c_jungleleaves = minetest.get_content_id("default:jungleleaves") + +mg_villages.grow_jungletree = function(data, a, pos, seed, snow) + --[[ + NOTE: Tree-placing code is currently duplicated in the engine + and in games that have saplings; both are deprecated but not + replaced yet + ]]-- + local leaves_type = c_jungleleaves; + if( snow + or data[ a:index(pos.x, pos.y, pos.z) ] == c_snow + or data[ a:index(pos.x, pos.y+1, pos.z) ] == c_snow ) then + leaves_type = c_msnow_leaves1; + end + + local hight = math.random(8, 12) + for x_area = -3, 3 do + for y_area = -2, 2 do + for z_area = -3, 3 do + if math.random(1,30) < 23 then --randomize leaves + local area_l = a:index(pos.x+x_area, pos.y+hight+y_area-1, pos.z+z_area) --sets area for leaves + if data[area_l] == c_air or data[area_l] == c_ignore then --sets if it's air or ignore + data[area_l] = leaves_type --add leaves now + end + end + end + end + end + for tree_h = 0, hight-1 do -- add the trunk + local area_t = a:index(pos.x, pos.y+tree_h, pos.z) --set area for tree + if data[area_t] == c_air or data[area_t] == c_jungleleaves or data[area_t] == c_junglesapling or data[area_t] == c_snow or data[area_t] == c_msnow_top then --sets if air + data[area_t] = c_jungletree --add tree now + end + end + for roots_x = -1, 1 do + for roots_z = -1, 1 do + if math.random(1, 3) >= 2 then --randomize roots + if a:contains(pos.x+roots_x, pos.y-1, pos.z+roots_z) and data[a:index(pos.x+roots_x, pos.y-1, pos.z+roots_z)] == c_air then + data[a:index(pos.x+roots_x, pos.y-1, pos.z+roots_z)] = c_jungletree + elseif a:contains(pos.x+roots_x, pos.y, pos.z+roots_z) and data[a:index(pos.x+roots_x, pos.y, pos.z+roots_z)] == c_air then + data[a:index(pos.x+roots_x, pos.y, pos.z+roots_z)] = c_jungletree + end + end + end + end +end + +-- taken from minetest_game/mods/default/trees.lua +mg_villages.trees_add_pine_needles = function(data, vi, c_air, c_ignore, c_snow, c_pine_needles) + if data[vi] == c_air or data[vi] == c_ignore or data[vi] == c_snow then + data[vi] = c_pine_needles + end +end + +mg_villages.trees_add_snow = function(data, vi, c_air, c_ignore, c_snow) + if data[vi] == c_air or data[vi] == c_ignore then + data[vi] = c_snow + end +end + +mg_villages.grow_pinetree = function(data, a, pos, snow) + local x, y, z = pos.x, pos.y, pos.z + local maxy = y + math.random(9, 13) -- Trunk top + + local c_air = minetest.get_content_id("air") + local c_ignore = minetest.get_content_id("ignore") + local c_pinetree = minetest.get_content_id("default:pine_tree") + local c_pine_needles = minetest.get_content_id("default:pine_needles") + local c_snow = minetest.get_content_id("default:snow") + local c_snowblock = minetest.get_content_id("default:snowblock") + local c_dirtsnow = minetest.get_content_id("default:dirt_with_snow") + + -- Scan for snow nodes near sapling +-- local snow = false + for yy = y - 1, y + 1 do + for zz = z - 1, z + 1 do + local vi = a:index(x - 1, yy, zz) + for xx = x - 1, x + 1 do + local nodid = data[vi] + if nodid == c_snow + or nodid == c_snowblock + or nodid == c_dirtsnow then + snow = true + end + vi = vi + 1 + end + end + end + + -- Upper branches layer + local dev = 3 + for yy = maxy - 1, maxy + 1 do + for zz = z - dev, z + dev do + local vi = a:index(x - dev, yy, zz) + local via = a:index(x - dev, yy + 1, zz) + for xx = x - dev, x + dev do + if math.random() < 0.95 - dev * 0.05 then + mg_villages.trees_add_pine_needles(data, vi, c_air, c_ignore, c_snow, + c_pine_needles) + if snow then + mg_villages.trees_add_snow(data, via, c_air, c_ignore, c_snow) + end + end + vi = vi + 1 + via = via + 1 + end + end + dev = dev - 1 + end + + -- Centre top nodes + mg_villages.trees_add_pine_needles(data, a:index(x, maxy + 1, z), c_air, c_ignore, c_snow, + c_pine_needles) + mg_villages.trees_add_pine_needles(data, a:index(x, maxy + 2, z), c_air, c_ignore, c_snow, + c_pine_needles) -- Paramat added a pointy top node + if snow then + mg_villages.trees_add_snow(data, a:index(x, maxy + 3, z), c_air, c_ignore, c_snow) + end + + -- Lower branches layer + local my = 0 + for i = 1, 20 do -- Random 2x2 squares of needles + local xi = x + math.random(-3, 2) + local yy = maxy + math.random(-6, -5) + local zi = z + math.random(-3, 2) + if yy > my then + my = yy + end + for zz = zi, zi+1 do + local vi = a:index(xi, yy, zz) + local via = a:index(xi, yy + 1, zz) + for xx = xi, xi + 1 do + mg_villages.trees_add_pine_needles(data, vi, c_air, c_ignore, c_snow, + c_pine_needles) + if snow then + mg_villages.trees_add_snow(data, via, c_air, c_ignore, c_snow) + end + vi = vi + 1 + via = via + 1 + end + end + end + + local dev = 2 + for yy = my + 1, my + 2 do + for zz = z - dev, z + dev do + local vi = a:index(x - dev, yy, zz) + local via = a:index(x - dev, yy + 1, zz) + for xx = x - dev, x + dev do + if math.random() < 0.95 - dev * 0.05 then + mg_villages.trees_add_pine_needles(data, vi, c_air, c_ignore, c_snow, + c_pine_needles) + if snow then + mg_villages.trees_add_snow(data, via, c_air, c_ignore, c_snow) + end + end + vi = vi + 1 + via = via + 1 + end + end + dev = dev - 1 + end + + -- Trunk + for yy = y, maxy do + local vi = a:index(x, yy, z) + data[vi] = c_pinetree + end + +end + diff --git a/mods/mg_villages/village_types.lua b/mods/mg_villages/village_types.lua new file mode 100644 index 0000000..84c5e94 --- /dev/null +++ b/mods/mg_villages/village_types.lua @@ -0,0 +1,119 @@ + +-- DOCUMENTATION: mg_villages.village_type_data has entries in the following form: +-- key = { data values } with key beeing the name of the village type +-- meaning of the data values: +-- min, max: the village size will be choosen randomly between these two values; +-- the actual village will have a radius about twice as big (including sourrounding area) +-- space_between_buildings=2 How much space is there between the buildings. 1 or 2 are good values. +-- The higher, the further the buildings are spread apart. +-- mods = {'homedecor','moreblocks'} List of mods that are required for the buildings of this village type. +-- List all the mods the blocks used by your buildings which are not in default. +-- texture = 'wool_white.png' Texture used to show the location of the village when using the +-- vmap command. +-- name_prefix = 'Village ', +-- name_postfix = '' When creating village names for single houses which are spawned outside +-- of villages, the village name will consist of name_prefix..village_name..name_postfix +-- sapling_divisor = 1 Villages are sourrounded by a flat area that may contain trees. Increasing this +-- value decreses the mount of trees placed. +-- plant_type = 'farming:wheat_8' Type of plant that is placed around villages. +-- plant_frequency = 1 The higher this value is, the less plants are placed. + +local village_type_data_list = { + nore = { min = 20, max = 40, space_between_buildings=1, mods={}, texture = 'default_stone_brick.png', + replacement_function = mg_villages.replacements_nore }, + taoki = { min = 30, max = 70, space_between_buildings=1, mods={}, texture = 'default_brick.png' , + sapling_divisor = 5, plant_type = 'farming:cotton_8', plant_frequency = 1, + replacement_function = mg_villages.replacements_taoki }, + medieval = { min = 25, max = 60, space_between_buildings=2, mods={'cottages'}, texture = 'cottages_darkage_straw.png', -- they often have straw roofs + sapling_divisor = 10, plant_type = 'farming:wheat_8', plant_frequency = 1, + replacement_function = mg_villages.replacements_medieval, + roadsize_list = {2,3,4,5,6}, +-- road_materials = {'default:cobble','default:gravel','default:stonebrick','default:coalblock'}, + }, --roadsize_list = {1,1,2,3,4} }, + charachoal = { min = 10, max = 15, space_between_buildings=1, mods={'cottages'}, texture = 'default_coal_block.png', + replacement_function = mg_villages.replacements_charachoal }, + lumberjack = { min = 10, max = 30, space_between_buildings=1, mods={'cottages'}, texture = 'default_tree.png', name_prefix = 'Camp ', + sapling_divisor = 1, plant_type = 'default:junglegrass', plant_frequency = 24, + replacement_function = mg_villages.replacements_lumberjack }, + claytrader = { min = 10, max = 20, space_between_buildings=1, mods={'cottages'}, texture = 'default_clay.png', + replacement_function = mg_villages.replacements_claytrader }, + logcabin = { min = 15, max = 30, space_between_buildings=1, mods={'cottages'}, texture = 'default_wood.png', + replacement_function = mg_villages.replacements_logcabin }, + grasshut = { min = 10, max = 40, space_between_buildings=1, mods={'dryplants'}, texture = 'dryplants_reed.png', + replacement_function = mg_villages.replacements_grasshut }, + tent = { min = 5, max = 20, space_between_buildings=2, mods={'cottages'}, texture = 'wool_white.png', name_preifx = 'Tent at', + replacement_function = mg_villages.replacements_tent }, + + -- these sub-types may occour as single houses placed far from villages + tower = { only_single = 1, name_prefix = 'Tower at ', mods={'cottages'}, texture = 'default_mese.png', + replacement_function = mg_villages.replacements_tower }, + chateau = { only_single = 1, name_prefix = 'Chateau ', texture = 'default_gold_block.png', + replacement_function = mg_villages.replacements_chateau }, + forge = { only_single = 1, name_prefix = 'Forge at '}, + tavern = { only_single = 1, name_prefix = 'Inn at '}, + well = { only_single = 1, name_prefix = 'Well at ', + replacement_function = mg_villages.replacements_medieval }, + trader = { only_single = 1, name_prefix = 'Trading post ' }, + sawmill = { only_single = 1, name_prefix = 'Sawmill at ' }, + farm_tiny = { only_single = 1, name_prefix = 'House '}, + farm_full = { only_single = 1, name_prefix = 'Farm '}, + single = { only_single = 1, name_prefix = 'House '}, -- fallback +} + +-- NOTE: Most values of village types added with mg_villages.add_village_type can still be changed later on by +-- changing the global variable mg_villages.village_type_data[ village_type ] +-- Village types where one or more of the required mods (listed in v.mods) are missing will not be +-- available. +-- You can add your own village type by i.e. calling +-- mg_villages.add_village_type( 'town', { min = 10, max = 30, space_between_buildings = 2, mods = {'moreblocks','homedecor'}, texture='default_diamond_block.png'} ); +-- This will add a new village type named 'town', which will only be available if the mods moreblocks and homedecor are installed. +-- It will show the texture of the diamond block when showing the position of a village of that type in the map displayed by the /vmap command. + + +-- some villages require special mods as building material for their houses; +-- figure out which village types can be used +mg_villages.add_village_type = function( type_name, v ) + local found = true; + if( not( v.mods )) then + v.mods = {}; + end + for _,m in ipairs( v.mods ) do + if( not( minetest.get_modpath( m ))) then + -- this village type will not be used because not all required mods are installed + return false; + end + end + + if( not( v.only_single ) and (not(v.min) or not(v.max))) then + mg_villages.print( mg_villages.DEBUG_LEVEL_NORMAL, 'Error: Village type '..tostring( type_name )..' lacks size information.'); + return false; + end + + -- set some default values + if( not( v.sapling_divisor )) then + v.sapling_divisor = 10; + end + if( not( v.plant_type )) then + v.plant_type = 'default:grass_5'; + if( not( minetest.registered_nodes[ v.plant_type ])) then + v.plant_type = 'default:dry_shrub'; + end + end + if( not( v.plant_frequency )) then + v.plant_frequency = 3; + end + + -- this village type is supported by the mods installed and may be used + v.supported = 1; + + mg_villages.village_type_data[ type_name ] = v; + return true; +end + + +-- build a list of all useable village types the mg_villages mod comes with +mg_villages.village_type_data = {}; +for k,v in pairs( village_type_data_list ) do + mg_villages.add_village_type( k, v ); +end +village_type_data_list = nil; diff --git a/mods/mg_villages/villages.lua b/mods/mg_villages/villages.lua new file mode 100644 index 0000000..11a49a5 --- /dev/null +++ b/mods/mg_villages/villages.lua @@ -0,0 +1,925 @@ +-- this contains the functions to actually generate the village structure in a table; +-- said table will hold information about which building will be placed where, +-- how the buildings are rotated, where the roads will be, which replacement materials +-- will be used etc. + +local calls; + +local function is_village_block(minp) + local x, z = math.floor(minp.x/80), math.floor(minp.z/80) + local vcc = mg_villages.VILLAGE_CHECK_COUNT + return (x%vcc == 0) and (z%vcc == 0) +end + +-- called by mapgen.lua and spawn_player.lua +mg_villages.villages_at_point = function(minp, noise1) + if not is_village_block(minp) then return {} end + local vcr, vcc = mg_villages.VILLAGE_CHECK_RADIUS, mg_villages.VILLAGE_CHECK_COUNT + -- Check if there's another village nearby + for xi = -vcr, vcr, vcc do + for zi = -vcr, 0, vcc do + if xi ~= 0 or zi ~= 0 then + local mp = {x = minp.x + 80*xi, z = minp.z + 80*zi} + local pi = PseudoRandom(mg_villages.get_bseed(mp)) + local s = pi:next(1, 400) + local x = pi:next(mp.x, mp.x + 79) + local z = pi:next(mp.z, mp.z + 79) + if s <= mg_villages.VILLAGE_CHANCE and noise1:get_2d({x = x, y = z}) >= -0.3 then return {} end + end + end + end + local pr = PseudoRandom(mg_villages.get_bseed(minp)) + if pr:next(1, 400) > mg_villages.VILLAGE_CHANCE then return {} end -- No village here + local x = pr:next(minp.x, minp.x + 79) + local z = pr:next(minp.z, minp.z + 79) + if noise1:get_2d({x = x, y = z}) < -0.3 then return {} end -- Deep in the ocean + + -- fallback: type "nore" (that is what the mod originally came with) + local village_type = 'nore'; + village_type = mg_villages.village_types[ pr:next(1, #mg_villages.village_types )]; -- select a random type + -- if this is the first village for this world, take a medieval one + if( (not( mg_villages.all_villages ) or mg_villages.anz_villages < 1) and minetest.get_modpath("cottages") and mg_villages.FIRST_VILLAGE_TYPE) then + village_type = mg_villages.FIRST_VILLAGE_TYPE; + end + + if( not( mg_villages.village_type_data[ village_type ] )) then + mg_villages.village_type_data[ village_type ] = { min = mg_villages.VILLAGE_MIN_SIZE, max = mg_villages.VILLAGE_MAX_SIZE }; + end + local size = pr:next(mg_villages.village_type_data[ village_type ].min, mg_villages.village_type_data[ village_type ].max) +-- local height = pr:next(5, 20) + local height = pr:next(1, 5) + -- villages of a size >= 40 are always placed at a height of 1 + if( size >= 40 ) then + height = 1; + -- slightly smaller but still relatively large villages have a deterministic height now as well + elseif( size >= 30 ) then + height = 40-height; + elseif( size >= 25 ) then + height = 35-height; + -- even smaller villages need to have a height depending on their sourroundings (at least they're pretty small!) + end + +-- print("A village of type \'"..tostring( village_type ).."\' of size "..tostring( size ).." spawned at: x = "..x..", z = "..z) + --print("A village spawned at: x = "..x..", z = "..z) + return {{vx = x, vz = z, vs = size, vh = height, village_type = village_type}} +end + + + +--local function dist_center2(ax, bsizex, az, bsizez) +-- return math.max((ax+bsizex)*(ax+bsizex),ax*ax)+math.max((az+bsizez)*(az+bsizez),az*az) +--end + +local function inside_village2(bx, sx, bz, sz, village, vnoise) + return mg_villages.inside_village(bx, bz, village, vnoise) and mg_villages.inside_village(bx+sx, bz, village, vnoise) and mg_villages.inside_village(bx, bz+sz, village, vnoise) and mg_villages.inside_village(bx+sx, bz+sz, village, vnoise) +end + +local function choose_building(l, pr, village_type) + --::choose:: + local btype + while true do + local p = pr:next(1, 3000) + + if( not( mg_villages.village_type_data[ village_type ] ) + or not( mg_villages.village_type_data[ village_type ][ 'building_list'] )) then + mg_villages.print( mg_villages.DEBUG_LEVEL_INFO, 'Unsupported village type: '..tostring( village_type )..' for house at '..tostring(bx)..':'..tostring(bz)..'.'); + -- ...and crash in the next few lines (because there is no real solution for this problem) + end + + for _, b in ipairs( mg_villages.village_type_data[ village_type ][ 'building_list'] ) do + if ( mg_villages.BUILDINGS[ b ] and mg_villages.BUILDINGS[ b ].max_weight + and mg_villages.BUILDINGS[ b ].max_weight[ village_type ] and mg_villages.BUILDINGS[ b ].max_weight[ village_type ] >= p) then + +-- for b, i in ipairs(mg_villages.BUILDINGS) do +-- if i.weight[ village_type ] and i.weight[ village_type ] > 0 and i.max_weight and i.max_weight[ village_type ] and i.max_weight[ village_type ] >= p then + btype = b + break + end + end + -- in case no building was found: take the last one that fits + if( not( btype )) then + for i=#mg_villages.BUILDINGS,1,-1 do + if ( mg_villages.BUILDINGS[i] and mg_villages.BUILDINGS[i].weight + and mg_villages.BUILDINGS[i].weight[ village_type ] and mg_villages.BUILDINGS[i].weight[ village_type ] > 0 ) then + btype = i; + i = 1; + end + end + end + if( not( btype )) then + return 1; + end + if( #l<1 + or not( mg_villages.BUILDINGS[btype].avoid ) + or mg_villages.BUILDINGS[btype].avoid=='' + or not( mg_villages.BUILDINGS[ l[#l].btype ].avoid ) + or mg_villages.BUILDINGS[btype].avoid ~= mg_villages.BUILDINGS[ l[#l].btype ].avoid) then + + if mg_villages.BUILDINGS[btype].pervillage ~= nil then + local n = 0 + for j=1, #l do + if( l[j].btype == btype or (mg_villages.BUILDINGS[btype].typ and mg_villages.BUILDINGS[btype].typ == mg_villages.BUILDINGS[ l[j].btype ].typ)) then + n = n + 1 + end + end + --if n >= mg_villages.BUILDINGS[btype].pervillage then + -- goto choose + --end + if n < mg_villages.BUILDINGS[btype].pervillage then + return btype + end + else + return btype + end + end + end + --return btype +end + +local function choose_building_rot(l, pr, orient, village_type) + local btype = choose_building(l, pr, village_type) + local rotation + if mg_villages.BUILDINGS[btype].no_rotate then + rotation = 0 + else + if mg_villages.BUILDINGS[btype].orients == nil then + mg_villages.BUILDINGS[btype].orients = {0,1,2,3} + end + rotation = (orient+mg_villages.BUILDINGS[btype].orients[pr:next(1, #mg_villages.BUILDINGS[btype].orients)])%4 + end + local bsizex = mg_villages.BUILDINGS[btype].sizex + local bsizez = mg_villages.BUILDINGS[btype].sizez + if rotation%2 == 1 then + bsizex, bsizez = bsizez, bsizex + end + -- some buildings are mirrored + local mirror = nil; + -- some buildings may be too difficult for mirroring (=many nodebox-nodes that can't be mirrored well by rotation) or + -- be too symmetric to be worth the trouble + if( not(mg_villages.BUILDINGS[btype].nomirror) and pr:next( 1,2 )==1 ) then + mirror = true; + end + return btype, rotation, bsizex, bsizez, mirror +end + +local function placeable(bx, bz, bsizex, bsizez, l, exclude_roads, orientation) + for _, a in ipairs(l) do + -- with < instead of <=, space_between_buildings can be zero (important for towns where houses are closely packed) + if (a.btype ~= "road" or not exclude_roads) and math.abs(bx+bsizex/2-a.x-a.bsizex/2)<(bsizex+a.bsizex)/2 and math.abs(bz+bsizez/2-a.z-a.bsizez/2)<(bsizez+a.bsizez)/2 then + -- dirt roads which go at a 90 degree angel to the current road are not a problem + if( not( orientation ) or a.o%2 == orientation%2 ) then + return false + end + end + end + return true +end + +local function road_in_building(rx, rz, rdx, rdz, roadsize, l) + if rdx == 0 then + return not placeable(rx-roadsize+1, rz, 2*roadsize-2, 0, l, true) + else + return not placeable(rx, rz-roadsize+1, 0, 2*roadsize-2, l, true) + end +end + +local function when(a, b, c) + if a then return b else return c end +end + +mg_villages.road_nr = 0; + +local function generate_road(village, l, pr, roadsize_list, road_materials, rx, rz, rdx, rdz, vnoise, space_between_buildings, iteration_depth, parent_road) + local roadsize = math.floor(roadsize_list[ iteration_depth ]/2); + if( not( roadsize ) or roadsize==0) then + roadsize = mg_villages.FIRST_ROADSIZE; + end + local roadsize_a = roadsize; + local roadsize_b = roadsize; + if( roadsize_list[ iteration_depth ] % 2==1 ) then + roadsize_a = roadsize+1; + end + local vx, vz, vh, vs = village.vx, village.vz, village.vh, village.vs + local village_type = village.village_type; + local calls_to_do = {} + local rxx = rx + local rzz = rz + local mx, m2x, mz, m2z, mmx, mmz + mx, m2x, mz, m2z = rx, rx, rz, rz + local orient1, orient2 + if rdx == 0 then + orient1 = 0 + orient2 = 2 + else + orient1 = 3 + orient2 = 1 + end + local btype; + local rotation; + local bsizex; + local bsizez; + local mirror; + -- we have one more road + mg_villages.road_nr = mg_villages.road_nr + 1; + local first_building_a = false; + local first_building_b = false; + while mg_villages.inside_village(rx, rz, village, vnoise) and not road_in_building(rx, rz, rdx, rdz, roadsize_a, l) do + if iteration_depth > 1 and pr:next(1, 4) == 1 and first_building_a then + --generate_road(vx, vz, vs, vh, l, pr, roadsize-1, rx, rz, math.abs(rdz), math.abs(rdx)) + calls_to_do[#calls_to_do+1] = {rx=rx+(roadsize_a - 0)*rdx, rz=rz+(roadsize_a - 0)*rdz, rdx=math.abs(rdz), rdz=math.abs(rdx), parent_road = mg_villages.road_nr } + m2x = rx + (roadsize_a - 0)*rdx + m2z = rz + (roadsize_a - 0)*rdz + rx = rx + (2*roadsize_a - 0)*rdx + rz = rz + (2*roadsize_a - 0)*rdz + end + --else + --::loop:: + local exitloop = false + local bx + local bz + local tries = 0 + while true do + if not mg_villages.inside_village(rx, rz, village, vnoise) or road_in_building(rx, rz, rdx, rdz, roadsize_a, l) then + exitloop = true + break + end + local village_type_sub = village_type; + if( mg_villages.medieval_subtype and village_type_sub == 'medieval' and math.abs(village.vx-rx)>20 and math.abs(village.vz-rz)>20) then + village_type_sub = 'fields'; + end + btype, rotation, bsizex, bsizez, mirror = choose_building_rot(l, pr, orient1, village_type_sub) + bx = rx + math.abs(rdz)*(roadsize_a+1) - when(rdx==-1, bsizex-1, 0) + bz = rz + math.abs(rdx)*(roadsize_a+1) - when(rdz==-1, bsizez-1, 0) + if placeable(bx, bz, bsizex, bsizez, l) and inside_village2(bx, bsizex, bz, bsizez, village, vnoise) then + break + end + if tries > 5 then + rx = rx + rdx + rz = rz + rdz + tries = 0 + else + tries = tries + 1 + end + --goto loop + end + if exitloop then break end + rx = rx + (bsizex+space_between_buildings)*rdx + rz = rz + (bsizez+space_between_buildings)*rdz + mx = rx - 2*rdx + mz = rz - 2*rdz + l[#l+1] = {x=bx, y=vh, z=bz, btype=btype, bsizex=bsizex, bsizez=bsizez, brotate = rotation, road_nr = mg_villages.road_nr, side=1, o=orient1, mirror=mirror } + first_building_a = true; + --end + end + rx = rxx + rz = rzz + while mg_villages.inside_village(rx, rz, village, vnoise) and not road_in_building(rx, rz, rdx, rdz, roadsize_b, l) do + if roadsize_b > 1 and pr:next(1, 4) == 1 and first_building_b then + --generate_road(vx, vz, vs, vh, l, pr, roadsize-1, rx, rz, -math.abs(rdz), -math.abs(rdx)) + calls_to_do[#calls_to_do+1] = {rx=rx+(roadsize_b - 0)*rdx, rz=rz+(roadsize_b - 0)*rdz, rdx=-math.abs(rdz), rdz=-math.abs(rdx), parent_road = mg_villages.road_nr } + m2x = rx + (roadsize_b - 0)*rdx + m2z = rz + (roadsize_b - 0)*rdz + rx = rx + (2*roadsize_b - 0)*rdx + rz = rz + (2*roadsize_b - 0)*rdz + end + --else + --::loop:: + local exitloop = false + local bx + local bz + local tries = 0 + while true do + if not mg_villages.inside_village(rx, rz, village, vnoise) or road_in_building(rx, rz, rdx, rdz, roadsize_b, l) then + exitloop = true + break + end + local village_type_sub = village_type; + if( mg_villages.medieval_subtype and village_type_sub == 'medieval' and math.abs(village.vx-rx)>(village.vs/3) and math.abs(village.vz-rz)>(village.vs/3)) then + village_type_sub = 'fields'; + end + btype, rotation, bsizex, bsizez, mirror = choose_building_rot(l, pr, orient2, village_type_sub) + bx = rx - math.abs(rdz)*(bsizex+roadsize_b) - when(rdx==-1, bsizex-1, 0) + bz = rz - math.abs(rdx)*(bsizez+roadsize_b) - when(rdz==-1, bsizez-1, 0) + if placeable(bx, bz, bsizex, bsizez, l) and inside_village2(bx, bsizex, bz, bsizez, village, vnoise) then + break + end + if tries > 5 then + rx = rx + rdx + rz = rz + rdz + tries = 0 + else + tries = tries + 1 + end + --goto loop + end + if exitloop then break end + rx = rx + (bsizex+space_between_buildings)*rdx + rz = rz + (bsizez+space_between_buildings)*rdz + m2x = rx - 2*rdx + m2z = rz - 2*rdz + l[#l+1] = {x=bx, y=vh, z=bz, btype=btype, bsizex=bsizex, bsizez=bsizez, brotate = rotation, road_nr = mg_villages.road_nr, side=2, o=orient2, mirror=mirror} + first_building_b = true; + --end + end + if road_in_building(rx, rz, rdx, rdz, roadsize, l) then + mmx = rx - 2*rdx + mmz = rz - 2*rdz + end + mx = mmx or rdx*math.max(rdx*mx, rdx*m2x) + mz = mmz or rdz*math.max(rdz*mz, rdz*m2z) + local rxmin; + local rxmax; + local rzmin; + local rzmax; + if rdx == 0 then + rxmin = rx - roadsize_a + 1 + rxmax = rx + roadsize_b - 1 + rzmin = math.min(rzz, mz) + rzmax = math.max(rzz, mz) + -- prolong the main road to the borders of the village + if( mg_villages.road_nr == 1 ) then + while( mg_villages.inside_village_area(rxmin, rzmin, village, vnoise)) do + rzmin = rzmin-1; + rzmax = rzmax+1; + end + rzmin = rzmin-1; + rzmax = rzmax+1; + while( mg_villages.inside_village_area(rxmax, rzmax, village, vnoise)) do + rzmax = rzmax+1; + end + rzmax = rzmax+1; + end + else + rzmin = rz - roadsize_a + 1 + rzmax = rz + roadsize_b - 1 + rxmin = math.min(rxx, mx) + rxmax = math.max(rxx, mx) + -- prolong the main road to the borders of the village + if( mg_villages.road_nr == 1 ) then + while( mg_villages.inside_village_area(rxmin, rzmin, village, vnoise)) do + rxmin = rxmin-1; + rxmax = rxmax+1; + end + rxmin = rxmin-1; + rxmax = rxmax+1; + while( mg_villages.inside_village_area(rxmax, rzmax, village, vnoise)) do + rxmax = rxmax+1; + end + rxmax = rxmax+1; + end + end + l[#l+1] = {x = rxmin+1, y = vh, z = rzmin, btype = "road", + bsizex = rxmax - rxmin + 1, bsizez = rzmax - rzmin + 1, brotate = 0, road_nr = mg_villages.road_nr} + if( road_materials and road_materials[ iteration_depth ] and minetest.registered_nodes[ road_materials[ iteration_depth ]] ) then + l[#l].road_material = minetest.get_content_id( road_materials[ iteration_depth ] ); + end + + for _, i in ipairs(calls_to_do) do +-- local new_roadsize = roadsize -- - 1 + if pr:next(1, 100) <= mg_villages.BIG_ROAD_CHANCE then + --new_roadsize = roadsize + iteration_depth = iteration_depth + 1; + end + + --generate_road(vx, vz, vs, vh, l, pr, new_roadsize, i.rx, i.rz, i.rdx, i.rdz, vnoise) + calls[calls.index] = {village, l, pr, roadsize_list, road_materials, i.rx, i.rz, i.rdx, i.rdz, vnoise, space_between_buildings, iteration_depth-1, i.parent_road} + calls.index = calls.index+1 + end +end + +local function generate_bpos(village, pr, vnoise, space_between_buildings) + local vx, vz, vh, vs = village.vx, village.vz, village.vh, village.vs + local l = {} + local rx = vx - vs + --[=[local l={} + local total_weight = 0 + for _, i in ipairs(mg_villages.BUILDINGS) do + if i.weight == nil then i.weight = 1 end + total_weight = total_weight+i.weight + i.max_weight = total_weight + end + local multiplier = 3000/total_weight + for _,i in ipairs(mg_villages.BUILDINGS) do + i.max_weight = i.max_weight*multiplier + end + for i=1, 2000 do + bx = pr:next(vx-vs, vx+vs) + bz = pr:next(vz-vs, vz+vs) + ::choose:: + --[[btype = pr:next(1, #mg_villages.BUILDINGS) + if mg_villages.BUILDINGS[btype].chance ~= nil then + if pr:next(1, mg_villages.BUILDINGS[btype].chance) ~= 1 then + goto choose + end + end]] + p = pr:next(1, 3000) + for b, i in ipairs(mg_villages.BUILDINGS) do + if i.max_weight > p then + btype = b + break + end + end + if mg_villages.BUILDINGS[btype].pervillage ~= nil then + local n = 0 + for j=1, #l do + if l[j].btype == btype then + n = n + 1 + end + end + if n >= mg_villages.BUILDINGS[btype].pervillage then + goto choose + end + end + local rotation + if mg_villages.BUILDINGS[btype].no_rotate then + rotation = 0 + else + rotation = pr:next(0, 3) + end + bsizex = mg_villages.BUILDINGS[btype].sizex + bsizez = mg_villages.BUILDINGS[btype].sizez + if rotation%2 == 1 then + bsizex, bsizez = bsizez, bsizex + end + if dist_center2(bx-vx, bsizex, bz-vz, bsizez)>vs*vs then goto out end + for _, a in ipairs(l) do + if math.abs(bx-a.x)<=(bsizex+a.bsizex)/2+2 and math.abs(bz-a.z)<=(bsizez+a.bsizez)/2+2 then goto out end + end + l[#l+1] = {x=bx, y=vh, z=bz, btype=btype, bsizex=bsizex, bsizez=bsizez, brotate = rotation} + ::out:: + end + return l]=]-- + local rz = vz + while mg_villages.inside_village(rx, rz, village, vnoise) do + rx = rx - 1 + end + rx = rx + 5 + calls = {index = 1} + -- the function below is recursive; we need a way to count roads + mg_villages.road_nr = 0; + local roadsize_list = {}; + for i=1,mg_villages.FIRST_ROADSIZE*2 do + roadsize_list[i] = i; + end + if( mg_villages.village_type_data[ village.village_type ].roadsize_list ) then + roadsize_list = mg_villages.village_type_data[ village.village_type ].roadsize_list; + end + -- last 0 in parameter list: no parent road yet (this is the first) + generate_road(village, l, pr, roadsize_list, mg_villages.village_type_data[ village.village_type ].road_materials, rx, rz, 1, 0, vnoise, space_between_buildings, #roadsize_list, 0) + local i = 1 + while i < calls.index do + generate_road(unpack(calls[i])) + i = i+1 + end + mg_villages.road_nr = 0; + return l +end + + +-- dirt roads seperate the wheat area around medieval villages into seperate fields and make it look better +local function generate_dirt_roads( village, vnoise, bpos, secondary_dirt_roads ) + local dirt_roads = {}; + if( not( secondary_dirt_roads)) then + return dirt_roads; + end + for _, pos in ipairs( bpos ) do + + local x = pos.x; + local z = pos.z; + local sizex = pos.bsizex; + local sizez = 2; + local orientation = 0; + local vx; + local vz; + local vsx; + local vsz; + -- prolong the roads; start with a 3x2 piece of road for testing + if( pos.btype == 'road' ) then + -- the road streches in x direction + if( pos.bsizex > pos.bsizez ) then + sizex = 3; -- start with a road of length 3 + sizez = 2; + vx = -1; vz = 0; vsx = 1; vsz = 0; + x = pos.x - sizex; + z = pos.z + math.floor((pos.bsizez-2)/2); -- aim for the middle of the road + orientation = 0; + -- if it is not possible to prolong the road at one end, then try the other + if( not( placeable( x, z, sizex, sizez, bpos, false, nil))) then + x = pos.x + pos.bsizex; + vx = 0; + orientation = 2; + end + -- the road stretches in z direction + else + sizex = 2; + sizez = 3; + vx = 0; vz = -1; vsx = 0; vsz = 1; + x = pos.x + math.floor((pos.bsizex-2)/2); -- aim for the middle of the road + z = pos.z - sizez; + orientation = 1; + if( not( placeable( x, z, sizex, sizez, bpos, false, nil))) then + z = pos.z + pos.bsizez; + vz = 0; + orientation = 3; + end + end + + else + if( pos.o == 0 ) then + x = pos.x-pos.side; + z = pos.z-2; + sizex = pos.bsizex+1; + sizez = 2; + vx = 0; vz = 0; vsx = 1; vsz = 0; + + elseif( pos.o == 2 ) then + x = pos.x-pos.side+2; + z = pos.z-2; + sizex = pos.bsizex+1; + sizez = 2; + vx = -1; vz = 0; vsx = 1; vsz = 0; + + elseif( pos.o == 1 ) then + x = pos.x-2; + z = pos.z-pos.side+2; + sizex = 2; + sizez = pos.bsizez+1; + vx = 0; vz = -1; vsx = 0; vsz = 1; + + else --if( pos.o == 3 ) then + x = pos.x-2; + z = pos.z-pos.side; + sizex = 2; + sizez = pos.bsizez+1; + vx = 0; vz = 0; vsx = 0; vsz = 1; + end + orientation = pos.o; + + end + + -- prolong the dirt road by 1 + while( placeable( x, z, sizex, sizez, bpos, false, nil) + and placeable( x, z, sizex, sizez, dirt_roads, false, orientation) + and mg_villages.inside_village_area(x, z, village, vnoise) + and mg_villages.inside_village_area(x+sizex, z+sizez, village, vnoise)) do + sizex = sizex + vsx; + sizez = sizez + vsz; + x = x + vx; + z = z + vz; + end + + -- the dirt road may exceed the village boundaries slightly, but it may not interfere with other buildings + if( not( placeable( x, z, sizex, sizez, bpos, false, nil)) + or not( placeable( x, z, sizex, sizez, dirt_roads, false, orientation))) then + sizex = sizex - vsx; + sizez = sizez - vsz; + x = x - vx; + z = z - vz; + end + + if( placeable( x, z, sizex, sizez, bpos, false, nil) + and placeable( x, z, sizex, sizez, dirt_roads, false, orientation)) then + dirt_roads[#dirt_roads+1] = {x=x, y=village.vh, z=z, btype="dirt_road", bsizex=sizex, bsizez=sizez, brotate = 0, o=orientation} + end + end + return dirt_roads; +end + + + + +local MIN_DIST = 1 + +local function pos_far_buildings(x, z, l) + for _, a in ipairs(l) do + if a.x - MIN_DIST <= x and x <= a.x + a.bsizex + MIN_DIST and + a.z - MIN_DIST <= z and z <= a.z + a.bsizez + MIN_DIST then + return false + end + end + return true +end + + +local function generate_walls(bpos, data, a, minp, maxp, vh, vx, vz, vs, vnoise) + for x = minp.x, maxp.x do + for z = minp.z, maxp.z do + local xx = (vnoise:get_2d({x=x, y=z})-2)*20+(40/(vs*vs))*((x-vx)*(x-vx)+(z-vz)*(z-vz)) + if xx>=40 and xx <= 44 then + bpos[#bpos+1] = {x=x, z=z, y=vh, btype="wall", bsizex=1, bsizez=1, brotate=0} + end + end + end +end + + +-- determine which building is to be placed where +-- also choose which blocks to replace with which other blocks (to make villages more intresting) +mg_villages.generate_village = function(village, vnoise) + local vx, vz, vs, vh = village.vx, village.vz, village.vs, village.vh + local village_type = village.village_type; + local seed = mg_villages.get_bseed({x=vx, z=vz}) + local pr_village = PseudoRandom(seed) + + -- generate a name for the village + village.name = namegen.generate_village_name_with_prefix( pr_village, village ); + + -- only generate a new village if the data is not already stored + -- (the algorithm is fast, but village types and houses which are available may change later on, + -- and that might easily cause chaos if the village is generated again with diffrent input) + if( village.to_add_data and village.to_add_data.bpos and village.to_add_data.replacements and village.to_add_data.plantlist) then + --print('VILLAGE GENREATION: USING ALREADY GENERATED VILLAGE: Nr. '..tostring( village.nr )); + return; + end + + -- in the case of medieval villages, we later on want to add wheat fields with dirt roads; 1 wide dirt roads look odd + local space_between_buildings = 1; + if( mg_villages.village_type_data[ village_type ] and mg_villages.village_type_data[ village_type ].space_between_buildings) then + space_between_buildings = mg_villages.village_type_data[ village_type ].space_between_buildings; + end + + local bpos = {}; + local dirt_roads = {}; + local secondary_dirt_roads = nil; + if( village.to_add_data and village.to_add_data.bpos ) then + -- If it is a single building instead of a full village, then village.to_add_data.bpos will + -- already have been generated (but not the replacements and other data structures which still need to be generated here) + bpos = village.to_add_data.bpos; + else + -- actually generate the village structure + bpos = generate_bpos( village, pr_village, vnoise, space_between_buildings) + + -- if there is enough space, add dirt roads between the buildings (those will later be prolonged so that they reach the fields) + -- only add dirt roads if there are at least 3 buildings in the village + if( space_between_buildings >= 2 and village_type == 'medieval' and #bpos>3) then + secondary_dirt_roads = "dirt_road"; + end + + dirt_roads = generate_dirt_roads( village, vnoise, bpos, secondary_dirt_roads ); + end + + -- set fruits for all buildings in the village that need it - regardless weather they will be spawned + -- now or later; after the first call to this function here, the village data will be final + for _, pos in ipairs( bpos ) do + local binfo = mg_villages.BUILDINGS[pos.btype]; + if( binfo.farming_plus and binfo.farming_plus == 1 and mg_villages.fruit_list and not pos.furit) then + pos.fruit = mg_villages.fruit_list[ pr_village:next( 1, #mg_villages.fruit_list )]; + end + end + + -- a changing replacement list would also be pretty confusing + local p = PseudoRandom(seed); + -- if the village is new, replacement_list is nil and a new replacement list will be created + local replacements = mg_villages.get_replacement_table( village.village_type, p, nil ); + + local sapling_id = mg_villages.get_content_id_replaced( 'default:sapling', replacements ); + -- 1/sapling_p = probability of a sapling beeing placed + local sapling_p = 25; + if( mg_villages.sapling_probability[ sapling_id ] ) then + sapling_p = mg_villages.sapling_probability[ sapling_id ]; + end + + local c_plant = mg_villages.get_content_id_replaced( mg_villages.village_type_data[ village.village_type ].plant_type, replacements); + local plantlist = { + { id=sapling_id, p=sapling_p * mg_villages.village_type_data[ village.village_type ].sapling_divisor }, -- only few trees + { id=c_plant, p= mg_villages.village_type_data[ village.village_type ].plant_frequency }}; + + if( village.is_single_house and plantlist and #plantlist>0 ) then + local c_grass = mg_villages.get_content_id_replaced( 'default:grass_5', replacements); + plantlist[2] = { id=c_grass, p=10 }; + -- reduce the amount of plants grown so that the area stands out less from the sourroundings + plantlist[2].p = plantlist[2].p*3; + end + + -- store the generated data in the village table + village.to_add_data = {}; + village.to_add_data.bpos = bpos; + village.to_add_data.replacements = replacements.list; + village.to_add_data.dirt_roads = dirt_roads; + village.to_add_data.plantlist = plantlist; + + --print('VILLAGE GENREATION: GENERATING NEW VILLAGE Nr. '..tostring( village.nr )); +end + + +-- not all buildings contain beds so that mobs could live inside; some are just workplaces; +-- roads get only placed if there are enough inhabitants +mg_villages.count_inhabitated_buildings = function(village) + local bpos = village.to_add_data.bpos; + -- count the buildings + local anz_buildings = 0; + for i, pos in ipairs(bpos) do + if( pos.btype and not(pos.btype == 'road' )) then + local binfo = mg_villages.BUILDINGS[pos.btype]; + -- count buildings which can house inhabitants as well as those requiring workers + if( binfo and binfo.inh and binfo.inh ~= 0 ) then + anz_buildings = anz_buildings + 1; + end + end + end + return anz_buildings; +end + + +-- creates individual buildings outside of villages; +-- the data structure is like that of a village, except that bpos (=buildings to be placed) is already set; +-- Note: one building per mapchunk is more than enough (else it would look too crowded); +mg_villages.house_in_one_mapchunk = function( minp, mapchunk_size, vnoise ) + + local pr = PseudoRandom(mg_villages.get_bseed(minp)) + -- only each mg_villages.INVERSE_HOUSE_DENSITY th mapchunk gets a building + if( pr:next(1,mg_villages.INVERSE_HOUSE_DENSITY) > 1 ) then + return {}; + end + + + -- pseudorandom orientation + local orient1 = pr:next(0,3); + -- determine which kind of building to use + -- TODO: select only types fitting to that particular place + -- TODO: select only types that exist + -- the village type is "single" here - since not all houses which might fit into a village might do for lone standing houses + -- (i.e. church, forge, wagon, ..) + local btype, rotation, bsizex, bsizez, mirror = choose_building_rot({}, pr, orient1, 'single'); + if( not( bsizex )) then + mg_villages.print( mg_villages.DEBUG_LEVEL_INFO, 'FAILURE to generate a building.'); + btype, rotation, bsizex, bsizez, mirror = choose_building_rot({}, pr, orient1, 'nore'); + end + -- if no building was found, give up + if( not( bsizex ) or not(mg_villages.BUILDINGS[ btype ].weight)) then + return {}; + end + + + local village = {}; + -- store that this is not a village but a lone house + village.is_single_house = 1; + -- village height will be set to a value fitting the terrain later on + village.vh = 10; + -- this will force re-calculation of height + village.vs = 5; + -- find out the real village type of this house (which is necessary for the replacements); + -- the "single" type only indicates that this building may be used for one-house-villages such as this one + for k, _ in pairs( mg_villages.BUILDINGS[ btype ].weight ) do + if( k and k ~= 'single' ) then + village.village_type = k; + end + end + + + -- taken from paramats terrain blending code for single houses + local FFAPROP = 0.5 -- front flat area proportion of dimension + + local xdim, zdim -- dimensions of house plus front flat area + if rotation == 0 or rotation == 2 then + xdim = bsizex + zdim = bsizez + math.floor(FFAPROP * bsizez) + else + xdim = bsizex + math.floor(FFAPROP * bsizex) + zdim = bsizez + end + local blenrad = math.floor((math.max(xdim, zdim) + 16) / 2)+2 -- radius of blend area +--[[ + if( blenrad >= math.ceil(mapchunk_size/2)-2 ) then + blenrad = math.floor(mapchunk_size/2)-2; + end + local blencenx = pr:next(minp.x + blenrad, minp.x + mapchunk_size - blenrad - 1) -- blend area centre point + local blencenz = pr:next(minp.z + blenrad, minp.z + mapchunk_size - blenrad - 1) +--]] + local blencenx = pr:next(minp.x, minp.x + mapchunk_size - 1) -- blend area centre point + local blencenz = pr:next(minp.z, minp.z + mapchunk_size - 1) + + local minx = blencenx - math.ceil(xdim / 2) -- minimum point of house plus front flat area + local minz = blencenz - math.ceil(zdim / 2) + local bx, bz -- house minimum point + if rotation == 2 or rotation == 3 then -- N, E + bx = minx + bz = minz + elseif rotation == 1 then -- W + bx = minx + math.floor(FFAPROP * bsizex) + bz = minz + else -- rotation = 2, S + bx = minx + bz = minz + math.floor(FFAPROP * bsizez) + end + + village.vx = blencenx; + village.vz = blencenz; + village.vs = blenrad; + local village_id = tostring( village.vx )..':'..tostring( village.vz ); + + -- these values have to be determined once per village; afterwards, they need to be fixed + -- if a village has been generated already, it will continue to exist +-- if( mg_villages.all_villages[ village_id ] ) then +-- return village; +-- end + + if( mg_villages.all_villages and mg_villages.all_villages[ village_id ] and mg_villages.all_villages[ village_id ].optimal_height) then + village.optimal_height = mg_villages.all_villages[ village_id ].optimal_height; + village.vh = mg_villages.all_villages[ village_id ].optimal_height; + village.artificial_snow = mg_villages.all_villages[ village_id ].artificial_snow; + end + + village.to_add_data = {}; + village.to_add_data.bpos = { {x=bx, y=village.vh, z=bz, btype=btype, bsizex=bsizex, bsizez=bsizez, brotate = rotation, road_nr = 0, side=1, o=orient1, mirror=mirror }} + return village; +end + + +mg_villages.house_in_mapchunk_mark_intersection = function( villages, c, vnoise ) -- c: candidate for a new one-house-village + -- now check if this village can be placed here or if it intersects with another village in any critical manner; + -- the village area may intersect (=unproblematic; may even look nice), but the actual building must not be inside another village + + -- exclude misconfigured villages + if( not( c ) or not( c.to_add_data )) then + --print('WRONG DATA: '..minetest.serialize( c )); + c.areas_intersect = 1; + return; + end + + local bx = c.to_add_data.bpos[1].x; + local bz = c.to_add_data.bpos[1].z; + local bsizex = c.to_add_data.bpos[1].bsizex; + local bsizez = c.to_add_data.bpos[1].bsizez; + + -- make sure that the house does not intersect with the area of a village + for _,v in ipairs( villages ) do + local id = v.vx..':'..v.vz; + if( id and mg_villages.all_villages and mg_villages.all_villages[ id ] ) then + v = mg_villages.all_villages[ id ]; + end + + if( v.vx ~= c.vx and v.vz ~= c.vz ) then + local dist = math.sqrt( ( c.vx - v.vx ) * ( c.vx - v.vx ) + + ( c.vz - v.vz ) * ( c.vz - v.vz )); + if( dist < ( c.vs + v.vs )*1.1 ) then + mg_villages.print( mg_villages.DEBUG_LEVEL_WARNING, 'DROPPING house at '..c.vx..':'..c.vz..' because it is too close to '..v.vx..':'..c.vx); + c.areas_intersect = 1; + -- the other village can't be spawned either as we don't know which one will be loaded first + if( v.is_single_house ) then + v.areas_intersect = 1; + end + end + + if( not( v.is_single_house ) and + ( mg_villages.inside_village_terrain_blend_area( c.vx, c.vz, v, vnoise) + or mg_villages.inside_village_terrain_blend_area( bx, bz, v, vnoise) + or mg_villages.inside_village_terrain_blend_area((bx+bsizex), bz, v, vnoise) + or mg_villages.inside_village_terrain_blend_area((bx+bsizex), (bz+bsizez), v, vnoise) + or mg_villages.inside_village_terrain_blend_area( bx, (bz+bsizez), v, vnoise))) then + + mg_villages.print( mg_villages.DEBUG_LEVEL_WARNING, 'DROPPING house at '..c.vx..':'..c.vz..' due to intersection with village at '..id); + c.areas_intersect = 1; + -- the other village can't be spawned either as we don't know which one will be loaded first + if( v.is_single_house ) then + v.areas_intersect = 1; + end + end + end + end +end + + +-- we need to determine where single houses will be placed in neighbouring mapchunks as well because +-- they may be so close to the border that they will affect this mapchunk +mg_villages.houses_in_mapchunk = function( minp, mapchunk_size, villages ) + local village_noise = minetest.get_perlin(7635, 3, 0.5, 16); + + local village_candidates = {}; + local vcr = 2; --mg_villages.VILLAGE_CHECK_RADIUS + for xi = -vcr, vcr do + for zi = -vcr, vcr do + local new_village = mg_villages.house_in_one_mapchunk( + {x=minp.x+(xi*mapchunk_size), y=minp.y, z=minp.z+(zi*mapchunk_size)}, + mapchunk_size, + village_noise ); + if( new_village and new_village.vs and new_village.vx and new_village.vz ) then + table.insert( village_candidates, new_village ); + end + end + end + + for _,candidate in ipairs(village_candidates) do + -- mark all one-house-village-candidates that intersect with villages in this mapchunk + mg_villages.house_in_mapchunk_mark_intersection( villages, candidate, village_noise ); + -- mark all one-house-village-candidates that intersect with other candidates in this mapchunk + mg_villages.house_in_mapchunk_mark_intersection( village_candidates, candidate, village_noise ); + end + + -- now add those villages that do not intersect with others and which *may* at least be part of this mapchunk + local d = math.ceil( mapchunk_size / 2 ); + for _,candidate in ipairs(village_candidates) do + if( not( candidate.areas_intersect ) + and (candidate.vx > minp.x - d or candidate.vx < (mapchunk_size+d) ) + and (candidate.vz > minp.z - d or candidate.vz < (mapchunk_size+d) )) then + table.insert( villages, candidate ); + + -- there may be quite a lot of single houses added; plus they are less intresting than entire villages. Thus, logfile spam is reduced + mg_villages.print( mg_villages.DEBUG_LEVEL_WARNING, 'adding SINGLE HOUSE of type '..tostring( candidate.village_type ).. + ' to map at '..tostring( candidate.vx )..':'..tostring( candidate.vz )..'.'); + end + end + return villages; +end + +