awtk/tools/image_dither/image_dither.c
2022-09-02 18:05:57 +08:00

2193 lines
169 KiB
C

/**
* File: image_dither.c
* Author: AWTK Develop Team
* Brief: bitmap image generator
*
* Copyright (c) 2018 - 2020 Guangzhou ZHIYUAN Electronics Co.,Ltd.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* License file for more details.
*
*/
/**
* History:
* ================================================================
* 2020-05-26 Luo ZhiMing <luozhiming@zlg.cn> created
*
*/
#include "tkc/mem.h"
#include "tkc/color.h"
#include "base/bitmap.h"
#include "base/types_def.h"
#define STB_IMAGE_IMPLEMENTATION
#define STB_IMAGE_WRITE_IMPLEMENTATION
#define STB_IMAGE_RESIZE_IMPLEMENTATION
#include "stb/stb_image.h"
#ifndef WITH_STB_IMAGE
#include "stb/stb_image_write.h"
#else
extern int stbi_write_png(char const* filename, int x, int y, int comp, const void* data,
int stride_bytes);
#endif /*WITH_STB_IMAGE*/
typedef void (*set_dst_data_func_t)(uint8_t* dst, int32_t b, int32_t g, int32_t r, int32_t a);
static const int32_t best_red_table[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2,
2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5,
5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8,
8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11,
11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14,
14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17,
17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20,
20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23,
23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 26,
26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28,
29, 29, 29, 29, 29, 29, 29, 29, 30, 30, 30, 30, 30, 30, 30, 30, 31, 31, 31, 31, 31, 31, 31, 31,
31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31};
static const int32_t(*best_blue_table) = best_red_table;
static const int32_t best_greed_table[] = {
0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5,
5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11,
11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17,
17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 23, 23,
23, 23, 24, 24, 24, 24, 25, 25, 25, 25, 26, 26, 26, 26, 27, 27, 27, 27, 28, 28, 28, 28, 29, 29,
29, 29, 30, 30, 30, 30, 31, 31, 31, 31, 31, 32, 32, 32, 32, 33, 33, 33, 33, 34, 34, 34, 34, 35,
35, 35, 35, 36, 36, 36, 36, 37, 37, 37, 37, 38, 38, 38, 38, 39, 39, 39, 39, 40, 40, 40, 40, 41,
41, 41, 41, 42, 42, 42, 42, 43, 43, 43, 43, 44, 44, 44, 44, 45, 45, 45, 45, 46, 46, 46, 46, 47,
47, 47, 47, 47, 48, 48, 48, 48, 49, 49, 49, 49, 50, 50, 50, 50, 51, 51, 51, 51, 52, 52, 52, 52,
53, 53, 53, 53, 54, 54, 54, 54, 55, 55, 55, 55, 56, 56, 56, 56, 57, 57, 57, 57, 58, 58, 58, 58,
59, 59, 59, 59, 60, 60, 60, 60, 61, 61, 61, 61, 62, 62, 62, 62, 63, 63, 63, 63, 63, 63, 63, 63,
63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63,
63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63};
static const int32_t error_red_table[][32] = {
{0, -8, -16, -24, -33, -41, -49, -57, -66, -74, -82,
-90, -99, -107, -115, -123, -132, -140, -148, -156, -165, -173,
-181, -189, -198, -206, -214, -222, -231, -239, -247, -256},
{1, -7, -15, -23, -32, -40, -48, -56, -65, -73, -81,
-89, -98, -106, -114, -122, -131, -139, -147, -155, -164, -172,
-180, -188, -197, -205, -213, -221, -230, -238, -246, -255},
{2, -6, -14, -22, -31, -39, -47, -55, -64, -72, -80,
-88, -97, -105, -113, -121, -130, -138, -146, -154, -163, -171,
-179, -187, -196, -204, -212, -220, -229, -237, -245, -254},
{3, -5, -13, -21, -30, -38, -46, -54, -63, -71, -79,
-87, -96, -104, -112, -120, -129, -137, -145, -153, -162, -170,
-178, -186, -195, -203, -211, -219, -228, -236, -244, -253},
{4, -4, -12, -20, -29, -37, -45, -53, -62, -70, -78,
-86, -95, -103, -111, -119, -128, -136, -144, -152, -161, -169,
-177, -185, -194, -202, -210, -218, -227, -235, -243, -252},
{5, -3, -11, -19, -28, -36, -44, -52, -61, -69, -77,
-85, -94, -102, -110, -118, -127, -135, -143, -151, -160, -168,
-176, -184, -193, -201, -209, -217, -226, -234, -242, -251},
{6, -2, -10, -18, -27, -35, -43, -51, -60, -68, -76,
-84, -93, -101, -109, -117, -126, -134, -142, -150, -159, -167,
-175, -183, -192, -200, -208, -216, -225, -233, -241, -250},
{7, -1, -9, -17, -26, -34, -42, -50, -59, -67, -75,
-83, -92, -100, -108, -116, -125, -133, -141, -149, -158, -166,
-174, -182, -191, -199, -207, -215, -224, -232, -240, -249},
{8, 0, -8, -16, -25, -33, -41, -49, -58, -66, -74,
-82, -91, -99, -107, -115, -124, -132, -140, -148, -157, -165,
-173, -181, -190, -198, -206, -214, -223, -231, -239, -248},
{9, 1, -7, -15, -24, -32, -40, -48, -57, -65, -73,
-81, -90, -98, -106, -114, -123, -131, -139, -147, -156, -164,
-172, -180, -189, -197, -205, -213, -222, -230, -238, -247},
{10, 2, -6, -14, -23, -31, -39, -47, -56, -64, -72,
-80, -89, -97, -105, -113, -122, -130, -138, -146, -155, -163,
-171, -179, -188, -196, -204, -212, -221, -229, -237, -246},
{11, 3, -5, -13, -22, -30, -38, -46, -55, -63, -71,
-79, -88, -96, -104, -112, -121, -129, -137, -145, -154, -162,
-170, -178, -187, -195, -203, -211, -220, -228, -236, -245},
{12, 4, -4, -12, -21, -29, -37, -45, -54, -62, -70,
-78, -87, -95, -103, -111, -120, -128, -136, -144, -153, -161,
-169, -177, -186, -194, -202, -210, -219, -227, -235, -244},
{13, 5, -3, -11, -20, -28, -36, -44, -53, -61, -69,
-77, -86, -94, -102, -110, -119, -127, -135, -143, -152, -160,
-168, -176, -185, -193, -201, -209, -218, -226, -234, -243},
{14, 6, -2, -10, -19, -27, -35, -43, -52, -60, -68,
-76, -85, -93, -101, -109, -118, -126, -134, -142, -151, -159,
-167, -175, -184, -192, -200, -208, -217, -225, -233, -242},
{15, 7, -1, -9, -18, -26, -34, -42, -51, -59, -67,
-75, -84, -92, -100, -108, -117, -125, -133, -141, -150, -158,
-166, -174, -183, -191, -199, -207, -216, -224, -232, -241},
{16, 8, 0, -8, -17, -25, -33, -41, -50, -58, -66,
-74, -83, -91, -99, -107, -116, -124, -132, -140, -149, -157,
-165, -173, -182, -190, -198, -206, -215, -223, -231, -240},
{17, 9, 1, -7, -16, -24, -32, -40, -49, -57, -65,
-73, -82, -90, -98, -106, -115, -123, -131, -139, -148, -156,
-164, -172, -181, -189, -197, -205, -214, -222, -230, -239},
{18, 10, 2, -6, -15, -23, -31, -39, -48, -56, -64,
-72, -81, -89, -97, -105, -114, -122, -130, -138, -147, -155,
-163, -171, -180, -188, -196, -204, -213, -221, -229, -238},
{19, 11, 3, -5, -14, -22, -30, -38, -47, -55, -63,
-71, -80, -88, -96, -104, -113, -121, -129, -137, -146, -154,
-162, -170, -179, -187, -195, -203, -212, -220, -228, -237},
{20, 12, 4, -4, -13, -21, -29, -37, -46, -54, -62,
-70, -79, -87, -95, -103, -112, -120, -128, -136, -145, -153,
-161, -169, -178, -186, -194, -202, -211, -219, -227, -236},
{21, 13, 5, -3, -12, -20, -28, -36, -45, -53, -61,
-69, -78, -86, -94, -102, -111, -119, -127, -135, -144, -152,
-160, -168, -177, -185, -193, -201, -210, -218, -226, -235},
{22, 14, 6, -2, -11, -19, -27, -35, -44, -52, -60,
-68, -77, -85, -93, -101, -110, -118, -126, -134, -143, -151,
-159, -167, -176, -184, -192, -200, -209, -217, -225, -234},
{23, 15, 7, -1, -10, -18, -26, -34, -43, -51, -59,
-67, -76, -84, -92, -100, -109, -117, -125, -133, -142, -150,
-158, -166, -175, -183, -191, -199, -208, -216, -224, -233},
{24, 16, 8, 0, -9, -17, -25, -33, -42, -50, -58,
-66, -75, -83, -91, -99, -108, -116, -124, -132, -141, -149,
-157, -165, -174, -182, -190, -198, -207, -215, -223, -232},
{25, 17, 9, 1, -8, -16, -24, -32, -41, -49, -57,
-65, -74, -82, -90, -98, -107, -115, -123, -131, -140, -148,
-156, -164, -173, -181, -189, -197, -206, -214, -222, -231},
{26, 18, 10, 2, -7, -15, -23, -31, -40, -48, -56,
-64, -73, -81, -89, -97, -106, -114, -122, -130, -139, -147,
-155, -163, -172, -180, -188, -196, -205, -213, -221, -230},
{27, 19, 11, 3, -6, -14, -22, -30, -39, -47, -55,
-63, -72, -80, -88, -96, -105, -113, -121, -129, -138, -146,
-154, -162, -171, -179, -187, -195, -204, -212, -220, -229},
{28, 20, 12, 4, -5, -13, -21, -29, -38, -46, -54,
-62, -71, -79, -87, -95, -104, -112, -120, -128, -137, -145,
-153, -161, -170, -178, -186, -194, -203, -211, -219, -228},
{29, 21, 13, 5, -4, -12, -20, -28, -37, -45, -53,
-61, -70, -78, -86, -94, -103, -111, -119, -127, -136, -144,
-152, -160, -169, -177, -185, -193, -202, -210, -218, -227},
{30, 22, 14, 6, -3, -11, -19, -27, -36, -44, -52,
-60, -69, -77, -85, -93, -102, -110, -118, -126, -135, -143,
-151, -159, -168, -176, -184, -192, -201, -209, -217, -226},
{31, 23, 15, 7, -2, -10, -18, -26, -35, -43, -51,
-59, -68, -76, -84, -92, -101, -109, -117, -125, -134, -142,
-150, -158, -167, -175, -183, -191, -200, -208, -216, -225},
{32, 24, 16, 8, -1, -9, -17, -25, -34, -42, -50,
-58, -67, -75, -83, -91, -100, -108, -116, -124, -133, -141,
-149, -157, -166, -174, -182, -190, -199, -207, -215, -224},
{33, 25, 17, 9, 0, -8, -16, -24, -33, -41, -49, -57, -66, -74, -82, -90,
-99, -107, -115, -123, -132, -140, -148, -156, -165, -173, -181, -189, -198, -206, -214, -223},
{34, 26, 18, 10, 1, -7, -15, -23, -32, -40, -48, -56, -65, -73, -81, -89,
-98, -106, -114, -122, -131, -139, -147, -155, -164, -172, -180, -188, -197, -205, -213, -222},
{35, 27, 19, 11, 2, -6, -14, -22, -31, -39, -47, -55, -64, -72, -80, -88,
-97, -105, -113, -121, -130, -138, -146, -154, -163, -171, -179, -187, -196, -204, -212, -221},
{36, 28, 20, 12, 3, -5, -13, -21, -30, -38, -46, -54, -63, -71, -79, -87,
-96, -104, -112, -120, -129, -137, -145, -153, -162, -170, -178, -186, -195, -203, -211, -220},
{37, 29, 21, 13, 4, -4, -12, -20, -29, -37, -45, -53, -62, -70, -78, -86,
-95, -103, -111, -119, -128, -136, -144, -152, -161, -169, -177, -185, -194, -202, -210, -219},
{38, 30, 22, 14, 5, -3, -11, -19, -28, -36, -44, -52, -61, -69, -77, -85,
-94, -102, -110, -118, -127, -135, -143, -151, -160, -168, -176, -184, -193, -201, -209, -218},
{39, 31, 23, 15, 6, -2, -10, -18, -27, -35, -43, -51, -60, -68, -76, -84,
-93, -101, -109, -117, -126, -134, -142, -150, -159, -167, -175, -183, -192, -200, -208, -217},
{40, 32, 24, 16, 7, -1, -9, -17, -26, -34, -42, -50, -59, -67, -75, -83,
-92, -100, -108, -116, -125, -133, -141, -149, -158, -166, -174, -182, -191, -199, -207, -216},
{41, 33, 25, 17, 8, 0, -8, -16, -25, -33, -41, -49, -58, -66, -74, -82,
-91, -99, -107, -115, -124, -132, -140, -148, -157, -165, -173, -181, -190, -198, -206, -215},
{42, 34, 26, 18, 9, 1, -7, -15, -24, -32, -40, -48, -57, -65, -73, -81,
-90, -98, -106, -114, -123, -131, -139, -147, -156, -164, -172, -180, -189, -197, -205, -214},
{43, 35, 27, 19, 10, 2, -6, -14, -23, -31, -39, -47, -56, -64, -72, -80,
-89, -97, -105, -113, -122, -130, -138, -146, -155, -163, -171, -179, -188, -196, -204, -213},
{44, 36, 28, 20, 11, 3, -5, -13, -22, -30, -38, -46, -55, -63, -71, -79,
-88, -96, -104, -112, -121, -129, -137, -145, -154, -162, -170, -178, -187, -195, -203, -212},
{45, 37, 29, 21, 12, 4, -4, -12, -21, -29, -37, -45, -54, -62, -70, -78,
-87, -95, -103, -111, -120, -128, -136, -144, -153, -161, -169, -177, -186, -194, -202, -211},
{46, 38, 30, 22, 13, 5, -3, -11, -20, -28, -36, -44, -53, -61, -69, -77,
-86, -94, -102, -110, -119, -127, -135, -143, -152, -160, -168, -176, -185, -193, -201, -210},
{47, 39, 31, 23, 14, 6, -2, -10, -19, -27, -35, -43, -52, -60, -68, -76,
-85, -93, -101, -109, -118, -126, -134, -142, -151, -159, -167, -175, -184, -192, -200, -209},
{48, 40, 32, 24, 15, 7, -1, -9, -18, -26, -34, -42, -51, -59, -67, -75,
-84, -92, -100, -108, -117, -125, -133, -141, -150, -158, -166, -174, -183, -191, -199, -208},
{49, 41, 33, 25, 16, 8, 0, -8, -17, -25, -33, -41, -50, -58, -66, -74,
-83, -91, -99, -107, -116, -124, -132, -140, -149, -157, -165, -173, -182, -190, -198, -207},
{50, 42, 34, 26, 17, 9, 1, -7, -16, -24, -32, -40, -49, -57, -65, -73,
-82, -90, -98, -106, -115, -123, -131, -139, -148, -156, -164, -172, -181, -189, -197, -206},
{51, 43, 35, 27, 18, 10, 2, -6, -15, -23, -31, -39, -48, -56, -64, -72,
-81, -89, -97, -105, -114, -122, -130, -138, -147, -155, -163, -171, -180, -188, -196, -205},
{52, 44, 36, 28, 19, 11, 3, -5, -14, -22, -30, -38, -47, -55, -63, -71,
-80, -88, -96, -104, -113, -121, -129, -137, -146, -154, -162, -170, -179, -187, -195, -204},
{53, 45, 37, 29, 20, 12, 4, -4, -13, -21, -29, -37, -46, -54, -62, -70,
-79, -87, -95, -103, -112, -120, -128, -136, -145, -153, -161, -169, -178, -186, -194, -203},
{54, 46, 38, 30, 21, 13, 5, -3, -12, -20, -28, -36, -45, -53, -61, -69,
-78, -86, -94, -102, -111, -119, -127, -135, -144, -152, -160, -168, -177, -185, -193, -202},
{55, 47, 39, 31, 22, 14, 6, -2, -11, -19, -27, -35, -44, -52, -60, -68,
-77, -85, -93, -101, -110, -118, -126, -134, -143, -151, -159, -167, -176, -184, -192, -201},
{56, 48, 40, 32, 23, 15, 7, -1, -10, -18, -26, -34, -43, -51, -59, -67,
-76, -84, -92, -100, -109, -117, -125, -133, -142, -150, -158, -166, -175, -183, -191, -200},
{57, 49, 41, 33, 24, 16, 8, 0, -9, -17, -25, -33, -42, -50, -58, -66,
-75, -83, -91, -99, -108, -116, -124, -132, -141, -149, -157, -165, -174, -182, -190, -199},
{58, 50, 42, 34, 25, 17, 9, 1, -8, -16, -24, -32, -41, -49, -57, -65,
-74, -82, -90, -98, -107, -115, -123, -131, -140, -148, -156, -164, -173, -181, -189, -198},
{59, 51, 43, 35, 26, 18, 10, 2, -7, -15, -23, -31, -40, -48, -56, -64,
-73, -81, -89, -97, -106, -114, -122, -130, -139, -147, -155, -163, -172, -180, -188, -197},
{60, 52, 44, 36, 27, 19, 11, 3, -6, -14, -22, -30, -39, -47, -55, -63,
-72, -80, -88, -96, -105, -113, -121, -129, -138, -146, -154, -162, -171, -179, -187, -196},
{61, 53, 45, 37, 28, 20, 12, 4, -5, -13, -21, -29, -38, -46, -54, -62,
-71, -79, -87, -95, -104, -112, -120, -128, -137, -145, -153, -161, -170, -178, -186, -195},
{62, 54, 46, 38, 29, 21, 13, 5, -4, -12, -20, -28, -37, -45, -53, -61,
-70, -78, -86, -94, -103, -111, -119, -127, -136, -144, -152, -160, -169, -177, -185, -194},
{63, 55, 47, 39, 30, 22, 14, 6, -3, -11, -19, -27, -36, -44, -52, -60,
-69, -77, -85, -93, -102, -110, -118, -126, -135, -143, -151, -159, -168, -176, -184, -193},
{64, 56, 48, 40, 31, 23, 15, 7, -2, -10, -18, -26, -35, -43, -51, -59,
-68, -76, -84, -92, -101, -109, -117, -125, -134, -142, -150, -158, -167, -175, -183, -192},
{65, 57, 49, 41, 32, 24, 16, 8, -1, -9, -17, -25, -34, -42, -50, -58,
-67, -75, -83, -91, -100, -108, -116, -124, -133, -141, -149, -157, -166, -174, -182, -191},
{66, 58, 50, 42, 33, 25, 17, 9, 0, -8, -16, -24, -33, -41, -49, -57,
-66, -74, -82, -90, -99, -107, -115, -123, -132, -140, -148, -156, -165, -173, -181, -190},
{67, 59, 51, 43, 34, 26, 18, 10, 1, -7, -15, -23, -32, -40, -48, -56,
-65, -73, -81, -89, -98, -106, -114, -122, -131, -139, -147, -155, -164, -172, -180, -189},
{68, 60, 52, 44, 35, 27, 19, 11, 2, -6, -14, -22, -31, -39, -47, -55,
-64, -72, -80, -88, -97, -105, -113, -121, -130, -138, -146, -154, -163, -171, -179, -188},
{69, 61, 53, 45, 36, 28, 20, 12, 3, -5, -13, -21, -30, -38, -46, -54,
-63, -71, -79, -87, -96, -104, -112, -120, -129, -137, -145, -153, -162, -170, -178, -187},
{70, 62, 54, 46, 37, 29, 21, 13, 4, -4, -12, -20, -29, -37, -45, -53,
-62, -70, -78, -86, -95, -103, -111, -119, -128, -136, -144, -152, -161, -169, -177, -186},
{71, 63, 55, 47, 38, 30, 22, 14, 5, -3, -11, -19, -28, -36, -44, -52,
-61, -69, -77, -85, -94, -102, -110, -118, -127, -135, -143, -151, -160, -168, -176, -185},
{72, 64, 56, 48, 39, 31, 23, 15, 6, -2, -10, -18, -27, -35, -43, -51,
-60, -68, -76, -84, -93, -101, -109, -117, -126, -134, -142, -150, -159, -167, -175, -184},
{73, 65, 57, 49, 40, 32, 24, 16, 7, -1, -9, -17, -26, -34, -42, -50,
-59, -67, -75, -83, -92, -100, -108, -116, -125, -133, -141, -149, -158, -166, -174, -183},
{74, 66, 58, 50, 41, 33, 25, 17, 8, 0, -8, -16, -25, -33, -41, -49,
-58, -66, -74, -82, -91, -99, -107, -115, -124, -132, -140, -148, -157, -165, -173, -182},
{75, 67, 59, 51, 42, 34, 26, 18, 9, 1, -7, -15, -24, -32, -40, -48,
-57, -65, -73, -81, -90, -98, -106, -114, -123, -131, -139, -147, -156, -164, -172, -181},
{76, 68, 60, 52, 43, 35, 27, 19, 10, 2, -6, -14, -23, -31, -39, -47,
-56, -64, -72, -80, -89, -97, -105, -113, -122, -130, -138, -146, -155, -163, -171, -180},
{77, 69, 61, 53, 44, 36, 28, 20, 11, 3, -5, -13, -22, -30, -38, -46,
-55, -63, -71, -79, -88, -96, -104, -112, -121, -129, -137, -145, -154, -162, -170, -179},
{78, 70, 62, 54, 45, 37, 29, 21, 12, 4, -4, -12, -21, -29, -37, -45,
-54, -62, -70, -78, -87, -95, -103, -111, -120, -128, -136, -144, -153, -161, -169, -178},
{79, 71, 63, 55, 46, 38, 30, 22, 13, 5, -3, -11, -20, -28, -36, -44,
-53, -61, -69, -77, -86, -94, -102, -110, -119, -127, -135, -143, -152, -160, -168, -177},
{80, 72, 64, 56, 47, 39, 31, 23, 14, 6, -2, -10, -19, -27, -35, -43,
-52, -60, -68, -76, -85, -93, -101, -109, -118, -126, -134, -142, -151, -159, -167, -176},
{81, 73, 65, 57, 48, 40, 32, 24, 15, 7, -1, -9, -18, -26, -34, -42,
-51, -59, -67, -75, -84, -92, -100, -108, -117, -125, -133, -141, -150, -158, -166, -175},
{82, 74, 66, 58, 49, 41, 33, 25, 16, 8, 0, -8, -17, -25, -33, -41,
-50, -58, -66, -74, -83, -91, -99, -107, -116, -124, -132, -140, -149, -157, -165, -174},
{83, 75, 67, 59, 50, 42, 34, 26, 17, 9, 1, -7, -16, -24, -32, -40,
-49, -57, -65, -73, -82, -90, -98, -106, -115, -123, -131, -139, -148, -156, -164, -173},
{84, 76, 68, 60, 51, 43, 35, 27, 18, 10, 2, -6, -15, -23, -31, -39,
-48, -56, -64, -72, -81, -89, -97, -105, -114, -122, -130, -138, -147, -155, -163, -172},
{85, 77, 69, 61, 52, 44, 36, 28, 19, 11, 3, -5, -14, -22, -30, -38,
-47, -55, -63, -71, -80, -88, -96, -104, -113, -121, -129, -137, -146, -154, -162, -171},
{86, 78, 70, 62, 53, 45, 37, 29, 20, 12, 4, -4, -13, -21, -29, -37,
-46, -54, -62, -70, -79, -87, -95, -103, -112, -120, -128, -136, -145, -153, -161, -170},
{87, 79, 71, 63, 54, 46, 38, 30, 21, 13, 5, -3, -12, -20, -28, -36,
-45, -53, -61, -69, -78, -86, -94, -102, -111, -119, -127, -135, -144, -152, -160, -169},
{88, 80, 72, 64, 55, 47, 39, 31, 22, 14, 6, -2, -11, -19, -27, -35,
-44, -52, -60, -68, -77, -85, -93, -101, -110, -118, -126, -134, -143, -151, -159, -168},
{89, 81, 73, 65, 56, 48, 40, 32, 23, 15, 7, -1, -10, -18, -26, -34,
-43, -51, -59, -67, -76, -84, -92, -100, -109, -117, -125, -133, -142, -150, -158, -167},
{90, 82, 74, 66, 57, 49, 41, 33, 24, 16, 8, 0, -9, -17, -25, -33,
-42, -50, -58, -66, -75, -83, -91, -99, -108, -116, -124, -132, -141, -149, -157, -166},
{91, 83, 75, 67, 58, 50, 42, 34, 25, 17, 9, 1, -8, -16, -24, -32,
-41, -49, -57, -65, -74, -82, -90, -98, -107, -115, -123, -131, -140, -148, -156, -165},
{92, 84, 76, 68, 59, 51, 43, 35, 26, 18, 10, 2, -7, -15, -23, -31,
-40, -48, -56, -64, -73, -81, -89, -97, -106, -114, -122, -130, -139, -147, -155, -164},
{93, 85, 77, 69, 60, 52, 44, 36, 27, 19, 11, 3, -6, -14, -22, -30,
-39, -47, -55, -63, -72, -80, -88, -96, -105, -113, -121, -129, -138, -146, -154, -163},
{94, 86, 78, 70, 61, 53, 45, 37, 28, 20, 12, 4, -5, -13, -21, -29,
-38, -46, -54, -62, -71, -79, -87, -95, -104, -112, -120, -128, -137, -145, -153, -162},
{95, 87, 79, 71, 62, 54, 46, 38, 29, 21, 13, 5, -4, -12, -20, -28,
-37, -45, -53, -61, -70, -78, -86, -94, -103, -111, -119, -127, -136, -144, -152, -161},
{96, 88, 80, 72, 63, 55, 47, 39, 30, 22, 14, 6, -3, -11, -19, -27,
-36, -44, -52, -60, -69, -77, -85, -93, -102, -110, -118, -126, -135, -143, -151, -160},
{97, 89, 81, 73, 64, 56, 48, 40, 31, 23, 15, 7, -2, -10, -18, -26,
-35, -43, -51, -59, -68, -76, -84, -92, -101, -109, -117, -125, -134, -142, -150, -159},
{98, 90, 82, 74, 65, 57, 49, 41, 32, 24, 16, 8, -1, -9, -17, -25,
-34, -42, -50, -58, -67, -75, -83, -91, -100, -108, -116, -124, -133, -141, -149, -158},
{99, 91, 83, 75, 66, 58, 50, 42, 33, 25, 17, 9, 0, -8, -16, -24,
-33, -41, -49, -57, -66, -74, -82, -90, -99, -107, -115, -123, -132, -140, -148, -157},
{100, 92, 84, 76, 67, 59, 51, 43, 34, 26, 18, 10, 1, -7, -15, -23,
-32, -40, -48, -56, -65, -73, -81, -89, -98, -106, -114, -122, -131, -139, -147, -156},
{101, 93, 85, 77, 68, 60, 52, 44, 35, 27, 19, 11, 2, -6, -14, -22,
-31, -39, -47, -55, -64, -72, -80, -88, -97, -105, -113, -121, -130, -138, -146, -155},
{102, 94, 86, 78, 69, 61, 53, 45, 36, 28, 20, 12, 3, -5, -13, -21,
-30, -38, -46, -54, -63, -71, -79, -87, -96, -104, -112, -120, -129, -137, -145, -154},
{103, 95, 87, 79, 70, 62, 54, 46, 37, 29, 21, 13, 4, -4, -12, -20,
-29, -37, -45, -53, -62, -70, -78, -86, -95, -103, -111, -119, -128, -136, -144, -153},
{104, 96, 88, 80, 71, 63, 55, 47, 38, 30, 22, 14, 5, -3, -11, -19,
-28, -36, -44, -52, -61, -69, -77, -85, -94, -102, -110, -118, -127, -135, -143, -152},
{105, 97, 89, 81, 72, 64, 56, 48, 39, 31, 23, 15, 6, -2, -10, -18,
-27, -35, -43, -51, -60, -68, -76, -84, -93, -101, -109, -117, -126, -134, -142, -151},
{106, 98, 90, 82, 73, 65, 57, 49, 40, 32, 24, 16, 7, -1, -9, -17,
-26, -34, -42, -50, -59, -67, -75, -83, -92, -100, -108, -116, -125, -133, -141, -150},
{107, 99, 91, 83, 74, 66, 58, 50, 41, 33, 25, 17, 8, 0, -8, -16,
-25, -33, -41, -49, -58, -66, -74, -82, -91, -99, -107, -115, -124, -132, -140, -149},
{108, 100, 92, 84, 75, 67, 59, 51, 42, 34, 26, 18, 9, 1, -7, -15,
-24, -32, -40, -48, -57, -65, -73, -81, -90, -98, -106, -114, -123, -131, -139, -148},
{109, 101, 93, 85, 76, 68, 60, 52, 43, 35, 27, 19, 10, 2, -6, -14,
-23, -31, -39, -47, -56, -64, -72, -80, -89, -97, -105, -113, -122, -130, -138, -147},
{110, 102, 94, 86, 77, 69, 61, 53, 44, 36, 28, 20, 11, 3, -5, -13,
-22, -30, -38, -46, -55, -63, -71, -79, -88, -96, -104, -112, -121, -129, -137, -146},
{111, 103, 95, 87, 78, 70, 62, 54, 45, 37, 29, 21, 12, 4, -4, -12,
-21, -29, -37, -45, -54, -62, -70, -78, -87, -95, -103, -111, -120, -128, -136, -145},
{112, 104, 96, 88, 79, 71, 63, 55, 46, 38, 30, 22, 13, 5, -3, -11,
-20, -28, -36, -44, -53, -61, -69, -77, -86, -94, -102, -110, -119, -127, -135, -144},
{113, 105, 97, 89, 80, 72, 64, 56, 47, 39, 31, 23, 14, 6, -2, -10,
-19, -27, -35, -43, -52, -60, -68, -76, -85, -93, -101, -109, -118, -126, -134, -143},
{114, 106, 98, 90, 81, 73, 65, 57, 48, 40, 32, 24, 15, 7, -1, -9,
-18, -26, -34, -42, -51, -59, -67, -75, -84, -92, -100, -108, -117, -125, -133, -142},
{115, 107, 99, 91, 82, 74, 66, 58, 49, 41, 33, 25, 16, 8, 0, -8,
-17, -25, -33, -41, -50, -58, -66, -74, -83, -91, -99, -107, -116, -124, -132, -141},
{116, 108, 100, 92, 83, 75, 67, 59, 50, 42, 34, 26, 17, 9, 1, -7,
-16, -24, -32, -40, -49, -57, -65, -73, -82, -90, -98, -106, -115, -123, -131, -140},
{117, 109, 101, 93, 84, 76, 68, 60, 51, 43, 35, 27, 18, 10, 2, -6,
-15, -23, -31, -39, -48, -56, -64, -72, -81, -89, -97, -105, -114, -122, -130, -139},
{118, 110, 102, 94, 85, 77, 69, 61, 52, 44, 36, 28, 19, 11, 3, -5,
-14, -22, -30, -38, -47, -55, -63, -71, -80, -88, -96, -104, -113, -121, -129, -138},
{119, 111, 103, 95, 86, 78, 70, 62, 53, 45, 37, 29, 20, 12, 4, -4,
-13, -21, -29, -37, -46, -54, -62, -70, -79, -87, -95, -103, -112, -120, -128, -137},
{120, 112, 104, 96, 87, 79, 71, 63, 54, 46, 38, 30, 21, 13, 5, -3,
-12, -20, -28, -36, -45, -53, -61, -69, -78, -86, -94, -102, -111, -119, -127, -136},
{121, 113, 105, 97, 88, 80, 72, 64, 55, 47, 39, 31, 22, 14, 6, -2,
-11, -19, -27, -35, -44, -52, -60, -68, -77, -85, -93, -101, -110, -118, -126, -135},
{122, 114, 106, 98, 89, 81, 73, 65, 56, 48, 40, 32, 23, 15, 7, -1,
-10, -18, -26, -34, -43, -51, -59, -67, -76, -84, -92, -100, -109, -117, -125, -134},
{123, 115, 107, 99, 90, 82, 74, 66, 57, 49, 41, 33, 24, 16, 8, 0,
-9, -17, -25, -33, -42, -50, -58, -66, -75, -83, -91, -99, -108, -116, -124, -133},
{124, 116, 108, 100, 91, 83, 75, 67, 58, 50, 42, 34, 25, 17, 9, 1,
-8, -16, -24, -32, -41, -49, -57, -65, -74, -82, -90, -98, -107, -115, -123, -132},
{125, 117, 109, 101, 92, 84, 76, 68, 59, 51, 43, 35, 26, 18, 10, 2,
-7, -15, -23, -31, -40, -48, -56, -64, -73, -81, -89, -97, -106, -114, -122, -131},
{126, 118, 110, 102, 93, 85, 77, 69, 60, 52, 44, 36, 27, 19, 11, 3,
-6, -14, -22, -30, -39, -47, -55, -63, -72, -80, -88, -96, -105, -113, -121, -130},
{127, 119, 111, 103, 94, 86, 78, 70, 61, 53, 45, 37, 28, 20, 12, 4,
-5, -13, -21, -29, -38, -46, -54, -62, -71, -79, -87, -95, -104, -112, -120, -129},
{128, 120, 112, 104, 95, 87, 79, 71, 62, 54, 46, 38, 29, 21, 13, 5,
-4, -12, -20, -28, -37, -45, -53, -61, -70, -78, -86, -94, -103, -111, -119, -128},
{129, 121, 113, 105, 96, 88, 80, 72, 63, 55, 47, 39, 30, 22, 14, 6,
-3, -11, -19, -27, -36, -44, -52, -60, -69, -77, -85, -93, -102, -110, -118, -127},
{130, 122, 114, 106, 97, 89, 81, 73, 64, 56, 48, 40, 31, 23, 15, 7,
-2, -10, -18, -26, -35, -43, -51, -59, -68, -76, -84, -92, -101, -109, -117, -126},
{131, 123, 115, 107, 98, 90, 82, 74, 65, 57, 49, 41, 32, 24, 16, 8,
-1, -9, -17, -25, -34, -42, -50, -58, -67, -75, -83, -91, -100, -108, -116, -125},
{132, 124, 116, 108, 99, 91, 83, 75, 66, 58, 50, 42, 33, 25, 17, 9,
0, -8, -16, -24, -33, -41, -49, -57, -66, -74, -82, -90, -99, -107, -115, -124},
{133, 125, 117, 109, 100, 92, 84, 76, 67, 59, 51, 43, 34, 26, 18, 10,
1, -7, -15, -23, -32, -40, -48, -56, -65, -73, -81, -89, -98, -106, -114, -123},
{134, 126, 118, 110, 101, 93, 85, 77, 68, 60, 52, 44, 35, 27, 19, 11,
2, -6, -14, -22, -31, -39, -47, -55, -64, -72, -80, -88, -97, -105, -113, -122},
{135, 127, 119, 111, 102, 94, 86, 78, 69, 61, 53, 45, 36, 28, 20, 12,
3, -5, -13, -21, -30, -38, -46, -54, -63, -71, -79, -87, -96, -104, -112, -121},
{136, 128, 120, 112, 103, 95, 87, 79, 70, 62, 54, 46, 37, 29, 21, 13,
4, -4, -12, -20, -29, -37, -45, -53, -62, -70, -78, -86, -95, -103, -111, -120},
{137, 129, 121, 113, 104, 96, 88, 80, 71, 63, 55, 47, 38, 30, 22, 14,
5, -3, -11, -19, -28, -36, -44, -52, -61, -69, -77, -85, -94, -102, -110, -119},
{138, 130, 122, 114, 105, 97, 89, 81, 72, 64, 56, 48, 39, 31, 23, 15,
6, -2, -10, -18, -27, -35, -43, -51, -60, -68, -76, -84, -93, -101, -109, -118},
{139, 131, 123, 115, 106, 98, 90, 82, 73, 65, 57, 49, 40, 32, 24, 16,
7, -1, -9, -17, -26, -34, -42, -50, -59, -67, -75, -83, -92, -100, -108, -117},
{140, 132, 124, 116, 107, 99, 91, 83, 74, 66, 58, 50, 41, 33, 25, 17,
8, 0, -8, -16, -25, -33, -41, -49, -58, -66, -74, -82, -91, -99, -107, -116},
{141, 133, 125, 117, 108, 100, 92, 84, 75, 67, 59, 51, 42, 34, 26, 18,
9, 1, -7, -15, -24, -32, -40, -48, -57, -65, -73, -81, -90, -98, -106, -115},
{142, 134, 126, 118, 109, 101, 93, 85, 76, 68, 60, 52, 43, 35, 27, 19,
10, 2, -6, -14, -23, -31, -39, -47, -56, -64, -72, -80, -89, -97, -105, -114},
{143, 135, 127, 119, 110, 102, 94, 86, 77, 69, 61, 53, 44, 36, 28, 20,
11, 3, -5, -13, -22, -30, -38, -46, -55, -63, -71, -79, -88, -96, -104, -113},
{144, 136, 128, 120, 111, 103, 95, 87, 78, 70, 62, 54, 45, 37, 29, 21,
12, 4, -4, -12, -21, -29, -37, -45, -54, -62, -70, -78, -87, -95, -103, -112},
{145, 137, 129, 121, 112, 104, 96, 88, 79, 71, 63, 55, 46, 38, 30, 22,
13, 5, -3, -11, -20, -28, -36, -44, -53, -61, -69, -77, -86, -94, -102, -111},
{146, 138, 130, 122, 113, 105, 97, 89, 80, 72, 64, 56, 47, 39, 31, 23,
14, 6, -2, -10, -19, -27, -35, -43, -52, -60, -68, -76, -85, -93, -101, -110},
{147, 139, 131, 123, 114, 106, 98, 90, 81, 73, 65, 57, 48, 40, 32, 24,
15, 7, -1, -9, -18, -26, -34, -42, -51, -59, -67, -75, -84, -92, -100, -109},
{148, 140, 132, 124, 115, 107, 99, 91, 82, 74, 66, 58, 49, 41, 33, 25,
16, 8, 0, -8, -17, -25, -33, -41, -50, -58, -66, -74, -83, -91, -99, -108},
{149, 141, 133, 125, 116, 108, 100, 92, 83, 75, 67, 59, 50, 42, 34, 26,
17, 9, 1, -7, -16, -24, -32, -40, -49, -57, -65, -73, -82, -90, -98, -107},
{150, 142, 134, 126, 117, 109, 101, 93, 84, 76, 68, 60, 51, 43, 35, 27,
18, 10, 2, -6, -15, -23, -31, -39, -48, -56, -64, -72, -81, -89, -97, -106},
{151, 143, 135, 127, 118, 110, 102, 94, 85, 77, 69, 61, 52, 44, 36, 28,
19, 11, 3, -5, -14, -22, -30, -38, -47, -55, -63, -71, -80, -88, -96, -105},
{152, 144, 136, 128, 119, 111, 103, 95, 86, 78, 70, 62, 53, 45, 37, 29,
20, 12, 4, -4, -13, -21, -29, -37, -46, -54, -62, -70, -79, -87, -95, -104},
{153, 145, 137, 129, 120, 112, 104, 96, 87, 79, 71, 63, 54, 46, 38, 30,
21, 13, 5, -3, -12, -20, -28, -36, -45, -53, -61, -69, -78, -86, -94, -103},
{154, 146, 138, 130, 121, 113, 105, 97, 88, 80, 72, 64, 55, 47, 39, 31,
22, 14, 6, -2, -11, -19, -27, -35, -44, -52, -60, -68, -77, -85, -93, -102},
{155, 147, 139, 131, 122, 114, 106, 98, 89, 81, 73, 65, 56, 48, 40, 32,
23, 15, 7, -1, -10, -18, -26, -34, -43, -51, -59, -67, -76, -84, -92, -101},
{156, 148, 140, 132, 123, 115, 107, 99, 90, 82, 74, 66, 57, 49, 41, 33,
24, 16, 8, 0, -9, -17, -25, -33, -42, -50, -58, -66, -75, -83, -91, -100},
{157, 149, 141, 133, 124, 116, 108, 100, 91, 83, 75, 67, 58, 50, 42, 34,
25, 17, 9, 1, -8, -16, -24, -32, -41, -49, -57, -65, -74, -82, -90, -99},
{158, 150, 142, 134, 125, 117, 109, 101, 92, 84, 76, 68, 59, 51, 43, 35,
26, 18, 10, 2, -7, -15, -23, -31, -40, -48, -56, -64, -73, -81, -89, -98},
{159, 151, 143, 135, 126, 118, 110, 102, 93, 85, 77, 69, 60, 52, 44, 36,
27, 19, 11, 3, -6, -14, -22, -30, -39, -47, -55, -63, -72, -80, -88, -97},
{160, 152, 144, 136, 127, 119, 111, 103, 94, 86, 78, 70, 61, 53, 45, 37,
28, 20, 12, 4, -5, -13, -21, -29, -38, -46, -54, -62, -71, -79, -87, -96},
{161, 153, 145, 137, 128, 120, 112, 104, 95, 87, 79, 71, 62, 54, 46, 38,
29, 21, 13, 5, -4, -12, -20, -28, -37, -45, -53, -61, -70, -78, -86, -95},
{162, 154, 146, 138, 129, 121, 113, 105, 96, 88, 80, 72, 63, 55, 47, 39,
30, 22, 14, 6, -3, -11, -19, -27, -36, -44, -52, -60, -69, -77, -85, -94},
{163, 155, 147, 139, 130, 122, 114, 106, 97, 89, 81, 73, 64, 56, 48, 40,
31, 23, 15, 7, -2, -10, -18, -26, -35, -43, -51, -59, -68, -76, -84, -93},
{164, 156, 148, 140, 131, 123, 115, 107, 98, 90, 82, 74, 65, 57, 49, 41,
32, 24, 16, 8, -1, -9, -17, -25, -34, -42, -50, -58, -67, -75, -83, -92},
{165, 157, 149, 141, 132, 124, 116, 108, 99, 91, 83, 75, 66, 58, 50, 42,
33, 25, 17, 9, 0, -8, -16, -24, -33, -41, -49, -57, -66, -74, -82, -91},
{166, 158, 150, 142, 133, 125, 117, 109, 100, 92, 84, 76, 67, 59, 51, 43,
34, 26, 18, 10, 1, -7, -15, -23, -32, -40, -48, -56, -65, -73, -81, -90},
{167, 159, 151, 143, 134, 126, 118, 110, 101, 93, 85, 77, 68, 60, 52, 44,
35, 27, 19, 11, 2, -6, -14, -22, -31, -39, -47, -55, -64, -72, -80, -89},
{168, 160, 152, 144, 135, 127, 119, 111, 102, 94, 86, 78, 69, 61, 53, 45,
36, 28, 20, 12, 3, -5, -13, -21, -30, -38, -46, -54, -63, -71, -79, -88},
{169, 161, 153, 145, 136, 128, 120, 112, 103, 95, 87, 79, 70, 62, 54, 46,
37, 29, 21, 13, 4, -4, -12, -20, -29, -37, -45, -53, -62, -70, -78, -87},
{170, 162, 154, 146, 137, 129, 121, 113, 104, 96, 88, 80, 71, 63, 55, 47,
38, 30, 22, 14, 5, -3, -11, -19, -28, -36, -44, -52, -61, -69, -77, -86},
{171, 163, 155, 147, 138, 130, 122, 114, 105, 97, 89, 81, 72, 64, 56, 48,
39, 31, 23, 15, 6, -2, -10, -18, -27, -35, -43, -51, -60, -68, -76, -85},
{172, 164, 156, 148, 139, 131, 123, 115, 106, 98, 90, 82, 73, 65, 57, 49,
40, 32, 24, 16, 7, -1, -9, -17, -26, -34, -42, -50, -59, -67, -75, -84},
{173, 165, 157, 149, 140, 132, 124, 116, 107, 99, 91, 83, 74, 66, 58, 50,
41, 33, 25, 17, 8, 0, -8, -16, -25, -33, -41, -49, -58, -66, -74, -83},
{174, 166, 158, 150, 141, 133, 125, 117, 108, 100, 92, 84, 75, 67, 59, 51,
42, 34, 26, 18, 9, 1, -7, -15, -24, -32, -40, -48, -57, -65, -73, -82},
{175, 167, 159, 151, 142, 134, 126, 118, 109, 101, 93, 85, 76, 68, 60, 52,
43, 35, 27, 19, 10, 2, -6, -14, -23, -31, -39, -47, -56, -64, -72, -81},
{176, 168, 160, 152, 143, 135, 127, 119, 110, 102, 94, 86, 77, 69, 61, 53,
44, 36, 28, 20, 11, 3, -5, -13, -22, -30, -38, -46, -55, -63, -71, -80},
{177, 169, 161, 153, 144, 136, 128, 120, 111, 103, 95, 87, 78, 70, 62, 54,
45, 37, 29, 21, 12, 4, -4, -12, -21, -29, -37, -45, -54, -62, -70, -79},
{178, 170, 162, 154, 145, 137, 129, 121, 112, 104, 96, 88, 79, 71, 63, 55,
46, 38, 30, 22, 13, 5, -3, -11, -20, -28, -36, -44, -53, -61, -69, -78},
{179, 171, 163, 155, 146, 138, 130, 122, 113, 105, 97, 89, 80, 72, 64, 56,
47, 39, 31, 23, 14, 6, -2, -10, -19, -27, -35, -43, -52, -60, -68, -77},
{180, 172, 164, 156, 147, 139, 131, 123, 114, 106, 98, 90, 81, 73, 65, 57,
48, 40, 32, 24, 15, 7, -1, -9, -18, -26, -34, -42, -51, -59, -67, -76},
{181, 173, 165, 157, 148, 140, 132, 124, 115, 107, 99, 91, 82, 74, 66, 58,
49, 41, 33, 25, 16, 8, 0, -8, -17, -25, -33, -41, -50, -58, -66, -75},
{182, 174, 166, 158, 149, 141, 133, 125, 116, 108, 100, 92, 83, 75, 67, 59,
50, 42, 34, 26, 17, 9, 1, -7, -16, -24, -32, -40, -49, -57, -65, -74},
{183, 175, 167, 159, 150, 142, 134, 126, 117, 109, 101, 93, 84, 76, 68, 60,
51, 43, 35, 27, 18, 10, 2, -6, -15, -23, -31, -39, -48, -56, -64, -73},
{184, 176, 168, 160, 151, 143, 135, 127, 118, 110, 102, 94, 85, 77, 69, 61,
52, 44, 36, 28, 19, 11, 3, -5, -14, -22, -30, -38, -47, -55, -63, -72},
{185, 177, 169, 161, 152, 144, 136, 128, 119, 111, 103, 95, 86, 78, 70, 62,
53, 45, 37, 29, 20, 12, 4, -4, -13, -21, -29, -37, -46, -54, -62, -71},
{186, 178, 170, 162, 153, 145, 137, 129, 120, 112, 104, 96, 87, 79, 71, 63,
54, 46, 38, 30, 21, 13, 5, -3, -12, -20, -28, -36, -45, -53, -61, -70},
{187, 179, 171, 163, 154, 146, 138, 130, 121, 113, 105, 97, 88, 80, 72, 64,
55, 47, 39, 31, 22, 14, 6, -2, -11, -19, -27, -35, -44, -52, -60, -69},
{188, 180, 172, 164, 155, 147, 139, 131, 122, 114, 106, 98, 89, 81, 73, 65,
56, 48, 40, 32, 23, 15, 7, -1, -10, -18, -26, -34, -43, -51, -59, -68},
{189, 181, 173, 165, 156, 148, 140, 132, 123, 115, 107, 99, 90, 82, 74, 66,
57, 49, 41, 33, 24, 16, 8, 0, -9, -17, -25, -33, -42, -50, -58, -67},
{190, 182, 174, 166, 157, 149, 141, 133, 124, 116, 108, 100, 91, 83, 75, 67,
58, 50, 42, 34, 25, 17, 9, 1, -8, -16, -24, -32, -41, -49, -57, -66},
{191, 183, 175, 167, 158, 150, 142, 134, 125, 117, 109, 101, 92, 84, 76, 68,
59, 51, 43, 35, 26, 18, 10, 2, -7, -15, -23, -31, -40, -48, -56, -65},
{192, 184, 176, 168, 159, 151, 143, 135, 126, 118, 110, 102, 93, 85, 77, 69,
60, 52, 44, 36, 27, 19, 11, 3, -6, -14, -22, -30, -39, -47, -55, -64},
{193, 185, 177, 169, 160, 152, 144, 136, 127, 119, 111, 103, 94, 86, 78, 70,
61, 53, 45, 37, 28, 20, 12, 4, -5, -13, -21, -29, -38, -46, -54, -63},
{194, 186, 178, 170, 161, 153, 145, 137, 128, 120, 112, 104, 95, 87, 79, 71,
62, 54, 46, 38, 29, 21, 13, 5, -4, -12, -20, -28, -37, -45, -53, -62},
{195, 187, 179, 171, 162, 154, 146, 138, 129, 121, 113, 105, 96, 88, 80, 72,
63, 55, 47, 39, 30, 22, 14, 6, -3, -11, -19, -27, -36, -44, -52, -61},
{196, 188, 180, 172, 163, 155, 147, 139, 130, 122, 114, 106, 97, 89, 81, 73,
64, 56, 48, 40, 31, 23, 15, 7, -2, -10, -18, -26, -35, -43, -51, -60},
{197, 189, 181, 173, 164, 156, 148, 140, 131, 123, 115, 107, 98, 90, 82, 74,
65, 57, 49, 41, 32, 24, 16, 8, -1, -9, -17, -25, -34, -42, -50, -59},
{198, 190, 182, 174, 165, 157, 149, 141, 132, 124, 116, 108, 99, 91, 83, 75,
66, 58, 50, 42, 33, 25, 17, 9, 0, -8, -16, -24, -33, -41, -49, -58},
{199, 191, 183, 175, 166, 158, 150, 142, 133, 125, 117, 109, 100, 92, 84, 76,
67, 59, 51, 43, 34, 26, 18, 10, 1, -7, -15, -23, -32, -40, -48, -57},
{200, 192, 184, 176, 167, 159, 151, 143, 134, 126, 118, 110, 101, 93, 85, 77,
68, 60, 52, 44, 35, 27, 19, 11, 2, -6, -14, -22, -31, -39, -47, -56},
{201, 193, 185, 177, 168, 160, 152, 144, 135, 127, 119, 111, 102, 94, 86, 78,
69, 61, 53, 45, 36, 28, 20, 12, 3, -5, -13, -21, -30, -38, -46, -55},
{202, 194, 186, 178, 169, 161, 153, 145, 136, 128, 120, 112, 103, 95, 87, 79,
70, 62, 54, 46, 37, 29, 21, 13, 4, -4, -12, -20, -29, -37, -45, -54},
{203, 195, 187, 179, 170, 162, 154, 146, 137, 129, 121, 113, 104, 96, 88, 80,
71, 63, 55, 47, 38, 30, 22, 14, 5, -3, -11, -19, -28, -36, -44, -53},
{204, 196, 188, 180, 171, 163, 155, 147, 138, 130, 122, 114, 105, 97, 89, 81,
72, 64, 56, 48, 39, 31, 23, 15, 6, -2, -10, -18, -27, -35, -43, -52},
{205, 197, 189, 181, 172, 164, 156, 148, 139, 131, 123, 115, 106, 98, 90, 82,
73, 65, 57, 49, 40, 32, 24, 16, 7, -1, -9, -17, -26, -34, -42, -51},
{206, 198, 190, 182, 173, 165, 157, 149, 140, 132, 124, 116, 107, 99, 91, 83,
74, 66, 58, 50, 41, 33, 25, 17, 8, 0, -8, -16, -25, -33, -41, -50},
{207, 199, 191, 183, 174, 166, 158, 150, 141, 133, 125, 117, 108, 100, 92, 84,
75, 67, 59, 51, 42, 34, 26, 18, 9, 1, -7, -15, -24, -32, -40, -49},
{208, 200, 192, 184, 175, 167, 159, 151, 142, 134, 126, 118, 109, 101, 93, 85,
76, 68, 60, 52, 43, 35, 27, 19, 10, 2, -6, -14, -23, -31, -39, -48},
{209, 201, 193, 185, 176, 168, 160, 152, 143, 135, 127, 119, 110, 102, 94, 86,
77, 69, 61, 53, 44, 36, 28, 20, 11, 3, -5, -13, -22, -30, -38, -47},
{210, 202, 194, 186, 177, 169, 161, 153, 144, 136, 128, 120, 111, 103, 95, 87,
78, 70, 62, 54, 45, 37, 29, 21, 12, 4, -4, -12, -21, -29, -37, -46},
{211, 203, 195, 187, 178, 170, 162, 154, 145, 137, 129, 121, 112, 104, 96, 88,
79, 71, 63, 55, 46, 38, 30, 22, 13, 5, -3, -11, -20, -28, -36, -45},
{212, 204, 196, 188, 179, 171, 163, 155, 146, 138, 130, 122, 113, 105, 97, 89,
80, 72, 64, 56, 47, 39, 31, 23, 14, 6, -2, -10, -19, -27, -35, -44},
{213, 205, 197, 189, 180, 172, 164, 156, 147, 139, 131, 123, 114, 106, 98, 90,
81, 73, 65, 57, 48, 40, 32, 24, 15, 7, -1, -9, -18, -26, -34, -43},
{214, 206, 198, 190, 181, 173, 165, 157, 148, 140, 132, 124, 115, 107, 99, 91,
82, 74, 66, 58, 49, 41, 33, 25, 16, 8, 0, -8, -17, -25, -33, -42},
{215, 207, 199, 191, 182, 174, 166, 158, 149, 141, 133, 125, 116, 108, 100, 92,
83, 75, 67, 59, 50, 42, 34, 26, 17, 9, 1, -7, -16, -24, -32, -41},
{216, 208, 200, 192, 183, 175, 167, 159, 150, 142, 134, 126, 117, 109, 101, 93,
84, 76, 68, 60, 51, 43, 35, 27, 18, 10, 2, -6, -15, -23, -31, -40},
{217, 209, 201, 193, 184, 176, 168, 160, 151, 143, 135, 127, 118, 110, 102, 94,
85, 77, 69, 61, 52, 44, 36, 28, 19, 11, 3, -5, -14, -22, -30, -39},
{218, 210, 202, 194, 185, 177, 169, 161, 152, 144, 136, 128, 119, 111, 103, 95,
86, 78, 70, 62, 53, 45, 37, 29, 20, 12, 4, -4, -13, -21, -29, -38},
{219, 211, 203, 195, 186, 178, 170, 162, 153, 145, 137, 129, 120, 112, 104, 96,
87, 79, 71, 63, 54, 46, 38, 30, 21, 13, 5, -3, -12, -20, -28, -37},
{220, 212, 204, 196, 187, 179, 171, 163, 154, 146, 138, 130, 121, 113, 105, 97,
88, 80, 72, 64, 55, 47, 39, 31, 22, 14, 6, -2, -11, -19, -27, -36},
{221, 213, 205, 197, 188, 180, 172, 164, 155, 147, 139, 131, 122, 114, 106, 98,
89, 81, 73, 65, 56, 48, 40, 32, 23, 15, 7, -1, -10, -18, -26, -35},
{222, 214, 206, 198, 189, 181, 173, 165, 156, 148, 140, 132, 123, 115, 107, 99,
90, 82, 74, 66, 57, 49, 41, 33, 24, 16, 8, 0, -9, -17, -25, -34},
{223, 215, 207, 199, 190, 182, 174, 166, 157, 149, 141, 133, 124, 116, 108, 100,
91, 83, 75, 67, 58, 50, 42, 34, 25, 17, 9, 1, -8, -16, -24, -33},
{224, 216, 208, 200, 191, 183, 175, 167, 158, 150, 142, 134, 125, 117, 109, 101,
92, 84, 76, 68, 59, 51, 43, 35, 26, 18, 10, 2, -7, -15, -23, -32},
{225, 217, 209, 201, 192, 184, 176, 168, 159, 151, 143, 135, 126, 118, 110, 102,
93, 85, 77, 69, 60, 52, 44, 36, 27, 19, 11, 3, -6, -14, -22, -31},
{226, 218, 210, 202, 193, 185, 177, 169, 160, 152, 144, 136, 127, 119, 111, 103,
94, 86, 78, 70, 61, 53, 45, 37, 28, 20, 12, 4, -5, -13, -21, -30},
{227, 219, 211, 203, 194, 186, 178, 170, 161, 153, 145, 137, 128, 120, 112, 104,
95, 87, 79, 71, 62, 54, 46, 38, 29, 21, 13, 5, -4, -12, -20, -29},
{228, 220, 212, 204, 195, 187, 179, 171, 162, 154, 146, 138, 129, 121, 113, 105,
96, 88, 80, 72, 63, 55, 47, 39, 30, 22, 14, 6, -3, -11, -19, -28},
{229, 221, 213, 205, 196, 188, 180, 172, 163, 155, 147, 139, 130, 122, 114, 106,
97, 89, 81, 73, 64, 56, 48, 40, 31, 23, 15, 7, -2, -10, -18, -27},
{230, 222, 214, 206, 197, 189, 181, 173, 164, 156, 148, 140, 131, 123, 115, 107,
98, 90, 82, 74, 65, 57, 49, 41, 32, 24, 16, 8, -1, -9, -17, -26},
{231, 223, 215, 207, 198, 190, 182, 174, 165, 157, 149, 141, 132, 124, 116, 108,
99, 91, 83, 75, 66, 58, 50, 42, 33, 25, 17, 9, 0, -8, -16, -25},
{232, 224, 216, 208, 199, 191, 183, 175, 166, 158, 150, 142, 133, 125, 117, 109,
100, 92, 84, 76, 67, 59, 51, 43, 34, 26, 18, 10, 1, -7, -15, -24},
{233, 225, 217, 209, 200, 192, 184, 176, 167, 159, 151, 143, 134, 126, 118, 110,
101, 93, 85, 77, 68, 60, 52, 44, 35, 27, 19, 11, 2, -6, -14, -23},
{234, 226, 218, 210, 201, 193, 185, 177, 168, 160, 152, 144, 135, 127, 119, 111,
102, 94, 86, 78, 69, 61, 53, 45, 36, 28, 20, 12, 3, -5, -13, -22},
{235, 227, 219, 211, 202, 194, 186, 178, 169, 161, 153, 145, 136, 128, 120, 112,
103, 95, 87, 79, 70, 62, 54, 46, 37, 29, 21, 13, 4, -4, -12, -21},
{236, 228, 220, 212, 203, 195, 187, 179, 170, 162, 154, 146, 137, 129, 121, 113,
104, 96, 88, 80, 71, 63, 55, 47, 38, 30, 22, 14, 5, -3, -11, -20},
{237, 229, 221, 213, 204, 196, 188, 180, 171, 163, 155, 147, 138, 130, 122, 114,
105, 97, 89, 81, 72, 64, 56, 48, 39, 31, 23, 15, 6, -2, -10, -19},
{238, 230, 222, 214, 205, 197, 189, 181, 172, 164, 156, 148, 139, 131, 123, 115,
106, 98, 90, 82, 73, 65, 57, 49, 40, 32, 24, 16, 7, -1, -9, -18},
{239, 231, 223, 215, 206, 198, 190, 182, 173, 165, 157, 149, 140, 132, 124, 116,
107, 99, 91, 83, 74, 66, 58, 50, 41, 33, 25, 17, 8, 0, -8, -17},
{240, 232, 224, 216, 207, 199, 191, 183, 174, 166, 158, 150, 141, 133, 125, 117,
108, 100, 92, 84, 75, 67, 59, 51, 42, 34, 26, 18, 9, 1, -7, -16},
{241, 233, 225, 217, 208, 200, 192, 184, 175, 167, 159, 151, 142, 134, 126, 118,
109, 101, 93, 85, 76, 68, 60, 52, 43, 35, 27, 19, 10, 2, -6, -15},
{242, 234, 226, 218, 209, 201, 193, 185, 176, 168, 160, 152, 143, 135, 127, 119,
110, 102, 94, 86, 77, 69, 61, 53, 44, 36, 28, 20, 11, 3, -5, -14},
{243, 235, 227, 219, 210, 202, 194, 186, 177, 169, 161, 153, 144, 136, 128, 120,
111, 103, 95, 87, 78, 70, 62, 54, 45, 37, 29, 21, 12, 4, -4, -13},
{244, 236, 228, 220, 211, 203, 195, 187, 178, 170, 162, 154, 145, 137, 129, 121,
112, 104, 96, 88, 79, 71, 63, 55, 46, 38, 30, 22, 13, 5, -3, -12},
{245, 237, 229, 221, 212, 204, 196, 188, 179, 171, 163, 155, 146, 138, 130, 122,
113, 105, 97, 89, 80, 72, 64, 56, 47, 39, 31, 23, 14, 6, -2, -11},
{246, 238, 230, 222, 213, 205, 197, 189, 180, 172, 164, 156, 147, 139, 131, 123,
114, 106, 98, 90, 81, 73, 65, 57, 48, 40, 32, 24, 15, 7, -1, -10},
{247, 239, 231, 223, 214, 206, 198, 190, 181, 173, 165, 157, 148, 140, 132, 124,
115, 107, 99, 91, 82, 74, 66, 58, 49, 41, 33, 25, 16, 8, 0, -9},
{248, 240, 232, 224, 215, 207, 199, 191, 182, 174, 166, 158, 149, 141, 133, 125,
116, 108, 100, 92, 83, 75, 67, 59, 50, 42, 34, 26, 17, 9, 1, -8},
{249, 241, 233, 225, 216, 208, 200, 192, 183, 175, 167, 159, 150, 142, 134, 126,
117, 109, 101, 93, 84, 76, 68, 60, 51, 43, 35, 27, 18, 10, 2, -7},
{250, 242, 234, 226, 217, 209, 201, 193, 184, 176, 168, 160, 151, 143, 135, 127,
118, 110, 102, 94, 85, 77, 69, 61, 52, 44, 36, 28, 19, 11, 3, -6},
{251, 243, 235, 227, 218, 210, 202, 194, 185, 177, 169, 161, 152, 144, 136, 128,
119, 111, 103, 95, 86, 78, 70, 62, 53, 45, 37, 29, 20, 12, 4, -5},
{252, 244, 236, 228, 219, 211, 203, 195, 186, 178, 170, 162, 153, 145, 137, 129,
120, 112, 104, 96, 87, 79, 71, 63, 54, 46, 38, 30, 21, 13, 5, -4},
{253, 245, 237, 229, 220, 212, 204, 196, 187, 179, 171, 163, 154, 146, 138, 130,
121, 113, 105, 97, 88, 80, 72, 64, 55, 47, 39, 31, 22, 14, 6, -3},
{254, 246, 238, 230, 221, 213, 205, 197, 188, 180, 172, 164, 155, 147, 139, 131,
122, 114, 106, 98, 89, 81, 73, 65, 56, 48, 40, 32, 23, 15, 7, -2},
{255, 247, 239, 231, 222, 214, 206, 198, 189, 181, 173, 165, 156, 148, 140, 132,
123, 115, 107, 99, 90, 82, 74, 66, 57, 49, 41, 33, 24, 16, 8, -1},
{256, 248, 240, 232, 223, 215, 207, 199, 190, 182, 174, 166, 157, 149, 141, 133,
124, 116, 108, 100, 91, 83, 75, 67, 58, 50, 42, 34, 25, 17, 9, 0},
{257, 249, 241, 233, 224, 216, 208, 200, 191, 183, 175, 167, 158, 150, 142, 134,
125, 117, 109, 101, 92, 84, 76, 68, 59, 51, 43, 35, 26, 18, 10, 1},
{258, 250, 242, 234, 225, 217, 209, 201, 192, 184, 176, 168, 159, 151, 143, 135,
126, 118, 110, 102, 93, 85, 77, 69, 60, 52, 44, 36, 27, 19, 11, 2},
{259, 251, 243, 235, 226, 218, 210, 202, 193, 185, 177, 169, 160, 152, 144, 136,
127, 119, 111, 103, 94, 86, 78, 70, 61, 53, 45, 37, 28, 20, 12, 3},
{260, 252, 244, 236, 227, 219, 211, 203, 194, 186, 178, 170, 161, 153, 145, 137,
128, 120, 112, 104, 95, 87, 79, 71, 62, 54, 46, 38, 29, 21, 13, 4},
{261, 253, 245, 237, 228, 220, 212, 204, 195, 187, 179, 171, 162, 154, 146, 138,
129, 121, 113, 105, 96, 88, 80, 72, 63, 55, 47, 39, 30, 22, 14, 5},
{262, 254, 246, 238, 229, 221, 213, 205, 196, 188, 180, 172, 163, 155, 147, 139,
130, 122, 114, 106, 97, 89, 81, 73, 64, 56, 48, 40, 31, 23, 15, 6},
{263, 255, 247, 239, 230, 222, 214, 206, 197, 189, 181, 173, 164, 156, 148, 140,
131, 123, 115, 107, 98, 90, 82, 74, 65, 57, 49, 41, 32, 24, 16, 7},
{264, 256, 248, 240, 231, 223, 215, 207, 198, 190, 182, 174, 165, 157, 149, 141,
132, 124, 116, 108, 99, 91, 83, 75, 66, 58, 50, 42, 33, 25, 17, 8},
{265, 257, 249, 241, 232, 224, 216, 208, 199, 191, 183, 175, 166, 158, 150, 142,
133, 125, 117, 109, 100, 92, 84, 76, 67, 59, 51, 43, 34, 26, 18, 9},
{266, 258, 250, 242, 233, 225, 217, 209, 200, 192, 184, 176, 167, 159, 151, 143,
134, 126, 118, 110, 101, 93, 85, 77, 68, 60, 52, 44, 35, 27, 19, 10},
{267, 259, 251, 243, 234, 226, 218, 210, 201, 193, 185, 177, 168, 160, 152, 144,
135, 127, 119, 111, 102, 94, 86, 78, 69, 61, 53, 45, 36, 28, 20, 11},
{268, 260, 252, 244, 235, 227, 219, 211, 202, 194, 186, 178, 169, 161, 153, 145,
136, 128, 120, 112, 103, 95, 87, 79, 70, 62, 54, 46, 37, 29, 21, 12},
{269, 261, 253, 245, 236, 228, 220, 212, 203, 195, 187, 179, 170, 162, 154, 146,
137, 129, 121, 113, 104, 96, 88, 80, 71, 63, 55, 47, 38, 30, 22, 13},
{270, 262, 254, 246, 237, 229, 221, 213, 204, 196, 188, 180, 171, 163, 155, 147,
138, 130, 122, 114, 105, 97, 89, 81, 72, 64, 56, 48, 39, 31, 23, 14},
{271, 263, 255, 247, 238, 230, 222, 214, 205, 197, 189, 181, 172, 164, 156, 148,
139, 131, 123, 115, 106, 98, 90, 82, 73, 65, 57, 49, 40, 32, 24, 15},
{272, 264, 256, 248, 239, 231, 223, 215, 206, 198, 190, 182, 173, 165, 157, 149,
140, 132, 124, 116, 107, 99, 91, 83, 74, 66, 58, 50, 41, 33, 25, 16},
{273, 265, 257, 249, 240, 232, 224, 216, 207, 199, 191, 183, 174, 166, 158, 150,
141, 133, 125, 117, 108, 100, 92, 84, 75, 67, 59, 51, 42, 34, 26, 17},
{274, 266, 258, 250, 241, 233, 225, 217, 208, 200, 192, 184, 175, 167, 159, 151,
142, 134, 126, 118, 109, 101, 93, 85, 76, 68, 60, 52, 43, 35, 27, 18},
{275, 267, 259, 251, 242, 234, 226, 218, 209, 201, 193, 185, 176, 168, 160, 152,
143, 135, 127, 119, 110, 102, 94, 86, 77, 69, 61, 53, 44, 36, 28, 19},
{276, 268, 260, 252, 243, 235, 227, 219, 210, 202, 194, 186, 177, 169, 161, 153,
144, 136, 128, 120, 111, 103, 95, 87, 78, 70, 62, 54, 45, 37, 29, 20},
{277, 269, 261, 253, 244, 236, 228, 220, 211, 203, 195, 187, 178, 170, 162, 154,
145, 137, 129, 121, 112, 104, 96, 88, 79, 71, 63, 55, 46, 38, 30, 21},
{278, 270, 262, 254, 245, 237, 229, 221, 212, 204, 196, 188, 179, 171, 163, 155,
146, 138, 130, 122, 113, 105, 97, 89, 80, 72, 64, 56, 47, 39, 31, 22},
{279, 271, 263, 255, 246, 238, 230, 222, 213, 205, 197, 189, 180, 172, 164, 156,
147, 139, 131, 123, 114, 106, 98, 90, 81, 73, 65, 57, 48, 40, 32, 23},
{280, 272, 264, 256, 247, 239, 231, 223, 214, 206, 198, 190, 181, 173, 165, 157,
148, 140, 132, 124, 115, 107, 99, 91, 82, 74, 66, 58, 49, 41, 33, 24},
{281, 273, 265, 257, 248, 240, 232, 224, 215, 207, 199, 191, 182, 174, 166, 158,
149, 141, 133, 125, 116, 108, 100, 92, 83, 75, 67, 59, 50, 42, 34, 25},
{282, 274, 266, 258, 249, 241, 233, 225, 216, 208, 200, 192, 183, 175, 167, 159,
150, 142, 134, 126, 117, 109, 101, 93, 84, 76, 68, 60, 51, 43, 35, 26},
{283, 275, 267, 259, 250, 242, 234, 226, 217, 209, 201, 193, 184, 176, 168, 160,
151, 143, 135, 127, 118, 110, 102, 94, 85, 77, 69, 61, 52, 44, 36, 27},
{284, 276, 268, 260, 251, 243, 235, 227, 218, 210, 202, 194, 185, 177, 169, 161,
152, 144, 136, 128, 119, 111, 103, 95, 86, 78, 70, 62, 53, 45, 37, 28},
{285, 277, 269, 261, 252, 244, 236, 228, 219, 211, 203, 195, 186, 178, 170, 162,
153, 145, 137, 129, 120, 112, 104, 96, 87, 79, 71, 63, 54, 46, 38, 29},
{286, 278, 270, 262, 253, 245, 237, 229, 220, 212, 204, 196, 187, 179, 171, 163,
154, 146, 138, 130, 121, 113, 105, 97, 88, 80, 72, 64, 55, 47, 39, 30},
{287, 279, 271, 263, 254, 246, 238, 230, 221, 213, 205, 197, 188, 180, 172, 164,
155, 147, 139, 131, 122, 114, 106, 98, 89, 81, 73, 65, 56, 48, 40, 31},
{288, 280, 272, 264, 255, 247, 239, 231, 222, 214, 206, 198, 189, 181, 173, 165,
156, 148, 140, 132, 123, 115, 107, 99, 90, 82, 74, 66, 57, 49, 41, 32},
{289, 281, 273, 265, 256, 248, 240, 232, 223, 215, 207, 199, 190, 182, 174, 166,
157, 149, 141, 133, 124, 116, 108, 100, 91, 83, 75, 67, 58, 50, 42, 33},
{290, 282, 274, 266, 257, 249, 241, 233, 224, 216, 208, 200, 191, 183, 175, 167,
158, 150, 142, 134, 125, 117, 109, 101, 92, 84, 76, 68, 59, 51, 43, 34},
{291, 283, 275, 267, 258, 250, 242, 234, 225, 217, 209, 201, 192, 184, 176, 168,
159, 151, 143, 135, 126, 118, 110, 102, 93, 85, 77, 69, 60, 52, 44, 35},
{292, 284, 276, 268, 259, 251, 243, 235, 226, 218, 210, 202, 193, 185, 177, 169,
160, 152, 144, 136, 127, 119, 111, 103, 94, 86, 78, 70, 61, 53, 45, 36},
{293, 285, 277, 269, 260, 252, 244, 236, 227, 219, 211, 203, 194, 186, 178, 170,
161, 153, 145, 137, 128, 120, 112, 104, 95, 87, 79, 71, 62, 54, 46, 37},
{294, 286, 278, 270, 261, 253, 245, 237, 228, 220, 212, 204, 195, 187, 179, 171,
162, 154, 146, 138, 129, 121, 113, 105, 96, 88, 80, 72, 63, 55, 47, 38},
{295, 287, 279, 271, 262, 254, 246, 238, 229, 221, 213, 205, 196, 188, 180, 172,
163, 155, 147, 139, 130, 122, 114, 106, 97, 89, 81, 73, 64, 56, 48, 39},
{296, 288, 280, 272, 263, 255, 247, 239, 230, 222, 214, 206, 197, 189, 181, 173,
164, 156, 148, 140, 131, 123, 115, 107, 98, 90, 82, 74, 65, 57, 49, 40},
{297, 289, 281, 273, 264, 256, 248, 240, 231, 223, 215, 207, 198, 190, 182, 174,
165, 157, 149, 141, 132, 124, 116, 108, 99, 91, 83, 75, 66, 58, 50, 41},
{298, 290, 282, 274, 265, 257, 249, 241, 232, 224, 216, 208, 199, 191, 183, 175,
166, 158, 150, 142, 133, 125, 117, 109, 100, 92, 84, 76, 67, 59, 51, 42},
{299, 291, 283, 275, 266, 258, 250, 242, 233, 225, 217, 209, 200, 192, 184, 176,
167, 159, 151, 143, 134, 126, 118, 110, 101, 93, 85, 77, 68, 60, 52, 43},
};
static const int32_t (*error_blue_table)[32] = error_red_table;
static const int32_t error_greed_table[][64] = {
{0, -4, -8, -12, -16, -20, -24, -28, -32, -36, -40, -44, -48,
-52, -56, -60, -65, -69, -73, -77, -81, -85, -89, -93, -97, -101,
-105, -109, -113, -117, -121, -125, -130, -134, -138, -142, -146, -150, -154,
-158, -162, -166, -170, -174, -178, -182, -186, -190, -195, -199, -203, -207,
-211, -215, -219, -223, -227, -231, -235, -239, -243, -247, -251, -256},
{1, -3, -7, -11, -15, -19, -23, -27, -31, -35, -39, -43, -47,
-51, -55, -59, -64, -68, -72, -76, -80, -84, -88, -92, -96, -100,
-104, -108, -112, -116, -120, -124, -129, -133, -137, -141, -145, -149, -153,
-157, -161, -165, -169, -173, -177, -181, -185, -189, -194, -198, -202, -206,
-210, -214, -218, -222, -226, -230, -234, -238, -242, -246, -250, -255},
{2, -2, -6, -10, -14, -18, -22, -26, -30, -34, -38, -42, -46,
-50, -54, -58, -63, -67, -71, -75, -79, -83, -87, -91, -95, -99,
-103, -107, -111, -115, -119, -123, -128, -132, -136, -140, -144, -148, -152,
-156, -160, -164, -168, -172, -176, -180, -184, -188, -193, -197, -201, -205,
-209, -213, -217, -221, -225, -229, -233, -237, -241, -245, -249, -254},
{3, -1, -5, -9, -13, -17, -21, -25, -29, -33, -37, -41, -45,
-49, -53, -57, -62, -66, -70, -74, -78, -82, -86, -90, -94, -98,
-102, -106, -110, -114, -118, -122, -127, -131, -135, -139, -143, -147, -151,
-155, -159, -163, -167, -171, -175, -179, -183, -187, -192, -196, -200, -204,
-208, -212, -216, -220, -224, -228, -232, -236, -240, -244, -248, -253},
{4, 0, -4, -8, -12, -16, -20, -24, -28, -32, -36, -40, -44,
-48, -52, -56, -61, -65, -69, -73, -77, -81, -85, -89, -93, -97,
-101, -105, -109, -113, -117, -121, -126, -130, -134, -138, -142, -146, -150,
-154, -158, -162, -166, -170, -174, -178, -182, -186, -191, -195, -199, -203,
-207, -211, -215, -219, -223, -227, -231, -235, -239, -243, -247, -252},
{5, 1, -3, -7, -11, -15, -19, -23, -27, -31, -35, -39, -43,
-47, -51, -55, -60, -64, -68, -72, -76, -80, -84, -88, -92, -96,
-100, -104, -108, -112, -116, -120, -125, -129, -133, -137, -141, -145, -149,
-153, -157, -161, -165, -169, -173, -177, -181, -185, -190, -194, -198, -202,
-206, -210, -214, -218, -222, -226, -230, -234, -238, -242, -246, -251},
{6, 2, -2, -6, -10, -14, -18, -22, -26, -30, -34, -38, -42,
-46, -50, -54, -59, -63, -67, -71, -75, -79, -83, -87, -91, -95,
-99, -103, -107, -111, -115, -119, -124, -128, -132, -136, -140, -144, -148,
-152, -156, -160, -164, -168, -172, -176, -180, -184, -189, -193, -197, -201,
-205, -209, -213, -217, -221, -225, -229, -233, -237, -241, -245, -250},
{7, 3, -1, -5, -9, -13, -17, -21, -25, -29, -33, -37, -41,
-45, -49, -53, -58, -62, -66, -70, -74, -78, -82, -86, -90, -94,
-98, -102, -106, -110, -114, -118, -123, -127, -131, -135, -139, -143, -147,
-151, -155, -159, -163, -167, -171, -175, -179, -183, -188, -192, -196, -200,
-204, -208, -212, -216, -220, -224, -228, -232, -236, -240, -244, -249},
{8, 4, 0, -4, -8, -12, -16, -20, -24, -28, -32, -36, -40,
-44, -48, -52, -57, -61, -65, -69, -73, -77, -81, -85, -89, -93,
-97, -101, -105, -109, -113, -117, -122, -126, -130, -134, -138, -142, -146,
-150, -154, -158, -162, -166, -170, -174, -178, -182, -187, -191, -195, -199,
-203, -207, -211, -215, -219, -223, -227, -231, -235, -239, -243, -248},
{9, 5, 1, -3, -7, -11, -15, -19, -23, -27, -31, -35, -39,
-43, -47, -51, -56, -60, -64, -68, -72, -76, -80, -84, -88, -92,
-96, -100, -104, -108, -112, -116, -121, -125, -129, -133, -137, -141, -145,
-149, -153, -157, -161, -165, -169, -173, -177, -181, -186, -190, -194, -198,
-202, -206, -210, -214, -218, -222, -226, -230, -234, -238, -242, -247},
{10, 6, 2, -2, -6, -10, -14, -18, -22, -26, -30, -34, -38,
-42, -46, -50, -55, -59, -63, -67, -71, -75, -79, -83, -87, -91,
-95, -99, -103, -107, -111, -115, -120, -124, -128, -132, -136, -140, -144,
-148, -152, -156, -160, -164, -168, -172, -176, -180, -185, -189, -193, -197,
-201, -205, -209, -213, -217, -221, -225, -229, -233, -237, -241, -246},
{11, 7, 3, -1, -5, -9, -13, -17, -21, -25, -29, -33, -37,
-41, -45, -49, -54, -58, -62, -66, -70, -74, -78, -82, -86, -90,
-94, -98, -102, -106, -110, -114, -119, -123, -127, -131, -135, -139, -143,
-147, -151, -155, -159, -163, -167, -171, -175, -179, -184, -188, -192, -196,
-200, -204, -208, -212, -216, -220, -224, -228, -232, -236, -240, -245},
{12, 8, 4, 0, -4, -8, -12, -16, -20, -24, -28, -32, -36,
-40, -44, -48, -53, -57, -61, -65, -69, -73, -77, -81, -85, -89,
-93, -97, -101, -105, -109, -113, -118, -122, -126, -130, -134, -138, -142,
-146, -150, -154, -158, -162, -166, -170, -174, -178, -183, -187, -191, -195,
-199, -203, -207, -211, -215, -219, -223, -227, -231, -235, -239, -244},
{13, 9, 5, 1, -3, -7, -11, -15, -19, -23, -27, -31, -35,
-39, -43, -47, -52, -56, -60, -64, -68, -72, -76, -80, -84, -88,
-92, -96, -100, -104, -108, -112, -117, -121, -125, -129, -133, -137, -141,
-145, -149, -153, -157, -161, -165, -169, -173, -177, -182, -186, -190, -194,
-198, -202, -206, -210, -214, -218, -222, -226, -230, -234, -238, -243},
{14, 10, 6, 2, -2, -6, -10, -14, -18, -22, -26, -30, -34,
-38, -42, -46, -51, -55, -59, -63, -67, -71, -75, -79, -83, -87,
-91, -95, -99, -103, -107, -111, -116, -120, -124, -128, -132, -136, -140,
-144, -148, -152, -156, -160, -164, -168, -172, -176, -181, -185, -189, -193,
-197, -201, -205, -209, -213, -217, -221, -225, -229, -233, -237, -242},
{15, 11, 7, 3, -1, -5, -9, -13, -17, -21, -25, -29, -33,
-37, -41, -45, -50, -54, -58, -62, -66, -70, -74, -78, -82, -86,
-90, -94, -98, -102, -106, -110, -115, -119, -123, -127, -131, -135, -139,
-143, -147, -151, -155, -159, -163, -167, -171, -175, -180, -184, -188, -192,
-196, -200, -204, -208, -212, -216, -220, -224, -228, -232, -236, -241},
{16, 12, 8, 4, 0, -4, -8, -12, -16, -20, -24, -28, -32,
-36, -40, -44, -49, -53, -57, -61, -65, -69, -73, -77, -81, -85,
-89, -93, -97, -101, -105, -109, -114, -118, -122, -126, -130, -134, -138,
-142, -146, -150, -154, -158, -162, -166, -170, -174, -179, -183, -187, -191,
-195, -199, -203, -207, -211, -215, -219, -223, -227, -231, -235, -240},
{17, 13, 9, 5, 1, -3, -7, -11, -15, -19, -23, -27, -31,
-35, -39, -43, -48, -52, -56, -60, -64, -68, -72, -76, -80, -84,
-88, -92, -96, -100, -104, -108, -113, -117, -121, -125, -129, -133, -137,
-141, -145, -149, -153, -157, -161, -165, -169, -173, -178, -182, -186, -190,
-194, -198, -202, -206, -210, -214, -218, -222, -226, -230, -234, -239},
{18, 14, 10, 6, 2, -2, -6, -10, -14, -18, -22, -26, -30,
-34, -38, -42, -47, -51, -55, -59, -63, -67, -71, -75, -79, -83,
-87, -91, -95, -99, -103, -107, -112, -116, -120, -124, -128, -132, -136,
-140, -144, -148, -152, -156, -160, -164, -168, -172, -177, -181, -185, -189,
-193, -197, -201, -205, -209, -213, -217, -221, -225, -229, -233, -238},
{19, 15, 11, 7, 3, -1, -5, -9, -13, -17, -21, -25, -29,
-33, -37, -41, -46, -50, -54, -58, -62, -66, -70, -74, -78, -82,
-86, -90, -94, -98, -102, -106, -111, -115, -119, -123, -127, -131, -135,
-139, -143, -147, -151, -155, -159, -163, -167, -171, -176, -180, -184, -188,
-192, -196, -200, -204, -208, -212, -216, -220, -224, -228, -232, -237},
{20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -20, -24, -28,
-32, -36, -40, -45, -49, -53, -57, -61, -65, -69, -73, -77, -81,
-85, -89, -93, -97, -101, -105, -110, -114, -118, -122, -126, -130, -134,
-138, -142, -146, -150, -154, -158, -162, -166, -170, -175, -179, -183, -187,
-191, -195, -199, -203, -207, -211, -215, -219, -223, -227, -231, -236},
{21, 17, 13, 9, 5, 1, -3, -7, -11, -15, -19, -23, -27,
-31, -35, -39, -44, -48, -52, -56, -60, -64, -68, -72, -76, -80,
-84, -88, -92, -96, -100, -104, -109, -113, -117, -121, -125, -129, -133,
-137, -141, -145, -149, -153, -157, -161, -165, -169, -174, -178, -182, -186,
-190, -194, -198, -202, -206, -210, -214, -218, -222, -226, -230, -235},
{22, 18, 14, 10, 6, 2, -2, -6, -10, -14, -18, -22, -26,
-30, -34, -38, -43, -47, -51, -55, -59, -63, -67, -71, -75, -79,
-83, -87, -91, -95, -99, -103, -108, -112, -116, -120, -124, -128, -132,
-136, -140, -144, -148, -152, -156, -160, -164, -168, -173, -177, -181, -185,
-189, -193, -197, -201, -205, -209, -213, -217, -221, -225, -229, -234},
{23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -17, -21, -25,
-29, -33, -37, -42, -46, -50, -54, -58, -62, -66, -70, -74, -78,
-82, -86, -90, -94, -98, -102, -107, -111, -115, -119, -123, -127, -131,
-135, -139, -143, -147, -151, -155, -159, -163, -167, -172, -176, -180, -184,
-188, -192, -196, -200, -204, -208, -212, -216, -220, -224, -228, -233},
{24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -20, -24,
-28, -32, -36, -41, -45, -49, -53, -57, -61, -65, -69, -73, -77,
-81, -85, -89, -93, -97, -101, -106, -110, -114, -118, -122, -126, -130,
-134, -138, -142, -146, -150, -154, -158, -162, -166, -171, -175, -179, -183,
-187, -191, -195, -199, -203, -207, -211, -215, -219, -223, -227, -232},
{25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -15, -19, -23,
-27, -31, -35, -40, -44, -48, -52, -56, -60, -64, -68, -72, -76,
-80, -84, -88, -92, -96, -100, -105, -109, -113, -117, -121, -125, -129,
-133, -137, -141, -145, -149, -153, -157, -161, -165, -170, -174, -178, -182,
-186, -190, -194, -198, -202, -206, -210, -214, -218, -222, -226, -231},
{26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -14, -18, -22,
-26, -30, -34, -39, -43, -47, -51, -55, -59, -63, -67, -71, -75,
-79, -83, -87, -91, -95, -99, -104, -108, -112, -116, -120, -124, -128,
-132, -136, -140, -144, -148, -152, -156, -160, -164, -169, -173, -177, -181,
-185, -189, -193, -197, -201, -205, -209, -213, -217, -221, -225, -230},
{27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -17, -21,
-25, -29, -33, -38, -42, -46, -50, -54, -58, -62, -66, -70, -74,
-78, -82, -86, -90, -94, -98, -103, -107, -111, -115, -119, -123, -127,
-131, -135, -139, -143, -147, -151, -155, -159, -163, -168, -172, -176, -180,
-184, -188, -192, -196, -200, -204, -208, -212, -216, -220, -224, -229},
{28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -20,
-24, -28, -32, -37, -41, -45, -49, -53, -57, -61, -65, -69, -73,
-77, -81, -85, -89, -93, -97, -102, -106, -110, -114, -118, -122, -126,
-130, -134, -138, -142, -146, -150, -154, -158, -162, -167, -171, -175, -179,
-183, -187, -191, -195, -199, -203, -207, -211, -215, -219, -223, -228},
{29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -15, -19,
-23, -27, -31, -36, -40, -44, -48, -52, -56, -60, -64, -68, -72,
-76, -80, -84, -88, -92, -96, -101, -105, -109, -113, -117, -121, -125,
-129, -133, -137, -141, -145, -149, -153, -157, -161, -166, -170, -174, -178,
-182, -186, -190, -194, -198, -202, -206, -210, -214, -218, -222, -227},
{30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -14, -18,
-22, -26, -30, -35, -39, -43, -47, -51, -55, -59, -63, -67, -71,
-75, -79, -83, -87, -91, -95, -100, -104, -108, -112, -116, -120, -124,
-128, -132, -136, -140, -144, -148, -152, -156, -160, -165, -169, -173, -177,
-181, -185, -189, -193, -197, -201, -205, -209, -213, -217, -221, -226},
{31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -17,
-21, -25, -29, -34, -38, -42, -46, -50, -54, -58, -62, -66, -70,
-74, -78, -82, -86, -90, -94, -99, -103, -107, -111, -115, -119, -123,
-127, -131, -135, -139, -143, -147, -151, -155, -159, -164, -168, -172, -176,
-180, -184, -188, -192, -196, -200, -204, -208, -212, -216, -220, -225},
{32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -16,
-20, -24, -28, -33, -37, -41, -45, -49, -53, -57, -61, -65, -69,
-73, -77, -81, -85, -89, -93, -98, -102, -106, -110, -114, -118, -122,
-126, -130, -134, -138, -142, -146, -150, -154, -158, -163, -167, -171, -175,
-179, -183, -187, -191, -195, -199, -203, -207, -211, -215, -219, -224},
{33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -15,
-19, -23, -27, -32, -36, -40, -44, -48, -52, -56, -60, -64, -68,
-72, -76, -80, -84, -88, -92, -97, -101, -105, -109, -113, -117, -121,
-125, -129, -133, -137, -141, -145, -149, -153, -157, -162, -166, -170, -174,
-178, -182, -186, -190, -194, -198, -202, -206, -210, -214, -218, -223},
{34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -14,
-18, -22, -26, -31, -35, -39, -43, -47, -51, -55, -59, -63, -67,
-71, -75, -79, -83, -87, -91, -96, -100, -104, -108, -112, -116, -120,
-124, -128, -132, -136, -140, -144, -148, -152, -156, -161, -165, -169, -173,
-177, -181, -185, -189, -193, -197, -201, -205, -209, -213, -217, -222},
{35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13,
-17, -21, -25, -30, -34, -38, -42, -46, -50, -54, -58, -62, -66,
-70, -74, -78, -82, -86, -90, -95, -99, -103, -107, -111, -115, -119,
-123, -127, -131, -135, -139, -143, -147, -151, -155, -160, -164, -168, -172,
-176, -180, -184, -188, -192, -196, -200, -204, -208, -212, -216, -221},
{36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12,
-16, -20, -24, -29, -33, -37, -41, -45, -49, -53, -57, -61, -65,
-69, -73, -77, -81, -85, -89, -94, -98, -102, -106, -110, -114, -118,
-122, -126, -130, -134, -138, -142, -146, -150, -154, -159, -163, -167, -171,
-175, -179, -183, -187, -191, -195, -199, -203, -207, -211, -215, -220},
{37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11,
-15, -19, -23, -28, -32, -36, -40, -44, -48, -52, -56, -60, -64,
-68, -72, -76, -80, -84, -88, -93, -97, -101, -105, -109, -113, -117,
-121, -125, -129, -133, -137, -141, -145, -149, -153, -158, -162, -166, -170,
-174, -178, -182, -186, -190, -194, -198, -202, -206, -210, -214, -219},
{38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10,
-14, -18, -22, -27, -31, -35, -39, -43, -47, -51, -55, -59, -63,
-67, -71, -75, -79, -83, -87, -92, -96, -100, -104, -108, -112, -116,
-120, -124, -128, -132, -136, -140, -144, -148, -152, -157, -161, -165, -169,
-173, -177, -181, -185, -189, -193, -197, -201, -205, -209, -213, -218},
{39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9,
-13, -17, -21, -26, -30, -34, -38, -42, -46, -50, -54, -58, -62,
-66, -70, -74, -78, -82, -86, -91, -95, -99, -103, -107, -111, -115,
-119, -123, -127, -131, -135, -139, -143, -147, -151, -156, -160, -164, -168,
-172, -176, -180, -184, -188, -192, -196, -200, -204, -208, -212, -217},
{40, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8,
-12, -16, -20, -25, -29, -33, -37, -41, -45, -49, -53, -57, -61,
-65, -69, -73, -77, -81, -85, -90, -94, -98, -102, -106, -110, -114,
-118, -122, -126, -130, -134, -138, -142, -146, -150, -155, -159, -163, -167,
-171, -175, -179, -183, -187, -191, -195, -199, -203, -207, -211, -216},
{41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7,
-11, -15, -19, -24, -28, -32, -36, -40, -44, -48, -52, -56, -60,
-64, -68, -72, -76, -80, -84, -89, -93, -97, -101, -105, -109, -113,
-117, -121, -125, -129, -133, -137, -141, -145, -149, -154, -158, -162, -166,
-170, -174, -178, -182, -186, -190, -194, -198, -202, -206, -210, -215},
{42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6,
-10, -14, -18, -23, -27, -31, -35, -39, -43, -47, -51, -55, -59,
-63, -67, -71, -75, -79, -83, -88, -92, -96, -100, -104, -108, -112,
-116, -120, -124, -128, -132, -136, -140, -144, -148, -153, -157, -161, -165,
-169, -173, -177, -181, -185, -189, -193, -197, -201, -205, -209, -214},
{43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5,
-9, -13, -17, -22, -26, -30, -34, -38, -42, -46, -50, -54, -58,
-62, -66, -70, -74, -78, -82, -87, -91, -95, -99, -103, -107, -111,
-115, -119, -123, -127, -131, -135, -139, -143, -147, -152, -156, -160, -164,
-168, -172, -176, -180, -184, -188, -192, -196, -200, -204, -208, -213},
{44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4,
-8, -12, -16, -21, -25, -29, -33, -37, -41, -45, -49, -53, -57,
-61, -65, -69, -73, -77, -81, -86, -90, -94, -98, -102, -106, -110,
-114, -118, -122, -126, -130, -134, -138, -142, -146, -151, -155, -159, -163,
-167, -171, -175, -179, -183, -187, -191, -195, -199, -203, -207, -212},
{45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3,
-7, -11, -15, -20, -24, -28, -32, -36, -40, -44, -48, -52, -56,
-60, -64, -68, -72, -76, -80, -85, -89, -93, -97, -101, -105, -109,
-113, -117, -121, -125, -129, -133, -137, -141, -145, -150, -154, -158, -162,
-166, -170, -174, -178, -182, -186, -190, -194, -198, -202, -206, -211},
{46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2,
-6, -10, -14, -19, -23, -27, -31, -35, -39, -43, -47, -51, -55,
-59, -63, -67, -71, -75, -79, -84, -88, -92, -96, -100, -104, -108,
-112, -116, -120, -124, -128, -132, -136, -140, -144, -149, -153, -157, -161,
-165, -169, -173, -177, -181, -185, -189, -193, -197, -201, -205, -210},
{47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1,
-5, -9, -13, -18, -22, -26, -30, -34, -38, -42, -46, -50, -54,
-58, -62, -66, -70, -74, -78, -83, -87, -91, -95, -99, -103, -107,
-111, -115, -119, -123, -127, -131, -135, -139, -143, -148, -152, -156, -160,
-164, -168, -172, -176, -180, -184, -188, -192, -196, -200, -204, -209},
{48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0,
-4, -8, -12, -17, -21, -25, -29, -33, -37, -41, -45, -49, -53,
-57, -61, -65, -69, -73, -77, -82, -86, -90, -94, -98, -102, -106,
-110, -114, -118, -122, -126, -130, -134, -138, -142, -147, -151, -155, -159,
-163, -167, -171, -175, -179, -183, -187, -191, -195, -199, -203, -208},
{49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1,
-3, -7, -11, -16, -20, -24, -28, -32, -36, -40, -44, -48, -52,
-56, -60, -64, -68, -72, -76, -81, -85, -89, -93, -97, -101, -105,
-109, -113, -117, -121, -125, -129, -133, -137, -141, -146, -150, -154, -158,
-162, -166, -170, -174, -178, -182, -186, -190, -194, -198, -202, -207},
{50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2,
-2, -6, -10, -15, -19, -23, -27, -31, -35, -39, -43, -47, -51,
-55, -59, -63, -67, -71, -75, -80, -84, -88, -92, -96, -100, -104,
-108, -112, -116, -120, -124, -128, -132, -136, -140, -145, -149, -153, -157,
-161, -165, -169, -173, -177, -181, -185, -189, -193, -197, -201, -206},
{51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3,
-1, -5, -9, -14, -18, -22, -26, -30, -34, -38, -42, -46, -50,
-54, -58, -62, -66, -70, -74, -79, -83, -87, -91, -95, -99, -103,
-107, -111, -115, -119, -123, -127, -131, -135, -139, -144, -148, -152, -156,
-160, -164, -168, -172, -176, -180, -184, -188, -192, -196, -200, -205},
{52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4,
0, -4, -8, -13, -17, -21, -25, -29, -33, -37, -41, -45, -49,
-53, -57, -61, -65, -69, -73, -78, -82, -86, -90, -94, -98, -102,
-106, -110, -114, -118, -122, -126, -130, -134, -138, -143, -147, -151, -155,
-159, -163, -167, -171, -175, -179, -183, -187, -191, -195, -199, -204},
{53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5,
1, -3, -7, -12, -16, -20, -24, -28, -32, -36, -40, -44, -48,
-52, -56, -60, -64, -68, -72, -77, -81, -85, -89, -93, -97, -101,
-105, -109, -113, -117, -121, -125, -129, -133, -137, -142, -146, -150, -154,
-158, -162, -166, -170, -174, -178, -182, -186, -190, -194, -198, -203},
{54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6,
2, -2, -6, -11, -15, -19, -23, -27, -31, -35, -39, -43, -47,
-51, -55, -59, -63, -67, -71, -76, -80, -84, -88, -92, -96, -100,
-104, -108, -112, -116, -120, -124, -128, -132, -136, -141, -145, -149, -153,
-157, -161, -165, -169, -173, -177, -181, -185, -189, -193, -197, -202},
{55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7,
3, -1, -5, -10, -14, -18, -22, -26, -30, -34, -38, -42, -46,
-50, -54, -58, -62, -66, -70, -75, -79, -83, -87, -91, -95, -99,
-103, -107, -111, -115, -119, -123, -127, -131, -135, -140, -144, -148, -152,
-156, -160, -164, -168, -172, -176, -180, -184, -188, -192, -196, -201},
{56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8,
4, 0, -4, -9, -13, -17, -21, -25, -29, -33, -37, -41, -45,
-49, -53, -57, -61, -65, -69, -74, -78, -82, -86, -90, -94, -98,
-102, -106, -110, -114, -118, -122, -126, -130, -134, -139, -143, -147, -151,
-155, -159, -163, -167, -171, -175, -179, -183, -187, -191, -195, -200},
{57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9,
5, 1, -3, -8, -12, -16, -20, -24, -28, -32, -36, -40, -44,
-48, -52, -56, -60, -64, -68, -73, -77, -81, -85, -89, -93, -97,
-101, -105, -109, -113, -117, -121, -125, -129, -133, -138, -142, -146, -150,
-154, -158, -162, -166, -170, -174, -178, -182, -186, -190, -194, -199},
{58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10,
6, 2, -2, -7, -11, -15, -19, -23, -27, -31, -35, -39, -43,
-47, -51, -55, -59, -63, -67, -72, -76, -80, -84, -88, -92, -96,
-100, -104, -108, -112, -116, -120, -124, -128, -132, -137, -141, -145, -149,
-153, -157, -161, -165, -169, -173, -177, -181, -185, -189, -193, -198},
{59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11,
7, 3, -1, -6, -10, -14, -18, -22, -26, -30, -34, -38, -42,
-46, -50, -54, -58, -62, -66, -71, -75, -79, -83, -87, -91, -95,
-99, -103, -107, -111, -115, -119, -123, -127, -131, -136, -140, -144, -148,
-152, -156, -160, -164, -168, -172, -176, -180, -184, -188, -192, -197},
{60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12,
8, 4, 0, -5, -9, -13, -17, -21, -25, -29, -33, -37, -41,
-45, -49, -53, -57, -61, -65, -70, -74, -78, -82, -86, -90, -94,
-98, -102, -106, -110, -114, -118, -122, -126, -130, -135, -139, -143, -147,
-151, -155, -159, -163, -167, -171, -175, -179, -183, -187, -191, -196},
{61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13,
9, 5, 1, -4, -8, -12, -16, -20, -24, -28, -32, -36, -40,
-44, -48, -52, -56, -60, -64, -69, -73, -77, -81, -85, -89, -93,
-97, -101, -105, -109, -113, -117, -121, -125, -129, -134, -138, -142, -146,
-150, -154, -158, -162, -166, -170, -174, -178, -182, -186, -190, -195},
{62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14,
10, 6, 2, -3, -7, -11, -15, -19, -23, -27, -31, -35, -39,
-43, -47, -51, -55, -59, -63, -68, -72, -76, -80, -84, -88, -92,
-96, -100, -104, -108, -112, -116, -120, -124, -128, -133, -137, -141, -145,
-149, -153, -157, -161, -165, -169, -173, -177, -181, -185, -189, -194},
{63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15,
11, 7, 3, -2, -6, -10, -14, -18, -22, -26, -30, -34, -38,
-42, -46, -50, -54, -58, -62, -67, -71, -75, -79, -83, -87, -91,
-95, -99, -103, -107, -111, -115, -119, -123, -127, -132, -136, -140, -144,
-148, -152, -156, -160, -164, -168, -172, -176, -180, -184, -188, -193},
{64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16,
12, 8, 4, -1, -5, -9, -13, -17, -21, -25, -29, -33, -37,
-41, -45, -49, -53, -57, -61, -66, -70, -74, -78, -82, -86, -90,
-94, -98, -102, -106, -110, -114, -118, -122, -126, -131, -135, -139, -143,
-147, -151, -155, -159, -163, -167, -171, -175, -179, -183, -187, -192},
{65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17,
13, 9, 5, 0, -4, -8, -12, -16, -20, -24, -28, -32, -36,
-40, -44, -48, -52, -56, -60, -65, -69, -73, -77, -81, -85, -89,
-93, -97, -101, -105, -109, -113, -117, -121, -125, -130, -134, -138, -142,
-146, -150, -154, -158, -162, -166, -170, -174, -178, -182, -186, -191},
{66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18,
14, 10, 6, 1, -3, -7, -11, -15, -19, -23, -27, -31, -35,
-39, -43, -47, -51, -55, -59, -64, -68, -72, -76, -80, -84, -88,
-92, -96, -100, -104, -108, -112, -116, -120, -124, -129, -133, -137, -141,
-145, -149, -153, -157, -161, -165, -169, -173, -177, -181, -185, -190},
{67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19,
15, 11, 7, 2, -2, -6, -10, -14, -18, -22, -26, -30, -34,
-38, -42, -46, -50, -54, -58, -63, -67, -71, -75, -79, -83, -87,
-91, -95, -99, -103, -107, -111, -115, -119, -123, -128, -132, -136, -140,
-144, -148, -152, -156, -160, -164, -168, -172, -176, -180, -184, -189},
{68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20,
16, 12, 8, 3, -1, -5, -9, -13, -17, -21, -25, -29, -33,
-37, -41, -45, -49, -53, -57, -62, -66, -70, -74, -78, -82, -86,
-90, -94, -98, -102, -106, -110, -114, -118, -122, -127, -131, -135, -139,
-143, -147, -151, -155, -159, -163, -167, -171, -175, -179, -183, -188},
{69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21,
17, 13, 9, 4, 0, -4, -8, -12, -16, -20, -24, -28, -32,
-36, -40, -44, -48, -52, -56, -61, -65, -69, -73, -77, -81, -85,
-89, -93, -97, -101, -105, -109, -113, -117, -121, -126, -130, -134, -138,
-142, -146, -150, -154, -158, -162, -166, -170, -174, -178, -182, -187},
{70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22,
18, 14, 10, 5, 1, -3, -7, -11, -15, -19, -23, -27, -31,
-35, -39, -43, -47, -51, -55, -60, -64, -68, -72, -76, -80, -84,
-88, -92, -96, -100, -104, -108, -112, -116, -120, -125, -129, -133, -137,
-141, -145, -149, -153, -157, -161, -165, -169, -173, -177, -181, -186},
{71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23,
19, 15, 11, 6, 2, -2, -6, -10, -14, -18, -22, -26, -30,
-34, -38, -42, -46, -50, -54, -59, -63, -67, -71, -75, -79, -83,
-87, -91, -95, -99, -103, -107, -111, -115, -119, -124, -128, -132, -136,
-140, -144, -148, -152, -156, -160, -164, -168, -172, -176, -180, -185},
{72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24,
20, 16, 12, 7, 3, -1, -5, -9, -13, -17, -21, -25, -29,
-33, -37, -41, -45, -49, -53, -58, -62, -66, -70, -74, -78, -82,
-86, -90, -94, -98, -102, -106, -110, -114, -118, -123, -127, -131, -135,
-139, -143, -147, -151, -155, -159, -163, -167, -171, -175, -179, -184},
{73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25,
21, 17, 13, 8, 4, 0, -4, -8, -12, -16, -20, -24, -28,
-32, -36, -40, -44, -48, -52, -57, -61, -65, -69, -73, -77, -81,
-85, -89, -93, -97, -101, -105, -109, -113, -117, -122, -126, -130, -134,
-138, -142, -146, -150, -154, -158, -162, -166, -170, -174, -178, -183},
{74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26,
22, 18, 14, 9, 5, 1, -3, -7, -11, -15, -19, -23, -27,
-31, -35, -39, -43, -47, -51, -56, -60, -64, -68, -72, -76, -80,
-84, -88, -92, -96, -100, -104, -108, -112, -116, -121, -125, -129, -133,
-137, -141, -145, -149, -153, -157, -161, -165, -169, -173, -177, -182},
{75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27,
23, 19, 15, 10, 6, 2, -2, -6, -10, -14, -18, -22, -26,
-30, -34, -38, -42, -46, -50, -55, -59, -63, -67, -71, -75, -79,
-83, -87, -91, -95, -99, -103, -107, -111, -115, -120, -124, -128, -132,
-136, -140, -144, -148, -152, -156, -160, -164, -168, -172, -176, -181},
{76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28,
24, 20, 16, 11, 7, 3, -1, -5, -9, -13, -17, -21, -25,
-29, -33, -37, -41, -45, -49, -54, -58, -62, -66, -70, -74, -78,
-82, -86, -90, -94, -98, -102, -106, -110, -114, -119, -123, -127, -131,
-135, -139, -143, -147, -151, -155, -159, -163, -167, -171, -175, -180},
{77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29,
25, 21, 17, 12, 8, 4, 0, -4, -8, -12, -16, -20, -24,
-28, -32, -36, -40, -44, -48, -53, -57, -61, -65, -69, -73, -77,
-81, -85, -89, -93, -97, -101, -105, -109, -113, -118, -122, -126, -130,
-134, -138, -142, -146, -150, -154, -158, -162, -166, -170, -174, -179},
{78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30,
26, 22, 18, 13, 9, 5, 1, -3, -7, -11, -15, -19, -23,
-27, -31, -35, -39, -43, -47, -52, -56, -60, -64, -68, -72, -76,
-80, -84, -88, -92, -96, -100, -104, -108, -112, -117, -121, -125, -129,
-133, -137, -141, -145, -149, -153, -157, -161, -165, -169, -173, -178},
{79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31,
27, 23, 19, 14, 10, 6, 2, -2, -6, -10, -14, -18, -22,
-26, -30, -34, -38, -42, -46, -51, -55, -59, -63, -67, -71, -75,
-79, -83, -87, -91, -95, -99, -103, -107, -111, -116, -120, -124, -128,
-132, -136, -140, -144, -148, -152, -156, -160, -164, -168, -172, -177},
{80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32,
28, 24, 20, 15, 11, 7, 3, -1, -5, -9, -13, -17, -21,
-25, -29, -33, -37, -41, -45, -50, -54, -58, -62, -66, -70, -74,
-78, -82, -86, -90, -94, -98, -102, -106, -110, -115, -119, -123, -127,
-131, -135, -139, -143, -147, -151, -155, -159, -163, -167, -171, -176},
{81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33,
29, 25, 21, 16, 12, 8, 4, 0, -4, -8, -12, -16, -20,
-24, -28, -32, -36, -40, -44, -49, -53, -57, -61, -65, -69, -73,
-77, -81, -85, -89, -93, -97, -101, -105, -109, -114, -118, -122, -126,
-130, -134, -138, -142, -146, -150, -154, -158, -162, -166, -170, -175},
{82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34,
30, 26, 22, 17, 13, 9, 5, 1, -3, -7, -11, -15, -19,
-23, -27, -31, -35, -39, -43, -48, -52, -56, -60, -64, -68, -72,
-76, -80, -84, -88, -92, -96, -100, -104, -108, -113, -117, -121, -125,
-129, -133, -137, -141, -145, -149, -153, -157, -161, -165, -169, -174},
{83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35,
31, 27, 23, 18, 14, 10, 6, 2, -2, -6, -10, -14, -18,
-22, -26, -30, -34, -38, -42, -47, -51, -55, -59, -63, -67, -71,
-75, -79, -83, -87, -91, -95, -99, -103, -107, -112, -116, -120, -124,
-128, -132, -136, -140, -144, -148, -152, -156, -160, -164, -168, -173},
{84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36,
32, 28, 24, 19, 15, 11, 7, 3, -1, -5, -9, -13, -17,
-21, -25, -29, -33, -37, -41, -46, -50, -54, -58, -62, -66, -70,
-74, -78, -82, -86, -90, -94, -98, -102, -106, -111, -115, -119, -123,
-127, -131, -135, -139, -143, -147, -151, -155, -159, -163, -167, -172},
{85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37,
33, 29, 25, 20, 16, 12, 8, 4, 0, -4, -8, -12, -16,
-20, -24, -28, -32, -36, -40, -45, -49, -53, -57, -61, -65, -69,
-73, -77, -81, -85, -89, -93, -97, -101, -105, -110, -114, -118, -122,
-126, -130, -134, -138, -142, -146, -150, -154, -158, -162, -166, -171},
{86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38,
34, 30, 26, 21, 17, 13, 9, 5, 1, -3, -7, -11, -15,
-19, -23, -27, -31, -35, -39, -44, -48, -52, -56, -60, -64, -68,
-72, -76, -80, -84, -88, -92, -96, -100, -104, -109, -113, -117, -121,
-125, -129, -133, -137, -141, -145, -149, -153, -157, -161, -165, -170},
{87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39,
35, 31, 27, 22, 18, 14, 10, 6, 2, -2, -6, -10, -14,
-18, -22, -26, -30, -34, -38, -43, -47, -51, -55, -59, -63, -67,
-71, -75, -79, -83, -87, -91, -95, -99, -103, -108, -112, -116, -120,
-124, -128, -132, -136, -140, -144, -148, -152, -156, -160, -164, -169},
{88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40,
36, 32, 28, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13,
-17, -21, -25, -29, -33, -37, -42, -46, -50, -54, -58, -62, -66,
-70, -74, -78, -82, -86, -90, -94, -98, -102, -107, -111, -115, -119,
-123, -127, -131, -135, -139, -143, -147, -151, -155, -159, -163, -168},
{89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41,
37, 33, 29, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12,
-16, -20, -24, -28, -32, -36, -41, -45, -49, -53, -57, -61, -65,
-69, -73, -77, -81, -85, -89, -93, -97, -101, -106, -110, -114, -118,
-122, -126, -130, -134, -138, -142, -146, -150, -154, -158, -162, -167},
{90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42,
38, 34, 30, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11,
-15, -19, -23, -27, -31, -35, -40, -44, -48, -52, -56, -60, -64,
-68, -72, -76, -80, -84, -88, -92, -96, -100, -105, -109, -113, -117,
-121, -125, -129, -133, -137, -141, -145, -149, -153, -157, -161, -166},
{91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43,
39, 35, 31, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10,
-14, -18, -22, -26, -30, -34, -39, -43, -47, -51, -55, -59, -63,
-67, -71, -75, -79, -83, -87, -91, -95, -99, -104, -108, -112, -116,
-120, -124, -128, -132, -136, -140, -144, -148, -152, -156, -160, -165},
{92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44,
40, 36, 32, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9,
-13, -17, -21, -25, -29, -33, -38, -42, -46, -50, -54, -58, -62,
-66, -70, -74, -78, -82, -86, -90, -94, -98, -103, -107, -111, -115,
-119, -123, -127, -131, -135, -139, -143, -147, -151, -155, -159, -164},
{93, 89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45,
41, 37, 33, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8,
-12, -16, -20, -24, -28, -32, -37, -41, -45, -49, -53, -57, -61,
-65, -69, -73, -77, -81, -85, -89, -93, -97, -102, -106, -110, -114,
-118, -122, -126, -130, -134, -138, -142, -146, -150, -154, -158, -163},
{94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46,
42, 38, 34, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7,
-11, -15, -19, -23, -27, -31, -36, -40, -44, -48, -52, -56, -60,
-64, -68, -72, -76, -80, -84, -88, -92, -96, -101, -105, -109, -113,
-117, -121, -125, -129, -133, -137, -141, -145, -149, -153, -157, -162},
{95, 91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47,
43, 39, 35, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6,
-10, -14, -18, -22, -26, -30, -35, -39, -43, -47, -51, -55, -59,
-63, -67, -71, -75, -79, -83, -87, -91, -95, -100, -104, -108, -112,
-116, -120, -124, -128, -132, -136, -140, -144, -148, -152, -156, -161},
{96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36,
31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -17, -21, -25, -29,
-34, -38, -42, -46, -50, -54, -58, -62, -66, -70, -74, -78, -82, -86, -90, -94,
-99, -103, -107, -111, -115, -119, -123, -127, -131, -135, -139, -143, -147, -151, -155, -160},
{97, 93, 89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37,
32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -20, -24, -28,
-33, -37, -41, -45, -49, -53, -57, -61, -65, -69, -73, -77, -81, -85, -89, -93,
-98, -102, -106, -110, -114, -118, -122, -126, -130, -134, -138, -142, -146, -150, -154, -159},
{98, 94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38,
33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -15, -19, -23, -27,
-32, -36, -40, -44, -48, -52, -56, -60, -64, -68, -72, -76, -80, -84, -88, -92,
-97, -101, -105, -109, -113, -117, -121, -125, -129, -133, -137, -141, -145, -149, -153, -158},
{99, 95, 91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39,
34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -14, -18, -22, -26,
-31, -35, -39, -43, -47, -51, -55, -59, -63, -67, -71, -75, -79, -83, -87, -91,
-96, -100, -104, -108, -112, -116, -120, -124, -128, -132, -136, -140, -144, -148, -152, -157},
{100, 96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40,
35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -17, -21, -25,
-30, -34, -38, -42, -46, -50, -54, -58, -62, -66, -70, -74, -78, -82, -86, -90,
-95, -99, -103, -107, -111, -115, -119, -123, -127, -131, -135, -139, -143, -147, -151, -156},
{101, 97, 93, 89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41,
36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -20, -24,
-29, -33, -37, -41, -45, -49, -53, -57, -61, -65, -69, -73, -77, -81, -85, -89,
-94, -98, -102, -106, -110, -114, -118, -122, -126, -130, -134, -138, -142, -146, -150, -155},
{102, 98, 94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42,
37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -15, -19, -23,
-28, -32, -36, -40, -44, -48, -52, -56, -60, -64, -68, -72, -76, -80, -84, -88,
-93, -97, -101, -105, -109, -113, -117, -121, -125, -129, -133, -137, -141, -145, -149, -154},
{103, 99, 95, 91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43,
38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -14, -18, -22,
-27, -31, -35, -39, -43, -47, -51, -55, -59, -63, -67, -71, -75, -79, -83, -87,
-92, -96, -100, -104, -108, -112, -116, -120, -124, -128, -132, -136, -140, -144, -148, -153},
{104, 100, 96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44,
39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -17, -21,
-26, -30, -34, -38, -42, -46, -50, -54, -58, -62, -66, -70, -74, -78, -82, -86,
-91, -95, -99, -103, -107, -111, -115, -119, -123, -127, -131, -135, -139, -143, -147, -152},
{105, 101, 97, 93, 89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45,
40, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -20,
-25, -29, -33, -37, -41, -45, -49, -53, -57, -61, -65, -69, -73, -77, -81, -85,
-90, -94, -98, -102, -106, -110, -114, -118, -122, -126, -130, -134, -138, -142, -146, -151},
{106, 102, 98, 94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46,
41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -15, -19,
-24, -28, -32, -36, -40, -44, -48, -52, -56, -60, -64, -68, -72, -76, -80, -84,
-89, -93, -97, -101, -105, -109, -113, -117, -121, -125, -129, -133, -137, -141, -145, -150},
{107, 103, 99, 95, 91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47,
42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -14, -18,
-23, -27, -31, -35, -39, -43, -47, -51, -55, -59, -63, -67, -71, -75, -79, -83,
-88, -92, -96, -100, -104, -108, -112, -116, -120, -124, -128, -132, -136, -140, -144, -149},
{108, 104, 100, 96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48,
43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -17,
-22, -26, -30, -34, -38, -42, -46, -50, -54, -58, -62, -66, -70, -74, -78, -82,
-87, -91, -95, -99, -103, -107, -111, -115, -119, -123, -127, -131, -135, -139, -143, -148},
{109, 105, 101, 97, 93, 89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49,
44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -16,
-21, -25, -29, -33, -37, -41, -45, -49, -53, -57, -61, -65, -69, -73, -77, -81,
-86, -90, -94, -98, -102, -106, -110, -114, -118, -122, -126, -130, -134, -138, -142, -147},
{110, 106, 102, 98, 94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50,
45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -15,
-20, -24, -28, -32, -36, -40, -44, -48, -52, -56, -60, -64, -68, -72, -76, -80,
-85, -89, -93, -97, -101, -105, -109, -113, -117, -121, -125, -129, -133, -137, -141, -146},
{111, 107, 103, 99, 95, 91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51,
46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -14,
-19, -23, -27, -31, -35, -39, -43, -47, -51, -55, -59, -63, -67, -71, -75, -79,
-84, -88, -92, -96, -100, -104, -108, -112, -116, -120, -124, -128, -132, -136, -140, -145},
{112, 108, 104, 100, 96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52,
47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13,
-18, -22, -26, -30, -34, -38, -42, -46, -50, -54, -58, -62, -66, -70, -74, -78,
-83, -87, -91, -95, -99, -103, -107, -111, -115, -119, -123, -127, -131, -135, -139, -144},
{113, 109, 105, 101, 97, 93, 89, 85, 81, 77, 73, 69, 65, 61, 57, 53,
48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12,
-17, -21, -25, -29, -33, -37, -41, -45, -49, -53, -57, -61, -65, -69, -73, -77,
-82, -86, -90, -94, -98, -102, -106, -110, -114, -118, -122, -126, -130, -134, -138, -143},
{114, 110, 106, 102, 98, 94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54,
49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11,
-16, -20, -24, -28, -32, -36, -40, -44, -48, -52, -56, -60, -64, -68, -72, -76,
-81, -85, -89, -93, -97, -101, -105, -109, -113, -117, -121, -125, -129, -133, -137, -142},
{115, 111, 107, 103, 99, 95, 91, 87, 83, 79, 75, 71, 67, 63, 59, 55,
50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10,
-15, -19, -23, -27, -31, -35, -39, -43, -47, -51, -55, -59, -63, -67, -71, -75,
-80, -84, -88, -92, -96, -100, -104, -108, -112, -116, -120, -124, -128, -132, -136, -141},
{116, 112, 108, 104, 100, 96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 56,
51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9,
-14, -18, -22, -26, -30, -34, -38, -42, -46, -50, -54, -58, -62, -66, -70, -74,
-79, -83, -87, -91, -95, -99, -103, -107, -111, -115, -119, -123, -127, -131, -135, -140},
{117, 113, 109, 105, 101, 97, 93, 89, 85, 81, 77, 73, 69, 65, 61, 57,
52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8,
-13, -17, -21, -25, -29, -33, -37, -41, -45, -49, -53, -57, -61, -65, -69, -73,
-78, -82, -86, -90, -94, -98, -102, -106, -110, -114, -118, -122, -126, -130, -134, -139},
{118, 114, 110, 106, 102, 98, 94, 90, 86, 82, 78, 74, 70, 66, 62, 58,
53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7,
-12, -16, -20, -24, -28, -32, -36, -40, -44, -48, -52, -56, -60, -64, -68, -72,
-77, -81, -85, -89, -93, -97, -101, -105, -109, -113, -117, -121, -125, -129, -133, -138},
{119, 115, 111, 107, 103, 99, 95, 91, 87, 83, 79, 75, 71, 67, 63, 59,
54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6,
-11, -15, -19, -23, -27, -31, -35, -39, -43, -47, -51, -55, -59, -63, -67, -71,
-76, -80, -84, -88, -92, -96, -100, -104, -108, -112, -116, -120, -124, -128, -132, -137},
{120, 116, 112, 108, 104, 100, 96, 92, 88, 84, 80, 76, 72, 68, 64, 60,
55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5,
-10, -14, -18, -22, -26, -30, -34, -38, -42, -46, -50, -54, -58, -62, -66, -70,
-75, -79, -83, -87, -91, -95, -99, -103, -107, -111, -115, -119, -123, -127, -131, -136},
{121, 117, 113, 109, 105, 101, 97, 93, 89, 85, 81, 77, 73, 69, 65, 61,
56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4,
-9, -13, -17, -21, -25, -29, -33, -37, -41, -45, -49, -53, -57, -61, -65, -69,
-74, -78, -82, -86, -90, -94, -98, -102, -106, -110, -114, -118, -122, -126, -130, -135},
{122, 118, 114, 110, 106, 102, 98, 94, 90, 86, 82, 78, 74, 70, 66, 62,
57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3,
-8, -12, -16, -20, -24, -28, -32, -36, -40, -44, -48, -52, -56, -60, -64, -68,
-73, -77, -81, -85, -89, -93, -97, -101, -105, -109, -113, -117, -121, -125, -129, -134},
{123, 119, 115, 111, 107, 103, 99, 95, 91, 87, 83, 79, 75, 71, 67, 63,
58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2,
-7, -11, -15, -19, -23, -27, -31, -35, -39, -43, -47, -51, -55, -59, -63, -67,
-72, -76, -80, -84, -88, -92, -96, -100, -104, -108, -112, -116, -120, -124, -128, -133},
{124, 120, 116, 112, 108, 104, 100, 96, 92, 88, 84, 80, 76, 72, 68, 64,
59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1,
-6, -10, -14, -18, -22, -26, -30, -34, -38, -42, -46, -50, -54, -58, -62, -66,
-71, -75, -79, -83, -87, -91, -95, -99, -103, -107, -111, -115, -119, -123, -127, -132},
{125, 121, 117, 113, 109, 105, 101, 97, 93, 89, 85, 81, 77, 73, 69, 65,
60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0,
-5, -9, -13, -17, -21, -25, -29, -33, -37, -41, -45, -49, -53, -57, -61, -65,
-70, -74, -78, -82, -86, -90, -94, -98, -102, -106, -110, -114, -118, -122, -126, -131},
{126, 122, 118, 114, 110, 106, 102, 98, 94, 90, 86, 82, 78, 74, 70, 66,
61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1,
-4, -8, -12, -16, -20, -24, -28, -32, -36, -40, -44, -48, -52, -56, -60, -64,
-69, -73, -77, -81, -85, -89, -93, -97, -101, -105, -109, -113, -117, -121, -125, -130},
{127, 123, 119, 115, 111, 107, 103, 99, 95, 91, 87, 83, 79, 75, 71, 67,
62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2,
-3, -7, -11, -15, -19, -23, -27, -31, -35, -39, -43, -47, -51, -55, -59, -63,
-68, -72, -76, -80, -84, -88, -92, -96, -100, -104, -108, -112, -116, -120, -124, -129},
{128, 124, 120, 116, 112, 108, 104, 100, 96, 92, 88, 84, 80, 76, 72, 68,
63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3,
-2, -6, -10, -14, -18, -22, -26, -30, -34, -38, -42, -46, -50, -54, -58, -62,
-67, -71, -75, -79, -83, -87, -91, -95, -99, -103, -107, -111, -115, -119, -123, -128},
{129, 125, 121, 117, 113, 109, 105, 101, 97, 93, 89, 85, 81, 77, 73, 69,
64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4,
-1, -5, -9, -13, -17, -21, -25, -29, -33, -37, -41, -45, -49, -53, -57, -61,
-66, -70, -74, -78, -82, -86, -90, -94, -98, -102, -106, -110, -114, -118, -122, -127},
{130, 126, 122, 118, 114, 110, 106, 102, 98, 94, 90, 86, 82, 78, 74, 70,
65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5,
0, -4, -8, -12, -16, -20, -24, -28, -32, -36, -40, -44, -48, -52, -56, -60,
-65, -69, -73, -77, -81, -85, -89, -93, -97, -101, -105, -109, -113, -117, -121, -126},
{131, 127, 123, 119, 115, 111, 107, 103, 99, 95, 91, 87, 83, 79, 75, 71,
66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6,
1, -3, -7, -11, -15, -19, -23, -27, -31, -35, -39, -43, -47, -51, -55, -59,
-64, -68, -72, -76, -80, -84, -88, -92, -96, -100, -104, -108, -112, -116, -120, -125},
{132, 128, 124, 120, 116, 112, 108, 104, 100, 96, 92, 88, 84, 80, 76, 72,
67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7,
2, -2, -6, -10, -14, -18, -22, -26, -30, -34, -38, -42, -46, -50, -54, -58,
-63, -67, -71, -75, -79, -83, -87, -91, -95, -99, -103, -107, -111, -115, -119, -124},
{133, 129, 125, 121, 117, 113, 109, 105, 101, 97, 93, 89, 85, 81, 77, 73,
68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8,
3, -1, -5, -9, -13, -17, -21, -25, -29, -33, -37, -41, -45, -49, -53, -57,
-62, -66, -70, -74, -78, -82, -86, -90, -94, -98, -102, -106, -110, -114, -118, -123},
{134, 130, 126, 122, 118, 114, 110, 106, 102, 98, 94, 90, 86, 82, 78, 74,
69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9,
4, 0, -4, -8, -12, -16, -20, -24, -28, -32, -36, -40, -44, -48, -52, -56,
-61, -65, -69, -73, -77, -81, -85, -89, -93, -97, -101, -105, -109, -113, -117, -122},
{135, 131, 127, 123, 119, 115, 111, 107, 103, 99, 95, 91, 87, 83, 79, 75,
70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10,
5, 1, -3, -7, -11, -15, -19, -23, -27, -31, -35, -39, -43, -47, -51, -55,
-60, -64, -68, -72, -76, -80, -84, -88, -92, -96, -100, -104, -108, -112, -116, -121},
{136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96, 92, 88, 84, 80, 76,
71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11,
6, 2, -2, -6, -10, -14, -18, -22, -26, -30, -34, -38, -42, -46, -50, -54,
-59, -63, -67, -71, -75, -79, -83, -87, -91, -95, -99, -103, -107, -111, -115, -120},
{137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97, 93, 89, 85, 81, 77,
72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12,
7, 3, -1, -5, -9, -13, -17, -21, -25, -29, -33, -37, -41, -45, -49, -53,
-58, -62, -66, -70, -74, -78, -82, -86, -90, -94, -98, -102, -106, -110, -114, -119},
{138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98, 94, 90, 86, 82, 78,
73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13,
8, 4, 0, -4, -8, -12, -16, -20, -24, -28, -32, -36, -40, -44, -48, -52,
-57, -61, -65, -69, -73, -77, -81, -85, -89, -93, -97, -101, -105, -109, -113, -118},
{139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99, 95, 91, 87, 83, 79,
74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14,
9, 5, 1, -3, -7, -11, -15, -19, -23, -27, -31, -35, -39, -43, -47, -51,
-56, -60, -64, -68, -72, -76, -80, -84, -88, -92, -96, -100, -104, -108, -112, -117},
{140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96, 92, 88, 84, 80,
75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15,
10, 6, 2, -2, -6, -10, -14, -18, -22, -26, -30, -34, -38, -42, -46, -50,
-55, -59, -63, -67, -71, -75, -79, -83, -87, -91, -95, -99, -103, -107, -111, -116},
{141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97, 93, 89, 85, 81,
76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16,
11, 7, 3, -1, -5, -9, -13, -17, -21, -25, -29, -33, -37, -41, -45, -49,
-54, -58, -62, -66, -70, -74, -78, -82, -86, -90, -94, -98, -102, -106, -110, -115},
{142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98, 94, 90, 86, 82,
77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17,
12, 8, 4, 0, -4, -8, -12, -16, -20, -24, -28, -32, -36, -40, -44, -48,
-53, -57, -61, -65, -69, -73, -77, -81, -85, -89, -93, -97, -101, -105, -109, -114},
{143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99, 95, 91, 87, 83,
78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18,
13, 9, 5, 1, -3, -7, -11, -15, -19, -23, -27, -31, -35, -39, -43, -47,
-52, -56, -60, -64, -68, -72, -76, -80, -84, -88, -92, -96, -100, -104, -108, -113},
{144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96, 92, 88, 84,
79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19,
14, 10, 6, 2, -2, -6, -10, -14, -18, -22, -26, -30, -34, -38, -42, -46,
-51, -55, -59, -63, -67, -71, -75, -79, -83, -87, -91, -95, -99, -103, -107, -112},
{145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97, 93, 89, 85,
80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20,
15, 11, 7, 3, -1, -5, -9, -13, -17, -21, -25, -29, -33, -37, -41, -45,
-50, -54, -58, -62, -66, -70, -74, -78, -82, -86, -90, -94, -98, -102, -106, -111},
{146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98, 94, 90, 86,
81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21,
16, 12, 8, 4, 0, -4, -8, -12, -16, -20, -24, -28, -32, -36, -40, -44,
-49, -53, -57, -61, -65, -69, -73, -77, -81, -85, -89, -93, -97, -101, -105, -110},
{147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99, 95, 91, 87,
82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22,
17, 13, 9, 5, 1, -3, -7, -11, -15, -19, -23, -27, -31, -35, -39, -43,
-48, -52, -56, -60, -64, -68, -72, -76, -80, -84, -88, -92, -96, -100, -104, -109},
{148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96, 92, 88,
83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23,
18, 14, 10, 6, 2, -2, -6, -10, -14, -18, -22, -26, -30, -34, -38, -42,
-47, -51, -55, -59, -63, -67, -71, -75, -79, -83, -87, -91, -95, -99, -103, -108},
{149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97, 93, 89,
84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24,
19, 15, 11, 7, 3, -1, -5, -9, -13, -17, -21, -25, -29, -33, -37, -41,
-46, -50, -54, -58, -62, -66, -70, -74, -78, -82, -86, -90, -94, -98, -102, -107},
{150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98, 94, 90,
85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25,
20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -20, -24, -28, -32, -36, -40,
-45, -49, -53, -57, -61, -65, -69, -73, -77, -81, -85, -89, -93, -97, -101, -106},
{151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99, 95, 91,
86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26,
21, 17, 13, 9, 5, 1, -3, -7, -11, -15, -19, -23, -27, -31, -35, -39,
-44, -48, -52, -56, -60, -64, -68, -72, -76, -80, -84, -88, -92, -96, -100, -105},
{152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96, 92,
87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27,
22, 18, 14, 10, 6, 2, -2, -6, -10, -14, -18, -22, -26, -30, -34, -38,
-43, -47, -51, -55, -59, -63, -67, -71, -75, -79, -83, -87, -91, -95, -99, -104},
{153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97, 93,
88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28,
23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -17, -21, -25, -29, -33, -37,
-42, -46, -50, -54, -58, -62, -66, -70, -74, -78, -82, -86, -90, -94, -98, -103},
{154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98, 94,
89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29,
24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -20, -24, -28, -32, -36,
-41, -45, -49, -53, -57, -61, -65, -69, -73, -77, -81, -85, -89, -93, -97, -102},
{155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99, 95,
90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30,
25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -15, -19, -23, -27, -31, -35,
-40, -44, -48, -52, -56, -60, -64, -68, -72, -76, -80, -84, -88, -92, -96, -101},
{156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96,
91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31,
26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -14, -18, -22, -26, -30, -34,
-39, -43, -47, -51, -55, -59, -63, -67, -71, -75, -79, -83, -87, -91, -95, -100},
{157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97,
92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32,
27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -17, -21, -25, -29, -33,
-38, -42, -46, -50, -54, -58, -62, -66, -70, -74, -78, -82, -86, -90, -94, -99},
{158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98,
93, 89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33,
28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -20, -24, -28, -32,
-37, -41, -45, -49, -53, -57, -61, -65, -69, -73, -77, -81, -85, -89, -93, -98},
{159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99,
94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34,
29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -15, -19, -23, -27, -31,
-36, -40, -44, -48, -52, -56, -60, -64, -68, -72, -76, -80, -84, -88, -92, -97},
{160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100,
95, 91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35,
30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -14, -18, -22, -26, -30,
-35, -39, -43, -47, -51, -55, -59, -63, -67, -71, -75, -79, -83, -87, -91, -96},
{161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101,
96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36,
31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -17, -21, -25, -29,
-34, -38, -42, -46, -50, -54, -58, -62, -66, -70, -74, -78, -82, -86, -90, -95},
{162, 158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102,
97, 93, 89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37,
32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -20, -24, -28,
-33, -37, -41, -45, -49, -53, -57, -61, -65, -69, -73, -77, -81, -85, -89, -94},
{163, 159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103,
98, 94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38,
33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -15, -19, -23, -27,
-32, -36, -40, -44, -48, -52, -56, -60, -64, -68, -72, -76, -80, -84, -88, -93},
{164, 160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104,
99, 95, 91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39,
34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -14, -18, -22, -26,
-31, -35, -39, -43, -47, -51, -55, -59, -63, -67, -71, -75, -79, -83, -87, -92},
{165, 161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105,
100, 96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40,
35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -17, -21, -25,
-30, -34, -38, -42, -46, -50, -54, -58, -62, -66, -70, -74, -78, -82, -86, -91},
{166, 162, 158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106,
101, 97, 93, 89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41,
36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -20, -24,
-29, -33, -37, -41, -45, -49, -53, -57, -61, -65, -69, -73, -77, -81, -85, -90},
{167, 163, 159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107,
102, 98, 94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42,
37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -15, -19, -23,
-28, -32, -36, -40, -44, -48, -52, -56, -60, -64, -68, -72, -76, -80, -84, -89},
{168, 164, 160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108,
103, 99, 95, 91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43,
38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -14, -18, -22,
-27, -31, -35, -39, -43, -47, -51, -55, -59, -63, -67, -71, -75, -79, -83, -88},
{169, 165, 161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109,
104, 100, 96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44,
39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -17, -21,
-26, -30, -34, -38, -42, -46, -50, -54, -58, -62, -66, -70, -74, -78, -82, -87},
{170, 166, 162, 158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110,
105, 101, 97, 93, 89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45,
40, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -20,
-25, -29, -33, -37, -41, -45, -49, -53, -57, -61, -65, -69, -73, -77, -81, -86},
{171, 167, 163, 159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111,
106, 102, 98, 94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46,
41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -15, -19,
-24, -28, -32, -36, -40, -44, -48, -52, -56, -60, -64, -68, -72, -76, -80, -85},
{172, 168, 164, 160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112,
107, 103, 99, 95, 91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47,
42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -14, -18,
-23, -27, -31, -35, -39, -43, -47, -51, -55, -59, -63, -67, -71, -75, -79, -84},
{173, 169, 165, 161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113,
108, 104, 100, 96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48,
43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -17,
-22, -26, -30, -34, -38, -42, -46, -50, -54, -58, -62, -66, -70, -74, -78, -83},
{174, 170, 166, 162, 158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114,
109, 105, 101, 97, 93, 89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49,
44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -16,
-21, -25, -29, -33, -37, -41, -45, -49, -53, -57, -61, -65, -69, -73, -77, -82},
{175, 171, 167, 163, 159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115,
110, 106, 102, 98, 94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50,
45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -15,
-20, -24, -28, -32, -36, -40, -44, -48, -52, -56, -60, -64, -68, -72, -76, -81},
{176, 172, 168, 164, 160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116,
111, 107, 103, 99, 95, 91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51,
46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -14,
-19, -23, -27, -31, -35, -39, -43, -47, -51, -55, -59, -63, -67, -71, -75, -80},
{177, 173, 169, 165, 161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117,
112, 108, 104, 100, 96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52,
47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13,
-18, -22, -26, -30, -34, -38, -42, -46, -50, -54, -58, -62, -66, -70, -74, -79},
{178, 174, 170, 166, 162, 158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118,
113, 109, 105, 101, 97, 93, 89, 85, 81, 77, 73, 69, 65, 61, 57, 53,
48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12,
-17, -21, -25, -29, -33, -37, -41, -45, -49, -53, -57, -61, -65, -69, -73, -78},
{179, 175, 171, 167, 163, 159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119,
114, 110, 106, 102, 98, 94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54,
49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11,
-16, -20, -24, -28, -32, -36, -40, -44, -48, -52, -56, -60, -64, -68, -72, -77},
{180, 176, 172, 168, 164, 160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120,
115, 111, 107, 103, 99, 95, 91, 87, 83, 79, 75, 71, 67, 63, 59, 55,
50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10,
-15, -19, -23, -27, -31, -35, -39, -43, -47, -51, -55, -59, -63, -67, -71, -76},
{181, 177, 173, 169, 165, 161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121,
116, 112, 108, 104, 100, 96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 56,
51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9,
-14, -18, -22, -26, -30, -34, -38, -42, -46, -50, -54, -58, -62, -66, -70, -75},
{182, 178, 174, 170, 166, 162, 158, 154, 150, 146, 142, 138, 134, 130, 126, 122,
117, 113, 109, 105, 101, 97, 93, 89, 85, 81, 77, 73, 69, 65, 61, 57,
52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8,
-13, -17, -21, -25, -29, -33, -37, -41, -45, -49, -53, -57, -61, -65, -69, -74},
{183, 179, 175, 171, 167, 163, 159, 155, 151, 147, 143, 139, 135, 131, 127, 123,
118, 114, 110, 106, 102, 98, 94, 90, 86, 82, 78, 74, 70, 66, 62, 58,
53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7,
-12, -16, -20, -24, -28, -32, -36, -40, -44, -48, -52, -56, -60, -64, -68, -73},
{184, 180, 176, 172, 168, 164, 160, 156, 152, 148, 144, 140, 136, 132, 128, 124,
119, 115, 111, 107, 103, 99, 95, 91, 87, 83, 79, 75, 71, 67, 63, 59,
54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6,
-11, -15, -19, -23, -27, -31, -35, -39, -43, -47, -51, -55, -59, -63, -67, -72},
{185, 181, 177, 173, 169, 165, 161, 157, 153, 149, 145, 141, 137, 133, 129, 125,
120, 116, 112, 108, 104, 100, 96, 92, 88, 84, 80, 76, 72, 68, 64, 60,
55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5,
-10, -14, -18, -22, -26, -30, -34, -38, -42, -46, -50, -54, -58, -62, -66, -71},
{186, 182, 178, 174, 170, 166, 162, 158, 154, 150, 146, 142, 138, 134, 130, 126,
121, 117, 113, 109, 105, 101, 97, 93, 89, 85, 81, 77, 73, 69, 65, 61,
56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4,
-9, -13, -17, -21, -25, -29, -33, -37, -41, -45, -49, -53, -57, -61, -65, -70},
{187, 183, 179, 175, 171, 167, 163, 159, 155, 151, 147, 143, 139, 135, 131, 127,
122, 118, 114, 110, 106, 102, 98, 94, 90, 86, 82, 78, 74, 70, 66, 62,
57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3,
-8, -12, -16, -20, -24, -28, -32, -36, -40, -44, -48, -52, -56, -60, -64, -69},
{188, 184, 180, 176, 172, 168, 164, 160, 156, 152, 148, 144, 140, 136, 132, 128,
123, 119, 115, 111, 107, 103, 99, 95, 91, 87, 83, 79, 75, 71, 67, 63,
58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2,
-7, -11, -15, -19, -23, -27, -31, -35, -39, -43, -47, -51, -55, -59, -63, -68},
{189, 185, 181, 177, 173, 169, 165, 161, 157, 153, 149, 145, 141, 137, 133, 129,
124, 120, 116, 112, 108, 104, 100, 96, 92, 88, 84, 80, 76, 72, 68, 64,
59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1,
-6, -10, -14, -18, -22, -26, -30, -34, -38, -42, -46, -50, -54, -58, -62, -67},
{190, 186, 182, 178, 174, 170, 166, 162, 158, 154, 150, 146, 142, 138, 134, 130,
125, 121, 117, 113, 109, 105, 101, 97, 93, 89, 85, 81, 77, 73, 69, 65,
60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0,
-5, -9, -13, -17, -21, -25, -29, -33, -37, -41, -45, -49, -53, -57, -61, -66},
{191, 187, 183, 179, 175, 171, 167, 163, 159, 155, 151, 147, 143, 139, 135, 131,
126, 122, 118, 114, 110, 106, 102, 98, 94, 90, 86, 82, 78, 74, 70, 66,
61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1,
-4, -8, -12, -16, -20, -24, -28, -32, -36, -40, -44, -48, -52, -56, -60, -65},
{192, 188, 184, 180, 176, 172, 168, 164, 160, 156, 152, 148, 144, 140, 136, 132,
127, 123, 119, 115, 111, 107, 103, 99, 95, 91, 87, 83, 79, 75, 71, 67,
62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2,
-3, -7, -11, -15, -19, -23, -27, -31, -35, -39, -43, -47, -51, -55, -59, -64},
{193, 189, 185, 181, 177, 173, 169, 165, 161, 157, 153, 149, 145, 141, 137, 133,
128, 124, 120, 116, 112, 108, 104, 100, 96, 92, 88, 84, 80, 76, 72, 68,
63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3,
-2, -6, -10, -14, -18, -22, -26, -30, -34, -38, -42, -46, -50, -54, -58, -63},
{194, 190, 186, 182, 178, 174, 170, 166, 162, 158, 154, 150, 146, 142, 138, 134,
129, 125, 121, 117, 113, 109, 105, 101, 97, 93, 89, 85, 81, 77, 73, 69,
64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4,
-1, -5, -9, -13, -17, -21, -25, -29, -33, -37, -41, -45, -49, -53, -57, -62},
{195, 191, 187, 183, 179, 175, 171, 167, 163, 159, 155, 151, 147, 143, 139, 135,
130, 126, 122, 118, 114, 110, 106, 102, 98, 94, 90, 86, 82, 78, 74, 70,
65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5,
0, -4, -8, -12, -16, -20, -24, -28, -32, -36, -40, -44, -48, -52, -56, -61},
{196, 192, 188, 184, 180, 176, 172, 168, 164, 160, 156, 152, 148, 144, 140, 136,
131, 127, 123, 119, 115, 111, 107, 103, 99, 95, 91, 87, 83, 79, 75, 71,
66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6,
1, -3, -7, -11, -15, -19, -23, -27, -31, -35, -39, -43, -47, -51, -55, -60},
{197, 193, 189, 185, 181, 177, 173, 169, 165, 161, 157, 153, 149, 145, 141, 137,
132, 128, 124, 120, 116, 112, 108, 104, 100, 96, 92, 88, 84, 80, 76, 72,
67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7,
2, -2, -6, -10, -14, -18, -22, -26, -30, -34, -38, -42, -46, -50, -54, -59},
{198, 194, 190, 186, 182, 178, 174, 170, 166, 162, 158, 154, 150, 146, 142, 138,
133, 129, 125, 121, 117, 113, 109, 105, 101, 97, 93, 89, 85, 81, 77, 73,
68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8,
3, -1, -5, -9, -13, -17, -21, -25, -29, -33, -37, -41, -45, -49, -53, -58},
{199, 195, 191, 187, 183, 179, 175, 171, 167, 163, 159, 155, 151, 147, 143, 139,
134, 130, 126, 122, 118, 114, 110, 106, 102, 98, 94, 90, 86, 82, 78, 74,
69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9,
4, 0, -4, -8, -12, -16, -20, -24, -28, -32, -36, -40, -44, -48, -52, -57},
{200, 196, 192, 188, 184, 180, 176, 172, 168, 164, 160, 156, 152, 148, 144, 140,
135, 131, 127, 123, 119, 115, 111, 107, 103, 99, 95, 91, 87, 83, 79, 75,
70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10,
5, 1, -3, -7, -11, -15, -19, -23, -27, -31, -35, -39, -43, -47, -51, -56},
{201, 197, 193, 189, 185, 181, 177, 173, 169, 165, 161, 157, 153, 149, 145, 141,
136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96, 92, 88, 84, 80, 76,
71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11,
6, 2, -2, -6, -10, -14, -18, -22, -26, -30, -34, -38, -42, -46, -50, -55},
{202, 198, 194, 190, 186, 182, 178, 174, 170, 166, 162, 158, 154, 150, 146, 142,
137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97, 93, 89, 85, 81, 77,
72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12,
7, 3, -1, -5, -9, -13, -17, -21, -25, -29, -33, -37, -41, -45, -49, -54},
{203, 199, 195, 191, 187, 183, 179, 175, 171, 167, 163, 159, 155, 151, 147, 143,
138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98, 94, 90, 86, 82, 78,
73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13,
8, 4, 0, -4, -8, -12, -16, -20, -24, -28, -32, -36, -40, -44, -48, -53},
{204, 200, 196, 192, 188, 184, 180, 176, 172, 168, 164, 160, 156, 152, 148, 144,
139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99, 95, 91, 87, 83, 79,
74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14,
9, 5, 1, -3, -7, -11, -15, -19, -23, -27, -31, -35, -39, -43, -47, -52},
{205, 201, 197, 193, 189, 185, 181, 177, 173, 169, 165, 161, 157, 153, 149, 145,
140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96, 92, 88, 84, 80,
75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15,
10, 6, 2, -2, -6, -10, -14, -18, -22, -26, -30, -34, -38, -42, -46, -51},
{206, 202, 198, 194, 190, 186, 182, 178, 174, 170, 166, 162, 158, 154, 150, 146,
141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97, 93, 89, 85, 81,
76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16,
11, 7, 3, -1, -5, -9, -13, -17, -21, -25, -29, -33, -37, -41, -45, -50},
{207, 203, 199, 195, 191, 187, 183, 179, 175, 171, 167, 163, 159, 155, 151, 147,
142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98, 94, 90, 86, 82,
77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17,
12, 8, 4, 0, -4, -8, -12, -16, -20, -24, -28, -32, -36, -40, -44, -49},
{208, 204, 200, 196, 192, 188, 184, 180, 176, 172, 168, 164, 160, 156, 152, 148,
143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99, 95, 91, 87, 83,
78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18,
13, 9, 5, 1, -3, -7, -11, -15, -19, -23, -27, -31, -35, -39, -43, -48},
{209, 205, 201, 197, 193, 189, 185, 181, 177, 173, 169, 165, 161, 157, 153, 149,
144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96, 92, 88, 84,
79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19,
14, 10, 6, 2, -2, -6, -10, -14, -18, -22, -26, -30, -34, -38, -42, -47},
{210, 206, 202, 198, 194, 190, 186, 182, 178, 174, 170, 166, 162, 158, 154, 150,
145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97, 93, 89, 85,
80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20,
15, 11, 7, 3, -1, -5, -9, -13, -17, -21, -25, -29, -33, -37, -41, -46},
{211, 207, 203, 199, 195, 191, 187, 183, 179, 175, 171, 167, 163, 159, 155, 151,
146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98, 94, 90, 86,
81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21,
16, 12, 8, 4, 0, -4, -8, -12, -16, -20, -24, -28, -32, -36, -40, -45},
{212, 208, 204, 200, 196, 192, 188, 184, 180, 176, 172, 168, 164, 160, 156, 152,
147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99, 95, 91, 87,
82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22,
17, 13, 9, 5, 1, -3, -7, -11, -15, -19, -23, -27, -31, -35, -39, -44},
{213, 209, 205, 201, 197, 193, 189, 185, 181, 177, 173, 169, 165, 161, 157, 153,
148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96, 92, 88,
83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23,
18, 14, 10, 6, 2, -2, -6, -10, -14, -18, -22, -26, -30, -34, -38, -43},
{214, 210, 206, 202, 198, 194, 190, 186, 182, 178, 174, 170, 166, 162, 158, 154,
149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97, 93, 89,
84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24,
19, 15, 11, 7, 3, -1, -5, -9, -13, -17, -21, -25, -29, -33, -37, -42},
{215, 211, 207, 203, 199, 195, 191, 187, 183, 179, 175, 171, 167, 163, 159, 155,
150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98, 94, 90,
85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25,
20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -20, -24, -28, -32, -36, -41},
{216, 212, 208, 204, 200, 196, 192, 188, 184, 180, 176, 172, 168, 164, 160, 156,
151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99, 95, 91,
86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26,
21, 17, 13, 9, 5, 1, -3, -7, -11, -15, -19, -23, -27, -31, -35, -40},
{217, 213, 209, 205, 201, 197, 193, 189, 185, 181, 177, 173, 169, 165, 161, 157,
152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96, 92,
87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27,
22, 18, 14, 10, 6, 2, -2, -6, -10, -14, -18, -22, -26, -30, -34, -39},
{218, 214, 210, 206, 202, 198, 194, 190, 186, 182, 178, 174, 170, 166, 162, 158,
153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97, 93,
88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28,
23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -17, -21, -25, -29, -33, -38},
{219, 215, 211, 207, 203, 199, 195, 191, 187, 183, 179, 175, 171, 167, 163, 159,
154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98, 94,
89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29,
24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -20, -24, -28, -32, -37},
{220, 216, 212, 208, 204, 200, 196, 192, 188, 184, 180, 176, 172, 168, 164, 160,
155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99, 95,
90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30,
25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -15, -19, -23, -27, -31, -36},
{221, 217, 213, 209, 205, 201, 197, 193, 189, 185, 181, 177, 173, 169, 165, 161,
156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96,
91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31,
26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -14, -18, -22, -26, -30, -35},
{222, 218, 214, 210, 206, 202, 198, 194, 190, 186, 182, 178, 174, 170, 166, 162,
157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97,
92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32,
27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -17, -21, -25, -29, -34},
{223, 219, 215, 211, 207, 203, 199, 195, 191, 187, 183, 179, 175, 171, 167, 163,
158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98,
93, 89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33,
28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -20, -24, -28, -33},
{224, 220, 216, 212, 208, 204, 200, 196, 192, 188, 184, 180, 176, 172, 168, 164,
159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99,
94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34,
29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -15, -19, -23, -27, -32},
{225, 221, 217, 213, 209, 205, 201, 197, 193, 189, 185, 181, 177, 173, 169, 165,
160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100,
95, 91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35,
30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -14, -18, -22, -26, -31},
{226, 222, 218, 214, 210, 206, 202, 198, 194, 190, 186, 182, 178, 174, 170, 166,
161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101,
96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36,
31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -17, -21, -25, -30},
{227, 223, 219, 215, 211, 207, 203, 199, 195, 191, 187, 183, 179, 175, 171, 167,
162, 158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102,
97, 93, 89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37,
32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -20, -24, -29},
{228, 224, 220, 216, 212, 208, 204, 200, 196, 192, 188, 184, 180, 176, 172, 168,
163, 159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103,
98, 94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38,
33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -15, -19, -23, -28},
{229, 225, 221, 217, 213, 209, 205, 201, 197, 193, 189, 185, 181, 177, 173, 169,
164, 160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104,
99, 95, 91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39,
34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -14, -18, -22, -27},
{230, 226, 222, 218, 214, 210, 206, 202, 198, 194, 190, 186, 182, 178, 174, 170,
165, 161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105,
100, 96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40,
35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -17, -21, -26},
{231, 227, 223, 219, 215, 211, 207, 203, 199, 195, 191, 187, 183, 179, 175, 171,
166, 162, 158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106,
101, 97, 93, 89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41,
36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -20, -25},
{232, 228, 224, 220, 216, 212, 208, 204, 200, 196, 192, 188, 184, 180, 176, 172,
167, 163, 159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107,
102, 98, 94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42,
37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -15, -19, -24},
{233, 229, 225, 221, 217, 213, 209, 205, 201, 197, 193, 189, 185, 181, 177, 173,
168, 164, 160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108,
103, 99, 95, 91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43,
38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -14, -18, -23},
{234, 230, 226, 222, 218, 214, 210, 206, 202, 198, 194, 190, 186, 182, 178, 174,
169, 165, 161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109,
104, 100, 96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44,
39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -17, -22},
{235, 231, 227, 223, 219, 215, 211, 207, 203, 199, 195, 191, 187, 183, 179, 175,
170, 166, 162, 158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110,
105, 101, 97, 93, 89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45,
40, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -16, -21},
{236, 232, 228, 224, 220, 216, 212, 208, 204, 200, 196, 192, 188, 184, 180, 176,
171, 167, 163, 159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111,
106, 102, 98, 94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46,
41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -15, -20},
{237, 233, 229, 225, 221, 217, 213, 209, 205, 201, 197, 193, 189, 185, 181, 177,
172, 168, 164, 160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112,
107, 103, 99, 95, 91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47,
42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -14, -19},
{238, 234, 230, 226, 222, 218, 214, 210, 206, 202, 198, 194, 190, 186, 182, 178,
173, 169, 165, 161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113,
108, 104, 100, 96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48,
43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -13, -18},
{239, 235, 231, 227, 223, 219, 215, 211, 207, 203, 199, 195, 191, 187, 183, 179,
174, 170, 166, 162, 158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114,
109, 105, 101, 97, 93, 89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49,
44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -12, -17},
{240, 236, 232, 228, 224, 220, 216, 212, 208, 204, 200, 196, 192, 188, 184, 180,
175, 171, 167, 163, 159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115,
110, 106, 102, 98, 94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50,
45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -11, -16},
{241, 237, 233, 229, 225, 221, 217, 213, 209, 205, 201, 197, 193, 189, 185, 181,
176, 172, 168, 164, 160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116,
111, 107, 103, 99, 95, 91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51,
46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -10, -15},
{242, 238, 234, 230, 226, 222, 218, 214, 210, 206, 202, 198, 194, 190, 186, 182,
177, 173, 169, 165, 161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117,
112, 108, 104, 100, 96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52,
47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -9, -14},
{243, 239, 235, 231, 227, 223, 219, 215, 211, 207, 203, 199, 195, 191, 187, 183,
178, 174, 170, 166, 162, 158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118,
113, 109, 105, 101, 97, 93, 89, 85, 81, 77, 73, 69, 65, 61, 57, 53,
48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -8, -13},
{244, 240, 236, 232, 228, 224, 220, 216, 212, 208, 204, 200, 196, 192, 188, 184,
179, 175, 171, 167, 163, 159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119,
114, 110, 106, 102, 98, 94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54,
49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -7, -12},
{245, 241, 237, 233, 229, 225, 221, 217, 213, 209, 205, 201, 197, 193, 189, 185,
180, 176, 172, 168, 164, 160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120,
115, 111, 107, 103, 99, 95, 91, 87, 83, 79, 75, 71, 67, 63, 59, 55,
50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -6, -11},
{246, 242, 238, 234, 230, 226, 222, 218, 214, 210, 206, 202, 198, 194, 190, 186,
181, 177, 173, 169, 165, 161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121,
116, 112, 108, 104, 100, 96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 56,
51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -5, -10},
{247, 243, 239, 235, 231, 227, 223, 219, 215, 211, 207, 203, 199, 195, 191, 187,
182, 178, 174, 170, 166, 162, 158, 154, 150, 146, 142, 138, 134, 130, 126, 122,
117, 113, 109, 105, 101, 97, 93, 89, 85, 81, 77, 73, 69, 65, 61, 57,
52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -4, -9},
{248, 244, 240, 236, 232, 228, 224, 220, 216, 212, 208, 204, 200, 196, 192, 188,
183, 179, 175, 171, 167, 163, 159, 155, 151, 147, 143, 139, 135, 131, 127, 123,
118, 114, 110, 106, 102, 98, 94, 90, 86, 82, 78, 74, 70, 66, 62, 58,
53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -3, -8},
{249, 245, 241, 237, 233, 229, 225, 221, 217, 213, 209, 205, 201, 197, 193, 189,
184, 180, 176, 172, 168, 164, 160, 156, 152, 148, 144, 140, 136, 132, 128, 124,
119, 115, 111, 107, 103, 99, 95, 91, 87, 83, 79, 75, 71, 67, 63, 59,
54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -2, -7},
{250, 246, 242, 238, 234, 230, 226, 222, 218, 214, 210, 206, 202, 198, 194, 190,
185, 181, 177, 173, 169, 165, 161, 157, 153, 149, 145, 141, 137, 133, 129, 125,
120, 116, 112, 108, 104, 100, 96, 92, 88, 84, 80, 76, 72, 68, 64, 60,
55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -1, -6},
{251, 247, 243, 239, 235, 231, 227, 223, 219, 215, 211, 207, 203, 199, 195, 191,
186, 182, 178, 174, 170, 166, 162, 158, 154, 150, 146, 142, 138, 134, 130, 126,
121, 117, 113, 109, 105, 101, 97, 93, 89, 85, 81, 77, 73, 69, 65, 61,
56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4, 0, -5},
{252, 248, 244, 240, 236, 232, 228, 224, 220, 216, 212, 208, 204, 200, 196, 192,
187, 183, 179, 175, 171, 167, 163, 159, 155, 151, 147, 143, 139, 135, 131, 127,
122, 118, 114, 110, 106, 102, 98, 94, 90, 86, 82, 78, 74, 70, 66, 62,
57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 1, -4},
{253, 249, 245, 241, 237, 233, 229, 225, 221, 217, 213, 209, 205, 201, 197, 193,
188, 184, 180, 176, 172, 168, 164, 160, 156, 152, 148, 144, 140, 136, 132, 128,
123, 119, 115, 111, 107, 103, 99, 95, 91, 87, 83, 79, 75, 71, 67, 63,
58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 2, -3},
{254, 250, 246, 242, 238, 234, 230, 226, 222, 218, 214, 210, 206, 202, 198, 194,
189, 185, 181, 177, 173, 169, 165, 161, 157, 153, 149, 145, 141, 137, 133, 129,
124, 120, 116, 112, 108, 104, 100, 96, 92, 88, 84, 80, 76, 72, 68, 64,
59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 3, -2},
{255, 251, 247, 243, 239, 235, 231, 227, 223, 219, 215, 211, 207, 203, 199, 195,
190, 186, 182, 178, 174, 170, 166, 162, 158, 154, 150, 146, 142, 138, 134, 130,
125, 121, 117, 113, 109, 105, 101, 97, 93, 89, 85, 81, 77, 73, 69, 65,
60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 4, -1},
{256, 252, 248, 244, 240, 236, 232, 228, 224, 220, 216, 212, 208, 204, 200, 196,
191, 187, 183, 179, 175, 171, 167, 163, 159, 155, 151, 147, 143, 139, 135, 131,
126, 122, 118, 114, 110, 106, 102, 98, 94, 90, 86, 82, 78, 74, 70, 66,
61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 5, 0},
{257, 253, 249, 245, 241, 237, 233, 229, 225, 221, 217, 213, 209, 205, 201, 197,
192, 188, 184, 180, 176, 172, 168, 164, 160, 156, 152, 148, 144, 140, 136, 132,
127, 123, 119, 115, 111, 107, 103, 99, 95, 91, 87, 83, 79, 75, 71, 67,
62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 6, 1},
{258, 254, 250, 246, 242, 238, 234, 230, 226, 222, 218, 214, 210, 206, 202, 198,
193, 189, 185, 181, 177, 173, 169, 165, 161, 157, 153, 149, 145, 141, 137, 133,
128, 124, 120, 116, 112, 108, 104, 100, 96, 92, 88, 84, 80, 76, 72, 68,
63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 7, 2},
{259, 255, 251, 247, 243, 239, 235, 231, 227, 223, 219, 215, 211, 207, 203, 199,
194, 190, 186, 182, 178, 174, 170, 166, 162, 158, 154, 150, 146, 142, 138, 134,
129, 125, 121, 117, 113, 109, 105, 101, 97, 93, 89, 85, 81, 77, 73, 69,
64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 8, 3},
{260, 256, 252, 248, 244, 240, 236, 232, 228, 224, 220, 216, 212, 208, 204, 200,
195, 191, 187, 183, 179, 175, 171, 167, 163, 159, 155, 151, 147, 143, 139, 135,
130, 126, 122, 118, 114, 110, 106, 102, 98, 94, 90, 86, 82, 78, 74, 70,
65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 9, 4},
{261, 257, 253, 249, 245, 241, 237, 233, 229, 225, 221, 217, 213, 209, 205, 201,
196, 192, 188, 184, 180, 176, 172, 168, 164, 160, 156, 152, 148, 144, 140, 136,
131, 127, 123, 119, 115, 111, 107, 103, 99, 95, 91, 87, 83, 79, 75, 71,
66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 10, 5},
{262, 258, 254, 250, 246, 242, 238, 234, 230, 226, 222, 218, 214, 210, 206, 202,
197, 193, 189, 185, 181, 177, 173, 169, 165, 161, 157, 153, 149, 145, 141, 137,
132, 128, 124, 120, 116, 112, 108, 104, 100, 96, 92, 88, 84, 80, 76, 72,
67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 11, 6},
{263, 259, 255, 251, 247, 243, 239, 235, 231, 227, 223, 219, 215, 211, 207, 203,
198, 194, 190, 186, 182, 178, 174, 170, 166, 162, 158, 154, 150, 146, 142, 138,
133, 129, 125, 121, 117, 113, 109, 105, 101, 97, 93, 89, 85, 81, 77, 73,
68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12, 7},
{264, 260, 256, 252, 248, 244, 240, 236, 232, 228, 224, 220, 216, 212, 208, 204,
199, 195, 191, 187, 183, 179, 175, 171, 167, 163, 159, 155, 151, 147, 143, 139,
134, 130, 126, 122, 118, 114, 110, 106, 102, 98, 94, 90, 86, 82, 78, 74,
69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 13, 8},
{265, 261, 257, 253, 249, 245, 241, 237, 233, 229, 225, 221, 217, 213, 209, 205,
200, 196, 192, 188, 184, 180, 176, 172, 168, 164, 160, 156, 152, 148, 144, 140,
135, 131, 127, 123, 119, 115, 111, 107, 103, 99, 95, 91, 87, 83, 79, 75,
70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 14, 9},
{266, 262, 258, 254, 250, 246, 242, 238, 234, 230, 226, 222, 218, 214, 210, 206,
201, 197, 193, 189, 185, 181, 177, 173, 169, 165, 161, 157, 153, 149, 145, 141,
136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96, 92, 88, 84, 80, 76,
71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 15, 10},
{267, 263, 259, 255, 251, 247, 243, 239, 235, 231, 227, 223, 219, 215, 211, 207,
202, 198, 194, 190, 186, 182, 178, 174, 170, 166, 162, 158, 154, 150, 146, 142,
137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97, 93, 89, 85, 81, 77,
72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 11},
{268, 264, 260, 256, 252, 248, 244, 240, 236, 232, 228, 224, 220, 216, 212, 208,
203, 199, 195, 191, 187, 183, 179, 175, 171, 167, 163, 159, 155, 151, 147, 143,
138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98, 94, 90, 86, 82, 78,
73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 12},
{269, 265, 261, 257, 253, 249, 245, 241, 237, 233, 229, 225, 221, 217, 213, 209,
204, 200, 196, 192, 188, 184, 180, 176, 172, 168, 164, 160, 156, 152, 148, 144,
139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99, 95, 91, 87, 83, 79,
74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 18, 13},
{270, 266, 262, 258, 254, 250, 246, 242, 238, 234, 230, 226, 222, 218, 214, 210,
205, 201, 197, 193, 189, 185, 181, 177, 173, 169, 165, 161, 157, 153, 149, 145,
140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96, 92, 88, 84, 80,
75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 19, 14},
{271, 267, 263, 259, 255, 251, 247, 243, 239, 235, 231, 227, 223, 219, 215, 211,
206, 202, 198, 194, 190, 186, 182, 178, 174, 170, 166, 162, 158, 154, 150, 146,
141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97, 93, 89, 85, 81,
76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 15},
{272, 268, 264, 260, 256, 252, 248, 244, 240, 236, 232, 228, 224, 220, 216, 212,
207, 203, 199, 195, 191, 187, 183, 179, 175, 171, 167, 163, 159, 155, 151, 147,
142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98, 94, 90, 86, 82,
77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 21, 16},
{273, 269, 265, 261, 257, 253, 249, 245, 241, 237, 233, 229, 225, 221, 217, 213,
208, 204, 200, 196, 192, 188, 184, 180, 176, 172, 168, 164, 160, 156, 152, 148,
143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99, 95, 91, 87, 83,
78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 22, 17},
{274, 270, 266, 262, 258, 254, 250, 246, 242, 238, 234, 230, 226, 222, 218, 214,
209, 205, 201, 197, 193, 189, 185, 181, 177, 173, 169, 165, 161, 157, 153, 149,
144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96, 92, 88, 84,
79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 23, 18},
{275, 271, 267, 263, 259, 255, 251, 247, 243, 239, 235, 231, 227, 223, 219, 215,
210, 206, 202, 198, 194, 190, 186, 182, 178, 174, 170, 166, 162, 158, 154, 150,
145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97, 93, 89, 85,
80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 19},
{276, 272, 268, 264, 260, 256, 252, 248, 244, 240, 236, 232, 228, 224, 220, 216,
211, 207, 203, 199, 195, 191, 187, 183, 179, 175, 171, 167, 163, 159, 155, 151,
146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98, 94, 90, 86,
81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 25, 20},
{277, 273, 269, 265, 261, 257, 253, 249, 245, 241, 237, 233, 229, 225, 221, 217,
212, 208, 204, 200, 196, 192, 188, 184, 180, 176, 172, 168, 164, 160, 156, 152,
147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99, 95, 91, 87,
82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 26, 21},
{278, 274, 270, 266, 262, 258, 254, 250, 246, 242, 238, 234, 230, 226, 222, 218,
213, 209, 205, 201, 197, 193, 189, 185, 181, 177, 173, 169, 165, 161, 157, 153,
148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96, 92, 88,
83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 27, 22},
{279, 275, 271, 267, 263, 259, 255, 251, 247, 243, 239, 235, 231, 227, 223, 219,
214, 210, 206, 202, 198, 194, 190, 186, 182, 178, 174, 170, 166, 162, 158, 154,
149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97, 93, 89,
84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 28, 23},
{280, 276, 272, 268, 264, 260, 256, 252, 248, 244, 240, 236, 232, 228, 224, 220,
215, 211, 207, 203, 199, 195, 191, 187, 183, 179, 175, 171, 167, 163, 159, 155,
150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98, 94, 90,
85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 29, 24},
{281, 277, 273, 269, 265, 261, 257, 253, 249, 245, 241, 237, 233, 229, 225, 221,
216, 212, 208, 204, 200, 196, 192, 188, 184, 180, 176, 172, 168, 164, 160, 156,
151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99, 95, 91,
86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 30, 25},
{282, 278, 274, 270, 266, 262, 258, 254, 250, 246, 242, 238, 234, 230, 226, 222,
217, 213, 209, 205, 201, 197, 193, 189, 185, 181, 177, 173, 169, 165, 161, 157,
152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96, 92,
87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 31, 26},
{283, 279, 275, 271, 267, 263, 259, 255, 251, 247, 243, 239, 235, 231, 227, 223,
218, 214, 210, 206, 202, 198, 194, 190, 186, 182, 178, 174, 170, 166, 162, 158,
153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97, 93,
88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 32, 27},
{284, 280, 276, 272, 268, 264, 260, 256, 252, 248, 244, 240, 236, 232, 228, 224,
219, 215, 211, 207, 203, 199, 195, 191, 187, 183, 179, 175, 171, 167, 163, 159,
154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98, 94,
89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 33, 28},
{285, 281, 277, 273, 269, 265, 261, 257, 253, 249, 245, 241, 237, 233, 229, 225,
220, 216, 212, 208, 204, 200, 196, 192, 188, 184, 180, 176, 172, 168, 164, 160,
155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99, 95,
90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 34, 29},
{286, 282, 278, 274, 270, 266, 262, 258, 254, 250, 246, 242, 238, 234, 230, 226,
221, 217, 213, 209, 205, 201, 197, 193, 189, 185, 181, 177, 173, 169, 165, 161,
156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100, 96,
91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 35, 30},
{287, 283, 279, 275, 271, 267, 263, 259, 255, 251, 247, 243, 239, 235, 231, 227,
222, 218, 214, 210, 206, 202, 198, 194, 190, 186, 182, 178, 174, 170, 166, 162,
157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101, 97,
92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 36, 31},
{288, 284, 280, 276, 272, 268, 264, 260, 256, 252, 248, 244, 240, 236, 232, 228,
223, 219, 215, 211, 207, 203, 199, 195, 191, 187, 183, 179, 175, 171, 167, 163,
158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102, 98,
93, 89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 37, 32},
{289, 285, 281, 277, 273, 269, 265, 261, 257, 253, 249, 245, 241, 237, 233, 229,
224, 220, 216, 212, 208, 204, 200, 196, 192, 188, 184, 180, 176, 172, 168, 164,
159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103, 99,
94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 38, 33},
{290, 286, 282, 278, 274, 270, 266, 262, 258, 254, 250, 246, 242, 238, 234, 230,
225, 221, 217, 213, 209, 205, 201, 197, 193, 189, 185, 181, 177, 173, 169, 165,
160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104, 100,
95, 91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 39, 34},
{291, 287, 283, 279, 275, 271, 267, 263, 259, 255, 251, 247, 243, 239, 235, 231,
226, 222, 218, 214, 210, 206, 202, 198, 194, 190, 186, 182, 178, 174, 170, 166,
161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105, 101,
96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 40, 35},
{292, 288, 284, 280, 276, 272, 268, 264, 260, 256, 252, 248, 244, 240, 236, 232,
227, 223, 219, 215, 211, 207, 203, 199, 195, 191, 187, 183, 179, 175, 171, 167,
162, 158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106, 102,
97, 93, 89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 41, 36},
{293, 289, 285, 281, 277, 273, 269, 265, 261, 257, 253, 249, 245, 241, 237, 233,
228, 224, 220, 216, 212, 208, 204, 200, 196, 192, 188, 184, 180, 176, 172, 168,
163, 159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107, 103,
98, 94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 42, 37},
{294, 290, 286, 282, 278, 274, 270, 266, 262, 258, 254, 250, 246, 242, 238, 234,
229, 225, 221, 217, 213, 209, 205, 201, 197, 193, 189, 185, 181, 177, 173, 169,
164, 160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108, 104,
99, 95, 91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 43, 38},
{295, 291, 287, 283, 279, 275, 271, 267, 263, 259, 255, 251, 247, 243, 239, 235,
230, 226, 222, 218, 214, 210, 206, 202, 198, 194, 190, 186, 182, 178, 174, 170,
165, 161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109, 105,
100, 96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 44, 39},
{296, 292, 288, 284, 280, 276, 272, 268, 264, 260, 256, 252, 248, 244, 240, 236,
231, 227, 223, 219, 215, 211, 207, 203, 199, 195, 191, 187, 183, 179, 175, 171,
166, 162, 158, 154, 150, 146, 142, 138, 134, 130, 126, 122, 118, 114, 110, 106,
101, 97, 93, 89, 85, 81, 77, 73, 69, 65, 61, 57, 53, 49, 45, 40},
{297, 293, 289, 285, 281, 277, 273, 269, 265, 261, 257, 253, 249, 245, 241, 237,
232, 228, 224, 220, 216, 212, 208, 204, 200, 196, 192, 188, 184, 180, 176, 172,
167, 163, 159, 155, 151, 147, 143, 139, 135, 131, 127, 123, 119, 115, 111, 107,
102, 98, 94, 90, 86, 82, 78, 74, 70, 66, 62, 58, 54, 50, 46, 41},
{298, 294, 290, 286, 282, 278, 274, 270, 266, 262, 258, 254, 250, 246, 242, 238,
233, 229, 225, 221, 217, 213, 209, 205, 201, 197, 193, 189, 185, 181, 177, 173,
168, 164, 160, 156, 152, 148, 144, 140, 136, 132, 128, 124, 120, 116, 112, 108,
103, 99, 95, 91, 87, 83, 79, 75, 71, 67, 63, 59, 55, 51, 47, 42},
{299, 295, 291, 287, 283, 279, 275, 271, 267, 263, 259, 255, 251, 247, 243, 239,
234, 230, 226, 222, 218, 214, 210, 206, 202, 198, 194, 190, 186, 182, 178, 174,
169, 165, 161, 157, 153, 149, 145, 141, 137, 133, 129, 125, 121, 117, 113, 109,
104, 100, 96, 92, 88, 84, 80, 76, 72, 68, 64, 60, 56, 52, 48, 43},
};
static void image_dither_set_rgb565_color(uint8_t* dst, int32_t b, int32_t g, int32_t r,
int32_t a) {
*(uint16_t*)dst = r | (g << 5) | (b << 11);
}
static void image_dither_set_bgr565_color(uint8_t* dst, int32_t b, int32_t g, int32_t r,
int32_t a) {
*(uint16_t*)dst = b | (g << 5) | (r << 11);
}
static void image_dither_set_bgra_color(uint8_t* dst, int32_t b, int32_t g, int32_t r, int32_t a) {
dst[0] = r << 3;
dst[1] = g << 2;
dst[2] = b << 3;
dst[3] = a;
}
static void image_dither_set_rgba_color(uint8_t* dst, int32_t b, int32_t g, int32_t r, int32_t a) {
dst[0] = b << 3;
dst[1] = g << 2;
dst[2] = r << 3;
dst[3] = a;
}
typedef struct _rgba_32_t {
int32_t r;
int32_t g;
int32_t b;
int32_t a;
} rgba_32_t;
static void image_dither_data_8888_to_565(uint8_t* src_data, uint8_t* dst_data,
uint32_t src_line_width, uint32_t dst_line_width,
uint32_t src_bpp, uint32_t dst_bpp, uint32_t w,
uint32_t h, set_dst_data_func_t set_dst_data) {
rgba_32_t err;
rgba_32_t err_1;
int32_t x = 0;
int32_t y = 0;
uint8_t* dst = dst_data;
uint8_t* src = src_data;
int32_t rB = 0, rG = 0, rR = 0;
int32_t cB = 0, cG = 0, cR = 0, cA = 0;
rgba_32_t* _line_err = TKMEM_ZALLOCN(rgba_32_t, w + 2);
rgba_32_t* line_err = &_line_err[1];
for (y = 0; y < h; y++) {
memset(&err, 0x0, sizeof(rgba_32_t));
memset(&err_1, 0x0, sizeof(rgba_32_t));
line_err[-1].b = 0;
line_err[-1].g = 0;
line_err[-1].r = 0;
for (x = 0; x < w; x++) {
if (src_bpp == 3 || (src_bpp == 4 && src[3] > 0)) {
cB = src[0] + (((err.b * 2) + line_err[x].b + err_1.b) / 4);
cG = src[1] + (((err.g * 2) + line_err[x].g + err_1.g) / 4);
cR = src[2] + (((err.r * 2) + line_err[x].r + err_1.r) / 4);
cA = src[3];
cB = tk_min(cB, ARRAY_SIZE(best_red_table) - 1);
cG = tk_min(cG, ARRAY_SIZE(best_greed_table) - 1);
cR = tk_min(cR, ARRAY_SIZE(best_red_table) - 1);
rB = best_blue_table[cB];
rG = best_greed_table[cG];
rR = best_red_table[cR];
set_dst_data(dst, rB, rG, rR, cA);
err.b = error_blue_table[cB][rB];
err.g = error_greed_table[cG][rG];
err.r = error_red_table[cR][rR];
} else {
set_dst_data(dst, 0, 0, 0, 0);
err.b = 0;
err.g = 0;
err.r = 0;
}
err_1.b = line_err[x - 1].b;
err_1.g = line_err[x - 1].g;
err_1.r = line_err[x - 1].r;
line_err[x - 1].b += err.b;
line_err[x - 1].g += err.g;
line_err[x - 1].r += err.r;
line_err[x].b = err.b;
line_err[x].g = err.g;
line_err[x].r = err.r;
src += src_bpp;
dst += dst_bpp;
}
}
TKMEM_FREE(_line_err);
}
static uint8_t* image_dither_convert_2_to_4(uint8_t* src, uint32_t w, uint32_t h) {
uint32_t i = 0;
uint8_t* s = src;
uint8_t* d = NULL;
uint8_t* data = NULL;
uint32_t size = w * h;
return_value_if_fail(src != NULL, NULL);
data = TKMEM_ALLOC(size * 4);
return_value_if_fail(data != NULL, NULL);
d = data;
for (i = 0; i < size; i++) {
d[0] = s[0];
d[1] = s[0];
d[2] = s[0];
d[3] = s[1];
d += 4;
s += 2;
}
return data;
}
static void image_dither_image_blend_bg_color(uint8_t* data, uint32_t w, uint32_t h, uint32_t bpp,
color_t bg_color) {
if (bpp == 4) {
uint32_t y = 0, x = 0;
uint8_t* src = data;
for (y = 0; y < h; y++) {
for (x = 0; x < w; x++) {
uint8_t b = src[0];
uint8_t g = src[1];
uint8_t r = src[2];
uint8_t a = src[3];
if (a != 0xFF) {
uint8_t minus_a = 0xFF - a;
src[2] = (bg_color.rgba.r * minus_a + r * a) >> 8;
src[1] = (bg_color.rgba.g * minus_a + g * a) >> 8;
src[0] = (bg_color.rgba.b * minus_a + b * a) >> 8;
src[3] = 0xFF;
}
src += bpp;
}
}
}
}
ret_t image_dither_load_image(const uint8_t* buff, uint32_t buff_size, bitmap_t* image,
bitmap_format_t bitmap_format, lcd_orientation_t o,
color_t bg_color) {
int w = 0;
int h = 0;
int n = 0;
ret_t ret = RET_FAIL;
uint8_t* data = NULL;
uint8_t* stb_data = stbi_load_from_memory(buff, buff_size, &w, &h, &n, 0);
return_value_if_fail(stb_data != NULL, RET_FAIL);
if (n == 2) {
n = 4;
data = image_dither_convert_2_to_4(stb_data, w, h);
} else {
data = TKMEM_ZALLOCN(uint8_t, w * h * n);
if (bg_color.color > 0) {
bg_color.rgba.r = (bg_color.rgba.r >> 3) << 3;
bg_color.rgba.g = (bg_color.rgba.g >> 2) << 2;
bg_color.rgba.b = (bg_color.rgba.b >> 3) << 3;
image_dither_image_blend_bg_color(stb_data, w, h, n, bg_color);
}
image_dither_data_8888_to_565(stb_data, data, w * n, w * n, n, n, w, h,
image_dither_set_rgba_color);
}
ret = bitmap_init_from_rgba(image, w, h, bitmap_format, data, n, o);
stbi_image_free((uint8_t*)(stb_data));
return ret;
}
ret_t image_dither_image_wirte_png_file(const char* output_file, bitmap_t* bitmap) {
return bitmap_save_png(bitmap, output_file);
}