1
0
mirror of https://github.com/Refactorio/RedMew.git synced 2024-12-14 10:13:13 +02:00

Merge pull request #149 from grilledham/action_queue_changes

Action queue changes
This commit is contained in:
Valansch 2018-01-18 15:30:44 +01:00 committed by GitHub
commit 76a2d7fe4e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 632 additions and 122 deletions

View File

@ -1,27 +1,193 @@
-- data is pairs of (tile number, count) the tile numbers are stored in tile_map in builders.lua.
return {
height = 20,
width = 20,
data =
{
{6,10,14,10},
{6,10,14,10},
{6,10,14,10},
{6,10,14,10},
{6,10,14,10},
{6,10,14,10},
{6,10,14,10},
{6,10,14,10},
{6,10,14,10},
{6,10,14,10},
{23,10,27,10},
{23,10,27,10},
{23,10,27,10},
{23,10,27,10},
{23,10,27,10},
{23,10,27,10},
{23,10,27,10},
{23,10,27,10},
{23,10,27,10},
{23,10,27,10},
}
height = 185,
width = 272,
data = {
{28,1,27,53,28,16,27,133,28,15,27,54,},
{28,1,27,53,28,17,27,132,28,15,27,54,},
{28,2,27,51,28,17,27,133,28,13,27,56,},
{28,2,27,50,28,19,27,111,28,2,27,19,28,13,27,1,28,2,27,21,28,1,27,31,},
{28,3,27,47,28,5,29,1,28,16,27,108,28,7,27,16,28,13,27,1,28,2,27,24,28,1,27,28,},
{28,3,27,45,28,6,29,4,28,24,27,94,28,12,27,15,28,16,27,24,28,3,29,1,27,25,},
{28,3,27,44,28,5,29,8,28,23,27,93,28,14,27,13,28,17,27,23,28,1,27,1,28,1,29,1,27,25,},
{28,3,27,43,28,6,29,8,28,23,27,93,28,15,27,12,28,13,29,1,28,1,27,1,28,3,27,23,28,1,26,1,27,25,},
{29,1,28,2,27,43,28,6,29,8,28,24,27,89,28,24,27,11,28,5,27,59,},
{28,3,27,44,28,5,29,8,28,24,27,89,28,25,27,10,28,4,27,1,28,1,27,58,},
{28,3,27,44,28,7,29,4,28,26,27,88,28,28,27,8,28,3,27,61,},
{28,3,27,45,28,6,29,2,28,22,29,2,28,4,27,87,28,29,27,10,28,1,27,13,28,1,27,47,},
{28,3,27,45,28,6,29,2,28,20,29,6,28,3,27,85,28,10,29,4,28,16,27,72,},
{28,3,27,45,28,25,29,9,28,4,27,74,28,18,29,8,28,14,27,72,},
{27,1,28,1,27,3,28,1,27,1,28,5,27,36,28,21,29,14,28,3,27,74,28,14,29,13,28,13,27,72,},
{27,4,28,1,27,1,28,9,27,33,28,20,29,15,28,4,27,73,28,14,29,13,28,19,27,1,28,1,27,64,},
{27,3,28,11,29,1,28,7,27,26,28,8,29,1,28,2,27,2,29,2,27,1,29,1,28,2,29,2,28,1,29,1,6,1,29,12,28,4,27,69,28,17,29,19,28,11,27,68,},
{27,4,28,10,29,1,28,7,27,26,28,8,29,1,28,3,27,1,28,2,27,1,29,1,28,2,29,2,28,1,29,16,28,2,27,72,28,14,29,20,28,11,27,67,},
{27,3,28,10,29,4,28,7,27,25,28,12,27,2,28,3,29,22,28,1,27,74,28,12,29,19,28,10,27,68,},
{27,3,28,9,29,6,28,6,27,24,28,9,29,4,27,2,29,1,28,1,29,23,28,3,27,74,28,3,27,2,28,6,29,19,28,9,27,68,},
{27,3,28,8,29,8,28,5,27,25,28,8,29,4,27,2,29,27,28,2,27,78,28,6,29,19,28,9,27,68,},
{27,3,28,7,29,10,28,4,27,27,28,1,27,1,28,4,29,4,28,1,27,1,28,1,29,27,28,1,27,79,28,6,29,19,28,8,27,68,},
{27,4,28,5,29,12,28,3,27,30,28,4,29,5,27,1,29,2,28,1,27,2,29,3,6,8,29,12,28,2,27,77,28,7,29,18,28,8,27,68,},
{27,4,28,4,29,14,28,2,27,31,28,3,29,5,27,1,28,1,29,1,27,3,28,1,29,3,6,7,29,12,28,2,27,78,28,6,29,19,28,7,27,68,},
{27,4,28,5,29,13,28,2,27,29,28,5,29,5,27,2,29,1,27,4,28,1,27,1,29,1,13,1,29,1,6,2,13,1,6,3,29,2,6,2,29,10,28,2,27,76,28,11,29,8,28,1,29,4,28,2,29,1,28,1,29,2,27,1,28,1,27,2,28,1,27,64,},
{27,4,28,4,29,14,28,3,27,28,28,3,29,7,27,10,29,1,6,1,29,1,6,1,29,1,6,3,29,5,6,3,29,7,27,79,28,9,29,8,26,1,29,2,28,1,29,1,28,1,29,1,28,3,29,1,27,1,28,1,27,67,},
{27,4,28,4,29,16,28,2,27,27,28,3,29,2,28,2,29,1,27,1,29,2,27,12,29,5,6,2,13,2,6,2,29,9,27,80,28,10,29,7,28,1,29,1,28,1,29,3,28,1,27,1,28,1,27,2,28,1,27,67,},
{27,4,28,3,29,17,28,3,27,26,28,3,29,5,27,18,13,1,27,1,6,1,29,1,6,2,29,1,6,1,29,1,6,1,29,7,27,82,28,10,29,7,26,1,27,1,29,1,28,2,27,1,29,1,27,70,},
{27,3,28,5,29,8,6,2,29,6,28,5,27,24,28,3,29,2,6,3,27,20,6,3,29,4,6,2,29,6,27,84,28,12,29,1,28,1,29,2,27,1,29,3,27,72,},
{27,4,28,3,29,7,6,5,29,7,28,4,27,23,28,3,29,5,28,1,29,1,27,4,28,1,27,1,6,2,29,2,6,1,13,1,27,8,6,2,13,1,29,2,6,2,29,6,27,85,28,11,29,1,28,1,6,1,28,1,27,1,28,1,27,74,},
{27,4,28,3,29,6,6,7,29,7,28,4,27,22,28,3,29,2,6,2,29,1,27,5,28,1,29,1,6,2,13,2,6,1,13,2,29,2,28,1,27,7,6,1,29,1,6,4,29,5,27,85,28,11,29,1,28,1,6,1,27,77,},
{27,3,28,4,29,5,6,8,29,7,28,5,27,21,28,3,29,1,27,1,29,2,27,5,28,1,29,1,13,1,9,1,13,1,6,1,13,3,29,1,9,1,13,1,9,1,13,1,27,1,6,1,27,6,13,1,6,2,29,6,27,85,28,11,27,80,},
{27,3,28,3,29,4,6,13,29,5,28,6,27,17,28,1,29,5,13,1,29,1,6,1,28,1,27,4,29,1,13,1,9,2,16,2,9,5,13,6,27,7,29,2,28,1,29,3,27,1,28,1,27,1,28,1,27,23,29,1,27,1,13,1,28,1,29,6,28,1,27,54,29,1,27,25,28,1,27,42,28,2,27,14,},
{27,3,28,2,29,5,6,8,13,2,6,4,29,6,28,5,27,16,28,1,29,7,6,1,29,1,27,4,6,1,9,2,11,1,17,2,11,4,9,6,13,1,6,1,29,1,27,6,29,1,27,3,29,2,27,24,28,1,27,1,29,3,6,1,29,1,27,1,13,1,29,4,27,50,28,3,27,14,28,1,27,55,28,2,27,14,},
{27,3,28,2,29,5,6,2,13,3,6,2,13,4,6,3,29,8,28,4,27,15,28,1,29,7,13,1,29,1,27,3,29,1,13,1,11,3,17,4,16,4,11,3,13,5,27,31,28,1,29,1,27,2,29,1,27,1,29,2,28,1,6,2,27,1,13,1,29,1,27,1,29,2,27,123,28,2,27,3,28,1,27,10,},
{27,1,28,3,29,5,6,2,13,10,6,4,29,7,28,5,27,13,28,1,29,7,6,2,29,1,27,3,13,1,9,1,16,3,17,7,16,4,9,3,13,1,9,2,29,1,27,29,28,1,29,2,27,1,29,1,27,5,29,1,27,1,29,1,27,63,28,1,27,4,28,1,29,1,27,2,28,1,27,1,28,1,27,53,28,1,27,3,28,1,27,10,},
{28,3,29,5,6,2,13,12,6,5,29,8,28,3,27,10,28,2,29,8,13,1,6,1,29,2,27,2,9,1,11,1,16,3,17,7,16,4,17,1,9,1,13,1,11,1,9,1,13,2,9,1,29,1,27,29,28,1,27,9,29,2,27,65,28,1,29,1,28,1,29,1,9,1,29,1,28,1,27,55,28,2,27,1,28,2,27,10,},
{28,1,29,7,6,2,13,13,6,6,29,8,28,3,27,7,28,2,29,8,6,1,13,1,6,1,29,2,27,2,11,1,16,1,17,9,16,6,9,2,16,1,9,1,13,3,17,1,29,1,27,38,29,2,27,58,29,1,6,1,29,1,27,2,29,3,6,1,29,1,27,1,29,3,27,55,28,2,27,1,28,2,27,10,},
{29,8,6,1,13,14,6,6,29,10,28,1,27,7,28,1,29,9,6,1,13,1,6,1,29,1,28,1,27,1,29,1,11,1,16,1,17,3,16,1,17,5,16,5,11,2,17,2,11,1,16,1,11,1,9,1,11,1,9,1,13,1,27,96,28,1,6,1,13,1,29,1,28,1,29,1,13,2,29,3,28,1,27,6,28,2,27,50,28,5,27,10,},
{29,7,6,2,13,16,6,5,29,10,27,6,28,2,29,8,6,3,13,1,29,1,27,2,6,1,11,1,16,1,17,3,16,3,17,4,16,4,17,1,11,2,16,4,11,1,9,1,11,1,9,2,27,95,29,4,6,1,13,3,29,2,13,1,9,1,6,1,13,2,7,1,13,1,29,1,28,1,27,51,28,5,27,10,},
{29,4,6,4,13,19,6,5,29,11,28,3,27,1,28,1,29,8,6,4,29,1,27,2,6,1,9,1,11,1,16,1,17,6,16,4,17,4,16,2,17,2,11,2,16,3,17,1,11,1,9,1,6,1,27,90,6,1,13,3,6,3,13,1,29,1,28,2,29,4,28,1,8,1,6,3,28,2,29,1,27,7,28,1,27,42,28,4,27,11,},
{29,3,6,5,13,20,6,4,29,11,28,5,29,8,6,3,13,1,29,1,27,2,6,1,16,2,17,4,16,2,11,1,16,1,17,4,16,2,17,1,16,2,17,1,16,1,9,3,11,2,16,2,11,1,9,1,29,1,27,87,28,1,29,6,28,1,29,4,13,6,27,2,28,1,29,1,28,1,29,1,6,1,29,1,27,49,28,4,27,11,},
{29,3,6,3,13,22,6,4,29,22,6,2,29,1,6,1,13,2,6,1,29,1,27,1,6,1,16,2,17,5,16,2,11,2,9,2,11,1,16,2,17,3,16,2,11,1,9,3,11,5,9,1,13,1,27,85,29,1,9,1,16,1,13,4,29,4,6,1,29,4,13,1,8,1,9,1,10,1,8,1,13,1,6,1,28,3,27,50,28,5,27,10,},
{6,5,13,24,6,3,29,22,6,4,13,3,29,1,27,1,13,1,11,1,16,2,17,5,16,2,17,4,16,3,17,6,16,1,11,1,16,1,9,3,11,1,17,1,11,1,9,1,29,1,27,76,28,1,29,1,27,3,29,1,28,1,6,1,13,2,6,8,9,4,8,1,13,2,6,2,29,5,6,1,29,1,27,20,28,7,27,22,28,6,27,9,},
{6,2,13,26,6,4,29,21,6,4,13,3,6,1,29,1,27,1,13,1,16,4,17,4,16,2,17,3,16,4,17,2,16,2,17,2,16,1,17,2,9,2,11,1,16,1,17,1,9,1,17,1,9,1,29,1,27,2,13,2,29,1,6,2,29,2,28,1,27,24,28,1,27,37,28,2,29,2,6,1,27,1,28,2,29,1,6,1,13,1,29,1,6,4,13,5,28,1,29,1,6,1,13,2,7,1,6,1,7,1,29,1,28,2,27,5,28,1,27,15,28,12,27,22,28,6,27,8,},
{13,27,6,5,29,21,6,3,13,4,6,1,29,1,27,1,13,1,17,5,16,3,17,1,16,1,11,2,9,1,11,2,16,2,17,2,16,4,11,1,17,4,16,3,9,1,16,1,17,1,11,1,6,1,28,1,29,1,6,2,8,1,13,2,6,1,29,1,28,2,27,57,28,1,27,2,29,3,28,1,27,2,6,1,29,2,6,1,13,1,29,1,9,1,6,2,29,2,6,2,29,2,13,2,6,4,29,1,28,1,29,2,28,1,27,4,29,1,27,16,28,16,27,18,28,2,29,2,28,2,27,8,},
{13,25,6,4,29,3,6,1,29,19,6,4,13,4,6,1,29,1,27,1,13,1,17,8,16,1,17,5,16,1,11,1,16,1,17,2,16,4,11,2,17,3,16,3,17,1,11,1,16,2,11,1,13,1,28,1,29,1,13,1,8,1,13,1,9,1,6,1,13,1,29,1,6,1,29,1,27,1,28,1,27,9,28,1,27,16,28,1,27,21,28,2,29,3,28,1,29,1,28,1,27,1,29,2,27,3,6,1,13,1,8,1,9,1,13,2,29,2,6,2,29,1,6,1,13,3,6,1,13,1,29,2,6,1,9,2,6,1,28,1,6,1,29,1,27,5,29,1,27,16,28,16,27,18,28,1,29,3,28,2,27,8,},
{13,24,6,5,29,3,6,2,29,18,6,5,13,4,29,1,27,1,6,1,17,12,16,2,17,2,16,2,17,6,11,1,9,1,11,1,9,1,11,1,17,5,11,2,16,1,9,1,6,2,8,1,13,1,12,1,6,1,8,1,29,1,6,1,29,1,28,1,29,1,27,7,28,1,27,1,29,2,27,13,28,4,27,6,28,1,27,2,29,1,27,9,28,1,29,2,6,1,13,1,6,1,29,5,28,1,27,1,29,1,6,1,10,1,13,2,9,1,13,1,9,1,13,1,6,2,29,4,6,1,29,2,13,1,6,1,29,2,13,1,8,1,13,1,7,1,6,1,29,1,27,3,28,1,27,18,28,16,27,18,28,1,29,5,27,8,},
{13,14,6,2,13,4,6,8,29,23,6,5,13,5,29,1,27,1,29,1,17,2,16,2,17,6,16,2,11,2,16,2,9,9,11,7,17,2,16,3,17,2,29,2,9,2,6,2,9,1,13,1,6,1,29,1,6,1,29,1,27,5,28,1,6,1,28,1,29,1,27,11,29,1,27,3,29,3,27,4,29,1,27,4,29,1,27,8,28,1,6,2,13,1,6,1,13,2,29,5,27,1,6,1,8,1,13,2,9,1,11,1,9,1,13,5,9,1,13,1,29,1,9,1,13,3,8,2,13,1,8,1,9,2,13,2,6,2,29,1,27,10,28,1,27,8,28,8,29,2,28,8,27,16,28,7,29,1,27,8,},
{13,14,6,2,13,3,6,8,29,24,6,5,13,5,29,1,27,1,29,1,16,1,17,10,16,1,11,1,9,2,11,1,9,8,11,8,17,4,16,1,11,1,17,1,11,1,13,1,29,1,13,2,29,2,13,2,29,1,6,1,29,1,27,2,28,2,27,2,29,2,27,4,28,1,27,5,28,1,29,2,27,2,28,1,6,2,29,1,28,1,27,3,29,1,27,4,29,1,27,8,28,1,13,6,29,1,6,2,27,2,6,1,9,1,13,1,8,1,11,1,9,1,13,4,8,2,13,1,9,2,13,1,9,3,11,1,16,3,11,1,9,2,8,1,13,1,9,1,8,1,13,2,6,1,7,1,29,1,27,15,28,8,29,2,28,8,27,16,28,7,29,1,27,8,},
{13,14,6,2,13,2,6,9,29,24,6,5,13,5,6,1,27,2,11,1,17,8,16,1,11,2,9,3,11,5,9,4,11,8,16,3,17,2,11,1,16,1,17,1,11,1,29,1,6,3,29,1,8,1,13,1,6,2,29,1,28,2,29,1,28,1,27,1,28,3,27,9,28,1,29,3,27,2,28,1,6,2,29,1,27,2,29,1,27,1,28,1,27,7,29,1,27,1,28,1,27,1,29,2,28,1,13,2,9,2,6,1,29,1,6,1,29,1,27,1,28,1,29,1,13,1,9,3,13,1,6,1,29,4,6,2,29,1,6,1,13,1,9,2,16,1,10,1,9,3,10,1,9,4,10,1,6,2,8,1,9,2,8,1,29,1,27,14,28,9,29,2,28,8,27,16,28,6,29,2,28,1,27,7,},
{13,14,6,12,29,26,6,5,13,5,29,1,27,1,9,1,16,1,17,7,16,2,11,3,16,2,11,6,9,4,11,3,16,3,17,1,16,1,11,1,17,3,16,1,17,1,11,1,9,1,6,1,29,1,13,5,6,1,29,5,27,1,28,1,27,7,28,1,29,2,28,2,29,2,28,1,27,1,28,1,29,1,6,1,13,1,29,1,27,2,6,1,27,1,29,1,27,6,28,1,6,1,28,1,29,1,27,1,29,3,13,1,9,1,13,1,9,1,29,3,27,2,13,1,9,2,13,1,11,1,8,1,13,8,6,2,13,1,6,2,13,1,9,6,8,2,9,2,17,1,12,1,10,1,9,1,8,1,9,1,8,1,29,1,27,6,28,1,27,1,28,1,27,3,28,10,29,3,28,1,29,1,28,5,27,15,28,7,29,3,27,7,},
{13,14,6,12,29,26,6,5,13,5,6,1,27,1,9,1,16,1,17,11,16,3,11,5,9,5,11,2,16,1,17,3,16,1,17,5,16,1,17,1,9,1,17,1,9,1,29,2,13,1,6,1,29,1,6,1,29,6,27,4,29,1,27,4,28,1,29,2,28,2,29,2,28,1,29,2,6,1,13,2,6,1,29,3,28,2,27,5,28,1,29,1,7,1,29,2,28,1,29,3,9,2,6,1,13,1,6,1,29,1,27,2,13,1,9,1,13,1,16,1,9,1,13,1,9,2,13,1,6,1,13,2,9,2,13,1,6,1,29,1,13,1,29,1,6,1,29,1,13,1,29,1,6,1,29,3,6,4,13,3,8,2,13,1,29,1,27,6,28,19,29,2,28,9,27,11,28,7,29,4,27,7,},
{9,2,13,12,6,10,29,28,6,5,13,6,27,1,9,1,16,1,17,5,11,1,17,4,16,4,11,4,9,6,11,2,16,1,17,6,16,1,17,2,16,3,11,1,9,2,28,1,13,1,6,1,27,1,29,7,28,1,27,3,29,2,27,4,28,1,29,6,6,1,29,1,13,1,8,1,13,1,29,3,28,3,27,1,28,1,27,1,28,1,29,3,6,1,29,6,13,1,8,2,13,1,27,2,29,2,9,2,13,1,9,4,13,8,9,1,13,1,11,1,13,1,9,1,13,1,9,1,29,1,13,1,6,3,13,1,9,3,7,1,6,1,7,1,6,1,29,3,27,6,28,19,29,3,28,9,27,9,28,8,29,4,27,7,},
{9,2,13,12,6,8,29,2,6,1,29,28,6,6,13,4,28,1,6,1,16,1,17,4,16,2,11,3,16,5,11,3,9,8,11,2,16,2,17,4,16,1,17,2,16,2,17,1,11,1,9,1,10,1,29,1,6,2,28,2,29,3,6,2,29,2,28,2,27,1,28,1,29,1,28,1,27,2,28,3,29,6,28,1,13,1,9,1,6,1,29,2,28,1,27,1,29,2,28,1,29,1,28,2,29,1,28,1,29,1,6,1,29,6,6,1,13,1,11,1,6,1,27,2,13,1,9,1,8,1,10,1,9,1,6,1,9,1,16,1,9,1,13,1,9,4,13,1,9,2,10,1,9,1,13,1,29,2,6,1,13,8,6,2,29,1,13,1,9,2,6,1,29,1,28,1,27,6,28,18,29,4,28,11,27,6,28,9,29,4,28,1,27,6,},
{9,3,13,11,6,7,29,31,6,7,13,4,29,2,11,1,17,4,16,1,17,6,16,3,11,3,9,3,13,2,9,4,11,4,17,1,16,1,17,6,9,1,16,1,9,1,13,1,29,2,28,1,29,1,28,2,29,1,6,5,27,1,29,2,27,1,29,1,27,1,28,1,29,2,28,1,29,3,28,1,27,1,28,1,29,1,28,1,13,1,11,1,6,1,29,2,27,1,28,1,6,2,29,1,6,1,27,2,28,1,27,1,29,6,6,1,29,1,13,3,29,1,6,3,9,1,11,1,13,1,8,1,9,1,11,1,9,1,11,1,13,2,6,4,13,2,9,2,11,1,16,1,11,2,9,1,13,1,29,2,6,2,29,4,8,1,13,2,6,1,29,1,28,1,27,6,28,1,27,1,28,17,29,4,28,12,27,4,28,9,29,6,27,6,},
{9,3,13,11,6,5,29,33,6,5,13,2,6,1,13,2,6,1,29,1,27,1,16,1,17,9,16,1,11,4,17,2,11,1,13,2,9,3,13,2,9,1,11,1,16,1,17,4,16,1,11,1,17,3,16,1,11,2,13,1,9,1,13,1,6,1,27,1,29,1,28,1,29,1,28,1,29,1,13,2,6,2,29,1,28,1,29,1,28,3,27,1,28,1,29,1,27,1,28,1,27,1,29,2,27,1,29,1,6,1,29,2,13,1,8,1,29,1,6,1,29,1,6,1,28,1,29,2,6,1,13,1,29,2,28,1,27,1,29,1,6,2,29,1,13,1,29,1,13,1,29,1,6,2,13,1,6,1,13,3,9,3,11,3,9,1,13,1,6,2,13,1,11,1,13,1,6,1,29,3,13,1,9,2,13,3,9,1,8,1,13,1,6,2,29,4,13,1,6,1,13,1,6,1,29,1,27,9,28,16,29,2,28,24,29,10,27,6,},
{9,3,13,11,6,6,29,32,6,5,13,2,6,1,13,2,6,1,29,1,27,1,9,1,17,5,16,1,11,3,16,2,17,4,11,1,13,3,9,2,13,2,9,2,11,1,16,4,17,6,16,1,11,1,9,2,13,2,6,1,29,3,6,1,29,2,6,1,13,2,6,1,29,4,28,2,27,1,28,1,29,1,27,2,29,2,28,2,29,1,13,1,29,4,28,1,29,1,27,2,29,3,6,1,13,1,6,1,13,2,28,1,29,1,13,1,6,1,8,1,13,1,6,1,29,1,6,3,13,5,9,2,10,1,11,2,16,1,17,3,16,1,11,1,9,1,13,2,9,3,13,1,29,1,13,1,11,1,17,2,11,3,10,1,9,1,13,1,6,1,13,2,7,1,29,1,6,1,29,3,27,7,28,18,29,1,28,24,29,8,28,1,29,2,27,5,},
{9,3,13,11,6,6,29,19,6,2,29,11,6,6,13,1,6,1,13,2,6,1,29,1,27,1,13,1,17,2,16,1,17,3,16,4,17,5,9,1,6,1,13,2,9,3,11,3,16,5,11,2,16,1,11,1,17,1,11,1,16,1,11,1,9,2,13,5,6,2,29,2,6,1,13,2,29,2,6,1,29,3,6,2,29,1,27,1,28,1,29,1,13,1,29,1,27,1,29,2,6,1,29,6,27,1,29,5,6,1,29,1,13,2,29,1,13,2,6,1,9,1,6,2,29,1,13,2,6,1,13,9,9,1,11,1,17,2,9,1,13,1,9,1,13,1,9,1,13,1,10,1,13,1,28,1,6,1,13,1,29,1,27,2,6,1,10,1,17,4,9,3,12,1,11,1,9,1,8,1,6,2,29,1,27,7,28,18,29,1,28,24,29,8,28,1,29,2,27,5,},
{13,7,9,1,13,7,6,6,29,14,6,10,29,6,6,9,13,2,6,1,29,1,27,1,28,1,16,1,17,1,16,1,17,7,16,3,17,1,11,1,9,1,13,3,9,2,11,1,9,2,11,2,16,3,17,5,16,2,11,2,9,1,11,1,13,3,9,1,13,3,6,1,29,2,13,2,29,4,6,2,9,1,13,1,28,1,27,1,29,1,6,1,13,1,29,1,28,1,29,4,13,1,6,1,29,4,13,1,29,1,6,1,29,3,6,1,13,1,7,1,6,1,9,1,13,1,9,1,7,1,6,3,8,1,13,2,8,1,13,3,9,5,11,3,9,3,16,1,9,1,8,2,9,1,13,2,8,2,9,2,6,1,29,1,27,1,28,1,29,1,13,1,9,5,13,3,29,1,28,1,27,8,28,2,27,1,28,2,27,1,28,13,29,2,28,5,29,1,28,1,29,1,28,14,29,8,28,1,29,2,27,5,},
{13,5,9,3,13,8,6,5,29,12,6,14,29,3,6,11,13,1,6,1,29,1,27,2,9,1,17,9,16,3,17,1,13,2,9,1,13,2,9,2,11,4,9,5,11,1,17,1,16,1,17,1,11,1,17,1,11,1,16,1,11,1,16,1,9,3,13,1,6,1,9,1,13,2,29,2,13,1,6,1,29,2,28,1,29,1,10,1,13,1,8,1,6,1,29,2,28,1,29,5,6,1,29,2,13,1,6,1,29,4,13,1,29,1,13,2,29,2,9,2,13,1,29,1,9,1,13,1,9,1,13,1,6,1,29,2,9,3,13,2,9,4,11,1,16,3,11,3,17,2,16,2,10,1,17,1,16,1,9,2,11,1,9,1,13,2,6,1,9,2,28,2,27,1,28,1,29,1,6,1,13,1,9,1,8,1,13,1,6,1,29,1,27,16,28,19,29,5,28,12,29,10,28,1,29,1,27,4,},
{13,4,9,5,13,7,6,6,29,10,6,29,13,1,6,1,29,1,27,2,6,1,17,8,16,5,13,1,9,1,11,1,9,1,11,1,16,2,11,1,17,2,16,1,11,1,9,2,13,3,9,1,13,1,17,1,9,1,17,1,11,1,16,3,11,1,16,1,9,1,13,2,9,1,13,2,6,4,29,1,6,1,29,1,6,1,9,1,13,2,29,2,6,1,27,3,28,1,29,2,13,1,29,1,13,1,8,1,6,1,29,1,6,1,29,3,28,1,6,1,13,1,29,1,6,1,10,1,9,1,13,4,6,1,8,1,29,1,6,2,9,2,13,1,6,1,9,1,11,2,13,3,9,3,11,1,16,2,17,1,11,1,13,1,9,2,17,2,11,1,9,1,10,1,13,1,11,2,9,1,11,1,9,1,11,1,9,1,13,1,29,3,6,1,13,1,8,1,6,1,29,1,28,1,27,17,28,11,29,14,28,6,29,14,28,1,29,2,27,3,},
{13,4,9,5,8,1,13,6,6,12,29,4,6,24,29,1,6,5,29,2,27,2,28,1,16,1,17,7,16,1,11,1,9,4,11,2,16,1,17,4,16,2,11,1,9,6,11,1,13,1,16,1,11,1,17,1,11,2,16,1,11,1,16,1,11,1,9,1,13,4,6,3,29,2,6,1,13,4,29,1,9,1,6,2,29,1,27,3,29,5,13,1,8,1,6,1,29,1,13,1,29,3,28,1,29,1,6,2,29,1,9,1,8,1,9,2,13,2,29,1,13,1,6,1,13,1,9,1,10,1,13,2,6,1,9,1,10,1,16,1,9,3,13,1,9,1,11,1,16,2,11,1,17,1,11,1,9,1,13,3,11,1,16,2,17,1,13,1,9,1,13,3,6,1,13,3,9,3,13,1,6,2,29,2,27,18,28,11,29,34,28,1,29,2,27,3,},
{13,4,9,5,13,7,6,12,29,3,6,25,29,1,6,5,29,2,27,3,9,1,17,6,16,1,11,2,9,3,11,1,9,1,11,1,16,1,17,1,16,1,17,3,16,1,11,1,9,1,13,1,6,3,13,2,6,1,9,2,17,1,11,2,16,1,9,1,11,1,9,3,11,1,13,2,6,1,13,2,29,2,13,5,6,1,9,1,6,1,13,1,29,1,28,1,27,1,29,3,6,1,29,1,6,1,29,1,13,1,6,1,29,1,6,1,28,1,29,2,6,3,13,1,6,1,9,1,13,1,9,1,13,4,6,1,13,1,6,1,16,1,9,1,13,3,9,2,11,2,16,3,11,1,9,4,13,2,16,2,9,1,13,1,9,1,16,1,10,1,11,1,13,1,9,1,17,1,11,1,16,1,13,2,6,1,29,2,13,1,9,3,27,1,28,2,27,20,28,10,29,1,28,1,29,1,28,1,29,1,28,1,29,30,28,1,29,2,},
{6,1,13,4,9,3,13,8,6,39,29,1,6,1,29,2,6,4,29,1,28,1,27,2,29,1,11,1,17,5,16,1,11,1,9,2,11,4,16,1,17,7,9,2,13,1,29,1,27,2,29,1,6,1,11,1,17,1,11,2,17,2,11,1,9,1,11,2,17,1,9,2,13,2,11,1,29,1,6,3,13,2,6,1,9,2,13,1,29,4,28,1,27,1,29,1,6,1,27,1,28,1,13,1,29,1,6,1,13,2,29,2,27,1,29,1,6,2,29,3,13,1,9,1,13,4,9,2,13,3,10,1,13,1,8,1,29,1,6,1,9,1,16,1,9,1,11,1,17,1,11,2,9,1,16,1,9,1,11,1,9,1,17,1,16,1,9,2,17,5,9,1,16,1,17,1,13,2,9,2,11,1,8,1,13,2,6,1,29,2,6,2,13,1,29,1,27,25,28,8,29,36,},
{6,1,13,4,9,2,13,9,6,41,29,2,6,3,29,2,27,2,29,1,13,1,11,1,17,3,16,1,17,3,11,1,9,2,11,1,9,3,11,2,16,1,17,4,9,1,13,1,29,1,27,1,29,1,6,1,13,3,9,3,11,2,16,1,11,2,9,2,13,1,9,1,10,1,13,1,9,1,6,1,13,5,9,2,13,1,6,1,29,1,6,2,29,1,28,1,27,1,29,1,6,1,27,1,28,1,6,1,27,1,6,1,13,1,6,2,29,1,27,1,29,1,6,1,29,1,28,1,27,1,29,1,6,1,9,1,13,1,8,1,13,1,8,2,13,4,8,1,6,1,13,1,9,2,13,2,9,1,11,1,9,2,11,1,9,1,16,1,9,1,11,1,9,1,6,1,9,1,16,1,17,3,16,1,17,2,16,1,17,1,16,1,13,1,9,1,16,1,10,1,9,3,13,1,6,1,29,1,28,1,27,2,28,1,27,26,28,8,29,36,},
{6,1,13,15,6,1,13,2,6,34,29,1,6,3,29,3,6,2,29,2,27,2,29,1,9,1,16,4,17,3,16,1,11,1,9,3,11,2,16,1,17,6,11,1,9,2,13,1,29,1,6,2,9,1,11,2,17,3,11,1,9,1,16,1,11,2,9,2,13,1,9,1,11,1,13,1,9,1,13,1,9,3,13,1,8,3,13,4,6,1,29,1,6,1,29,3,27,2,6,1,29,2,6,1,27,1,13,1,28,2,29,3,27,2,29,2,13,1,6,1,8,1,13,1,9,1,13,4,9,1,6,1,13,2,9,2,6,1,13,1,9,4,11,1,16,2,11,2,9,2,11,2,17,5,9,1,16,1,17,1,16,1,9,1,11,1,17,1,11,1,9,1,13,1,6,1,29,2,6,1,29,1,27,1,29,1,28,1,27,27,28,7,29,36,},
{6,2,13,16,6,39,29,3,6,2,29,2,27,3,13,1,16,5,11,1,9,2,16,1,17,3,16,2,17,7,11,2,17,1,16,1,10,1,9,1,13,2,9,1,8,1,13,1,9,3,11,1,16,1,9,3,11,1,9,1,13,2,9,1,13,1,9,2,13,2,6,1,13,1,6,1,13,2,9,1,13,2,29,1,6,1,13,1,29,4,27,1,29,3,6,1,27,1,8,1,29,1,28,1,29,1,28,1,29,1,28,2,29,2,13,1,6,1,13,8,6,1,13,6,9,2,16,1,11,2,16,3,9,1,13,1,16,1,17,2,16,1,17,1,16,1,11,1,16,3,9,4,17,2,16,1,9,1,6,1,29,2,13,1,8,1,13,1,6,1,29,1,27,28,28,7,29,35,},
{6,2,13,16,6,39,29,6,28,1,27,3,6,1,9,2,11,1,17,1,9,3,11,1,17,13,11,3,9,5,11,1,9,2,11,2,9,1,11,2,9,2,11,2,9,1,13,2,11,1,13,1,9,1,13,3,6,1,13,1,6,1,13,3,29,3,13,1,27,2,28,1,29,2,27,1,29,1,27,1,29,2,28,1,13,1,29,1,28,2,27,1,29,1,28,1,29,2,6,2,13,3,6,1,13,5,9,1,29,1,13,1,9,3,13,2,16,1,17,1,16,1,11,1,16,3,11,1,9,2,17,5,16,1,17,1,11,1,9,1,13,1,11,1,17,1,9,1,11,2,9,2,13,1,29,1,27,2,29,1,6,1,28,1,27,30,28,6,29,35,},
{6,2,13,16,6,15,13,7,6,17,29,6,28,1,27,3,29,1,9,1,11,1,16,2,11,1,16,1,17,15,9,2,13,2,9,1,13,1,9,4,11,1,17,2,9,1,13,1,9,3,11,1,9,1,13,2,9,2,6,1,13,3,6,2,13,4,8,1,6,1,29,3,27,1,29,2,27,1,29,3,27,1,29,4,28,1,27,3,6,1,27,1,28,1,27,1,6,2,8,1,9,1,13,1,29,1,6,1,29,1,6,1,13,2,16,1,28,1,13,1,9,1,13,1,9,1,13,2,17,1,16,1,11,1,16,1,11,1,16,4,17,3,11,2,13,1,6,2,13,1,9,2,17,3,9,1,13,1,9,1,11,2,13,1,29,1,28,1,27,34,28,5,29,35,},
{29,1,6,2,13,16,6,12,13,9,6,17,29,6,27,4,28,1,13,1,16,3,17,11,16,2,11,1,16,2,17,1,11,2,9,1,11,2,13,1,9,1,11,1,9,3,11,1,16,1,11,1,9,1,11,2,9,1,11,1,13,3,9,2,6,1,13,3,6,2,13,4,9,1,13,1,6,1,29,3,6,1,29,1,27,1,29,3,28,1,29,2,6,1,28,2,29,1,27,2,29,1,27,3,6,1,13,4,6,1,29,2,6,1,13,2,9,1,6,1,13,1,8,1,13,3,9,1,11,1,9,2,16,1,9,1,16,1,9,1,16,1,11,1,9,1,16,1,17,1,16,1,11,1,9,1,11,1,17,1,11,5,17,1,16,1,11,1,9,2,13,4,29,1,27,33,28,6,29,34,},
{29,1,6,2,13,17,6,9,13,1,6,2,13,8,6,17,29,5,28,1,27,4,28,1,6,1,9,1,17,12,16,1,11,7,17,1,9,1,13,2,6,1,9,1,29,2,13,1,11,1,9,3,13,1,11,1,9,1,13,1,11,1,9,2,13,2,9,1,13,1,9,3,29,1,6,1,29,1,9,1,8,1,13,1,9,1,13,1,6,1,29,1,6,2,29,1,28,1,27,1,13,1,27,2,28,1,27,1,29,2,27,2,29,1,27,2,28,1,27,2,29,1,13,2,29,2,13,2,29,1,6,1,13,2,9,1,29,1,6,2,9,2,13,2,9,1,13,1,11,1,9,1,11,1,9,1,17,1,9,2,13,1,17,2,9,1,11,1,17,2,11,1,9,1,11,1,9,1,17,8,9,1,13,2,11,1,13,1,27,33,28,6,29,34,},
{6,4,13,10,6,1,13,1,6,11,13,14,6,13,29,8,27,6,29,1,13,1,11,1,17,11,16,1,9,1,11,1,17,1,16,1,13,1,9,1,16,2,9,1,13,3,6,1,9,1,13,1,29,1,13,1,6,1,9,1,13,1,9,3,16,1,29,1,16,1,17,1,13,2,11,1,13,2,17,1,11,1,13,2,6,1,9,2,17,1,29,4,9,1,29,1,28,1,29,2,6,1,29,1,27,1,13,1,27,1,29,2,28,1,27,3,29,2,27,2,7,1,13,2,27,1,29,1,13,1,29,1,27,1,29,1,9,1,13,1,6,1,13,1,6,1,13,4,6,1,11,1,9,1,6,1,13,1,11,1,9,1,17,1,9,1,13,1,17,2,16,1,9,2,17,2,9,1,17,1,11,1,17,2,13,1,29,1,13,1,11,1,16,1,17,4,8,2,16,1,29,1,27,34,28,3,29,35,},
{6,5,13,9,6,15,13,11,6,1,13,1,6,13,29,7,27,5,28,1,29,1,13,1,9,1,11,1,17,10,16,2,17,3,11,2,16,1,17,1,11,1,9,1,13,5,6,1,9,2,17,1,13,1,29,1,11,1,13,1,17,1,29,1,16,1,9,2,13,1,11,1,13,2,11,2,9,2,13,3,11,1,6,1,29,1,6,2,9,1,29,3,27,1,6,1,27,1,28,1,6,1,29,1,6,1,29,2,27,4,29,1,27,1,29,1,6,1,9,1,28,1,27,2,6,1,27,2,29,1,9,1,6,2,8,1,13,2,29,1,13,2,9,1,29,1,13,1,6,2,29,1,9,1,11,1,9,2,17,2,16,2,17,1,9,1,13,1,9,1,13,4,9,3,11,1,17,4,9,2,12,1,13,1,27,35,28,4,29,34,},
{29,1,6,4,13,7,6,17,13,12,6,14,29,7,27,6,29,1,13,2,9,1,11,1,16,1,17,12,16,1,11,1,17,1,16,1,11,1,9,2,11,1,9,2,13,1,9,7,13,2,16,1,9,1,13,1,17,1,16,2,11,1,13,1,9,1,11,2,9,2,11,1,13,2,9,1,13,1,29,1,13,3,6,2,29,1,27,1,29,1,27,1,29,1,6,1,28,1,29,3,28,1,29,1,28,2,29,1,28,1,29,2,13,1,27,1,28,1,29,5,8,1,29,2,6,3,9,2,13,1,29,1,17,1,27,1,13,2,27,1,16,1,6,1,11,1,9,1,17,1,13,2,9,1,13,1,9,1,11,1,13,1,9,2,13,3,9,3,11,1,9,1,16,1,9,1,13,1,11,2,28,1,27,36,28,3,29,34,},
{29,2,6,3,13,6,6,19,13,13,6,13,29,6,27,7,29,1,13,3,11,1,17,12,16,1,11,1,16,1,17,1,16,1,9,2,16,2,9,5,13,2,9,1,17,1,13,2,11,1,9,1,13,3,11,1,9,1,13,1,9,1,11,1,16,1,11,1,13,1,16,1,17,1,9,1,13,2,29,1,13,1,6,1,29,1,13,1,8,1,29,2,27,2,28,1,29,2,6,1,29,2,28,2,27,2,28,1,29,3,6,1,27,1,29,1,6,1,27,1,29,1,13,2,9,1,6,1,29,3,6,1,13,1,29,1,6,1,11,1,29,1,28,1,11,1,13,2,29,1,13,2,17,1,9,2,17,1,13,1,9,1,17,1,11,1,9,1,13,3,9,6,11,1,17,1,9,1,11,1,9,1,29,1,27,37,28,5,29,32,},
{29,2,6,4,13,3,6,7,29,1,6,15,13,12,6,12,29,6,27,7,28,1,29,1,6,1,29,1,9,1,17,9,16,2,17,2,16,1,9,1,16,1,17,1,11,1,9,2,11,1,17,1,9,3,16,1,9,2,13,1,11,1,17,2,9,1,17,1,13,1,9,1,29,1,17,1,13,1,6,1,13,1,9,1,16,1,17,1,9,1,16,1,17,1,16,1,9,1,13,1,29,1,6,2,29,1,8,1,9,1,29,1,6,1,28,1,27,2,29,1,6,2,29,2,28,2,27,2,29,1,13,1,29,3,27,3,28,1,6,1,13,1,11,1,9,1,6,1,29,1,6,1,29,1,13,1,28,1,13,1,9,1,29,2,13,2,6,1,9,2,13,1,16,1,11,1,13,1,17,1,13,1,17,1,16,1,9,1,11,1,13,2,9,1,13,2,16,2,9,2,17,1,16,1,17,2,16,1,6,1,27,39,28,4,29,32,},
{29,3,6,3,13,2,6,8,29,8,6,8,13,13,6,11,29,1,6,1,29,4,27,8,29,3,13,1,9,1,16,1,17,7,16,5,11,1,9,1,11,1,17,1,11,1,13,1,9,1,17,1,11,2,13,3,9,4,11,1,17,1,9,1,16,1,13,1,9,1,16,1,28,1,29,1,9,1,11,2,17,5,9,1,13,1,28,1,29,1,6,1,13,1,9,1,13,2,6,1,29,1,27,2,28,1,13,1,6,1,29,4,27,2,6,1,13,1,29,1,27,1,29,1,27,3,13,1,9,1,13,1,17,1,13,1,29,1,28,1,13,1,9,1,29,1,9,1,6,1,13,1,29,2,13,2,28,1,9,1,13,1,9,1,13,4,9,2,17,1,13,1,29,1,9,5,16,1,17,4,16,1,17,2,13,1,28,1,27,39,28,4,29,32,},
{29,3,6,4,13,1,6,6,29,10,6,8,13,14,6,12,29,4,28,1,27,6,28,1,29,3,6,1,13,2,11,1,17,8,11,1,9,1,11,1,16,1,9,2,17,2,9,2,16,1,11,1,9,1,13,1,29,2,13,1,9,2,13,1,16,2,9,1,13,1,9,1,16,1,13,1,29,1,6,1,13,1,16,3,17,4,11,1,6,1,29,2,6,2,13,3,6,1,29,4,8,1,13,1,6,1,13,1,29,1,28,1,27,2,29,1,13,1,29,1,27,2,29,1,27,1,29,1,8,1,9,1,8,1,10,1,13,1,6,1,29,1,10,1,6,2,27,1,29,1,6,2,27,1,29,1,9,1,6,1,28,1,29,1,28,1,6,1,13,1,11,1,13,1,11,1,17,1,9,3,13,1,11,1,29,1,9,1,16,1,17,4,9,1,17,2,16,1,29,1,27,41,28,4,29,31,},
{29,3,6,10,29,11,6,8,13,15,6,11,29,4,28,1,27,6,28,1,29,1,6,1,29,1,6,3,13,1,16,1,17,7,16,1,11,1,17,1,9,1,16,1,17,1,16,3,11,2,17,1,9,3,17,1,16,1,9,1,13,1,9,1,29,1,6,1,9,1,13,1,29,1,13,1,29,1,17,1,6,1,29,1,17,2,16,1,17,1,16,1,17,2,9,1,29,1,13,1,29,3,6,1,13,1,6,2,27,1,13,1,29,1,6,1,13,3,8,1,6,1,29,1,27,1,28,1,27,1,6,1,28,1,27,2,29,1,27,1,29,1,13,1,16,2,13,2,6,3,29,1,27,1,29,1,6,1,27,2,28,1,13,1,27,1,29,3,9,1,13,1,9,1,13,1,11,1,9,3,13,1,9,1,16,1,6,1,11,1,16,2,9,1,13,1,6,1,13,1,9,2,11,1,13,1,27,1,28,1,27,40,28,3,29,27,6,5,},
{29,3,6,6,29,18,6,6,13,21,6,2,29,7,28,1,27,5,29,5,6,1,11,1,9,1,6,1,9,1,17,4,9,1,11,1,17,1,11,1,13,1,9,1,11,1,17,1,16,1,11,3,9,1,13,2,6,1,13,1,9,1,16,1,17,1,11,1,13,2,17,1,13,2,9,1,13,1,29,1,13,1,9,1,6,1,29,1,17,2,16,1,17,1,16,1,17,1,16,1,29,1,6,1,13,2,28,1,13,2,6,1,29,1,28,1,29,2,13,2,9,1,13,1,29,3,28,2,29,1,28,1,29,1,27,1,28,1,27,1,29,3,16,1,13,1,9,2,13,1,6,1,28,1,29,4,27,1,28,1,29,1,13,1,28,1,6,2,29,1,11,1,6,1,13,1,9,1,13,3,11,1,13,1,11,1,13,1,9,1,16,1,9,1,13,1,9,1,11,3,16,2,9,1,29,1,27,45,28,4,29,18,6,2,29,1,6,7,},
{29,3,6,5,29,19,6,6,13,23,6,4,29,4,27,4,28,1,29,1,6,3,29,1,6,1,13,1,8,1,13,1,9,1,17,1,16,1,11,1,9,1,13,1,9,1,16,1,9,1,13,2,9,1,11,1,16,3,9,1,13,1,9,2,13,4,9,2,29,1,13,1,9,3,13,3,6,4,13,1,11,1,16,1,17,2,16,1,11,1,13,3,6,1,27,1,13,3,6,1,29,3,6,1,9,1,13,1,6,2,13,1,29,6,27,3,29,2,11,1,17,1,6,1,13,1,8,1,13,1,6,1,29,1,28,1,27,1,29,1,6,1,27,1,28,1,29,2,27,2,13,2,9,1,6,3,29,1,6,1,17,1,29,1,16,1,10,1,6,1,13,1,9,1,11,1,16,2,9,5,13,1,29,1,27,45,28,5,29,15,6,12,},
{29,3,6,5,29,9,28,1,29,9,6,6,13,23,6,6,29,2,27,5,29,1,13,1,9,1,13,6,9,3,8,1,6,2,13,2,9,1,13,3,9,4,13,2,9,1,13,2,9,2,13,3,9,1,6,1,13,3,9,1,6,1,9,1,13,1,29,2,13,2,11,1,17,1,16,1,17,1,16,1,9,1,13,1,9,1,13,1,6,1,28,1,29,1,13,3,29,1,13,1,6,2,8,1,13,2,29,1,13,1,6,2,29,3,27,1,28,1,27,2,28,1,13,1,10,1,16,1,9,2,13,1,29,1,28,1,13,1,27,1,28,1,29,1,28,1,6,1,13,1,29,3,28,1,13,1,28,1,27,1,6,2,29,1,13,1,6,1,13,1,11,1,9,1,6,1,13,2,9,1,11,1,10,1,13,1,29,2,6,1,13,2,6,1,29,1,28,1,27,44,28,5,29,15,6,12,},
{6,8,29,8,28,3,29,9,6,5,13,28,6,2,29,1,27,5,29,1,10,1,17,1,11,1,9,1,13,5,6,1,13,1,6,1,29,1,6,2,29,1,13,4,9,2,13,3,9,3,13,2,11,2,9,1,11,1,9,1,13,1,28,1,9,1,16,2,9,1,29,1,11,1,6,1,29,1,13,2,11,1,17,3,16,1,9,1,13,2,6,2,29,2,13,3,6,1,9,1,13,2,9,1,11,2,6,1,13,1,29,1,13,1,6,1,29,1,13,1,29,1,27,3,29,2,9,1,13,1,8,2,13,1,6,1,27,1,29,2,27,4,29,2,27,3,29,3,9,2,29,2,28,1,13,1,9,1,27,1,9,1,13,1,9,1,8,1,9,2,13,1,29,2,28,1,27,1,6,1,29,2,28,1,27,44,28,5,29,15,6,12,},
{6,2,29,12,28,7,29,8,6,4,13,29,6,2,27,5,29,1,9,3,13,1,6,2,13,2,29,1,28,1,29,2,28,1,6,2,29,1,6,1,13,1,6,1,13,1,9,3,13,4,11,1,9,1,13,4,9,1,11,1,13,3,9,1,17,1,9,2,13,2,6,2,13,2,9,1,17,3,16,1,13,2,6,4,13,3,6,1,9,1,13,2,17,1,11,1,9,1,13,2,29,1,13,1,9,1,13,2,6,1,27,3,29,2,6,1,8,1,17,1,9,1,29,1,27,2,6,1,27,4,9,1,13,1,29,1,6,1,13,1,6,1,27,1,29,2,28,2,27,2,29,1,28,1,29,1,13,1,6,1,10,1,9,2,13,2,6,1,29,1,28,1,27,2,28,2,27,46,28,5,29,15,6,12,},
{6,3,29,10,28,11,29,5,6,4,13,29,6,2,29,1,27,4,28,1,29,7,28,2,29,1,28,2,29,1,6,1,29,3,13,5,9,1,13,3,6,1,13,1,9,1,13,1,6,1,13,1,29,2,13,1,16,1,6,2,29,1,6,1,16,1,11,1,13,1,9,1,6,2,13,1,9,2,17,1,16,1,17,2,9,1,13,1,6,2,29,1,9,2,13,2,6,1,9,1,13,2,9,3,13,1,11,1,13,3,9,1,28,1,27,1,29,1,6,1,27,1,6,1,9,1,16,1,9,2,6,3,28,1,27,1,29,3,27,3,29,1,27,2,28,2,6,1,9,1,29,3,6,1,27,1,28,1,27,1,13,3,9,1,11,1,13,1,29,3,27,2,28,1,27,48,28,6,29,14,6,10,13,2,},
{6,3,29,9,28,12,29,6,6,3,13,29,6,2,29,1,27,5,29,1,28,1,29,4,27,3,28,1,27,1,28,1,29,2,28,2,29,1,13,1,9,1,13,1,29,1,13,5,29,2,13,4,6,1,29,1,13,1,9,2,13,1,29,1,6,1,13,2,9,2,13,2,9,1,11,2,16,1,17,3,9,1,13,1,6,2,29,1,13,5,9,1,13,1,9,1,13,1,9,1,11,1,9,1,16,1,11,1,13,1,29,1,13,1,29,1,28,2,29,1,13,1,16,1,13,1,9,2,16,1,13,1,6,1,29,3,27,1,13,2,29,2,13,1,29,1,27,1,29,1,6,2,29,3,6,1,13,1,29,2,27,3,6,1,9,1,29,1,13,2,6,3,29,1,28,1,27,49,28,6,29,16,6,7,13,3,},
{6,3,29,9,28,12,29,6,6,3,13,16,9,3,13,10,6,3,28,1,27,4,29,2,13,1,29,1,27,3,28,1,27,4,29,1,28,1,27,1,28,1,29,1,13,2,6,2,13,3,6,2,13,2,9,2,13,3,11,1,9,2,13,2,9,1,13,1,9,1,6,1,13,1,9,2,13,2,9,1,16,2,17,2,16,1,13,2,6,1,13,1,6,1,13,1,29,2,13,2,11,1,9,1,11,3,9,1,11,1,9,1,13,1,6,1,13,1,16,1,6,1,28,1,29,1,27,1,13,1,11,1,6,1,13,3,6,1,29,1,28,1,29,2,6,1,29,1,27,2,29,1,13,1,6,1,13,1,29,1,27,1,29,1,27,1,29,1,27,1,28,1,6,1,27,1,28,1,27,2,6,2,29,1,8,1,13,1,6,1,28,1,27,1,28,1,29,1,28,1,27,49,28,6,29,17,6,6,13,3,},
{6,2,29,7,28,16,29,5,6,3,13,17,9,8,13,5,6,1,29,1,27,6,29,2,27,5,28,2,27,1,28,1,29,1,28,1,27,2,28,1,13,1,29,1,6,2,13,2,6,2,13,1,9,1,13,2,6,2,13,2,6,2,13,1,9,3,11,1,16,2,13,3,9,2,13,1,11,1,17,3,16,1,13,1,11,1,13,2,6,1,29,1,6,1,13,2,9,4,11,1,16,3,9,1,13,4,29,2,28,1,29,1,6,1,13,3,9,1,13,2,29,2,27,1,29,1,27,1,28,1,29,1,28,1,29,1,28,1,27,1,29,1,27,5,29,3,28,1,27,3,29,2,27,2,29,1,28,1,27,3,28,1,29,2,27,47,28,8,29,14,6,7,13,4,},
{6,2,29,6,28,17,29,4,26,1,6,4,13,16,9,8,13,5,6,1,29,1,27,6,28,1,27,7,29,1,28,1,27,3,28,1,27,1,28,1,6,1,29,2,6,5,13,9,9,4,13,2,9,1,11,1,9,1,16,1,9,1,13,1,9,1,11,2,13,1,16,1,11,1,17,1,9,2,13,1,6,2,13,3,6,1,9,3,11,1,9,1,16,1,9,1,17,1,13,1,9,1,13,1,11,1,9,1,13,2,29,2,6,1,13,1,10,1,16,1,9,1,13,1,29,2,28,1,29,2,27,1,6,1,8,1,13,1,29,1,28,1,29,1,13,1,29,4,27,5,28,1,29,1,27,4,29,1,27,7,28,1,27,47,28,8,29,14,6,7,13,4,},
{6,2,29,6,28,17,29,4,26,1,6,4,13,16,9,7,13,6,6,1,29,1,27,14,28,1,27,4,28,3,29,1,6,1,13,3,6,1,13,3,6,1,29,2,6,1,13,1,9,3,13,3,9,6,16,1,11,3,9,1,11,1,13,1,11,1,9,1,17,1,9,2,13,7,9,2,11,1,16,1,11,1,16,1,13,1,16,1,13,1,16,1,9,2,13,1,29,1,13,1,29,3,13,1,9,1,11,1,13,1,6,2,9,1,8,1,13,1,29,1,9,1,6,1,29,4,6,1,29,1,28,2,27,3,29,5,28,1,27,60,28,7,29,15,6,7,13,4,},
{6,2,29,6,28,17,29,5,6,5,13,15,9,7,13,6,6,1,29,1,27,19,28,3,6,1,29,1,6,1,13,2,29,1,13,2,6,1,13,1,6,1,29,2,6,1,13,3,11,2,9,1,11,2,9,2,13,1,9,1,16,2,17,1,11,1,9,2,11,1,16,1,9,2,13,2,11,1,13,1,9,1,29,1,13,1,9,5,11,1,17,1,11,1,9,3,11,1,9,2,13,1,29,1,6,2,29,1,13,2,6,2,29,3,6,1,13,2,6,1,29,1,27,1,28,1,29,2,13,3,8,1,13,1,28,2,27,1,28,3,27,2,28,1,29,2,27,58,28,7,29,15,6,7,13,4,},
{29,8,28,17,29,5,6,6,13,14,9,7,13,6,6,1,29,1,27,19,28,3,6,1,29,2,13,2,6,1,13,1,9,1,13,1,11,1,9,1,13,1,6,3,13,3,9,1,11,1,9,1,13,2,11,1,17,1,13,1,11,1,9,1,13,2,9,1,16,1,9,2,13,4,9,1,13,2,29,1,13,3,9,2,13,1,9,1,11,2,16,1,9,2,13,1,9,1,11,1,10,1,13,1,6,3,13,1,29,2,13,1,29,4,13,1,6,1,29,3,6,2,29,2,6,4,29,2,28,1,29,3,27,1,28,2,29,1,27,59,28,6,29,18,6,6,13,3,},
{29,8,28,17,29,5,6,6,13,14,9,7,13,6,6,1,29,1,27,19,29,2,28,1,29,3,13,4,9,3,13,1,6,3,13,1,9,2,11,1,17,3,16,2,17,2,16,1,17,4,16,2,11,1,13,2,9,3,13,5,6,1,13,1,9,1,11,1,9,5,11,1,13,1,11,1,9,1,11,1,9,1,13,1,6,3,13,1,6,2,13,1,6,1,28,1,6,1,13,1,9,1,13,1,29,1,13,1,6,2,13,1,9,2,13,1,6,3,29,2,27,3,28,1,29,2,28,1,27,2,28,1,27,56,28,7,29,18,6,6,13,3,},
{29,8,28,6,27,2,28,9,29,5,6,6,13,14,9,7,13,6,6,1,27,19,28,1,29,1,28,2,29,3,6,1,13,5,6,3,13,1,9,1,11,1,16,1,17,1,11,1,16,1,17,13,16,1,13,1,9,3,11,1,13,1,9,1,13,3,6,1,13,2,9,5,13,1,9,2,16,1,9,1,13,2,9,1,13,3,9,1,6,1,13,1,29,4,6,1,9,1,16,1,17,6,11,1,13,1,29,1,13,2,6,1,29,1,27,3,28,1,27,1,29,2,27,59,28,7,29,19,6,6,13,2,},
{29,8,28,6,27,2,28,9,29,5,6,8,13,12,9,7,13,6,6,1,27,17,28,1,29,3,27,1,28,1,6,1,29,1,6,2,13,1,8,1,13,2,9,1,13,3,9,1,16,1,17,7,9,1,13,1,6,2,16,1,17,1,9,1,13,1,11,1,17,2,16,1,13,1,9,1,13,2,9,1,6,1,11,1,13,1,29,1,13,3,6,1,13,1,6,1,13,1,11,1,9,2,13,1,11,1,9,1,13,1,6,1,13,1,9,1,13,1,6,1,13,2,27,1,28,1,29,3,6,1,17,7,16,1,17,6,9,1,8,1,7,1,6,1,28,1,27,1,29,1,28,1,27,60,28,6,29,20,6,6,13,2,},
{29,8,28,18,29,5,6,5,13,27,6,1,27,21,29,1,6,1,13,3,9,2,13,1,9,5,16,1,11,1,13,1,17,3,23,1,26,1,29,1,7,1,29,3,11,1,17,3,13,1,29,2,23,1,17,2,29,1,6,1,9,1,6,1,9,1,13,1,29,1,6,1,29,1,6,1,29,1,13,3,9,1,11,1,13,1,9,1,6,1,9,1,13,1,9,2,13,1,11,1,13,1,6,1,13,1,28,1,6,2,27,1,6,1,8,1,17,2,9,1,13,1,17,4,28,1,27,1,28,1,27,2,26,1,29,1,17,2,6,2,13,2,29,1,6,3,29,3,27,54,28,9,29,18,6,8,},
{29,8,28,18,29,5,6,8,13,1,6,1,13,21,6,2,29,1,27,16,28,3,29,1,13,1,9,1,13,1,9,1,11,1,16,1,11,1,9,4,17,1,9,2,13,1,6,1,17,1,9,1,13,1,29,1,26,1,29,1,28,1,27,1,6,1,17,6,29,2,25,1,23,1,14,1,9,1,28,1,11,1,6,1,13,1,29,1,13,1,29,1,6,2,29,1,13,3,9,2,13,1,16,1,9,2,13,1,9,1,11,1,6,1,9,1,6,1,29,1,28,2,29,1,27,2,12,1,17,1,23,1,29,2,9,1,17,5,27,2,28,1,27,3,7,1,17,1,29,1,27,1,28,1,29,1,6,1,13,2,6,3,29,1,28,1,29,1,27,52,28,10,29,17,6,8,},
{29,8,28,18,29,5,6,10,13,21,6,2,29,1,27,11,28,4,27,1,28,1,27,1,28,1,6,1,10,2,13,1,9,1,11,1,16,1,11,1,9,2,13,2,8,1,13,4,17,2,6,1,26,2,28,2,29,2,13,1,17,5,6,1,27,1,29,1,24,1,23,1,17,1,29,1,13,1,29,1,13,1,29,1,6,3,29,2,6,1,11,1,13,2,9,1,13,1,17,1,9,2,13,2,11,1,13,2,29,2,27,1,29,1,27,2,9,1,17,1,15,1,28,1,27,2,10,1,17,5,23,1,27,5,29,1,17,1,13,1,27,3,28,1,29,3,6,3,29,2,28,1,27,51,28,13,29,14,6,8,},
{29,10,28,16,29,5,6,11,13,19,6,3,29,1,27,11,28,5,29,3,13,1,16,1,11,1,13,1,11,1,16,2,11,1,9,3,13,1,6,1,13,1,6,1,13,2,17,2,7,1,26,1,29,1,26,1,29,1,27,4,17,4,9,1,27,1,26,1,7,1,9,1,17,1,11,1,27,1,29,1,13,1,6,1,29,1,6,1,29,3,6,1,9,1,13,2,9,1,13,1,9,1,13,6,6,1,28,1,29,1,27,3,6,1,17,2,23,1,27,4,17,6,27,5,23,1,17,1,13,1,28,1,27,5,28,1,29,1,6,2,29,2,28,1,27,51,28,15,29,15,6,5,},
{29,11,28,15,29,6,6,11,13,18,6,2,29,1,28,1,27,12,28,3,29,4,13,1,9,2,13,1,9,3,8,1,13,1,9,2,13,1,6,1,29,1,28,1,6,1,13,1,16,1,17,1,29,1,28,2,29,2,8,1,17,1,9,2,17,5,27,1,29,1,7,1,17,3,29,2,6,1,29,4,6,1,29,1,6,2,13,1,9,2,13,2,6,1,13,1,9,2,13,1,6,1,29,1,27,2,28,1,27,2,16,1,17,2,28,1,27,2,23,1,17,7,27,5,17,1,10,1,13,1,29,1,27,6,28,1,29,2,28,1,29,2,28,1,27,50,28,16,29,2,28,1,29,12,6,4,},
{29,12,28,14,29,5,6,2,29,1,6,10,13,16,6,2,29,2,27,13,28,3,29,5,6,3,13,7,6,1,28,1,27,2,29,1,13,1,9,1,17,1,13,1,6,1,26,1,25,1,28,1,29,1,17,8,28,2,6,1,15,1,16,1,17,1,9,1,27,1,6,1,29,2,6,1,27,1,29,2,6,2,13,4,9,1,13,2,9,1,13,1,6,1,29,1,6,1,28,1,27,1,28,1,27,1,6,1,17,3,27,3,26,1,17,7,27,1,28,1,27,3,17,1,6,1,7,1,28,1,27,7,28,2,27,2,28,2,27,50,28,19,29,12,6,4,},
{29,13,28,14,29,8,6,10,13,11,6,2,13,1,6,3,29,2,27,12,28,1,29,3,6,2,29,2,6,3,13,1,6,1,13,3,9,2,13,1,29,2,27,3,6,2,17,1,8,1,29,4,6,1,17,7,8,1,29,1,28,1,6,1,9,1,17,3,27,1,29,1,13,1,28,1,29,1,27,2,28,1,29,1,13,1,6,1,29,1,6,1,29,1,13,3,9,1,13,2,29,1,6,1,29,1,27,1,29,1,28,1,17,4,27,4,17,7,27,1,28,1,27,2,28,1,17,1,29,1,6,1,27,8,28,2,27,54,28,20,29,13,6,2,},
{29,13,28,14,29,9,6,9,13,11,6,5,29,3,27,11,28,1,29,4,13,1,29,5,6,1,13,1,29,1,6,1,13,2,9,1,13,1,6,1,27,1,29,1,27,3,6,2,17,1,8,1,29,1,26,3,29,1,13,1,17,6,29,1,27,1,28,1,29,1,9,1,17,3,13,1,27,1,13,1,27,3,29,2,27,1,29,1,6,3,28,1,29,1,6,1,13,2,6,1,13,1,29,1,28,1,27,1,28,3,17,3,9,1,29,1,27,3,23,1,17,5,12,1,28,1,27,2,29,1,15,1,12,1,6,1,9,1,27,64,28,21,29,12,6,2,},
{29,2,6,2,29,18,28,1,29,8,6,1,29,8,28,1,29,1,6,5,13,5,6,6,29,7,27,12,28,1,29,3,13,2,29,3,6,1,29,3,13,1,6,2,13,3,29,1,6,1,27,3,9,3,29,1,6,1,29,3,6,1,16,1,17,4,6,1,28,2,29,1,23,1,17,3,16,1,13,1,29,1,6,3,27,2,28,1,29,4,28,1,29,2,6,1,9,1,13,2,6,1,13,1,28,1,7,1,27,2,6,1,17,4,8,1,27,3,29,1,14,1,17,4,28,1,27,1,28,1,29,2,17,1,29,3,27,6,28,3,27,55,28,8,27,3,28,12,29,12,},
{29,2,6,3,29,27,6,2,29,4,28,3,29,1,6,4,13,5,6,5,29,9,27,9,28,1,29,12,28,1,29,1,13,1,9,1,13,2,9,1,13,2,29,3,27,2,29,1,9,1,16,1,9,1,29,5,6,1,17,3,8,1,28,1,27,1,28,1,29,1,9,1,17,3,28,1,9,1,28,1,29,1,6,1,29,1,28,1,27,2,29,2,27,1,28,1,27,1,29,1,28,1,13,1,29,1,6,1,29,1,6,1,28,1,6,1,29,1,27,1,28,1,8,1,17,5,27,5,9,1,17,2,29,1,27,2,29,2,17,1,12,1,29,1,6,1,27,7,28,2,29,1,28,1,27,55,28,7,27,3,28,13,29,11,},
{29,1,6,9,29,22,6,2,29,3,28,1,27,2,28,1,29,1,6,2,13,1,6,1,13,4,6,4,29,11,27,7,28,2,29,3,6,1,29,2,13,1,6,1,29,6,6,1,13,1,11,1,9,2,10,1,9,1,13,1,6,1,29,2,27,1,29,1,27,1,13,1,16,1,23,1,17,1,8,1,29,1,28,2,29,2,6,1,28,1,27,2,28,1,6,1,23,1,17,5,9,1,29,2,28,1,27,1,28,1,27,2,29,1,27,3,29,4,6,1,29,1,6,1,13,1,27,1,6,1,27,1,25,1,28,1,6,1,16,1,17,4,24,1,27,3,28,1,27,4,28,1,29,2,17,1,12,1,29,1,6,1,29,1,27,6,28,1,27,59,28,9,27,4,28,2,27,5,28,4,29,10,},
{29,1,6,10,29,5,28,1,29,11,6,1,13,1,6,4,29,2,28,1,27,4,29,2,6,3,13,3,6,3,29,13,27,6,28,1,29,5,6,2,13,2,6,1,29,1,28,1,27,1,28,1,29,1,13,1,6,1,13,1,8,1,13,4,6,1,13,1,29,1,28,1,29,1,27,2,28,1,6,1,17,3,7,1,28,2,27,1,29,1,28,2,27,2,29,1,12,1,17,5,11,1,17,1,29,1,28,1,29,1,27,1,29,1,27,2,29,1,27,3,13,1,6,2,29,1,13,1,6,1,13,2,29,2,27,1,14,1,27,2,9,1,17,5,23,1,27,6,29,1,26,1,6,1,17,1,15,1,6,1,29,1,6,1,27,4,29,1,27,1,28,1,29,4,27,57,28,5,27,4,28,3,27,7,28,4,29,10,},
{28,1,29,1,6,4,13,1,6,4,29,5,28,1,29,10,6,1,13,1,8,1,13,1,6,3,29,1,28,1,27,4,28,1,29,1,6,5,13,1,6,3,29,5,28,2,29,7,28,1,27,5,29,6,6,2,13,2,6,1,29,1,27,2,28,1,29,1,13,2,6,2,13,2,6,3,13,2,6,1,13,1,28,1,27,3,6,1,17,1,9,1,12,1,9,1,6,1,13,1,6,1,29,3,24,1,17,4,11,1,9,1,11,1,6,1,8,1,29,2,28,2,29,7,13,2,29,1,13,1,6,1,13,3,6,2,27,1,8,1,27,2,13,2,27,1,28,1,6,1,23,3,8,1,29,2,26,1,23,1,8,1,12,1,17,1,23,1,13,1,29,2,27,11,28,2,27,65,28,4,27,7,28,5,29,8,},
{27,1,29,4,6,1,13,1,6,4,29,3,28,5,29,5,6,1,29,2,6,1,9,1,14,1,9,1,13,1,6,1,29,2,27,5,29,2,6,6,29,17,28,1,27,5,28,1,27,1,28,1,29,2,6,4,13,1,6,1,29,1,28,1,29,2,6,1,29,1,8,1,13,1,29,1,13,2,6,1,13,7,6,1,29,1,27,2,6,1,12,1,9,1,17,3,14,2,15,2,17,2,23,1,6,1,28,2,13,1,29,2,13,2,28,1,6,1,28,1,29,1,13,2,6,2,13,1,6,2,13,1,6,1,13,4,9,2,10,1,29,1,6,2,29,1,13,1,9,1,27,4,28,1,29,1,6,1,29,1,15,1,23,1,8,1,17,1,12,1,29,2,27,7,29,1,27,1,28,1,29,1,28,1,27,2,29,3,27,65,28,1,27,15,28,2,29,5,},
{27,1,28,1,29,3,6,2,29,1,6,2,29,3,28,6,29,5,6,1,29,2,13,1,14,3,9,1,6,1,29,2,27,5,29,2,6,4,29,19,27,8,28,1,29,2,6,2,13,2,6,1,29,1,28,2,29,4,13,2,6,1,13,6,6,2,13,1,16,1,9,1,13,1,29,1,27,3,28,1,6,2,8,1,15,1,23,1,8,1,24,1,8,1,29,1,27,1,29,1,28,1,6,1,27,1,6,1,29,1,6,1,29,1,8,1,6,1,28,1,6,1,13,2,6,1,29,4,6,2,29,1,13,1,29,1,8,2,9,1,13,1,28,1,29,2,27,2,29,1,27,19,29,2,28,1,7,1,29,3,28,1,27,89,28,4,},
{27,2,29,1,28,2,29,1,6,1,29,1,6,2,29,3,28,2,27,1,28,3,29,5,6,1,29,2,13,1,14,3,9,1,29,2,28,1,27,5,29,2,6,3,29,16,6,3,29,1,27,7,29,5,6,1,13,3,29,4,27,1,29,1,13,3,6,1,13,1,9,1,13,6,9,2,13,1,29,3,6,1,13,1,29,3,28,1,29,1,28,1,29,1,28,2,27,2,29,1,27,2,13,3,8,1,13,1,28,2,29,1,9,1,13,1,28,2,27,4,29,1,27,1,29,2,6,1,29,1,6,1,9,2,13,1,29,1,27,2,28,1,27,16,29,1,28,1,27,1,28,1,27,1,29,1,28,1,29,1,28,1,27,1,29,5,27,10,29,1,27,79,},
{27,6,6,1,13,1,29,4,27,7,28,1,29,3,6,2,29,2,13,1,14,4,29,2,27,6,29,3,6,2,29,5,28,1,29,3,6,2,13,6,6,2,29,1,27,5,28,1,27,1,29,4,6,1,13,1,6,1,29,1,13,1,29,1,27,2,28,1,27,1,28,1,29,3,6,2,13,3,9,1,13,4,6,2,13,5,6,1,28,1,29,3,27,5,29,1,27,2,6,1,29,2,6,1,13,1,6,1,29,2,13,2,6,1,29,1,27,12,13,4,6,1,27,1,28,1,27,2,28,1,27,15,29,1,27,3,28,1,27,1,28,1,29,2,28,2,27,89,28,1,27,2,},
{27,6,6,1,9,1,6,1,29,3,27,8,28,2,29,5,6,1,9,1,14,3,29,2,27,6,29,14,6,1,13,7,6,2,29,2,27,4,28,2,27,1,28,1,29,2,6,5,29,1,27,2,28,1,27,1,28,1,29,1,6,2,13,5,6,1,29,1,6,1,13,5,8,1,13,1,6,1,13,2,6,3,29,1,28,1,29,1,13,1,6,2,13,1,29,1,13,1,29,2,28,1,29,8,28,1,27,4,28,2,27,6,29,1,13,3,6,1,27,20,28,1,27,1,28,1,29,2,28,1,29,1,28,3,27,3,28,2,27,8,28,1,27,79,},
{27,6,28,1,14,1,23,1,29,1,28,2,27,8,28,1,27,1,28,3,29,3,6,1,14,2,9,1,29,1,28,1,27,6,29,13,6,1,13,4,9,1,13,5,6,1,29,1,28,1,27,3,28,1,29,4,6,6,29,1,27,2,28,3,29,2,6,1,13,2,9,1,13,3,6,2,13,3,6,4,29,2,13,2,6,3,9,1,13,2,29,2,13,1,29,1,13,1,6,1,29,2,28,1,29,3,27,1,29,3,27,13,29,2,6,1,8,1,6,1,27,22,28,1,29,1,28,2,27,1,29,3,28,2,27,91,},
{27,7,13,1,14,1,29,1,27,13,28,1,27,1,28,1,29,3,9,1,14,1,9,1,29,1,28,1,27,6,28,3,29,8,6,1,13,3,9,6,13,3,29,3,27,4,29,5,6,2,29,4,27,2,28,1,29,5,6,1,13,2,6,2,29,5,6,1,13,4,29,3,6,2,13,1,6,1,29,1,6,1,8,1,13,1,29,2,28,1,6,1,29,5,6,1,29,1,27,1,29,2,28,1,27,13,28,1,29,2,13,2,27,23,28,1,27,1,28,1,27,1,28,3,27,12,28,1,27,80,},
{27,7,29,1,14,1,6,1,27,16,29,2,28,1,13,1,16,1,9,1,29,1,28,1,27,5,28,1,27,3,28,1,29,4,13,4,9,4,11,3,9,2,13,3,6,1,29,2,27,4,29,5,6,1,13,1,6,1,29,2,28,1,27,2,28,1,29,3,28,1,29,2,6,1,13,1,6,3,13,3,6,1,29,4,13,1,6,4,13,2,6,1,9,1,6,1,28,1,27,1,29,1,6,1,29,3,27,2,29,4,28,3,27,5,29,1,27,8,28,1,29,2,13,2,28,1,27,20,28,1,27,1,29,2,6,1,29,2,28,1,27,5,28,1,27,8,28,2,27,78,},
{28,1,27,7,23,1,6,1,28,1,27,13,28,1,27,2,29,3,13,2,29,1,28,1,27,4,28,1,29,1,28,3,29,3,6,1,13,2,9,2,11,2,16,6,11,1,9,1,13,3,6,2,29,1,28,1,27,3,29,3,6,6,28,2,27,2,28,1,29,6,6,1,13,3,9,1,29,9,6,3,29,1,6,2,29,2,6,2,29,1,6,1,28,1,27,1,28,1,6,1,28,2,29,1,28,2,29,3,28,2,27,4,28,1,27,8,28,1,29,1,28,1,29,1,6,1,28,1,27,19,28,2,27,1,29,4,28,4,27,92,},
{29,1,28,1,27,6,6,1,8,1,29,1,27,8,28,2,27,3,28,1,27,2,29,3,6,1,13,1,29,2,27,1,28,3,29,6,6,1,13,3,11,1,16,10,11,1,9,1,13,2,6,2,29,2,28,1,27,3,29,9,27,4,28,1,29,3,6,2,29,4,6,1,13,1,6,1,29,5,28,1,27,1,29,3,6,1,29,4,6,1,29,2,27,1,6,1,29,3,6,1,29,3,27,2,29,1,28,1,29,3,28,1,27,13,29,1,28,3,27,20,28,1,27,2,28,2,27,5,28,2,27,91,},
{29,2,27,3,28,1,6,1,29,2,23,1,29,1,27,6,28,1,29,1,6,2,29,1,27,2,28,1,27,2,29,4,6,1,29,2,28,2,29,1,28,1,29,1,6,1,29,2,6,2,13,2,9,1,11,1,16,2,17,5,16,4,11,1,9,1,13,2,6,1,29,2,27,5,29,5,6,1,13,1,6,1,29,1,27,4,28,1,29,3,13,1,6,1,29,1,27,1,28,1,29,1,13,3,6,4,13,2,6,1,29,3,6,1,29,3,6,1,29,1,6,1,13,1,6,1,7,1,29,3,27,2,28,2,27,2,29,1,28,2,29,2,28,1,27,3,28,1,27,1,28,1,27,7,29,1,28,1,27,25,28,2,27,2,29,1,28,1,27,94,},
{6,1,13,2,29,4,6,1,29,1,13,1,23,1,29,1,27,4,29,1,27,1,29,1,14,2,13,1,29,1,28,2,27,1,28,2,6,2,29,1,6,2,29,1,27,1,29,2,6,2,13,1,9,1,13,1,6,1,13,2,14,1,17,1,16,1,29,1,16,1,17,5,16,1,11,1,16,2,9,3,13,2,6,1,29,4,28,1,27,2,29,4,6,2,29,2,27,2,28,3,29,1,6,1,13,2,6,1,29,5,13,2,6,1,13,2,6,1,13,1,29,1,27,1,28,1,29,3,6,2,29,1,28,1,8,1,6,1,29,2,13,1,29,1,6,1,27,9,13,1,29,1,27,1,29,3,28,2,27,9,29,1,27,22,29,1,27,1,28,1,29,1,28,1,27,1,28,3,29,1,28,1,27,3,28,1,27,89,},
{13,1,9,1,8,1,6,1,29,2,6,2,29,1,6,1,14,1,29,1,28,1,27,1,29,1,27,1,29,2,13,1,14,2,9,1,6,1,29,5,13,1,6,1,27,1,29,3,28,1,29,1,6,1,13,3,9,2,13,1,16,1,14,2,17,1,10,1,29,1,17,6,16,1,11,1,16,2,11,1,9,1,13,3,6,1,29,3,28,1,27,3,28,2,29,5,28,1,27,2,29,7,6,1,13,3,29,2,6,2,29,4,6,3,13,2,29,2,6,1,29,2,6,1,29,1,27,1,29,3,28,1,6,1,27,8,28,1,29,3,13,1,29,2,27,2,28,1,29,2,27,4,28,1,27,1,29,3,27,23,29,4,28,1,27,2,28,1,27,2,28,3,27,88,},
{9,1,14,2,8,1,6,4,29,1,6,1,14,2,29,1,28,1,6,1,29,3,9,1,14,3,9,1,13,1,6,1,29,2,6,1,13,1,29,1,27,2,29,1,28,1,29,1,6,1,9,4,14,1,16,2,14,1,17,1,14,1,17,1,13,2,17,7,16,3,11,1,9,1,13,3,29,5,28,1,27,4,28,1,29,2,28,1,27,2,29,6,6,1,13,1,6,1,13,1,9,3,13,1,29,1,6,1,13,4,29,1,6,3,13,1,6,1,29,1,28,1,29,3,6,1,29,1,6,1,28,1,29,1,6,1,29,1,28,2,27,6,28,1,13,1,9,2,13,1,9,1,13,2,29,2,6,1,13,1,29,1,28,1,13,1,28,1,27,1,29,1,27,1,13,1,17,1,27,23,29,2,28,1,27,2,28,2,27,6,28,1,27,1,29,1,28,1,27,85,},
{13,1,14,3,9,1,13,2,29,1,13,1,29,1,6,1,14,2,29,2,6,3,9,1,14,2,9,1,14,2,13,1,29,2,13,1,6,1,27,5,29,1,6,1,14,3,16,1,14,7,6,1,9,1,17,7,16,2,11,1,9,3,13,1,6,1,29,6,27,4,28,3,27,1,28,1,29,1,28,1,29,1,13,3,6,3,13,2,6,1,13,3,6,1,29,1,13,1,29,1,13,3,9,2,13,1,6,1,13,1,29,3,13,1,6,2,13,1,29,3,27,2,29,1,27,7,28,1,9,3,13,1,9,1,16,1,17,3,16,2,9,1,13,1,16,1,13,1,6,1,13,2,17,1,29,1,27,15,29,1,27,9,29,2,28,1,27,3,29,2,6,1,7,1,28,1,29,2,28,1,27,86,},
{13,1,15,1,14,2,9,1,13,1,9,1,6,1,13,1,29,1,6,1,14,2,29,2,13,1,6,1,13,1,14,3,15,1,14,3,9,1,13,2,29,1,27,5,28,1,6,1,14,5,16,1,14,4,9,1,29,1,16,1,17,7,16,1,9,5,13,1,6,1,29,6,28,1,27,4,28,2,29,2,6,3,29,4,13,2,9,2,13,2,11,2,9,1,13,1,9,1,13,4,9,1,13,2,9,1,13,1,6,1,29,1,6,2,29,1,13,1,29,1,13,1,29,1,27,10,29,1,28,1,6,1,11,1,16,2,17,1,16,1,17,1,16,2,11,1,9,2,13,2,6,1,9,2,17,1,29,2,27,15,13,2,9,1,29,2,6,1,13,1,9,2,13,1,6,1,29,2,28,1,29,1,27,1,28,1,29,2,7,1,29,1,13,1,29,1,27,75,28,2,27,10,},
{9,1,14,3,13,2,14,1,13,1,29,1,6,1,29,1,6,1,13,3,9,2,14,10,13,1,29,1,27,6,29,1,14,5,16,1,17,2,14,2,13,1,6,1,14,1,17,7,16,1,9,1,13,1,9,2,13,1,6,2,29,6,28,1,27,4,28,1,29,2,6,1,13,1,29,1,6,2,13,1,6,3,13,2,9,1,13,2,9,1,11,1,9,2,6,1,13,1,9,2,13,1,9,2,11,1,16,1,13,2,9,1,11,1,13,1,6,1,9,1,13,1,6,1,29,2,28,3,27,6,28,2,29,2,13,1,9,1,17,5,16,1,9,1,16,1,9,2,16,1,17,1,10,1,27,1,13,1,27,10,28,1,29,1,27,2,29,1,27,1,29,2,6,1,29,5,27,2,29,1,6,1,28,1,27,1,29,1,27,1,29,1,6,1,13,1,6,1,28,2,29,1,27,56,28,4,27,15,28,2,27,10,},
{14,4,13,2,14,1,9,1,29,1,6,1,29,1,6,1,29,1,14,14,13,1,29,1,27,6,29,1,14,4,16,1,14,1,17,3,14,1,6,1,13,1,17,7,16,1,11,1,9,3,13,1,6,1,29,8,28,1,27,4,28,1,29,1,6,2,13,1,6,6,13,1,9,1,13,1,11,1,16,1,9,1,11,4,9,2,16,1,9,1,13,1,6,3,29,1,28,2,6,1,13,1,29,1,28,1,6,1,13,2,29,2,13,1,28,1,27,9,29,2,13,2,11,1,16,1,17,2,16,2,11,2,13,1,16,1,17,1,16,1,28,1,29,1,27,12,29,1,28,1,27,7,29,3,13,2,29,3,6,1,13,2,6,1,29,2,13,4,29,1,27,54,28,1,29,3,28,2,27,14,28,3,27,10,},
{14,4,13,2,14,1,9,1,13,1,29,1,6,2,9,1,17,2,14,2,17,3,14,4,13,1,14,1,9,1,6,1,29,1,27,6,29,1,14,4,16,1,14,3,17,1,9,1,13,2,17,7,16,1,11,3,9,1,13,1,29,1,28,1,29,9,27,3,28,1,29,1,6,3,29,2,6,1,13,6,11,1,9,1,13,2,9,3,16,1,9,1,11,1,9,1,13,1,9,3,6,2,29,6,28,2,29,1,28,1,29,1,27,12,29,1,6,1,9,2,17,3,16,1,17,1,16,1,13,1,11,1,16,1,13,1,27,16,29,1,27,7,29,1,27,1,29,4,13,1,8,1,10,1,8,1,13,1,6,1,13,3,7,1,29,1,6,1,27,54,29,1,6,1,29,1,28,1,27,17,28,2,27,10,},
{16,1,17,2,14,1,13,2,14,1,13,2,29,1,6,1,29,1,13,1,14,4,17,2,14,4,29,1,9,1,14,1,6,1,14,1,29,1,27,6,29,1,14,2,17,2,14,1,16,1,14,3,13,1,8,1,13,1,17,6,16,1,9,1,11,1,9,1,10,1,8,1,13,1,28,2,29,6,28,2,29,1,27,4,29,1,13,1,6,1,27,1,29,1,6,1,13,4,9,15,13,3,6,1,28,1,27,1,29,2,27,4,6,1,29,1,28,1,29,1,28,2,27,8,28,1,27,1,28,1,29,1,6,1,8,1,17,3,11,1,17,2,13,1,16,1,13,1,27,18,29,1,28,3,29,4,27,1,13,3,9,1,13,1,9,1,6,1,13,1,9,1,13,1,6,4,8,1,13,1,29,1,27,53,28,2,27,19,29,1,27,11,},
{5,1,14,3,9,1,13,1,14,1,13,2,29,1,6,1,29,2,14,6,17,1,14,1,9,1,13,1,29,1,14,2,9,1,14,1,6,1,28,1,27,5,29,1,14,2,16,4,14,2,9,1,6,1,13,1,14,1,17,6,16,2,11,1,9,2,13,1,6,1,28,1,27,1,29,1,6,1,29,8,27,2,29,5,13,6,9,1,16,1,9,3,11,1,16,2,17,1,16,1,11,1,9,4,13,4,6,1,29,1,6,2,29,1,28,1,27,1,29,6,27,3,29,1,27,7,29,1,27,3,6,1,11,1,17,1,9,1,17,1,14,1,17,1,11,1,13,1,27,13,28,2,29,1,28,1,27,1,29,1,28,1,27,3,28,1,29,2,6,1,29,2,13,1,8,1,6,1,23,1,8,1,6,1,13,1,6,2,13,1,29,1,28,4,27,53,28,1,27,19,28,2,27,1,29,1,28,1,27,8,},
{13,1,17,2,14,2,9,2,6,1,29,2,6,2,29,2,6,2,14,5,9,3,14,4,6,1,28,1,27,5,29,1,14,4,16,2,14,2,13,1,6,1,13,1,14,1,17,3,16,1,17,2,16,1,11,2,9,1,8,1,6,1,29,1,27,2,29,1,13,2,6,2,29,3,6,1,13,1,29,5,6,1,13,7,9,4,13,3,6,3,13,8,28,1,29,4,28,1,29,1,6,2,29,3,6,1,29,1,27,1,29,1,6,2,13,1,29,1,27,11,17,1,9,1,17,1,14,1,17,1,28,1,27,12,29,1,28,1,27,1,29,1,6,1,28,1,27,9,29,1,13,1,17,1,16,1,13,1,14,1,9,1,27,1,13,3,6,2,29,1,27,57,28,1,27,16,28,1,27,1,28,2,29,1,28,1,29,2,28,1,27,1,28,1,27,5,},
{13,1,14,4,9,1,13,1,6,1,14,1,9,1,6,1,29,3,13,1,9,1,17,2,14,1,9,2,14,1,9,1,13,1,14,4,6,1,28,1,27,4,28,1,29,1,14,3,17,1,14,4,13,1,9,1,6,1,9,1,14,1,17,1,14,1,16,1,17,3,16,1,11,1,9,1,13,1,6,1,29,1,27,2,29,1,8,1,13,1,8,1,13,1,6,1,29,2,6,3,29,1,27,1,29,1,6,1,13,1,8,1,13,1,6,2,13,4,9,1,13,1,9,1,11,1,16,2,11,1,17,2,11,1,16,6,11,1,13,1,6,1,29,2,13,1,9,2,13,1,29,4,6,1,29,1,28,1,6,1,29,1,28,1,29,2,27,11,29,1,16,1,17,2,10,1,27,13,29,1,28,1,27,7,28,4,29,2,8,1,6,1,13,3,15,1,28,1,27,1,13,3,29,2,27,58,28,1,27,16,28,1,29,1,28,1,27,1,29,4,28,1,27,7,},
{6,1,9,1,13,1,29,1,13,2,6,2,14,1,9,1,6,1,29,3,13,1,14,3,6,1,29,1,14,2,6,1,13,1,14,1,9,1,14,2,6,1,28,1,27,4,28,1,29,1,8,1,14,7,13,2,29,3,14,1,17,1,14,1,17,3,16,1,11,1,9,1,6,1,29,1,6,1,29,1,27,1,6,1,9,1,13,2,9,1,13,1,6,2,29,1,6,2,29,2,6,3,13,2,29,3,13,2,9,2,11,1,16,1,11,1,16,2,11,1,16,3,17,3,16,1,11,1,9,1,13,1,29,1,6,3,29,3,6,1,29,2,27,1,29,4,6,1,29,1,27,2,28,1,27,5,29,1,27,6,17,3,13,1,27,12,29,3,27,4,28,1,27,2,28,4,29,2,13,1,9,3,8,1,6,1,27,2,23,1,8,1,13,1,6,1,29,1,27,56,28,1,29,1,28,1,27,15,28,1,29,1,28,2,29,1,28,1,6,2,27,6,28,1,27,2,},
{29,1,13,1,6,1,29,1,6,2,29,2,6,4,29,3,13,2,14,1,13,1,29,1,9,1,14,1,6,1,13,3,14,1,23,1,6,1,28,1,27,5,29,1,8,1,14,3,17,1,14,3,6,2,29,2,27,1,9,1,14,2,16,1,17,2,16,1,9,1,13,1,29,2,13,2,28,1,6,1,15,1,6,2,13,4,29,1,13,1,6,2,13,1,6,1,28,2,6,1,13,1,29,2,13,3,6,1,13,1,9,2,13,1,9,1,16,2,17,1,11,2,16,2,9,1,13,1,9,1,13,2,9,1,13,1,29,1,6,1,13,2,29,1,27,1,29,1,13,1,28,2,29,1,27,1,29,1,28,2,29,1,28,3,29,2,28,1,6,1,29,1,27,2,13,1,29,1,27,1,6,1,17,2,14,1,13,1,29,1,6,1,29,1,27,5,28,1,6,1,29,3,28,2,27,7,28,4,29,1,6,2,10,1,29,2,15,1,23,1,27,2,8,1,29,1,27,60,28,3,27,14,29,2,26,1,29,1,28,1,29,1,6,1,27,4,28,1,27,5,},
{29,1,13,2,6,2,29,1,28,1,29,1,6,2,13,1,29,4,14,1,9,1,14,2,6,1,13,1,9,1,13,2,9,1,14,1,13,2,29,1,28,1,27,5,29,1,13,1,14,1,17,1,14,5,13,1,6,2,29,2,13,1,9,2,14,2,17,1,14,1,13,1,6,1,27,1,29,1,8,1,9,1,29,1,6,1,9,1,6,1,29,1,6,2,13,1,9,1,13,2,6,1,13,1,9,1,6,1,27,1,28,1,6,1,13,1,6,2,9,2,6,1,29,2,9,2,13,1,9,1,11,2,16,1,9,2,11,1,9,1,13,2,9,2,13,6,29,3,13,2,29,1,27,1,28,1,27,3,29,3,28,1,29,1,6,1,29,3,13,1,29,1,27,1,28,1,29,2,13,1,11,1,17,1,14,1,9,1,13,1,6,1,29,2,28,1,29,1,27,1,29,1,27,1,13,1,29,2,28,1,27,5,28,1,27,4,28,3,29,1,6,1,8,2,27,2,15,1,27,3,8,1,28,1,27,60,28,1,27,1,28,1,27,11,28,1,27,2,6,1,27,1,7,1,28,2,6,1,29,1,27,2,29,1,27,7,},
{28,1,29,1,6,1,29,1,28,2,29,1,6,1,29,1,6,1,14,1,6,3,29,1,9,1,14,1,13,2,6,1,13,3,14,3,6,1,29,1,28,1,27,7,6,1,14,7,9,1,29,2,27,1,28,1,29,2,6,1,29,1,13,1,14,2,7,1,29,1,27,1,28,1,23,1,15,1,29,2,9,1,29,1,6,2,29,1,6,1,9,1,15,1,6,2,9,2,6,1,29,2,6,2,29,1,6,1,13,1,9,1,13,3,9,1,16,3,9,1,13,1,9,2,11,1,17,3,16,1,17,1,11,1,13,1,11,1,13,4,29,2,13,2,6,1,29,1,27,1,28,1,29,1,27,1,29,1,13,1,28,1,29,1,27,1,29,2,27,1,6,1,29,2,27,1,28,1,29,1,28,1,29,1,11,1,17,3,10,1,17,1,29,1,28,1,29,1,27,1,29,1,28,1,29,3,6,1,28,1,27,2,28,1,27,3,29,1,27,4,28,1,29,4,13,1,6,1,27,1,28,1,14,1,27,3,29,1,27,61,29,1,28,1,29,1,27,7,28,1,27,1,28,1,27,1,29,1,28,1,29,1,13,1,27,3,29,2,28,1,27,1,28,1,29,1,27,6,28,1,},
{29,3,27,3,29,2,6,2,14,2,6,2,28,1,6,1,14,1,15,1,13,2,6,1,13,2,14,2,8,1,6,1,29,1,27,9,29,1,13,1,6,1,13,1,29,1,13,1,14,3,29,1,28,2,27,2,28,2,29,1,13,1,14,1,27,1,28,2,29,1,15,1,8,1,29,3,13,1,29,2,14,1,9,1,14,1,13,1,29,1,13,1,15,1,8,1,6,1,29,5,9,2,6,2,13,1,9,1,16,1,9,1,17,1,16,1,9,1,28,1,6,1,16,1,17,1,16,2,17,4,27,1,13,1,11,1,6,1,13,1,9,1,8,1,11,1,13,1,29,2,6,1,29,1,27,2,6,2,13,1,6,1,27,2,29,1,28,1,27,1,28,1,27,1,6,1,28,1,27,1,28,2,13,1,16,1,17,1,13,1,28,1,27,1,29,1,6,2,13,1,28,1,29,4,28,3,29,1,27,3,28,1,27,1,28,1,27,2,28,1,27,1,29,1,27,1,29,3,14,1,27,2,14,2,27,65,28,2,27,10,29,1,27,1,29,3,14,1,29,1,27,1,6,1,27,2,29,2,28,1,29,1,27,1,28,1,27,2,28,1,27,2,},
{29,1,28,2,27,3,29,3,9,1,14,2,13,1,29,3,14,2,13,2,6,1,13,1,6,1,9,1,14,1,9,1,6,1,28,1,27,9,29,1,14,1,9,2,6,1,29,1,13,2,14,1,8,1,27,7,29,1,7,1,27,1,28,1,27,1,26,1,14,1,13,1,29,3,9,1,8,1,6,1,13,1,14,2,6,1,29,1,6,1,13,1,9,1,13,1,6,2,13,1,6,1,29,1,13,1,9,5,16,4,13,1,29,2,6,1,13,1,17,2,13,1,17,3,13,2,17,1,16,1,13,2,6,1,9,2,27,1,28,1,29,3,27,2,29,1,13,1,29,1,27,6,28,1,29,1,28,1,27,3,16,1,17,2,29,1,27,3,29,2,6,3,29,2,28,2,27,1,28,2,27,3,29,1,26,1,29,1,27,2,28,1,27,1,28,1,27,3,29,1,14,1,27,2,26,1,25,1,27,78,29,4,14,1,27,5,29,2,28,2,27,1,28,1,27,2,28,1,27,2,},
{28,1,27,5,28,1,29,1,8,1,14,1,13,1,14,1,13,1,6,1,29,1,27,1,14,3,13,2,9,1,13,1,14,1,9,1,6,1,29,1,28,1,27,8,29,2,14,2,9,1,13,1,6,1,13,1,29,1,14,2,28,1,27,6,29,1,28,1,27,1,28,2,26,1,14,1,6,1,29,2,6,1,9,1,14,1,13,1,6,1,9,1,8,1,6,2,29,2,13,1,9,2,13,1,9,1,6,1,29,1,13,3,9,2,16,1,17,2,14,2,9,1,13,1,6,1,13,1,29,2,10,1,6,1,13,1,16,2,17,1,13,1,17,1,16,1,6,1,29,2,13,1,15,1,28,1,29,2,6,1,9,1,28,1,27,1,29,1,13,1,29,1,27,4,28,1,27,3,29,1,27,3,14,1,17,2,6,1,27,3,29,1,17,1,14,1,13,1,6,1,29,1,27,6,28,1,29,2,27,1,29,1,28,1,27,2,28,1,27,2,28,1,27,3,26,1,27,82,29,1,28,3,14,1,27,10,28,1,27,2,28,1,27,2,},
{27,6,28,1,29,1,14,1,17,1,13,2,6,3,29,1,13,1,14,5,9,1,14,2,13,1,27,9,28,1,29,1,27,1,14,3,9,1,13,2,29,1,9,1,14,1,29,1,27,6,28,1,27,2,26,3,8,1,29,1,6,2,14,1,13,1,14,2,29,1,13,1,6,1,13,1,6,4,13,1,14,2,9,1,6,2,13,1,6,1,29,2,13,1,14,3,17,1,14,2,13,4,27,1,13,1,8,1,29,1,9,1,17,1,14,1,13,1,9,1,16,1,6,1,27,1,29,2,13,1,29,1,28,2,29,1,8,1,29,1,28,1,27,1,6,1,29,1,27,8,6,1,29,1,27,1,29,1,15,1,14,2,8,1,27,4,17,2,9,1,13,1,29,1,27,5,28,1,29,2,28,1,27,1,6,1,27,8,29,1,27,1,29,1,27,82,6,1,28,3,23,1,27,9,28,1,27,6,},
{27,6,28,1,6,1,9,1,17,1,14,1,13,1,6,1,29,1,6,1,13,1,29,1,14,7,6,1,27,10,28,1,8,1,6,1,8,1,14,2,29,1,13,3,14,1,9,1,6,1,27,9,29,2,26,1,6,1,29,1,13,1,9,1,14,1,13,1,14,2,29,1,6,1,29,1,9,1,6,1,13,4,15,2,9,1,14,1,13,1,29,1,28,1,27,1,29,1,6,1,9,1,14,5,13,3,9,2,13,1,29,2,10,1,14,1,9,1,6,1,13,1,14,1,9,1,29,1,28,1,27,1,29,6,6,2,27,1,29,2,27,7,28,1,29,2,28,1,29,1,6,1,15,1,14,1,15,1,27,4,9,1,13,1,8,1,6,1,28,1,27,5,28,1,27,2,28,1,29,1,6,1,27,10,28,1,27,81,29,1,26,1,27,3,6,1,27,9,28,2,27,5,},
{27,6,29,1,13,1,6,1,14,2,9,1,13,2,29,1,6,1,29,1,14,4,8,1,14,2,27,11,29,1,14,2,8,1,14,1,6,1,27,1,13,2,14,2,6,1,29,1,27,10,28,1,26,1,7,1,6,1,13,1,14,2,13,1,14,1,9,1,6,1,13,2,8,1,13,1,6,1,13,1,9,2,13,2,9,1,14,1,13,1,29,1,27,2,29,2,13,1,14,1,9,1,13,1,14,3,13,3,14,1,6,1,27,1,29,1,13,1,9,1,15,1,13,1,6,1,9,2,13,1,6,1,28,1,27,1,29,1,6,1,9,1,6,1,29,2,8,1,29,3,27,2,28,1,27,6,29,1,27,1,28,1,27,1,13,1,9,1,14,1,27,5,28,1,29,1,27,9,29,1,6,3,27,12,28,1,27,79,29,1,26,1,27,3,28,3,27,7,28,1,29,1,27,5,},
{27,6,29,1,6,2,13,5,6,1,29,2,13,1,9,1,13,1,8,1,13,1,14,2,13,1,6,1,28,1,27,8,28,1,14,2,9,1,15,1,27,1,29,1,9,2,14,1,9,1,6,1,29,1,27,10,29,4,6,1,14,1,9,1,13,1,14,1,9,1,13,1,9,2,13,1,6,2,13,1,9,1,14,1,9,1,13,2,9,1,13,1,29,1,27,4,29,1,13,1,6,1,29,1,8,1,16,1,14,1,16,1,13,3,6,1,13,1,29,2,8,1,14,1,9,1,29,2,6,1,13,1,23,1,6,1,28,1,27,1,6,1,14,1,13,1,29,1,28,1,6,2,25,1,28,1,27,2,28,1,27,6,29,1,27,1,28,1,27,2,6,1,15,1,27,16,28,1,6,1,14,1,13,1,27,12,29,1,28,1,27,79,26,1,28,1,27,3,28,1,29,1,27,8,28,1,27,5,},
{27,5,28,1,29,1,6,2,13,1,29,2,6,2,13,4,6,2,13,2,14,1,9,1,13,1,29,1,27,10,14,1,8,2,9,1,6,1,9,1,13,1,6,1,13,1,9,1,13,1,28,1,27,10,8,1,29,1,27,1,28,1,29,1,14,1,13,2,14,2,9,1,8,1,14,1,8,1,29,1,6,1,13,2,9,1,14,1,9,1,6,2,29,1,28,1,27,5,13,4,14,3,9,1,6,1,13,1,9,1,14,1,6,1,29,2,13,1,8,1,6,1,29,1,6,2,13,1,6,1,27,2,13,1,14,1,9,1,8,1,29,2,23,2,27,9,28,1,29,1,27,1,28,1,29,1,27,1,13,1,14,1,27,17,28,1,23,1,6,1,27,12,25,1,29,1,27,79,29,1,28,1,27,19,},
{27,6,29,3,6,5,13,1,9,1,14,1,29,2,9,1,8,1,13,3,6,1,29,1,27,9,28,1,14,1,23,1,9,2,15,1,6,1,29,1,6,1,13,2,29,2,27,9,26,1,27,4,28,1,29,1,28,1,6,1,14,1,15,1,13,3,14,2,13,1,6,1,13,1,14,2,6,1,29,1,28,2,27,6,29,1,9,1,13,2,14,3,9,2,13,1,9,1,16,1,13,1,28,1,27,1,29,1,13,1,6,1,27,2,13,2,29,1,28,2,29,1,13,2,6,1,23,1,14,1,28,1,26,1,28,1,27,8,29,1,6,1,29,1,27,2,29,1,6,2,27,19,28,2,27,10,26,1,29,1,27,2,28,1,27,51,28,1,27,30,28,1,27,15,},
{27,6,28,1,29,3,6,3,13,2,14,2,29,1,6,1,8,1,6,1,29,1,6,2,29,2,27,9,28,1,14,1,13,1,14,2,9,1,6,1,29,2,6,2,29,1,28,1,27,9,28,1,27,1,6,1,13,1,28,1,27,1,29,1,13,2,8,1,14,1,9,1,8,1,29,1,9,1,14,1,9,1,6,2,23,2,29,1,27,9,29,1,8,1,13,3,8,1,9,2,16,1,9,3,13,1,29,1,27,1,28,1,6,1,29,1,27,2,6,1,13,1,29,1,28,1,29,2,6,2,29,1,8,1,14,1,23,1,29,1,27,9,28,1,6,1,29,1,27,3,29,1,6,1,27,31,23,1,8,1,28,1,27,80,28,2,27,2,28,1,27,15,},
{27,6,28,1,29,1,28,1,29,1,6,3,13,1,9,1,14,2,6,2,13,1,29,1,27,1,29,4,27,9,28,1,13,1,6,1,15,1,14,1,9,1,13,1,29,1,28,1,29,2,28,1,27,10,13,1,14,1,6,1,28,1,29,1,28,1,27,1,13,1,8,1,15,1,14,1,9,1,14,1,29,1,6,1,14,2,6,2,13,2,29,1,27,10,29,1,6,1,29,3,13,1,9,5,13,1,6,1,28,1,27,1,29,1,27,3,28,1,29,3,6,3,29,2,6,1,14,2,28,1,27,10,29,2,27,3,29,2,27,31,25,1,8,1,27,81,28,1,29,1,28,1,27,1,28,1,27,15,},
{27,7,28,1,27,1,29,2,6,2,13,1,14,3,6,1,29,2,28,1,27,1,28,1,29,3,27,10,29,2,14,3,13,1,29,1,28,2,27,12,29,1,23,1,6,1,29,5,13,1,14,3,23,1,28,1,29,1,14,1,23,1,6,1,29,1,6,2,29,1,28,1,27,10,29,1,28,1,27,1,28,1,6,1,8,1,9,4,13,1,6,1,29,1,27,7,29,1,6,1,13,1,6,1,29,2,28,1,29,1,7,1,6,1,27,11,28,1,29,1,27,4,28,1,27,16,29,1,28,1,27,97,28,1,27,18,},
{27,9,28,1,29,2,6,1,13,1,14,3,26,1,29,2,28,3,29,4,27,9,29,1,13,1,14,3,13,1,29,2,27,14,29,1,6,1,8,1,13,1,6,1,29,1,6,2,14,3,29,1,27,1,29,1,14,1,8,1,6,1,29,5,27,10,28,1,27,3,29,2,9,1,14,2,9,1,13,1,6,1,29,1,27,7,29,1,13,1,29,2,27,1,28,3,6,1,26,1,27,30,28,1,27,3,29,2,27,116,},
{27,9,28,1,29,3,6,1,8,1,14,1,8,1,29,1,27,2,28,3,29,4,28,1,27,8,29,1,23,1,14,3,13,1,29,2,28,1,27,13,28,1,29,1,13,1,14,1,8,1,27,1,29,1,6,1,8,1,14,1,8,1,13,1,27,1,28,1,8,1,13,1,6,1,29,1,28,5,27,14,29,1,14,3,23,1,13,1,6,1,29,1,28,1,27,6,29,3,28,1,27,3,28,1,29,2,28,1,27,8,28,1,27,20,28,1,27,3,29,1,26,1,28,1,27,115,},
{27,9,28,1,29,4,13,1,23,1,26,1,29,1,27,5,28,1,29,1,6,2,29,1,27,9,13,1,14,3,9,1,13,1,6,1,28,1,27,14,28,1,6,2,8,1,6,1,27,1,29,1,6,1,14,1,13,1,23,1,6,1,28,1,13,1,6,1,29,2,28,1,27,18,29,1,13,2,6,1,26,1,29,1,6,1,29,2,28,1,27,7,29,2,28,1,27,1,28,2,29,3,27,10,28,1,27,18,29,1,28,1,27,2,28,1,29,1,28,1,27,115,},
{27,9,28,1,29,4,6,1,8,1,29,1,28,1,27,5,28,1,29,1,6,2,29,1,28,1,27,8,29,1,14,4,8,1,6,1,28,1,27,15,29,1,28,1,6,1,29,3,13,1,14,2,6,1,13,1,28,1,6,1,26,1,29,1,28,2,27,13,29,1,28,1,27,3,28,1,29,1,28,1,27,2,29,5,27,7,29,1,6,1,29,7,27,10,29,1,28,1,27,17,29,1,28,1,27,3,29,2,28,2,27,1,28,1,27,111,},
{27,9,29,2,26,1,29,4,28,2,27,4,28,1,29,1,6,1,14,1,23,1,6,1,29,1,27,9,6,1,14,2,23,1,13,1,6,1,28,1,27,15,28,1,6,2,29,1,27,2,29,1,23,1,8,1,6,1,29,2,28,1,29,2,27,15,28,1,29,1,28,1,27,8,29,4,27,6,28,1,29,3,28,1,27,1,29,3,28,1,27,3,28,2,27,5,28,2,27,23,28,3,27,3,28,2,27,108,},
{27,10,29,3,28,1,27,8,28,1,29,1,7,1,14,1,23,1,6,1,29,1,27,8,28,1,29,1,13,1,6,2,29,1,28,1,27,17,29,3,27,2,29,1,13,2,6,1,29,2,28,1,29,2,27,16,28,2,27,9,29,3,27,8,28,2,27,3,29,2,28,1,27,3,28,1,27,32,28,1,27,114,},
{27,11,28,1,27,11,26,1,8,1,14,2,13,1,6,1,28,1,27,8,28,2,27,21,29,2,28,1,27,3,29,1,6,2,29,1,6,1,29,3,27,28,29,2,27,13,28,1,29,1,28,2,27,35,28,1,27,2,28,1,27,111,},
{27,23,29,1,23,1,14,2,8,1,6,1,29,1,27,32,29,1,27,5,29,3,6,2,26,1,29,1,27,28,28,2,27,14,28,1,27,1,28,1,27,150,},
{27,23,29,1,8,1,14,2,8,1,13,1,29,1,27,32,28,1,27,6,28,2,6,3,29,1,27,46,28,1,27,38,28,1,27,111,},
{27,24,6,1,23,1,8,1,13,2,6,1,28,1,27,40,29,1,6,2,29,1,27,46,28,1,27,38,28,1,27,111,},
{27,24,29,1,13,1,6,2,13,1,6,1,29,1,27,40,28,1,6,1,29,1,27,45,28,3,27,38,28,1,27,111,},
{27,25,6,3,13,1,6,1,29,1,27,39,28,1,27,1,29,1,27,45,28,1,29,1,28,1,27,29,28,2,27,107,28,2,27,11,},
{27,25,29,1,6,1,13,2,29,2,27,40,29,2,28,1,27,42,28,2,29,2,28,1,27,28,29,2,27,106,28,1,29,2,28,1,27,11,},
{27,25,28,1,6,1,13,2,6,1,29,1,27,40,29,2,28,1,27,42,28,2,29,2,28,1,27,28,29,1,28,1,27,106,29,3,28,2,27,10,},
{27,25,28,1,29,1,13,2,6,1,29,1,28,1,27,39,29,3,27,21,28,3,27,19,28,1,29,2,28,1,27,27,28,1,29,1,28,2,27,105,29,5,28,1,27,9,},
{27,26,29,1,7,1,13,1,6,2,29,1,27,39,28,1,29,2,27,21,28,1,29,2,28,2,27,17,28,2,29,1,28,1,27,27,28,1,29,2,28,1,27,105,29,7,27,8,},
{27,26,29,1,6,1,13,1,6,2,29,1,27,40,28,3,27,21,29,4,28,1,27,16,28,4,27,5,28,2,27,20,29,4,28,1,27,104,28,1,29,3,26,2,29,1,28,1,27,4,28,1,27,2,},
{27,26,28,1,26,1,6,2,29,1,28,1,27,64,29,4,28,1,27,16,28,4,27,4,29,3,27,20,29,5,27,6,28,1,27,98,29,3,26,2,29,1,28,1,27,4,28,3,},
{27,26,28,1,29,1,26,1,29,2,27,65,29,5,28,1,27,15,28,4,27,4,29,3,27,19,28,2,29,1,6,1,29,2,28,1,27,5,28,1,27,98,29,6,28,1,27,3,28,4,},
{27,26,28,1,29,1,26,1,29,2,27,65,28,1,29,4,28,2,27,15,28,3,27,4,29,1,6,1,29,1,28,1,27,18,28,2,29,1,6,1,29,2,28,1,27,5,28,1,27,1,28,2,27,2,28,1,27,92,29,2,28,1,29,1,28,3,27,3,28,4,},
{27,27,29,3,28,1,27,35,28,1,27,30,29,5,28,2,27,16,29,1,28,4,29,3,27,20,28,1,29,3,28,3,27,5,28,1,27,5,28,2,27,91,28,5,27,2,28,6,},
{27,27,29,3,27,36,28,1,27,30,29,5,28,2,27,15,28,5,29,4,27,21,29,3,28,3,27,10,28,4,27,90,28,1,29,1,28,3,27,2,28,6,},
{27,27,28,1,29,1,28,1,27,36,28,2,27,29,29,6,28,1,27,14,28,2,27,1,28,2,29,4,28,1,27,21,28,1,29,2,28,3,27,10,28,3,29,1,28,2,27,88,28,1,29,2,28,2,27,4,28,4,},
{27,27,28,1,29,1,28,1,27,36,28,2,27,29,29,3,28,2,29,1,28,3,27,12,28,5,29,4,28,1,27,21,28,2,29,2,28,2,27,10,28,2,29,4,28,1,27,87,28,1,29,3,28,1,27,6,28,2,},
{27,28,28,1,27,37,28,2,27,29,28,1,29,1,28,3,29,1,28,4,27,10,28,2,29,1,28,1,29,7,27,21,28,1,29,4,28,1,27,11,28,2,29,3,28,1,27,78,28,1,27,7,28,1,29,4,28,1,27,7,28,1,},
{27,66,28,2,27,29,28,1,29,1,28,1,27,1,28,1,29,1,28,1,29,1,28,3,27,8,28,2,29,10,27,20,28,1,29,6,28,1,27,12,29,4,28,1,27,77,28,1,27,3,28,1,27,1,28,2,29,4,28,2,27,7,28,1,},
{27,97,28,2,27,2,28,1,29,4,28,2,27,8,28,2,29,5,26,1,29,4,27,20,29,3,6,1,29,4,27,12,28,3,29,1,28,3,27,25,28,1,27,50,28,5,29,6,28,1,27,9,},
{27,97,28,2,27,2,28,1,29,4,28,2,27,3,28,1,27,4,28,1,29,5,6,3,29,2,28,2,27,18,28,1,29,2,6,4,29,2,28,1,27,13,28,6,27,24,28,1,27,50,29,2,28,3,29,5,28,1,27,10,},
{27,99,28,3,29,2,28,1,29,5,28,1,27,4,28,2,29,6,6,1,13,1,6,1,29,1,28,3,27,16,28,1,29,3,6,1,13,3,6,1,29,2,28,1,27,12,28,2,29,1,28,1,27,2,28,1,27,4,28,3,27,16,28,1,27,27,28,2,27,3,28,3,27,14,28,1,6,2,29,3,6,4,29,2,28,1,27,9,},
{27,2,28,2,27,94,28,3,29,9,28,1,27,4,28,2,29,5,6,1,13,2,6,1,29,1,28,3,27,16,28,1,29,3,6,1,13,4,6,1,29,2,28,1,27,12,28,4,27,1,28,1,27,4,28,3,27,44,28,2,27,2,28,4,27,15,29,1,6,2,29,2,6,4,29,2,27,10,},
{28,3,27,93,28,3,29,11,28,1,27,3,28,3,29,4,6,1,13,1,8,2,13,1,29,1,28,3,27,16,29,4,6,1,13,1,8,3,13,2,6,1,29,2,28,1,27,11,28,6,27,2,28,4,27,44,28,3,27,1,28,1,29,2,28,1,27,15,29,1,13,2,6,2,13,3,6,1,29,2,27,10,},
{28,4,27,87,28,5,29,8,6,4,29,2,28,1,27,2,28,4,29,4,6,1,13,1,14,2,13,1,29,1,28,3,27,15,28,1,29,4,6,1,13,1,9,4,8,1,13,1,6,2,29,1,27,11,28,6,27,2,28,4,27,43,28,2,29,1,28,4,29,1,28,2,27,14,29,1,13,1,9,1,13,2,9,1,13,2,6,1,29,2,27,10,},
{28,4,27,80,28,8,29,12,6,5,29,2,28,6,29,3,6,1,13,1,23,1,14,2,13,1,29,1,28,3,27,14,28,1,29,4,6,2,13,1,8,1,9,1,14,2,9,1,8,1,13,1,6,1,29,1,28,1,27,11,28,1,29,3,28,3,29,2,28,1,27,44,28,2,29,2,28,3,29,1,28,2,27,15,13,1,14,4,9,1,13,2,6,1,29,1,27,10,},
{28,4,27,26,28,2,27,34,28,1,27,16,28,3,29,10,6,10,13,2,6,1,29,3,28,5,29,3,6,1,13,1,23,1,14,1,8,1,6,1,29,2,28,2,27,14,28,1,29,4,6,2,13,1,8,1,9,1,14,3,9,1,13,2,29,2,27,11,29,9,28,1,27,45,28,1,29,1,28,2,27,1,28,4,27,15,6,1,9,1,14,3,9,1,13,2,6,1,29,1,27,10,},
{28,4,27,26,28,5,27,30,28,2,27,16,28,2,29,11,6,10,13,2,6,2,29,2,28,5,29,3,6,1,13,1,23,1,14,1,13,1,6,1,29,2,28,2,27,13,28,1,29,3,6,4,13,1,8,1,9,1,14,4,9,2,6,1,29,1,28,1,27,10,29,9,28,1,27,45,28,4,27,1,28,3,27,16,29,1,13,1,14,3,9,1,13,2,6,1,29,1,27,10,},
{28,3,27,21,28,1,27,5,28,10,27,25,28,3,27,14,28,3,29,9,6,12,13,3,6,2,29,1,28,5,29,3,6,1,13,1,23,2,13,1,29,3,28,2,27,13,28,1,29,2,6,4,13,2,9,2,14,6,6,1,29,1,28,1,27,9,28,1,29,9,28,1,27,45,28,4,27,2,28,2,27,5,28,2,27,9,28,1,13,1,14,3,9,1,13,3,29,1,27,10,},
{26,1,29,1,28,3,27,18,28,2,27,5,28,8,29,2,28,3,27,22,28,1,29,1,28,5,27,9,28,1,29,5,6,7,13,6,6,6,13,4,6,2,29,6,26,1,6,2,13,1,23,1,8,1,6,1,29,3,28,2,27,12,28,1,29,3,6,3,13,3,9,1,14,7,13,1,29,1,28,1,27,9,28,1,29,5,6,3,29,3,27,44,28,2,27,11,28,3,27,8,28,1,6,1,14,2,9,2,13,2,6,1,29,1,27,10,},
}
}

View File

@ -3,79 +3,83 @@ require("locale.utils.poisson_rng")
local Thread = require "locale.utils.Thread"
map_gen_rows_per_tick = map_gen_rows_per_tick or 4
map_gen_rows_per_tick = math.min(32, math.max(1, map_gen_rows_per_tick))
function run_init(params)
global._tiles_hold = {}
global._decoratives_hold = {}
global._entities_hold = {}
end
local function do_row(row, data)
local y = data.top_y + row
local top_x = data.top_x
function run_place_tiles(params)
local surface = params.surface
surface.set_tiles(global._tiles_hold, true)
end
for x = top_x, top_x + 31 do
function run_place_items(params)
local surface = params.surface
for _,deco in pairs(global._decoratives_hold) do
surface.create_decoratives{check_collision=false, decoratives={deco}}
end
for _, entity in ipairs(global._entities_hold) do
if surface.can_place_entity {name=entity.name, position=entity.position} then
surface.create_entity {name=entity.name, position=entity.position}
-- local coords need to be 'centered' to allow for correct rotation and scaling.
local tile, entity = MAP_GEN(x + 0.5, y + 0.5, x, y)
if type(tile) == "boolean" and not tile then
table.insert(data.tiles, {name = "out-of-map", position = {x, y}})
elseif type(tile) == "string" then
table.insert(data.tiles, {name = tile, position = {x, y}})
if tile == "water" or tile == "deepwater" or tile == "water-green" or tile == "deepwater-green" then
local a = x + 1
table.insert(data.tiles, {name = tile, position = {a, y}})
local a =row + 1
table.insert(data.tiles, {name = tile, position = {x, a}})
local a = x - 1
table.insert(data.tiles, {name = tile, position = {a, y}})
local a =row - 1
table.insert(data.tiles, {name = tile, position = {x, a}})
end
end
end
function run_calc_items(params)
local top_x = params.top_x
local top_y = params.top_y
for y = top_y, top_y + 31 do
for x = top_x, top_x + 31 do
-- local coords need to be 'centered' to allow for correct rotation and scaling.
local tile, entity = MAP_GEN(x + 0.5, y + 0.5, x, y)
if type(tile) == "boolean" and not tile then
table.insert( global._tiles_hold, {name = "out-of-map", position = {x, y}} )
elseif type(tile) == "string" then
table.insert( global._tiles_hold, {name = tile, position = {x, y}} )
if tile == "water" or tile == "deepwater" or tile == "water-green" or tile == "deepwater-green" then
local a = x + 1
table.insert(global._tiles_hold, {name = tile, position = {a,y}})
local a = y + 1
table.insert(global._tiles_hold, {name = tile, position = {x,a}})
local a = x - 1
table.insert(global._tiles_hold, {name = tile, position = {a,y}})
local a = y - 1
table.insert(global._tiles_hold, {name = tile, position = {x,a}})
end
if map_gen_decoratives then
tile_decoratives = check_decorative(tile, x, y)
for _,tbl in ipairs(tile_decoratives) do
table.insert(global._decoratives_hold, tbl)
end
tile_entities = check_entities(tile, x, y)
for _,entity in ipairs(tile_entities) do
table.insert(global._entities_hold, entity)
end
end
end
if entity then
table.insert(global._entities_hold, entity)
end
end
if map_gen_decoratives then
tile_decoratives = check_decorative(tile, x, y)
for _,tbl in ipairs(tile_decoratives) do
table.insert(data.decoratives, tbl)
end
end
tile_entities = check_entities(tile, x, y)
for _,entity in ipairs(tile_entities) do
table.insert(data.entities, entity)
end
end
if entity then
table.insert(data.entities, entity)
end
end
end
function run_chart_update(params)
local function do_place_tiles(data)
data.surface.set_tiles(data.tiles, true)
end
local function do_place_decoratives(data)
if not map_gen_decoratives then return end
for _, e in pairs(surface.find_entities_filtered{area=area, type="decorative"}) do
e.destroy()
end
for _, e in pairs(surface.find_entities_filtered{area=area, type="simple-entity"}) do
e.destroy()
end
local surface = data.surface
for _,d in pairs(data.decoratives) do
surface.create_decoratives{check_collision=false, decoratives={d}}
end
end
local function do_place_entities(data)
local surface = data.surface
for _, e in ipairs(data.entities) do
if surface.can_place_entity(e) then
surface.create_entity(e)
end
end
end
local function run_chart_update(params)
local x = params.area.left_top.x / 32
local y = params.area.left_top.y / 32
if game.forces.player.is_chunk_charted(params.surface, {x,y} ) then
@ -84,6 +88,31 @@ function run_chart_update(params)
end
end
function map_gen_action(data)
local state = data.state
if state < 32 then
local count = 1
repeat
do_row(state, data)
state = state + 1
count = count + 1
until state == 32 or count >= map_gen_rows_per_tick
data.state = state
return true
elseif state == 32 then
do_place_tiles(data)
data.state = 33
return true
elseif state == 33 then
do_place_decoratives(data)
data.state = 34
return true
elseif state == 34 then
do_place_entities(data)
return false
end
end
function run_combined_module(event)
if MAP_GEN == nil then
@ -93,32 +122,19 @@ function run_combined_module(event)
local area = event.area
local surface = event.surface
MAP_GEN_SURFACE = surface
local top_x = area.left_top.x
local top_y = area.left_top.y
if map_gen_decoratives then
for _, e in pairs(surface.find_entities_filtered{area=area, type="decorative"}) do
e.destroy()
end
for _, e in pairs(surface.find_entities_filtered{area=area, type="tree"}) do
-- e.destroy() -- Leaving the trees/forests
end
for _, e in pairs(surface.find_entities_filtered{area=area, type="simple-entity"}) do
e.destroy()
end
end
Thread.queue_action("run_init", {} )
Thread.queue_action("run_calc_items", {surface = event.surface, top_x = top_x, top_y = top_y})
Thread.queue_action("run_place_tiles", {surface = event.surface})
Thread.queue_action("run_place_items", {surface = event.surface})
Thread.queue_action("run_chart_update", {area = event.area, surface = event.surface} )
MAP_GEN_SURFACE = surface
local data =
{
state = 0,
top_x = area.left_top.x,
top_y = area.left_top.y ,
surface = surface,
tiles = {},
entities = {},
decoratives = {}
}
Thread.queue_action("map_gen_action", data)
end
local decorative_options = {
@ -209,7 +225,7 @@ local decorative_options = {
["out-of-map"] = {},
}
function check_decorative(tile, x, y)
local function check_decorative(tile, x, y)
local options = decorative_options[tile]
local tile_decoratives = {}

View File

@ -0,0 +1,316 @@
require("locale.gen_combined.grilledham_map_gen.builders")
require("locale.utils.poisson_rng")
local function do_row(row, data)
local y = data.top_y + row
local top_x = data.top_x
for x = top_x, top_x + 31 do
-- local coords need to be 'centered' to allow for correct rotation and scaling.
local tile, entity = MAP_GEN(x + 0.5, y + 0.5, x, y)
if type(tile) == "boolean" and not tile then
table.insert(data.tiles, {name = "out-of-map", position = {x, y}})
elseif type(tile) == "string" then
table.insert(data.tiles, {name = tile, position = {x, y}})
if tile == "water" or tile == "deepwater" or tile == "water-green" or tile == "deepwater-green" then
local a = x + 1
table.insert(data.tiles, {name = tile, position = {a, y}})
local a =row + 1
table.insert(data.tiles, {name = tile, position = {x, a}})
local a = x - 1
table.insert(data.tiles, {name = tile, position = {a, y}})
local a =row - 1
table.insert(data.tiles, {name = tile, position = {x, a}})
end
end
if map_gen_decoratives then
tile_decoratives = check_decorative(tile, x, y)
for _,tbl in ipairs(tile_decoratives) do
table.insert(data.decoratives, tbl)
end
tile_entities = check_entities(tile, x, y)
for _,entity in ipairs(tile_entities) do
table.insert(data.entities, entity)
end
end
if entity then
table.insert(data.entities, entity)
end
end
end
local function do_place_tiles(data)
data.surface.set_tiles(data.tiles, true)
end
local function do_place_decoratives(data)
if not map_gen_decoratives then return end
for _, e in pairs(surface.find_entities_filtered{area=area, type="decorative"}) do
e.destroy()
end
for _, e in pairs(surface.find_entities_filtered{area=area, type="simple-entity"}) do
e.destroy()
end
local surface = data.surface
for _,d in pairs(data.decoratives) do
surface.create_decoratives{check_collision=false, decoratives={d}}
end
end
local function do_place_entities(data)
local surface = data.surface
for _, e in ipairs(data.entities) do
if surface.can_place_entity(e) then
surface.create_entity(e)
end
end
end
function run_combined_module(event)
if MAP_GEN == nil then
game.print("MAP_GEN not set")
return
end
local area = event.area
local surface = event.surface
MAP_GEN_SURFACE = surface
local data =
{
top_x = area.left_top.x,
top_y = area.left_top.y ,
surface = surface,
tiles = {},
entities = {},
decoratives = {}
}
for row = 0, 31 do
do_row(row, data)
end
do_place_tiles(data)
do_place_decoratives(data)
do_place_entities(data)
end
local decorative_options = {
["concrete"] = {},
["deepwater"] = {},
["deepwater-green"] = {
{"brown-carpet-grass", 100},
{"brown-cane-cluster", 500},
},
["dirt-3"] = {
{"brown-carpet-grass", 100},
{"brown-cane-cluster", 200},
{"sand-rock-small", 150},
},
["dirt-6"] = {
{"sand-rock-small", 150},
{"red-asterisk", 45},
{"red-desert-bush", 12},
{"rock-medium", 375},
},
["grass-1"] = {
{"green-carpet-grass-1", 3},
{"green-hairy-grass-1", 7},
{"green-bush-mini", 10},
{"green-pita", 6},
{"green-small-grass-1", 12},
{"green-asterisk", 25},
{"green-bush-mini", 7},
{"garballo", 20},
},
["grass-3"] = {
{"green-carpet-grass-1", 12},
{"green-hairy-grass-1", 28},
{"green-bush-mini", 40},
{"green-pita", 24},
{"green-small-grass-1", 48},
{"green-asterisk", 100},
{"green-bush-mini", 28},
},
["grass-2"] = {
{"green-hairy-grass-1", 56},
{"green-bush-mini", 80},
{"green-pita", 48},
{"green-small-grass-1", 96},
{"green-asterisk", 200},
{"green-bush-mini", 56},
{"brown-cane-cluster", 100},
{"brown-carpet-grass", 100},
},
["hazard-concrete-left"] = {},
["hazard-concrete-right"] = {},
["lab-dark-1"] = {},
["lab-dark-2"] = {},
["red-desert"] = {
{"brown-carpet-grass", 35},
{"orange-coral-mini", 45},
{"red-asterisk", 45},
{"red-desert-bush", 12},
{"rock-medium", 375},
{"sand-rock-small", 200},
{"sand-rock-small", 30},
},
["red-desert-dark"] = {
{"brown-carpet-grass", 70},
{"orange-coral-mini", 90},
{"red-asterisk", 90},
{"red-desert-bush", 35},
{"rock-medium", 375},
{"sand-rock-small", 200},
{"sand-rock-small", 150},
},
["sand-1"] = {
{"brown-carpet-grass", 35},
{"orange-coral-mini", 45},
{"red-asterisk", 45},
{"brown-asterisk", 45},
},
["sand-3"] = {
{"brown-carpet-grass", 35},
{"orange-coral-mini", 45},
{"brown-asterisk", 45},
},
["stone-path"] = {},
["water"] = {},
["water-green"] = {},
["out-of-map"] = {},
}
local function check_decorative(tile, x, y)
local options = decorative_options[tile]
local tile_decoratives = {}
for _,e in ipairs(options) do
name = e[1]
high_roll = e[2]
if poisson_rng_next(high_roll / 2 ) == 1 then
table.insert(tile_decoratives, {name=name, amount=1, position={x,y}})
end
end
return tile_decoratives
end
local entity_options = {
["concrete"] = {},
["deepwater"] = {},
["deepwater-green"] = {},
["water"] = {},
["water-green"] = {},
["dirt-3"] = {
{"tree-01", 500},
{"tree-06", 300},
{"tree-07", 800},
{"tree-09", 2000},
{"rock-big", 400},
},
["dirt-6"] = {
{"tree-06", 150},
{"tree-07", 400},
{"tree-09", 1000},
{"rock-big", 300},
},
["grass-1"] = {
{"tree-01", 150},
{"tree-04", 400},
{"tree-06", 400},
{"tree-07", 400},
{"tree-09", 1000},
{"rock-big", 400},
{"green-coral", 10000},
},
["grass-3"] = {
{"tree-02", 400},
{"tree-03", 400},
{"tree-04", 800},
{"tree-06", 300},
{"tree-07", 800},
{"tree-08", 400},
{"tree-09", 2000},
{"rock-big", 400},
},
["grass-2"] = {
{"tree-04", 800},
{"tree-06", 300},
{"tree-07", 400},
{"tree-09", 1000},
{"dry-tree", 1000},
{"rock-big", 200},
},
["hazard-concrete-left"] = {},
["hazard-concrete-right"] = {},
["lab-dark-1"] = {},
["lab-dark-2"] = {},
["red-desert"] = {
{"dry-tree", 400},
{"dry-hairy-tree", 400},
{"tree-06", 500},
{"tree-06", 500},
{"tree-01", 500},
{"tree-02", 500},
{"tree-03", 500},
{"sand-rock-big", 200},
{"sand-rock-big", 400},
{"red-desert-rock-huge-02", 400},
},
["red-desert-dark"] = {
{"dry-tree", 400},
{"dry-hairy-tree", 400},
{"tree-06", 500},
{"tree-06", 500},
{"tree-01", 500},
{"tree-02", 500},
{"tree-03", 500},
{"sand-rock-big", 200},
{"sand-rock-big", 400},
{"red-desert-rock-huge-02", 400},
},
["sand-1"] = {
{"dry-tree", 1000},
{"dry-hairy-tree", 1000},
{"dead-tree", 1000},
{"rock-big", 150},
},
["sand-3"] = {
{"dead-tree", 1000},
{"dry-tree", 1000},
{"dry-hairy-tree", 1000},
{"rock-big", 150},
},
["stone-path"] = {},
["out-of-map"] = {},
}
function check_entities(tile, x, y)
local options = entity_options[tile]
local tile_entity_list = {}
for _,e in ipairs(options) do
name = e[1]
high_roll = e[2]
if poisson_rng_next( high_roll / 2 ) == 1 then
table.insert(tile_entity_list, {name=name, position={x,y}})
end
end
return tile_entity_list
end

View File

@ -1,4 +1,8 @@
--require "locale.gen_combined.grilledham_map_gen.map_gen_no_thread"
map_gen_decoratives = false -- Generate our own decoratives
map_gen_rows_per_tick = 4 -- Inclusive integer between 1 and 32. Used for map_gen_threaded, higher numbers will generate map quicker but cause more lag.
-- Recommend to use map_gen, but map_gen_not_threaded may be useful for testing / debugging.
--require "locale.gen_combined.grilledham_map_gen.map_gen_not_threaded"
require "locale.gen_combined.grilledham_map_gen.map_gen"
local pic = require "locale.gen_combined.grilledham_map_gen.data.template"

View File

@ -21,12 +21,20 @@ global.next_async_callback_time = -1
global.actions_queue_n = 0
local function on_tick()
for action = 1, get_actions_per_tick() do
if global.actions_queue[1] then
if global.actions_queue[1] then
local callback = global.actions_queue[1]
function call(params)
return _G[callback.action](params)
end
local success, result = pcall(call, callback.params) -- result is error if not success else result is a boolean for if the action should stay in the queue.
if not success then
log(result)
global.actions_queue_n = global.actions_queue_n - 1
local callback = global.actions_queue[1]
local _, err = pcall(_G[callback.action], callback.params)
if err then log(err) end
table.remove(global.actions_queue, 1)
table.remove(global.actions_queue, 1)
elseif not result then
global.actions_queue_n = global.actions_queue_n - 1
table.remove(global.actions_queue, 1)
end
end
end
if game.tick == global.next_async_callback_time then