diff --git a/programs/level.c b/programs/level.c index 38ca705..b303788 100644 --- a/programs/level.c +++ b/programs/level.c @@ -237,7 +237,7 @@ int main() levelModelInit(); S3L_initScene(&levelModel,1,&scene); - +/* S3L_Unit s = S3L_FRACTIONS_PER_UNIT / 3; S3L_Vec4 scale; @@ -245,7 +245,7 @@ int main() S3L_setVec4(&scale,s,s,s,S3L_FRACTIONS_PER_UNIT); scene.models[0].transform.scale = scale; - +*/ int running = 1; while (running) // main loop diff --git a/programs/levelModel.h b/programs/levelModel.h index 81aa9d7..bbfb0b1 100644 --- a/programs/levelModel.h +++ b/programs/levelModel.h @@ -3,149 +3,149 @@ #define LEVEL_VERTEX_COUNT 143 const S3L_Unit levelVertices[LEVEL_VERTEX_COUNT * 3] = { - -4303, -84, -1724, // 0 - -2255, -84, -3772, // 3 - -6351, -84, -1724, // 6 - -207, -84, -7868, // 9 - -207, -84, -3772, // 12 - -2255, -84, 323, // 15 - -207, -84, -1724, // 18 - -6351, -84, 323, // 21 - -4815, -84, -2236, // 24 - 1840, -2132, -7868, // 27 - -4815, 4011, -2236, // 30 - 1840, -2132, -3772, // 33 - -6863, -84, 8003, // 36 - -4303, -84, 2371, // 39 - 304, 4011, 6467, // 42 - -2255, -84, 2371, // 45 - 5936, -2132, -3772, // 48 - 6448, -2132, -2236, // 51 - 8496, 4011, -2236, // 54 - 8496, -2132, -2236, // 57 - 5936, -2132, -1724, // 60 - 6448, 4011, -7868, // 63 - 304, -84, 2371, // 66 - -207, -6228, -3772, // 69 - -207, -6228, -1724, // 72 - 3888, -6228, -3772, // 75 - -2255, -6228, 323, // 78 - 304, -84, 6467, // 81 - -4303, -6228, 323, // 84 - 3888, -6228, -1724, // 87 - 7984, -2132, -1724, // 90 - 5936, -6228, 323, // 93 - 7984, -6228, 323, // 96 - -9423, -596, 2883, // 99 - -9423, -596, 323, // 102 - 12080, -2132, -2236, // 105 - 5936, -6228, -1724, // 108 - -6863, -84, -2236, // 111 - -6863, -84, 835, // 114 - -4815, -84, 2883, // 117 - -4815, -84, 5955, // 120 - 7984, -84, 2371, // 123 - 6448, 4011, -2236, // 126 - -4303, 4011, 2371, // 129 - 304, 4011, 2371, // 132 - -9423, 4011, -1724, // 135 - -9423, -84, -3772, // 138 - -207, 4011, 5955, // 141 - -4815, 4011, 5955, // 144 - -4815, 4011, 2883, // 147 - -4303, 4011, -1724, // 150 - -6351, 4011, 323, // 153 - -2255, 4011, -3772, // 156 - -2255, 4011, -7868, // 159 - -6351, 4011, -1724, // 162 - 7984, 4011, 2371, // 165 - 7984, 4011, -1724, // 168 - 8496, -84, 2371, // 171 - 8496, 4011, 2371, // 174 - 5936, 4011, -7868, // 177 - 5936, 4011, -1724, // 180 - 12080, -84, 2371, // 183 - 12080, -84, 6467, // 186 - -2255, -596, 2371, // 189 - 12080, 4011, 6467, // 192 - 10032, -2132, -7868, // 195 - 12080, -2132, -5820, // 198 - 10032, 4011, -7868, // 201 - 12080, 4011, -5820, // 204 - -6351, -4180, 4419, // 207 - -2255, -6228, 4419, // 210 - -4303, -6228, 4419, // 213 - 5936, -6228, 4419, // 216 - 7984, -6228, 4419, // 219 - 5936, -2132, 6467, // 222 - 7984, -2132, 6467, // 225 - 5936, -6228, 6467, // 228 - 7984, -6228, 6467, // 231 - 7984, -6228, -1724, // 234 - -6863, 4011, 835, // 237 - -6863, 4011, -2236, // 240 - -9423, 4011, -3772, // 243 - -13519, -84, -3772, // 246 - -6351, -4180, 323, // 249 - -9423, -4180, 323, // 252 - -13519, -4180, 323, // 255 - -13519, -4180, 4419, // 258 - -6863, 4011, 8003, // 261 - -2255, -2132, 6467, // 264 - -4303, -2132, 6467, // 267 - -2255, -6228, 6467, // 270 - -4303, -596, 4419, // 273 - -13519, -596, 2883, // 276 - -13519, 4011, -1724, // 279 - -13519, -596, 4419, // 282 - -2255, -596, 323, // 285 - 7984, -596, 2371, // 288 - 12080, -2132, -1724, // 291 - 12080, -596, 2371, // 294 - 12080, -6228, 6467, // 297 - -4303, -596, 6467, // 300 - 12080, -6228, -1724, // 303 - -207, -84, 5955, // 306 - -207, -84, 2883, // 309 - -8911, -84, 8003, // 312 - -8911, -84, -3772, // 315 - -207, 4011, 2883, // 318 - -8911, 4011, 8003, // 321 - -8911, 4011, -3772, // 324 - -2767, -84, -4284, // 327 - -2767, 4011, -4284, // 330 - -2767, 4011, -7868, // 333 - -13519, -84, -7868, // 336 - -13519, 4011, -7868, // 339 - 12080, -596, 6467, // 342 - -207, -84, 5571, // 345 - -207, -84, 3420, // 348 - -207, 2277, 5571, // 351 - -207, 2869, 4949, // 354 - -207, 2869, 4082, // 357 - -207, 2277, 3420, // 360 - 304, -84, 3420, // 363 - 304, -84, 5571, // 366 - 304, 2277, 3420, // 369 - 304, 2869, 4082, // 372 - 304, 2869, 4949, // 375 - 304, 2277, 5571, // 378 - -2255, 3019, -7868, // 381 - -2255, -84, -5529, // 384 - -2255, 3019, -6366, // 387 - -2255, 2285, -5529, // 390 - -2767, 3019, -7868, // 393 - -2767, -84, -5529, // 396 - -2767, 3019, -6366, // 399 - -2767, 2285, -5529, // 402 - 5936, 1511, -7868, // 405 - 5936, -2132, -4724, // 408 - 5936, 693, -4724, // 411 - 5936, 1511, -5289, // 414 - 6448, -2132, -4724, // 417 - 6448, 1511, -7868, // 420 - 6448, 693, -4724, // 423 - 6448, 1511, -5289 // 426 + -1291, -25, -517, // 0 + -676, -25, -1131, // 3 + -1905, -25, -517, // 6 + -62, -25, -2360, // 9 + -62, -25, -1131, // 12 + -676, -25, 96, // 15 + -62, -25, -517, // 18 + -1905, -25, 96, // 21 + -1444, -25, -671, // 24 + 552, -639, -2360, // 27 + -1444, 1203, -671, // 30 + 552, -639, -1131, // 33 + -2059, -25, 2400, // 36 + -1291, -25, 711, // 39 + 91, 1203, 1940, // 42 + -676, -25, 711, // 45 + 1780, -639, -1131, // 48 + 1934, -639, -671, // 51 + 2548, 1203, -671, // 54 + 2548, -639, -671, // 57 + 1780, -639, -517, // 60 + 1934, 1203, -2360, // 63 + 91, -25, 711, // 66 + -62, -1868, -1131, // 69 + -62, -1868, -517, // 72 + 1166, -1868, -1131, // 75 + -676, -1868, 96, // 78 + 91, -25, 1940, // 81 + -1291, -1868, 96, // 84 + 1166, -1868, -517, // 87 + 2395, -639, -517, // 90 + 1780, -1868, 96, // 93 + 2395, -1868, 96, // 96 + -2827, -178, 864, // 99 + -2827, -178, 96, // 102 + 3624, -639, -671, // 105 + 1780, -1868, -517, // 108 + -2059, -25, -671, // 111 + -2059, -25, 250, // 114 + -1444, -25, 864, // 117 + -1444, -25, 1786, // 120 + 2395, -25, 711, // 123 + 1934, 1203, -671, // 126 + -1291, 1203, 711, // 129 + 91, 1203, 711, // 132 + -2827, 1203, -517, // 135 + -2827, -25, -1131, // 138 + -62, 1203, 1786, // 141 + -1444, 1203, 1786, // 144 + -1444, 1203, 864, // 147 + -1291, 1203, -517, // 150 + -1905, 1203, 96, // 153 + -676, 1203, -1131, // 156 + -676, 1203, -2360, // 159 + -1905, 1203, -517, // 162 + 2395, 1203, 711, // 165 + 2395, 1203, -517, // 168 + 2548, -25, 711, // 171 + 2548, 1203, 711, // 174 + 1780, 1203, -2360, // 177 + 1780, 1203, -517, // 180 + 3624, -25, 711, // 183 + 3624, -25, 1940, // 186 + -676, -178, 711, // 189 + 3624, 1203, 1940, // 192 + 3009, -639, -2360, // 195 + 3624, -639, -1746, // 198 + 3009, 1203, -2360, // 201 + 3624, 1203, -1746, // 204 + -1905, -1254, 1325, // 207 + -676, -1868, 1325, // 210 + -1291, -1868, 1325, // 213 + 1780, -1868, 1325, // 216 + 2395, -1868, 1325, // 219 + 1780, -639, 1940, // 222 + 2395, -639, 1940, // 225 + 1780, -1868, 1940, // 228 + 2395, -1868, 1940, // 231 + 2395, -1868, -517, // 234 + -2059, 1203, 250, // 237 + -2059, 1203, -671, // 240 + -2827, 1203, -1131, // 243 + -4055, -25, -1131, // 246 + -1905, -1254, 96, // 249 + -2827, -1254, 96, // 252 + -4055, -1254, 96, // 255 + -4055, -1254, 1325, // 258 + -2059, 1203, 2400, // 261 + -676, -639, 1940, // 264 + -1291, -639, 1940, // 267 + -676, -1868, 1940, // 270 + -1291, -178, 1325, // 273 + -4055, -178, 864, // 276 + -4055, 1203, -517, // 279 + -4055, -178, 1325, // 282 + -676, -178, 96, // 285 + 2395, -178, 711, // 288 + 3624, -639, -517, // 291 + 3624, -178, 711, // 294 + 3624, -1868, 1940, // 297 + -1291, -178, 1940, // 300 + 3624, -1868, -517, // 303 + -62, -25, 1786, // 306 + -62, -25, 864, // 309 + -2673, -25, 2400, // 312 + -2673, -25, -1131, // 315 + -62, 1203, 864, // 318 + -2673, 1203, 2400, // 321 + -2673, 1203, -1131, // 324 + -830, -25, -1285, // 327 + -830, 1203, -1285, // 330 + -830, 1203, -2360, // 333 + -4055, -25, -2360, // 336 + -4055, 1203, -2360, // 339 + 3624, -178, 1940, // 342 + -62, -25, 1671, // 345 + -62, -25, 1026, // 348 + -62, 683, 1671, // 351 + -62, 860, 1484, // 354 + -62, 860, 1224, // 357 + -62, 683, 1026, // 360 + 91, -25, 1026, // 363 + 91, -25, 1671, // 366 + 91, 683, 1026, // 369 + 91, 860, 1224, // 372 + 91, 860, 1484, // 375 + 91, 683, 1671, // 378 + -676, 905, -2360, // 381 + -676, -25, -1658, // 384 + -676, 905, -1910, // 387 + -676, 685, -1658, // 390 + -830, 905, -2360, // 393 + -830, -25, -1658, // 396 + -830, 905, -1910, // 399 + -830, 685, -1658, // 402 + 1780, 453, -2360, // 405 + 1780, -639, -1417, // 408 + 1780, 207, -1417, // 411 + 1780, 453, -1586, // 414 + 1934, -639, -1417, // 417 + 1934, 453, -2360, // 420 + 1934, 207, -1417, // 423 + 1934, 453, -1586 // 426 }; // levelVertices #define LEVEL_TRIANGLE_COUNT 293 diff --git a/programs/levelTexture1Pal.h b/programs/levelTexture1Pal.h new file mode 100644 index 0000000..44db88a --- /dev/null +++ b/programs/levelTexture1Pal.h @@ -0,0 +1,662 @@ +#ifndef LEVEL1_TEXTURE_H +#define LEVEL1_TEXTURE_H + +uint16_t level1Palette[256] = { +0,4226,8452,12678,16936,21162,25388,29614,35921,40147,44373,48599,52857,57083, +61309,65535,4193,8418,12611,16836,21029,25254,29447,33672,37865,42090,46283, +50508,54701,58926,63119,65264,2177,6402,8579,12804,14981,19206,21383,25608, +27785,32010,34187,38412,40589,44814,46991,51184,2177,4354,6531,8709,10886,13063, +15240,17418,19595,21772,23949,26127,28304,30481,32658,34804,2178,4356,6534,8712, +10890,13068,15246,17424,19602,21780,23958,26136,28314,30492,32670,34815,2114, +4260,6374,8520,10634,12780,14894,17040,19154,21300,23414,25560,27674,29820, +31934,34079,2114,6276,8390,12552,14666,18828,20942,25104,29266,31380,35542, +37656,41818,43932,48094,50207,4161,8323,12485,16646,20808,24970,29131,33293, +37455,41616,45778,49940,54101,58263,62425,64538,4096,8192,12288,16384,20480, +24576,28672,32768,36864,40960,45056,49152,53248,57344,61440,63488,4192,8384, +12576,16768,20960,25152,29344,33536,37728,41920,46112,50304,54496,58688,62880, +64992,2176,4352,6528,8704,10880,13056,15232,17408,19584,21760,23936,26112,28288, +30464,32640,34784,128,257,385,514,642,771,899,1028,1156,1285,1413,1542,1670, +1799,1927,2024,130,260,390,520,650,780,910,1040,1170,1300,1430,1560,1690,1820, +1950,2047,34,68,102,136,170,204,238,272,306,340,374,408,442,476,510,543,2050, +4100,6150,8200,10250,12300,14350,18448,20498,22548,24598,26648,28698,30748, +32798,36895,4097,8194,12292,16389,20486,24584,28681,32779,36876,40973,45071, +49168,53265,57363,61460,63509 +}; // level1Palette + +#define LEVEL1_TEXTURE_WIDTH 128 +#define LEVEL1_TEXTURE_HEIGHT 128 + +uint8_t level1Texture[16384] = { +20,20,20,20,20,20,20,20,21,21,21,20,20,20,20,20,20,20,20,20,20,20,21,20,20,20, +20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,22,21, +22,22,22,22,22,21,21,21,21,21,21,21,21,20,20,20,20,20,20,20,21,21,21,21,21,21, +21,21,21,21,21,21,21,21,21,21,21,21,21,20,20,20,21,21,21,21,21,21,21,21,21,21, +21,21,21,21,21,21,21,21,21,21,21,21,20,20,20,20,20,20,20,20,20,20,20,20,20,20, +20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,22,22,22,22,22,22,23,22,22, +22,21,22,21,21,21,21,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23, +23,23,22,22,22,22,21,22,22,22,22,21,21,20,20,20,20,20,20,21,21,21,21,21,21,21, +21,21,21,21,21,21,21,21,21,21,21,21,20,20,21,20,21,21,21,21,21,21,21,22,22,22, +22,22,22,22,22,22,22,22,22,22,22,22,22,21,22,22,21,21,20,22,20,20,25,24,25,24, +23,24,24,22,21,20,20,20,20,20,21,23,24,24,24,25,25,25,24,25,25,25,25,25,25,24, +25,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,23,24,24,23,22,20,20,20,20,21,21,21,21,22,23,24,24,24,24, +24,24,23,23,23,24,24,24,24,24,24,23,23,24,24,24,24,24,24,24,25,25,25,25,25,25, +25,25,24,25,25,25,25,25,25,24,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26, +26,25,22,21,20,20,20,21,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25, +25,25,25,25,25,25,25,24,25,25,25,24,24,24,24,24,25,25,24,24,24,24,24,25,25,25, +25,25,25,25,25,25,24,25,25,23,21,20,20,20,21,21,21,22,24,25,25,25,25,25,25,25, +25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26, +26,26,26,26,26,26,26,26,26,26,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,25, +24,21,20,20,20,22,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25, +25,25,25,25,25,25,25,25,24,24,24,24,24,24,25,25,24,24,25,25,25,25,24,25,25,25, +25,25,25,25,25,25,25,24,21,21,20,21,21,22,23,24,25,25,26,26,26,25,25,25,25,25, +25,25,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26, +26,26,26,26,26,26,26,26,26,26,25,25,25,25,25,25,24,25,25,26,26,26,26,25,24,21, +20,20,20,22,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25, +25,25,25,25,25,24,22,21,20,21,21,22,23,24,24,25,25,25,25,25,24,23,23,23,23,23, +23,23,23,23,23,23,23,24,23,24,24,23,24,24,24,24,24,24,24,24,25,25,25,25,26,25, +25,25,25,25,25,25,25,25,25,25,25,24,24,24,22,22,22,23,24,25,26,25,24,21,20,20, +20,23,25,25,25,25,25,25,25,25,25,25,25,25,25,25,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25, +25,25,25,24,23,21,20,20,21,22,23,24,24,23,23,23,23,23,22,22,22,22,22,22,22,22, +22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,24,23,24,24,24,24, +24,24,24,24,23,23,23,23,22,22,22,22,22,22,22,22,22,24,25,25,23,22,20,20,21,23, +25,25,25,25,25,25,25,25,25,25,24,24,24,23,23,23,23,23,23,23,23,23,23,23,23,23, +23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,25,25,25,25,25, +24,24,23,21,21,20,20,22,23,23,23,23,23,23,23,22,22,22,22,22,22,22,22,22,22,22, +22,22,21,21,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,22,22,22,22,22,22, +22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,25,25,22,22,20,20,20,24,25,25, +25,25,25,25,25,23,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23, +22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,24,24,25,25,25,24,24,24, +23,21,21,20,20,22,23,23,23,23,23,23,23,22,22,22,22,22,22,22,22,22,21,21,21,21, +21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22, +22,22,22,22,22,22,22,22,22,22,22,22,22,23,24,24,22,23,21,20,20,23,25,25,25,25, +24,23,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22, +22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,25,25,25,24,24,24,23,21, +21,20,21,22,23,23,23,23,23,23,23,23,22,22,22,22,22,22,22,22,22,22,21,21,21,21, +22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22, +22,22,22,22,22,22,22,22,22,22,22,23,24,24,22,23,21,20,20,23,25,25,25,25,23,23, +22,22,22,22,22,22,22,22,21,22,22,22,22,22,22,22,22,22,22,22,22,22,23,22,22,23, +23,23,23,23,22,22,22,22,22,22,22,22,22,22,22,22,24,24,24,24,24,23,23,21,21,20, +21,22,23,23,23,23,23,23,23,23,22,22,22,22,22,22,23,23,23,22,22,22,22,22,22,22, +22,22,22,22,22,22,22,23,23,23,23,22,22,22,23,23,23,23,23,23,23,23,23,23,23,22, +22,22,22,22,23,23,22,23,23,23,24,24,22,23,21,20,20,22,25,25,25,24,23,22,22,22, +22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,22,23,23,23,23, +23,23,23,23,22,23,23,23,23,22,22,22,22,22,24,25,24,24,24,23,23,22,21,20,21,22, +23,23,23,23,23,23,23,23,23,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23, +23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23, +23,22,23,23,22,23,23,23,24,24,22,23,21,20,20,23,25,25,25,23,23,22,23,23,23,23, +23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,23,23,23,23,23,23,23,22, +22,22,22,22,23,23,23,23,23,22,22,23,24,25,24,24,23,23,23,22,21,20,21,22,23,23, +23,23,23,23,23,23,23,23,23,24,23,23,23,23,23,23,23,23,23,24,23,23,24,23,23,23, +24,23,23,23,24,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23, +23,23,23,23,23,24,24,23,22,23,21,20,20,23,25,25,26,23,23,23,23,23,23,23,23,23, +23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23, +23,23,23,23,23,23,23,23,23,23,23,24,24,24,23,23,23,22,21,20,21,22,23,23,23,23, +23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,23,23,24,24,24, +24,24,24,24,23,24,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23, +23,23,23,24,24,23,22,23,22,20,20,22,25,25,26,24,24,23,23,23,23,23,23,23,23,23, +23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,23,23,23, +23,23,23,23,23,23,23,23,23,24,24,24,23,23,23,22,21,20,21,22,23,23,23,23,23,23, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,23,23,23,24,23,23,24,23,23,23,23,23,23,24,24,24,24, +24,24,24,23,22,23,22,20,20,22,24,25,25,24,24,24,23,23,23,23,23,23,23,23,23,23, +23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,23,23,23,23,24,24,23,23,24, +23,23,24,24,24,23,23,24,24,24,23,23,23,22,21,20,21,22,23,23,23,23,23,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,23,22,22,21,20,19,21,24,24,25,24,24,24,24,24,23,23,23,23,23,23,23,23,23,23, +23,24,24,23,23,23,23,23,24,23,23,23,24,24,24,23,23,23,23,23,23,23,23,23,23,23, +23,24,23,23,23,24,24,24,23,23,23,22,21,20,21,22,23,23,23,23,23,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23, +22,22,21,21,19,20,23,24,25,24,24,24,24,24,24,24,24,24,24,24,24,24,23,23,23,24, +24,24,24,23,24,23,24,24,23,24,24,24,24,23,23,23,23,23,23,23,23,23,23,23,23,24, +23,23,23,23,24,24,23,23,22,22,20,20,21,22,23,23,23,23,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,23,23,24,24,24,24,23,22,22, +21,21,20,20,22,24,25,24,24,24,24,24,24,24,24,24,23,23,23,23,23,23,23,23,23,23, +23,23,24,24,24,24,24,23,23,24,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23, +23,24,25,25,24,23,22,22,21,20,21,22,23,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,23,24,24,24,24,23,23,23,24,23,23,23,24,24,24,24,23,22,22,21,20, +20,20,21,23,24,24,24,24,24,24,24,24,24,23,23,23,23,23,23,23,23,23,23,23,23,23, +24,24,24,24,24,24,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +25,25,24,23,22,22,20,20,21,22,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,23,24,24,24,23,23,23,23,23,24,24,24,24,24,24,24,23,22,22,21,20,20,20, +22,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,23,23,23,23,23,24,24,24,24, +24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25, +24,23,22,21,20,20,20,22,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,22,22,21,20,20,20,22,23, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,24,23, +22,21,20,20,20,22,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,22,22,21,20,20,20,22,23,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,24,23,22,21, +20,19,21,22,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,23,22,22,21,21,20,20,21,23,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,24,23,22,21,20,20, +21,22,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,23,22,22,21,20,20,20,21,23,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,24,23,22,21,20,20,21,22, +23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,22,22,21,20,20,20,21,23,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,24,23,22,21,21,20,21,22,23,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,25,24,23,22,21,20,20,20,21,22,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,25,25,24,23,22,22,20,20,21,22,23,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,25,24,22,22,21,20,20,20,21,22,24,25,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,25,25,24,23,22,22,20,20,21,22,23,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,23,22,20,20,20,20,21,22,24,25,24,24,24,24,24,24,24,24,24,24,23,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,25,25,24,23,22,22,20,20,20,22,23,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,23,22,20,20,21,20,21,22,24,25,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,25,25,24,23,22,22,20,20,20,22,23,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +22,22,21,21,21,21,20,22,24,25,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,25,25,24,22,22,22,20,20,21,22,23,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,24,22,22, +21,20,21,21,20,22,23,25,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,25,25,23,22,22,22,21,20,21,22,23,24,25,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,24,22,22,21,20, +21,20,21,22,23,25,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +25,24,23,22,22,22,21,20,21,22,23,24,25,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,24,22,22,21,20,20,20, +20,22,23,25,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,24, +23,22,22,22,21,21,20,22,23,24,25,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,23,22,22,21,20,20,20,21,22, +22,24,25,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,24,24,24,24,25,25,24,22,22, +22,22,20,20,20,21,23,24,25,25,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,23,23,23,23,23,23,23,22,22,22,20,20,20,20,20,22,22,23, +25,25,25,24,24,25,25,25,24,24,24,24,25,25,25,25,25,25,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,23,22,21,22,22, +20,20,20,21,23,24,25,25,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,23,23,23,23,23,23,23,23,22,22,22,22,21,20,20,21,20,20,22,22,22,24,25, +25,25,25,25,25,25,24,24,24,24,24,24,24,24,24,24,24,23,23,24,24,24,24,24,24,24, +24,24,24,24,24,25,25,25,25,25,25,25,24,24,24,24,24,23,23,22,22,22,22,22,20,20, +20,21,23,23,24,25,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,23,23,23,23,23,23,23,23,23, +23,23,23,23,22,22,22,22,22,22,22,22,22,21,21,21,21,20,20,22,22,22,22,23,24,24, +24,24,24,23,23,24,23,24,23,23,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22, +23,24,24,24,24,24,24,24,23,22,23,23,22,22,22,22,22,22,21,22,22,21,20,20,20,21, +23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,23,23,23,23,23,23,23,23, +23,23,23,23,23,24,24,24,24,24,24,23,23,23,23,23,23,23,22,23,23,23,23,22,23,23, +22,22,22,22,22,22,22,22,22,22,21,21,21,20,20,20,20,21,22,22,22,22,22,22,22,22, +22,21,21,22,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21, +21,22,22,21,21,21,21,21,21,21,21,21,21,21,21,21,21,22,21,21,21,20,20,20,22,23, +23,23,23,23,23,24,24,24,24,24,24,24,24,23,23,23,23,23,23,23,23,23,23,23,23,23, +23,23,23,23,23,23,23,23,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22, +21,21,21,21,21,21,21,20,20,20,20,20,20,20,20,20,20,22,21,21,22,21,21,21,21,21, +21,21,21,20,21,21,21,21,20,20,20,20,20,21,21,20,20,20,20,20,20,20,20,20,20,20, +21,21,21,21,20,20,21,21,21,21,21,21,21,21,21,21,21,21,20,20,20,20,21,22,22,23, +23,23,23,23,23,23,23,23,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22, +22,22,22,22,22,22,21,22,22,22,21,21,21,21,21,21,21,21,21,21,21,21,21,21,20,20, +20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21, +21,21,21,21,21,21,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,21,20,20,20,20, +20,20,21,21,21,21,21,21,21,21,21,21,21,20,20,20,20,20,20,20,20,21,22,22,23,23, +23,23,22,22,22,22,21,21,22,21,21,22,22,22,22,22,21,21,21,21,21,21,21,22,21,21, +21,21,21,20,21,21,21,21,20,20,20,20,20,20,20,20,20,20,20,20,20,20,19,19,20,20, +20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,20,20, +21,21,21,21,20,20,20,20,20,19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, +20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21, +21,21,21,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, +20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, +20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,19,19,19,20,20,20,20,20,20,20, +20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, +20,20,21,20,20,21,21,21,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,20,20,20, +20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, +20,20,20,20,20,21,21,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21, +21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,20,20,20,20, +20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21, +21,21,22,21,22,22,22,21,21,21,21,21,21,21,22,21,21,21,21,21,21,21,21,21,21,21, +21,21,21,21,21,20,21,21,21,21,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, +20,21,21,21,21,21,21,20,21,21,21,21,21,20,20,20,20,20,20,22,22,23,23,23,24,24, +24,23,23,22,23,24,23,24,24,23,23,24,25,24,25,24,24,24,24,25,24,23,23,24,23,23, +23,23,22,22,21,22,22,22,22,21,20,20,20,20,20,19,20,20,20,20,21,22,24,24,25,25, +24,24,24,24,24,24,24,24,24,23,23,23,23,23,23,23,23,23,22,23,23,22,23,23,23,23, +23,23,24,23,23,23,23,23,23,23,23,23,23,23,23,23,23,22,22,22,22,22,22,22,23,22, +22,23,23,22,22,22,22,22,21,21,21,21,20,20,20,20,22,24,25,26,26,26,26,26,26,26, +26,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,25,25, +26,25,25,25,25,25,25,25,24,25,24,22,20,19,20,21,21,24,25,25,26,26,26,26,26,26, +26,25,26,8,26,26,26,25,25,25,25,24,24,24,25,25,25,24,24,25,25,25,25,25,25,25,25, +25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,24,24,24,24,24,25,24,24,24,25, +25,25,24,23,23,24,23,22,21,20,21,20,20,23,25,26,26,9,9,9,26,26,26,26,26,26,26, +26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26, +26,26,26,26,26,26,26,25,21,19,20,21,22,24,25,26,26,26,26,26,8,26,8,9,9,8,9,8,26, +26,26,26,25,25,25,25,25,25,25,25,25,25,26,26,26,25,25,25,25,25,25,25,25,25,25, +25,25,25,25,25,25,25,25,25,25,25,25,25,26,8,8,9,9,9,9,9,9,9,26,26,25,25,26,24, +22,21,20,21,23,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,25, +26,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,25,26,26,26,25, +21,19,20,21,23,25,25,26,26,26,26,8,8,8,9,9,9,8,8,8,8,8,26,25,25,25,25,25,25,8, +26,25,26,26,26,26,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25, +25,25,25,26,9,9,9,9,9,9,9,9,9,9,9,9,26,26,26,26,23,21,20,20,24,24,24,24,24,24, +24,24,23,24,24,25,25,24,24,24,23,23,23,23,24,24,23,23,23,23,24,24,24,22,22,22, +24,24,23,24,23,24,24,25,24,23,23,24,25,26,26,25,20,19,20,21,22,24,25,9,9,9,8,8, +8,8,8,8,25,25,25,25,25,24,24,24,24,24,24,24,23,24,24,25,25,24,24,23,24,23,24,24, +23,24,25,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,24,24,24,25,25,25,8,25,8, +9,9,9,9,9,9,26,26,26,24,20,20,20,23,23,23,23,22,22,22,22,22,22,22,22,22,22,22, +22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,21,21,21,21,21, +21,22,21,22,24,25,25,21,19,20,21,22,23,25,25,25,24,24,25,25,24,23,23,24,23,23, +23,23,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22, +22,22,22,23,23,23,23,23,23,22,23,23,22,22,22,22,22,22,23,23,23,23,23,24,24,24, +24,24,25,8,8,25,21,20,20,22,23,23,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22, +22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22, +21,22,24,24,20,20,21,21,22,23,24,24,23,22,23,23,22,22,22,22,23,22,23,22,22,22, +22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22, +22,21,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23, +24,25,24,22,20,20,22,23,23,22,22,22,22,22,22,22,22,23,23,22,22,22,22,22,22,22, +22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23, +23,22,20,20,21,21,22,22,24,24,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23, +23,23,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22, +22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,22,23,24, +25,21,20,20,23,23,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23, +23,23,23,23,23,23,23,23,23,23,23,23,23,23,22,22,22,22,22,22,22,22,22,23,23,21, +20,20,20,21,22,22,24,24,23,24,24,23,24,24,23,23,23,23,23,23,23,23,23,23,23,23, +23,23,23,23,22,22,22,22,23,23,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22, +22,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,24,24,21, +20,20,23,23,23,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23, +23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,22,22,22,22,22,22,22,21,20,19, +20,21,22,22,23,24,24,24,23,23,23,23,23,23,23,23,24,23,23,23,23,23,23,23,23,23, +23,23,23,23,23,23,23,23,23,23,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22, +22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,24,21,21,20, +23,23,23,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,23,23,23,24, +23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,22,22,22,21,20,20,20,21, +22,22,23,24,24,24,24,24,23,24,24,23,24,23,24,23,24,23,23,24,23,23,23,23,23,23, +23,23,23,23,23,23,23,23,23,23,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22, +22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,20,20,20,23,23, +23,22,22,23,23,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23, +23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,22,22,22,21,20,20,20,21,22,22, +23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,23,23, +23,23,23,23,23,23,23,23,23,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22, +22,23,23,23,23,23,23,23,23,23,23,22,23,23,23,22,22,23,22,21,20,20,23,23,23,22, +22,22,23,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23, +23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,22,22,21,21,20,21,21,22,22,23,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,23,23,23,23, +24,23,24,23,23,23,23,23,23,23,23,23,23,23,23,22,22,22,22,22,22,22,22,23,23,23, +23,23,23,23,23,23,23,23,23,22,22,22,22,22,22,22,22,20,20,20,22,23,23,23,22,23, +23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23, +23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,22,21,21,21,22,22,22,23,23,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,23,23,23,23,23,23,23,23,23,23,23,23,23,22,22,22,22,22,22,23,23,23,23,23,23, +23,23,23,23,23,23,22,22,22,22,22,22,22,22,21,20,20,20,22,23,23,23,23,23,23,23, +23,23,23,23,23,23,23,23,23,23,23,23,24,23,23,23,23,24,23,23,23,23,23,23,24,23, +23,23,23,23,23,24,23,23,23,23,23,23,23,22,21,21,21,22,22,22,23,23,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23, +23,23,23,23,23,23,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23, +23,23,23,23,22,22,22,22,22,22,22,22,22,20,21,20,22,23,23,23,23,23,24,24,24,24, +24,24,24,24,24,24,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,23,23,24,24,24,24,24,24,23,23,21,21,21,21,22,22,22,23,24,24,24,23,24,24,24, +24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,23, +23,23,23,23,22,22,22,22,23,23,22,23,23,23,23,24,24,24,24,24,24,23,23,23,23,23, +23,23,22,23,22,22,22,22,22,22,22,20,21,20,22,23,23,23,23,24,24,24,24,24,24,24, +24,24,23,23,24,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,23,21,21,21,21,22,22,22,23,23,24,24,23,24,23,23,23,23, +23,23,24,24,24,24,24,23,23,24,23,24,24,24,23,23,23,23,24,23,24,23,24,23,23,23, +23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,23,23,23,23,23,23,22, +22,22,22,22,22,23,23,23,22,21,21,20,22,23,23,23,23,24,24,24,24,24,24,24,24,24, +24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,23,22,21,21,20,22,22,22,23,23,24,24,24,24,24,24,23,23,23,23, +24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,23, +24,24,24,24,24,24,23,23,23,23,24,24,24,24,24,24,24,24,24,24,23,23,23,23,23,23, +23,23,23,23,23,23,23,21,20,19,22,23,23,23,23,23,23,24,23,23,23,24,24,24,23,23, +23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,23,22,22,21,21,22,22,22,23,23,23,24,23,24,24,24,23,23,23,23,24,23, +24,23,24,23,23,24,23,24,24,24,24,24,24,24,24,24,24,24,24,23,23,23,23,23,23,24, +23,23,23,23,23,23,23,23,24,24,24,24,24,23,23,23,23,23,23,23,23,23,23,24,24,24, +24,24,24,24,22,21,21,19,21,23,23,24,24,24,24,24,23,23,23,24,24,24,24,23,24,23, +23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,23,22,22,21,21,22,22,22,23,23,24,24,23,23,24,24,23,23,23,23,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,23,24,24,24,24, +24,24,24,23,23,23,23,24,23,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24, +24,24,23,21,20,20,22,22,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +23,22,22,21,21,22,22,23,23,24,24,24,23,23,23,23,23,23,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,23,23,23,23,24,24,24,24,24,24,24,23,23,23,23,23,24,24,24,24,24,24,24,24,24, +23,21,20,20,21,22,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,22, +22,21,22,22,22,23,23,24,24,24,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23, +23,23,23,23,24,24,24,24,24,24,24,23,24,23,24,24,24,24,24,24,24,24,24,24,23,21, +20,20,21,22,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,22,22,22,21, +22,22,22,23,23,24,24,24,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,21,20,20, +21,22,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,22,22,22,21,22,22, +22,23,23,24,24,24,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,21,20,20,21,22, +23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,22,22,22,21,21,22,22,22, +23,24,24,24,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,21,20,19,20,22,23,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,22,22,21,21,22,22,22,23,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,21,20,20,20,22,23,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,22,22,21,21,21,21,22,23,24,24,24, +24,24,24,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,22,21,20,20,20,22,23,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,23,22,22,21,21,21,21,22,23,24,24,24,24,24, +24,23,24,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24, +24,24,24,24,24,24,24,24,24,24,24,23,22,22,21,20,20,22,23,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,23,22,22,21,21,21,21,21,23,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,23,22,22,21,20,20,22,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,23,22,22,21,21,21,21,21,23,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,23,22,22,21,20,20,22,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,25,24,23,22,22,21,20,21,21,22,23,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,23,24,24,24,24,24,24,24,24,24,24,23,23,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,23,22,22,20,19,20,22,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,25,24,23,22,22,20,20,21,21,21,23,24,24,24,24,24,24,24,24,24,24,24,23,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +23,23,23,23,24,24,24,23,24,24,23,23,24,23,23,23,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,22,22,20,19,21,22,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24, +25,24,23,22,21,20,20,21,21,21,22,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23, +23,24,24,24,24,24,24,24,24,24,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24, +24,24,22,22,20,19,21,22,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,24, +23,22,21,20,20,21,21,21,22,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +22,22,20,19,20,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,23,21, +21,20,20,21,21,21,22,23,24,23,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,24,23,22, +20,19,20,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,23,22,21,20, +20,21,21,21,22,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,22,21,20,19, +20,22,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,23,22,21,20,20,21, +21,22,22,23,24,25,25,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,22,21,20,19,19,20, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,24,23,21,21,20,20,21,21,22, +22,23,23,24,24,25,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,22,21,20,19,19,19,21,22, +23,24,24,25,25,25,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,24,23,22,21,20,21,21,21,21,23,23, +23,23,23,24,25,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,22,21,20,19,19,19,19,21,22,22, +22,23,23,23,22,21,22,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,22,21,20,21,21,21,21,22,23,23,23, +23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,22,21,20,19,19,19,21,22,22,22,22,21, +22,21,21,21,21,21,22,22,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,23,22,21,20,21,21,21,21,21,23,23,23,23,23, +24,24,24,24,24,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,23,24,24, +24,24,24,24,24,24,24,24,24,24,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23, +23,23,23,24,24,24,24,24,24,24,24,23,22,21,19,19,19,19,22,23,23,23,22,20,21,21, +22,22,23,23,23,22,22,22,22,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,23,22,21,20,21,21,21,21,21,22,23,23,23,22,23,23, +22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23, +23,23,23,23,23,23,23,23,23,23,22,22,22,23,23,22,22,22,22,23,23,23,23,23,23,23, +23,23,23,23,23,23,23,23,24,23,22,20,19,19,19,20,22,22,22,22,21,20,20,21,22,22, +23,23,23,23,22,21,21,21,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23, +22,22,22,23,22,23,23,23,22,21,21,20,21,21,21,21,21,21,21,22,22,22,22,22,22,22, +22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22, +22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22, +22,22,22,22,23,22,23,22,21,19,19,18,19,20,20,21,21,21,21,20,19,20,20,20,20,21, +21,21,21,20,20,20,20,20,20,20,21,20,20,20,20,20,21,21,21,21,21,21,21,21,21,21, +21,22,21,22,22,21,21,21,20,20,20,20,21,21,21,21,21,21,21,22,22,22,22,22,22,21, +21,21,21,21,21,21,21,21,21,22,21,22,22,22,22,22,22,21,22,21,22,22,22,22,22,22, +22,22,22,22,22,22,22,22,22,21,21,21,21,21,22,22,21,21,21,21,21,21,21,21,21,21, +21,21,21,21,21,20,20,19,19,18,19,19,19,20,19,19,20,20,20,19,19,20,20,20,19,19, +19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,20, +21,20,20,21,21,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21, +21,21,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,21, +22,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,20,20,20,20,20,20,20,20,20,20, +20,20,20,19,19,18,18,18,19,19,19,19,19,19,19,19,19,19,19,20,20,19,19,19,19,19, +19,19,19,20,20,20,19,19,19,19,19,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20, +20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21, +21,21,21,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,20,20,21,20,21,21,21, +21,21,21,21,21,21,21,20,20,21,20,20,20,20,20,20,20,20,20,20,20,20,19,19,20,19, +19,19,18,19,18,19,19,19,20,20,19,19,19,19,19,19,19,19,19,20,19,20,19,19,19,19, +19,19,19,19,19,19,19,19,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,21, +22,22,21,21,22,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,24, +23,22,22,22,22,22,22,22,22,22,22,22,21,21,21,21,21,20,20,20,20,21,20,20,21,20, +21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,20,21,20,19,19,19,19,19,19,19, +19,19,21,22,21,22,22,22,22,21,22,21,21,22,21,21,20,20,20,19,20,19,20,20,20,20, +20,20,20,20,20,20,20,21,21,22,22,21,21,22,23,24,23,23,23,23,23,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,24, +24,24,24,24,24,24,24,24,24,24,24,23,22,21,21,20,20,20,21,21,20,20,21,21,21,22, +21,21,21,21,21,21,22,21,21,22,22,22,23,22,22,22,21,21,21,21,21,21,22,21,21,21, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,22,22,22,23,23,23,22,22,20, +20,20,20,20,22,23,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25, +25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25, +25,25,25,25,25,25,25,25,25,25,23,22,21,20,20,21,21,21,22,23,24,23,24,24,24,24, +24,23,24,25,25,25,25,25,25,25,25,25,25,25,25,24,24,23,23,24,24,24,24,24,25,25, +25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,24,24,24,22,20,20, +20,21,23,24,25,25,25,24,25,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25, +25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25, +25,25,25,25,25,25,25,25,25,23,21,20,20,20,21,22,24,24,25,25,25,25,25,25,25,25, +26,26,26,26,26,26,26,26,26,26,26,26,26,25,25,25,25,25,25,25,25,25,25,25,25,25, +25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,23,22,20,20,20,22, +24,25,25,25,24,24,23,23,24,24,24,23,24,24,24,24,24,24,24,24,24,24,25,24,25,25, +25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25, +25,25,25,25,25,25,24,23,21,20,20,20,21,22,24,24,25,25,25,25,25,25,25,25,25,25, +25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,24,25,25,25,25,25, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,22,20,20,20,21,23,24, +24,24,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,23,22,20,20,20,21,22,24,24,24,24,25,25,25,24,25,24,24,24,24,24, +23,23,23,23,23,23,23,23,24,23,24,24,24,24,25,25,25,25,23,23,23,23,23,23,23,23, +23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,22,22,20,20,20,21,23,24,24,22, +22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23, +23,23,23,23,23,23,23,23,23,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23, +23,23,23,23,22,20,20,20,21,22,23,23,24,24,23,23,23,23,24,23,23,23,23,23,22,22, +22,22,22,22,22,21,22,22,21,22,22,22,22,22,23,23,22,22,22,22,22,22,22,22,22,22, +22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,22,20,20,20,21,23,24,23,22,22,22, +22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23, +23,23,23,23,23,22,22,22,22,22,22,22,22,22,22,22,21,22,22,22,22,21,22,22,22,22, +23,23,22,20,20,20,21,22,23,23,23,23,23,23,24,24,23,23,23,23,23,23,23,22,22,22, +22,22,22,21,21,21,21,21,21,21,21,21,22,21,21,22,22,22,22,22,22,22,22,22,22,22, +22,22,22,22,22,22,22,22,22,23,23,23,23,21,20,20,20,21,23,23,23,22,21,22,22,22, +23,23,23,23,23,23,24,23,23,23,24,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23, +23,23,23,22,23,22,23,22,22,22,22,22,22,22,22,22,22,22,22,21,22,22,22,22,22,22, +22,20,20,20,20,22,23,23,23,22,23,23,24,24,23,23,23,23,23,23,23,23,23,22,22,22, +22,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,22,21,22,21,21,22,22, +22,21,21,22,22,22,22,23,23,23,23,22,20,20,20,21,22,23,23,22,22,22,22,23,23,23, +23,23,23,23,24,23,23,23,23,23,23,24,23,23,23,23,23,24,24,24,23,23,23,23,23,23, +23,22,23,22,22,23,22,22,22,23,22,22,22,22,22,22,22,22,22,22,22,22,23,22,22,20, +20,20,20,22,23,23,23,23,23,24,24,24,23,23,23,23,23,23,23,23,23,22,22,22,22,21, +21,21,21,21,21,21,21,20,21,21,21,21,21,22,22,22,22,22,22,21,21,21,21,21,21,21, +21,21,21,22,22,23,23,23,23,22,20,20,20,21,22,23,22,22,22,22,23,23,23,23,23,23, +23,23,24,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,23,24,23,23,23,23,23,22, +23,22,22,22,22,22,23,23,22,23,22,22,22,22,22,22,22,22,22,23,23,22,22,20,20,20, +20,22,22,23,23,23,24,24,24,24,23,23,23,23,23,23,23,23,23,22,22,22,22,22,21,21, +20,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22, +22,22,22,23,23,24,23,23,21,20,20,21,22,23,23,22,22,22,23,23,23,23,23,23,24,24, +24,24,23,23,23,23,24,23,23,23,23,24,23,23,23,24,24,24,24,24,23,23,23,22,23,23, +23,23,23,23,23,23,23,23,23,23,23,22,22,22,22,23,23,23,23,22,22,21,20,20,20,22, +22,23,23,24,24,24,24,24,23,23,23,23,23,23,23,23,23,22,22,22,22,22,22,22,21,21, +21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,21,22, +22,23,23,24,23,23,22,20,20,21,22,23,22,22,22,23,23,23,23,23,23,23,23,23,23,23, +23,23,23,23,23,23,23,23,23,23,23,23,23,24,23,23,23,23,23,23,23,23,23,23,23,23, +23,23,23,23,23,23,23,23,23,23,22,22,22,22,23,23,23,22,22,21,20,20,20,22,22,23, +23,24,23,23,23,23,23,23,23,23,23,23,23,23,23,22,22,22,22,22,22,22,22,22,22,22, +22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,22,22,22,22,22,22,22,22,22,22,23, +23,24,23,23,21,20,20,21,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23, +23,23,23,23,23,23,23,23,23,23,23,24,23,23,23,23,23,23,23,23,23,23,23,23,23,23, +23,23,23,23,23,23,23,23,23,22,22,22,23,23,23,22,22,21,20,20,20,22,22,23,23,24, +23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,22,23,23,23,23, +23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,22,22,22,22,22,22,22,23,23,24, +23,23,21,21,20,21,23,23,23,23,23,23,23,23,23,23,23,23,24,23,24,23,23,23,24,23, +23,23,23,23,23,23,23,23,23,24,23,24,23,23,23,23,23,23,23,23,23,23,23,23,23,23, +23,23,23,23,23,23,23,23,23,23,23,23,23,22,22,21,20,20,20,22,22,23,24,24,24,24, +24,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23, +24,23,23,23,23,23,23,23,23,23,23,23,23,23,23,22,22,22,22,22,23,23,24,24,23,23, +22,21,20,22,23,23,23,24,24,24,23,24,23,23,23,23,23,23,23,23,23,23,24,23,23,23, +23,23,23,23,23,23,23,24,23,24,23,23,23,23,23,23,24,23,23,23,23,23,23,23,23,24, +23,23,23,23,23,23,23,23,23,24,23,22,22,21,20,20,20,22,22,23,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24, +24,24,24,24,23,23,23,24,23,23,23,23,23,23,23,23,23,23,23,23,24,24,23,23,22,21, +20,22,23,23,23,24,24,24,24,24,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23, +23,23,23,23,23,24,23,24,23,23,23,23,23,23,24,23,23,23,23,23,23,23,23,24,23,23, +23,23,23,23,23,23,24,24,23,23,22,21,20,20,20,22,22,23,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,23,23,23,24,24,23,23,22,21,20,22, +23,23,23,23,24,24,24,24,24,23,23,24,23,23,24,23,23,23,23,23,23,24,23,23,23,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,23,23, +23,23,24,23,24,24,23,23,22,21,20,20,20,22,22,23,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,23,22,21,20,22,23,23, +23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,23,23,22,21,20,20,20,22,22,23,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,23,21,20,20,22,22,23,23,23, +23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23, +23,24,23,23,22,21,20,20,20,21,22,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,23,22,20,20,22,23,23,23,23,23,23, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24, +23,23,22,21,20,20,20,21,22,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,23,23,21,20,20,21,22,23,23,23,24,23,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,24,24,23,23, +22,21,20,20,20,22,22,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,23,23,21,20,20,22,22,23,23,23,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,22,21, +20,20,20,22,22,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,23,23,21,20,20,22,23,23,23,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,22,21,20,20, +20,22,22,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,23,23,20,20,20,21,23,23,23,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,22,21,20,20,20,22, +22,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,23,23,20,19,20,21,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,22,21,20,20,20,21,22,23, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,23,22,20,20,20,22,22,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,22,21,20,20,20,22,22,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +23,22,20,20,20,22,22,23,23,25,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,23,22,21,20,20,20,22,22,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,22, +20,20,20,21,22,23,23,25,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,25,24,23,22,21,20,20,20,22,22,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,22,20,20, +20,21,22,23,23,25,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,25,25,23,22,21,20,20,20,22,22,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,22,20,20,21,21, +22,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,25,24,23,22,21,20,20,20,22,22,23,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,22,20,20,21,21,21,23, +23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,25,24,23,22,21,20,20,20,21,22,22,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,22,20,20,21,21,21,22,23,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,25,24,23,22,20,20,20,20,22,22,22,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,23,22,21,21,20,21,21,22,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25, +24,23,22,20,19,20,20,21,22,22,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +23,23,23,23,23,23,23,23,23,24,24,23,23,22,21,20,20,20,20,21,23,23,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,23, +21,20,19,19,20,22,22,22,22,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,23,23,23,23,22,23,23,23,23,22,23,23,23,23, +23,23,23,23,23,23,22,23,22,22,22,22,21,20,20,20,20,21,22,22,22,22,22,22,22,23, +23,23,23,22,22,22,22,22,23,23,22,23,22,22,22,22,23,23,23,23,23,23,23,23,23,23, +23,23,23,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,22,20,19, +19,19,19,21,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23, +23,23,23,23,23,23,23,23,23,23,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22, +22,22,22,22,22,21,20,20,20,21,20,20,20,20,19,19,20,20,20,20,20,21,21,20,20,20, +20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,20,20,20,21,22,22, +21,20,20,20,20,21,22,21,21,21,21,21,21,21,21,21,22,22,22,21,21,20,20,20,19,19, +19,20,21,22,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21, +22,22,22,22,22,22,22,22,20,20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,20,20, +20,21,20,20,20,21,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, +20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21, +21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,20,20,20,20,19, +20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, +20,20,20,20,20,20 +}; // level1Texture + +#endif // guard diff --git a/tools/img2array.py b/tools/img2array.py index 985ff09..26d180a 100644 --- a/tools/img2array.py +++ b/tools/img2array.py @@ -115,8 +115,8 @@ for y in range(OUT_HEIGHT): #----------------------- -def printArray(array, name, sizeString): - print("uint8_t " + name + "[" + sizeString + "] = {") +def printArray(array, name, sizeString, dataType="uint8_t"): + print(dataType + " " + name + "[" + sizeString + "] = {") arrayString = "" lineLen = 0 @@ -140,7 +140,7 @@ if GUARDS: print("#define " + NAME.upper() + "_TEXTURE_H\n") if USE_PALETTE: - printArray(paletteArray,NAME + "Palette",str(len(paletteArray))) + printArray(paletteArray,NAME + "Palette",str(len(paletteArray)),"uint16_t" if USE_565 else "uint8_t") print("") print("#define " + NAME.upper() + "_TEXTURE_WIDTH " + str(OUT_WIDTH))