blob: 87912e360ff4e683f2da9ff8c520da1ed5e9e1ab [file] [log] [blame] [edit]
/*
* Copyright (c) 2025, Alliance for Open Media. All rights reserved
*
* This source code is subject to the terms of the BSD 3-Clause Clear License
* and the Alliance for Open Media Patent License 1.0. If the BSD 3-Clause Clear
* License was not distributed with this source code in the LICENSE file, you
* can obtain it at aomedia.org/license/software-license/bsd-3-c-c/. If the
* Alliance for Open Media Patent License 1.0 was not distributed with this
* source code in the PATENTS file, you can obtain it at
* aomedia.org/license/patent-license/.
*/
#include "av1/common/gdf_block.h"
// clang-format off
const int gdf_guided_sample_coordinates_fwd[GDF_NET_INP_REC_NUM][2] = {
{-6, 0},
{-5, 0},
{-4, 0},
{-3, 0},
{-2, -1}, {-2, 0}, {-2, 1},
{-1, -2}, {-1, -1}, {-1, 0}, {-1, 1}, {-1, 2},
{ 0, -6}, { 0, -5}, { 0, -4}, { 0, -3}, { 0, -2}, { 0, -1},
};
const int gdf_guided_sample_coordinates_bwd[GDF_NET_INP_REC_NUM][2] = {
{ 6, 0},
{ 5, 0},
{ 4, 0},
{ 3, 0},
{ 2, 1}, { 2, 0}, { 2, -1},
{ 1, 2}, { 1, 1}, { 1, 0}, { 1, -1}, { 1, -2},
{ 0, 6}, { 0, 5}, { 0, 4}, { 0, 3}, { 0, 2}, { 0, 1},
};
const int gdf_guided_sample_vertical_masks[GDF_NET_INP_REC_NUM + GDF_NET_INP_GRD_NUM] = {
1,
1,
1,
1,
1, 1, 1,
0, 1, 1, 1, 0,
0, 0, 0, 0, 1, 1,
0, 0, 0, 0
};
const int gdf_guided_sample_horizontal_masks[GDF_NET_INP_REC_NUM + GDF_NET_INP_GRD_NUM] = {
0,
0,
0,
0,
0, 1, 0,
1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1,
0, 0, 0, 0
};
const int gdf_guided_sample_mixed_masks[GDF_NET_INP_REC_NUM + GDF_NET_INP_GRD_NUM] = {
0,
0,
0,
1,
0, 1, 0,
0, 0, 1, 0, 0,
0, 0, 0, 1, 1, 1,
1, 1, 1, 1
};
const int16_t gdf_intra_alpha_table[GDF_TRAIN_QP_NUM][GDF_TRAIN_CLS_NUM * (GDF_NET_INP_REC_NUM + GDF_NET_INP_GRD_NUM)] =
{
{ 511, 511, 511, 511, 511, 511, 511, 511, 511, 386, 511, 386, 511, 511, 511, 511, 511, 511, 511, 511, 43, 511, 43, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 10, 111, 10, 111, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 386, 511, 386, 511, 511, 511, 511, 511, 511, 43, 511, 43, 111, 10, 111, 10, 25, 25, 25, 25, 28, 28, 28, 28, 2, 2, 2, 2, 2, 2, 2, 2, },
{ 478, 120, 478, 120, 511, 511, 511, 511, 232, 109, 232, 109, 511, 127, 511, 127, 511, 511, 511, 511, 375, 15, 375, 15, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 120, 478, 120, 478, 511, 511, 511, 511, 109, 232, 109, 232, 127, 511, 127, 511, 15, 375, 15, 375, 511, 511, 511, 511, 511, 511, 511, 511, 8, 8, 8, 8, 10, 10, 10, 10, 511, 511, 511, 511, },
{ 511, 103, 511, 103, 511, 114, 511, 114, 511, 4, 511, 4, 511, 13, 511, 13, 511, 204, 511, 11, 511, 511, 511, 511, 511, 11, 511, 204, 204, 511, 11, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 11, 511, 204, 511, 103, 511, 103, 511, 114, 511, 114, 511, 4, 511, 4, 511, 13, 511, 13, 511, 511, 511, 511, 511, 511, 511, 511, 511, 66, 66, 66, 66, 22, 22, 22, 22, 10, 10, 10, 10, 147, 147, 147, 147, },
{ 511, 511, 511, 511, 511, 5, 511, 5, 511, 6, 511, 6, 511, 511, 511, 511, 511, 511, 39, 16, 18, 36, 18, 36, 39, 16, 511, 511, 511, 511, 16, 39, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 16, 39, 511, 511, 511, 511, 511, 511, 5, 511, 5, 511, 6, 511, 6, 511, 511, 511, 511, 511, 36, 18, 36, 18, 511, 511, 511, 511, 52, 52, 52, 52, 72, 72, 72, 72, 69, 69, 69, 69, 78, 78, 78, 78, },
{ 511, 511, 511, 511, 511, 511, 511, 511, 511, 12, 511, 12, 511, 286, 511, 286, 511, 511, 511, 25, 16, 64, 16, 64, 511, 25, 511, 511, 511, 511, 25, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 25, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 12, 511, 12, 511, 286, 511, 286, 511, 64, 16, 64, 16, 511, 511, 511, 511, 201, 201, 201, 201, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, },
{ 511, 511, 511, 511, 511, 511, 511, 511, 17, 25, 17, 25, 511, 511, 511, 511, 511, 511, 52, 35, 511, 64, 511, 64, 52, 35, 511, 511, 511, 511, 35, 52, 511, 511, 26, 26, 511, 178, 511, 178, 26, 26, 511, 511, 35, 52, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 25, 17, 25, 17, 511, 511, 511, 511, 64, 511, 64, 511, 178, 511, 178, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 3, 3, 3, 3, },
};
const int16_t gdf_inter_alpha_table[GDF_TRAIN_REFDST_NUM][GDF_TRAIN_QP_NUM][GDF_TRAIN_CLS_NUM * (GDF_NET_INP_REC_NUM + GDF_NET_INP_GRD_NUM)] =
{
{
{ 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 197, 145, 197, 145, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 17, 17, 511, 40, 511, 40, 17, 17, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 145, 197, 145, 197, 511, 511, 511, 511, 40, 511, 40, 511, 511, 511, 511, 511, 335, 335, 335, 335, 511, 511, 511, 511, 511, 511, 511, 511, },
{ 511, 511, 511, 511, 98, 511, 98, 511, 511, 511, 511, 511, 118, 145, 118, 145, 511, 511, 511, 12, 511, 511, 511, 511, 511, 12, 511, 511, 511, 511, 12, 511, 511, 511, 511, 511, 26, 33, 26, 33, 511, 511, 511, 511, 12, 511, 511, 511, 511, 511, 511, 511, 511, 98, 511, 98, 511, 511, 511, 511, 145, 118, 145, 118, 511, 511, 511, 511, 33, 26, 33, 26, 14, 14, 14, 14, 12, 12, 12, 12, 171, 171, 171, 171, 48, 48, 48, 48, },
{ 6, 93, 6, 93, 511, 6, 511, 6, 511, 7, 511, 7, 85, 130, 85, 130, 511, 511, 6, 511, 511, 39, 511, 39, 6, 511, 511, 511, 511, 511, 511, 6, 511, 511, 26, 26, 511, 511, 511, 511, 26, 26, 511, 511, 511, 6, 511, 511, 93, 6, 93, 6, 6, 511, 6, 511, 7, 511, 7, 511, 130, 85, 130, 85, 39, 511, 39, 511, 511, 511, 511, 511, 511, 511, 511, 511, 9, 9, 9, 9, 511, 511, 511, 511, 511, 511, 511, 511, },
{ 511, 511, 511, 511, 511, 511, 511, 511, 511, 9, 511, 9, 511, 511, 511, 511, 511, 1, 511, 17, 2, 511, 2, 511, 511, 17, 511, 1, 1, 511, 17, 511, 511, 511, 511, 511, 12, 47, 12, 47, 511, 511, 511, 511, 17, 511, 1, 511, 511, 511, 511, 511, 511, 511, 511, 511, 9, 511, 9, 511, 511, 511, 511, 511, 511, 2, 511, 2, 47, 12, 47, 12, 511, 511, 511, 511, 183, 183, 183, 183, 92, 92, 92, 92, 511, 511, 511, 511, },
{ 511, 6, 511, 6, 511, 4, 511, 4, 511, 7, 511, 7, 511, 9, 511, 9, 511, 511, 511, 26, 511, 131, 511, 131, 511, 26, 511, 511, 511, 511, 26, 511, 511, 511, 9, 9, 511, 511, 511, 511, 9, 9, 511, 511, 26, 511, 511, 511, 6, 511, 6, 511, 4, 511, 4, 511, 7, 511, 7, 511, 9, 511, 9, 511, 131, 511, 131, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, },
{ 511, 12, 511, 12, 511, 23, 511, 23, 14, 511, 14, 511, 511, 511, 511, 511, 511, 511, 13, 511, 511, 511, 511, 511, 13, 511, 511, 511, 511, 511, 511, 13, 511, 511, 511, 511, 511, 20, 511, 20, 511, 511, 511, 511, 511, 13, 511, 511, 12, 511, 12, 511, 23, 511, 23, 511, 511, 14, 511, 14, 511, 511, 511, 511, 511, 511, 511, 511, 20, 511, 20, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, },
},
{
{ 511, 511, 511, 511, 138, 511, 138, 511, 511, 511, 511, 511, 238, 511, 238, 511, 511, 511, 511, 511, 59, 511, 59, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 24, 47, 24, 47, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 138, 511, 138, 511, 511, 511, 511, 511, 238, 511, 238, 511, 59, 511, 59, 47, 24, 47, 24, 511, 511, 511, 511, 511, 511, 511, 511, 242, 242, 242, 242, 74, 74, 74, 74, },
{ 511, 511, 511, 511, 511, 511, 511, 511, 511, 158, 511, 158, 133, 511, 133, 511, 511, 4, 511, 14, 511, 11, 511, 11, 511, 14, 511, 4, 4, 511, 14, 511, 511, 511, 511, 511, 511, 52, 511, 52, 511, 511, 511, 511, 14, 511, 4, 511, 511, 511, 511, 511, 511, 511, 511, 511, 158, 511, 158, 511, 511, 133, 511, 133, 11, 511, 11, 511, 52, 511, 52, 511, 467, 467, 467, 467, 511, 511, 511, 511, 28, 28, 28, 28, 33, 33, 33, 33, },
{ 511, 214, 511, 214, 511, 511, 511, 511, 79, 194, 79, 194, 511, 289, 511, 289, 511, 72, 37, 24, 43, 21, 43, 21, 37, 24, 511, 72, 72, 511, 24, 37, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 24, 37, 72, 511, 214, 511, 214, 511, 511, 511, 511, 511, 194, 79, 194, 79, 289, 511, 289, 511, 21, 43, 21, 43, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 115, 115, 115, 115, 23, 23, 23, 23, },
{ 511, 211, 511, 211, 511, 511, 511, 511, 132, 511, 132, 511, 511, 511, 511, 511, 511, 511, 32, 25, 56, 8, 56, 8, 32, 25, 511, 511, 511, 511, 25, 32, 511, 511, 14, 14, 511, 67, 511, 67, 14, 14, 511, 511, 25, 32, 511, 511, 211, 511, 211, 511, 511, 511, 511, 511, 511, 132, 511, 132, 511, 511, 511, 511, 8, 56, 8, 56, 67, 511, 67, 511, 89, 89, 89, 89, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, },
{ 511, 6, 511, 6, 511, 10, 511, 10, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 24, 511, 511, 511, 511, 511, 24, 511, 511, 511, 511, 24, 511, 511, 511, 6, 6, 511, 511, 511, 511, 6, 6, 511, 511, 24, 511, 511, 511, 6, 511, 6, 511, 10, 511, 10, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, },
{ 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 26, 511, 26, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 26, 511, 26, 511, 511, 511, 511, 511, 511, 511, 511, 6, 6, 6, 6, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, },
},
{
{ 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 115, 511, 115, 511, 511, 511, 511, 511, 511, 173, 511, 173, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 14, 14, 26, 51, 26, 51, 14, 14, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 115, 511, 115, 173, 511, 173, 511, 51, 26, 51, 26, 1, 1, 1, 1, 2, 2, 2, 2, 511, 511, 511, 511, 384, 384, 384, 384, },
{ 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 153, 511, 153, 511, 511, 67, 12, 511, 511, 511, 511, 67, 12, 511, 511, 511, 511, 12, 67, 511, 511, 511, 511, 30, 37, 30, 37, 511, 511, 511, 511, 12, 67, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 153, 511, 153, 511, 511, 511, 511, 511, 37, 30, 37, 30, 511, 511, 511, 511, 12, 12, 12, 12, 511, 511, 511, 511, 511, 511, 511, 511, },
{ 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 106, 11, 106, 11, 511, 511, 5, 34, 511, 511, 511, 511, 5, 34, 511, 511, 511, 511, 34, 5, 511, 511, 9, 9, 511, 44, 511, 44, 9, 9, 511, 511, 34, 5, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 11, 106, 11, 106, 511, 511, 511, 511, 44, 511, 44, 511, 3, 3, 3, 3, 7, 7, 7, 7, 4, 4, 4, 4, 511, 511, 511, 511, },
{ 511, 142, 511, 142, 511, 9, 511, 9, 511, 5, 511, 5, 511, 511, 511, 511, 511, 511, 511, 10, 511, 68, 511, 68, 511, 10, 511, 511, 511, 511, 10, 511, 511, 511, 46, 46, 511, 28, 511, 28, 46, 46, 511, 511, 10, 511, 511, 511, 142, 511, 142, 511, 9, 511, 9, 511, 5, 511, 5, 511, 511, 511, 511, 511, 68, 511, 68, 511, 28, 511, 28, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, },
{ 511, 511, 511, 511, 511, 13, 511, 13, 511, 511, 511, 511, 511, 37, 511, 37, 511, 511, 50, 8, 511, 511, 511, 511, 50, 8, 511, 511, 511, 511, 8, 50, 511, 511, 2, 2, 511, 71, 511, 71, 2, 2, 511, 511, 8, 50, 511, 511, 511, 511, 511, 511, 13, 511, 13, 511, 511, 511, 511, 511, 37, 511, 37, 511, 511, 511, 511, 511, 71, 511, 71, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, },
{ 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 24, 511, 24, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 35, 35, 511, 511, 511, 511, 35, 35, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 24, 511, 24, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 13, 13, 13, 13, 12, 12, 12, 12, },
},
{
{ 511, 511, 511, 511, 511, 120, 511, 120, 511, 511, 511, 511, 323, 511, 323, 511, 511, 511, 49, 511, 511, 511, 511, 511, 49, 511, 511, 511, 511, 511, 511, 49, 511, 511, 17, 17, 511, 45, 511, 45, 17, 17, 511, 511, 511, 49, 511, 511, 511, 511, 511, 511, 120, 511, 120, 511, 511, 511, 511, 511, 511, 323, 511, 323, 511, 511, 511, 511, 45, 511, 45, 511, 511, 511, 511, 511, 511, 511, 511, 511, 53, 53, 53, 53, 47, 47, 47, 47, },
{ 511, 511, 511, 511, 511, 231, 511, 231, 105, 511, 105, 511, 511, 511, 511, 511, 511, 511, 511, 14, 511, 511, 511, 511, 511, 14, 511, 511, 511, 511, 14, 511, 511, 511, 511, 511, 511, 53, 511, 53, 511, 511, 511, 511, 14, 511, 511, 511, 511, 511, 511, 511, 231, 511, 231, 511, 511, 105, 511, 105, 511, 511, 511, 511, 511, 511, 511, 511, 53, 511, 53, 511, 9, 9, 9, 9, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, },
{ 511, 511, 511, 511, 511, 511, 511, 511, 511, 238, 511, 238, 119, 511, 119, 511, 511, 4, 10, 7, 511, 511, 511, 511, 10, 7, 511, 4, 4, 511, 7, 10, 511, 511, 29, 29, 511, 42, 511, 42, 29, 29, 511, 511, 7, 10, 4, 511, 511, 511, 511, 511, 511, 511, 511, 511, 238, 511, 238, 511, 511, 119, 511, 119, 511, 511, 511, 511, 42, 511, 42, 511, 511, 511, 511, 511, 511, 511, 511, 511, 12, 12, 12, 12, 9, 9, 9, 9, },
{ 511, 5, 511, 5, 511, 5, 511, 5, 511, 5, 511, 5, 511, 210, 511, 210, 511, 511, 20, 12, 511, 67, 511, 67, 20, 12, 511, 511, 511, 511, 12, 20, 511, 511, 47, 47, 511, 511, 511, 511, 47, 47, 511, 511, 12, 20, 511, 511, 5, 511, 5, 511, 5, 511, 5, 511, 5, 511, 5, 511, 210, 511, 210, 511, 67, 511, 67, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 71, 71, 71, 71, 511, 511, 511, 511, },
{ 511, 4, 511, 4, 511, 5, 511, 5, 511, 10, 511, 10, 511, 511, 511, 511, 511, 1, 511, 23, 511, 511, 511, 511, 511, 23, 511, 1, 1, 511, 23, 511, 511, 511, 7, 7, 511, 40, 511, 40, 7, 7, 511, 511, 23, 511, 1, 511, 4, 511, 4, 511, 5, 511, 5, 511, 10, 511, 10, 511, 511, 511, 511, 511, 511, 511, 511, 511, 40, 511, 40, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, },
{ 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 25, 511, 25, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 25, 511, 25, 511, 511, 511, 511, 511, 511, 511, 511, 11, 11, 11, 11, 14, 14, 14, 14, 16, 16, 16, 16, 511, 511, 511, 511, },
},
{
{ 511, 511, 511, 511, 511, 511, 511, 511, 511, 163, 511, 163, 342, 511, 342, 511, 511, 511, 511, 511, 511, 10, 511, 10, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 163, 511, 163, 511, 511, 342, 511, 342, 10, 511, 10, 511, 511, 511, 511, 511, 511, 511, 511, 511, 34, 34, 34, 34, 511, 511, 511, 511, 511, 511, 511, 511, },
{ 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 123, 511, 123, 40, 511, 511, 14, 511, 511, 511, 511, 511, 14, 40, 511, 511, 40, 14, 511, 511, 511, 511, 511, 511, 49, 511, 49, 511, 511, 511, 511, 14, 511, 511, 40, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 123, 511, 123, 511, 511, 511, 511, 511, 49, 511, 49, 511, 511, 511, 511, 511, 429, 429, 429, 429, 62, 62, 62, 62, 511, 511, 511, 511, },
{ 511, 511, 511, 511, 511, 511, 511, 511, 114, 511, 114, 511, 511, 511, 511, 511, 511, 57, 511, 511, 511, 9, 511, 9, 511, 511, 511, 57, 57, 511, 511, 511, 14, 14, 46, 46, 511, 511, 511, 511, 46, 46, 14, 14, 511, 511, 57, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 114, 511, 114, 511, 511, 511, 511, 9, 511, 9, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, },
{ 511, 4, 511, 4, 16, 7, 16, 7, 151, 511, 151, 511, 511, 511, 511, 511, 511, 511, 11, 511, 40, 18, 40, 18, 11, 511, 511, 511, 511, 511, 511, 11, 511, 511, 20, 20, 511, 511, 511, 511, 20, 20, 511, 511, 511, 11, 511, 511, 4, 511, 4, 511, 7, 16, 7, 16, 511, 151, 511, 151, 511, 511, 511, 511, 18, 40, 18, 40, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, },
{ 511, 7, 511, 7, 511, 511, 511, 511, 511, 12, 511, 12, 511, 511, 511, 511, 511, 511, 24, 23, 5, 511, 5, 511, 24, 23, 511, 511, 511, 511, 23, 24, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 23, 24, 511, 511, 7, 511, 7, 511, 511, 511, 511, 511, 12, 511, 12, 511, 511, 511, 511, 511, 511, 5, 511, 5, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, },
{ 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 4, 30, 511, 30, 511, 511, 4, 511, 511, 511, 511, 4, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 4, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, 30, 511, 30, 511, 511, 511, 511, 511, 511, 511, 511, 75, 75, 75, 75, 21, 21, 21, 21, 511, 511, 511, 511, },
},
};
const int16_t gdf_intra_weight_table[GDF_TRAIN_QP_NUM][GDF_TRAIN_CLS_NUM * (GDF_NET_INP_REC_NUM + GDF_NET_INP_GRD_NUM) * GDF_NET_LUT_IDX_NUM] =
{
{ -5, 0, -5, 0, 13, 0, 13, 0, -19, 0, -19, 0, 15, 0, 15, 0, 19, 0, -24, 0, -17, -36, -17, -36, -24, 0, 19, 0, 0, 19, 0, -24, -39, -39, 39, 39, 103, 327, 103, 327, 39, 39, -39, -39, 0, -24, 0, 19, 0, -5, 0, -5, 0, 13, 0, 13, 0, -19, 0, -19, 0, 15, 0, 15, -36, -17, -36, -17, 327, 103, 327, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -11, 0, -11, 0, 33, 0, 33, 0, -60, 0, -60, 0, 91, 0, 91, 0, 11, 0, -12, -29, -138, -29, -138, 0, -12, 0, 11, 11, 0, -12, 0, -22, -22, 17, 17, 36, 136, 36, 136, 17, 17, -22, -22, -12, 0, 11, 0, -11, 0, -11, 0, 33, 0, 33, 0, -60, 0, -60, 0, 91, 0, 91, 0, -138, -29, -138, -29, 136, 36, 136, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -15, -31, -15, -31, 0, 0, 0, 0, 13, 46, 13, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, -12, -49, -12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -31, -15, -31, -15, 46, 13, 46, 13, -12, -49, -12, -49, 59, 59, 59, 59, 57, 57, 57, 57, 35, 35, 35, 35, 22, 22, 22, 22, },
{ -4, 0, -4, 0, 10, 0, 10, 0, -14, 0, -14, 0, -2, 0, -2, 0, 7, 0, -44, 0, 23, 80, 23, 80, -44, 0, 7, 0, 0, 7, 0, -44, -41, -41, 126, 126, -110, 135, -110, 135, 126, 126, -41, -41, 0, -44, 0, 7, 0, -4, 0, -4, 0, 10, 0, 10, 0, -14, 0, -14, 0, -2, 0, -2, 80, 23, 80, 23, 135, -110, 135, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 0, -9, 0, 9, 0, 9, 0, -8, 0, -8, 0, -22, 0, -22, 0, 2, 0, -42, 34, 244, 34, 244, 0, -42, 0, 2, 2, 0, -42, 0, 1, 1, 122, 122, -53, 139, -53, 139, 122, 122, 1, 1, -42, 0, 2, 0, -9, 0, -9, 0, 9, 0, 9, 0, -8, 0, -8, 0, -22, 0, -22, 0, 244, 34, 244, 34, 139, -53, 139, -53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 49, 55, 49, 0, 0, 0, 0, 1, 56, 1, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -105, -71, -105, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 55, 49, 55, 56, 1, 56, 1, -71, -105, -71, -105, -12, -12, -12, -12, 61, 61, 61, 61, 51, 51, 51, 51, -19, -19, -19, -19, },
{ -20, 0, -20, 0, 8, 0, 8, 0, -16, 0, -16, 0, -10, 0, -10, 0, -16, 0, -24, 0, 14, -36, 14, -36, -24, 0, -16, 0, 0, -16, 0, -24, -27, -27, 52, 52, -21, 106, -21, 106, 52, 52, -27, -27, 0, -24, 0, -16, 0, -20, 0, -20, 0, 8, 0, 8, 0, -16, 0, -16, 0, -10, 0, -10, -36, 14, -36, 14, 106, -21, 106, -21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -14, 0, -14, 0, -24, 0, -24, 0, 462, 0, 462, 0, 172, 0, 172, 0, -15, 0, 472, 33, -32, 33, -32, 0, 472, 0, -15, -15, 0, 472, 0, 19, 19, 143, 143, -126, 125, -126, 125, 143, 143, 19, 19, 472, 0, -15, 0, -14, 0, -14, 0, -24, 0, -24, 0, 462, 0, 462, 0, 172, 0, 172, 0, -32, 33, -32, 33, 125, -126, 125, -126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, -265, -5, -265, 0, 0, 0, 0, 6, -2, 6, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, -194, 87, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -265, -5, -265, -5, -2, 6, -2, 6, -194, 87, -194, 87, -5, -5, -5, -5, -4, -4, -4, -4, 0, 0, 0, 0, -4, -4, -4, -4, },
{ -19, 0, -19, 0, 3, 0, 3, 0, -11, 0, -11, 0, 11, 0, 11, 0, -27, 0, -79, 0, -99, 29, -99, 29, -79, 0, -27, 0, 0, -27, 0, -79, -22, -22, 18, 18, -4, 90, -4, 90, 18, 18, -22, -22, 0, -79, 0, -27, 0, -19, 0, -19, 0, 3, 0, 3, 0, -11, 0, -11, 0, 11, 0, 11, 29, -99, 29, -99, 90, -4, 90, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -15, 0, -15, 0, 511, 0, 511, 0, 372, 0, 372, 0, -23, 0, -23, 0, -2, 0, 422, 173, 243, 173, 243, 0, 422, 0, -2, -2, 0, 422, 0, -21, -21, 84, 84, -114, 110, -114, 110, 84, 84, -21, -21, 422, 0, -2, 0, -15, 0, -15, 0, 511, 0, 511, 0, 372, 0, 372, 0, -23, 0, -23, 0, 243, 173, 243, 173, 110, -114, 110, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 87, 39, 87, 0, 0, 0, 0, -394, -13, -394, -13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -37, 51, -37, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 39, 87, 39, -13, -394, -13, -394, 51, -37, 51, -37, 41, 41, 41, 41, 33, 33, 33, 33, -24, -24, -24, -24, -20, -20, -20, -20, },
{ -46, 0, -46, 0, 15, 0, 15, 0, -25, 0, -25, 0, 10, 0, 10, 0, -39, 0, -23, 0, 144, 76, 144, 76, -23, 0, -39, 0, 0, -39, 0, -23, 1, 1, 50, 50, 75, 36, 75, 36, 50, 50, 1, 1, 0, -23, 0, -39, 0, -46, 0, -46, 0, 15, 0, 15, 0, -25, 0, -25, 0, 10, 0, 10, 76, 144, 76, 144, 36, 75, 36, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 0, -8, 0, -6, 0, -6, 0, 511, 0, 511, 0, -28, 0, -28, 0, -14, 0, 289, 509, 237, 509, 237, 0, 289, 0, -14, -14, 0, 289, 0, 1, 1, 58, 58, -94, -16, -94, -16, 58, 58, 1, 1, 289, 0, -14, 0, -8, 0, -8, 0, -6, 0, -6, 0, 511, 0, 511, 0, -28, 0, -28, 0, 237, 509, 237, 509, -16, -94, -16, -94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -21, -152, -21, -152, 0, 0, 0, 0, -94, -46, -94, -46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -95, 55, -95, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -152, -21, -152, -21, -46, -94, -46, -94, 55, -95, 55, -95, 2, 2, 2, 2, 5, 5, 5, 5, -6, -6, -6, -6, -2, -2, -2, -2, },
{ -35, 0, -35, 0, -3, 0, -3, 0, 511, 0, 511, 0, -47, 0, -47, 0, -40, 0, 318, 0, -57, -88, -57, -88, 318, 0, -40, 0, 0, -40, 0, 318, 30, 30, -280, -280, 135, -76, 135, -76, -280, -280, 30, 30, 0, 318, 0, -40, 0, -35, 0, -35, 0, -3, 0, -3, 0, 511, 0, 511, 0, -47, 0, -47, -88, -57, -88, -57, -76, 135, -76, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -32, 0, -32, 0, -11, 0, -11, 0, 511, 0, 511, 0, -31, 0, -31, 0, 5, 0, 320, 16, 239, 16, 239, 0, 320, 0, 5, 5, 0, 320, 0, -45, -45, 66, 66, -154, -69, -154, -69, 66, 66, -45, -45, 320, 0, 5, 0, -32, 0, -32, 0, -11, 0, -11, 0, 511, 0, 511, 0, -31, 0, -31, 0, 239, 16, 239, 16, -69, -154, -69, -154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 17, 91, 17, 0, 0, 0, 0, -36, 87, -36, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, -49, -6, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 91, 17, 91, 87, -36, 87, -36, -49, -6, -49, -6, 1, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 12, 12, 12, 12, },
};
const int16_t gdf_inter_weight_table[GDF_TRAIN_REFDST_NUM][GDF_TRAIN_QP_NUM][GDF_TRAIN_CLS_NUM * (GDF_NET_INP_REC_NUM + GDF_NET_INP_GRD_NUM) * GDF_NET_LUT_IDX_NUM] =
{
{
{ -3, 0, -3, 0, 6, 0, 6, 0, -11, 0, -11, 0, 26, 0, 26, 0, -5, 0, 23, 0, -21, 37, -21, 37, 23, 0, -5, 0, 0, -5, 0, 23, 13, 13, -246, -246, 17, -315, 17, -315, -246, -246, 13, 13, 0, 23, 0, -5, 0, -3, 0, -3, 0, 6, 0, 6, 0, -11, 0, -11, 0, 26, 0, 26, 37, -21, 37, -21, -315, 17, -315, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, 0, -16, 0, 9, 0, 9, 0, -25, 0, -25, 0, 28, 0, 28, 0, -25, 0, 13, -25, 26, -25, 26, 0, 13, 0, -25, -25, 0, 13, 0, 6, 6, -112, -112, 29, -23, 29, -23, -112, -112, 6, 6, 13, 0, -25, 0, -16, 0, -16, 0, 9, 0, 9, 0, -25, 0, -25, 0, 28, 0, 28, 0, 26, -25, 26, -25, -23, 29, -23, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 20, 17, 20, 0, 0, 0, 0, 7, 30, 7, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -12, 32, -12, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 17, 20, 17, 30, 7, 30, 7, 32, -12, 32, -12, -3, -3, -3, -3, 24, 24, 24, 24, -2, -2, -2, -2, 4, 4, 4, 4, },
{ -12, 0, -12, 0, 19, 0, 19, 0, -54, 0, -54, 0, 79, 0, 79, 0, -64, 0, 0, 0, -4, 23, -4, 23, 0, 0, -64, 0, 0, -64, 0, 0, 114, 114, 61, 61, -12, -126, -12, -126, 61, 61, 114, 114, 0, 0, 0, -64, 0, -12, 0, -12, 0, 19, 0, 19, 0, -54, 0, -54, 0, 79, 0, 79, 23, -4, 23, -4, -126, -12, -126, -12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 0, -5, 0, -5, 0, 18, 0, 18, 0, -36, 0, -36, 0, 20, 0, 263, 6, -15, 6, -15, 0, 263, 0, 20, 20, 0, 263, 0, -30, -30, -9, -9, 266, 329, 266, 329, -9, -9, -30, -30, 263, 0, 20, 0, 3, 0, 3, 0, -5, 0, -5, 0, 18, 0, 18, 0, -36, 0, -36, 0, -15, 6, -15, 6, 329, 266, 329, 266, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, -39, -52, -39, 0, 0, 0, 0, -57, -74, -57, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 156, 336, 156, 336, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -39, -52, -39, -52, -74, -57, -74, -57, 336, 156, 336, 156, -16, -16, -16, -16, -13, -13, -13, -13, 6, 6, 6, 6, 1, 1, 1, 1, },
{ 85, 0, 85, 0, 25, 0, 25, 0, 10, 0, 10, 0, -83, 0, -83, 0, 58, 0, 83, 0, 45, -14, 45, -14, 83, 0, 58, 0, 0, 58, 0, 83, -16, -16, 18, 18, -146, -123, -146, -123, 18, 18, -16, -16, 0, 83, 0, 58, 0, 85, 0, 85, 0, 25, 0, 25, 0, 10, 0, 10, 0, -83, 0, -83, -14, 45, -14, 45, -123, -146, -123, -146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 33, 0, -336, 0, -336, 0, -294, 0, -294, 0, 61, 0, 61, 0, 14, 0, 17, -1, -248, -1, -248, 0, 17, 0, 14, 14, 0, 17, 0, 12, 12, -411, -411, 30, -203, 30, -203, -411, -411, 12, 12, 17, 0, 14, 0, 33, 0, 33, 0, -336, 0, -336, 0, -294, 0, -294, 0, 61, 0, 61, 0, -248, -1, -248, -1, -203, 30, -203, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 61, 69, 61, 0, 0, 0, 0, -11, 75, -11, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, 29, 168, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 69, 61, 69, 75, -11, 75, -11, 29, 168, 29, 168, -25, -25, -25, -25, 123, 123, 123, 123, -1, -1, -1, -1, 9, 9, 9, 9, },
{ 21, 0, 21, 0, 8, 0, 8, 0, 2, 0, 2, 0, 8, 0, 8, 0, 61, 0, -11, 0, -167, -81, -167, -81, -11, 0, 61, 0, 0, 61, 0, -11, -1, -1, 0, 0, 123, -38, 123, -38, 0, 0, -1, -1, 0, -11, 0, 61, 0, 21, 0, 21, 0, 8, 0, 8, 0, 2, 0, 2, 0, 8, 0, 8, -81, -167, -81, -167, -38, 123, -38, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 11, 0, -3, 0, -3, 0, -512, 0, -512, 0, -1, 0, -1, 0, -307, 0, -468, -291, -6, -291, -6, 0, -468, 0, -307, -307, 0, -468, 0, 79, 79, 7, 7, 12, -512, 12, -512, 7, 7, 79, 79, -468, 0, -307, 0, 11, 0, 11, 0, -3, 0, -3, 0, -512, 0, -512, 0, -1, 0, -1, 0, -6, -291, -6, -291, -512, 12, -512, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 192, 41, 192, 0, 0, 0, 0, -220, 146, -220, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -15, -178, -15, -178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 41, 192, 41, 146, -220, 146, -220, -178, -15, -178, -15, -8, -8, -8, -8, 34, 34, 34, 34, -35, -35, -35, -35, -1, -1, -1, -1, },
{ 78, 0, 78, 0, -31, 0, -31, 0, 22, 0, 22, 0, 31, 0, 31, 0, 71, 0, -73, 0, -48, -169, -48, -169, -73, 0, 71, 0, 0, 71, 0, -73, 37, 37, 3, 3, -31, -94, -31, -94, 3, 3, 37, 37, 0, -73, 0, 71, 0, 78, 0, 78, 0, -31, 0, -31, 0, 22, 0, 22, 0, 31, 0, 31, -169, -48, -169, -48, -94, -31, -94, -31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 511, 0, 511, 0, 511, 0, 511, 0, 511, 0, 511, 0, 469, 0, 469, 0, -123, 0, 511, 19, 51, 19, 51, 0, 511, 0, -123, -123, 0, 511, 0, -4, -4, 511, 511, -58, 74, -58, 74, 511, 511, -4, -4, 511, 0, -123, 0, 511, 0, 511, 0, 511, 0, 511, 0, 511, 0, 511, 0, 469, 0, 469, 0, 51, 19, 51, 19, 74, -58, 74, -58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -21, 15, -21, 15, 0, 0, 0, 0, -63, -246, -63, -246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -33, 87, -33, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, -21, 15, -21, -246, -63, -246, -63, 87, -33, 87, -33, 38, 38, 38, 38, -53, -53, -53, -53, 8, 8, 8, 8, 0, 0, 0, 0, },
{ 216, 0, 216, 0, -28, 0, -28, 0, -512, 0, -512, 0, -124, 0, -124, 0, 34, 0, -512, 0, -53, 26, -53, 26, -512, 0, 34, 0, 0, 34, 0, -512, 51, 51, -50, -50, 10, 144, 10, 144, -50, -50, 51, 51, 0, -512, 0, 34, 0, 216, 0, 216, 0, -28, 0, -28, 0, -512, 0, -512, 0, -124, 0, -124, 26, -53, 26, -53, 144, 10, 144, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 511, 0, 511, 0, 511, 0, 511, 0, -174, 0, -174, 0, 92, 0, 92, 0, -189, 0, 291, -42, 186, -42, 186, 0, 291, 0, -189, -189, 0, 291, 0, -147, -147, 67, 67, -88, 411, -88, 411, 67, 67, -147, -147, 291, 0, -189, 0, 511, 0, 511, 0, 511, 0, 511, 0, -174, 0, -174, 0, 92, 0, 92, 0, 186, -42, 186, -42, 411, -88, 411, -88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 71, 93, 71, 0, 0, 0, 0, -57, -89, -57, -89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 371, 22, 371, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 93, 71, 93, -89, -57, -89, -57, 371, 22, 371, 22, -3, -3, -3, -3, 2, 2, 2, 2, 2, 2, 2, 2, 10, 10, 10, 10, },
},
{
{ 6, 0, 6, 0, -9, 0, -9, 0, 16, 0, 16, 0, -1, 0, -1, 0, 38, 0, 4, 0, -73, -23, -73, -23, 4, 0, 38, 0, 0, 38, 0, 4, -74, -74, -35, -35, 195, 157, 195, 157, -35, -35, -74, -74, 0, 4, 0, 38, 0, 6, 0, 6, 0, -9, 0, -9, 0, 16, 0, 16, 0, -1, 0, -1, -23, -73, -23, -73, 157, 195, 157, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10, 0, -10, 0, 5, 0, 5, 0, -9, 0, -9, 0, -2, 0, -2, 0, -19, 0, -8, 12, 16, 12, 16, 0, -8, 0, -19, -19, 0, -8, 0, -8, -8, -4, -4, -119, -139, -119, -139, -4, -4, -8, -8, -8, 0, -19, 0, -10, 0, -10, 0, 5, 0, 5, 0, -9, 0, -9, 0, -2, 0, -2, 0, 16, 12, 16, 12, -139, -119, -139, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 5, 29, 5, 0, 0, 0, 0, 11, 36, 11, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, -344, -203, -344, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 29, 5, 29, 36, 11, 36, 11, -344, -203, -344, -203, -5, -5, -5, -5, -9, -9, -9, -9, 5, 5, 5, 5, 8, 8, 8, 8, },
{ -8, 0, -8, 0, 1, 0, 1, 0, -13, 0, -13, 0, 17, 0, 17, 0, -29, 0, 1, 0, -19, -140, -19, -140, 1, 0, -29, 0, 0, -29, 0, 1, 7, 7, 7, 7, -20, -6, -20, -6, 7, 7, 7, 7, 0, 1, 0, -29, 0, -8, 0, -8, 0, 1, 0, 1, 0, -13, 0, -13, 0, 17, 0, 17, -140, -19, -140, -19, -6, -20, -6, -20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 0, -8, 0, 29, 0, 29, 0, -39, 0, -39, 0, -12, 0, -12, 0, 126, 0, 362, 49, -41, 49, -41, 0, 362, 0, 126, 126, 0, 362, 0, -67, -67, -22, -22, -110, 276, -110, 276, -22, -22, -67, -67, 362, 0, 126, 0, -8, 0, -8, 0, 29, 0, 29, 0, -39, 0, -39, 0, -12, 0, -12, 0, -41, 49, -41, 49, 276, -110, 276, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 22, 32, 22, 0, 0, 0, 0, 14, -293, 14, -293, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, -386, -63, -386, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 32, 22, 32, -293, 14, -293, 14, -386, -63, -386, -63, -9, -9, -9, -9, -13, -13, -13, -13, 15, 15, 15, 15, 15, 15, 15, 15, },
{ 6, 0, 6, 0, 17, 0, 17, 0, -34, 0, -34, 0, 15, 0, 15, 0, 52, 0, 96, 0, -16, 87, -16, 87, 96, 0, 52, 0, 0, 52, 0, 96, -22, -22, -37, -37, -55, -74, -55, -74, -37, -37, -22, -22, 0, 96, 0, 52, 0, 6, 0, 6, 0, 17, 0, 17, 0, -34, 0, -34, 0, 15, 0, 15, 87, -16, 87, -16, -74, -55, -74, -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -15, 0, -15, 0, 21, 0, 21, 0, -7, 0, -7, 0, -40, 0, -40, 0, -27, 0, 365, -51, 256, -51, 256, 0, 365, 0, -27, -27, 0, 365, 0, -20, -20, 58, 58, -98, 197, -98, 197, 58, 58, -20, -20, 365, 0, -27, 0, -15, 0, -15, 0, 21, 0, 21, 0, -7, 0, -7, 0, -40, 0, -40, 0, 256, -51, 256, -51, 197, -98, 197, -98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -13, -2, -13, 0, 0, 0, 0, -32, -134, -32, -134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -135, -64, -135, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -13, -2, -13, -2, -134, -32, -134, -32, -64, -135, -64, -135, -2, -2, -2, -2, -14, -14, -14, -14, 11, 11, 11, 11, -14, -14, -14, -14, },
{ -6, 0, -6, 0, -20, 0, -20, 0, 28, 0, 28, 0, -1, 0, -1, 0, -38, 0, -70, 0, -99, 32, -99, 32, -70, 0, -38, 0, 0, -38, 0, -70, 9, 9, -138, -138, 2, 146, 2, 146, -138, -138, 9, 9, 0, -70, 0, -38, 0, -6, 0, -6, 0, -20, 0, -20, 0, 28, 0, 28, 0, -1, 0, -1, 32, -99, 32, -99, 146, 2, 146, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -34, 0, -34, 0, 26, 0, 26, 0, 14, 0, 14, 0, -61, 0, -61, 0, -1, 0, 414, -83, 511, -83, 511, 0, 414, 0, -1, -1, 0, 414, 0, -52, -52, 302, 302, -72, 480, -72, 480, 302, 302, -52, -52, 414, 0, -1, 0, -34, 0, -34, 0, 26, 0, 26, 0, 14, 0, 14, 0, -61, 0, -61, 0, 511, -83, 511, -83, 480, -72, 480, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 90, 57, 90, 0, 0, 0, 0, -189, 286, -189, 286, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 100, 16, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 57, 90, 57, 286, -189, 286, -189, 100, 16, 100, 16, -25, -25, -25, -25, 3, 3, 3, 3, -3, -3, -3, -3, 2, 2, 2, 2, },
{ -69, 0, -69, 0, 23, 0, 23, 0, -18, 0, -18, 0, -51, 0, -51, 0, -45, 0, 77, 0, 47, 105, 47, 105, 77, 0, -45, 0, 0, -45, 0, 77, -40, -40, 94, 94, -4, 34, -4, 34, 94, 94, -40, -40, 0, 77, 0, -45, 0, -69, 0, -69, 0, 23, 0, 23, 0, -18, 0, -18, 0, -51, 0, -51, 105, 47, 105, 47, 34, -4, 34, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 511, 0, 511, 0, 511, 0, 511, 0, -61, 0, -61, 0, 72, 0, 72, 0, -13, 0, 511, 28, -58, 28, -58, 0, 511, 0, -13, -13, 0, 511, 0, -32, -32, 511, 511, -58, 131, -58, 131, 511, 511, -32, -32, 511, 0, -13, 0, 511, 0, 511, 0, 511, 0, 511, 0, -61, 0, -61, 0, 72, 0, 72, 0, -58, 28, -58, 28, 131, -58, 131, -58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10, -222, -10, -222, 0, 0, 0, 0, -163, -28, -163, -28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 129, -97, 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -222, -10, -222, -10, -28, -163, -28, -163, 129, -97, 129, -97, 2, 2, 2, 2, -88, -88, -88, -88, 2, 2, 2, 2, -6, -6, -6, -6, },
{ 132, 0, 132, 0, -72, 0, -72, 0, 89, 0, 89, 0, -285, 0, -285, 0, 152, 0, -7, 0, 31, 10, 31, 10, -7, 0, 152, 0, 0, 152, 0, -7, 65, 65, -139, -139, -61, -83, -61, -83, -139, -139, 65, 65, 0, -7, 0, 152, 0, 132, 0, 132, 0, -72, 0, -72, 0, 89, 0, 89, 0, -285, 0, -285, 10, 31, 10, 31, -83, -61, -83, -61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -512, 0, -512, 0, -512, 0, -512, 0, -402, 0, -402, 0, -194, 0, -194, 0, 142, 0, -174, 20, -22, 20, -22, 0, -174, 0, 142, 142, 0, -174, 0, 94, 94, -55, -55, 32, 157, 32, 157, -55, -55, 94, 94, -174, 0, 142, 0, -512, 0, -512, 0, -512, 0, -512, 0, -402, 0, -402, 0, -194, 0, -194, 0, -22, 20, -22, 20, 157, 32, 157, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -512, 29, -512, 29, 0, 0, 0, 0, 10, -23, 10, -23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -13, -64, -13, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, -512, 29, -512, -23, 10, -23, 10, -64, -13, -64, -13, 108, 108, 108, 108, -2, -2, -2, -2, -2, -2, -2, -2, -4, -4, -4, -4, },
},
{
{ 4, 0, 4, 0, -2, 0, -2, 0, 6, 0, 6, 0, -29, 0, -29, 0, 17, 0, -23, 0, 6, -51, 6, -51, -23, 0, 17, 0, 0, 17, 0, -23, -37, -37, 206, 206, 90, 323, 90, 323, 206, 206, -37, -37, 0, -23, 0, 17, 0, 4, 0, 4, 0, -2, 0, -2, 0, 6, 0, 6, 0, -29, 0, -29, -51, 6, -51, 6, 323, 90, 323, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -19, 0, -19, 0, 0, 0, 0, 0, -8, 0, -8, 0, -16, 0, -16, 0, -33, 0, 19, -22, 58, -22, 58, 0, 19, 0, -33, -33, 0, 19, 0, 20, 20, -60, -60, -15, 8, -15, 8, -60, -60, 20, 20, 19, 0, -33, 0, -19, 0, -19, 0, 0, 0, 0, 0, -8, 0, -8, 0, -16, 0, -16, 0, 58, -22, 58, -22, 8, -15, 8, -15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -12, -12, -12, -12, 0, 0, 0, 0, -21, -35, -21, -35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, -59, 17, -59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -12, -12, -12, -12, -35, -21, -35, -21, -59, 17, -59, 17, -5, -5, -5, -5, -15, -15, -15, -15, -10, -10, -10, -10, -14, -14, -14, -14, },
{ 3, 0, 3, 0, 24, 0, 24, 0, -12, 0, -12, 0, 7, 0, 7, 0, 50, 0, -87, 0, 15, -1, 15, -1, -87, 0, 50, 0, 0, 50, 0, -87, -88, -88, -48, -48, -12, 37, -12, 37, -48, -48, -88, -88, 0, -87, 0, 50, 0, 3, 0, 3, 0, 24, 0, 24, 0, -12, 0, -12, 0, 7, 0, 7, -1, 15, -1, 15, 37, -12, 37, -12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, 1, 0, 1, 0, -21, 0, -21, 0, 64, 0, 64, 0, -24, 0, -357, -3, 30, -3, 30, 0, -357, 0, -24, -24, 0, -357, 0, 53, 53, 7, 7, -237, -435, -237, -435, 7, 7, 53, 53, -357, 0, -24, 0, -1, 0, -1, 0, 1, 0, 1, 0, -21, 0, -21, 0, 64, 0, 64, 0, 30, -3, 30, -3, -435, -237, -435, -237, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 32, 44, 32, 0, 0, 0, 0, 18, 24, 18, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, -112, 50, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 44, 32, 44, 24, 18, 24, 18, -112, 50, -112, 50, -25, -25, -25, -25, 93, 93, 93, 93, 3, 3, 3, 3, 9, 9, 9, 9, },
{ 3, 0, 3, 0, 22, 0, 22, 0, 5, 0, 5, 0, -70, 0, -70, 0, 62, 0, 122, 0, 41, -77, 41, -77, 122, 0, 62, 0, 0, 62, 0, 122, -47, -47, 325, 325, -123, 230, -123, 230, 325, 325, -47, -47, 0, 122, 0, 62, 0, 3, 0, 3, 0, 22, 0, 22, 0, 5, 0, 5, 0, -70, 0, -70, -77, 41, -77, 41, 230, -123, 230, -123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 0, -7, 0, 12, 0, 12, 0, -19, 0, -19, 0, 449, 0, 449, 0, 2, 0, 182, -6, 4, -6, 4, 0, 182, 0, 2, 2, 0, 182, 0, -3, -3, 124, 124, -14, 405, -14, 405, 124, 124, -3, -3, 182, 0, 2, 0, -7, 0, -7, 0, 12, 0, 12, 0, -19, 0, -19, 0, 449, 0, 449, 0, 4, -6, 4, -6, 405, -14, 405, -14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, -32, -62, -32, 0, 0, 0, 0, -12, -134, -12, -134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, 330, -117, 330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -32, -62, -32, -62, -134, -12, -134, -12, 330, -117, 330, -117, -32, -32, -32, -32, -97, -97, -97, -97, -62, -62, -62, -62, 20, 20, 20, 20, },
{ -21, 0, -21, 0, -25, 0, -25, 0, 16, 0, 16, 0, -31, 0, -31, 0, -58, 0, 59, 0, -19, 161, -19, 161, 59, 0, -58, 0, 0, -58, 0, 59, 47, 47, -70, -70, -8, 4, -8, 4, -70, -70, 47, 47, 0, 59, 0, -58, 0, -21, 0, -21, 0, -25, 0, -25, 0, 16, 0, 16, 0, -31, 0, -31, 161, -19, 161, -19, 4, -8, 4, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 47, 0, -512, 0, -512, 0, -512, 0, -512, 0, 26, 0, 26, 0, 0, 0, -473, -10, -174, -10, -174, 0, -473, 0, 0, 0, 0, -473, 0, 50, 50, -136, -136, 43, -512, 43, -512, -136, -136, 50, 50, -473, 0, 0, 0, 47, 0, 47, 0, -512, 0, -512, 0, -512, 0, -512, 0, 26, 0, 26, 0, -174, -10, -174, -10, -512, 43, -512, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 226, 52, 226, 0, 0, 0, 0, 112, 178, 112, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, -224, 94, -224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 226, 52, 226, 52, 178, 112, 178, 112, -224, 94, -224, 94, -16, -16, -16, -16, 62, 62, 62, 62, -11, -11, -11, -11, 4, 4, 4, 4, },
{ 45, 0, 45, 0, -15, 0, -15, 0, 15, 0, 15, 0, -11, 0, -11, 0, 75, 0, 91, 0, -14, -51, -14, -51, 91, 0, 75, 0, 0, 75, 0, 91, -63, -63, 89, 89, -5, 44, -5, 44, 89, 89, -63, -63, 0, 91, 0, 75, 0, 45, 0, 45, 0, -15, 0, -15, 0, 15, 0, 15, 0, -11, 0, -11, -51, -14, -51, -14, 44, -5, 44, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -34, 0, -34, 0, 511, 0, 511, 0, -67, 0, -67, 0, 180, 0, 180, 0, -94, 0, 495, -12, -108, -12, -108, 0, 495, 0, -94, -94, 0, 495, 0, -20, -20, 486, 486, -11, 503, -11, 503, 486, 486, -20, -20, 495, 0, -94, 0, -34, 0, -34, 0, 511, 0, 511, 0, -67, 0, -67, 0, 180, 0, 180, 0, -108, -12, -108, -12, 503, -11, 503, -11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 511, 26, 511, 0, 0, 0, 0, -22, -33, -22, -33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 243, 33, 243, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 511, 26, 511, 26, -33, -22, -33, -22, 243, 33, 243, 33, -13, -13, -13, -13, -1, -1, -1, -1, 6, 6, 6, 6, 5, 5, 5, 5, },
{ -120, 0, -120, 0, 62, 0, 62, 0, -87, 0, -87, 0, 426, 0, 426, 0, -153, 0, -80, 0, -16, -28, -16, -28, -80, 0, -153, 0, 0, -153, 0, -80, -48, -48, 482, 482, 72, 95, 72, 95, 482, 482, -48, -48, 0, -80, 0, -153, 0, -120, 0, -120, 0, 62, 0, 62, 0, -87, 0, -87, 0, 426, 0, 426, -28, -16, -28, -16, 95, 72, 95, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 511, 0, 511, 0, 466, 0, 466, 0, 238, 0, 238, 0, 109, 0, 109, 0, -87, 0, 148, -23, -12, -23, -12, 0, 148, 0, -87, -87, 0, 148, 0, -63, -63, 53, 53, -21, -113, -21, -113, 53, 53, -63, -63, 148, 0, -87, 0, 511, 0, 511, 0, 466, 0, 466, 0, 238, 0, 238, 0, 109, 0, 109, 0, -12, -23, -12, -23, -113, -21, -113, -21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -512, 20, -512, 20, 0, 0, 0, 0, 9, -8, 9, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -18, -37, -18, -37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, -512, 20, -512, -8, 9, -8, 9, -37, -18, -37, -18, -5, -5, -5, -5, -8, -8, -8, -8, 54, 54, 54, 54, 63, 63, 63, 63, },
},
{
{ 6, 0, 6, 0, 1, 0, 1, 0, 10, 0, 10, 0, -38, 0, -38, 0, 27, 0, -72, 0, 58, -53, 58, -53, -72, 0, 27, 0, 0, 27, 0, -72, -47, -47, 293, 293, -114, 366, -114, 366, 293, 293, -47, -47, 0, -72, 0, 27, 0, 6, 0, 6, 0, 1, 0, 1, 0, 10, 0, 10, 0, -38, 0, -38, -53, 58, -53, 58, 366, -114, 366, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 18, 0, -18, 0, -18, 0, 9, 0, 9, 0, 9, 0, 9, 0, 20, 0, -18, 27, -20, 27, -20, 0, -18, 0, 20, 20, 0, -18, 0, 9, 9, 140, 140, -22, 35, -22, 35, 140, 140, 9, 9, -18, 0, 20, 0, 18, 0, 18, 0, -18, 0, -18, 0, 9, 0, 9, 0, 9, 0, 9, 0, -20, 27, -20, 27, 35, -22, 35, -22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -16, -2, -16, 0, 0, 0, 0, -11, 45, -11, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 154, 24, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, -2, -16, -2, 45, -11, 45, -11, 154, 24, 154, 24, 6, 6, 6, 6, 16, 16, 16, 16, -11, -11, -11, -11, -9, -9, -9, -9, },
{ -3, 0, -3, 0, 30, 0, 30, 0, -32, 0, -32, 0, -19, 0, -19, 0, 46, 0, -26, 0, 48, -55, 48, -55, -26, 0, 46, 0, 0, 46, 0, -26, -105, -105, 6, 6, -88, 345, -88, 345, 6, 6, -105, -105, 0, -26, 0, 46, 0, -3, 0, -3, 0, 30, 0, 30, 0, -32, 0, -32, 0, -19, 0, -19, -55, 48, -55, 48, 345, -88, 345, -88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 7, 0, -10, 0, -10, 0, 2, 0, 2, 0, -8, 0, -8, 0, 19, 0, 256, 11, -18, 11, -18, 0, 256, 0, 19, 19, 0, 256, 0, 3, 3, 4, 4, -9, 299, -9, 299, 4, 4, 3, 3, 256, 0, 19, 0, 7, 0, 7, 0, -10, 0, -10, 0, 2, 0, 2, 0, -8, 0, -8, 0, -18, 11, -18, 11, 299, -9, 299, -9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -31, -41, -31, -41, 0, 0, 0, 0, -26, 22, -26, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -12, 279, -12, 279, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -41, -31, -41, -31, 22, -26, 22, -26, 279, -12, 279, -12, -66, -66, -66, -66, -10, -10, -10, -10, 6, 6, 6, 6, 8, 8, 8, 8, },
{ 2, 0, 2, 0, 11, 0, 11, 0, 0, 0, 0, 0, -59, 0, -59, 0, 35, 0, 100, 0, 1, -7, 1, -7, 100, 0, 35, 0, 0, 35, 0, 100, -13, -13, 185, 185, -49, 324, -49, 324, 185, 185, -13, -13, 0, 100, 0, 35, 0, 2, 0, 2, 0, 11, 0, 11, 0, 0, 0, 0, 0, -59, 0, -59, -7, 1, -7, 1, 324, -49, 324, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -21, 0, -21, 0, 33, 0, 33, 0, -36, 0, -36, 0, -1, 0, -1, 0, 232, 0, 440, 17, -81, 17, -81, 0, 440, 0, 232, 232, 0, 440, 0, -79, -79, 150, 150, -112, 361, -112, 361, 150, 150, -79, -79, 440, 0, 232, 0, -21, 0, -21, 0, 33, 0, 33, 0, -36, 0, -36, 0, -1, 0, -1, 0, -81, 17, -81, 17, 361, -112, 361, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -47, -43, -47, -43, 0, 0, 0, 0, -61, 62, -61, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 154, 84, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -43, -47, -43, -47, 62, -61, 62, -61, 154, 84, 154, 84, -4, -4, -4, -4, 0, 0, 0, 0, -68, -68, -68, -68, -44, -44, -44, -44, },
{ -23, 0, -23, 0, -9, 0, -9, 0, 0, 0, 0, 0, -4, 0, -4, 0, -65, 0, -19, 0, 5, 108, 5, 108, -19, 0, -65, 0, 0, -65, 0, -19, -18, -18, -15, -15, 47, 118, 47, 118, -15, -15, -18, -18, 0, -19, 0, -65, 0, -23, 0, -23, 0, -9, 0, -9, 0, 0, 0, 0, 0, -4, 0, -4, 108, 5, 108, 5, 118, 47, 118, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -512, 0, -512, 0, -512, 0, -512, 0, -512, 0, -512, 0, 97, 0, 97, 0, 15, 0, -448, -18, -347, -18, -347, 0, -448, 0, 15, 15, 0, -448, 0, 49, 49, -158, -158, 76, -108, 76, -108, -158, -158, 49, 49, -448, 0, 15, 0, -512, 0, -512, 0, -512, 0, -512, 0, -512, 0, -512, 0, 97, 0, 97, 0, -347, -18, -347, -18, -108, 76, -108, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 166, 40, 166, 0, 0, 0, 0, -10, 92, -10, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 28, 104, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, 40, 166, 40, 92, -10, 92, -10, 28, 104, 28, 104, -1, -1, -1, -1, 57, 57, 57, 57, -33, -33, -33, -33, -5, -5, -5, -5, },
{ -55, 0, -55, 0, 20, 0, 20, 0, -11, 0, -11, 0, -38, 0, -38, 0, -44, 0, 12, 0, 25, 53, 25, 53, 12, 0, -44, 0, 0, -44, 0, 12, -5, -5, 70, 70, 34, 72, 34, 72, 70, 70, -5, -5, 0, 12, 0, -44, 0, -55, 0, -55, 0, 20, 0, 20, 0, -11, 0, -11, 0, -38, 0, -38, 53, 25, 53, 25, 72, 34, 72, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 511, 0, 511, 0, 511, 0, 511, 0, 511, 0, 511, 0, -45, 0, -45, 0, 352, 0, 443, 8, -18, 8, -18, 0, 443, 0, 352, 352, 0, 443, 0, -50, -50, 374, 374, -8, 468, -8, 468, 374, 374, -50, -50, 443, 0, 352, 0, 511, 0, 511, 0, 511, 0, 511, 0, 511, 0, 511, 0, -45, 0, -45, 0, -18, 8, -18, 8, 468, -8, 468, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10, 318, -10, 318, 0, 0, 0, 0, 105, 18, 105, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 206, -378, 206, -378, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 318, -10, 318, -10, 18, 105, 18, 105, -378, 206, -378, 206, 8, 8, 8, 8, 60, 60, 60, 60, -20, -20, -20, -20, 2, 2, 2, 2, },
{ -104, 0, -104, 0, 62, 0, 62, 0, -87, 0, -87, 0, 392, 0, 392, 0, -154, 0, -80, 0, -2, -67, -2, -67, -80, 0, -154, 0, 0, -154, 0, -80, -47, -47, 156, 156, 89, 136, 89, 136, 156, 156, -47, -47, 0, -80, 0, -154, 0, -104, 0, -104, 0, 62, 0, 62, 0, -87, 0, -87, 0, 392, 0, 392, -67, -2, -67, -2, 136, 89, 136, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -512, 0, -512, 0, -512, 0, -512, 0, -282, 0, -282, 0, -103, 0, -103, 0, 149, 0, -190, 23, -9, 23, -9, 0, -190, 0, 149, 149, 0, -190, 0, 87, 87, -62, -62, 28, 94, 28, 94, -62, -62, 87, 87, -190, 0, 149, 0, -512, 0, -512, 0, -512, 0, -512, 0, -282, 0, -282, 0, -103, 0, -103, 0, -9, 23, -9, 23, 94, 28, 94, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -512, 22, -512, 22, 0, 0, 0, 0, 12, -18, 12, -18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -21, -16, -21, -16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, -512, 22, -512, -18, 12, -18, 12, -16, -21, -16, -21, 41, 41, 41, 41, 34, 34, 34, 34, 48, 48, 48, 48, -3, -3, -3, -3, },
},
{
{ 16, 0, 16, 0, -14, 0, -14, 0, 24, 0, 24, 0, -55, 0, -55, 0, 35, 0, 7, 0, 59, 46, 59, 46, 7, 0, 35, 0, 0, 35, 0, 7, -55, -55, -14, -14, -145, 55, -145, 55, -14, -14, -55, -55, 0, 7, 0, 35, 0, 16, 0, 16, 0, -14, 0, -14, 0, 24, 0, 24, 0, -55, 0, -55, 46, 59, 46, 59, 55, -145, 55, -145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -11, 0, -11, 0, -2, 0, -2, 0, 7, 0, 7, 0, 7, 0, 7, 0, -19, 0, -2, -33, -60, -33, -60, 0, -2, 0, -19, -19, 0, -2, 0, -2, -2, 8, 8, 11, 89, 11, 89, 8, 8, -2, -2, -2, 0, -19, 0, -11, 0, -11, 0, -2, 0, -2, 0, 7, 0, 7, 0, 7, 0, 7, 0, -60, -33, -60, -33, 89, 11, 89, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 4, -5, 4, 0, 0, 0, 0, -14, -78, -14, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -20, -133, -20, -133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, -5, 4, -5, -78, -14, -78, -14, -133, -20, -133, -20, 3, 3, 3, 3, 35, 35, 35, 35, -4, -4, -4, -4, -5, -5, -5, -5, },
{ 2, 0, 2, 0, -17, 0, -17, 0, 15, 0, 15, 0, 1, 0, 1, 0, 63, 0, 54, 0, -55, 25, -55, 25, 54, 0, 63, 0, 0, 63, 0, 54, 44, 44, -101, -101, 65, -512, 65, -512, -101, -101, 44, 44, 0, 54, 0, 63, 0, 2, 0, 2, 0, -17, 0, -17, 0, 15, 0, 15, 0, 1, 0, 1, 25, -55, 25, -55, -512, 65, -512, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 0, -7, 0, -9, 0, -9, 0, -10, 0, -10, 0, 65, 0, 65, 0, -44, 0, -289, -65, 53, -65, 53, 0, -289, 0, -44, -44, 0, -289, 0, 43, 43, 41, 41, 61, -107, 61, -107, 41, 41, 43, 43, -289, 0, -44, 0, -7, 0, -7, 0, -9, 0, -9, 0, -10, 0, -10, 0, 65, 0, 65, 0, 53, -65, 53, -65, -107, 61, -107, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, -37, -27, -37, 0, 0, 0, 0, 10, -33, 10, -33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, -32, -73, -32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -37, -27, -37, -27, -33, 10, -33, 10, -32, -73, -32, -73, 3, 3, 3, 3, -6, -6, -6, -6, 27, 27, 27, 27, -8, -8, -8, -8, },
{ 3, 0, 3, 0, -21, 0, -21, 0, 48, 0, 48, 0, -9, 0, -9, 0, -4, 0, 29, 0, -38, -368, -38, -368, 29, 0, -4, 0, 0, -4, 0, 29, -65, -65, -308, -308, 124, -93, 124, -93, -308, -308, -65, -65, 0, 29, 0, -4, 0, 3, 0, 3, 0, -21, 0, -21, 0, 48, 0, 48, 0, -9, 0, -9, -368, -38, -368, -38, -93, 124, -93, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -12, 0, -12, 0, -14, 0, -14, 0, 10, 0, 10, 0, -17, 0, -17, 0, 52, 0, 47, -56, 50, -56, 50, 0, 47, 0, 52, 52, 0, 47, 0, -195, -195, 33, 33, 45, 114, 45, 114, 33, 33, -195, -195, 47, 0, 52, 0, -12, 0, -12, 0, -14, 0, -14, 0, 10, 0, 10, 0, -17, 0, -17, 0, 50, -56, 50, -56, 114, 45, 114, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, -83, -56, -83, 0, 0, 0, 0, 33, 47, 33, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, 27, -116, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -83, -56, -83, -56, 47, 33, 47, 33, 27, -116, 27, -116, 9, 9, 9, 9, -6, -6, -6, -6, -4, -4, -4, -4, -13, -13, -13, -13, },
{ 9, 0, 9, 0, 107, 0, 107, 0, -36, 0, -36, 0, 14, 0, 14, 0, 8, 0, 101, 0, 90, 142, 90, 142, 101, 0, 8, 0, 0, 8, 0, 101, 16, 16, 222, 222, -42, -62, -42, -62, 222, 222, 16, 16, 0, 101, 0, 8, 0, 9, 0, 9, 0, 107, 0, 107, 0, -36, 0, -36, 0, 14, 0, 14, 142, 90, 142, 90, -62, -42, -62, -42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -512, 0, -512, 0, -512, 0, -512, 0, 23, 0, 23, 0, 8, 0, 8, 0, 7, 0, -142, 135, -358, 135, -358, 0, -142, 0, 7, 7, 0, -142, 0, 39, 39, -254, -254, 125, -365, 125, -365, -254, -254, 39, 39, -142, 0, 7, 0, -512, 0, -512, 0, -512, 0, -512, 0, 23, 0, 23, 0, 8, 0, 8, 0, -358, 135, -358, 135, -365, 125, -365, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, -102, -79, -102, 0, 0, 0, 0, 152, 89, 152, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -41, -4, -41, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, -79, -102, -79, 89, 152, 89, 152, -4, -41, -4, -41, 1, 1, 1, 1, -18, -18, -18, -18, 4, 4, 4, 4, 4, 4, 4, 4, },
{ 46, 0, 46, 0, -12, 0, -12, 0, 14, 0, 14, 0, -9, 0, -9, 0, 60, 0, 71, 0, -115, -91, -115, -91, 71, 0, 60, 0, 0, 60, 0, 71, 23, 23, -4, -4, -51, -52, -51, -52, -4, -4, 23, 23, 0, 71, 0, 60, 0, 46, 0, 46, 0, -12, 0, -12, 0, 14, 0, 14, 0, -9, 0, -9, -91, -115, -91, -115, -52, -51, -52, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -512, 0, -512, 0, 41, 0, 41, 0, -512, 0, -512, 0, -39, 0, -39, 0, 17, 0, -462, -512, 0, -512, 0, 0, -462, 0, 17, 17, 0, -462, 0, 41, 41, -97, -97, 106, -174, 106, -174, -97, -97, 41, 41, -462, 0, 17, 0, -512, 0, -512, 0, 41, 0, 41, 0, -512, 0, -512, 0, -39, 0, -39, 0, 0, -512, 0, -512, -174, 106, -174, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -48, -194, -48, -194, 0, 0, 0, 0, 356, -34, 356, -34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -14, 129, -14, 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -48, -194, -48, -34, 356, -34, 356, 129, -14, 129, -14, 7, 7, 7, 7, -31, -31, -31, -31, 7, 7, 7, 7, 2, 2, 2, 2, },
{ -89, 0, -89, 0, 38, 0, 38, 0, -34, 0, -34, 0, 6, 0, 6, 0, -105, 0, -87, 0, 263, -35, 263, -35, -87, 0, -105, 0, 0, -105, 0, -87, -75, -75, 106, 106, 50, 113, 50, 113, 106, 106, -75, -75, 0, -87, 0, -105, 0, -89, 0, -89, 0, 38, 0, 38, 0, -34, 0, -34, 0, 6, 0, 6, -35, 263, -35, 263, 113, 50, 113, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 511, 0, 511, 0, 511, 0, 511, 0, 281, 0, 281, 0, 104, 0, 104, 0, -189, 0, 511, 274, -22, 274, -22, 0, 511, 0, -189, -189, 0, 511, 0, -110, -110, 148, 148, -8, -180, -8, -180, 148, 148, -110, -110, 511, 0, -189, 0, 511, 0, 511, 0, 511, 0, 511, 0, 281, 0, 281, 0, 104, 0, 104, 0, -22, 274, -22, 274, -180, -8, -180, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -13, -33, -13, -33, 0, 0, 0, 0, 511, 29, 511, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 18, 11, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -33, -13, -33, -13, 29, 511, 29, 511, 18, 11, 18, 11, 12, 12, 12, 12, 12, 12, 12, 12, -69, -69, -69, -69, -10, -10, -10, -10, },
},
};
const int32_t gdf_intra_bias_table[GDF_TRAIN_QP_NUM][GDF_TRAIN_CLS_NUM * GDF_NET_LUT_IDX_NUM] =
{
{ 1925, 1925, 1925, 1925, -13583, -13583, -13583, -13583, 11215, 11215, 11215, 11215, },
{ -3674, -3674, -3674, -3674, -1502, -1502, -1502, -1502, 8347, 8347, 8347, 8347, },
{ -3652, -3652, -3652, -3652, -2643, -2643, -2643, -2643, 363, 363, 363, 363, },
{ -2178, -2178, -2178, -2178, -2054, -2054, -2054, -2054, -3486, -3486, -3486, -3486, },
{ -1328, -1328, -1328, -1328, -2508, -2508, -2508, -2508, 2097, 2097, 2097, 2097, },
{ -2124, -2124, -2124, -2124, -2024, -2024, -2024, -2024, -3121, -3121, -3121, -3121, },
};
const int32_t gdf_inter_bias_table[GDF_TRAIN_REFDST_NUM][GDF_TRAIN_QP_NUM][GDF_TRAIN_CLS_NUM * GDF_NET_LUT_IDX_NUM] =
{
{
{ -1067, -1067, -1067, -1067, -432, -432, -432, -432, -4, -4, -4, -4, },
{ 9262, 9262, 9262, 9262, -3515, -3515, -3515, -3515, -3754, -3754, -3754, -3754, },
{ -7059, -7059, -7059, -7059, 6034, 6034, 6034, 6034, -7748, -7748, -7748, -7748, },
{ -6571, -6571, -6571, -6571, 91, 91, 91, 91, 3451, 3451, 3451, 3451, },
{ -5335, -5335, -5335, -5335, -1251, -1251, -1251, -1251, 12069, 12069, 12069, 12069, },
{ -4763, -4763, -4763, -4763, 1391, 1391, 1391, 1391, -4988, -4988, -4988, -4988, },
},
{
{ 1762, 1762, 1762, 1762, -4143, -4143, -4143, -4143, 417, 417, 417, 417, },
{ -5345, -5345, -5345, -5345, 1826, 1826, 1826, 1826, -255, -255, -255, -255, },
{ -208, -208, -208, -208, -3312, -3312, -3312, -3312, 9374, 9374, 9374, 9374, },
{ -2768, -2768, -2768, -2768, -284, -284, -284, -284, 264, 264, 264, 264, },
{ -1907, -1907, -1907, -1907, -6576, -6576, -6576, -6576, -1333, -1333, -1333, -1333, },
{ -2787, -2787, -2787, -2787, -2222, -2222, -2222, -2222, 1078, 1078, 1078, 1078, },
},
{
{ 17278, 17278, 17278, 17278, 1136, 1136, 1136, 1136, -976, -976, -976, -976, },
{ -3596, -3596, -3596, -3596, 335, 335, 335, 335, -11414, -11414, -11414, -11414, },
{ -10642, -10642, -10642, -10642, -8146, -8146, -8146, -8146, -42, -42, -42, -42, },
{ -1286, -1286, -1286, -1286, -626, -626, -626, -626, 1415, 1415, 1415, 1415, },
{ -3309, -3309, -3309, -3309, -2694, -2694, -2694, -2694, -3776, -3776, -3776, -3776, },
{ -2461, -2461, -2461, -2461, -3889, -3889, -3889, -3889, -2859, -2859, -2859, -2859, },
},
{
{ 10217, 10217, 10217, 10217, -10258, -10258, -10258, -10258, -835, -835, -835, -835, },
{ 3431, 3431, 3431, 3431, -3551, -3551, -3551, -3551, -6685, -6685, -6685, -6685, },
{ -1138, -1138, -1138, -1138, -2845, -2845, -2845, -2845, 12088, 12088, 12088, 12088, },
{ -847, -847, -847, -847, -1156, -1156, -1156, -1156, 295, 295, 295, 295, },
{ -2479, -2479, -2479, -2479, -3801, -3801, -3801, -3801, -737, -737, -737, -737, },
{ -3460, -3460, -3460, -3460, -951, -951, -951, -951, -3323, -3323, -3323, -3323, },
},
{
{ -12046, -12046, -12046, -12046, 10279, 10279, 10279, 10279, -209, -209, -209, -209, },
{ 9790, 9790, 9790, 9790, -177, -177, -177, -177, -6841, -6841, -6841, -6841, },
{ -3332, -3332, -3332, -3332, 12423, 12423, 12423, 12423, -2475, -2475, -2475, -2475, },
{ -2864, -2864, -2864, -2864, -4263, -4263, -4263, -4263, -7763, -7763, -7763, -7763, },
{ -3309, -3309, -3309, -3309, -2744, -2744, -2744, -2744, -5688, -5688, -5688, -5688, },
{ 908, 908, 908, 908, -3477, -3477, -3477, -3477, -929, -929, -929, -929, },
},
};
const int8_t gdf_intra_error_table[GDF_TRAIN_QP_NUM][GDF_NET_LUT_IDX_INTRA_MAX * GDF_NET_LUT_IDX_INTRA_MAX * GDF_NET_LUT_IDX_INTRA_MAX] =
{
{ 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -2, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, -1, -1, -1, -2, -2, -2, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, -1, -2, -2, -2, -2, -2, -2, -1, -1, -1, 0, 0, 0, 0, 0, -1, -1, -2, -2, -2, -2, -2, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, -2, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -3, -2, -2, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, -2, -2, -2, -1, -1, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, -3, -2, -2, -2, -1, -1, -1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, -1, 0, -1, -1, -2, -2, -2, -1, -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -2, -2, -2, -2, -2, -1, -1, -1, 0, 0, 0, 0, 0, -1, -1, -1, -2, -2, -2, -2, -2, -1, -1, -1, 0, 0, 0, 0, 0, -1, -1, -2, -2, -2, -2, -2, -2, -1, -1, -1, 0, 0, 0, 0, 0, 0, -1, -2, -2, -2, -2, -2, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, -2, -2, -2, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, -2, -2, -2, -1, -1, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, -3, -3, -2, -2, -1, -1, -1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, -1, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, -1, -1, 0, -1, -2, -2, -2, -2, -1, -1, -1, -1, 0, 0, 0, -1, -1, -1, 0, -2, -2, -2, -2, -2, -2, -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -2, -2, -2, -2, -2, -1, -1, -1, 0, 0, 0, 0, 0, -1, -1, -1, -2, -2, -2, -2, -2, -1, -1, -1, 0, 0, 0, 0, 0, 0, -1, -1, -2, -2, -2, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -2, -2, -2, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -2, -2, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, -1, -1, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, -2, -2, -2, -2, -1, -1, -1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 1, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -2, -2, -2, -2, -2, -1, -1, -1, -1, 0, 0, -1, -1, -1, -1, -1, -2, -2, -2, -2, -2, -1, -1, -1, 0, 0, 0, -1, -1, -1, 0, -1, -2, -2, -2, -2, -1, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, -1, -2, -2, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -2, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -2, -2, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -2, -2, -1, -1, -1, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, -2, -2, -2, -2, -1, -1, -1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -2, -2, -2, -1, -1, -1, -1, 0, 0, -1, -1, -1, -1, -1, -1, -2, -2, -1, -1, -1, -1, -1, 0, 0, 0, -1, -1, -1, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -2, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -2, -1, -1, -1, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, -2, -2, -2, -2, -1, -1, -1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, -1, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, 0, 0, 0, -1, -1, -1, 0, 0, 0, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, -2, -1, -2, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, -1, -1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, -1, -1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, -1, -1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 0, 0, 0, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 0, 0, 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, -1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 0, 0, 0, 0, 0, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 0, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, },
{ -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -2, -2, -2, -1, -1, -1, -1, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -3, -3, -3, -3, -3, -2, -2, -2, -2, -2, -2, -2, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -2, -2, -3, -3, -3, -3, -3, -3, -3, -3, -3, -4, -4, -3, -3, -3, -2, -2, -3, -3, -3, -3, -3, -3, -3, -4, -4, -4, -4, -4, -3, -3, -2, -3, -3, -3, -3, -3, -3, -3, -4, -4, -4, -4, -3, -3, -3, -3, -2, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -2, -3, -2, -2, -2, -2, -2, -3, -3, -3, -3, -3, -3, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, -2, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -2, -2, -2, -2, -2, -2, -2, -1, -1, -1, -1, -1, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -3, -3, -3, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -3, -3, -3, -3, -3, -3, -3, -2, -2, -2, -2, -2, -2, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -2, -2, -2, -2, -2, -3, -3, -3, -3, -3, -3, -4, -3, -3, -3, -3, -2, -2, -2, -2, -2, -3, -3, -3, -3, -3, -3, -3, -3, -3, -2, -3, -2, -2, -2, -2, -2, -2, -2, -3, -3, -3, -3, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, -2, -2, -2, -2, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, -1, -1, 0, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -2, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -2, -2, -2, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1, -2, -2, -2, -2, -2, -2, -2, -2, -1, -1, -2, -2, -2, -2, -2, -2, -2, -2, -2, -3, -3, -3, -3, -3, -1, -2, -2, -2, -2, -2, -2, -2, -2, -3, -3, -3, -3, -3, -3, -3, -2, -2, -2, -2, -2, -2, -2, -2, -2, -3, -3, -3, -3, -3, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -3, -3, -3, -2, -2, -2, -2, -1, -1, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, -2, -2, -2, -2, -2, -2, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, -2, -1, -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -2, -2, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -2, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -2, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -2, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -2, -2, -2, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -2, -2, -2, -2, -2, -2, -1, -1, -1, -1, -1, -1, -1, -2, -2, -2, -2, -2, -3, -3, -3, -2, -1, -1, -2, -2, -2, -2, -2, -2, -2, -2, -3, -3, -2, -2, -2, -2, -1, -1, -1, -1, -2, -2, -2, -2, -2, -2, -2, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, -3, -3, -2, -2, -2, -2, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, -3, -2, -2, -2, -2, -2, -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -2, -2, -2, -2, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -2, -2, -2, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -2, -2, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -2, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -2, -2, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -2, -2, -2, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -2, -2, -2, -2, -2, 0, -1, -1, -1, -1, -1, -1, -1, -1, -2, -2, -2, -2, -1, -1, -1, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 1, 1, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 3, 4, 4, -3, -3, -3, -3, -2, -2, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, -3, -3, -3, -3, -2, -2, -2, -1, -1, 0, 0, 0, 0, -1, -1, -1, -3, -3, -3, -3, -2, -2, -2, -1, -1, -1, 0, 0, -1, -1, -1, -2, -3, -3, -3, -2, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1, -2, -2, -2, -2, -2, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1, -2, -2, -2, -2, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -2, -2, -3, -1, -1, -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -2, -2, -2, -3, -1, -1, -1, -1, -1, 0, 0, 0, -1, -1, -1, -1, -2, -2, -2, -2, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 2, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 3, 4, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 4, 4, -4, -3, -3, -3, -3, -2, -2, -1, -1, 0, 0, 0, 0, 0, 0, 0, -3, -3, -3, -3, -3, -2, -2, -1, -1, -1, 0, 0, 0, -1, -1, -1, -3, -3, -3, -3, -3, -2, -2, -1, -1, -1, 0, 0, -1, -1, -1, -1, -3, -3, -3, -3, -2, -2, -2, -1, -1, -1, -1, -1, -1, -1, -2, -2, -3, -3, -2, -2, -2, -2, -1, -1, -1, -1, -1, -1, -1, -2, -2, -2, -2, -2, -2, -2, -2, -1, -1, -1, 0, 0, -1, -1, -2, -2, -2, -2, -1, -1, -2, -1, -1, -1, 0, 0, 0, 0, -1, -1, -2, -2, -3, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -2, -2, -2, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 4, 4, -4, -4, -4, -3, -3, -3, -2, -1, -1, -1, 0, 0, 0, 0, 0, 0, -4, -4, -4, -3, -3, -3, -2, -1, -1, -1, 0, 0, -1, -1, -1, -1, -3, -3, -3, -3, -3, -3, -2, -2, -1, -1, 0, -1, -1, -1, -1, -1, -3, -3, -3, -3, -3, -2, -2, -1, -1, -1, 0, -1, -1, -1, -1, -1, -3, -3, -3, -3, -2, -2, -2, -1, -1, 0, 0, -1, -1, -1, -1, -2, -2, -2, -2, -2, -2, -2, -1, -1, 0, 0, 0, -1, -1, -2, -2, -2, -1, -1, -2, -2, -1, -1, -1, -1, 0, 0, 0, -1, -1, -2, -2, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -2, -2, -2, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 3, 4, -4, -4, -4, -3, -3, -3, -2, -2, -1, -1, -1, 0, 0, -1, -1, -1, -4, -4, -4, -3, -3, -3, -2, -2, -1, -1, 0, 0, -1, -1, -1, -1, -4, -4, -3, -3, -3, -3, -2, -2, -1, -1, 0, -1, -1, -1, -1, -1, -3, -3, -3, -3, -3, -2, -2, -1, -1, -1, 0, -1, -1, -1, -1, -1, -3, -3, -3, -3, -2, -2, -2, -1, -1, 0, 0, 0, -1, -1, -1, -1, -2, -2, -2, -2, -2, -2, -2, -1, -1, 0, 0, 0, 0, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, -1, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, -1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, -4, -4, -4, -3, -3, -3, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1, -4, -4, -3, -3, -3, -3, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1, -3, -3, -3, -3, -3, -2, -2, -1, -1, -1, 0, 0, -1, -1, -1, -1, -3, -3, -3, -3, -3, -2, -2, -1, -1, 0, 0, 0, 0, 0, -1, -1, -2, -2, -2, -2, -2, -2, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 3, -4, -4, -3, -3, -3, -3, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1, -4, -3, -3, -3, -3, -2, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1, -3, -3, -3, -3, -3, -2, -2, -1, -1, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, -2, -2, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 0, 2, 2, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, -4, -3, -3, -3, -3, -2, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1, -3, -3, -3, -3, -2, -2, -2, -1, -1, -1, -1, 0, 0, 0, -1, -1, -2, -2, -2, -2, -2, -2, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, -3, -3, -3, -3, -2, -2, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1, -2, -2, -2, -2, -2, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -3, -2, -2, -2, -2, -2, -1, -1, -1, -1, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, -2, -2, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -1, -1, -1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, },
{ -8, -8, -8, -8, -8, -8, -9, -9, -9, -9, -8, -8, -7, -7, -6, -3, -9, -9, -8, -8, -9, -9, -10, -10, -9, -9, -9, -8, -8, -8, -7, -5, -9, -9, -9, -9, -9, -10, -10, -10, -9, -9, -9, -8, -8, -8, -8, -7, -9, -9, -9, -9, -9, -9, -9, -9, -8, -8, -8, -8, -8, -8, -8, -8, -9, -8, -9, -9, -8, -8, -8, -7, -7, -7, -6, -7, -7, -8, -8, -8, -8, -8, -8, -8, -7, -7, -6, -6, -5, -5, -6, -6, -7, -8, -8, -8, -8, -7, -7, -7, -6, -5, -4, -4, -3, -4, -5, -6, -6, -7, -8, -8, -7, -6, -6, -5, -4, -3, -2, -2, -1, -2, -4, -5, -6, -7, -7, -8, -6, -5, -4, -3, -2, -1, 0, 1, 0, -1, -2, -4, -5, -6, -7, -7, -4, -3, -2, -1, 0, 1, 3, 3, 2, 1, -1, -3, -4, -5, -6, -7, -3, -2, 0, 1, 2, 4, 4, 4, 3, 2, 0, -1, -3, -4, -5, -6, -1, 0, 2, 3, 5, 5, 5, 5, 5, 3, 1, 0, -2, -3, -4, -5, 0, 2, 4, 6, 6, 6, 6, 6, 5, 4, 2, 0, -1, -2, -3, -3, 2, 4, 5, 7, 7, 7, 7, 7, 6, 5, 3, 1, 0, -1, -2, -3, 3, 5, 6, 7, 7, 7, 7, 7, 6, 6, 4, 2, 1, 0, -1, -2, 4, 6, 7, 7, 7, 7, 7, 7, 6, 6, 5, 4, 3, 2, 1, 1, -6, -6, -6, -6, -6, -6, -6, -7, -7, -7, -7, -6, -6, -5, -4, -2, -7, -6, -6, -6, -6, -7, -8, -8, -8, -8, -7, -7, -7, -6, -5, -4, -7, -6, -7, -7, -7, -8, -8, -8, -8, -8, -7, -7, -7, -7, -6, -6, -7, -6, -7, -7, -7, -7, -7, -7, -7, -7, -6, -6, -6, -7, -7, -7, -7, -6, -7, -7, -7, -7, -6, -6, -6, -6, -6, -6, -6, -6, -7, -7, -7, -6, -6, -6, -6, -6, -5, -5, -5, -5, -5, -5, -6, -6, -7, -7, -7, -6, -5, -5, -5, -5, -4, -3, -3, -3, -4, -5, -6, -6, -7, -7, -6, -6, -5, -4, -4, -3, -2, -1, -1, -2, -3, -5, -6, -6, -7, -7, -5, -4, -4, -3, -2, -1, 0, 1, 0, -1, -2, -4, -5, -6, -6, -6, -4, -3, -2, -2, 0, 1, 2, 2, 2, 0, -1, -3, -4, -5, -5, -6, -3, -2, -1, 0, 1, 3, 4, 4, 3, 1, 0, -2, -3, -4, -4, -5, -2, -1, 1, 2, 3, 4, 5, 5, 4, 2, 0, -1, -2, -3, -3, -4, -1, 0, 2, 4, 5, 5, 6, 5, 5, 3, 1, -1, -2, -2, -2, -3, 0, 2, 4, 5, 6, 6, 6, 6, 5, 4, 2, 0, -1, -2, -2, -2, 2, 4, 5, 6, 7, 6, 6, 6, 5, 5, 3, 1, 0, -1, -1, -2, 3, 5, 6, 6, 7, 6, 6, 6, 5, 5, 4, 3, 2, 1, 0, 0, -4, -4, -4, -5, -4, -5, -5, -5, -5, -6, -6, -5, -5, -4, -3, -1, -5, -5, -5, -5, -5, -6, -6, -6, -6, -7, -6, -6, -6, -5, -4, -3, -5, -5, -5, -6, -6, -6, -7, -7, -7, -7, -6, -6, -6, -5, -5, -5, -5, -5, -5, -5, -6, -6, -6, -7, -6, -6, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -6, -6, -6, -6, -6, -5, -5, -5, -5, -5, -6, -6, -5, -5, -5, -5, -5, -5, -5, -4, -4, -4, -4, -5, -5, -6, -6, -6, -5, -5, -5, -4, -4, -4, -3, -3, -3, -3, -4, -5, -5, -6, -6, -6, -5, -5, -4, -4, -4, -3, -2, -1, -1, -2, -3, -4, -5, -6, -6, -6, -5, -4, -3, -3, -2, -2, -1, 0, 0, -1, -2, -4, -5, -5, -5, -5, -4, -3, -3, -2, -1, 0, 2, 2, 2, 0, -1, -3, -4, -5, -5, -5, -3, -2, -1, 0, 0, 2, 3, 3, 3, 1, -1, -2, -3, -3, -4, -4, -2, -1, 0, 1, 2, 3, 4, 4, 3, 1, 0, -2, -2, -2, -3, -3, -1, 0, 1, 3, 4, 5, 5, 4, 4, 2, 0, -1, -2, -2, -2, -3, 0, 1, 3, 4, 5, 5, 5, 5, 4, 3, 1, -1, -2, -2, -2, -2, 1, 3, 4, 5, 5, 6, 5, 5, 4, 3, 2, 1, -1, -1, -1, -2, 2, 4, 5, 5, 6, 5, 5, 4, 4, 4, 3, 2, 1, 0, 0, -1, -3, -3, -3, -4, -3, -4, -4, -4, -4, -4, -5, -4, -4, -3, -2, -1, -4, -3, -4, -4, -4, -5, -5, -5, -5, -5, -5, -5, -4, -4, -3, -2, -4, -4, -4, -4, -5, -5, -6, -6, -6, -6, -6, -5, -4, -4, -4, -4, -4, -4, -4, -4, -5, -5, -6, -6, -6, -5, -5, -4, -4, -4, -5, -5, -4, -4, -4, -4, -4, -5, -5, -5, -5, -5, -4, -4, -4, -5, -5, -5, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -5, -5, -5, -4, -4, -4, -4, -4, -4, -3, -3, -3, -3, -4, -4, -5, -5, -5, -5, -5, -4, -4, -3, -3, -3, -2, -1, -1, -2, -3, -4, -5, -5, -5, -5, -4, -4, -3, -3, -2, -2, -1, 0, 0, -1, -3, -4, -4, -5, -5, -5, -4, -3, -2, -2, -1, 0, 1, 2, 1, 0, -2, -3, -4, -4, -4, -4, -3, -2, -2, -1, 0, 1, 2, 3, 2, 0, -1, -2, -3, -3, -3, -4, -2, -1, -1, 0, 1, 3, 3, 4, 3, 1, -1, -2, -2, -2, -3, -3, -2, -1, 0, 2, 3, 4, 4, 4, 3, 2, 0, -2, -2, -2, -2, -3, -1, 0, 2, 3, 4, 5, 5, 4, 3, 2, 0, -1, -2, -2, -2, -2, 0, 2, 3, 4, 5, 5, 5, 4, 3, 2, 1, 0, -1, -1, -1, -2, 1, 3, 4, 5, 5, 5, 4, 4, 3, 2, 1, 0, 0, 0, -1, -1, -2, -2, -3, -3, -3, -3, -3, -3, -3, -3, -4, -4, -3, -2, -2, -1, -2, -3, -3, -3, -4, -4, -4, -4, -5, -5, -5, -4, -3, -3, -2, -1, -3, -3, -3, -3, -4, -4, -5, -5, -5, -5, -5, -4, -3, -3, -3, -3, -3, -3, -3, -3, -4, -4, -5, -5, -5, -5, -4, -3, -3, -4, -4, -4, -3, -3, -3, -3, -4, -4, -4, -5, -5, -4, -3, -3, -4, -4, -4, -4, -3, -3, -3, -3, -3, -4, -4, -4, -4, -3, -3, -3, -4, -4, -4, -4, -4, -3, -3, -3, -3, -3, -3, -3, -2, -2, -3, -3, -4, -4, -4, -4, -4, -4, -3, -3, -3, -2, -2, -1, -1, -2, -3, -4, -4, -4, -4, -4, -4, -3, -3, -2, -2, -2, -1, 0, 0, -1, -3, -3, -4, -4, -4, -4, -3, -3, -2, -2, -1, -1, 0, 1, 1, 0, -2, -3, -3, -4, -4, -4, -3, -2, -2, -1, 0, 0, 2, 2, 2, 0, -1, -2, -2, -3, -3, -3, -2, -2, -1, 0, 1, 2, 3, 3, 2, 0, -1, -2, -2, -2, -3, -3, -2, -1, 0, 1, 2, 3, 4, 3, 2, 1, -1, -2, -2, -2, -2, -3, -1, 0, 1, 2, 4, 4, 4, 4, 3, 1, 0, -1, -1, -2, -2, -2, 0, 1, 2, 4, 4, 4, 4, 3, 2, 1, 0, 0, -1, -1, -2, -2, 1, 2, 3, 4, 4, 4, 4, 3, 2, 1, 0, 0, 0, -1, -1, -1, -1, -2, -2, -3, -2, -2, -2, -3, -3, -3, -3, -3, -2, -2, -1, 0, -1, -2, -2, -3, -3, -3, -3, -4, -4, -4, -4, -3, -2, -2, -2, -1, -2, -2, -2, -2, -3, -4, -4, -4, -5, -4, -4, -3, -2, -2, -3, -2, -2, -2, -2, -2, -3, -3, -4, -5, -5, -4, -3, -3, -3, -3, -3, -3, -2, -2, -2, -2, -3, -3, -3, -4, -4, -4, -3, -2, -3, -3, -3, -3, -3, -2, -2, -2, -2, -3, -3, -3, -4, -3, -2, -3, -3, -3, -3, -3, -3, -3, -2, -2, -2, -3, -3, -3, -2, -2, -2, -3, -3, -3, -3, -3, -3, -3, -3, -2, -2, -2, -2, -1, -1, -2, -2, -3, -3, -3, -4, -4, -3, -3, -2, -2, -2, -1, -1, 0, 0, -1, -2, -3, -3, -3, -3, -3, -3, -2, -2, -1, -1, -1, 0, 1, 1, -1, -2, -2, -3, -3, -3, -3, -2, -2, -1, -1, 0, 0, 1, 2, 1, 0, -1, -2, -2, -3, -3, -3, -2, -1, -1, 0, 0, 1, 2, 2, 1, 0, -1, -2, -2, -2, -2, -3, -2, -1, 0, 0, 2, 3, 3, 3, 2, 0, -1, -2, -2, -2, -2, -2, -2, -1, 0, 2, 3, 3, 3, 3, 2, 0, 0, -1, -1, -2, -2, -2, -1, 0, 2, 3, 3, 3, 3, 2, 1, 1, 0, -1, -1, -1, -2, -2, 0, 2, 3, 3, 3, 3, 3, 2, 1, 1, 0, -1, -1, -1, -1, -2, 0, -1, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -1, -1, 0, 0, -1, -1, -2, -2, -3, -2, -3, -3, -3, -3, -2, -2, -2, -1, -1, -1, -1, -1, -1, -2, -3, -3, -4, -4, -3, -3, -2, -2, -2, -2, -2, -1, -1, -1, -1, -2, -2, -3, -4, -4, -3, -2, -2, -2, -2, -2, -2, -1, -1, -1, -1, -1, -2, -2, -3, -4, -3, -2, -2, -2, -2, -2, -2, -2, -1, -1, -1, -1, -2, -2, -3, -3, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -1, -1, -2, -2, -2, -2, -2, -2, -2, -2, -2, -3, -3, -3, -2, -2, -2, -2, -1, -1, -1, -1, -1, -2, -2, -2, -3, -3, -3, -3, -2, -2, -1, -1, -1, -1, 0, 0, -1, -2, -2, -2, -3, -3, -3, -3, -2, -2, -1, -1, 0, 0, 1, 1, -1, -1, -2, -2, -2, -3, -3, -2, -2, -1, -1, 0, 0, 1, 1, 1, 0, -1, -2, -2, -2, -3, -3, -2, -1, -1, 0, 0, 1, 1, 1, 1, 0, -1, -2, -2, -2, -2, -3, -2, -1, -1, 0, 1, 2, 2, 2, 1, 0, -1, -1, -2, -2, -2, -2, -2, -1, 0, 1, 2, 2, 2, 2, 1, 0, 0, -1, -1, -2, -2, -2, -1, 0, 1, 2, 3, 2, 2, 1, 1, 0, 0, -1, -1, -1, -2, -2, 0, 1, 2, 3, 3, 3, 2, 1, 1, 0, 0, -1, -1, -1, -2, -2, 0, -1, -2, -2, -2, -1, -1, -2, -2, -2, -2, -1, -1, -1, 0, 0, 0, 0, -1, -1, -2, -2, -2, -2, -2, -2, -2, -1, -1, -1, -1, -1, 0, 0, 0, 0, -1, -1, -2, -2, -3, -2, -2, -1, -1, -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -2, -2, -2, -1, -1, -1, -2, -2, -2, -1, 0, 0, 0, 0, -1, -1, -2, -2, -1, -1, -1, -1, -2, -2, -2, -1, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -2, -2, -2, -1, -1, -1, 0, 0, -1, -1, -1, -1, -1, 0, -1, -1, -2, -2, -2, -2, -1, -1, -1, 0, 0, -1, 0, 0, 0, 0, -1, -1, -2, -2, -2, -2, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, -1, -1, -2, -2, -2, -2, -1, -1, -1, 0, 0, 0, 1, 1, 0, 0, -1, -2, -2, -2, -2, -2, -1, -1, 0, 0, 0, 0, 1, 1, 0, 0, -1, -1, -2, -2, -2, -2, -1, -1, 0, 0, 0, 1, 1, 1, 1, 0, -1, -1, -2, -2, -2, -2, -1, 0, 0, 0, 1, 1, 1, 1, 1, 0, -1, -1, -1, -2, -2, -2, -1, 0, 0, 1, 1, 1, 1, 1, 1, 0, -1, -1, -1, -2, -2, -1, -1, 1, 1, 2, 2, 2, 1, 1, 0, 0, -1, -1, -2, -2, -2, -1, 0, 1, 2, 2, 2, 1, 1, 0, 0, -1, -1, -1, -1, -2, -2, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, -1, -1, -1, -1, -2, -2, -2, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 1, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 1, 1, 1, 0, 0, -1, -1, -1, -1, 0, 0, -1, -1, -1, 0, 0, 0, 1, 1, 0, 0, 0, -1, -1, 0, 0, 0, -1, -1, -1, -1, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 0, 0, -1, -1, -1, -1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, -1, -1, -1, -1, -1, 0, 0, 0, 1, 1, 1, 2, 2, 1, 0, 0, -1, -1, -2, -1, -1, 0, 0, 0, 1, 1, 2, 2, 2, 1, 0, 0, -1, -1, -2, -1, -1, 0, 0, 0, 1, 1, 2, 2, 2, 1, 0, 0, -1, -1, -2, -2, -1, 0, 0, 1, 1, 2, 2, 2, 2, 1, 0, -1, -1, -1, -2, -2, -1, 0, 0, 1, 1, 2, 2, 2, 2, 1, 0, -1, -1, -1, -2, -2, -1, 0, 1, 1, 1, 2, 1, 1, 0, 0, -1, -1, -1, -2, -2, -1, 0, 1, 1, 2, 2, 1, 0, 0, 0, -1, -1, -1, -1, -2, -2, 0, 0, -1, -1, -2, -2, -2, -2, -1, -1, -1, -1, -1, -1, -1, 0, 1, 1, 0, 0, -1, -1, -2, -2, -2, -1, -2, -2, -1, -1, -1, 0, 1, 1, 1, 1, 1, 0, -1, -1, -1, -2, -2, -1, -1, -1, -1, 0, 1, 1, 1, 1, 1, 1, 0, -1, -1, -2, -1, -1, -1, -1, -1, -1, 1, 1, 1, 1, 1, 1, 1, -1, -1, -2, -1, -1, 0, 0, 0, -1, 0, 1, 1, 1, 1, 1, 1, 0, -1, -1, -1, 0, 0, 0, 0, -1, 0, 1, 1, 1, 1, 1, 1, 0, -1, -1, 0, 0, 0, 0, 0, -1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, -1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, -1, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 0, -1, -1, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 2, 1, 0, 0, -1, -1, -1, 0, 1, 1, 1, 2, 2, 3, 3, 3, 2, 1, 0, 0, -1, -1, -1, 0, 1, 1, 1, 2, 3, 3, 3, 3, 2, 1, 0, -1, -1, -1, -1, 0, 0, 1, 1, 2, 3, 3, 2, 2, 2, 0, -1, -1, -1, -1, -2, -1, 0, 1, 1, 2, 2, 2, 1, 1, 0, 0, -1, -1, -1, -2, -1, 0, 1, 1, 1, 1, 1, 0, 0, 0, -1, -1, -1, -1, -2, -2, 0, 0, -1, -1, -2, -2, -2, -2, -2, -1, -2, -2, -1, -1, -1, 0, 1, 1, 1, 0, -1, -1, -2, -2, -2, -2, -2, -2, -2, -1, -1, 0, 1, 1, 1, 1, 1, 0, -1, -2, -2, -3, -2, -2, -2, -1, -1, 0, 1, 1, 1, 1, 1, 1, 0, -1, -2, -2, -2, -2, -1, -1, 0, 0, 1, 1, 1, 1, 1, 1, 0, -1, -2, -2, -2, -1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, -1, -2, -2, -1, -1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 1, 0, -1, -1, -1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 2, 2, 2, 2, 1, 1, 1, 2, 1, 1, 0, 0, 0, 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 0, 0, 0, 1, 1, 2, 2, 2, 3, 3, 3, 3, 2, 2, 1, 1, 0, -1, 0, 0, 1, 2, 2, 2, 3, 4, 4, 4, 3, 2, 1, 0, 0, 0, -1, 0, 1, 2, 2, 3, 3, 4, 4, 3, 3, 1, 0, 0, 0, 0, -1, 0, 1, 1, 2, 3, 3, 3, 3, 3, 2, 1, 0, 0, 0, -1, -1, 0, 1, 1, 2, 2, 2, 2, 2, 2, 1, 0, 0, -1, -1, -1, -1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, -1, -1, -1, -1, -1, 1, 0, 0, -1, -2, -2, -2, -2, -2, -2, -2, -2, -2, -1, -1, 0, 1, 1, 1, 1, 0, -1, -2, -2, -3, -3, -3, -3, -2, -2, -1, 0, 1, 1, 1, 1, 1, 0, -1, -2, -3, -3, -3, -3, -3, -2, -1, 0, 2, 2, 2, 1, 1, 1, 0, -2, -3, -3, -3, -3, -2, -1, 0, 0, 1, 1, 2, 1, 2, 1, 0, -2, -3, -3, -3, -2, -1, 0, 0, 0, 2, 2, 2, 2, 2, 1, 1, -1, -2, -3, -2, -1, 0, 0, 0, 0, 1, 1, 2, 2, 2, 2, 1, 0, -2, -2, -1, 0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 2, 0, -1, -1, 0, 1, 1, 0, 0, 0, 1, 1, 2, 2, 3, 3, 3, 2, 1, 1, 2, 2, 2, 1, 1, 0, 1, 1, 2, 2, 3, 3, 3, 3, 2, 3, 3, 2, 2, 2, 1, 0, 1, 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 1, 1, 0, 0, 1, 2, 3, 3, 3, 3, 4, 4, 4, 3, 2, 1, 1, 1, 0, 0, 1, 2, 2, 3, 3, 4, 5, 5, 4, 3, 2, 1, 1, 0, 0, -1, 0, 1, 2, 3, 3, 4, 4, 4, 3, 3, 2, 1, 0, 0, 0, -1, 0, 1, 2, 2, 3, 3, 3, 3, 2, 2, 1, 0, 0, 0, -1, -1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, -1, -1, -1, -1, 1, 0, 0, -1, -2, -2, -3, -3, -3, -3, -3, -3, -2, -2, -1, -1, 1, 1, 1, 1, 0, -1, -2, -3, -3, -4, -4, -3, -3, -2, -1, -1, 2, 2, 2, 1, 1, 0, -1, -3, -4, -4, -4, -4, -3, -2, -1, 0, 2, 2, 2, 2, 2, 1, -1, -2, -4, -4, -4, -4, -2, -1, 0, 0, 2, 2, 2, 2, 2, 1, 0, -2, -3, -4, -4, -3, -1, 0, 0, 0, 2, 2, 3, 3, 2, 1, 0, -1, -3, -3, -3, -2, 0, 0, 1, 1, 2, 2, 3, 3, 3, 3, 1, -1, -2, -2, -1, 0, 1, 1, 1, 1, 2, 2, 3, 3, 3, 3, 2, 0, -1, -1, 0, 1, 1, 1, 1, 1, 2, 2, 3, 3, 3, 4, 3, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 3, 3, 3, 4, 4, 3, 2, 3, 3, 3, 2, 2, 2, 1, 2, 2, 3, 3, 4, 4, 4, 4, 4, 4, 4, 3, 2, 2, 2, 1, 1, 2, 3, 3, 4, 4, 4, 5, 5, 5, 4, 3, 2, 2, 1, 1, 0, 2, 3, 3, 3, 4, 5, 5, 5, 5, 4, 3, 2, 1, 1, 0, 0, 1, 2, 3, 3, 4, 4, 5, 5, 4, 4, 2, 1, 1, 0, 0, -1, 1, 2, 2, 3, 3, 3, 3, 3, 3, 2, 2, 1, 0, 0, 0, -1, 0, 1, 1, 2, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, -1, -2, -3, -3, -3, -3, -3, -4, -4, -3, -2, -2, -1, 2, 1, 1, 1, 0, -1, -3, -4, -4, -4, -4, -4, -4, -3, -2, -1, 2, 2, 2, 2, 1, 0, -2, -3, -5, -5, -5, -5, -4, -3, -2, -1, 3, 2, 2, 2, 2, 1, -1, -3, -4, -5, -5, -4, -3, -2, -1, 0, 3, 3, 3, 2, 2, 1, -1, -2, -4, -5, -4, -3, -2, -1, 0, 1, 3, 3, 3, 3, 3, 1, 0, -2, -3, -4, -3, -2, -1, 0, 1, 1, 3, 3, 3, 4, 4, 3, 1, -1, -2, -3, -2, -1, 1, 1, 1, 1, 3, 3, 4, 4, 4, 3, 2, 0, -1, -1, -1, 0, 1, 1, 1, 1, 3, 3, 4, 4, 4, 4, 3, 2, 1, 1, 2, 2, 3, 2, 2, 1, 3, 3, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 3, 4, 4, 4, 5, 4, 4, 4, 4, 4, 4, 3, 3, 2, 2, 2, 3, 4, 4, 5, 5, 5, 5, 5, 5, 5, 4, 3, 2, 2, 2, 1, 2, 3, 4, 4, 5, 5, 6, 6, 5, 5, 4, 3, 2, 2, 1, 0, 2, 3, 3, 4, 5, 5, 5, 5, 5, 4, 3, 2, 2, 1, 1, 0, 1, 2, 3, 3, 3, 4, 4, 4, 3, 3, 2, 2, 1, 1, 0, -1, 0, 1, 1, 2, 2, 2, 2, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, -1, -1, -2, -3, -4, -4, -4, -4, -5, -5, -4, -3, -3, -2, 2, 2, 1, 0, -1, -2, -3, -5, -5, -5, -5, -5, -4, -4, -3, -1, 3, 3, 2, 2, 1, -1, -2, -4, -5, -6, -6, -6, -5, -4, -3, -1, 4, 3, 3, 2, 2, 0, -2, -3, -5, -6, -6, -5, -4, -3, -1, 0, 5, 4, 4, 3, 2, 1, -1, -3, -4, -5, -5, -4, -3, -1, 0, 1, 5, 4, 4, 4, 3, 1, 0, -2, -3, -4, -4, -3, -1, 0, 1, 2, 4, 4, 4, 4, 4, 2, 1, -1, -2, -3, -2, -1, 0, 1, 2, 2, 4, 4, 5, 5, 4, 4, 2, 0, 0, -1, -1, 0, 1, 2, 2, 2, 4, 4, 5, 5, 5, 4, 3, 2, 1, 1, 2, 3, 3, 4, 3, 2, 4, 4, 5, 5, 5, 5, 4, 3, 3, 3, 4, 4, 4, 4, 3, 3, 4, 4, 5, 5, 5, 5, 5, 4, 4, 5, 5, 4, 4, 4, 3, 3, 3, 4, 5, 5, 6, 6, 5, 5, 5, 6, 5, 5, 4, 3, 3, 3, 2, 3, 4, 5, 5, 5, 6, 6, 6, 6, 5, 5, 4, 3, 3, 3, 1, 3, 4, 4, 5, 5, 6, 6, 6, 6, 5, 4, 4, 3, 3, 2, 0, 2, 3, 3, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 2, 2, -1, 0, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 0, -1, -2, -3, -4, -5, -5, -6, -6, -6, -6, -5, -4, -4, -3, 2, 2, 1, 0, -1, -3, -4, -5, -6, -6, -6, -6, -6, -5, -4, -3, 3, 3, 3, 2, 1, -1, -3, -5, -6, -7, -7, -7, -6, -5, -4, -2, 5, 4, 3, 3, 2, 0, -2, -4, -5, -6, -7, -6, -5, -4, -2, -1, 6, 5, 4, 3, 2, 1, -1, -3, -4, -5, -6, -5, -4, -2, -1, 0, 6, 6, 5, 4, 3, 2, 0, -2, -3, -4, -4, -3, -2, 0, 1, 2, 6, 6, 6, 5, 5, 2, 1, -1, -2, -3, -3, -2, 0, 1, 2, 3, 6, 6, 6, 6, 5, 4, 2, 0, 0, -1, -1, 0, 1, 2, 3, 3, 6, 6, 6, 6, 6, 5, 4, 2, 1, 0, 1, 3, 3, 4, 4, 3, 5, 6, 6, 6, 6, 6, 5, 4, 4, 3, 4, 5, 5, 5, 5, 5, 5, 6, 6, 6, 7, 6, 6, 5, 5, 5, 6, 5, 5, 5, 5, 5, 4, 5, 6, 6, 7, 7, 6, 6, 6, 7, 6, 6, 5, 5, 5, 5, 4, 5, 6, 6, 6, 6, 7, 7, 7, 7, 7, 6, 6, 5, 5, 5, 3, 4, 5, 5, 6, 6, 7, 7, 7, 7, 6, 6, 5, 5, 5, 4, 1, 3, 4, 4, 5, 5, 5, 6, 5, 5, 4, 4, 4, 4, 4, 4, -1, 1, 2, 3, 3, 3, 4, 4, 3, 3, 3, 2, 2, 2, 2, 2, },
{ -7, -12, -16, -17, -18, -18, -18, -18, -18, -18, -18, -18, -18, -17, -13, -10, -6, -10, -13, -14, -14, -14, -14, -13, -13, -14, -13, -13, -13, -11, -8, -5, -5, -8, -10, -11, -11, -10, -10, -10, -9, -9, -9, -9, -9, -7, -4, -2, -4, -7, -8, -8, -8, -8, -7, -7, -7, -7, -7, -7, -7, -6, -3, 0, -3, -6, -7, -7, -6, -6, -6, -6, -6, -6, -6, -5, -5, -4, -1, 1, -3, -4, -5, -5, -5, -5, -5, -5, -5, -4, -4, -3, -3, -2, 1, 3, -3, -3, -3, -4, -4, -5, -5, -4, -3, -2, -2, -1, -1, 0, 2, 5, -2, -2, -2, -3, -3, -4, -3, -3, -2, 0, 0, 1, 1, 2, 4, 7, -1, -1, -2, -2, -2, -2, -2, -1, 0, 2, 2, 3, 3, 4, 7, 9, 0, -1, -1, -1, -1, -1, 0, 1, 3, 4, 5, 5, 5, 6, 9, 11, 0, 0, 0, 1, 1, 0, 1, 3, 5, 6, 7, 7, 8, 9, 11, 13, 1, 1, 1, 2, 2, 3, 4, 6, 8, 9, 9, 10, 10, 12, 13, 16, 2, 2, 3, 3, 4, 6, 7, 9, 10, 12, 12, 12, 13, 14, 16, 18, 3, 3, 4, 5, 6, 8, 10, 12, 13, 14, 15, 15, 16, 17, 19, 20, 4, 4, 5, 7, 9, 11, 13, 15, 16, 17, 18, 18, 19, 20, 21, 22, 6, 6, 7, 9, 11, 13, 15, 17, 19, 20, 20, 21, 21, 23, 24, 24, -3, -7, -12, -14, -15, -15, -15, -16, -17, -17, -17, -17, -17, -17, -15, -12, -2, -6, -10, -11, -11, -12, -12, -12, -12, -13, -13, -13, -13, -12, -10, -7, -3, -6, -8, -9, -9, -9, -9, -9, -9, -9, -10, -10, -9, -8, -6, -4, -3, -6, -7, -8, -8, -8, -7, -7, -7, -7, -8, -8, -7, -6, -5, -2, -3, -5, -6, -7, -7, -6, -6, -6, -6, -6, -6, -6, -6, -5, -3, -1, -3, -5, -6, -6, -6, -5, -5, -5, -4, -4, -4, -4, -4, -3, -1, 1, -2, -4, -5, -5, -5, -4, -4, -4, -3, -3, -2, -2, -2, -1, 0, 2, -2, -3, -3, -4, -3, -4, -3, -3, -1, 0, 0, 0, 0, 1, 2, 3, -2, -2, -2, -3, -3, -3, -2, -1, 1, 2, 2, 2, 2, 2, 3, 5, -1, -1, -1, -2, -2, -1, 0, 1, 3, 4, 4, 4, 3, 3, 5, 7, 0, -1, -1, -1, -1, 0, 1, 3, 5, 6, 6, 5, 5, 6, 7, 9, 0, 0, 0, 1, 1, 2, 3, 5, 7, 7, 7, 7, 7, 8, 9, 11, 1, 1, 1, 2, 3, 4, 5, 7, 9, 9, 9, 9, 9, 10, 11, 13, 1, 1, 2, 3, 5, 6, 8, 9, 11, 11, 11, 11, 12, 13, 14, 16, 2, 2, 4, 5, 7, 9, 11, 12, 13, 14, 14, 14, 15, 16, 17, 19, 4, 4, 5, 7, 9, 11, 13, 15, 16, 16, 16, 17, 18, 19, 20, 22, -2, -4, -7, -10, -11, -12, -13, -14, -15, -16, -17, -17, -17, -17, -16, -13, -1, -4, -7, -8, -9, -10, -10, -11, -11, -12, -13, -13, -13, -12, -11, -9, -1, -4, -7, -8, -8, -8, -8, -9, -9, -10, -10, -11, -10, -9, -8, -6, -1, -4, -6, -7, -7, -7, -7, -7, -8, -8, -9, -9, -8, -7, -6, -4, -1, -4, -6, -6, -7, -7, -6, -6, -6, -7, -7, -7, -6, -5, -4, -2, -1, -4, -5, -6, -6, -6, -5, -5, -5, -5, -5, -4, -4, -3, -2, -1, -1, -4, -5, -5, -5, -5, -5, -4, -3, -3, -3, -3, -2, -2, -1, 0, -1, -3, -4, -4, -4, -4, -3, -3, -1, -1, 0, 0, -1, -1, 0, 1, -1, -2, -3, -3, -3, -3, -2, -1, 1, 1, 1, 1, 1, 0, 1, 2, -1, -2, -2, -2, -2, -1, 0, 1, 3, 3, 3, 3, 2, 2, 2, 4, 0, -1, -1, -2, -2, 0, 1, 3, 4, 5, 4, 4, 3, 3, 4, 5, 1, 0, 0, -1, -1, 1, 2, 4, 5, 6, 6, 5, 4, 5, 6, 7, 2, 0, 0, 0, 1, 2, 4, 6, 7, 7, 6, 6, 6, 7, 8, 10, 3, 1, 1, 2, 3, 4, 6, 8, 8, 8, 8, 8, 8, 9, 11, 12, 4, 1, 3, 4, 4, 6, 8, 10, 10, 10, 11, 11, 11, 12, 13, 15, 5, 3, 4, 5, 7, 9, 11, 12, 13, 13, 13, 14, 14, 15, 16, 18, -1, -3, -6, -7, -9, -10, -12, -13, -15, -16, -17, -17, -17, -17, -16, -16, -1, -3, -5, -7, -8, -9, -10, -11, -12, -13, -13, -14, -14, -13, -12, -12, 0, -3, -5, -6, -7, -8, -8, -9, -10, -11, -11, -12, -11, -11, -10, -9, 0, -2, -4, -6, -6, -7, -7, -8, -8, -9, -10, -10, -9, -9, -7, -7, 0, -2, -4, -5, -6, -6, -6, -6, -7, -8, -8, -8, -7, -6, -5, -5, 1, -2, -4, -5, -5, -5, -5, -5, -5, -6, -6, -5, -5, -4, -4, -4, 1, -1, -4, -5, -5, -4, -4, -4, -4, -4, -3, -3, -3, -3, -3, -3, 2, -1, -3, -4, -4, -3, -3, -2, -2, -1, -1, -1, -2, -2, -2, -2, 2, -2, -2, -3, -2, -2, -2, -1, 0, 1, 1, 0, 0, -1, -1, -1, 2, -1, -2, -2, -2, -1, 0, 1, 2, 2, 2, 1, 1, 0, 0, 1, 4, 0, -1, -2, -1, 0, 1, 3, 3, 3, 3, 2, 1, 1, 2, 2, 5, 1, -1, -1, -1, 1, 2, 4, 4, 4, 4, 3, 2, 2, 3, 4, 6, 2, 0, -1, 0, 2, 3, 5, 5, 5, 4, 4, 4, 4, 5, 6, 6, 2, 1, 1, 2, 3, 5, 6, 6, 6, 5, 5, 5, 6, 8, 9, 7, 3, 2, 2, 3, 5, 6, 7, 7, 7, 7, 7, 8, 9, 10, 11, 7, 5, 3, 4, 5, 7, 8, 9, 9, 10, 10, 10, 10, 12, 13, 14, 1, -2, -5, -7, -8, -9, -11, -13, -14, -16, -17, -18, -18, -17, -16, -16, 1, -1, -4, -6, -7, -8, -10, -11, -13, -14, -15, -15, -15, -14, -14, -14, 1, -1, -4, -5, -6, -7, -8, -9, -11, -12, -13, -13, -12, -12, -12, -12, 1, -1, -3, -4, -5, -6, -7, -8, -9, -10, -11, -11, -11, -10, -10, -10, 2, 0, -2, -4, -5, -5, -5, -6, -8, -9, -9, -9, -9, -8, -8, -8, 2, 0, -2, -3, -4, -4, -4, -5, -6, -7, -7, -7, -6, -6, -6, -7, 3, 1, -2, -3, -4, -4, -4, -4, -4, -5, -4, -4, -4, -4, -5, -6, 3, 1, -1, -3, -3, -3, -2, -2, -2, -2, -2, -3, -3, -3, -4, -5, 4, 2, -1, -2, -2, -2, -1, 0, 0, 0, -1, -2, -2, -2, -3, -3, 5, 2, -1, -2, -2, -1, 1, 1, 1, 1, 0, -1, -1, -1, -2, -2, 6, 3, 0, -1, -1, 0, 2, 2, 2, 2, 1, 0, 0, 0, -1, -1, 7, 4, 0, -1, -1, 1, 2, 3, 3, 2, 2, 1, 1, 1, 1, 1, 8, 5, 1, 0, 0, 2, 3, 3, 3, 3, 2, 2, 2, 2, 2, 3, 9, 6, 3, 0, 1, 3, 4, 4, 4, 4, 3, 3, 3, 4, 4, 5, 9, 7, 4, 1, 3, 4, 5, 5, 5, 5, 5, 5, 5, 6, 7, 8, 9, 8, 5, 3, 4, 5, 6, 6, 6, 6, 7, 7, 8, 8, 10, 10, 2, 0, -3, -4, -6, -8, -10, -12, -14, -15, -16, -17, -17, -16, -16, -16, 2, 0, -2, -3, -5, -7, -9, -11, -12, -14, -15, -15, -15, -15, -14, -14, 3, 0, -2, -3, -4, -5, -8, -9, -11, -12, -13, -13, -13, -13, -13, -14, 3, 1, -1, -2, -3, -5, -7, -8, -10, -11, -12, -12, -12, -12, -12, -13, 3, 1, -1, -2, -3, -4, -5, -7, -8, -9, -10, -10, -10, -10, -11, -11, 3, 2, 0, -2, -3, -4, -4, -5, -7, -8, -8, -8, -8, -8, -9, -9, 4, 2, 0, -1, -2, -3, -3, -4, -5, -6, -6, -6, -6, -7, -7, -8, 4, 3, 1, 0, -2, -3, -2, -3, -3, -3, -3, -4, -5, -5, -6, -7, 5, 4, 2, 0, -1, -1, -1, -1, -1, -2, -2, -3, -4, -4, -5, -6, 6, 4, 3, 1, -1, -1, 0, 0, 0, -1, -2, -2, -3, -3, -4, -5, 7, 6, 3, 1, -1, 0, 1, 1, 1, 0, -1, -1, -2, -2, -3, -4, 9, 7, 4, 1, 0, 1, 2, 2, 1, 0, 0, 0, -1, -1, -2, -2, 10, 7, 4, 2, 1, 2, 2, 2, 2, 1, 1, 0, 0, 0, 0, 0, 11, 8, 5, 3, 2, 2, 3, 3, 2, 2, 2, 2, 2, 2, 1, 2, 11, 9, 7, 4, 2, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 4, 11, 9, 7, 5, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 6, 7, 2, 0, -1, -2, -3, -6, -8, -10, -12, -14, -15, -15, -16, -15, -15, -15, 2, 0, -1, -1, -2, -4, -7, -9, -12, -13, -14, -15, -15, -14, -14, -14, 3, 1, 0, -1, -2, -3, -6, -8, -11, -12, -13, -13, -13, -13, -13, -14, 3, 2, 1, 0, -1, -2, -5, -7, -9, -11, -12, -12, -12, -12, -12, -13, 3, 2, 1, 0, -1, -2, -4, -6, -8, -9, -10, -10, -10, -11, -11, -11, 4, 2, 1, 0, -1, -2, -3, -5, -7, -8, -8, -8, -9, -9, -10, -10, 4, 2, 1, 1, 0, -2, -3, -4, -5, -6, -6, -7, -7, -8, -8, -9, 5, 3, 2, 1, 0, -1, -2, -3, -3, -4, -5, -5, -6, -7, -7, -8, 6, 5, 4, 3, 1, 0, -1, -1, -2, -3, -4, -4, -5, -6, -6, -7, 7, 6, 5, 4, 2, 0, 0, 0, -1, -2, -3, -4, -4, -5, -5, -6, 8, 7, 6, 5, 2, 1, 1, 1, -1, -2, -2, -3, -3, -4, -5, -5, 10, 8, 7, 5, 3, 2, 2, 1, 0, -1, -1, -2, -3, -3, -4, -4, 11, 9, 8, 6, 4, 2, 2, 1, 0, 0, -1, -1, -1, -2, -3, -4, 12, 10, 9, 7, 4, 3, 3, 2, 1, 0, 0, 0, 0, -1, -1, -2, 12, 11, 10, 8, 5, 4, 3, 2, 2, 1, 1, 1, 1, 1, 0, 0, 13, 11, 10, 8, 6, 4, 4, 3, 2, 2, 2, 2, 3, 2, 2, 3, 2, 0, 0, 0, -1, -2, -5, -8, -11, -12, -13, -13, -14, -14, -14, -14, 2, 1, 1, 0, 0, -1, -4, -7, -10, -12, -13, -13, -14, -14, -14, -14, 3, 2, 1, 1, 0, -1, -2, -5, -9, -11, -12, -13, -13, -13, -13, -13, 4, 2, 2, 1, 1, 0, -1, -4, -8, -10, -11, -11, -11, -12, -12, -13, 4, 3, 2, 2, 1, 0, -1, -2, -7, -9, -9, -10, -10, -11, -11, -11, 4, 3, 3, 2, 2, 1, 0, -2, -5, -7, -8, -8, -9, -9, -10, -10, 5, 3, 3, 2, 2, 1, 0, -1, -4, -6, -6, -7, -7, -8, -9, -9, 5, 4, 3, 3, 3, 2, 0, 0, -2, -4, -4, -5, -6, -7, -7, -8, 7, 6, 5, 4, 4, 3, 1, 0, -1, -3, -4, -4, -5, -6, -6, -7, 8, 7, 6, 5, 5, 3, 2, 1, -1, -2, -3, -4, -4, -5, -6, -6, 9, 8, 7, 7, 6, 5, 2, 1, 0, -2, -2, -3, -4, -4, -5, -5, 10, 9, 8, 8, 7, 5, 3, 2, 0, -2, -2, -3, -3, -4, -4, -5, 11, 10, 10, 9, 8, 6, 4, 2, 0, -1, -2, -2, -2, -3, -4, -4, 12, 11, 11, 10, 8, 6, 4, 2, 0, -1, -1, -1, -1, -2, -3, -3, 13, 12, 12, 10, 9, 7, 5, 2, 1, 0, 0, 0, 0, -1, -1, -1, 13, 12, 11, 10, 8, 7, 5, 3, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, -1, -1, -2, -5, -7, -9, -10, -11, -12, -13, -13, -14, 2, 1, 1, 1, 0, -1, -2, -3, -6, -9, -11, -12, -13, -13, -13, -14, 3, 2, 2, 1, 1, 0, -1, -2, -4, -8, -10, -11, -12, -13, -13, -14, 4, 3, 2, 2, 1, 0, -1, -2, -4, -6, -9, -10, -11, -12, -12, -13, 4, 3, 2, 2, 1, 1, 0, -2, -3, -6, -7, -9, -10, -11, -11, -11, 5, 3, 3, 2, 2, 1, 0, -1, -3, -4, -6, -7, -9, -10, -10, -10, 5, 4, 3, 3, 2, 1, 0, -1, -2, -3, -5, -6, -8, -9, -9, -9, 6, 5, 4, 4, 3, 2, 1, -1, -1, -2, -4, -5, -6, -7, -8, -8, 7, 6, 5, 5, 4, 3, 3, 0, 0, -2, -3, -4, -5, -6, -7, -7, 8, 7, 7, 6, 5, 5, 4, 1, 0, -1, -3, -3, -4, -5, -6, -6, 9, 8, 8, 7, 7, 6, 5, 2, 0, -1, -2, -3, -4, -4, -5, -6, 11, 10, 9, 9, 8, 7, 6, 2, 0, -1, -2, -2, -3, -4, -4, -5, 12, 11, 11, 10, 9, 8, 6, 3, 0, -1, -1, -2, -3, -3, -4, -4, 13, 12, 12, 11, 10, 9, 7, 4, 1, 0, -1, -1, -2, -3, -3, -3, 14, 13, 13, 12, 10, 9, 7, 4, 1, 0, 0, 0, -1, -2, -2, -3, 13, 13, 12, 12, 10, 9, 7, 5, 2, 1, 0, 0, -1, -1, -1, -2, 0, -1, -1, -1, -2, -2, -2, -3, -4, -5, -7, -8, -10, -12, -13, -14, 1, 0, 0, -1, -1, -2, -2, -2, -3, -4, -6, -9, -11, -13, -13, -14, 2, 1, 1, 0, 0, -1, -2, -2, -2, -3, -5, -8, -10, -12, -13, -14, 3, 2, 1, 1, 0, -1, -1, -2, -2, -3, -4, -6, -9, -11, -12, -13, 4, 3, 2, 1, 1, 0, -1, -1, -2, -2, -3, -5, -8, -10, -11, -12, 4, 3, 2, 2, 1, 0, 0, -1, -1, -1, -1, -5, -8, -10, -10, -11, 5, 4, 3, 2, 2, 1, 0, -1, -1, 0, -1, -4, -7, -9, -9, -10, 6, 5, 4, 3, 2, 2, 1, 0, 0, 0, -1, -4, -6, -8, -8, -9, 7, 6, 5, 4, 4, 3, 2, 2, 1, 1, -1, -3, -5, -7, -7, -8, 8, 7, 7, 6, 5, 5, 4, 3, 2, 1, 0, -2, -4, -6, -6, -7, 10, 8, 8, 8, 7, 6, 5, 4, 3, 1, -1, -2, -4, -5, -5, -6, 11, 10, 10, 9, 9, 8, 6, 5, 3, 1, 0, -2, -3, -4, -4, -6, 12, 12, 11, 11, 10, 9, 7, 6, 3, 1, 0, -1, -3, -3, -4, -5, 13, 13, 13, 12, 11, 10, 8, 6, 4, 2, 0, -1, -2, -3, -3, -5, 14, 14, 13, 13, 12, 11, 9, 7, 5, 2, 1, -1, -2, -2, -3, -4, 14, 14, 14, 13, 12, 11, 9, 7, 5, 3, 1, 0, -1, -2, -3, -3, -2, -3, -3, -3, -3, -3, -3, -3, -4, -4, -5, -7, -9, -11, -13, -14, -1, -2, -2, -2, -3, -3, -3, -3, -3, -3, -3, -5, -8, -11, -12, -14, 0, -1, -1, -1, -2, -2, -3, -3, -3, -3, -2, -3, -7, -10, -12, -13, 1, 0, 0, -1, -1, -2, -3, -3, -3, -2, -1, -2, -6, -9, -11, -13, 2, 1, 0, 0, -1, -2, -2, -3, -2, -2, -1, -1, -5, -8, -10, -12, 3, 2, 1, 0, 0, -1, -2, -2, -2, -1, 0, -1, -5, -7, -10, -11, 4, 3, 2, 1, 0, 0, -1, -2, -1, 0, 1, -1, -4, -7, -9, -11, 5, 4, 3, 2, 1, 0, 0, 0, 0, 1, 1, -1, -4, -6, -8, -10, 6, 5, 4, 3, 2, 2, 1, 1, 2, 2, 1, -1, -3, -5, -7, -9, 7, 6, 5, 5, 4, 4, 4, 3, 3, 2, 1, 0, -2, -4, -6, -8, 9, 8, 7, 7, 7, 6, 5, 5, 4, 3, 2, 0, -2, -4, -5, -7, 10, 10, 9, 9, 9, 8, 6, 6, 4, 3, 2, 0, -1, -3, -5, -6, 12, 11, 11, 11, 10, 9, 8, 7, 5, 3, 2, 1, -1, -2, -4, -6, 13, 13, 13, 12, 11, 10, 9, 7, 6, 4, 2, 1, -1, -2, -4, -5, 14, 14, 14, 13, 12, 11, 10, 8, 6, 4, 2, 1, -1, -2, -3, -5, 16, 15, 15, 14, 13, 12, 10, 9, 7, 5, 3, 1, 0, -2, -3, -4, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -6, -7, -9, -10, -12, -3, -4, -4, -4, -4, -4, -5, -5, -4, -4, -4, -4, -6, -9, -11, -12, -2, -2, -3, -3, -4, -4, -4, -4, -4, -3, -2, -2, -4, -8, -11, -12, -1, -1, -2, -2, -3, -4, -4, -4, -4, -3, -1, -1, -2, -7, -9, -12, 0, 0, -1, -2, -3, -3, -4, -4, -3, -2, 0, 0, -1, -6, -9, -11, 1, 0, -1, -1, -2, -3, -3, -3, -2, -1, 0, 1, -1, -5, -8, -11, 2, 1, 0, 0, -1, -2, -2, -2, -1, 0, 1, 1, -1, -4, -7, -10, 3, 2, 1, 1, 0, -1, -1, 0, 1, 1, 2, 1, -1, -4, -6, -9, 4, 3, 3, 2, 1, 1, 1, 1, 2, 3, 2, 1, -1, -3, -6, -9, 6, 5, 4, 3, 3, 3, 3, 3, 3, 3, 3, 1, 0, -2, -5, -8, 7, 6, 6, 6, 6, 6, 5, 5, 4, 4, 3, 2, 0, -2, -4, -7, 8, 8, 8, 8, 8, 7, 7, 6, 5, 4, 3, 2, 0, -1, -4, -6, 10, 10, 10, 10, 10, 9, 8, 7, 6, 5, 3, 2, 1, -1, -4, -6, 12, 12, 12, 12, 11, 10, 9, 8, 7, 5, 3, 2, 1, -1, -3, -5, 14, 14, 14, 13, 12, 11, 10, 9, 7, 5, 3, 2, 1, -1, -3, -5, 16, 16, 16, 15, 14, 13, 11, 10, 8, 6, 4, 2, 0, -1, -3, -5, -7, -7, -7, -7, -7, -7, -8, -7, -7, -7, -7, -7, -6, -7, -7, -8, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -5, -5, -6, -7, -8, -10, -5, -5, -5, -5, -5, -6, -6, -6, -5, -4, -3, -3, -4, -6, -8, -10, -3, -4, -4, -4, -5, -5, -5, -5, -4, -3, -2, -2, -2, -5, -8, -10, -2, -2, -3, -3, -4, -5, -5, -4, -3, -2, 0, 0, -1, -3, -6, -9, -1, -1, -2, -3, -3, -4, -4, -3, -2, -1, 1, 1, 0, -2, -6, -9, 1, 0, -1, -2, -3, -3, -3, -2, -1, 0, 1, 1, 1, -1, -5, -9, 2, 1, 0, 0, -1, -1, -1, 0, 1, 1, 2, 2, 1, -1, -5, -8, 3, 2, 2, 1, 1, 1, 1, 2, 2, 3, 3, 2, 1, -1, -4, -7, 4, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 1, 0, -3, -7, 5, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 3, 1, 0, -3, -7, 6, 6, 7, 7, 7, 7, 7, 6, 5, 5, 4, 3, 2, 0, -3, -6, 8, 8, 9, 9, 9, 9, 8, 7, 6, 5, 4, 3, 2, 0, -2, -6, 10, 10, 11, 11, 11, 10, 9, 8, 7, 6, 4, 3, 2, 0, -2, -5, 13, 13, 13, 13, 12, 11, 10, 9, 8, 6, 4, 3, 2, 0, -2, -5, 16, 16, 16, 15, 14, 13, 12, 11, 9, 7, 5, 3, 2, 0, -2, -5, -10, -10, -10, -11, -12, -12, -12, -12, -11, -11, -10, -8, -7, -6, -6, -6, -9, -8, -8, -9, -9, -10, -10, -9, -8, -8, -8, -8, -6, -6, -7, -7, -7, -7, -7, -7, -8, -8, -8, -7, -6, -5, -5, -5, -5, -5, -6, -8, -6, -6, -6, -6, -6, -7, -7, -6, -5, -3, -3, -3, -3, -4, -6, -8, -5, -5, -4, -5, -5, -5, -6, -5, -3, -2, -1, -1, -1, -2, -5, -8, -3, -3, -3, -4, -4, -4, -4, -3, -2, -1, 0, 0, 0, -1, -4, -7, -2, -2, -2, -3, -3, -3, -3, -2, 0, 1, 2, 2, 2, 0, -3, -6, 0, 0, -1, -1, -2, -2, -1, 0, 1, 2, 2, 2, 2, 1, -2, -6, 1, 1, 1, 0, 0, 1, 1, 2, 3, 3, 3, 3, 2, 1, -2, -6, 2, 2, 2, 2, 2, 3, 3, 3, 4, 4, 3, 3, 3, 1, -2, -6, 4, 3, 4, 4, 5, 5, 5, 5, 4, 4, 4, 4, 3, 2, -2, -6, 5, 5, 6, 6, 6, 7, 7, 6, 5, 5, 5, 4, 3, 2, -2, -6, 6, 7, 8, 8, 8, 8, 8, 7, 6, 6, 5, 4, 3, 2, -2, -6, 8, 9, 10, 10, 10, 10, 9, 8, 7, 7, 6, 4, 3, 2, -1, -5, 11, 12, 13, 12, 12, 11, 10, 9, 8, 7, 6, 5, 3, 2, -2, -6, 15, 16, 16, 15, 14, 13, 12, 11, 10, 8, 6, 4, 3, 1, -2, -6, -15, -15, -15, -15, -16, -16, -16, -15, -15, -13, -11, -9, -7, -6, -5, -6, -13, -13, -13, -13, -13, -14, -14, -13, -12, -11, -10, -8, -7, -5, -6, -6, -12, -11, -11, -11, -11, -12, -11, -10, -8, -7, -7, -7, -6, -4, -5, -6, -11, -10, -9, -9, -9, -9, -9, -7, -5, -4, -4, -5, -4, -3, -4, -5, -9, -8, -7, -7, -7, -7, -7, -5, -3, -2, -2, -2, -3, -2, -3, -5, -8, -7, -6, -6, -6, -5, -5, -3, -2, 0, -1, -1, -1, -1, -3, -5, -6, -4, -4, -4, -4, -4, -3, -2, 0, 1, 1, 1, 1, 0, -1, -4, -3, -3, -2, -2, -2, -2, -1, 0, 2, 3, 2, 3, 3, 2, 0, -3, -2, -1, 0, 0, 0, 0, 1, 2, 3, 3, 3, 4, 4, 2, 1, -3, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 4, 4, 4, 3, 1, -4, 0, 2, 3, 3, 4, 4, 5, 5, 5, 5, 5, 5, 4, 3, 1, -4, 2, 4, 5, 5, 6, 6, 7, 6, 6, 6, 6, 5, 5, 4, 1, -5, 4, 5, 7, 7, 8, 8, 8, 7, 7, 7, 6, 6, 5, 4, 1, -5, 5, 7, 8, 9, 9, 10, 9, 9, 8, 7, 7, 6, 5, 4, 1, -5, 9, 10, 11, 12, 12, 11, 11, 10, 9, 8, 7, 6, 5, 4, 0, -5, 13, 14, 15, 15, 14, 14, 13, 12, 11, 9, 8, 6, 5, 3, -1, -5, -20, -20, -19, -19, -19, -18, -18, -17, -16, -14, -12, -10, -7, -5, -4, -4, -18, -18, -17, -17, -17, -16, -16, -15, -13, -12, -10, -8, -7, -5, -4, -5, -17, -16, -15, -15, -15, -15, -14, -12, -10, -10, -9, -7, -6, -4, -3, -5, -15, -14, -13, -13, -13, -13, -12, -9, -7, -7, -6, -6, -5, -3, -2, -4, -14, -13, -12, -11, -11, -10, -9, -6, -4, -4, -4, -4, -3, -2, -1, -3, -12, -11, -10, -9, -8, -7, -6, -3, -2, -1, -2, -2, -1, -1, -1, -3, -10, -9, -8, -7, -6, -4, -3, -1, 0, 0, 0, 0, 0, 1, 0, -2, -8, -6, -5, -4, -3, -2, -1, 1, 2, 2, 2, 2, 2, 2, 1, -1, -6, -4, -2, -1, 0, 0, 1, 2, 4, 4, 3, 3, 3, 3, 2, 0, -4, -2, -1, 1, 2, 2, 3, 4, 5, 5, 5, 5, 5, 4, 3, 1, -1, 0, 1, 3, 3, 4, 4, 5, 6, 6, 6, 6, 6, 4, 4, 0, 0, 1, 3, 4, 5, 5, 6, 6, 7, 7, 7, 7, 6, 5, 4, -1, 1, 3, 5, 6, 7, 7, 8, 8, 7, 7, 7, 7, 7, 6, 4, -2, 3, 5, 6, 8, 9, 9, 9, 9, 8, 8, 8, 7, 7, 6, 4, -3, 6, 8, 10, 11, 11, 12, 11, 10, 10, 9, 8, 7, 7, 6, 3, -4, 11, 12, 13, 14, 15, 14, 13, 13, 11, 10, 9, 8, 7, 6, 1, -4, },
{ -26, -29, -31, -33, -34, -32, -30, -31, -30, -28, -27, -28, -30, -30, -26, -22, -21, -26, -29, -30, -29, -28, -26, -24, -24, -23, -22, -24, -27, -25, -22, -17, -16, -20, -26, -26, -25, -24, -22, -20, -19, -18, -20, -22, -24, -21, -17, -12, -13, -16, -21, -22, -21, -20, -18, -16, -15, -16, -18, -20, -21, -18, -13, -8, -10, -13, -17, -18, -17, -16, -15, -13, -12, -14, -16, -19, -18, -15, -10, -5, -8, -10, -12, -14, -13, -12, -11, -10, -10, -12, -15, -17, -16, -12, -7, -2, -6, -7, -9, -9, -9, -8, -7, -7, -8, -11, -14, -15, -13, -10, -5, -1, -4, -5, -6, -5, -5, -4, -3, -4, -6, -8, -11, -12, -11, -7, -3, 1, -1, -3, -3, -2, -1, 0, 0, -1, -4, -6, -9, -9, -7, -4, 0, 2, 2, 1, 1, 2, 2, 3, 2, 0, -3, -6, -8, -6, -4, -1, 0, 2, 5, 4, 4, 5, 5, 5, 4, 2, -1, -5, -6, -4, -2, 1, 2, 3, 8, 7, 7, 8, 8, 8, 6, 4, 0, -5, -6, -2, 0, 2, 4, 5, 11, 10, 10, 11, 10, 10, 8, 5, 1, -3, -5, -1, 1, 3, 4, 7, 15, 14, 14, 13, 13, 11, 9, 6, 2, -2, -3, 0, 2, 4, 6, 9, 20, 18, 18, 17, 15, 13, 10, 7, 1, -1, -1, 3, 6, 7, 10, 12, 25, 23, 22, 20, 17, 15, 11, 6, 0, -2, -1, 4, 7, 9, 12, 15, -27, -30, -33, -34, -35, -33, -31, -30, -28, -26, -24, -25, -27, -26, -23, -18, -23, -27, -30, -31, -31, -30, -27, -25, -23, -22, -21, -23, -25, -23, -19, -13, -19, -23, -27, -28, -27, -26, -24, -21, -20, -18, -19, -21, -22, -19, -16, -9, -15, -19, -24, -25, -24, -23, -21, -18, -16, -15, -17, -19, -19, -16, -12, -5, -11, -15, -20, -20, -20, -19, -18, -15, -13, -12, -15, -17, -16, -13, -8, -1, -9, -12, -15, -16, -16, -15, -14, -12, -10, -10, -13, -15, -13, -10, -5, 1, -7, -9, -11, -10, -10, -10, -9, -8, -7, -8, -12, -13, -11, -7, -2, 2, -5, -7, -7, -7, -6, -5, -5, -4, -4, -6, -10, -10, -8, -5, 0, 3, -3, -4, -4, -4, -3, -2, -1, 0, -2, -4, -8, -7, -5, -2, 2, 4, -1, -1, -1, -1, 0, 1, 2, 2, -1, -4, -6, -4, -2, 0, 2, 4, 2, 1, 1, 2, 3, 4, 4, 3, 0, -3, -4, -1, 1, 3, 4, 5, 4, 4, 4, 5, 6, 6, 6, 5, 2, -2, -3, 0, 2, 4, 6, 6, 7, 7, 7, 8, 9, 9, 8, 7, 3, -1, -2, 2, 3, 5, 7, 8, 11, 10, 11, 11, 11, 11, 10, 8, 4, 1, 0, 2, 4, 6, 8, 10, 16, 15, 15, 15, 14, 13, 11, 8, 4, 1, 2, 5, 7, 8, 10, 13, 22, 21, 20, 19, 18, 15, 12, 7, 2, 0, 3, 6, 8, 9, 13, 15, -29, -31, -34, -36, -35, -33, -30, -28, -26, -24, -22, -24, -25, -24, -20, -12, -25, -29, -31, -32, -32, -30, -27, -25, -23, -21, -20, -22, -22, -21, -16, -9, -22, -26, -28, -29, -29, -29, -25, -22, -20, -17, -18, -20, -20, -17, -12, -6, -18, -22, -25, -26, -26, -25, -24, -20, -17, -14, -16, -17, -17, -14, -8, -2, -14, -18, -21, -22, -22, -22, -21, -17, -14, -12, -14, -15, -14, -11, -5, 0, -11, -14, -17, -18, -18, -18, -17, -13, -11, -10, -12, -13, -12, -8, -2, 2, -9, -11, -11, -12, -12, -12, -11, -10, -8, -7, -10, -11, -9, -5, 1, 3, -7, -8, -8, -8, -8, -7, -6, -6, -4, -5, -8, -8, -6, -3, 3, 4, -5, -5, -5, -5, -4, -3, -3, -2, -1, -3, -5, -5, -3, 0, 3, 5, -3, -3, -3, -2, -2, -1, 0, 1, 0, -3, -5, -1, 0, 3, 4, 6, -1, -1, -1, 0, 1, 2, 3, 3, 1, -2, -3, 1, 3, 5, 5, 6, 1, 1, 2, 2, 3, 4, 5, 5, 3, -1, -2, 2, 4, 7, 7, 7, 4, 4, 4, 5, 6, 7, 7, 7, 4, 0, 0, 3, 5, 7, 8, 9, 7, 7, 8, 8, 9, 9, 9, 8, 5, 1, 2, 4, 6, 8, 9, 10, 12, 12, 12, 12, 12, 12, 11, 9, 5, 2, 4, 6, 8, 9, 11, 13, 18, 17, 17, 17, 16, 14, 13, 9, 4, 2, 4, 8, 9, 11, 13, 15, -30, -32, -34, -37, -34, -32, -29, -28, -25, -23, -20, -22, -22, -20, -15, -8, -27, -30, -32, -33, -33, -30, -27, -25, -22, -19, -18, -20, -19, -17, -12, -5, -24, -28, -29, -30, -30, -28, -25, -22, -20, -17, -16, -18, -17, -14, -9, -3, -20, -24, -26, -27, -27, -26, -24, -20, -17, -15, -15, -16, -15, -11, -6, -1, -17, -20, -22, -23, -23, -23, -22, -18, -15, -12, -14, -14, -12, -8, -3, 1, -13, -16, -18, -18, -19, -19, -18, -15, -12, -9, -12, -11, -9, -5, 0, 2, -11, -12, -13, -13, -14, -14, -13, -12, -9, -7, -10, -10, -7, -3, 2, 4, -9, -9, -9, -9, -9, -9, -8, -7, -5, -5, -8, -7, -4, 0, 4, 5, -7, -7, -6, -6, -5, -5, -4, -3, -1, -3, -4, -4, -1, 3, 4, 6, -4, -5, -4, -3, -3, -2, -1, 0, 1, -2, -3, 0, 3, 4, 5, 7, -2, -3, -2, -2, -1, 0, 1, 2, 2, -1, -2, 2, 6, 6, 7, 7, 0, -1, 0, 0, 1, 2, 3, 4, 3, 0, 0, 4, 7, 8, 8, 8, 2, 2, 2, 3, 4, 5, 6, 6, 4, 1, 1, 5, 8, 9, 10, 10, 5, 4, 5, 6, 6, 7, 8, 8, 5, 2, 3, 6, 8, 10, 11, 12, 9, 8, 9, 9, 10, 10, 10, 9, 6, 3, 4, 8, 9, 11, 12, 14, 15, 14, 14, 14, 14, 13, 12, 9, 5, 2, 5, 8, 10, 12, 14, 16, -30, -33, -34, -36, -34, -32, -29, -27, -23, -21, -18, -19, -17, -15, -10, -6, -28, -31, -32, -33, -32, -30, -27, -25, -21, -18, -16, -17, -15, -12, -7, -4, -26, -29, -30, -30, -30, -27, -25, -23, -19, -16, -15, -15, -13, -10, -4, -2, -22, -25, -27, -28, -27, -26, -23, -20, -17, -14, -14, -13, -11, -7, -2, 0, -18, -21, -23, -24, -24, -23, -21, -18, -15, -12, -12, -11, -9, -4, 0, 1, -15, -17, -19, -19, -20, -19, -19, -16, -12, -9, -11, -9, -7, -2, 1, 3, -12, -13, -14, -15, -15, -15, -14, -13, -9, -7, -9, -7, -4, 0, 3, 4, -10, -11, -10, -10, -10, -10, -9, -8, -6, -4, -7, -4, -2, 2, 4, 6, -8, -8, -7, -7, -6, -6, -5, -4, -2, -3, -2, -1, 1, 4, 5, 7, -6, -6, -5, -5, -4, -3, -3, -1, 0, -2, -1, 2, 5, 6, 6, 7, -4, -4, -4, -3, -2, -1, 0, 1, 1, -1, 0, 4, 7, 8, 8, 8, -2, -2, -2, -1, 0, 1, 2, 3, 2, 0, 2, 6, 9, 9, 10, 10, 0, 0, 1, 1, 2, 3, 4, 5, 4, 1, 3, 8, 10, 11, 11, 11, 3, 3, 3, 3, 4, 5, 6, 7, 5, 3, 5, 9, 11, 12, 13, 13, 7, 6, 6, 7, 7, 8, 9, 8, 6, 3, 6, 9, 12, 13, 15, 15, 12, 12, 11, 11, 11, 11, 11, 8, 5, 3, 7, 9, 12, 14, 15, 17, -28, -32, -35, -34, -34, -31, -29, -26, -22, -19, -15, -15, -13, -10, -7, -5, -27, -30, -33, -32, -31, -29, -27, -24, -20, -17, -14, -13, -11, -7, -4, -3, -25, -28, -30, -30, -29, -27, -25, -22, -18, -15, -13, -12, -9, -5, -2, -1, -22, -25, -27, -26, -26, -25, -23, -20, -16, -13, -12, -10, -7, -3, 0, 1, -18, -21, -23, -23, -23, -22, -21, -18, -14, -11, -10, -8, -5, -1, 1, 2, -15, -18, -19, -19, -19, -19, -18, -16, -12, -9, -9, -7, -3, 0, 2, 4, -13, -14, -15, -15, -15, -15, -14, -13, -10, -7, -7, -5, -1, 2, 3, 5, -11, -12, -12, -12, -11, -10, -9, -8, -6, -4, -4, -2, 1, 3, 5, 6, -8, -10, -9, -8, -7, -6, -6, -5, -3, -2, 0, 2, 4, 5, 6, 7, -7, -7, -6, -6, -5, -4, -3, -2, 0, -1, 2, 5, 7, 7, 7, 8, -5, -5, -5, -4, -3, -2, -2, 0, 1, 0, 4, 7, 9, 9, 9, 10, -3, -3, -3, -2, -2, -1, 0, 2, 2, 1, 5, 9, 11, 11, 11, 12, -1, -1, -1, 0, 0, 1, 2, 4, 3, 2, 7, 11, 12, 13, 13, 13, 1, 1, 1, 2, 2, 3, 4, 6, 4, 4, 8, 12, 14, 14, 15, 15, 5, 5, 5, 5, 5, 6, 7, 8, 5, 5, 8, 12, 14, 16, 17, 18, 10, 9, 9, 9, 9, 9, 10, 8, 5, 5, 8, 11, 13, 16, 18, 19, -26, -31, -33, -33, -32, -30, -28, -25, -20, -16, -11, -10, -9, -7, -6, -4, -25, -29, -31, -30, -30, -28, -26, -23, -18, -14, -11, -9, -7, -5, -3, -2, -22, -26, -28, -28, -27, -26, -24, -21, -17, -12, -9, -8, -5, -3, -1, 1, -19, -23, -25, -25, -24, -23, -22, -19, -15, -10, -8, -7, -3, -1, 1, 2, -16, -20, -21, -21, -21, -20, -19, -18, -13, -9, -7, -6, -2, 0, 2, 4, -14, -18, -18, -18, -18, -17, -17, -15, -11, -8, -7, -4, 0, 2, 3, 5, -13, -14, -15, -14, -15, -14, -13, -12, -9, -7, -5, -2, 1, 3, 4, 6, -11, -12, -12, -11, -10, -10, -8, -8, -5, -3, -2, 0, 3, 4, 6, 7, -9, -10, -10, -9, -7, -6, -6, -5, -3, -1, 2, 4, 6, 6, 7, 8, -7, -8, -7, -6, -5, -4, -4, -3, -1, 0, 5, 7, 9, 9, 9, 9, -6, -6, -6, -5, -4, -3, -2, -1, 1, 2, 7, 9, 10, 11, 11, 11, -4, -4, -4, -3, -3, -2, -1, 1, 2, 3, 8, 11, 12, 12, 13, 13, -2, -2, -2, -2, -1, 0, 1, 3, 3, 4, 10, 13, 14, 14, 15, 15, 0, 0, 0, 1, 1, 2, 3, 4, 4, 5, 11, 14, 16, 16, 17, 17, 4, 3, 3, 4, 4, 4, 5, 6, 5, 7, 11, 15, 17, 19, 19, 19, 8, 8, 7, 7, 7, 7, 8, 7, 5, 7, 11, 14, 17, 19, 20, 20, -26, -29, -31, -31, -30, -29, -26, -23, -19, -13, -9, -8, -7, -6, -5, -4, -23, -27, -29, -28, -28, -27, -25, -21, -16, -11, -8, -7, -5, -4, -2, -1, -21, -24, -26, -25, -25, -24, -23, -19, -14, -8, -6, -5, -3, -2, 0, 1, -17, -20, -22, -22, -22, -21, -20, -18, -12, -6, -5, -4, -2, 0, 1, 3, -15, -18, -19, -19, -19, -18, -18, -16, -10, -5, -4, -3, -1, 1, 3, 4, -13, -16, -16, -16, -16, -15, -15, -13, -7, -4, -3, -1, 1, 2, 4, 6, -12, -13, -13, -13, -13, -12, -12, -10, -5, -3, -2, 0, 2, 4, 5, 7, -11, -12, -11, -10, -10, -9, -7, -6, -2, 0, 0, 2, 4, 5, 7, 8, -9, -10, -9, -8, -7, -6, -5, -3, 0, 1, 4, 6, 7, 8, 8, 9, -8, -8, -7, -6, -5, -4, -3, -2, 1, 2, 6, 9, 10, 10, 10, 10, -6, -6, -6, -5, -4, -3, -2, 0, 2, 4, 8, 11, 12, 12, 13, 13, -4, -5, -4, -4, -3, -2, -1, 1, 3, 6, 10, 12, 13, 14, 14, 14, -3, -3, -2, -2, -1, 0, 1, 3, 4, 7, 11, 14, 15, 16, 16, 16, -1, -1, 0, 0, 1, 2, 3, 5, 5, 9, 13, 16, 17, 18, 18, 18, 3, 2, 2, 3, 3, 4, 5, 6, 6, 9, 14, 17, 19, 20, 21, 20, 7, 7, 6, 6, 6, 7, 7, 7, 7, 10, 14, 17, 19, 21, 21, 21, -24, -28, -30, -30, -29, -28, -26, -22, -17, -12, -8, -6, -6, -5, -5, -4, -22, -25, -27, -27, -27, -26, -24, -20, -15, -9, -6, -4, -4, -3, -2, -1, -19, -22, -24, -24, -23, -23, -22, -18, -13, -6, -5, -3, -2, -1, 0, 1, -16, -19, -21, -21, -20, -20, -19, -16, -11, -5, -4, -2, -1, 0, 2, 3, -15, -17, -19, -18, -18, -17, -16, -14, -9, -4, -3, -1, 0, 1, 3, 5, -13, -15, -16, -16, -16, -15, -14, -11, -7, -4, -2, 0, 1, 2, 4, 6, -11, -13, -13, -13, -13, -12, -11, -9, -4, -2, -1, 1, 2, 4, 6, 7, -10, -12, -11, -10, -9, -8, -7, -4, 0, 0, 2, 4, 4, 5, 7, 8, -9, -10, -9, -8, -7, -6, -4, -2, 1, 1, 5, 7, 8, 9, 9, 9, -8, -8, -7, -6, -5, -4, -2, 0, 2, 2, 7, 10, 11, 12, 11, 11, -6, -6, -6, -5, -4, -3, -1, 1, 2, 4, 9, 12, 13, 14, 14, 13, -5, -5, -4, -4, -3, -2, 0, 2, 3, 6, 10, 14, 15, 15, 15, 16, -3, -3, -3, -2, -1, 0, 1, 3, 4, 7, 12, 15, 17, 17, 17, 17, -1, -1, -1, 0, 1, 2, 3, 5, 5, 9, 13, 17, 19, 19, 19, 19, 2, 2, 2, 3, 4, 4, 6, 6, 6, 10, 15, 19, 21, 22, 22, 22, 6, 6, 6, 6, 6, 7, 7, 8, 7, 11, 16, 19, 22, 23, 23, 23, -23, -26, -28, -28, -28, -27, -24, -20, -16, -11, -6, -6, -6, -5, -4, -3, -20, -24, -25, -26, -25, -24, -22, -18, -13, -8, -5, -5, -4, -3, -2, -1, -17, -21, -23, -23, -22, -21, -20, -16, -12, -5, -3, -3, -2, -1, 0, 1, -15, -19, -21, -21, -20, -19, -17, -14, -10, -4, -2, -1, 0, 1, 2, 3, -14, -17, -18, -18, -18, -16, -15, -12, -8, -3, -2, 0, 1, 2, 4, 5, -12, -15, -16, -16, -15, -13, -12, -10, -5, -2, 0, 1, 2, 3, 5, 7, -11, -12, -13, -14, -13, -11, -10, -7, -2, 0, 1, 2, 3, 5, 6, 8, -10, -11, -11, -10, -9, -8, -6, -3, 1, 2, 3, 4, 5, 6, 8, 9, -8, -9, -9, -8, -7, -5, -3, 0, 3, 4, 7, 8, 9, 9, 10, 10, -7, -8, -7, -6, -5, -3, -1, 2, 4, 6, 10, 12, 13, 13, 13, 12, -6, -6, -6, -5, -4, -2, 0, 3, 5, 7, 11, 14, 16, 17, 16, 15, -5, -5, -4, -4, -3, -1, 1, 3, 5, 8, 12, 16, 18, 18, 18, 17, -3, -3, -3, -2, -1, 0, 2, 4, 5, 9, 13, 17, 19, 19, 19, 20, -2, -1, -1, 0, 0, 2, 3, 5, 6, 10, 14, 18, 20, 21, 21, 21, 1, 1, 2, 2, 3, 4, 5, 6, 7, 11, 16, 20, 23, 24, 23, 23, 5, 5, 5, 6, 7, 7, 7, 7, 8, 11, 17, 20, 23, 24, 25, 24, -21, -24, -26, -26, -26, -24, -21, -18, -15, -11, -8, -8, -7, -6, -5, -4, -19, -22, -23, -24, -23, -22, -19, -16, -13, -8, -7, -6, -5, -4, -3, -1, -16, -20, -21, -22, -21, -20, -17, -14, -11, -6, -5, -4, -3, -2, 0, 1, -15, -18, -19, -20, -19, -17, -15, -12, -9, -5, -3, -2, -1, 1, 2, 3, -13, -16, -17, -17, -16, -15, -13, -10, -6, -3, -2, 0, 1, 2, 4, 5, -12, -14, -15, -15, -14, -12, -10, -8, -4, -2, 0, 1, 3, 4, 5, 7, -10, -11, -12, -13, -11, -10, -8, -5, -1, 0, 2, 3, 4, 5, 7, 8, -9, -10, -10, -9, -8, -7, -4, -1, 2, 2, 4, 4, 6, 7, 8, 10, -8, -9, -9, -7, -5, -3, 0, 3, 4, 5, 7, 9, 9, 10, 10, 11, -7, -7, -7, -5, -3, -1, 1, 5, 6, 8, 11, 13, 13, 14, 14, 14, -6, -6, -6, -4, -2, 0, 3, 6, 7, 10, 13, 16, 18, 18, 18, 17, -5, -5, -4, -3, -1, 1, 4, 7, 8, 10, 15, 18, 20, 21, 20, 20, -3, -3, -2, -1, 0, 3, 5, 8, 9, 11, 16, 19, 21, 22, 23, 22, -1, -1, -1, 0, 2, 4, 7, 8, 9, 12, 16, 20, 22, 23, 24, 24, 1, 1, 2, 3, 4, 6, 9, 9, 10, 14, 18, 22, 24, 26, 26, 26, 5, 5, 5, 6, 7, 8, 9, 10, 11, 14, 19, 23, 25, 26, 27, 26, -19, -22, -24, -24, -24, -22, -18, -16, -13, -10, -10, -11, -10, -9, -8, -7, -17, -20, -21, -22, -22, -20, -17, -14, -12, -8, -9, -8, -7, -6, -4, -3, -15, -19, -20, -20, -19, -18, -15, -12, -10, -7, -7, -6, -5, -3, -1, 1, -13, -17, -18, -18, -17, -16, -13, -11, -8, -6, -5, -4, -2, -1, 1, 3, -12, -15, -16, -16, -15, -13, -10, -8, -5, -4, -3, -1, 0, 2, 4, 5, -10, -13, -14, -13, -13, -11, -8, -6, -2, -3, -1, 1, 2, 4, 6, 7, -8, -10, -11, -11, -10, -8, -6, -3, 0, -1, 1, 2, 4, 5, 7, 9, -7, -8, -8, -8, -7, -5, -2, 1, 1, 1, 2, 4, 5, 7, 8, 10, -7, -7, -7, -6, -4, -1, 2, 4, 4, 4, 7, 8, 9, 10, 10, 11, -6, -6, -5, -4, -2, 1, 4, 7, 6, 8, 11, 12, 13, 14, 14, 14, -5, -5, -4, -2, 0, 3, 6, 8, 8, 11, 14, 16, 17, 18, 18, 18, -4, -4, -3, -1, 1, 4, 8, 9, 10, 13, 16, 19, 21, 22, 22, 21, -3, -2, -1, 0, 3, 6, 9, 10, 11, 14, 17, 20, 23, 25, 25, 24, -1, 0, 1, 3, 5, 8, 11, 11, 12, 14, 18, 22, 24, 26, 27, 26, 1, 2, 3, 5, 8, 10, 12, 12, 14, 16, 20, 24, 27, 28, 28, 28, 5, 6, 7, 8, 10, 12, 13, 14, 15, 17, 21, 25, 27, 28, 29, 29, -17, -20, -21, -22, -21, -19, -16, -13, -11, -10, -11, -12, -13, -13, -11, -9, -15, -18, -19, -20, -19, -17, -15, -12, -10, -8, -10, -11, -10, -9, -7, -5, -14, -17, -17, -18, -17, -15, -13, -11, -8, -7, -9, -8, -7, -5, -3, -1, -12, -15, -15, -15, -15, -13, -11, -9, -6, -6, -7, -6, -4, -3, 0, 2, -10, -13, -13, -13, -13, -11, -9, -7, -4, -5, -5, -3, -2, 0, 3, 4, -9, -11, -12, -11, -10, -8, -6, -4, -2, -3, -2, -1, 1, 3, 5, 7, -7, -9, -9, -9, -8, -6, -4, -2, -1, -2, 0, 1, 3, 5, 7, 9, -6, -6, -6, -6, -5, -2, 0, 1, 1, 0, 1, 3, 5, 7, 9, 10, -6, -6, -5, -4, -2, 1, 3, 4, 3, 3, 6, 7, 8, 9, 10, 12, -6, -5, -3, -2, 0, 4, 6, 7, 5, 7, 10, 12, 13, 13, 14, 13, -4, -4, -3, -1, 2, 6, 8, 9, 8, 10, 14, 16, 17, 17, 18, 17, -3, -2, -1, 0, 4, 8, 10, 10, 10, 13, 16, 19, 21, 22, 22, 21, -2, -1, 0, 2, 6, 10, 11, 12, 12, 16, 18, 22, 23, 25, 26, 25, 0, 1, 2, 5, 8, 12, 13, 13, 14, 17, 20, 23, 26, 27, 28, 27, 3, 4, 5, 8, 12, 14, 15, 15, 16, 19, 22, 26, 28, 30, 30, 29, 6, 7, 9, 12, 15, 16, 16, 17, 18, 20, 23, 27, 29, 31, 31, 29, -15, -18, -19, -19, -18, -17, -15, -12, -10, -9, -11, -14, -15, -16, -15, -13, -13, -16, -17, -17, -16, -15, -13, -11, -9, -8, -10, -12, -13, -12, -10, -8, -12, -14, -15, -15, -14, -13, -11, -9, -7, -7, -9, -10, -9, -8, -6, -3, -10, -13, -13, -13, -12, -11, -9, -7, -6, -6, -8, -7, -6, -5, -2, 0, -9, -11, -11, -11, -10, -8, -7, -5, -4, -5, -6, -5, -4, -2, 1, 3, -7, -9, -9, -8, -7, -6, -5, -4, -2, -4, -4, -3, -1, 2, 4, 6, -6, -7, -7, -6, -4, -3, -2, -1, -1, -2, -1, 0, 2, 4, 6, 8, -5, -4, -4, -4, -2, 0, 1, 2, 1, 0, 0, 2, 4, 6, 8, 10, -4, -4, -3, -1, 1, 3, 4, 5, 3, 2, 4, 6, 7, 8, 10, 12, -4, -3, -2, 0, 3, 6, 7, 7, 5, 6, 9, 11, 12, 13, 13, 13, -3, -2, -1, 1, 5, 8, 9, 8, 7, 9, 13, 15, 17, 17, 17, 15, -2, -1, 0, 3, 7, 10, 10, 10, 10, 12, 16, 19, 20, 21, 21, 19, 0, 1, 2, 6, 10, 12, 13, 12, 12, 16, 19, 21, 24, 25, 24, 23, 1, 2, 5, 8, 12, 14, 15, 14, 15, 18, 21, 24, 26, 27, 28, 26, 3, 5, 8, 12, 15, 17, 18, 17, 19, 22, 25, 27, 30, 31, 31, 29, 7, 9, 13, 16, 19, 19, 19, 19, 20, 23, 26, 28, 31, 33, 33, 30, -14, -16, -16, -17, -16, -14, -13, -11, -10, -9, -12, -15, -17, -19, -19, -17, -11, -14, -14, -14, -14, -13, -11, -9, -8, -8, -10, -13, -15, -15, -14, -13, -10, -12, -12, -12, -11, -11, -9, -8, -7, -7, -9, -11, -12, -11, -9, -8, -8, -10, -10, -10, -9, -8, -7, -7, -6, -6, -8, -9, -8, -7, -4, -3, -7, -9, -9, -8, -7, -6, -5, -5, -4, -5, -7, -7, -6, -3, -1, 0, -5, -7, -6, -6, -5, -4, -3, -3, -3, -4, -5, -4, -3, 0, 2, 3, -4, -5, -4, -4, -2, -1, -1, 0, -1, -2, -2, -2, 0, 3, 5, 6, -3, -2, -2, -1, 0, 1, 2, 3, 1, 0, 0, 1, 3, 6, 7, 9, -2, -1, -1, 1, 3, 4, 5, 5, 3, 2, 3, 4, 6, 8, 9, 11, -2, -1, 0, 3, 5, 7, 8, 7, 5, 5, 8, 10, 11, 11, 12, 13, -2, 0, 1, 5, 8, 9, 10, 9, 7, 8, 12, 14, 16, 16, 15, 14, -1, 1, 4, 7, 10, 11, 11, 11, 10, 11, 15, 18, 20, 20, 19, 17, 1, 2, 6, 9, 12, 13, 14, 13, 12, 15, 18, 21, 24, 23, 22, 20, 2, 5, 9, 12, 15, 16, 16, 15, 15, 18, 21, 24, 26, 27, 25, 23, 5, 9, 14, 16, 18, 20, 19, 19, 19, 22, 26, 28, 30, 32, 30, 27, 10, 14, 18, 21, 22, 22, 22, 21, 22, 25, 28, 30, 33, 34, 33, 30, -12, -14, -14, -15, -14, -12, -11, -10, -10, -10, -12, -16, -19, -21, -22, -23, -10, -11, -12, -12, -11, -11, -9, -8, -8, -9, -11, -13, -16, -18, -19, -18, -8, -9, -10, -10, -9, -9, -8, -7, -6, -7, -9, -11, -14, -15, -14, -12, -6, -8, -8, -8, -7, -6, -6, -5, -5, -6, -7, -9, -11, -10, -9, -7, -5, -6, -6, -6, -5, -4, -4, -4, -4, -5, -6, -8, -7, -6, -4, -3, -3, -4, -4, -4, -3, -2, -2, -1, -2, -4, -5, -5, -5, -3, 0, 1, -2, -2, -2, -2, -1, 0, 0, 1, 0, -2, -3, -3, -2, 1, 3, 5, -1, 0, 0, 1, 2, 2, 3, 4, 2, 0, 0, 0, 2, 4, 7, 8, -1, 0, 2, 3, 4, 5, 7, 6, 4, 3, 2, 3, 5, 7, 10, 11, 0, 1, 3, 5, 7, 9, 10, 8, 6, 5, 7, 8, 9, 10, 12, 13, 0, 1, 4, 7, 9, 11, 12, 10, 8, 8, 10, 13, 14, 15, 14, 15, 1, 4, 7, 10, 12, 13, 13, 13, 11, 11, 14, 17, 19, 20, 17, 16, 2, 6, 10, 13, 14, 15, 15, 14, 14, 14, 17, 20, 23, 23, 20, 18, 5, 10, 13, 15, 17, 17, 18, 17, 16, 18, 21, 24, 26, 26, 24, 21, 9, 14, 17, 20, 21, 21, 21, 20, 20, 22, 26, 29, 30, 31, 29, 26, 14, 19, 23, 24, 25, 25, 24, 23, 22, 25, 28, 31, 33, 34, 32, 29, },
{ -53, -51, -49, -45, -41, -37, -32, -32, -34, -35, -38, -41, -41, -37, -30, -14, -50, -48, -46, -43, -39, -35, -31, -29, -31, -33, -35, -39, -39, -34, -26, -12, -46, -45, -43, -40, -37, -33, -29, -26, -28, -30, -33, -36, -36, -30, -22, -9, -43, -41, -39, -36, -33, -31, -27, -24, -26, -28, -31, -34, -32, -27, -19, -6, -39, -37, -34, -31, -29, -28, -26, -23, -25, -26, -28, -31, -29, -24, -17, -4, -35, -32, -29, -26, -24, -23, -23, -22, -23, -24, -26, -29, -26, -20, -14, -3, -30, -28, -24, -19, -18, -20, -20, -19, -20, -21, -24, -27, -24, -17, -12, -1, -25, -23, -20, -15, -14, -17, -17, -16, -16, -18, -21, -23, -19, -14, -8, 1, -20, -19, -17, -14, -13, -15, -15, -14, -12, -13, -16, -18, -15, -10, -4, 4, -15, -14, -14, -12, -12, -14, -15, -13, -11, -11, -12, -15, -12, -8, -1, 7, -8, -9, -10, -10, -10, -13, -14, -12, -10, -9, -10, -13, -10, -6, 4, 10, -1, -3, -5, -6, -8, -11, -12, -10, -8, -7, -8, -10, -9, -5, 6, 13, 4, 2, 0, -2, -5, -8, -10, -9, -7, -5, -5, -7, -7, -3, 8, 14, 7, 6, 5, 3, 0, -5, -7, -7, -5, -3, -1, -3, -3, -1, 8, 15, 11, 11, 9, 8, 5, 0, -3, -2, -1, 1, 4, 3, 2, 3, 8, 16, 15, 14, 12, 11, 9, 4, 2, 2, 4, 5, 8, 8, 6, 6, 10, 16, -47, -45, -43, -40, -35, -31, -27, -26, -30, -34, -38, -41, -39, -34, -26, -15, -44, -42, -40, -37, -33, -29, -25, -23, -28, -32, -36, -39, -36, -30, -22, -13, -41, -39, -36, -33, -30, -27, -24, -21, -27, -30, -34, -37, -33, -26, -19, -11, -37, -35, -32, -29, -27, -25, -22, -19, -25, -28, -32, -34, -29, -23, -16, -8, -33, -30, -28, -24, -21, -21, -21, -19, -23, -26, -30, -31, -26, -19, -13, -6, -29, -26, -22, -14, -11, -17, -18, -18, -20, -23, -28, -28, -22, -16, -11, -4, -25, -21, -14, -6, -5, -12, -16, -16, -18, -21, -25, -25, -18, -12, -8, -2, -19, -17, -10, -4, -4, -10, -13, -13, -14, -17, -21, -20, -14, -9, -4, 0, -15, -13, -10, -5, -5, -10, -12, -12, -11, -13, -17, -15, -10, -5, 0, 3, -10, -10, -8, -6, -6, -10, -12, -11, -10, -10, -14, -12, -8, -3, 4, 7, -4, -6, -6, -6, -6, -9, -11, -10, -9, -9, -11, -11, -7, -1, 7, 10, 1, 0, -3, -4, -4, -7, -9, -9, -8, -7, -9, -10, -6, 1, 10, 13, 5, 4, 1, -1, -2, -5, -8, -8, -6, -6, -7, -8, -4, 2, 12, 14, 9, 8, 5, 2, 1, -2, -6, -6, -5, -4, -4, -5, -2, 4, 14, 16, 12, 11, 9, 7, 4, 2, -2, -3, -2, 0, 1, 0, 1, 5, 15, 16, 16, 15, 13, 11, 9, 5, 1, 1, 2, 4, 6, 5, 5, 7, 15, 16, -41, -40, -38, -34, -30, -27, -23, -23, -30, -36, -39, -39, -36, -29, -20, -15, -38, -36, -34, -31, -28, -25, -21, -21, -28, -33, -37, -38, -32, -25, -18, -14, -35, -32, -29, -27, -25, -23, -20, -18, -26, -31, -35, -35, -29, -22, -16, -12, -31, -28, -25, -20, -20, -21, -19, -17, -24, -29, -33, -32, -25, -19, -14, -10, -27, -23, -17, -11, -12, -17, -18, -17, -22, -27, -31, -29, -21, -15, -11, -7, -22, -17, -7, -4, -6, -12, -16, -16, -19, -24, -28, -25, -17, -12, -9, -5, -18, -10, -4, 0, -2, -7, -14, -14, -17, -22, -25, -21, -14, -9, -5, -3, -13, -7, -2, 1, 0, -5, -11, -11, -13, -18, -21, -16, -10, -5, -2, 0, -9, -6, -3, 0, 0, -5, -10, -10, -10, -13, -16, -11, -6, -1, 1, 3, -6, -5, -3, -1, -1, -5, -9, -9, -9, -10, -13, -9, -3, 2, 5, 6, -3, -4, -3, -2, -1, -4, -8, -9, -8, -8, -11, -7, -1, 4, 9, 9, 2, -1, -1, -1, 0, -3, -7, -8, -7, -7, -9, -6, 0, 6, 11, 12, 7, 3, 1, 1, 1, -1, -6, -7, -6, -6, -8, -5, 2, 8, 14, 14, 9, 7, 4, 3, 3, 1, -4, -6, -4, -4, -6, -3, 3, 9, 15, 15, 13, 11, 8, 6, 6, 4, -1, -3, -2, 0, -1, 0, 5, 11, 17, 16, 16, 15, 12, 10, 9, 7, 2, -1, 1, 3, 4, 4, 7, 12, 17, 16, -36, -34, -31, -28, -25, -23, -20, -21, -33, -37, -37, -36, -31, -25, -17, -14, -32, -30, -26, -24, -23, -21, -19, -18, -30, -35, -36, -34, -28, -23, -15, -14, -29, -25, -21, -19, -20, -20, -18, -17, -28, -33, -35, -32, -25, -20, -14, -13, -25, -20, -15, -15, -16, -18, -17, -16, -25, -31, -33, -28, -22, -17, -12, -12, -20, -13, -10, -8, -11, -15, -16, -15, -23, -29, -31, -24, -19, -14, -11, -9, -15, -9, -4, -3, -6, -11, -14, -14, -20, -26, -27, -21, -15, -11, -8, -6, -10, -5, -2, 0, -2, -7, -12, -12, -17, -23, -23, -17, -11, -7, -5, -4, -7, -4, 0, 1, 0, -3, -9, -9, -12, -19, -18, -13, -7, -4, -2, 0, -5, -3, 0, 3, 2, -1, -6, -7, -8, -14, -13, -8, -3, 0, 2, 3, -3, -1, 0, 3, 3, 1, -4, -6, -7, -11, -10, -5, 0, 3, 5, 5, -1, 0, 1, 3, 4, 1, -3, -6, -6, -9, -8, -3, 2, 6, 9, 9, 1, 1, 2, 4, 4, 2, -2, -5, -5, -7, -7, -1, 4, 8, 11, 11, 6, 4, 4, 4, 5, 3, -1, -5, -4, -6, -6, 0, 7, 11, 13, 13, 9, 7, 5, 6, 6, 4, -1, -4, -3, -4, -5, 2, 8, 13, 15, 14, 13, 10, 8, 8, 8, 6, 2, -2, -1, 0, -2, 3, 10, 15, 16, 15, 16, 14, 12, 11, 11, 9, 5, 1, 2, 3, 3, 6, 12, 16, 17, 16, -30, -28, -25, -24, -21, -20, -18, -20, -33, -36, -35, -31, -26, -21, -16, -14, -26, -23, -21, -20, -19, -18, -16, -16, -31, -34, -33, -29, -25, -20, -15, -13, -22, -18, -16, -16, -17, -16, -14, -14, -29, -33, -31, -27, -23, -19, -14, -12, -17, -13, -12, -13, -14, -15, -14, -13, -27, -31, -29, -24, -20, -16, -12, -12, -13, -10, -9, -7, -10, -12, -13, -13, -25, -29, -26, -21, -17, -13, -11, -11, -10, -7, -5, -3, -5, -8, -11, -11, -22, -26, -23, -18, -13, -10, -9, -8, -8, -4, -2, -1, -2, -4, -8, -9, -18, -23, -19, -14, -9, -7, -6, -4, -6, -3, 0, 1, 0, -1, -4, -7, -13, -18, -15, -10, -6, -3, -2, -1, -3, -1, 1, 3, 3, 2, -1, -5, -9, -13, -10, -5, -2, 0, 2, 2, -1, 1, 4, 5, 5, 5, 1, -3, -7, -11, -7, -2, 1, 4, 5, 5, 1, 3, 5, 7, 6, 5, 2, -3, -6, -9, -5, 0, 4, 6, 8, 8, 3, 5, 6, 7, 7, 6, 2, -3, -5, -7, -3, 3, 7, 9, 10, 10, 7, 7, 7, 8, 8, 7, 3, -2, -3, -6, -1, 5, 9, 12, 12, 12, 10, 8, 8, 9, 9, 7, 3, -2, -2, -4, 0, 7, 12, 14, 14, 14, 12, 11, 10, 10, 10, 9, 5, 0, 0, -1, 1, 8, 14, 16, 16, 14, 16, 14, 13, 13, 12, 11, 7, 3, 3, 3, 4, 10, 15, 17, 17, 15, -24, -23, -22, -21, -19, -17, -16, -19, -32, -32, -30, -26, -23, -18, -14, -13, -20, -19, -18, -17, -16, -15, -14, -15, -30, -31, -28, -25, -22, -18, -13, -13, -17, -15, -15, -14, -13, -13, -12, -13, -27, -29, -27, -24, -21, -17, -13, -12, -13, -12, -11, -10, -11, -11, -11, -12, -26, -27, -25, -22, -19, -15, -12, -11, -11, -9, -7, -7, -8, -9, -10, -11, -24, -25, -22, -19, -15, -13, -11, -10, -10, -8, -5, -3, -5, -6, -9, -10, -22, -23, -19, -15, -12, -10, -9, -9, -8, -5, -3, -1, -2, -4, -7, -8, -19, -19, -16, -11, -8, -7, -7, -6, -5, -2, 0, 1, 0, 0, -3, -6, -14, -15, -11, -7, -5, -4, -3, -2, -1, 1, 3, 4, 4, 4, 1, -4, -9, -11, -7, -3, -1, 0, 1, 2, 1, 3, 5, 6, 6, 6, 3, -3, -7, -8, -4, 0, 2, 4, 4, 5, 4, 6, 7, 8, 8, 8, 5, -2, -5, -6, -1, 3, 5, 6, 7, 7, 6, 8, 9, 9, 9, 8, 5, -2, -4, -4, 1, 5, 8, 9, 9, 10, 8, 9, 10, 10, 10, 9, 6, -1, -2, -3, 4, 8, 10, 11, 11, 11, 11, 10, 11, 11, 11, 10, 6, 0, -2, -1, 5, 10, 13, 13, 13, 13, 13, 12, 12, 12, 11, 11, 8, 2, 1, 1, 7, 12, 15, 15, 15, 14, 15, 15, 14, 14, 13, 12, 10, 4, 3, 4, 9, 14, 17, 17, 16, 15, -20, -20, -19, -18, -17, -16, -14, -18, -27, -27, -25, -23, -20, -16, -14, -13, -17, -17, -16, -15, -15, -14, -12, -14, -25, -25, -24, -22, -19, -16, -13, -13, -15, -13, -12, -12, -12, -11, -10, -12, -23, -23, -23, -22, -19, -15, -13, -12, -13, -10, -9, -9, -9, -10, -9, -10, -21, -22, -21, -20, -17, -14, -12, -11, -11, -9, -7, -6, -7, -8, -9, -9, -20, -20, -19, -17, -14, -13, -10, -10, -9, -7, -5, -4, -5, -7, -8, -8, -19, -18, -16, -13, -11, -10, -9, -9, -7, -5, -3, -2, -3, -4, -5, -7, -17, -15, -13, -10, -8, -7, -7, -6, -4, -2, 0, 1, 0, -1, -2, -5, -13, -11, -8, -5, -5, -5, -4, -2, 0, 2, 4, 4, 4, 3, 1, -3, -8, -7, -4, -2, -1, -1, 0, 1, 3, 5, 7, 7, 7, 6, 4, -2, -6, -4, -1, 1, 3, 3, 3, 3, 5, 8, 9, 9, 9, 8, 5, -1, -4, -2, 2, 4, 5, 6, 6, 6, 7, 9, 10, 10, 10, 10, 6, 0, -2, 0, 5, 7, 8, 8, 8, 8, 9, 11, 12, 12, 11, 10, 7, 1, 0, 2, 7, 9, 10, 10, 11, 11, 11, 12, 13, 13, 12, 11, 8, 2, 1, 3, 9, 11, 12, 13, 13, 12, 13, 13, 14, 14, 13, 13, 10, 4, 3, 5, 10, 14, 14, 15, 14, 13, 16, 15, 15, 15, 15, 14, 12, 7, 6, 8, 12, 16, 16, 16, 15, 15, -18, -18, -18, -18, -17, -15, -13, -14, -21, -21, -22, -20, -18, -15, -13, -13, -15, -14, -14, -14, -14, -13, -11, -11, -18, -20, -21, -20, -18, -15, -13, -12, -13, -11, -11, -12, -12, -11, -8, -9, -16, -18, -20, -19, -17, -15, -12, -12, -12, -10, -9, -9, -10, -9, -7, -8, -15, -16, -18, -18, -16, -14, -11, -11, -10, -8, -7, -7, -8, -8, -7, -7, -13, -15, -16, -15, -14, -13, -10, -10, -9, -7, -5, -5, -6, -6, -5, -6, -13, -14, -13, -12, -11, -10, -8, -8, -7, -5, -4, -4, -3, -3, -4, -5, -11, -11, -10, -8, -7, -7, -7, -6, -3, -2, 0, 0, 0, 0, 0, -2, -8, -7, -6, -5, -5, -5, -4, -3, 1, 3, 4, 4, 4, 3, 3, -1, -5, -3, -2, -1, -2, -2, -1, 1, 4, 6, 7, 7, 7, 7, 5, 0, -2, 0, 1, 2, 1, 1, 1, 3, 6, 8, 9, 9, 9, 9, 6, 1, 1, 2, 3, 4, 4, 4, 4, 5, 8, 10, 11, 12, 11, 10, 8, 2, 2, 4, 6, 7, 7, 7, 6, 7, 10, 12, 13, 13, 13, 12, 9, 3, 3, 5, 8, 9, 9, 9, 9, 9, 12, 13, 14, 14, 14, 13, 10, 5, 5, 7, 10, 11, 11, 12, 12, 11, 14, 14, 15, 15, 15, 14, 12, 7, 7, 9, 13, 14, 14, 14, 13, 13, 16, 16, 16, 17, 16, 15, 14, 10, 9, 11, 14, 16, 16, 15, 14, 14, -16, -16, -17, -17, -16, -13, -10, -10, -17, -18, -20, -18, -15, -14, -12, -13, -14, -14, -14, -14, -13, -11, -8, -7, -14, -17, -19, -18, -16, -14, -12, -12, -12, -12, -11, -12, -11, -9, -5, -6, -11, -15, -18, -18, -16, -14, -11, -11, -11, -10, -9, -10, -10, -8, -4, -5, -9, -14, -16, -16, -15, -14, -11, -10, -10, -8, -8, -8, -8, -7, -4, -4, -9, -12, -14, -14, -13, -13, -10, -9, -9, -7, -7, -6, -6, -5, -3, -3, -7, -11, -11, -12, -11, -11, -8, -8, -6, -5, -5, -4, -3, -2, -1, -2, -6, -8, -9, -9, -8, -8, -6, -6, -3, -2, -1, -1, 0, 1, 2, 0, -3, -4, -5, -5, -6, -5, -5, -3, 2, 3, 4, 4, 4, 4, 6, 1, 0, -1, -1, -2, -3, -3, -1, 0, 5, 6, 7, 7, 7, 8, 9, 3, 2, 2, 2, 1, 0, -1, 0, 3, 8, 9, 9, 9, 9, 10, 10, 4, 3, 4, 4, 4, 3, 1, 2, 5, 10, 11, 12, 12, 12, 12, 11, 6, 5, 6, 6, 6, 6, 5, 4, 7, 12, 13, 14, 14, 14, 14, 12, 9, 6, 8, 9, 9, 8, 8, 7, 9, 13, 14, 15, 15, 15, 15, 13, 10, 7, 9, 11, 11, 11, 10, 10, 11, 15, 16, 16, 16, 16, 16, 15, 12, 9, 11, 14, 14, 13, 13, 12, 12, 16, 17, 18, 18, 18, 17, 17, 15, 12, 14, 16, 16, 16, 15, 14, 14, -15, -16, -16, -16, -13, -9, -6, -7, -14, -15, -17, -15, -14, -12, -11, -12, -14, -13, -14, -14, -11, -6, -3, -5, -12, -15, -16, -15, -14, -13, -11, -11, -13, -12, -12, -12, -9, -5, -1, -4, -10, -13, -15, -15, -14, -13, -11, -10, -12, -11, -10, -10, -8, -4, 0, -2, -8, -12, -15, -14, -14, -12, -10, -9, -10, -9, -9, -9, -6, -3, 0, -1, -6, -11, -13, -13, -13, -12, -9, -8, -9, -8, -7, -6, -4, -1, 1, -1, -5, -9, -10, -11, -11, -10, -8, -7, -7, -6, -5, -4, -2, 1, 3, 0, -4, -7, -8, -9, -9, -8, -6, -5, -3, -2, -2, -1, 1, 4, 6, 2, 0, -4, -5, -6, -6, -6, -4, -3, 2, 2, 3, 4, 5, 7, 10, 3, 2, 0, -2, -3, -4, -3, -2, 0, 5, 6, 7, 7, 8, 11, 14, 6, 4, 3, 1, -1, -2, -1, 0, 3, 8, 9, 9, 9, 11, 13, 16, 10, 5, 5, 4, 2, 0, 0, 2, 5, 10, 11, 12, 12, 14, 15, 17, 13, 6, 7, 6, 5, 4, 2, 4, 7, 12, 13, 14, 15, 16, 16, 18, 14, 7, 9, 9, 9, 7, 5, 6, 9, 14, 15, 16, 17, 18, 18, 18, 16, 9, 11, 11, 11, 10, 9, 9, 11, 15, 17, 18, 18, 19, 19, 20, 17, 11, 12, 14, 14, 13, 13, 12, 12, 17, 18, 19, 20, 20, 21, 22, 20, 15, 15, 17, 17, 17, 16, 15, 15, -15, -16, -16, -15, -9, -5, -3, -6, -11, -13, -15, -14, -12, -11, -10, -10, -14, -14, -14, -12, -7, -2, 0, -4, -9, -12, -13, -14, -13, -12, -10, -10, -13, -12, -12, -10, -6, 0, 2, -2, -8, -11, -12, -13, -13, -12, -10, -9, -12, -11, -10, -9, -4, 1, 3, -2, -7, -10, -12, -12, -13, -12, -10, -8, -10, -10, -9, -7, -3, 2, 4, -1, -6, -10, -10, -11, -11, -11, -9, -7, -9, -8, -7, -5, -1, 2, 5, 0, -4, -8, -9, -10, -10, -10, -7, -5, -7, -6, -5, -3, 1, 4, 7, 1, -3, -7, -8, -9, -9, -8, -6, -4, -3, -2, -2, 0, 3, 6, 9, 3, 0, -4, -6, -7, -7, -6, -5, -3, 2, 2, 3, 5, 7, 10, 14, 4, 4, 1, -3, -5, -5, -4, -2, 1, 5, 6, 7, 8, 10, 14, 18, 8, 5, 4, 0, -2, -2, -2, 0, 3, 8, 9, 10, 10, 13, 18, 20, 11, 7, 6, 3, 0, -1, 0, 2, 5, 11, 11, 12, 13, 16, 20, 22, 15, 8, 9, 7, 4, 2, 2, 4, 7, 13, 14, 15, 17, 18, 21, 23, 18, 9, 11, 10, 7, 6, 4, 6, 9, 14, 16, 18, 19, 20, 22, 24, 20, 10, 12, 13, 11, 10, 8, 9, 11, 15, 18, 19, 20, 22, 23, 25, 22, 12, 14, 15, 14, 14, 13, 13, 13, 17, 19, 20, 22, 23, 25, 28, 25, 16, 16, 18, 18, 17, 16, 15, 16, -16, -16, -15, -10, -5, -1, -2, -3, -8, -12, -13, -12, -11, -10, -9, -9, -14, -14, -13, -8, -3, 2, 1, -2, -6, -10, -12, -12, -11, -10, -9, -9, -13, -12, -11, -7, -1, 4, 3, -1, -5, -8, -11, -12, -11, -11, -9, -8, -12, -11, -10, -5, 0, 5, 4, 0, -4, -7, -10, -11, -12, -11, -9, -7, -10, -9, -8, -4, 1, 6, 6, 0, -3, -6, -8, -10, -11, -10, -8, -6, -9, -8, -6, -2, 2, 7, 7, 1, -3, -5, -7, -9, -10, -9, -7, -5, -7, -6, -4, 0, 4, 8, 9, 2, -2, -5, -6, -7, -8, -8, -6, -3, -3, -2, -1, 2, 6, 10, 11, 4, 0, -3, -5, -6, -7, -6, -4, -2, 2, 3, 4, 7, 10, 14, 15, 6, 4, 1, -3, -5, -6, -5, -2, 2, 5, 6, 7, 10, 13, 18, 19, 10, 7, 5, -1, -3, -4, -2, 1, 5, 8, 9, 11, 13, 17, 22, 22, 13, 8, 8, 4, -1, -1, 0, 3, 6, 11, 12, 13, 15, 20, 25, 25, 16, 10, 11, 8, 3, 1, 2, 5, 8, 13, 14, 16, 18, 22, 26, 27, 19, 11, 13, 12, 8, 5, 5, 7, 10, 15, 16, 18, 21, 23, 27, 28, 21, 12, 14, 14, 12, 10, 9, 11, 13, 16, 18, 20, 22, 24, 27, 29, 23, 14, 16, 17, 16, 14, 13, 14, 15, 17, 20, 21, 23, 25, 29, 31, 26, 16, 17, 19, 19, 18, 17, 17, 17, -18, -16, -12, -6, 0, 1, -1, -2, -5, -9, -11, -10, -9, -9, -8, -9, -17, -14, -10, -4, 2, 4, 1, -1, -3, -8, -10, -10, -10, -9, -9, -8, -15, -13, -8, -2, 4, 6, 4, 0, -2, -6, -10, -11, -10, -10, -9, -7, -13, -11, -6, -1, 5, 7, 5, 1, -1, -4, -8, -10, -11, -10, -8, -6, -11, -9, -6, 0, 6, 9, 6, 2, 1, -3, -7, -9, -10, -9, -8, -5, -10, -8, -4, 1, 6, 10, 7, 3, 1, -2, -6, -8, -9, -8, -6, -3, -8, -6, -2, 3, 8, 11, 8, 4, 2, -1, -5, -7, -8, -7, -4, -2, -3, -2, 1, 5, 10, 13, 11, 6, 4, 0, -4, -6, -6, -6, -3, 0, 2, 3, 6, 9, 14, 18, 15, 8, 7, 3, -3, -5, -6, -4, -1, 4, 5, 6, 9, 12, 18, 22, 19, 12, 9, 7, 0, -4, -4, -2, 2, 7, 8, 9, 12, 15, 21, 26, 22, 15, 10, 11, 5, -1, -2, 0, 5, 9, 10, 11, 15, 18, 25, 29, 25, 17, 12, 13, 10, 4, 2, 4, 8, 11, 13, 14, 17, 21, 27, 31, 27, 19, 13, 15, 14, 10, 6, 8, 11, 14, 15, 15, 19, 23, 28, 32, 29, 21, 14, 16, 17, 14, 11, 11, 15, 17, 16, 18, 22, 25, 28, 32, 30, 23, 15, 17, 19, 18, 16, 16, 18, 19, 18, 20, 23, 26, 28, 32, 32, 25, 16, 18, 20, 21, 20, 20, 21, 22, -18, -15, -8, -1, 2, 1, -1, 0, -2, -6, -8, -8, -8, -8, -8, -8, -17, -13, -6, 2, 6, 4, 2, 1, -1, -4, -8, -8, -9, -9, -8, -7, -16, -12, -5, 3, 8, 7, 4, 2, 1, -3, -7, -9, -10, -9, -8, -6, -14, -9, -3, 4, 8, 9, 6, 3, 2, -1, -6, -9, -10, -9, -7, -4, -12, -8, -2, 4, 9, 10, 7, 4, 4, 1, -4, -8, -9, -8, -5, -2, -10, -6, 0, 5, 10, 11, 8, 5, 5, 2, -3, -7, -8, -6, -2, 1, -8, -4, 2, 6, 12, 12, 9, 7, 6, 3, -2, -6, -7, -3, 0, 3, -3, -1, 4, 8, 13, 14, 11, 8, 7, 4, -2, -5, -5, -1, 2, 6, 1, 4, 8, 13, 17, 19, 14, 10, 10, 6, -1, -4, -4, 0, 5, 10, 4, 8, 12, 16, 22, 23, 18, 13, 12, 9, 2, -2, -2, 3, 8, 13, 6, 10, 14, 19, 25, 26, 22, 17, 14, 13, 6, 1, 0, 6, 11, 16, 9, 12, 16, 22, 28, 29, 24, 19, 14, 15, 12, 6, 5, 10, 15, 19, 11, 14, 19, 25, 31, 31, 26, 19, 15, 17, 16, 12, 11, 14, 19, 22, 13, 17, 22, 27, 33, 33, 27, 21, 15, 18, 18, 17, 14, 17, 22, 24, 15, 19, 24, 29, 35, 34, 28, 22, 15, 18, 21, 20, 19, 20, 25, 27, 18, 22, 26, 29, 34, 35, 30, 24, 17, 20, 23, 24, 24, 24, 27, 27, -18, -10, -2, 3, 3, 1, 0, 1, 1, -3, -6, -6, -7, -7, -7, -6, -16, -8, 1, 6, 7, 4, 2, 2, 2, -1, -6, -7, -7, -8, -7, -5, -15, -6, 2, 8, 9, 7, 5, 4, 4, 1, -4, -7, -8, -8, -6, -2, -13, -4, 3, 9, 11, 9, 7, 5, 5, 2, -2, -7, -8, -6, -2, 1, -11, -3, 4, 9, 12, 11, 8, 6, 6, 4, -1, -6, -6, -2, 1, 4, -9, -1, 5, 10, 13, 12, 9, 7, 8, 6, 0, -5, -3, 1, 4, 7, -7, 1, 6, 11, 13, 12, 10, 8, 9, 7, 2, -2, 0, 4, 7, 9, -2, 4, 8, 12, 15, 14, 11, 9, 10, 9, 4, -1, 2, 6, 9, 12, 2, 7, 13, 17, 20, 19, 15, 12, 13, 11, 3, 1, 5, 9, 14, 16, 5, 10, 16, 21, 24, 23, 19, 15, 16, 14, 5, 3, 8, 14, 18, 20, 7, 12, 18, 24, 27, 25, 21, 18, 17, 15, 10, 6, 11, 18, 22, 23, 9, 14, 21, 27, 30, 28, 24, 20, 16, 18, 15, 12, 15, 22, 26, 26, 11, 16, 23, 30, 32, 30, 25, 21, 16, 20, 19, 17, 19, 25, 29, 29, 13, 19, 26, 33, 35, 32, 26, 22, 18, 21, 21, 20, 21, 27, 31, 32, 15, 22, 30, 36, 38, 34, 27, 23, 19, 22, 24, 23, 25, 29, 33, 34, 17, 24, 33, 39, 39, 36, 29, 25, 21, 23, 27, 27, 29, 31, 34, 34, -17, -3, 3, 4, 3, 0, 2, 3, 3, 0, -3, -4, -5, -6, -5, -3, -15, -1, 6, 8, 6, 4, 3, 4, 5, 2, -2, -4, -5, -5, -2, 1, -14, 1, 8, 10, 9, 7, 6, 5, 6, 4, 0, -5, -5, -2, 2, 5, -12, 3, 9, 12, 12, 10, 8, 6, 8, 6, 2, -4, -2, 2, 6, 9, -10, 5, 10, 13, 13, 11, 9, 7, 9, 9, 4, -1, 2, 7, 9, 11, -8, 6, 11, 14, 14, 12, 10, 8, 11, 11, 6, 3, 6, 10, 11, 13, -6, 8, 12, 15, 15, 13, 11, 9, 12, 13, 9, 8, 10, 12, 13, 15, -2, 9, 13, 16, 17, 15, 13, 10, 14, 15, 11, 12, 14, 16, 18, 20, 3, 13, 18, 20, 21, 19, 15, 14, 16, 17, 14, 16, 17, 20, 22, 25, 5, 16, 21, 24, 24, 22, 19, 16, 18, 19, 17, 19, 21, 23, 27, 29, 7, 19, 23, 27, 27, 24, 21, 18, 19, 20, 20, 21, 25, 27, 31, 33, 9, 21, 26, 30, 29, 27, 24, 20, 20, 22, 22, 23, 28, 30, 34, 35, 11, 23, 29, 33, 32, 30, 25, 22, 22, 24, 24, 25, 30, 34, 36, 36, 14, 26, 33, 36, 36, 31, 26, 23, 23, 25, 27, 27, 31, 35, 38, 38, 16, 29, 37, 39, 38, 33, 27, 24, 25, 26, 30, 31, 33, 37, 40, 40, 18, 33, 40, 42, 40, 35, 29, 26, 27, 28, 31, 34, 36, 38, 42, 41, },
};
const int8_t gdf_inter_error_table[GDF_TRAIN_REFDST_NUM][GDF_TRAIN_QP_NUM][GDF_NET_LUT_IDX_INTER_MAX * GDF_NET_LUT_IDX_INTER_MAX * GDF_NET_LUT_IDX_INTER_MAX] =
{
{
{ 6, 5, 4, 3, 2, 3, 4, 5, 5, 5, 6, 5, 4, 3, 2, 3, 3, 3, 3, 3, 6, 4, 3, 2, 2, 2, 3, 2, 2, 3, 4, 3, 2, 1, 1, 1, 1, 1, 2, 2, 3, 2, 1, 1, 1, 0, 0, 1, 2, 2, 2, 2, 2, 1, 1, 0, 0, 1, 2, 2, 2, 2, 2, 1, 1, 0, 0, 0, 1, 1, 2, 1, 1, 1, 1, 0, -1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, -1, 0, 0, 6, 5, 4, 3, 2, 2, 4, 4, 4, 5, 5, 5, 3, 2, 1, 2, 3, 3, 4, 4, 4, 4, 3, 2, 1, 2, 2, 2, 2, 3, 3, 2, 1, 1, 1, 1, 1, 2, 2, 2, 3, 2, 1, 1, 1, 1, 0, 1, 2, 2, 2, 2, 2, 1, 1, 0, 0, 0, 1, 1, 2, 2, 2, 1, 1, 0, 0, -1, 0, 0, 2, 1, 1, 1, 1, 1, 0, -1, -1, 0, 1, 1, 1, 1, 1, 1, 0, -1, -1, 0, 0, 0, 1, 1, 1, 1, 0, -1, -1, 0, 5, 5, 4, 3, 2, 1, 3, 4, 5, 4, 3, 3, 3, 1, 1, 2, 2, 4, 4, 4, 3, 2, 2, 1, 2, 2, 2, 3, 3, 3, 3, 2, 2, 2, 1, 1, 1, 2, 3, 3, 3, 2, 2, 1, 1, 0, 0, 1, 1, 2, 3, 2, 2, 1, 1, 0, 0, 0, 0, 1, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, 2, 2, 1, 1, 1, 0, 0, -1, -1, -1, 1, 0, 1, 1, 1, 1, 0, -1, -1, -1, -1, 0, 1, 1, 1, 1, 0, -1, -2, -2, 4, 3, 3, 2, 1, 1, 3, 3, 5, 4, 4, 3, 2, 2, 1, 2, 3, 3, 4, 4, 3, 2, 2, 1, 1, 2, 2, 3, 3, 3, 2, 2, 1, 1, 1, 1, 1, 2, 2, 3, 2, 2, 1, 1, 0, 0, 0, 1, 1, 2, 2, 2, 1, 1, 1, 0, 0, 0, 0, 0, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, 2, 1, 1, 1, 1, 1, 0, 0, -1, 0, 0, 0, 0, 1, 1, 0, 0, -1, -1, -1, -1, -1, 0, 0, 1, 1, 0, -1, -1, -2, 4, 3, 2, 2, 1, 1, 3, 3, 3, 4, 3, 3, 2, 1, 1, 2, 2, 2, 2, 3, 3, 2, 1, 0, 1, 1, 2, 2, 2, 2, 2, 2, 1, 0, 0, 0, 1, 1, 1, 1, 2, 2, 1, 0, 0, 0, 0, 0, 1, 1, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, -1, -1, 0, 0, 0, 0, 1, 1, 0, 0, 0, -1, -1, -1, -1, 0, 0, 0, 0, 0, -1, -1, 4, 3, 2, 1, 0, 0, 1, 1, 1, 2, 3, 3, 1, 1, 0, 0, 0, 1, 1, 1, 3, 2, 1, 0, 0, 0, 0, 0, 1, 1, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, 0, 0, 0, 0, -1, -2, -2, -1, -1, -1, 0, 0, 0, 0, -1, 4, 3, 2, 1, 0, -1, -1, 0, 0, 1, 3, 2, 1, 1, 0, -1, -1, -1, 0, 1, 3, 2, 1, 1, 0, -1, -1, -1, 0, 0, 3, 2, 1, 1, 0, -1, -1, -1, 0, 0, 2, 2, 1, 0, 0, -1, -1, -1, -1, -1, 1, 2, 1, 0, 0, 0, -1, -1, 0, -1, 1, 1, 1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, -1, -1, -1, 0, -1, -1, -1, -2, -1, -1, -2, -1, -1, -1, 0, 0, -1, -3, -3, -2, -2, -2, -1, -1, 0, -1, -1, 5, 4, 2, 2, 1, -1, -2, -1, -1, 0, 3, 2, 2, 2, 0, -1, -2, -2, -1, 0, 3, 3, 2, 1, 0, -1, -2, -2, -1, -1, 3, 2, 1, 1, 0, -1, -2, -2, -1, -1, 2, 2, 1, 1, 0, -1, -2, -2, -1, -1, 1, 2, 1, 1, 0, 0, -1, -1, -1, -1, 1, 1, 1, 0, 0, 0, -1, -1, -1, -1, -1, 0, 0, -1, -1, -1, -1, -1, -1, -1, -3, -2, -2, -2, -2, -1, -1, -1, -1, -1, -4, -4, -4, -3, -2, -1, -1, 0, -1, -1, 10, 9, 7, 5, 2, -1, -2, -2, -2, -1, 7, 5, 2, 1, 0, -1, -2, -2, -2, -1, 3, 2, 1, 1, 0, -1, -2, -2, -2, -1, 2, 1, 1, 1, 0, -1, -2, -2, -2, -2, 1, 1, 1, 1, 0, -1, -2, -2, -2, -1, 1, 2, 2, 1, 0, 0, -1, -2, -2, -1, 1, 1, 1, 1, 0, 0, -1, -2, -2, -1, 0, 0, 0, 0, 0, 0, -1, -1, -2, -1, -2, -2, -2, -1, -1, -1, -1, -1, -1, -1, -2, -2, -2, -2, -1, -1, -1, 0, -1, -1, 15, 14, 13, 11, 9, 6, 3, -1, -3, -3, 12, 11, 9, 7, 4, 1, -2, -2, -2, -2, 8, 7, 4, 2, 1, -1, -2, -3, -3, -2, 4, 2, 1, 1, 0, -1, -2, -3, -2, -2, 2, 1, 1, 1, 0, -1, -2, -2, -2, -1, 1, 1, 0, 0, 0, 0, -1, -2, -2, -2, 0, 0, 0, 0, 0, 0, -1, -2, -2, -2, -1, -1, -1, 0, 0, 0, -1, -1, -2, -2, -2, -1, -2, -1, -1, -1, -1, -1, -1, -2, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, },
{ -5, -5, -4, -3, -2, -1, -1, 0, 0, 0, -5, -5, -4, -3, -2, -1, 0, 0, 0, 0, -4, -4, -3, -3, -2, -1, 0, 1, 1, 1, -2, -2, -1, -1, -2, -1, 0, 1, 1, 1, -1, 0, 0, 0, 0, 0, 0, 1, 1, 1, -1, 0, 1, 1, 1, 0, 0, 1, 1, 1, -1, 0, 2, 2, 1, 1, 1, 1, 1, 1, -1, 1, 3, 3, 3, 2, 2, 1, 1, 1, 2, 4, 5, 4, 4, 3, 3, 2, 2, 2, 5, 6, 6, 6, 5, 4, 4, 3, 3, 2, -4, -4, -3, -2, -1, -1, 0, 0, 0, 0, -4, -4, -3, -2, -1, 0, 0, 0, 0, 1, -4, -4, -3, -3, -1, 0, 0, 1, 1, 1, -3, -2, -2, -2, -1, 0, 1, 1, 1, 1, -2, -1, 0, 0, -1, 0, 1, 1, 1, 1, -1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 2, 2, 2, 1, 1, 1, 1, 1, 0, 1, 3, 3, 3, 2, 2, 1, 1, 1, 3, 4, 5, 4, 4, 3, 3, 2, 2, 2, 6, 6, 6, 6, 5, 4, 4, 3, 3, 2, -4, -3, -2, -1, 0, 0, 0, 0, 0, -1, -4, -3, -3, -2, -1, 0, 0, 0, 1, 0, -3, -3, -3, -2, -1, 0, 0, 1, 1, 1, -3, -3, -2, -2, -1, 0, 1, 1, 1, 1, -2, -1, -1, -1, -1, 0, 1, 1, 1, 1, -1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 3, 3, 3, 2, 2, 2, 1, 1, 4, 4, 5, 4, 4, 4, 3, 3, 2, 1, 5, 6, 6, 5, 5, 4, 4, 4, 3, 2, -3, -2, -1, 0, 0, 0, 0, 0, 0, -1, -3, -3, -2, -1, 0, 0, 0, 0, 0, 0, -3, -3, -3, -2, -1, 0, 0, 1, 1, 1, -3, -2, -2, -2, -1, 0, 1, 1, 1, 1, -2, -1, -1, -1, -1, 1, 1, 1, 1, 1, -1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 2, 3, 3, 3, 3, 2, 1, 1, 1, 3, 4, 4, 4, 4, 3, 3, 2, 1, 1, 5, 5, 5, 4, 4, 4, 4, 3, 2, 1, -3, -2, -1, 1, 1, 1, 0, 0, 0, -1, -3, -2, -1, 0, 0, 0, 0, 0, 0, 0, -3, -2, -2, -1, 0, 0, 0, 0, 1, 1, -2, -2, -2, -1, 0, 0, 0, 1, 1, 1, -2, -1, -1, -1, 0, 0, 1, 1, 1, 1, -1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 3, 3, 2, 2, 1, 1, 1, 3, 3, 3, 3, 3, 3, 2, 1, 1, 1, 5, 4, 4, 4, 3, 3, 3, 2, 1, 1, -3, -1, 0, 0, 1, 1, 0, 0, -1, -1, -3, -2, -1, 0, 1, 0, 0, 0, 0, 0, -2, -2, -1, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -1, 0, 0, 0, 0, 1, 1, -2, -1, -1, -1, 0, 0, 1, 1, 1, 1, -1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 3, 3, 2, 1, 1, 0, 0, 1, 4, 4, 4, 3, 2, 2, 1, 1, 1, 1, -2, -1, 0, 0, 0, 0, -1, -1, -2, -2, -2, -1, 0, 0, 0, 0, -1, -1, -1, -1, -2, -2, -1, 0, 0, 0, 0, 0, 0, 0, -2, -2, -1, -1, 0, 0, 0, 0, 0, 1, -2, -1, -1, 0, 0, 0, 0, 0, 1, 1, -1, -1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 2, 2, 2, 2, 1, 0, 0, 0, 0, 1, 4, 3, 3, 2, 1, 0, 0, 0, 0, 1, -2, -1, -1, 0, 0, -1, -1, -2, -3, -3, -2, -1, -1, 0, 0, -1, -2, -2, -2, -2, -2, -2, -1, -1, 0, -1, -1, -1, -1, 0, -2, -2, -1, -1, -1, -1, -1, 0, 0, 0, -2, -2, -1, -1, 0, 0, 0, 0, 1, 1, -1, -1, -1, 0, 0, 0, 0, 1, 1, 2, -1, -1, 0, 0, 0, 0, 0, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 3, 3, 2, 1, 0, 0, 0, 0, 0, 1, -2, -1, -1, -1, -1, -1, -2, -3, -4, -4, -2, -2, -1, -1, -1, -2, -2, -2, -3, -2, -2, -2, -1, -1, -1, -2, -2, -1, -1, -1, -2, -2, -2, -2, -2, -1, -1, -1, 0, 0, -1, -1, -1, -1, -1, 0, 0, 0, 0, 1, -1, -1, -1, -1, 0, 0, 0, 1, 1, 1, -1, -1, -1, -1, 0, 0, 0, 1, 2, 2, 0, -1, -1, 0, 0, 0, 0, 1, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 3, 2, 1, 1, 0, 0, -1, 0, 0, 1, -2, -1, -1, -2, -2, -2, -3, -4, -4, -5, -2, -2, -2, -2, -2, -2, -2, -3, -3, -3, -2, -2, -2, -2, -2, -2, -2, -2, -1, -1, -1, -2, -2, -2, -2, -2, -1, -1, 0, 0, -1, -1, -1, -1, -1, 0, 0, 0, 0, 1, -1, -1, -1, -1, 0, 0, 0, 1, 1, 1, -1, -1, -1, -1, -1, 0, 1, 2, 2, 2, -1, -1, -1, -1, 0, 0, 1, 2, 2, 3, 1, 0, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 1, 0, 0, 0, 0, 0, 1, 2, },
{ 0, -1, -1, -1, -1, -1, -1, -1, -1, 1, 1, 0, -1, 0, 1, 1, 1, 0, 0, 0, 2, 1, 1, 1, 2, 2, 2, 0, -1, -1, 2, 2, 1, 2, 2, 2, 1, 0, -1, -1, 1, 1, 1, 1, 1, 2, 1, 0, -1, -1, 0, -1, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, 0, 0, -1, -2, -2, -1, -1, -3, -2, -1, -1, -1, -2, -3, -3, -2, -1, -5, -3, -2, -1, -2, -2, -3, -3, -3, -2, -6, -5, -3, -3, -3, -4, -4, -4, -4, -3, 0, -1, -1, -2, -2, -2, -2, -2, -1, 1, 1, 0, 0, -1, 0, 0, -1, -1, 0, 0, 2, 1, 0, 1, 1, 1, 0, -1, -1, 0, 3, 2, 1, 2, 2, 2, 0, -1, -1, -1, 2, 2, 2, 2, 2, 2, 0, -1, -1, -1, 0, 0, 0, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -2, -1, -1, -2, -2, -2, -2, -2, -2, -3, -2, -2, -1, -3, -3, -3, -2, -2, -3, -3, -4, -2, 0, -5, -4, -3, -2, -3, -4, -4, -4, -2, -1, 0, 0, -1, -1, -1, -2, -2, -1, 0, 1, 1, 0, -1, -1, -1, -1, -1, -1, 0, 1, 2, 1, 0, 0, 0, 0, -1, -1, -1, 0, 3, 2, 1, 1, 1, 1, -1, -1, -1, -1, 2, 2, 2, 2, 2, 0, -1, -1, -1, -1, 1, 1, 1, 1, 1, 0, -1, -1, -1, -1, 0, 0, 0, 0, 0, -1, -2, -2, -1, -1, -1, -1, -2, -2, -2, -2, -3, -3, -2, -1, -2, -2, -2, -2, -3, -3, -4, -4, -2, -1, -3, -3, -2, -2, -3, -4, -4, -4, -2, -1, 1, 0, -1, -1, -1, -1, -1, 0, 1, 2, 2, 0, -1, -1, -1, -1, -1, -1, 1, 2, 2, 1, 0, 0, 0, -1, -1, 0, 0, 1, 3, 1, 1, 0, 0, 0, -1, -1, 0, 0, 2, 2, 1, 1, 1, 0, -1, -1, -1, -1, 1, 1, 1, 1, 0, 0, -1, -1, -1, -1, 1, 0, 0, 0, 0, -1, -2, -1, -2, -2, 0, 0, -1, -1, -1, -2, -3, -3, -2, -2, -1, -1, -2, -1, -2, -3, -4, -4, -4, -3, -2, -2, -2, -1, -2, -3, -4, -5, -5, -4, 0, 0, -1, -1, -1, -1, -1, 1, 2, 3, 1, 0, 0, 0, -1, -1, 0, 1, 2, 3, 2, 1, 0, 0, 0, 0, 0, 1, 2, 2, 2, 1, 1, 0, 0, 0, 1, 1, 1, 1, 2, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, -1, -1, -1, -1, 1, 1, 0, 0, 0, -1, -1, -1, -1, -2, 1, 0, 0, 0, -1, -2, -2, -2, -2, -2, 0, 0, 0, 0, -2, -3, -3, -4, -4, -4, 0, 0, 0, -1, -2, -3, -4, -4, -5, -5, -1, -1, -1, -1, -1, -1, 0, 1, 3, 5, 0, 0, 0, 0, 0, 0, 0, 2, 4, 5, 0, 1, 0, 0, 0, 0, 1, 3, 3, 3, 1, 1, 1, 0, 0, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, -1, -1, -1, -1, 1, 1, 0, 0, -1, -2, -2, -2, -2, -2, 1, 0, 0, -1, -2, -3, -3, -3, -3, -3, 0, 0, 0, -1, -2, -3, -3, -4, -4, -5, -2, -1, -1, -1, -1, -1, 0, 2, 4, 7, -1, -1, 0, -1, -1, 0, 1, 3, 5, 6, -1, 0, 0, 0, 0, 1, 3, 4, 5, 5, 0, 0, 1, 0, 1, 2, 3, 4, 3, 4, 0, 1, 2, 1, 1, 2, 3, 2, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, -1, -2, -2, -2, -2, -1, -1, 1, 0, -1, -2, -3, -3, -3, -3, -3, -3, 0, 0, -1, -2, -3, -3, -4, -4, -4, -5, -2, -1, -1, -2, -2, -1, 1, 3, 5, 8, -1, -1, -1, -1, -1, 0, 2, 4, 7, 8, -1, 0, 0, 0, 0, 1, 3, 6, 6, 7, 0, 0, 1, -1, 0, 2, 4, 5, 5, 5, 0, 1, 1, 0, 1, 3, 4, 3, 3, 3, 1, 1, 1, 0, 0, 2, 2, 2, 2, 2, 1, 1, 0, -1, 0, 0, 0, 1, 1, 1, 1, 0, -1, -2, -1, -2, -2, -1, -1, -1, 1, 0, -2, -3, -3, -3, -3, -3, -3, -3, 0, -1, -2, -3, -3, -4, -4, -4, -4, -4, -1, -1, -2, -2, -2, 0, 1, 4, 6, 9, -1, -1, -1, -2, -1, 1, 3, 5, 8, 9, 0, 0, -1, -2, -1, 2, 4, 7, 8, 8, 0, 0, -1, -2, -1, 3, 5, 6, 6, 7, 0, 0, -1, -1, 0, 2, 4, 4, 5, 5, 0, 0, 0, -1, -1, 1, 3, 3, 3, 3, 0, 0, -1, 0, 0, 1, 1, 1, 2, 2, 0, 0, -1, -1, -1, -1, -1, -1, 0, 0, 1, -1, -2, -2, -2, -2, -3, -2, -2, -2, 0, -2, -3, -3, -4, -4, -4, -4, -4, -4, -1, -2, -2, -3, -2, 0, 2, 5, 7, 10, 0, -2, -2, -3, -2, 1, 3, 6, 9, 11, 0, -1, -2, -3, -2, 2, 5, 7, 9, 10, 0, -1, -2, -3, -1, 2, 6, 7, 8, 8, 0, -1, -2, -2, -2, 1, 5, 6, 6, 6, 0, -1, -1, -2, -2, 1, 3, 4, 4, 4, 0, -1, -1, -1, 0, 1, 2, 2, 3, 2, 0, -1, -1, 0, 0, 0, 0, 0, 1, 1, 0, -1, -2, -2, -2, -2, -2, -2, -1, -1, 1, -1, -3, -3, -3, -3, -3, -3, -3, -3, },
{ 5, 2, 2, 3, 3, 4, 3, 1, -1, -2, 6, 3, 3, 3, 3, 4, 3, 1, 0, -2, 4, 4, 4, 4, 3, 3, 3, 1, 0, -2, 3, 2, 2, 2, 2, 3, 3, 1, -1, -2, 1, 0, 0, 0, 1, 2, 2, 0, -2, -3, -1, -2, -1, -1, -1, 0, 1, -1, -2, -4, -3, -3, -3, -3, -2, -1, -1, -2, -4, -5, -5, -5, -5, -5, -4, -3, -2, -3, -4, -5, -6, -6, -6, -6, -5, -4, -3, -4, -5, -6, -7, -7, -7, -6, -5, -5, -4, -4, -5, -6, 7, 4, 2, 3, 4, 4, 3, 2, 0, -1, 7, 5, 3, 4, 4, 4, 3, 1, 0, -1, 6, 5, 5, 5, 4, 3, 2, 1, 0, -1, 4, 4, 3, 3, 3, 3, 2, 1, 0, -2, 2, 2, 2, 1, 1, 1, 2, 0, -1, -3, 1, 0, 0, -1, -1, 0, 1, -1, -2, -4, 0, -2, -2, -2, -2, -1, -1, -2, -3, -5, -2, -3, -3, -3, -3, -3, -2, -3, -4, -5, -3, -4, -4, -4, -4, -4, -3, -4, -4, -5, -4, -4, -5, -4, -4, -4, -3, -3, -4, -6, 7, 4, 2, 3, 3, 3, 2, 2, 0, -1, 6, 6, 4, 4, 4, 4, 2, 1, 0, -1, 6, 5, 5, 5, 4, 3, 2, 1, 0, -1, 5, 5, 4, 4, 3, 3, 2, 1, 0, -1, 3, 3, 3, 2, 2, 2, 2, 0, -1, -2, 2, 2, 1, 1, 0, 0, 0, -1, -2, -3, 1, 1, 0, -1, -1, -1, 0, -2, -3, -4, 0, -1, -1, -1, -2, -1, -1, -3, -4, -5, -1, -2, -2, -2, -2, -2, -2, -3, -4, -5, -2, -2, -3, -3, -3, -2, -2, -3, -4, -6, 6, 5, 3, 1, 2, 2, 2, 1, 0, 0, 6, 5, 4, 3, 3, 3, 2, 1, 0, -1, 6, 5, 4, 4, 4, 3, 2, 0, -1, -1, 5, 5, 4, 4, 3, 2, 2, 0, -1, -2, 4, 4, 3, 3, 3, 2, 2, 0, -1, -2, 3, 2, 2, 2, 1, 1, 1, -1, -2, -2, 2, 1, 1, 1, 0, 0, 0, -1, -3, -3, 1, 1, 0, 0, 0, -1, -1, -2, -3, -5, 0, 0, 0, -1, -1, -1, -1, -3, -4, -5, 0, -1, -1, -1, -1, -1, -1, -3, -4, -6, 6, 5, 3, 1, 1, 2, 1, 1, 1, 1, 5, 4, 4, 2, 1, 2, 2, 0, 0, 0, 5, 4, 4, 3, 3, 2, 1, 0, -1, -1, 5, 4, 3, 3, 2, 2, 0, 0, -1, -2, 4, 3, 3, 2, 2, 1, 0, -1, -2, -2, 3, 3, 2, 2, 1, 0, 0, -1, -2, -2, 2, 2, 1, 1, 1, -1, -1, -3, -3, -4, 1, 1, 1, 0, 0, -1, -2, -3, -4, -5, 1, 0, 0, 0, -1, -1, -2, -3, -4, -5, 0, 0, -1, -1, -1, -2, -2, -4, -4, -6, 5, 4, 4, 2, 0, 0, 1, 2, 3, 2, 5, 4, 3, 2, 1, 1, 2, 2, 2, 1, 5, 4, 3, 2, 1, 1, 1, 1, 1, 0, 4, 4, 3, 2, 1, 1, 1, 0, 0, -1, 3, 3, 2, 2, 1, 0, 0, 0, -1, -2, 3, 2, 2, 1, 1, -1, -1, -1, -2, -3, 2, 1, 1, 0, 0, -2, -2, -4, -4, -4, 1, 1, 0, 0, -1, -2, -3, -5, -5, -5, 1, 0, -1, -1, -2, -3, -4, -5, -6, -6, 0, -1, -1, -2, -3, -3, -4, -6, -5, -7, 5, 4, 4, 2, 0, -1, 1, 4, 5, 5, 5, 4, 3, 2, 1, -1, 2, 4, 3, 3, 4, 4, 3, 2, 1, 1, 2, 3, 2, 2, 4, 3, 3, 2, 1, 1, 2, 2, 1, 1, 3, 3, 2, 2, 1, 1, 1, 1, 0, -1, 3, 2, 1, 1, 0, 0, 0, 0, -1, -1, 2, 1, 0, 0, -2, -2, -2, -3, -3, -4, 1, 0, 0, -1, -2, -3, -4, -5, -6, -6, 1, 0, -1, -2, -3, -4, -5, -6, -6, -6, 0, -1, -2, -3, -4, -5, -6, -6, -6, -7, 5, 4, 4, 2, -1, -1, 1, 5, 7, 7, 5, 4, 4, 2, 1, 1, 2, 5, 6, 6, 5, 4, 3, 2, 2, 2, 3, 4, 4, 4, 4, 3, 3, 2, 2, 2, 3, 3, 3, 2, 3, 3, 2, 1, 1, 1, 2, 2, 2, 1, 3, 2, 1, 1, 0, 0, 0, 1, 1, 0, 2, 1, 0, -1, -2, -2, -2, -1, -2, -3, 1, 0, -1, -2, -3, -4, -4, -4, -4, -5, 0, -1, -2, -3, -4, -5, -5, -6, -6, -6, 0, -1, -3, -4, -5, -6, -6, -7, -6, -7, 6, 4, 3, 2, 2, 1, 2, 6, 10, 10, 5, 4, 3, 3, 3, 3, 4, 6, 8, 8, 5, 4, 3, 3, 3, 4, 4, 6, 7, 6, 4, 4, 3, 3, 3, 3, 3, 4, 5, 4, 4, 3, 2, 2, 1, 1, 1, 2, 4, 3, 3, 2, 1, 1, 0, 0, 0, 1, 2, 1, 2, 1, 0, -1, -2, -2, -2, -1, 0, -1, 1, 0, -1, -3, -3, -4, -4, -3, -3, -3, 0, -1, -2, -4, -5, -5, -6, -5, -5, -5, 0, -2, -3, -4, -5, -6, -7, -6, -5, -7, 6, 4, 4, 4, 4, 4, 5, 7, 10, 13, 5, 4, 4, 4, 5, 5, 6, 7, 10, 11, 5, 4, 4, 4, 5, 5, 6, 6, 8, 10, 4, 4, 3, 3, 4, 3, 3, 3, 5, 8, 4, 3, 2, 2, 2, 1, 1, 1, 3, 5, 3, 2, 2, 1, 1, 0, 0, 0, 2, 3, 2, 1, 1, 0, -1, -2, -2, -1, 1, 1, 1, 0, -1, -2, -3, -3, -3, -2, -1, -1, 0, -1, -3, -4, -5, -5, -5, -4, -3, -2, 0, -2, -4, -5, -6, -6, -6, -4, -3, -5, },
{ -8, -9, -9, -10, -8, -6, -4, -5, -7, -8, -6, -8, -8, -7, -6, -5, -2, -4, -6, -7, -5, -7, -7, -6, -5, -4, -2, -3, -4, -5, -5, -7, -7, -6, -4, -3, -1, -2, -3, -3, -5, -6, -6, -5, -3, -2, 0, -1, -2, -2, -5, -6, -6, -5, -3, -2, 0, 0, 0, -1, -4, -6, -6, -4, -3, -2, 1, 2, 2, 1, -4, -5, -5, -5, -3, -1, 2, 3, 3, 3, -4, -5, -5, -5, -3, 0, 3, 4, 5, 5, -4, -5, -5, -4, -3, 0, 3, 5, 6, 7, -7, -9, -10, -11, -11, -7, -5, -4, -4, -4, -6, -8, -8, -9, -9, -6, -4, -3, -3, -3, -4, -7, -7, -7, -7, -5, -3, -2, -2, -1, -4, -6, -7, -7, -6, -4, -2, -2, -2, 0, -4, -6, -6, -6, -5, -3, -1, -1, 0, 1, -4, -6, -6, -6, -4, -2, 0, 1, 1, 2, -3, -5, -6, -6, -4, -2, 1, 2, 3, 4, -2, -5, -5, -5, -3, -1, 2, 3, 4, 5, -2, -5, -5, -5, -3, -1, 2, 4, 6, 7, -1, -4, -4, -4, -4, -1, 2, 4, 6, 8, -7, -9, -11, -11, -11, -9, -6, -2, -2, -2, -6, -8, -8, -9, -10, -8, -5, -2, -1, 0, -4, -6, -7, -7, -8, -7, -4, -2, -1, 0, -4, -6, -7, -6, -7, -6, -4, -1, 0, 1, -3, -5, -6, -6, -6, -4, -2, -1, 1, 2, -3, -5, -6, -6, -5, -3, -1, 1, 3, 3, -3, -4, -5, -5, -5, -2, 0, 3, 4, 5, -2, -4, -5, -5, -4, -2, 1, 4, 5, 6, -1, -4, -4, -4, -3, -2, 1, 4, 6, 8, 1, -2, -3, -3, -3, -2, 1, 4, 5, 8, -8, -10, -11, -11, -11, -10, -7, -1, -1, 0, -6, -8, -9, -9, -10, -9, -6, -1, 0, 0, -4, -6, -7, -8, -8, -8, -5, -1, 1, 1, -3, -5, -6, -6, -7, -7, -5, -1, 1, 2, -3, -5, -5, -6, -6, -5, -3, 0, 2, 3, -2, -4, -5, -5, -5, -5, -2, 2, 3, 4, -2, -4, -5, -5, -5, -3, 0, 3, 5, 5, -1, -3, -4, -4, -4, -3, 0, 3, 5, 7, 0, -3, -3, -3, -3, -2, 0, 3, 5, 8, 2, -1, -2, -2, -2, -2, 0, 2, 4, 9, -8, -10, -11, -12, -11, -9, -6, -2, -1, 0, -6, -8, -9, -9, -10, -9, -5, -2, 0, 0, -4, -6, -7, -8, -8, -8, -5, -2, 0, 1, -3, -5, -6, -6, -7, -7, -4, -2, 1, 2, -2, -4, -5, -5, -5, -5, -4, -1, 2, 3, -1, -3, -4, -5, -5, -4, -2, 0, 3, 4, -1, -3, -4, -4, -4, -3, -1, 1, 4, 5, 0, -2, -4, -4, -3, -3, -1, 1, 4, 7, 1, -1, -2, -2, -2, -2, -1, 1, 4, 7, 3, 1, 0, -1, -1, -1, 0, 1, 4, 8, -7, -10, -11, -12, -11, -9, -6, -3, -2, 0, -6, -8, -9, -10, -10, -8, -5, -2, -1, 1, -4, -6, -7, -8, -8, -8, -5, -2, 0, 2, -2, -5, -5, -6, -7, -7, -5, -3, 0, 3, -2, -4, -4, -5, -5, -6, -5, -2, 1, 3, -1, -3, -4, -4, -4, -4, -3, -1, 3, 4, 0, -2, -3, -4, -4, -3, -2, 0, 4, 5, 1, -2, -3, -3, -3, -2, -1, 0, 4, 6, 3, 0, -1, -2, -2, -2, 0, 1, 4, 7, 5, 2, 1, 0, 0, 0, 1, 1, 4, 8, -7, -10, -12, -13, -13, -10, -7, -5, -3, 0, -5, -8, -10, -11, -11, -10, -6, -5, -3, 1, -3, -6, -7, -8, -9, -9, -6, -4, -2, 2, -2, -4, -5, -7, -8, -8, -6, -4, -1, 3, -1, -3, -4, -5, -5, -6, -5, -3, 0, 3, 0, -3, -4, -4, -4, -4, -3, -1, 2, 4, 1, -2, -3, -4, -3, -3, -1, 0, 2, 5, 2, -1, -3, -3, -2, -2, 0, 1, 3, 6, 4, 1, -1, -1, -1, -1, 1, 1, 3, 6, 7, 4, 2, 1, 1, 1, 2, 2, 4, 7, -6, -11, -12, -13, -13, -11, -8, -7, -5, 0, -4, -8, -10, -11, -11, -10, -7, -6, -4, 0, -3, -5, -7, -8, -9, -9, -6, -5, -4, 1, -1, -4, -5, -6, -7, -8, -6, -4, -2, 2, 0, -3, -4, -4, -5, -6, -4, -2, -1, 3, 1, -2, -3, -3, -3, -3, -2, 0, 1, 3, 1, -2, -3, -3, -2, -2, 0, 1, 1, 4, 3, -1, -2, -2, -1, -1, 1, 1, 2, 5, 6, 2, 0, 0, 0, 0, 2, 2, 3, 6, 9, 5, 3, 2, 2, 2, 3, 2, 3, 7, -5, -10, -12, -13, -13, -11, -10, -9, -6, -1, -3, -7, -9, -10, -11, -10, -8, -7, -5, -1, -1, -4, -6, -8, -8, -8, -6, -5, -4, 1, 0, -2, -4, -5, -6, -6, -5, -4, -3, 1, 2, -1, -2, -3, -4, -5, -3, -2, -2, 2, 3, 0, -1, -1, -2, -2, 0, 0, 0, 3, 4, 0, -1, -1, 0, 0, 2, 1, 0, 3, 6, 1, 0, 0, 1, 1, 2, 1, 1, 4, 8, 4, 2, 2, 3, 3, 3, 2, 2, 5, 11, 7, 5, 5, 5, 5, 4, 2, 3, 6, -5, -9, -11, -12, -12, -12, -11, -10, -8, -2, -2, -6, -8, -9, -10, -9, -8, -8, -7, -2, 1, -3, -5, -6, -7, -7, -6, -5, -5, 0, 2, -1, -3, -4, -4, -4, -4, -4, -3, 1, 4, 1, 0, -1, -1, -2, -1, -1, -2, 1, 5, 3, 2, 1, 1, 1, 1, 0, -1, 2, 7, 4, 2, 3, 3, 3, 3, 1, -1, 3, 9, 4, 3, 4, 4, 4, 4, 2, 0, 4, 11, 7, 5, 5, 6, 5, 5, 3, 1, 5, 14, 10, 8, 8, 8, 7, 6, 3, 3, 6, },
{ 1, 1, 1, -1, -2, -10, -14, -15, -11, -3, 0, 1, 0, -1, -1, -8, -12, -12, -8, -1, 0, 0, 0, -1, -1, -6, -9, -8, -4, 1, -1, -1, -1, -1, -1, -3, -6, -4, 1, 3, -1, -1, -1, -1, 0, 0, -2, 1, 5, 6, 0, -1, -1, 0, 1, 1, 1, 3, 6, 7, 0, -1, 1, 4, 5, 4, 4, 6, 7, 8, 1, 2, 5, 8, 10, 8, 6, 7, 6, 6, 2, 6, 10, 12, 13, 11, 7, 7, 6, 6, 4, 10, 13, 15, 15, 12, 9, 7, 6, 7, -2, -1, 0, 0, -2, -10, -14, -14, -9, -1, -2, -1, 0, 0, -1, -8, -11, -11, -6, 0, -2, -1, 0, 0, 0, -6, -9, -8, -2, 2, -2, -1, 0, 0, 0, -4, -6, -4, 1, 4, -1, 0, 0, 0, 1, -1, -2, 0, 5, 6, 0, 0, 1, 1, 2, 2, 1, 3, 6, 7, -1, 1, 3, 5, 7, 5, 3, 5, 6, 7, -1, 4, 6, 8, 11, 8, 5, 6, 6, 7, 2, 8, 11, 12, 12, 10, 7, 7, 6, 7, 3, 12, 14, 13, 12, 11, 9, 7, 7, 8, -6, -4, -2, -2, -2, -10, -13, -13, -9, -1, -5, -3, -2, -1, -1, -8, -11, -11, -6, 1, -6, -3, -1, 0, -1, -6, -9, -5, -1, 3, -7, -2, -1, 0, 0, -4, -4, -1, 2, 4, -6, -2, -1, 0, 1, -2, -2, 1, 4, 6, -4, -1, 1, 2, 3, 1, 1, 3, 6, 7, -5, 0, 2, 5, 7, 4, 3, 4, 6, 7, -7, 3, 6, 8, 9, 6, 4, 5, 6, 8, -6, 6, 10, 11, 10, 8, 6, 6, 7, 9, -1, 7, 12, 12, 10, 9, 8, 7, 8, 8, -12, -8, -6, -4, -3, -9, -13, -12, -8, 0, -11, -6, -4, -3, -2, -8, -11, -8, -3, 2, -10, -5, -4, -2, -2, -6, -7, -3, 3, 4, -10, -4, -3, -2, -1, -4, -3, 1, 5, 6, -9, -4, -2, -1, 0, -3, 0, 3, 5, 6, -9, -2, -1, 1, 2, 0, 1, 3, 5, 7, -12, -2, 1, 4, 4, 2, 1, 4, 6, 8, -15, -2, 5, 6, 5, 4, 3, 4, 6, 9, -13, -1, 6, 8, 6, 6, 5, 6, 7, 9, -1, 0, 7, 10, 6, 8, 7, 7, 8, 9, -15, -14, -11, -8, -6, -9, -12, -11, -5, 2, -13, -12, -8, -6, -5, -9, -10, -5, 1, 5, -11, -9, -6, -5, -4, -8, -7, 0, 5, 8, -10, -7, -5, -5, -4, -6, -4, 3, 6, 8, -8, -6, -4, -3, -3, -5, -2, 3, 5, 7, -10, -5, -2, -1, 0, -1, 0, 2, 5, 7, -16, -8, -1, 1, 0, 0, 0, 3, 5, 8, -17, -8, 0, 3, 1, 2, 3, 4, 6, 9, -12, -7, 0, 4, 2, 3, 6, 6, 7, 9, 2, 0, 2, 5, 2, 4, 7, 7, 8, 9, -13, -17, -16, -13, -9, -13, -14, -8, -3, 4, -10, -13, -13, -11, -9, -12, -12, -5, 2, 8, -8, -10, -10, -9, -8, -11, -10, -3, 4, 10, -6, -7, -8, -7, -7, -10, -6, -1, 6, 10, -5, -4, -6, -5, -5, -7, -3, 1, 5, 8, -6, -4, -4, -3, -3, -4, -1, 1, 4, 8, -11, -7, -2, -1, -2, -2, 0, 2, 5, 10, -10, -7, -1, 0, -2, -1, 2, 3, 5, 10, -5, -5, -1, 1, -1, 1, 4, 5, 7, 11, 3, 1, 2, 1, -1, 2, 4, 6, 8, 11, -11, -15, -19, -16, -14, -15, -20, -13, -2, 7, -8, -11, -15, -15, -13, -14, -19, -11, 0, 10, -5, -8, -12, -13, -12, -13, -16, -9, 2, 12, -3, -5, -8, -11, -11, -12, -13, -7, 4, 11, -1, -4, -6, -9, -10, -10, -7, -2, 3, 8, -3, -4, -5, -6, -6, -5, -3, -1, 3, 8, -5, -3, -2, -3, -4, -3, 0, 1, 3, 10, -5, -3, -1, -1, -3, -1, 1, 3, 5, 10, 0, -2, 1, -1, -2, 0, 2, 4, 7, 10, 5, 3, 4, 2, -2, 0, 2, 4, 6, 10, -9, -13, -17, -18, -15, -16, -22, -23, -10, 7, -6, -9, -13, -16, -15, -15, -19, -20, -6, 10, -3, -6, -10, -15, -14, -14, -16, -16, -3, 11, -1, -4, -7, -12, -13, -13, -12, -11, -1, 10, 0, -3, -6, -9, -12, -11, -6, -4, 1, 7, -2, -3, -5, -6, -6, -6, -2, -1, 1, 2, -3, -2, -2, -2, -4, -3, 0, 1, 3, 7, -2, -1, 0, 0, -2, -1, 1, 2, 5, 10, 2, 1, 1, 1, -2, -1, 1, 3, 5, 9, 6, 5, 4, 1, -2, 0, 1, 3, 5, 8, -6, -11, -15, -18, -16, -16, -21, -21, -16, 3, -3, -7, -11, -16, -16, -16, -17, -17, -12, 6, -1, -4, -8, -14, -15, -16, -14, -13, -7, 7, 0, -2, -6, -11, -13, -14, -10, -7, -3, 7, 0, -3, -5, -9, -11, -12, -6, -1, 1, 6, -1, -3, -4, -4, -4, -6, -2, 0, 1, -5, -3, -2, -2, -2, -2, -2, 0, 2, 4, 1, 0, 0, 1, 0, -1, 0, 1, 3, 6, 10, 3, 2, 2, 1, -1, 0, 2, 4, 6, 9, 7, 6, 5, 1, -1, 0, 1, 4, 5, 9, -4, -9, -14, -18, -19, -19, -18, -14, -8, 2, -1, -6, -10, -15, -17, -17, -15, -10, -4, 4, 0, -3, -7, -13, -14, -16, -12, -6, -1, 6, 1, -2, -6, -11, -12, -14, -9, -3, 2, 6, 0, -2, -6, -9, -9, -11, -5, 1, 4, 6, -1, -3, -4, -4, -2, -2, 0, 3, 2, -3, -2, -2, -1, -2, -1, 0, 2, 4, 6, -1, -1, 0, 1, 1, 0, 1, 4, 6, 8, 11, 4, 3, 4, 2, 0, 2, 4, 7, 8, 11, 7, 5, 5, 2, 0, 2, 5, 7, 7, 10, },
},
{
{ 1, 1, 0, 0, 1, 1, -1, -1, 0, 0, 1, 1, 0, 0, 0, 0, -1, -1, -1, -1, 1, 1, 1, 0, 0, 0, -1, -1, -1, -1, 1, 1, 1, 0, 0, 0, -1, -1, -1, -1, 2, 1, 1, 1, 0, 0, -1, -1, -1, -1, 3, 2, 1, 1, 1, 1, 0, -1, -1, -1, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 2, 2, 1, 0, -1, -2, -2, 0, 0, 0, 2, 1, 1, 0, -1, -3, -4, -3, -1, 0, 2, 1, 0, 0, -2, -3, -5, -5, -3, -1, 1, 1, 1, 1, 1, 0, 0, 0, -1, -1, 0, 0, 0, 0, 1, 0, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, 1, 1, 1, 0, 0, 0, -1, -1, -1, -1, 2, 2, 1, 0, 0, 0, -1, -1, -1, -1, 2, 2, 1, 1, 0, 0, 0, -1, -1, -1, 2, 2, 1, 0, 0, -1, 0, -1, -1, -1, 2, 1, 1, 0, -1, -2, -2, -1, 0, -1, 2, 1, 0, 0, -1, -3, -4, -3, -2, 0, 1, 0, -1, -1, -2, -4, -4, -4, -3, -2, 1, 1, 1, 1, 0, 0, 0, -1, -1, -1, 0, 0, 1, 0, 0, 0, 0, -1, -1, -1, 1, 0, 1, 0, 0, 0, 0, -1, -1, -1, 1, 1, 1, 0, 0, 0, -1, -1, -1, -1, 2, 1, 1, 1, 0, -1, -1, -1, -1, -1, 2, 2, 1, 1, 0, -1, -1, -1, -1, -1, 2, 2, 1, 1, 0, -1, -1, -1, -1, -1, 2, 1, 1, 0, -1, -2, -3, -2, -1, -1, 2, 1, 0, 0, -2, -3, -3, -3, -2, -1, 0, 0, -1, -1, -2, -4, -4, -4, -3, -2, 1, 1, 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, 1, 0, 0, 0, 0, 0, -1, -1, -1, -1, 1, 1, 1, 0, 0, 0, -1, -1, -1, -1, 1, 1, 1, 0, 0, -1, -1, -1, -1, -1, 2, 1, 1, 0, 0, -1, -1, -1, -1, -1, 2, 1, 1, 0, 0, -1, -2, -1, -1, -1, 2, 1, 1, 0, -1, -2, -2, -2, -1, 0, 1, 1, 0, -1, -1, -2, -3, -2, -2, -1, 1, 0, -1, -2, -2, -3, -3, -3, -2, -2, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, 1, 1, 1, 0, 0, 0, -1, -1, -1, -1, 2, 1, 1, 1, 0, -1, -1, 0, -1, -1, 2, 1, 1, 1, 0, -1, -1, 0, 0, -1, 1, 1, 0, 0, 0, -1, -1, -1, 0, 0, 1, 0, 0, 0, -1, -2, -2, -1, -1, 0, 0, 0, -1, -1, -2, -2, -3, -2, -2, -1, 0, 0, 1, 1, 2, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, 1, 1, 1, 0, 0, 0, 0, -1, -1, -1, 1, 1, 1, 1, 0, 0, 0, 0, -1, -1, 1, 1, 1, 1, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, -1, 0, -1, -1, -2, -2, -1, 0, 0, 0, 1, 2, 2, 2, 2, 1, 1, 1, 0, 0, 0, 1, 1, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, -1, -1, 0, 0, 0, 0, 1, 1, 0, -1, -1, -1, 1, 1, 0, 0, 0, 0, 0, -1, -1, -1, 1, 1, 1, 1, 1, 0, 0, 0, -1, -1, 1, 1, 1, 1, 1, 0, 0, 0, 0, -1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 3, 4, 3, 2, 1, 1, 0, 0, 1, 2, 3, 3, 3, 1, 1, 0, 0, 0, 0, 1, 1, 2, 2, 1, 0, 0, -1, 0, 0, 0, 1, 2, 2, 1, -1, -1, -1, 0, 0, 0, 0, 1, 1, 0, -1, -1, -2, 1, 1, 1, 1, 1, 1, 0, 0, -1, -1, 1, 1, 1, 1, 1, 0, 0, 0, -1, -1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 3, 4, 4, 4, 3, 2, 1, 1, 0, 1, 2, 3, 4, 3, 2, 1, 1, -1, 0, 1, 1, 2, 3, 3, 1, 0, 0, -1, 0, 0, 0, 1, 2, 2, 1, 0, -1, -2, 0, 0, 0, 1, 1, 1, 0, 0, -1, -1, 1, 1, 0, 1, 1, 0, 0, 0, 0, -1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 3, 4, 4, 4, 4, 4, 3, 2, 1, 1, 1, 2, 3, 3, 4, 4, 2, 1, 1, 0, 0, 1, 2, 2, 3, 3, 2, 0, -1, -1, 0, 0, 1, 1, 2, 1, 0, 0, -1, -2, 0, 0, 0, 1, 1, 0, 0, 0, -1, -1, 1, 0, 0, 1, 1, 0, 0, 0, 0, -1, 1, 1, 1, 1, 0, 0, 0, 0, 0, -1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, },
{ 1, 0, 0, -1, -2, -3, -3, -3, -3, -3, 1, 0, 0, -1, -1, -2, -3, -3, -3, -3, 1, 1, 1, 1, -1, -2, -2, -2, -3, -3, 1, 1, 2, 2, 1, -1, -2, -2, -2, -3, 2, 2, 2, 2, 2, 1, -1, -2, -2, -3, 2, 3, 3, 3, 3, 2, 1, -1, -2, -3, 2, 3, 3, 4, 4, 4, 2, 0, -2, -3, 2, 3, 4, 4, 5, 4, 3, 0, -2, -4, 2, 3, 4, 4, 4, 4, 1, -1, -2, -4, 2, 3, 3, 3, 3, 2, 0, -2, -2, -3, 0, 0, 0, -1, -2, -3, -3, -3, -3, -2, 0, 0, 0, -1, -1, -2, -3, -3, -2, -2, 0, 0, 0, 0, -1, -2, -2, -2, -2, -2, 0, 0, 0, 0, -1, -1, -2, -2, -2, -3, 0, 1, 1, 1, 1, 0, -1, -2, -2, -3, 0, 1, 1, 2, 2, 2, 0, -1, -2, -3, 1, 1, 2, 3, 3, 3, 1, -1, -2, -3, 0, 1, 2, 3, 4, 3, 2, 0, -2, -4, 1, 2, 3, 3, 3, 3, 1, -1, -2, -4, 0, 1, 1, 2, 2, 1, 0, -1, -2, -3, 0, 0, -1, -1, -1, -2, -3, -2, -2, -2, 0, 0, -1, -1, -2, -2, -3, -2, -2, -2, 0, 0, 0, -1, -1, -2, -2, -2, -2, -2, 0, 0, 0, 0, -1, -2, -2, -2, -2, -2, 0, 0, 0, 0, 0, -1, -1, -2, -2, -2, 0, 0, 0, 0, 1, 1, 0, -2, -2, -3, 0, 0, 1, 1, 2, 2, 1, -1, -2, -3, 0, 0, 1, 2, 2, 2, 1, -1, -3, -4, 0, 0, 1, 1, 1, 1, 0, -1, -2, -3, 0, 0, 0, 0, 1, 1, -1, -1, -2, -3, 0, -1, -1, -1, -2, -2, -2, -1, -1, -1, 0, -1, -1, -1, -2, -2, -2, -1, -1, -1, 0, 0, -1, -1, -2, -2, -2, -1, -1, -1, 0, 0, -1, -1, -1, -1, -2, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -2, 0, 0, 0, 0, 0, 0, -1, -1, -2, -2, 0, 0, 0, 0, 0, 0, 0, -1, -2, -2, -1, 0, 0, 0, 1, 1, 0, -1, -2, -3, -1, 0, 0, 0, 0, 0, 0, -1, -2, -2, -1, -1, -1, 0, 0, 0, 0, 0, -1, -2, 0, -1, -1, -2, -2, -2, -1, -1, 0, 0, 0, -1, -1, -2, -2, -1, -1, -1, 0, 0, 0, 0, -1, -2, -2, -1, -1, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, 0, 0, 1, 1, 1, 0, 0, 0, -1, -1, -1, -2, -2, -1, -1, 0, 1, 0, 0, -1, -1, -2, -2, -1, 0, 0, 1, 0, 0, 0, -1, -2, -1, -1, 0, 0, 1, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, -1, 0, 0, 0, 1, 1, 1, 0, 0, 0, -1, -1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, 0, 1, 1, 0, 0, -1, -1, -2, -1, -1, 0, 1, 1, 1, 0, -1, -1, -1, -1, -1, 0, 1, 1, 1, 1, 0, -1, -1, -1, 0, 0, 1, 1, 1, 1, 0, -1, -1, -1, 0, 0, 1, 1, 1, 1, 1, 0, -1, -1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 2, 1, 0, 0, 0, 0, 0, 0, 1, 2, 2, 1, 0, 0, 0, 1, 1, 0, 0, 0, -1, -1, 0, 0, 0, 1, 1, 0, 0, -1, -1, -1, -1, 0, 0, 1, 1, 0, 0, -1, -2, -2, -2, -1, 0, 2, 1, 1, 0, -1, -2, -2, -2, -1, 0, 2, 1, 1, 0, -1, -2, -2, -1, -1, 1, 1, 1, 1, 0, -1, -2, -2, -1, 0, 1, 1, 1, 1, 1, 0, -1, -1, -1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 2, 2, 1, 0, 0, 0, 0, 0, 1, 2, 2, 2, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, -1, -1, -1, -1, 1, 1, 1, 1, 0, -1, -2, -2, -2, -1, 2, 1, 0, 0, -1, -2, -3, -2, -2, -1, 2, 1, 0, 0, -2, -3, -3, -3, -2, -1, 2, 1, 0, -1, -2, -3, -3, -3, -2, -1, 1, 1, 0, 0, -1, -3, -3, -3, -1, 0, 1, 1, 1, 0, 0, -2, -2, -2, -1, 1, 1, 1, 1, 1, 1, 0, -1, -1, 0, 1, 0, 1, 1, 1, 2, 1, 1, 0, 0, 1, 0, 1, 1, 2, 2, 2, 1, 0, 0, 0, 2, 2, 1, 1, 1, 0, -1, -2, -3, -2, 2, 1, 1, 1, 0, -1, -3, -3, -3, -2, 2, 1, 1, 0, -1, -2, -3, -3, -3, -3, 2, 1, 0, 0, -2, -3, -4, -4, -4, -2, 1, 1, 0, -1, -3, -4, -4, -5, -3, -2, 1, 1, 0, -1, -2, -3, -4, -4, -2, -2, 1, 1, 0, 0, -1, -2, -3, -3, -2, -1, 1, 1, 1, 1, 0, -1, -2, -2, -1, 0, 1, 1, 1, 1, 1, 1, 0, -1, 0, 0, 1, 1, 1, 2, 2, 2, 2, 0, 0, 1, },
{ 0, -1, -2, -1, -1, 0, 0, 0, -2, -5, 0, -1, -2, -1, 0, 0, 1, 0, -2, -6, 0, -1, -2, -2, -1, 1, 1, 0, -1, -6, 0, -1, -2, -1, 0, 1, 2, 1, -1, -6, 1, 0, -1, 0, 1, 1, 0, 1, -1, -6, 1, 0, 1, 2, 2, 2, 0, -1, -2, -4, 0, 0, 1, 3, 4, 3, 1, -1, -2, -3, -1, 0, 1, 3, 4, 4, 2, 1, 0, -1, -1, -1, 0, 1, 1, 1, 1, 1, 1, 0, -1, -1, -2, -2, -1, -1, 0, -1, -1, 0, 0, -1, -2, -2, -1, 0, 0, 0, -1, -4, 0, -1, -2, -2, -1, 0, 1, 0, -1, -5, 1, -1, -2, -2, -1, 0, 0, 0, -2, -5, 1, -1, -2, -2, -1, 0, 1, 0, -2, -5, 1, 0, -1, -1, 0, 1, 0, -1, -2, -4, 1, 0, 0, 1, 2, 2, 0, -2, -2, -3, 0, -1, 0, 2, 3, 3, 1, 0, -1, -2, -1, -1, 0, 1, 3, 3, 2, 1, 0, 0, 0, -1, -1, 0, 1, 1, 1, 1, 1, 1, -1, -1, -2, -2, -2, -1, -1, -1, 0, 1, 0, -1, -2, -2, -2, -1, 0, 0, 0, -3, 1, -1, -2, -3, -2, -1, 0, 0, -1, -3, 1, 0, -2, -2, -2, -1, 0, 0, -2, -3, 1, 0, -1, -2, -1, -1, 0, -1, -3, -3, 2, 0, 0, -1, -1, 0, 0, -1, -3, -3, 1, 0, 0, 0, 1, 2, 0, -1, -2, -2, 0, 0, 0, 0, 2, 3, 1, 0, 0, 0, 0, -1, -1, 0, 2, 2, 1, 1, 1, 2, 0, 0, -1, 0, 1, 0, 0, 0, 2, 2, 0, -1, -1, -2, -2, -2, -2, 0, 1, 2, 0, -1, -2, -3, -2, -1, -1, 0, 0, -1, 1, -1, -2, -3, -2, -1, 0, 0, -1, -1, 1, 0, -1, -2, -2, -1, 0, -1, -1, -1, 2, 1, -1, -1, -2, -1, 0, -1, -2, -1, 2, 1, 0, 0, -1, 0, 0, -1, -2, -1, 1, 0, 0, 0, 0, 1, 1, -1, -1, -1, 0, 0, 0, 0, 1, 2, 2, 1, 1, 1, 0, -1, -1, 0, 1, 1, 0, 1, 2, 3, 0, 0, -1, -1, 0, -1, -1, 0, 2, 3, 0, 0, -1, -2, -2, -2, -1, 0, 1, 3, -1, -2, -3, -3, -3, -2, -1, 0, 0, 0, 0, -1, -2, -3, -2, -2, -1, 0, 0, 0, 1, 0, -2, -2, -2, -2, -1, 0, 0, 0, 2, 1, -1, -1, -2, -2, -1, 0, 0, 0, 1, 1, 0, 0, -1, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 2, 2, 0, 0, -1, -1, -1, 0, 0, 1, 2, 3, 1, 0, -1, -1, -1, -1, -1, 0, 2, 3, 1, 1, 0, -1, -2, -2, -1, 0, 2, 3, -3, -4, -4, -3, -3, -2, -1, 0, 0, 1, -1, -3, -3, -3, -3, -2, -1, 0, 0, 1, 0, -2, -2, -3, -3, -2, -1, 0, 0, 1, 0, -1, -1, -1, -2, -2, -1, 0, 0, 1, 1, 0, 0, 0, -1, -1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 2, 2, 1, 1, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 0, 0, 0, -1, -1, 0, 2, 3, 2, 2, 1, 0, -1, -1, -1, 0, 1, 3, -4, -5, -5, -4, -4, -3, -2, -1, 0, 1, -2, -3, -3, -4, -3, -3, -2, -1, 0, 1, -1, -1, -2, -3, -3, -3, -2, -1, 0, 1, 0, 0, -1, -1, -2, -2, -2, -1, -1, 1, 1, 1, 0, 0, -1, -1, 0, -1, 0, 0, 2, 2, 1, 1, 0, 0, 0, 0, 1, 0, 2, 2, 1, 1, 0, 0, 0, 0, 1, 1, 3, 2, 1, 1, 1, 0, -1, 0, 1, 1, 3, 2, 2, 1, 0, 0, -1, 0, 1, 1, 3, 3, 2, 1, 0, -1, -1, 0, 0, 1, -5, -6, -5, -5, -4, -4, -2, -1, -1, 1, -2, -3, -4, -4, -3, -3, -2, -2, -1, 0, 0, -1, -2, -2, -2, -2, -2, -2, -1, 0, 1, 0, -1, -1, -1, -1, -1, -2, -2, 0, 3, 2, 1, 0, 0, 0, 1, -1, -1, 0, 4, 3, 2, 2, 1, 1, 1, -1, 0, 0, 4, 4, 3, 2, 2, 1, 0, 0, 0, 1, 5, 4, 3, 3, 2, 1, -1, -1, 1, 1, 5, 5, 4, 3, 2, 0, -1, -1, 0, 1, 5, 5, 3, 3, 1, -1, -1, -1, 0, 0, -4, -5, -5, -5, -4, -3, -3, -2, -1, 0, -2, -3, -3, -3, -3, -3, -2, -3, -2, 0, 0, 0, -1, -1, -2, -2, -2, -3, -2, -1, 2, 2, 1, 0, 0, 0, -1, -2, -2, -1, 4, 4, 3, 2, 2, 1, 0, -1, -2, -1, 6, 5, 5, 4, 3, 2, 0, -2, -1, 0, 6, 6, 5, 5, 4, 2, -1, -1, 0, 0, 7, 6, 6, 5, 4, 1, -1, -1, 0, 1, 7, 7, 6, 5, 3, 0, -1, -1, 0, 1, 6, 6, 5, 4, 2, -1, -2, -1, -1, 1, -3, -4, -4, -4, -4, -3, -3, -3, -2, 0, -1, -2, -2, -2, -3, -2, -3, -3, -3, -1, 2, 1, 0, 0, -1, -1, -1, -3, -3, -2, 4, 3, 3, 2, 1, 1, 0, -2, -3, -2, 6, 5, 5, 4, 4, 2, 0, -1, -2, -1, 8, 7, 6, 6, 5, 2, -1, -2, -1, -1, 8, 8, 8, 7, 5, 2, -2, -1, -1, 0, 8, 8, 8, 7, 5, 1, -2, -1, 0, 0, 8, 8, 7, 7, 3, 0, -2, -1, 0, 0, 8, 8, 7, 4, 2, -1, -2, -1, 0, 1, },
{ -4, -5, -5, -6, -6, -5, -5, -4, -3, -2, -3, -4, -5, -5, -5, -4, -3, -2, -1, 0, -2, -4, -4, -4, -4, -2, -1, 0, 1, 2, -2, -3, -4, -4, -2, -1, 0, 2, 3, 4, -1, -3, -3, -3, -2, 0, 1, 3, 5, 6, 0, -2, -3, -2, -1, 0, 2, 3, 6, 7, 0, -1, -2, -2, -1, 1, 3, 3, 6, 9, 1, 0, -1, -1, 0, 2, 4, 5, 8, 10, 2, 1, 0, 0, 1, 3, 5, 7, 9, 11, 3, 2, 1, 1, 2, 3, 5, 7, 10, 12, -3, -4, -4, -5, -6, -5, -5, -4, -4, -6, -2, -3, -4, -4, -4, -4, -3, -2, -3, -4, -2, -3, -3, -3, -3, -2, -1, -1, -2, -2, -1, -3, -3, -3, -2, -1, 0, 1, 0, 0, 0, -2, -3, -3, -2, 0, 2, 3, 3, 2, 0, -1, -3, -3, -1, 1, 3, 4, 4, 4, 1, -1, -2, -2, -1, 2, 3, 4, 5, 5, 1, -1, -2, -2, 0, 2, 4, 5, 6, 6, 0, -1, -2, -2, -1, 1, 3, 4, 6, 7, 1, -1, -1, -1, 0, 1, 3, 4, 7, 8, -2, -2, -3, -4, -5, -6, -6, -7, -8, -8, -1, -2, -3, -3, -4, -5, -5, -5, -6, -6, 0, -2, -2, -3, -2, -3, -3, -4, -4, -5, 0, -1, -2, -2, -2, -1, -1, -2, -2, -3, 1, -1, -2, -2, -2, 0, 0, 0, 0, -1, 1, 0, -1, -2, -1, 1, 2, 2, 1, 1, 2, 0, -1, -2, -1, 2, 3, 3, 2, 2, 2, 1, -1, -1, -1, 1, 3, 3, 3, 3, 1, 0, -1, -1, -1, 0, 2, 3, 3, 4, 1, 0, -1, -1, -1, 0, 1, 2, 4, 4, 0, -1, -2, -3, -4, -6, -8, -9, -9, -9, 0, -1, -1, -2, -4, -5, -7, -7, -7, -7, 1, -1, -1, -2, -3, -4, -5, -5, -6, -6, 1, 0, -1, -2, -2, -3, -3, -4, -4, -5, 2, 0, -1, -2, -2, -1, -1, -2, -3, -3, 2, 1, 0, -1, -1, 0, 0, 0, -1, -2, 3, 1, 0, 0, -1, 1, 1, 1, 0, 0, 3, 2, 1, 0, -1, 0, 1, 1, 1, 0, 2, 1, 0, 0, -1, 0, 0, 1, 1, 1, 2, 1, 0, 0, -1, -1, 0, 1, 1, 2, 1, 0, 0, -1, -3, -5, -7, -8, -8, -8, 1, 0, 0, -1, -2, -4, -6, -8, -8, -8, 2, 0, 0, -1, -2, -4, -5, -6, -6, -7, 2, 1, 0, -1, -2, -3, -4, -5, -5, -6, 3, 2, 1, 0, -1, -2, -3, -3, -4, -4, 3, 2, 2, 1, 0, 0, -1, -2, -3, -3, 3, 2, 2, 2, 1, 1, 0, -1, -2, -2, 3, 3, 3, 2, 1, 0, 0, -1, -1, -2, 4, 3, 3, 2, 1, 0, -1, -1, -1, -1, 3, 3, 2, 2, 1, -1, -1, -1, -1, 0, 1, 0, 0, 0, -2, -3, -5, -6, -7, -8, 1, 0, 0, 0, -1, -3, -4, -6, -7, -8, 2, 0, 0, 0, -1, -2, -4, -5, -6, -7, 2, 1, 0, 0, 0, -2, -3, -4, -5, -6, 3, 2, 1, 0, 0, -1, -2, -3, -4, -5, 3, 2, 2, 1, 0, 0, 0, -2, -3, -4, 3, 3, 3, 2, 1, 1, 0, -2, -3, -4, 3, 3, 3, 3, 3, 1, 0, -1, -2, -3, 4, 3, 4, 4, 3, 1, 0, -1, -2, -3, 4, 4, 4, 3, 2, 1, 0, -1, -2, -2, 0, 0, 0, 0, 0, -1, -3, -5, -6, -7, 1, 0, 0, 0, 0, -1, -2, -4, -6, -7, 1, 0, 0, 0, 0, 0, -2, -4, -5, -7, 2, 0, 0, -1, 0, 0, -1, -3, -5, -6, 2, 1, 0, -1, -1, 0, 0, -2, -4, -5, 3, 1, 1, 0, -1, 0, 1, -1, -3, -5, 3, 2, 1, 1, 1, 1, 1, -1, -3, -4, 3, 3, 3, 2, 2, 2, 1, -1, -3, -4, 4, 4, 4, 4, 3, 2, 1, -1, -2, -3, 4, 4, 5, 4, 3, 2, 1, -1, -2, -3, -1, 0, 0, 0, 0, -1, -1, -3, -5, -7, -1, -1, -1, -1, -1, 0, -1, -2, -5, -7, -1, -1, -1, -1, -1, 0, 0, -1, -4, -6, 0, -1, -2, -2, -2, -1, 0, 0, -3, -5, 1, -1, -2, -2, -2, -1, 1, 1, -2, -5, 1, -1, -1, -2, -2, -1, 1, 1, -2, -4, 2, 0, -1, -1, -1, 0, 1, 1, -2, -4, 2, 1, 1, 0, 1, 1, 1, 0, -2, -4, 3, 3, 3, 2, 2, 2, 1, 0, -2, -4, 5, 5, 4, 3, 3, 2, 1, 0, -2, -3, -3, -2, -2, -1, 0, 0, 0, -2, -6, -9, -3, -2, -2, -2, -1, -1, 1, 0, -4, -7, -3, -3, -3, -3, -2, -1, 1, 1, -2, -7, -2, -3, -3, -3, -3, -2, 0, 2, 0, -5, -2, -2, -3, -3, -3, -1, 1, 3, 1, -3, -1, -2, -3, -3, -2, -1, 1, 3, 1, -2, 0, -2, -2, -2, -1, 0, 1, 2, 0, -3, 1, -1, -1, 0, 0, 1, 1, 1, 0, -3, 2, 1, 1, 1, 1, 1, 1, 1, -1, -3, 4, 4, 3, 3, 3, 2, 1, 1, -1, -3, -7, -5, -4, -3, -2, -2, -2, -3, -6, -9, -6, -5, -5, -4, -3, -2, -1, -1, -5, -8, -6, -5, -5, -4, -4, -2, 0, 1, -2, -7, -5, -5, -5, -4, -4, -2, 0, 1, 0, -5, -5, -4, -4, -4, -3, -1, 1, 2, 1, -3, -4, -4, -4, -3, -2, 0, 2, 3, 2, -2, -3, -3, -3, -2, -1, 1, 2, 3, 1, -2, -2, -2, -1, -1, 0, 1, 2, 2, 1, -3, 0, 0, 0, 1, 1, 1, 2, 1, 0, -3, 3, 2, 3, 3, 3, 2, 2, 1, 0, -3, },
{ -10, -10, -10, -10, -10, -9, -9, -9, -6, 1, -8, -9, -8, -8, -8, -8, -8, -7, -5, 2, -7, -6, -6, -6, -5, -6, -6, -6, -3, 3, -5, -4, -4, -3, -3, -3, -4, -4, -1, 4, -2, -2, -1, 0, -1, -1, -2, -3, 0, 5, 1, 1, 2, 2, 1, 0, -2, -1, 1, 6, 3, 3, 3, 3, 2, 1, -1, 0, 2, 9, 5, 5, 5, 5, 3, 0, -2, 0, 3, 9, 7, 7, 7, 5, 3, -1, -2, 0, 3, 10, 10, 9, 8, 5, 1, -2, -3, 1, 4, 10, -11, -10, -9, -9, -8, -8, -8, -7, -5, 1, -9, -8, -8, -7, -7, -7, -7, -6, -4, 2, -8, -7, -7, -6, -5, -5, -5, -4, -3, 3, -6, -6, -5, -4, -3, -3, -3, -3, 0, 4, -3, -4, -3, -1, 0, -1, -1, -1, 1, 5, -2, -1, 0, 2, 2, 1, 0, 0, 2, 6, 0, 0, 2, 3, 3, 2, -1, 1, 4, 8, 2, 2, 3, 4, 3, 1, -1, 1, 4, 9, 4, 4, 5, 5, 3, 0, -1, 2, 5, 9, 7, 6, 6, 4, 1, -1, -1, 3, 6, 10, -12, -10, -8, -8, -7, -6, -6, -5, -3, 1, -11, -10, -8, -7, -6, -5, -5, -4, -2, 2, -9, -9, -8, -7, -6, -4, -4, -3, -1, 3, -8, -7, -6, -5, -4, -3, -3, -2, 1, 4, -4, -4, -4, -3, -1, -1, -1, 0, 2, 5, -3, -2, -2, 0, 1, 1, 0, 2, 4, 6, -2, -1, 0, 1, 2, 1, 0, 3, 5, 8, -1, 0, 1, 3, 2, 1, 0, 3, 5, 9, 1, 2, 3, 4, 2, 0, 0, 3, 6, 9, 4, 4, 4, 4, 1, 0, 1, 4, 7, 10, -11, -10, -8, -7, -6, -5, -4, -2, -1, 1, -11, -9, -8, -7, -6, -5, -4, -2, 0, 2, -9, -9, -8, -7, -5, -4, -4, -1, 1, 3, -7, -8, -7, -6, -5, -3, -2, 0, 2, 4, -5, -4, -4, -4, -2, -1, 0, 2, 3, 5, -3, -3, -3, -2, 0, 1, 1, 3, 5, 6, -2, -2, -2, -1, 1, 1, 1, 4, 6, 7, -1, -1, 0, 1, 1, 0, 1, 4, 6, 8, 0, 1, 1, 2, 1, 0, 2, 5, 7, 8, 2, 2, 2, 2, 1, 1, 2, 6, 8, 9, -11, -9, -7, -6, -5, -3, -3, -1, 0, 1, -10, -8, -7, -5, -4, -2, -2, 0, 1, 2, -9, -8, -7, -5, -4, -3, -1, 1, 2, 3, -7, -7, -6, -5, -4, -3, 0, 2, 3, 4, -4, -4, -3, -3, -2, -1, 2, 3, 4, 4, -3, -3, -3, -2, -1, 0, 3, 4, 5, 6, -2, -2, -2, -1, 0, 0, 2, 4, 6, 7, -1, -1, -1, -1, 0, 0, 2, 4, 6, 7, 0, 0, 0, 0, 0, 0, 2, 4, 6, 8, 1, 1, 0, 1, 1, 1, 3, 5, 7, 8, -11, -9, -7, -6, -5, -2, -1, 0, 0, 0, -10, -8, -6, -5, -3, -1, 0, 1, 1, 2, -8, -7, -6, -5, -3, -1, 0, 2, 2, 2, -6, -6, -6, -4, -3, -1, 1, 2, 3, 3, -4, -4, -3, -2, -1, 0, 2, 3, 4, 4, -3, -3, -3, -2, 1, 1, 3, 4, 5, 6, -2, -2, -2, -1, 1, 1, 3, 4, 6, 7, -1, -2, -1, -1, 0, 0, 2, 4, 5, 7, 0, -1, -1, -1, 0, 0, 2, 4, 5, 7, 1, -1, -1, 0, 0, 0, 3, 4, 6, 8, -12, -10, -7, -5, -3, -1, -1, 0, 0, 0, -10, -8, -6, -4, -2, -1, 0, 0, 1, 1, -9, -7, -6, -4, -2, -1, 1, 1, 2, 2, -7, -6, -5, -3, -1, 0, 1, 2, 2, 3, -5, -4, -3, -2, 1, 2, 3, 4, 4, 4, -3, -3, -2, -1, 2, 3, 5, 6, 6, 7, -2, -2, -1, 0, 3, 3, 4, 5, 7, 9, -2, -1, -1, 0, 2, 2, 4, 5, 7, 9, 0, -1, -1, 0, 1, 1, 3, 4, 6, 9, 1, -1, -1, 0, 1, 1, 3, 4, 6, 9, -12, -9, -6, -3, -1, -2, -2, -1, -1, 0, -9, -7, -5, -3, 0, -1, -2, -1, 0, 1, -9, -7, -4, -3, -1, -1, -1, 0, 1, 2, -7, -5, -4, -2, -1, -1, 0, 2, 2, 3, -4, -3, -2, -1, 1, 1, 3, 3, 4, 4, -3, -2, -1, 1, 3, 3, 5, 6, 6, 7, -2, -1, 0, 2, 4, 4, 5, 6, 7, 9, -1, 0, 1, 2, 4, 4, 5, 6, 7, 10, 0, 0, 1, 2, 3, 3, 4, 5, 7, 10, 1, 0, 1, 2, 2, 2, 4, 5, 7, 11, -12, -9, -5, -2, -1, -2, -4, -3, -3, -2, -10, -7, -4, -2, 0, -2, -3, -3, -1, 0, -8, -6, -3, -2, 0, -2, -2, -1, 0, 2, -5, -4, -3, -1, 0, -1, -1, 0, 1, 3, -3, -2, -1, 1, 1, 1, 2, 2, 3, 4, -2, -1, 0, 2, 3, 3, 4, 5, 6, 6, -2, 0, 2, 3, 4, 4, 5, 6, 7, 8, -1, 1, 2, 3, 4, 5, 5, 6, 8, 10, 0, 1, 2, 3, 4, 4, 5, 6, 8, 11, 0, 1, 2, 3, 3, 3, 4, 5, 7, 11, -13, -9, -5, -2, -1, -3, -4, -5, -6, -6, -10, -7, -4, -1, -1, -3, -4, -4, -4, -3, -8, -6, -3, 0, -1, -2, -3, -3, -2, -1, -5, -3, -1, 0, 0, -1, -1, -1, -1, 0, -3, -1, 0, 2, 1, 1, 1, 1, 1, 2, -2, 1, 2, 3, 3, 2, 2, 3, 3, 4, -1, 1, 3, 4, 4, 4, 4, 4, 5, 6, 0, 1, 3, 5, 5, 5, 5, 5, 6, 7, 0, 1, 3, 5, 5, 5, 5, 5, 7, 7, -1, 0, 1, 3, 3, 3, 3, 4, 5, 8, },
{ 13, 14, 12, 9, 11, 13, 6, 4, 5, 6, 12, 14, 11, 9, 10, 13, 7, 3, 2, 7, 11, 13, 11, 9, 10, 13, 7, 1, 0, 5, 10, 12, 11, 9, 9, 11, 5, 0, -3, 4, 10, 10, 10, 6, 4, 6, 3, -2, -6, 1, 10, 9, 8, 4, 2, 2, 1, -3, -7, -1, 11, 9, 7, 4, 2, 4, 1, -3, -6, -2, 11, 9, 6, 5, 4, 5, 1, -3, -4, -1, 13, 9, 7, 8, 8, 7, 2, -3, -2, 0, 15, 10, 9, 10, 12, 10, 3, -2, -1, 1, 13, 14, 12, 8, 9, 7, 4, 2, 2, 1, 13, 14, 12, 9, 9, 10, 7, 5, 5, 6, 11, 13, 12, 10, 9, 10, 8, 5, 5, 8, 11, 11, 11, 9, 8, 10, 7, 5, 4, 7, 10, 9, 10, 7, 5, 7, 5, 2, 1, 4, 10, 8, 8, 5, 3, 3, 2, -1, -2, 2, 9, 8, 7, 5, 3, 5, 2, -1, -2, 1, 10, 8, 6, 5, 4, 5, 3, -1, -2, 0, 12, 8, 6, 7, 6, 6, 3, -1, -2, 0, 13, 7, 7, 7, 8, 7, 2, -1, -2, 0, 13, 13, 10, 9, 7, 5, 2, 2, 0, -2, 13, 12, 11, 10, 8, 8, 6, 4, 4, 3, 12, 12, 11, 10, 9, 9, 7, 5, 5, 6, 11, 10, 10, 10, 8, 9, 7, 5, 5, 7, 9, 8, 9, 8, 5, 6, 5, 3, 2, 5, 8, 5, 6, 6, 2, 3, 2, 1, 1, 3, 7, 5, 5, 5, 2, 3, 2, 0, 0, 2, 7, 5, 5, 6, 3, 4, 2, 0, -1, 0, 9, 6, 5, 6, 5, 5, 2, -1, -1, -1, 10, 7, 5, 6, 6, 5, 2, -1, -1, -2, 12, 10, 7, 6, 5, 3, 1, 0, -2, -5, 12, 10, 8, 8, 7, 6, 4, 3, 2, 1, 11, 10, 8, 8, 8, 7, 5, 4, 4, 4, 10, 8, 8, 9, 7, 7, 5, 4, 4, 6, 7, 6, 6, 7, 5, 5, 5, 3, 3, 5, 5, 3, 4, 5, 1, 2, 2, 1, 1, 3, 4, 3, 3, 4, 2, 2, 1, 0, -1, 1, 5, 3, 3, 4, 3, 2, 0, -1, -1, 0, 6, 4, 4, 4, 3, 3, 0, -1, -2, -2, 7, 5, 5, 4, 4, 3, 0, -2, -3, -4, 10, 8, 6, 5, 2, -1, -4, -5, -7, -8, 11, 8, 7, 6, 4, 0, -1, -2, -3, -4, 10, 8, 7, 6, 4, 1, 0, 0, -1, 0, 8, 7, 6, 5, 4, 1, 0, 1, 0, 3, 5, 5, 4, 3, 3, 0, 0, 1, 1, 3, 3, 2, 1, 2, 1, -1, -2, -1, -1, 1, 3, 1, 1, 1, 0, -3, -3, -3, -3, -2, 4, 1, 1, 1, 0, -2, -3, -4, -5, -4, 4, 2, 2, 2, 0, -2, -3, -5, -6, -6, 5, 4, 3, 3, 1, -1, -3, -5, -7, -8, 9, 6, 5, 3, 1, -1, -6, -8, -9, -9, 9, 6, 5, 3, 2, 0, -4, -5, -6, -4, 8, 6, 4, 3, 2, 0, -3, -4, -3, 1, 6, 5, 3, 2, 1, 1, -2, -3, -1, 3, 4, 3, 1, 0, 0, 1, -2, -3, -1, 2, 1, -1, -2, -1, -2, 0, -3, -5, -3, 0, 1, -2, -3, -3, -4, -3, -5, -7, -5, -2, 0, -2, -3, -3, -4, -3, -5, -8, -7, -5, 1, -1, -1, -2, -3, -2, -6, -8, -9, -7, 3, 1, 0, 0, -1, -1, -5, -8, -10, -9, 8, 3, 2, 2, -1, -4, -7, -9, -10, -12, 7, 3, 1, 1, -1, -4, -5, -6, -7, -6, 6, 2, 0, 1, -1, -3, -4, -5, -3, 0, 5, 1, -1, 0, -1, -3, -4, -4, -3, 1, 2, -2, -1, 0, -2, -2, -3, -5, -3, 1, -1, -4, -4, -2, -4, -4, -4, -6, -4, 0, -3, -6, -6, -5, -7, -8, -6, -8, -7, -2, -4, -6, -7, -6, -8, -9, -8, -9, -8, -4, -2, -4, -6, -6, -7, -8, -8, -9, -10, -7, -1, -3, -4, -5, -6, -7, -8, -9, -11, -9, 6, 1, 1, 1, -1, -6, -9, -10, -12, -15, 5, 1, 0, 1, -2, -5, -7, -8, -9, -10, 4, -1, -1, 1, -2, -5, -5, -6, -6, -4, 2, -2, -1, 1, -1, -5, -4, -6, -6, -3, 0, -3, -1, 1, -2, -3, -3, -7, -6, -3, -3, -5, -4, -1, -3, -5, -5, -8, -7, -4, -5, -7, -6, -4, -7, -10, -9, -9, -9, -7, -6, -8, -7, -6, -8, -11, -10, -10, -10, -9, -5, -7, -8, -7, -9, -11, -11, -10, -11, -11, -5, -6, -7, -7, -8, -10, -10, -11, -12, -12, 7, 1, 1, 2, -1, -8, -10, -11, -13, -17, 5, -1, 1, 2, -1, -7, -8, -9, -10, -13, 4, -2, 1, 2, -1, -6, -6, -7, -7, -8, 1, -3, 1, 2, -1, -5, -5, -6, -7, -8, 0, -3, 1, 2, -1, -4, -4, -7, -8, -8, -3, -5, -1, 0, -3, -4, -5, -8, -10, -10, -5, -7, -4, -3, -6, -11, -8, -9, -11, -12, -6, -8, -6, -4, -8, -13, -10, -10, -12, -12, -7, -9, -8, -6, -9, -13, -12, -11, -12, -13, -7, -8, -8, -7, -9, -12, -13, -12, -12, -13, 7, 1, 3, 4, 1, -9, -11, -11, -15, -18, 5, 0, 3, 5, 2, -7, -9, -8, -11, -14, 3, 0, 4, 5, 2, -7, -6, -5, -8, -10, 2, 0, 4, 5, 1, -5, -4, -5, -8, -10, 1, 0, 4, 4, 1, -4, -3, -5, -8, -10, -1, -2, 3, 2, -1, -4, -4, -7, -10, -11, -3, -3, 1, 1, -3, -12, -9, -8, -11, -12, -5, -5, 0, 0, -5, -15, -14, -9, -12, -13, -8, -8, -4, -1, -5, -16, -16, -11, -12, -13, -12, -11, -9, -3, -7, -17, -19, -12, -13, -13, },
},
{
{ -2, -2, -1, 0, 1, 2, 4, 7, 11, 15, -2, -1, 0, 0, 1, 2, 4, 7, 10, 14, -2, -1, 0, 1, 1, 2, 4, 7, 10, 13, -2, -1, 0, 1, 2, 2, 4, 6, 9, 12, -2, -1, 0, 1, 2, 3, 4, 6, 9, 12, -2, -1, 0, 1, 2, 3, 4, 6, 8, 11, -2, -1, 0, 1, 2, 3, 4, 5, 8, 11, -2, -1, 0, 1, 2, 4, 4, 5, 8, 10, -2, -1, 0, 1, 2, 4, 5, 5, 7, 10, -1, -2, -1, 1, 2, 3, 5, 5, 6, 9, -2, -3, -2, -1, 0, 0, 2, 4, 7, 11, -2, -2, -2, -1, 0, 1, 2, 4, 7, 10, -1, -2, -2, -1, 0, 1, 2, 4, 6, 9, -1, -2, -2, -1, 0, 1, 2, 4, 6, 9, -1, -1, -2, -1, 0, 1, 2, 4, 5, 8, -1, -1, -2, -1, 0, 1, 2, 3, 5, 8, -1, -1, -2, -1, 0, 2, 2, 3, 5, 7, -1, -1, -1, -1, 0, 2, 3, 3, 5, 7, 0, -1, -1, -1, 0, 1, 3, 3, 4, 6, 0, 0, -1, -2, 0, 1, 2, 3, 3, 5, -2, -2, -2, -2, -2, -1, 0, 2, 4, 7, -1, -2, -2, -1, -1, -1, 0, 2, 3, 6, -1, -1, -2, -1, -1, -1, 0, 2, 3, 6, -1, -1, -1, -1, -1, -1, 0, 1, 3, 5, -1, -1, -1, -1, -1, -1, 0, 1, 3, 5, 0, -1, -1, -1, -1, -1, 0, 1, 3, 4, 0, -1, -1, -1, -1, -1, 0, 1, 2, 4, 0, -1, -1, -1, -1, -1, 0, 1, 2, 3, 0, 0, -1, -1, 0, -1, 0, 0, 1, 3, 0, 0, 0, -1, 0, -1, -1, 0, 0, 2, -1, -1, -2, -1, -1, -1, -1, -1, 1, 3, -1, -1, -2, -1, -1, -1, -1, -1, 1, 3, -1, -1, -1, -1, -1, -1, -1, -1, 1, 2, 0, -1, -1, -1, -1, -1, 0, -1, 0, 2, 0, -1, -1, -1, -1, 0, 0, -1, 0, 2, 0, -1, -1, -1, -1, 0, 0, -1, 0, 1, 0, 0, -1, -1, -1, 0, 0, 0, -1, 1, 0, 0, -1, -1, -1, 0, 0, 0, -1, 1, 0, 0, 0, -1, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -3, -2, -1, -1, -2, -1, -1, -1, -1, -1, 0, 0, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, -1, -1, -1, -1, 0, 0, 0, 0, 0, -1, -1, -1, -2, -2, -1, -1, -1, -1, -1, -1, 0, -1, 0, 0, 0, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, -1, -1, -1, -1, -1, 0, 0, 0, 1, 0, -1, -1, -1, -1, 0, 0, 0, 0, 1, 0, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, 1, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -2, -1, 0, 0, 0, -1, -2, -2, -3, -2, 0, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 1, 0, 0, 0, 0, -1, -1, -1, 0, 0, 1, 0, 0, -1, 0, 0, -1, -1, 0, 0, 1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, 0, -2, -1, 0, 0, 0, -1, -2, -2, -2, -1, -2, -2, -1, 0, 0, -1, -2, -2, -2, -2, 1, 0, 0, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, 0, 0, -1, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -1, 0, 0, 0, -1, -1, -1, -1, -2, -2, -1, -1, -1, 0, -1, -2, -2, -2, 2, 2, 2, 1, 0, 0, 0, 0, 0, 0, 2, 2, 2, 1, 0, 0, 0, 0, -1, 0, 1, 1, 1, 1, 1, 0, 0, 0, -1, -1, 1, 1, 1, 1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, 0, 1, 0, 0, 0, 0, -1, -1, -1, -1, 0, 0, 1, 0, -1, -1, 4, 3, 3, 2, 1, 0, 0, 0, 0, 0, 3, 3, 3, 2, 1, 0, 0, 0, 0, 0, 2, 3, 3, 2, 1, 1, 0, 0, -1, -1, 2, 2, 2, 2, 1, 1, 0, 0, -1, -1, 1, 1, 1, 1, 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 1, 1, 1, 1, 0, -1, -1, -1, -1, 0, 1, 1, 1, 0, 0, -1, -1, -1, -1, 0, 1, 1, 1, 0, 0, },
{ 3, 2, 1, 0, -1, 0, 0, 1, 2, 2, 3, 2, 1, 0, -1, 0, 0, 1, 1, 2, 2, 2, 1, 0, -1, -1, 0, 0, 0, 1, 2, 1, 1, 0, -1, -1, -1, -1, 0, 0, 1, 0, 0, 0, -1, -1, -1, -1, 0, 0, 0, 0, -1, -1, -2, -1, -1, -1, -1, -1, 0, -1, -1, -2, -2, -2, -1, -1, 0, -2, 0, -1, -2, -2, -2, -2, -1, 0, -1, -2, -1, -2, -2, -3, -3, -2, -1, -1, -1, -2, -3, -3, -3, -3, -3, -2, -2, -1, -2, -3, 2, 2, 1, 0, 0, 0, 1, 1, 2, 3, 3, 2, 1, 0, -1, 0, 0, 1, 1, 2, 2, 2, 1, 0, -1, -1, 0, 0, 0, 1, 1, 2, 1, 0, -1, -1, -1, -1, -1, 0, 1, 1, 0, 0, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -2, -2, -1, -1, -1, -2, -1, -1, -2, -2, -2, -2, -1, -1, -1, -2, -2, -2, -2, -2, -2, -2, -2, -1, -2, -2, -4, -3, -3, -3, -3, -2, -2, -2, -3, -3, 2, 1, 0, 0, 0, 0, 1, 1, 2, 4, 2, 1, 1, 0, 0, 0, 0, 1, 1, 2, 2, 2, 1, 1, -1, -1, -1, 0, 0, 1, 1, 2, 1, 1, -1, -1, -1, -1, -1, 0, 1, 1, 1, 0, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -2, -1, -1, -2, -2, -2, -2, -1, -2, -2, -2, -2, -2, -2, -2, -3, -2, -2, -2, -2, -3, -2, -2, -2, -2, -4, -3, -2, -2, -2, -2, -2, -2, -3, -3, 1, 0, 0, 0, 0, 1, 1, 2, 3, 4, 1, 1, 0, 0, 0, 0, 1, 1, 2, 3, 2, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, -1, -1, -1, 0, 0, 1, 1, 1, 0, 0, -1, -1, -1, -1, -1, 0, 0, 0, 0, -1, -2, -1, -1, -1, -1, -1, -1, -1, -1, -2, -2, -2, -2, -2, -1, -2, -2, -1, -2, -2, -2, -2, -2, -2, -2, -3, -2, -2, -2, -2, -2, -2, -2, -2, -2, -4, -3, -2, -2, -2, -2, -2, -2, -3, -3, 1, 0, 0, 0, 0, 1, 2, 3, 4, 4, 1, 1, 0, 0, 0, 1, 2, 3, 3, 3, 2, 1, 0, 0, 0, 1, 1, 1, 2, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, -1, -1, -1, -1, 1, 1, 0, 0, 0, -1, -1, -1, -1, -1, 0, -1, 0, 0, -1, -2, -2, -2, -2, -1, -1, -1, -1, -1, -1, -2, -2, -2, -2, -2, -2, -2, -1, -1, -1, -2, -3, -2, -2, -2, -3, -2, -1, -1, -1, -2, -2, -2, -3, -3, 1, 0, 0, 0, 0, 2, 3, 4, 4, 5, 1, 1, 0, 0, 1, 1, 2, 3, 4, 4, 1, 1, 1, 0, 1, 1, 2, 2, 3, 3, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, -1, -1, -1, -1, -1, 1, 0, 0, 0, 0, -1, -2, -2, -2, -1, 0, 0, 0, 0, -1, -2, -2, -2, -2, -2, -1, -1, 0, 0, -1, -2, -2, -2, -2, -2, -2, -1, 0, 0, -1, -2, -2, -2, -2, -3, 1, 0, 0, -1, 0, 1, 2, 4, 5, 5, 1, 1, 0, 0, 0, 1, 2, 3, 4, 4, 1, 1, 1, 0, 1, 1, 2, 3, 3, 3, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, -1, -1, 1, 1, 1, 0, 0, -1, -1, -1, -1, -1, 1, 1, 0, 0, -1, -2, -2, -2, -2, -2, 0, 0, 0, 0, -1, -2, -2, -2, -2, -3, -1, 0, 0, 0, 0, -2, -2, -2, -2, -3, 0, 0, -1, -1, 0, 1, 2, 3, 4, 5, 1, 1, 0, 0, 0, 0, 2, 3, 4, 4, 1, 1, 1, 1, 1, 1, 1, 2, 3, 3, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, -1, 0, 0, 0, -1, 1, 1, 1, 0, 0, -1, -1, -1, -1, -2, 1, 1, 1, 0, -1, -2, -2, -2, -2, -2, 1, 1, 0, 0, -1, -2, -2, -2, -2, -3, 0, 1, 0, 0, -1, -2, -2, -2, -3, -3, 0, 0, -1, -1, -1, 1, 2, 3, 4, 5, 1, 0, 0, 0, 0, 0, 1, 2, 3, 4, 1, 1, 1, 1, 0, 0, 0, 1, 2, 3, 1, 1, 1, 1, 1, 0, 0, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, -1, -1, 0, 0, 0, 1, 1, 1, 0, -1, -1, -1, -1, -1, -1, 1, 1, 1, 0, -1, -2, -2, -2, -2, -2, 1, 1, 1, 0, -1, -1, -2, -2, -3, -3, 1, 0, 0, 0, -1, -1, -2, -3, -3, -3, 0, -1, -1, -1, -1, 0, 1, 2, 3, 4, 1, 0, -1, -1, -1, -1, 0, 1, 2, 3, 1, 0, 0, 0, 0, -1, 0, 0, 0, 2, 1, 1, 1, 1, 0, 0, -1, -1, -1, 1, 1, 1, 1, 1, 1, 0, -1, -1, 0, 1, 1, 1, 1, 1, 0, -1, -1, 0, 0, 0, 1, 1, 1, 0, -1, -1, -1, 0, 0, -1, 1, 1, 1, 0, -1, -1, -1, -1, -2, -2, 1, 1, 0, 0, -1, -2, -2, -2, -3, -3, 1, 0, 0, 0, -1, -1, -2, -3, -3, -4, },
{ -5, -4, -3, -2, -2, -2, -3, -4, -5, -6, -5, -4, -3, -2, -1, -2, -3, -4, -5, -5, -4, -3, -3, -3, -2, -2, -2, -4, -4, -3, -2, -3, -3, -3, -2, -1, -2, -2, -2, -1, -2, -2, -3, -2, -1, 0, -1, -1, 0, 0, -2, -2, -2, -1, 0, 1, 0, 0, 1, 2, -1, -2, -1, -1, 1, 1, 1, 2, 2, 2, -1, -1, -1, -1, 0, 1, 1, 1, 1, 2, 0, -1, -2, -1, 0, 0, 0, 0, 0, 1, 0, -1, -2, -2, -1, -1, 0, -1, 0, 0, -6, -4, -3, -2, -1, -1, -1, -2, -3, -3, -6, -4, -3, -2, -2, -1, -1, -2, -3, -3, -4, -4, -4, -3, -3, -1, -2, -3, -2, -1, -2, -3, -3, -3, -2, -1, -2, -2, -1, 0, -1, -2, -2, -2, -1, 0, 0, 0, 0, 1, -1, -1, -2, -1, 0, 1, 1, 1, 2, 2, -1, -1, -1, -1, 0, 1, 1, 1, 2, 2, -1, -1, -1, -1, 0, 0, 0, 0, 1, 2, 0, -1, -1, -1, -1, -1, -1, 0, 0, 1, 0, -1, -2, -2, -2, -2, -2, -1, 0, 0, -6, -5, -3, -2, -1, 0, 0, 0, -1, -2, -6, -5, -3, -2, -1, -1, 0, -1, -1, -1, -5, -4, -4, -3, -2, -1, -1, -1, -1, 0, -3, -3, -3, -3, -2, 0, -1, -1, 0, 1, -2, -2, -2, -2, -1, 0, 0, 0, 1, 2, -1, -1, -2, -2, -1, 0, 1, 1, 2, 3, -1, -1, -1, -1, -1, 0, 0, 1, 2, 3, 0, -1, -1, -1, -1, -1, -1, 0, 1, 2, 0, 0, -1, -2, -1, -1, -1, 0, 0, 1, 1, 0, -1, -2, -2, -2, -2, -1, 0, 1, -6, -5, -4, -2, -1, 0, 1, 0, 0, 0, -6, -5, -4, -2, -1, 0, 0, 0, 0, 0, -5, -5, -3, -3, -2, 0, 0, 0, 0, 1, -3, -3, -3, -2, -1, 0, 0, 0, 1, 2, -2, -2, -2, -1, 0, 0, 0, 1, 2, 2, -1, -1, -1, -1, 0, 0, 1, 1, 2, 3, -1, -1, -1, -1, 0, 0, 0, 1, 2, 3, 0, 0, 0, -1, -1, -1, -1, 0, 1, 2, 1, 0, 0, -1, -1, -1, -1, 0, 1, 1, 2, 0, 0, -1, -1, -2, -2, -1, 0, 1, -6, -5, -4, -2, -1, 0, 0, 1, 1, 0, -6, -5, -4, -3, -2, 0, 0, 1, 1, 1, -6, -5, -3, -3, -2, 0, 0, 1, 1, 1, -4, -3, -3, -2, -1, 0, 0, 1, 1, 2, -2, -2, -2, -1, 0, 0, 1, 2, 2, 3, -1, -1, -1, 0, 0, 0, 1, 2, 3, 3, 0, 0, 0, 0, 0, 0, 1, 1, 2, 3, 1, 1, 0, 0, 0, 0, 0, 1, 2, 3, 2, 1, 1, 0, 0, -1, -1, 0, 1, 2, 2, 1, 1, 0, -1, -1, -1, 0, 0, 0, -7, -5, -4, -3, -2, -1, 0, 1, 1, 1, -6, -5, -4, -3, -2, -1, 0, 1, 1, 1, -5, -4, -4, -3, -2, -1, 0, 1, 1, 1, -3, -3, -3, -2, -1, -1, 0, 1, 1, 1, -2, -2, -1, 0, 0, 0, 1, 2, 2, 2, -1, 0, 1, 1, 1, 0, 1, 2, 2, 3, 1, 1, 1, 2, 1, 0, 1, 1, 2, 3, 2, 2, 2, 2, 1, 0, 0, 1, 2, 3, 3, 3, 2, 1, 0, 0, 0, 0, 1, 1, 3, 3, 2, 1, 0, -1, -1, -1, -1, 0, -6, -5, -4, -3, -3, -2, -1, 0, 1, 1, -6, -5, -4, -3, -3, -2, -1, 0, 1, 1, -5, -4, -3, -3, -2, -2, -1, 0, 1, 1, -3, -3, -2, -2, -1, -1, 0, 1, 1, 1, -1, -1, 0, 1, 0, 0, 1, 1, 2, 2, 0, 1, 2, 2, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 1, 0, 1, 1, 1, 3, 4, 4, 4, 3, 1, 0, 0, 1, 1, 2, 4, 4, 4, 2, 1, 0, 0, 0, 0, 1, 5, 4, 3, 2, 1, -1, -2, -1, -1, 0, -6, -5, -4, -3, -3, -2, -2, -1, 1, 1, -6, -5, -4, -3, -3, -3, -2, -1, 1, 1, -4, -3, -3, -3, -2, -3, -2, -1, 1, 1, -2, -2, -2, -1, -1, -1, -1, 0, 1, 1, -1, 0, 0, 1, 1, 0, 1, 1, 2, 2, 1, 2, 3, 3, 2, 1, 1, 1, 2, 3, 3, 4, 5, 4, 2, 1, 1, 1, 1, 2, 5, 5, 5, 4, 2, 0, 0, 0, 1, 2, 6, 6, 5, 3, 2, 0, -1, -1, 0, 1, 6, 6, 5, 3, 1, -1, -2, -1, -1, -1, -6, -5, -4, -4, -4, -3, -2, -1, 0, 1, -6, -5, -4, -3, -3, -3, -2, -1, 0, 1, -4, -3, -2, -2, -2, -2, -2, -1, 0, 1, -2, -1, -1, 0, -1, -1, -1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 4, 2, 2, 2, 1, 1, 2, 2, 4, 5, 5, 4, 3, 2, 1, 0, 1, 2, 6, 6, 6, 4, 2, 1, 0, 0, 0, 1, 7, 7, 6, 4, 2, 0, -1, -1, 0, 0, 7, 7, 6, 4, 1, -1, -2, -1, -1, -1, -6, -5, -4, -4, -4, -4, -3, -1, 0, 1, -5, -4, -4, -3, -3, -3, -3, -1, 0, 1, -4, -3, -2, -2, -1, -2, -2, -1, 0, 1, -2, -1, 0, -1, 0, 0, 0, 0, 1, 1, 0, 1, 1, -1, 1, 1, 1, 1, 1, 2, 3, 4, 3, 1, 2, 2, 2, 1, 1, 2, 5, 6, 6, 4, 3, 3, 1, 0, 1, 2, 7, 8, 7, 5, 3, 1, 0, 0, 0, 1, 8, 8, 7, 4, 2, 1, 0, -1, 0, 0, 9, 8, 6, 4, 1, 0, -1, -1, -1, -1, },
{ 4, 4, 5, 4, 4, 3, 3, 5, 9, 10, 4, 4, 4, 4, 3, 2, 3, 4, 7, 8, 4, 4, 4, 3, 2, 1, 1, 3, 5, 6, 4, 4, 4, 3, 2, 1, 1, 2, 3, 4, 3, 3, 3, 2, 1, 1, 1, 1, 2, 2, 3, 2, 2, 1, -1, -1, 0, 0, 1, 1, 2, 1, 1, -1, -2, -2, -3, -2, -1, -1, 1, 1, 0, -2, -3, -3, -4, -3, -3, -3, 1, 0, -1, -3, -4, -4, -4, -4, -5, -5, 0, -1, -2, -4, -4, -5, -6, -6, -7, -7, 4, 4, 4, 4, 3, 2, 2, 4, 7, 8, 4, 4, 4, 4, 2, 1, 1, 3, 5, 6, 4, 4, 4, 3, 2, 1, 1, 2, 4, 4, 4, 4, 3, 3, 2, 1, 1, 2, 3, 3, 3, 3, 3, 2, 1, 1, 1, 1, 2, 1, 3, 2, 2, 1, 0, 0, 0, 0, 0, 0, 2, 1, 1, -1, -2, -2, -2, -2, -2, -2, 2, 1, 0, -2, -3, -3, -3, -3, -3, -4, 1, 0, -1, -3, -3, -3, -4, -4, -4, -5, 0, -1, -2, -3, -4, -5, -5, -5, -6, -6, 3, 3, 3, 3, 2, 1, 1, 2, 5, 6, 4, 4, 3, 3, 2, 1, 1, 2, 4, 4, 4, 4, 4, 3, 2, 2, 2, 2, 3, 3, 4, 4, 4, 3, 2, 1, 1, 2, 2, 1, 3, 3, 3, 2, 1, 1, 1, 1, 1, 0, 2, 2, 1, 1, 0, 0, 0, 0, -1, -1, 2, 1, 1, 0, -2, -2, -2, -2, -3, -3, 2, 1, 0, -1, -2, -3, -3, -3, -4, -4, 1, 0, -1, -2, -3, -3, -3, -4, -5, -5, 1, 0, -1, -2, -3, -4, -4, -5, -6, -7, 4, 4, 3, 2, 1, 0, 0, 1, 3, 4, 5, 4, 4, 3, 2, 1, 1, 2, 2, 2, 4, 4, 4, 4, 3, 1, 2, 2, 1, 1, 4, 4, 3, 3, 2, 1, 1, 1, 1, 0, 4, 3, 3, 3, 1, 1, 1, 0, 0, -1, 2, 2, 2, 2, 0, 0, 0, -1, -1, -2, 2, 1, 1, 0, -1, -2, -2, -3, -3, -3, 2, 1, 0, 0, -1, -2, -3, -3, -4, -5, 1, 0, 0, -1, -2, -3, -3, -4, -5, -6, 0, 0, -1, -1, -2, -3, -4, -5, -7, -8, 5, 4, 3, 2, 1, 0, 0, 0, 2, 2, 5, 4, 4, 3, 3, 1, 1, 1, 1, 1, 5, 4, 4, 3, 3, 1, 1, 1, 0, 0, 4, 4, 3, 3, 2, 0, 0, 0, 0, -1, 3, 3, 3, 2, 2, 0, 0, -1, -1, -1, 2, 2, 2, 2, 1, 0, -1, -2, -2, -2, 2, 1, 1, 0, -1, -1, -2, -3, -3, -4, 1, 1, 0, 0, -1, -1, -3, -3, -4, -5, 1, 0, 0, -1, -1, -2, -3, -4, -5, -6, 0, 0, -1, -1, -2, -2, -4, -5, -6, -8, 5, 4, 3, 2, 1, 0, 0, 0, 1, 1, 5, 4, 4, 3, 2, 1, 0, 0, 0, 0, 5, 4, 4, 3, 2, 0, 0, 0, 0, -1, 4, 4, 3, 3, 2, 1, 0, -1, -1, -1, 3, 3, 3, 2, 2, 0, 0, -1, -1, -2, 2, 2, 2, 1, 1, 0, 0, -1, -2, -2, 2, 1, 1, 0, 0, -1, -2, -3, -3, -4, 1, 1, 0, 0, 0, -1, -2, -3, -4, -5, 0, 0, 0, 0, -1, -1, -3, -4, -5, -6, 0, -1, -1, -1, -1, -2, -3, -5, -6, -7, 5, 4, 3, 3, 1, 1, 0, 0, 0, 0, 5, 4, 4, 3, 2, 1, 0, 0, 0, -1, 5, 4, 4, 3, 2, 1, 1, 0, -1, -1, 4, 4, 4, 3, 2, 1, 1, 0, -1, -2, 3, 3, 3, 2, 2, 1, 1, 0, -1, -2, 2, 1, 1, 1, 0, 0, 0, -1, -2, -2, 1, 0, 0, 0, -1, -1, -2, -3, -4, -4, 0, 0, 0, -1, -1, -1, -2, -4, -4, -5, -1, -1, -1, -1, -1, -1, -2, -4, -5, -6, -2, -2, -2, -2, -2, -2, -3, -5, -6, -8, 5, 4, 3, 2, 1, 1, 0, 0, 0, -1, 5, 4, 3, 3, 2, 1, 1, 0, 0, -1, 5, 4, 3, 3, 2, 2, 2, 0, 0, -1, 4, 3, 3, 2, 2, 2, 2, 0, -1, -1, 2, 2, 2, 2, 1, 1, 1, 0, -1, -2, 1, 0, 0, 0, 0, 0, 0, -1, -2, -2, 0, -1, -1, -2, -2, -1, -2, -3, -3, -4, -1, -1, -2, -2, -2, -2, -2, -3, -4, -5, -2, -2, -3, -3, -3, -3, -3, -4, -5, -6, -3, -4, -4, -4, -3, -3, -4, -5, -6, -8, 4, 4, 3, 1, 1, 1, 1, 0, -1, -1, 5, 4, 3, 2, 2, 2, 2, 0, 0, -1, 4, 4, 3, 3, 2, 2, 2, 1, 0, -1, 3, 3, 2, 2, 2, 2, 2, 1, 0, -2, 1, 1, 1, 1, 1, 1, 1, 0, -1, -2, 0, -1, -1, -1, -1, 0, 0, -1, -2, -3, -1, -2, -2, -2, -2, -2, -2, -3, -4, -4, -2, -3, -3, -3, -3, -3, -3, -3, -4, -5, -4, -4, -5, -4, -4, -3, -3, -4, -5, -6, -6, -6, -5, -5, -5, -5, -5, -6, -6, -8, 4, 3, 2, 1, 1, 1, 1, 0, -1, -2, 4, 4, 3, 2, 2, 2, 2, 1, -1, -2, 3, 3, 3, 3, 2, 2, 2, 1, -1, -2, 2, 2, 2, 2, 2, 2, 2, 1, 0, -2, 0, 0, 0, 1, 1, 1, 1, 0, -1, -2, -1, -1, -1, -1, -1, 0, 0, -1, -2, -3, -2, -3, -2, -2, -2, -2, -2, -3, -3, -4, -4, -4, -4, -4, -3, -3, -3, -4, -4, -5, -6, -6, -6, -5, -5, -4, -5, -5, -5, -6, -8, -8, -7, -7, -6, -6, -6, -7, -7, -8, },
{ -5, -7, -13, -15, -13, -9, -7, -7, -8, -11, -5, -6, -7, -8, -7, -6, -4, -4, -5, -8, -6, -6, -7, -6, -5, -3, -2, -2, -3, -7, -6, -6, -7, -7, -5, -2, 0, 0, -1, -5, -6, -6, -6, -6, -4, 0, 2, 2, 1, -2, -5, -5, -5, -4, -2, 1, 3, 4, 3, 0, -5, -4, -4, -2, 0, 3, 4, 5, 4, 2, -4, -4, -2, 0, 2, 4, 5, 6, 6, 4, -3, -3, -1, 1, 4, 5, 6, 7, 7, 5, -3, -2, 1, 4, 7, 7, 7, 9, 8, 7, -3, -4, -8, -12, -13, -10, -7, -7, -7, -9, -2, -3, -3, -5, -7, -6, -5, -4, -5, -8, -2, -3, -4, -5, -4, -4, -3, -3, -4, -6, -2, -2, -3, -4, -4, -1, 0, -1, -2, -5, -2, -2, -2, -3, -3, 0, 2, 1, 0, -3, -1, -1, -1, -1, -1, 1, 4, 3, 2, -1, 0, -1, 0, 1, 1, 3, 5, 5, 3, 2, 0, 0, 1, 2, 3, 4, 5, 6, 5, 3, 1, 0, 2, 3, 5, 5, 6, 7, 6, 5, 2, 0, 1, 4, 7, 8, 8, 8, 8, 6, -4, -3, -5, -12, -13, -10, -7, -6, -6, -8, -2, -1, -1, -3, -8, -7, -5, -5, -5, -7, -1, -1, -2, -2, -3, -5, -4, -3, -4, -6, -1, -1, -2, -2, -3, -2, -2, -2, -3, -5, 0, -1, -1, -1, -2, 0, 1, 0, -1, -3, 1, 0, 0, 0, 0, 2, 3, 2, 1, -1, 1, 0, 1, 2, 3, 4, 4, 4, 2, 0, 2, 1, 2, 4, 4, 5, 5, 5, 4, 2, 3, 2, 3, 4, 6, 7, 6, 6, 5, 4, 4, 2, 3, 5, 8, 9, 8, 7, 6, 5, -6, -5, -6, -10, -12, -11, -7, -6, -6, -7, -3, -2, -2, -3, -8, -8, -6, -5, -5, -7, -1, 0, -1, -1, -3, -5, -5, -4, -5, -6, 0, 0, 0, -1, -1, -3, -3, -3, -4, -5, 1, 0, 0, 0, -1, 0, -1, -1, -2, -3, 2, 1, 1, 2, 2, 2, 2, 1, -1, -2, 3, 2, 2, 4, 4, 4, 3, 2, 1, -1, 3, 2, 3, 5, 5, 5, 4, 4, 3, 1, 4, 3, 4, 5, 6, 7, 5, 5, 4, 3, 5, 4, 4, 6, 9, 10, 7, 6, 5, 5, -8, -7, -8, -11, -12, -10, -7, -5, -5, -6, -5, -4, -4, -5, -8, -8, -6, -4, -5, -6, -2, -1, -2, -2, -4, -6, -5, -4, -4, -5, 0, 0, -1, -1, -2, -4, -4, -3, -4, -5, 1, 1, 0, 0, -1, -1, -3, -3, -3, -4, 2, 2, 2, 2, 0, 0, -1, -1, -2, -3, 3, 2, 2, 4, 3, 1, 1, 0, -1, -2, 3, 2, 4, 5, 5, 3, 2, 1, 1, 0, 4, 3, 4, 5, 6, 5, 3, 2, 2, 1, 5, 4, 4, 6, 8, 9, 6, 4, 3, 3, -9, -9, -9, -11, -12, -11, -7, -4, -4, -5, -5, -6, -5, -6, -9, -8, -6, -4, -3, -5, -3, -3, -3, -3, -5, -6, -5, -4, -4, -5, -1, -2, -2, -3, -3, -5, -5, -4, -4, -5, 1, 0, -1, -1, -1, -2, -3, -3, -3, -4, 2, 1, 1, 0, 0, 0, -1, -2, -2, -3, 2, 2, 2, 2, 2, 1, 0, -1, -1, -2, 2, 2, 3, 4, 3, 1, 1, 1, 0, -1, 3, 3, 3, 5, 5, 4, 2, 1, 1, 1, 5, 4, 4, 5, 7, 8, 5, 3, 2, 2, -11, -11, -10, -11, -13, -11, -8, -4, -2, -3, -8, -8, -8, -8, -10, -9, -6, -4, -2, -3, -6, -6, -6, -6, -7, -7, -5, -3, -2, -3, -4, -5, -5, -6, -6, -5, -4, -3, -2, -3, -3, -3, -4, -5, -3, -3, -3, -2, -2, -2, -1, -2, -2, -2, -1, 0, -1, -1, 0, -1, 0, -1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 3, 3, 2, 3, 4, 3, 3, 2, 3, 3, 4, 4, 3, 5, 6, 7, 5, 4, 3, 3, -12, -12, -10, -11, -12, -10, -5, -2, -1, -1, -9, -10, -9, -8, -9, -8, -4, -2, -1, -1, -7, -8, -8, -7, -7, -6, -3, -2, 0, -1, -6, -6, -7, -6, -5, -4, -3, -1, 0, -1, -5, -5, -5, -5, -2, -1, -1, 0, 0, 0, -3, -4, -3, -2, -1, 1, 1, 1, 1, 1, -2, -2, -1, 0, 0, 2, 3, 2, 2, 2, 1, 0, 0, 1, 1, 3, 4, 3, 3, 3, 4, 3, 2, 2, 3, 4, 4, 4, 4, 4, 6, 5, 4, 4, 6, 7, 6, 5, 4, 4, -14, -12, -11, -10, -11, -9, -5, 0, 2, 2, -11, -11, -9, -8, -8, -6, -3, 0, 1, 2, -9, -9, -8, -6, -5, -5, -2, 0, 1, 2, -8, -7, -7, -6, -4, -3, -1, 1, 2, 2, -6, -6, -6, -5, -2, 0, 1, 2, 3, 3, -5, -5, -4, -4, -1, 3, 4, 3, 4, 4, -4, -4, -3, -2, 0, 4, 5, 5, 5, 5, -1, -2, -1, 0, 0, 4, 6, 6, 6, 6, 3, 2, 1, 2, 3, 4, 6, 6, 6, 6, 6, 6, 4, 4, 6, 7, 8, 6, 5, 6, -15, -13, -11, -9, -9, -8, -4, 0, 3, 6, -13, -11, -9, -7, -6, -5, -2, 2, 4, 6, -11, -10, -8, -6, -4, -3, 1, 3, 5, 7, -9, -8, -7, -6, -3, -1, 2, 4, 5, 6, -8, -7, -7, -5, -3, 1, 4, 5, 6, 7, -7, -6, -5, -5, -2, 3, 7, 7, 7, 8, -5, -5, -4, -4, -1, 4, 8, 8, 8, 9, -3, -3, -3, -2, -1, 3, 8, 9, 10, 10, 1, 0, 0, 1, 1, 2, 6, 8, 8, 9, 5, 5, 3, 4, 4, 5, 6, 6, 6, 7, },
{ -11, -14, -9, -8, -12, -17, -14, -12, -14, -18, -9, -10, -4, -4, -11, -17, -12, -10, -13, -16, -5, -7, 0, -3, -10, -16, -10, -9, -10, -12, -3, -4, 3, -1, -9, -14, -7, -7, -8, -9, -1, 0, 5, 0, -3, -7, -3, -4, -6, -6, 0, 2, 8, 2, -1, -6, 0, -2, -6, -8, 0, 2, 7, 4, -2, -7, -2, -4, -7, -9, 0, 1, 6, 3, -2, -9, -4, -6, -10, -13, 0, 1, 5, 3, -2, -10, -8, -9, -12, -17, 0, 1, 3, 2, -3, -12, -12, -13, -16, -21, -7, -10, -7, -7, -9, -13, -13, -10, -11, -13, -8, -9, -6, -7, -10, -13, -11, -9, -10, -11, -6, -8, -3, -5, -9, -13, -10, -8, -9, -7, -5, -6, -2, -4, -9, -12, -7, -7, -5, -4, -3, -2, 2, -2, -4, -6, -4, -5, -3, -2, -1, 0, 4, 0, -3, -6, -2, -2, -4, -2, 0, 1, 5, 1, -3, -7, -3, -4, -5, -4, 0, 1, 4, 1, -4, -7, -4, -6, -8, -8, -1, 1, 4, 0, -4, -9, -8, -9, -11, -14, -1, 0, 3, 0, -5, -11, -11, -12, -14, -18, -5, -8, -6, -6, -8, -9, -9, -10, -9, -8, -6, -9, -7, -8, -9, -10, -9, -9, -9, -7, -8, -9, -6, -7, -10, -10, -8, -8, -7, -4, -7, -7, -4, -6, -9, -10, -6, -8, -4, -1, -4, -4, 0, -2, -4, -5, -3, -6, -1, 2, -2, -1, 2, 0, -3, -4, -2, -5, -2, 3, -2, -1, 2, 0, -3, -6, -3, -6, -4, 2, -2, 0, 2, 0, -4, -6, -4, -8, -6, -3, -2, 0, 2, 0, -4, -8, -6, -10, -8, -9, -1, 0, 2, -1, -5, -9, -9, -12, -13, -15, -4, -6, -5, -5, -6, -6, -7, -8, -9, -6, -6, -8, -7, -7, -8, -8, -8, -8, -8, -5, -7, -9, -7, -8, -9, -8, -7, -7, -6, -2, -7, -8, -6, -6, -8, -8, -6, -6, -3, 0, -5, -5, -2, -3, -4, -5, -3, -3, -1, 3, -3, -2, 1, 0, -3, -4, -2, -2, 0, 4, -2, -1, 1, 0, -4, -4, -3, -3, -2, 3, -2, -1, 1, 0, -4, -5, -3, -5, -3, -1, -2, 0, 1, 0, -4, -6, -6, -8, -7, -7, -1, 0, 1, 0, -4, -7, -8, -10, -12, -13, -3, -3, -3, -3, -2, -2, -5, -7, -7, -5, -4, -6, -5, -5, -4, -3, -6, -6, -6, -4, -6, -7, -6, -6, -5, -3, -6, -5, -4, -2, -6, -7, -6, -6, -4, -3, -5, -4, -2, 0, -6, -5, -3, -3, -1, -1, -3, -2, 0, 2, -3, -2, 0, -1, 0, 0, -1, 0, 2, 3, -1, -1, 0, 0, 0, -1, -2, -1, 1, 2, -1, 0, 1, 0, -1, -1, -3, -1, 0, 0, 0, 1, 1, 1, -1, -3, -5, -4, -4, -6, 1, 1, 1, 0, -2, -4, -7, -8, -9, -12, 0, 1, 1, 1, 1, -1, -2, -3, -3, -3, -1, -1, -1, -1, 0, -1, -2, -3, -2, -2, -3, -3, -2, -2, -1, -2, -2, -2, -1, 0, -4, -4, -2, -3, -2, -3, -2, -1, 0, 2, -4, -3, -2, -2, 0, 0, 0, 0, 2, 4, -2, 0, 2, 1, 1, 0, 2, 2, 4, 5, 1, 2, 3, 2, 1, 0, 2, 3, 4, 5, 2, 3, 4, 2, 1, 0, 1, 3, 3, 3, 3, 4, 4, 3, 1, -1, -1, 1, 0, -2, 4, 3, 3, 1, 0, -3, -4, -4, -5, -8, 4, 4, 5, 4, 5, 4, 0, -1, -1, -1, 3, 3, 4, 3, 3, 3, 0, -1, 0, 0, 1, 2, 3, 2, 2, 2, 0, -1, 0, 1, 0, 1, 2, 1, 2, 3, 0, 0, 1, 3, -1, 1, 2, 2, 1, 2, 1, 0, 2, 4, 2, 3, 4, 4, 4, 5, 4, 2, 4, 6, 4, 6, 6, 5, 6, 6, 6, 4, 6, 7, 5, 7, 6, 5, 6, 6, 6, 4, 6, 6, 6, 7, 6, 5, 5, 4, 4, 3, 3, 0, 6, 6, 4, 3, 2, 0, 0, 0, -2, -5, 10, 8, 7, 6, 6, 5, 1, -1, -1, 0, 9, 7, 6, 5, 5, 4, 1, -1, 0, 1, 7, 6, 5, 4, 4, 3, 1, -1, 0, 2, 5, 4, 4, 3, 3, 3, 1, -1, 0, 3, 4, 4, 4, 3, 1, 2, 1, -1, 1, 3, 6, 6, 6, 5, 5, 6, 4, 1, 3, 6, 8, 8, 8, 7, 8, 9, 7, 4, 6, 9, 8, 8, 8, 7, 8, 8, 7, 5, 6, 8, 8, 7, 8, 7, 7, 7, 6, 4, 5, 2, 7, 6, 6, 5, 4, 3, 2, 1, 1, -3, 12, 10, 9, 9, 9, 7, 2, -1, 0, 0, 11, 9, 8, 7, 8, 6, 1, -2, 0, 1, 10, 8, 6, 4, 5, 5, 1, -3, -1, 1, 8, 6, 4, 3, 3, 4, 0, -3, -1, 1, 7, 5, 4, 2, 1, 3, 1, -3, -1, 2, 9, 8, 6, 4, 4, 6, 3, -1, 1, 5, 10, 10, 8, 7, 8, 9, 6, 2, 4, 9, 10, 10, 8, 8, 9, 10, 6, 4, 6, 10, 10, 10, 9, 9, 9, 9, 6, 4, 7, 5, 10, 9, 8, 7, 8, 6, 4, 3, 3, 0, 14, 13, 12, 12, 14, 9, 1, -2, 1, 1, 13, 11, 10, 8, 11, 7, 0, -3, 0, 0, 11, 10, 8, 5, 5, 5, 0, -4, -2, -1, 10, 9, 6, 3, 3, 4, 0, -5, -3, -1, 9, 7, 5, 2, 1, 3, 0, -5, -4, 0, 11, 10, 7, 4, 4, 5, 1, -4, -3, 2, 12, 11, 9, 7, 8, 10, 4, -2, 1, 7, 12, 11, 10, 9, 10, 11, 5, 0, 4, 9, 12, 12, 11, 10, 12, 12, 6, 3, 7, 7, 13, 12, 11, 10, 12, 11, 6, 5, 5, 3, },
},
{
{ 0, 0, -1, -1, -1, -1, -1, -1, -1, 0, 1, 0, 0, -1, -1, -1, -1, -1, -1, -1, 1, 0, 0, -1, -1, -1, -1, -1, -2, -1, 1, 0, 0, -1, -1, -1, -1, -2, -2, -2, 1, 0, -1, -1, -1, -1, -1, -2, -2, -2, 0, 0, -1, -1, -2, -1, -1, -1, -2, -2, 0, -1, -1, -2, -2, -2, -1, -2, -2, -2, 0, -1, -1, -2, -2, -2, -2, -2, -1, -2, 0, 0, -1, -2, -2, -2, -2, -1, -1, -1, 0, 0, -1, -2, -2, -2, -2, -1, -1, -1, 0, 0, -1, -1, -1, -1, -1, 0, 0, 0, 1, 1, 0, -1, -1, -1, 0, 0, -1, 0, 1, 0, 0, -1, -1, -1, -1, -1, -1, -1, 1, 0, 0, -1, -1, -1, -1, -1, -1, -2, 1, 0, -1, -1, -1, -1, -1, -2, -2, -2, 0, 0, -1, -1, -2, -1, -1, -2, -2, -2, 0, 0, -1, -2, -2, -1, -1, -2, -1, -1, 0, 0, -1, -2, -2, -2, -2, -1, -1, -1, 0, 0, -1, -2, -2, -2, -1, -1, -1, -1, 0, 0, 0, -1, -2, -1, -1, 0, 0, 0, 0, -1, -1, -2, -2, -2, -1, 0, 0, 0, 1, 1, 0, 0, -1, -1, 0, 0, 0, 0, 1, 1, 0, 0, -1, -1, -1, -1, -1, -1, 1, 0, 0, -1, -1, -1, -1, -1, -1, -2, 1, 0, 0, -1, -1, -1, -1, -1, -2, -2, 0, 0, -1, -1, -2, -1, -1, -1, -2, -2, 0, 0, -1, -1, -2, -2, -2, -1, -1, -1, 0, 0, -1, -2, -2, -2, -1, -1, -1, -1, 0, 0, -1, -1, -2, -1, -1, 0, 0, 0, 0, 0, 0, -1, -2, -1, -1, 0, 1, 1, 0, -1, -1, -2, -3, -2, -1, 0, 0, -2, 1, 1, 0, 0, -1, -1, 0, 0, 0, 0, 1, 1, 0, 0, 0, -1, -1, -1, -1, -1, 1, 1, 0, 0, -1, -1, -1, -1, -1, -2, 1, 0, 0, -1, -1, -1, -1, -1, -2, -2, 0, 0, 0, -1, -2, -1, -1, -1, -1, -1, 0, 0, 0, -1, -2, -2, -1, -1, -1, -1, 0, 0, -1, -1, -2, -1, -1, 0, 0, 0, 0, 0, 0, -1, -2, -1, 0, 0, 0, 0, 1, 0, 0, -1, -1, -1, 0, 1, 1, 1, 0, -1, -1, -2, -3, -3, -1, 0, -1, -1, 1, 1, 0, -1, -1, -2, 0, 0, 0, 0, 1, 1, 0, 0, 0, -1, -1, 0, -1, -1, 1, 1, 0, 0, 0, -1, -1, -1, -1, -1, 1, 0, 0, 0, -1, -1, -1, -1, -1, -1, 1, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, -1, -2, -1, -1, -1, -1, -1, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, 0, 1, 1, 1, 1, 0, 0, -1, -1, 0, 1, 1, 1, 1, 0, 0, -1, -2, -3, -2, -1, 0, -1, -1, 1, 1, 0, 0, -1, -2, -1, 0, 0, -2, 1, 1, 0, 0, 0, -1, 0, 0, -1, -1, 1, 1, 0, 0, 0, -1, -1, -1, -1, -1, 1, 0, 0, 0, -1, -1, -1, -1, -1, -1, 1, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, -1, -1, -1, 0, 0, 0, -1, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 2, 2, 1, 0, 0, -1, -1, -2, -2, -1, 0, -1, -1, 1, 1, 1, 0, -1, -1, 0, 0, -1, -2, 1, 1, 1, 0, 0, 0, 0, 0, -1, -1, 1, 1, 1, 0, 0, 0, 0, 0, -1, -1, 1, 1, 0, 0, 0, 0, 0, 0, -1, -1, 1, 0, 0, 0, 0, 0, 0, 0, -1, -1, 1, 0, 0, 0, -1, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 2, 2, 1, 1, 1, 0, 0, 0, 1, 1, 2, 2, 2, 2, 1, 0, 0, -1, -1, -1, 0, 0, -1, -1, 1, 1, 1, 0, 0, 0, 0, 0, -1, -2, 1, 1, 1, 1, 0, 0, 0, 0, -1, -2, 1, 1, 1, 1, 0, 0, 0, 0, -1, -1, 1, 1, 1, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 2, 1, 1, 0, 1, 0, 0, 0, 1, 2, 2, 2, 2, 1, 1, 1, 0, 0, 1, 2, 3, 3, 3, 2, 1, 1, 0, 0, 0, 0, 0, 0, -1, -1, 1, 1, 1, 1, 1, 1, 0, 0, -1, -2, 1, 1, 1, 1, 1, 1, 0, 0, -1, -1, 1, 1, 1, 1, 1, 0, 0, 0, -1, -1, 1, 1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, -1, 1, 2, 1, 1, 0, 0, 1, 0, 0, 0, 1, 3, 2, 2, 1, 1, 1, 1, 0, 0, 2, 3, 3, 3, 2, 1, 1, 1, 0, 1, 2, 3, 4, 3, 3, 2, 1, 1, 1, 1, 1, 1, 0, 0, -1, -1, 1, 1, 1, 1, 1, 1, 1, 0, -1, -2, 1, 1, 1, 1, 1, 1, 1, 0, -1, -1, 1, 1, 1, 1, 1, 1, 0, 0, -1, -2, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 1, 1, 0, 1, 0, 0, 0, 2, 3, 2, 2, 1, 1, 1, 1, 0, 1, 2, 4, 3, 3, 2, 2, 1, 1, 1, 1, 3, 4, 4, 3, 3, 2, },
{ -1, -1, -1, -1, -2, -2, -3, -3, -4, -4, -1, -1, -1, -1, -1, -2, -2, -3, -3, -3, -3, -3, -2, -1, -1, -1, -2, -2, -1, -1, -3, -3, -3, -2, -2, -2, -1, 0, 0, 1, -3, -3, -2, -2, -2, -2, -1, 0, 1, 2, -2, -2, -2, -2, -1, -1, 0, 1, 2, 2, -2, -1, -1, -1, -1, 0, 0, 1, 1, 2, -1, -1, -1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, -1, 0, -1, -2, -2, -2, -3, -4, -4, -4, -2, -2, -1, -1, -2, -2, -3, -3, -3, -3, -2, -2, -2, -2, -2, -1, -2, -2, -1, -1, -3, -3, -2, -2, -2, -2, -2, -1, 0, 2, -3, -3, -2, -2, -2, -2, -1, 0, 1, 1, -3, -2, -2, -2, -1, 0, 0, 1, 2, 2, -2, -1, -1, -1, 0, 0, 1, 1, 1, 2, -1, -1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 2, 2, 1, 1, 1, 1, 0, 0, 1, 1, -1, 0, -1, -2, -2, -3, -3, -4, -4, -5, -1, -1, -1, -2, -2, -3, -3, -4, -4, -4, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -3, -2, -2, -2, -2, -2, -2, -1, 0, 0, -3, -3, -3, -2, -2, -1, -1, 0, 1, 1, -3, -2, -2, -2, -1, 0, 1, 2, 2, 2, -1, -2, -1, -1, 0, 0, 1, 1, 2, 2, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 4, 2, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, -1, -2, -2, -3, -4, -4, -5, -6, -1, -1, -1, -1, -2, -2, -4, -4, -5, -4, -2, -2, -1, -1, -2, -2, -2, -3, -3, -3, -2, -2, -2, -1, -2, -2, -2, -1, -1, -1, -3, -3, -2, -2, -1, -1, 0, 0, 0, 0, -2, -2, -2, -1, -1, 0, 1, 1, 1, 2, -1, -1, -1, -1, 0, 0, 1, 1, 2, 2, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 3, 2, 1, 1, 0, 0, 1, 1, 1, 1, 4, 3, 2, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, -1, -3, -4, -5, -6, -6, -1, -1, 0, -1, -1, -2, -3, -4, -5, -5, -2, -1, -1, -1, -1, -2, -3, -3, -3, -3, -2, -2, -2, -1, -1, -1, -2, -2, -2, -1, -2, -2, -2, -1, 0, 0, -1, 0, 0, 0, -1, -1, -2, -1, 0, 0, 1, 1, 1, 2, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 1, 1, 0, 0, 0, 1, 1, 1, 1, 4, 3, 2, 1, 1, 0, 0, 1, 1, 1, 5, 4, 3, 2, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, -1, -2, -3, -5, -6, -6, -1, 0, 0, 0, 0, -2, -3, -4, -4, -4, -2, -1, -1, 0, 0, -1, -2, -3, -3, -3, -2, -2, -1, -1, 0, -1, -2, -2, -2, -1, -2, -2, -1, -1, 0, 0, -1, 0, 0, 1, -1, 0, -1, 0, 0, 0, 0, 1, 1, 2, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 1, 0, 0, 0, 1, 1, 1, 4, 4, 3, 2, 1, 0, 0, 0, 1, 1, 5, 5, 3, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, -2, -3, -4, -6, -1, 0, 0, 0, 0, -1, -2, -3, -3, -4, -2, -1, -1, 0, 0, -1, -1, -2, -2, -2, -2, -2, -1, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 2, 1, 0, 0, 0, 1, 1, 1, 3, 3, 2, 1, 1, 0, 0, 0, 1, 1, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0, 6, 5, 4, 3, 2, 1, 0, 0, 0, 0, -1, 0, 1, 1, 0, 0, -1, -2, -3, -3, -1, 0, 0, 0, 0, 0, -1, -2, -2, -2, -2, -1, -1, 0, 0, 0, 0, -1, -1, -1, -2, -1, -1, 0, 0, 1, 1, 0, 0, 0, -1, 0, -1, 0, 0, 1, 1, 1, 2, 2, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 0, 1, 1, 1, 1, 4, 4, 3, 2, 1, 0, 0, 0, 1, 1, 5, 5, 4, 3, 2, 1, 0, 0, 0, 0, 7, 6, 5, 4, 2, 1, 0, 0, 0, 0, -1, 0, 1, 1, 1, 1, 0, -1, -2, -2, -2, -1, 0, 0, 0, 0, 0, 0, -1, -1, -2, -1, -1, 0, 1, 1, 1, 1, 0, 0, -2, -1, -1, -1, 1, 1, 1, 1, 2, 2, -1, -1, -1, 0, 1, 1, 1, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 2, 1, 0, 0, 0, 0, 1, 4, 5, 4, 2, 1, 1, 0, 0, 0, 0, 6, 6, 5, 3, 2, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, -1, -1, -1, 0, 0, 1, 1, 1, 1, 2, -1, -2, -1, 0, 1, 1, 1, 2, 2, 2, -1, -1, 0, 0, 1, 1, 2, 2, 2, 2, -1, 0, 0, 1, 1, 1, 1, 2, 2, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 0, 0, 1, 1, 3, 4, 4, 2, 1, 0, 0, 0, 0, 0, 5, 6, 4, 4, 2, 1, 0, 0, 0, 0, },
{ -5, -4, -3, -2, -1, -1, -1, -1, -1, -1, -4, -3, -3, -1, 0, 0, 0, -1, -1, -1, -4, -3, -2, 0, 0, 1, 0, -1, -2, -2, -3, -2, -2, 0, 0, 1, 0, -2, -3, -3, -3, -2, -1, 0, 0, 0, 0, -2, -4, -6, -3, -1, -1, 0, 0, 0, -1, -3, -5, -7, -3, -2, -2, 0, 0, 0, -1, -3, -6, -8, -3, -2, -2, 0, 0, 0, -1, -3, -6, -8, -3, -2, -1, 1, 1, 0, -1, -3, -5, -8, -2, -1, -1, 1, 1, 0, -1, -3, -5, -7, -5, -4, -4, -3, -2, -2, -1, -1, -1, -1, -4, -4, -3, -3, -1, 0, 0, -1, -1, -1, -4, -4, -2, -2, -1, 0, 0, 0, -1, -1, -3, -3, -2, -1, 0, 0, 1, -1, -2, -2, -3, -3, -2, -1, 0, 0, 0, -1, -3, -4, -3, -3, -2, -1, 0, 0, 0, -2, -4, -5, -3, -2, -2, -1, 0, 0, 0, -2, -4, -6, -2, -2, -2, 0, 0, 0, 0, -2, -4, -6, -1, -1, -1, 1, 0, 0, 0, -1, -3, -6, -1, 0, 0, 1, 1, 1, 1, -1, -3, -5, -5, -5, -4, -4, -3, -2, -2, -2, -1, -1, -5, -5, -4, -3, -3, -2, -1, -1, -1, 0, -5, -4, -3, -3, -2, -1, 0, 0, -1, -1, -4, -4, -3, -2, -1, -1, 0, 0, -1, -1, -4, -4, -2, -2, -1, 0, 0, 0, -2, -3, -4, -4, -2, -2, -1, 0, 0, -1, -3, -4, -3, -3, -1, -1, 0, 0, 0, -1, -3, -5, -2, -2, 0, 0, 0, 0, 0, -1, -3, -5, -1, -1, 1, 1, 1, 0, 0, 0, -2, -4, 0, 0, 1, 1, 1, 1, 1, 1, -1, -3, -6, -4, -4, -4, -4, -3, -2, -1, -2, -1, -5, -4, -4, -3, -3, -3, -2, -2, -1, -1, -5, -4, -3, -3, -3, -2, -1, -1, -1, -1, -5, -4, -3, -2, -2, -1, -1, 0, -1, -1, -5, -5, -3, -2, -2, -1, 0, 0, -1, -2, -4, -4, -2, -2, -1, 0, 0, 0, -1, -3, -4, -4, -2, -1, 0, 0, 0, 0, -2, -3, -3, -3, -1, 0, 0, 0, 0, 0, -1, -2, -2, -2, 0, 1, 1, 1, 1, 1, 0, -1, -1, 0, 1, 1, 1, 1, 1, 1, 1, 0, -5, -4, -3, -3, -3, -3, -2, -1, -1, -2, -5, -3, -3, -3, -3, -2, -2, -2, -1, -2, -6, -3, -3, -2, -2, -2, -2, -1, -1, -1, -6, -3, -2, -2, -2, -2, -1, 0, -1, -1, -5, -3, -2, -2, -1, -1, -1, 0, -1, -1, -5, -2, -1, -1, 0, 0, 0, 0, -1, -1, -5, -2, -2, -1, 0, 0, 0, 1, 0, -1, -4, -2, -1, 0, 0, 1, 1, 1, 0, 0, -3, -1, 0, 0, 1, 1, 1, 1, 1, 1, -1, 0, 1, 1, 1, 1, 1, 2, 2, 2, -3, -2, -2, -2, -2, -2, -2, -1, -1, -1, -4, -2, -2, -2, -1, -2, -2, -2, -1, -1, -4, -2, -2, -1, -1, -1, -2, -1, -1, -1, -4, -2, -1, -1, -1, -1, -1, -1, -1, -1, -4, -1, -1, 0, 0, 0, -1, 0, 0, -1, -4, -1, -1, 0, 1, 1, 0, 0, 0, 0, -4, -1, -1, 0, 1, 1, 1, 1, 1, 1, -4, -1, -1, -1, 0, 1, 1, 1, 1, 1, -3, -1, 0, 0, 1, 1, 1, 2, 2, 2, -2, 0, 1, 1, 1, 1, 1, 2, 2, 3, -1, 0, 0, 0, 0, 0, -1, -1, -1, -2, -1, 0, 0, 0, 0, 0, -1, -1, -1, -1, 0, 0, 1, 1, 1, 0, -1, -1, -1, -1, 0, 0, 1, 1, 1, 1, 0, -1, -1, 0, -1, 0, 1, 1, 2, 1, 0, 0, 0, 0, -2, -1, 0, 1, 2, 2, 0, 0, 1, 1, -2, -2, -1, 0, 1, 2, 0, 0, 1, 1, -2, -2, -1, -1, 1, 1, 0, 1, 1, 2, -2, -1, 0, 0, 1, 1, 1, 1, 2, 2, -1, 0, 1, 1, 1, 1, 1, 2, 2, 3, 2, 2, 2, 2, 2, 2, 1, 0, 0, -2, 2, 2, 3, 3, 3, 2, 1, 0, 0, -2, 2, 3, 3, 4, 3, 3, 1, 0, 0, -2, 2, 3, 3, 4, 4, 3, 1, 0, 0, 0, 2, 3, 3, 4, 4, 3, 1, 0, 0, 0, -1, 0, 1, 3, 4, 3, 1, 0, 0, 0, -3, -2, -1, 0, 3, 2, 1, 0, 0, 1, -3, -2, -1, 0, 2, 2, 0, 0, 1, 1, -2, -1, -1, 0, 0, 1, 0, 0, 1, 2, -1, 0, 0, 1, 1, 1, 1, 1, 2, 2, 4, 5, 5, 5, 5, 4, 3, 2, 0, -2, 4, 5, 6, 6, 5, 4, 3, 2, -1, -2, 4, 5, 6, 6, 6, 5, 3, 2, 0, -2, 4, 5, 6, 7, 6, 5, 3, 2, 1, -2, 3, 4, 6, 7, 6, 5, 3, 2, 1, -1, 0, 1, 3, 6, 6, 4, 2, 1, 0, -1, -2, -1, 0, 3, 5, 4, 2, 1, 0, 0, -3, -2, -1, 1, 3, 3, 1, 0, 0, 0, -2, -1, 0, 1, 2, 2, 1, 0, 0, 1, -1, -1, 0, 1, 1, 1, 0, 0, 1, 2, 7, 8, 8, 8, 7, 6, 5, 2, 1, -1, 7, 8, 9, 8, 8, 7, 5, 2, 0, -1, 6, 8, 9, 9, 8, 7, 5, 3, 0, -1, 6, 8, 9, 9, 8, 7, 5, 3, 0, -2, 5, 7, 9, 9, 8, 6, 4, 3, 0, -2, 2, 3, 6, 9, 8, 6, 4, 2, 1, -2, 0, 0, 3, 6, 7, 5, 3, 1, 0, -2, -1, -1, 0, 3, 5, 4, 2, 1, 0, -2, -1, -1, 0, 1, 3, 2, 1, 0, 0, 0, -1, -1, 1, 1, 2, 1, 1, 0, 0, 1, },
{ 1, 1, 1, 0, 0, -1, -1, 2, 7, 12, 1, 1, 1, 0, 0, -1, 0, 3, 6, 10, 1, 1, 1, 1, 0, -1, 0, 1, 4, 7, 1, 1, 1, 0, -1, -2, -1, 0, 3, 5, 1, 1, 0, -1, -2, -2, -1, 2, 3, 3, 1, 0, -1, -2, -2, -2, 0, 1, 1, 2, 2, 0, -2, -2, -3, -3, -2, -1, -1, 0, 1, -1, -2, -3, -4, -4, -4, -3, -3, -2, 0, -2, -4, -4, -5, -6, -6, -5, -5, -3, -1, -3, -5, -6, -6, -7, -7, -8, -6, -5, 2, 2, 1, 0, -1, -2, 0, 3, 6, 9, 2, 2, 2, 1, 0, -1, 2, 4, 6, 7, 3, 2, 2, 1, 0, 0, 2, 3, 5, 5, 3, 2, 1, 1, -1, -1, 0, 3, 3, 3, 2, 2, 1, 0, -1, 0, 0, 2, 2, 1, 2, 1, 0, -1, -1, -1, 0, 0, 0, 0, 2, 1, -1, -2, -3, -3, -2, -2, -1, -2, 1, 0, -2, -3, -4, -4, -4, -3, -3, -3, 0, -1, -3, -4, -4, -5, -5, -5, -5, -4, -1, -2, -4, -5, -6, -6, -7, -8, -7, -6, 3, 3, 2, 0, -1, -2, 1, 3, 5, 7, 3, 3, 2, 1, 0, 0, 3, 4, 4, 4, 3, 3, 2, 2, 1, 2, 3, 3, 3, 2, 3, 2, 2, 2, 0, 1, 2, 2, 1, 1, 2, 2, 2, 1, 0, 0, 1, 1, 0, 0, 2, 1, 1, -1, -1, -1, 0, 0, -1, -1, 2, 1, 0, -2, -2, -2, -2, -2, -2, -2, 1, 0, -1, -2, -3, -4, -4, -4, -4, -4, 1, -1, -2, -3, -4, -4, -5, -6, -6, -5, 0, -1, -3, -4, -5, -5, -6, -7, -8, -7, 4, 3, 1, 1, 1, -1, 1, 2, 3, 4, 4, 3, 2, 2, 1, 1, 2, 3, 2, 2, 3, 3, 3, 2, 1, 2, 2, 2, 1, 1, 3, 2, 2, 2, 1, 1, 1, 1, 0, 0, 2, 2, 2, 1, 0, 0, 0, 0, -1, -1, 2, 1, 1, 0, -1, 0, -1, -1, -2, -2, 2, 1, 0, -1, -2, -2, -3, -3, -3, -3, 1, 1, 0, -2, -3, -3, -4, -5, -5, -4, 1, 0, -1, -2, -3, -4, -5, -6, -7, -6, 0, -1, -2, -3, -4, -5, -6, -7, -8, -8, 3, 3, 2, 2, 1, -1, 0, 1, 1, 2, 3, 3, 2, 2, 1, 0, 1, 1, 1, 1, 3, 3, 3, 2, 1, 1, 1, 0, 0, -1, 3, 3, 3, 2, 1, 0, 0, -1, -1, -1, 2, 2, 2, 1, 1, 0, 0, -1, -2, -2, 2, 2, 1, 1, -1, -1, -1, -2, -2, -2, 2, 1, 1, 0, -1, -2, -3, -4, -4, -3, 1, 1, 0, 0, -2, -2, -3, -4, -5, -4, 1, 0, 0, -1, -2, -2, -4, -5, -6, -6, 0, -1, -1, -1, -2, -3, -5, -6, -7, -8, 4, 3, 3, 2, 1, 0, 0, 0, 0, 1, 4, 3, 3, 2, 2, 0, 0, 0, 0, -1, 4, 3, 3, 2, 2, 0, 0, -1, -1, -1, 3, 3, 3, 3, 2, 0, 0, -1, -2, -2, 2, 2, 2, 2, 1, 1, 0, -1, -2, -2, 2, 2, 1, 2, 1, 0, -1, -2, -2, -2, 2, 1, 1, 1, 0, -1, -2, -3, -3, -3, 1, 1, 1, 1, 0, -1, -3, -4, -4, -4, 1, 0, 0, 0, -1, -1, -4, -5, -5, -6, 0, 0, 0, 0, -1, -2, -5, -6, -6, -7, 4, 4, 3, 2, 2, 1, 0, -1, -1, -1, 4, 4, 3, 3, 2, 1, 0, -1, -1, -1, 4, 4, 4, 3, 2, 1, 0, -1, -1, -1, 3, 3, 3, 3, 2, 2, 1, -1, -2, -2, 2, 2, 2, 2, 2, 2, 1, -1, -2, -2, 2, 1, 1, 1, 1, 1, 0, -2, -2, -3, 1, 1, 1, 0, 0, -1, -1, -3, -3, -3, 1, 1, 0, 0, -1, -1, -2, -4, -4, -4, 0, 0, 0, -1, -1, -2, -4, -5, -5, -6, -2, -1, -1, -1, -2, -2, -5, -6, -6, -7, 4, 4, 3, 3, 2, 2, 1, 0, -1, -1, 4, 4, 4, 3, 2, 2, 1, 0, -1, -1, 4, 4, 4, 3, 3, 3, 2, 0, -1, -2, 3, 3, 3, 3, 3, 2, 1, 0, -1, -2, 2, 2, 2, 2, 2, 2, 1, 0, -2, -2, 2, 1, 1, 0, 0, 0, 0, -1, -2, -3, 1, 1, 0, -1, -1, -1, -1, -2, -3, -3, 0, 0, -1, -1, -2, -2, -2, -4, -4, -4, -1, -1, -2, -2, -3, -3, -3, -5, -5, -6, -3, -3, -3, -3, -3, -3, -5, -6, -7, -7, 4, 4, 4, 4, 3, 3, 2, 0, -1, -1, 4, 5, 5, 4, 3, 3, 2, 1, -1, -1, 3, 4, 4, 4, 3, 3, 2, 0, -1, -1, 3, 3, 3, 3, 3, 3, 2, 0, -1, -2, 2, 2, 1, 1, 2, 2, 2, 0, -1, -2, 1, 0, 0, 0, 0, 0, 0, -1, -2, -2, 0, -1, -1, -2, -1, -1, -1, -2, -2, -3, -1, -2, -2, -3, -2, -2, -2, -3, -3, -4, -3, -3, -3, -4, -3, -3, -2, -4, -5, -5, -5, -5, -5, -4, -4, -4, -4, -5, -6, -7, 4, 4, 4, 4, 3, 3, 2, 0, -1, -1, 5, 5, 4, 4, 4, 3, 2, 1, 0, -1, 4, 4, 4, 4, 4, 4, 3, 1, 0, -1, 2, 3, 3, 3, 3, 3, 3, 1, 0, -1, 1, 1, 1, 1, 2, 2, 2, 1, 0, -1, 0, -1, -1, 0, 0, 0, 1, 0, -1, -2, -3, -2, -2, -2, -1, -1, 0, -1, -2, -2, -4, -3, -3, -3, -2, -2, -1, -2, -3, -3, -7, -5, -4, -4, -3, -3, -2, -3, -4, -4, -9, -7, -6, -5, -4, -4, -4, -5, -5, -6, },
{ -6, -10, -10, -10, -9, -9, -10, -11, -12, -12, -5, -8, -9, -8, -7, -6, -6, -7, -8, -8, -3, -6, -7, -7, -5, -3, -4, -5, -6, -7, -2, -5, -6, -5, -4, -1, -2, -3, -5, -5, 0, -3, -4, -4, -2, 0, 0, 0, -1, -2, 1, -2, -3, -3, -1, 2, 3, 2, 1, 0, 4, -1, -3, -2, 0, 3, 4, 4, 2, 1, 5, 2, -2, -2, 0, 3, 5, 5, 4, 2, 7, 4, 1, 0, 0, 3, 6, 7, 6, 5, 9, 7, 4, 1, 1, 3, 6, 8, 9, 11, -4, -8, -8, -8, -8, -9, -10, -11, -12, -13, -2, -6, -7, -7, -6, -6, -7, -9, -10, -11, -1, -5, -6, -6, -4, -4, -5, -7, -9, -9, 0, -3, -5, -5, -3, -2, -4, -6, -7, -7, 1, -2, -3, -3, -1, 0, -1, -3, -4, -5, 3, -1, -2, -2, 0, 1, 2, 0, -1, -2, 4, 0, -1, -1, 0, 3, 3, 2, 0, -2, 6, 2, -1, -1, 0, 3, 4, 3, 1, -1, 7, 5, 2, -1, 1, 3, 5, 5, 3, 2, 9, 6, 4, 0, 1, 3, 5, 7, 6, 5, -1, -4, -6, -6, -7, -9, -10, -11, -12, -13, 0, -4, -5, -5, -5, -6, -8, -9, -10, -11, 1, -3, -5, -4, -4, -5, -7, -8, -10, -11, 2, -2, -4, -4, -3, -3, -5, -7, -8, -9, 2, 0, -2, -2, -1, -1, -3, -5, -5, -5, 3, 1, 0, 0, 0, 1, 0, -2, -3, -4, 5, 2, 0, 0, 0, 2, 2, 0, -2, -3, 6, 4, 0, 0, 0, 2, 2, 1, -1, -2, 8, 5, 2, 0, 0, 3, 4, 2, 1, -1, 9, 7, 4, 1, -1, 2, 5, 5, 4, 3, 0, -1, -3, -4, -5, -7, -8, -9, -11, -12, 1, -1, -3, -4, -5, -6, -7, -8, -10, -11, 2, 0, -2, -3, -4, -5, -7, -8, -9, -10, 2, 1, -2, -3, -3, -4, -6, -7, -8, -9, 3, 2, 0, -1, -1, -2, -4, -5, -6, -6, 4, 3, 2, 1, 0, 0, -2, -3, -4, -4, 6, 4, 2, 1, 0, 1, 0, -2, -3, -4, 7, 5, 2, 1, 0, 1, 1, -1, -2, -3, 8, 6, 3, 0, 0, 2, 1, 0, -1, -2, 10, 7, 4, 2, -1, 1, 3, 2, 2, 1, 1, 0, -1, -2, -3, -4, -7, -8, -9, -11, 2, 1, 0, -1, -2, -3, -6, -7, -9, -10, 3, 2, 1, 0, -2, -3, -6, -7, -8, -9, 3, 2, 1, 1, -2, -2, -5, -6, -7, -7, 3, 3, 2, 2, -1, -1, -4, -4, -5, -5, 4, 4, 4, 3, 1, 0, -2, -3, -4, -5, 6, 5, 4, 3, 1, 1, -1, -2, -3, -4, 8, 6, 4, 2, 1, 1, 0, -2, -3, -3, 8, 6, 4, 2, 1, 1, 0, -1, -2, -2, 10, 7, 5, 2, 0, 1, 1, 1, 0, 0, 0, 0, 0, -1, -2, -3, -5, -7, -9, -10, 2, 2, 1, 0, -1, -2, -5, -6, -8, -9, 3, 3, 2, 1, -1, -2, -4, -6, -7, -8, 3, 3, 3, 2, -1, -1, -4, -5, -6, -6, 4, 3, 3, 3, 0, 0, -2, -4, -4, -4, 5, 5, 5, 5, 2, 1, -1, -3, -3, -4, 7, 6, 6, 5, 2, 1, 0, -2, -3, -4, 8, 7, 6, 4, 2, 1, 0, -1, -2, -3, 8, 7, 5, 3, 2, 1, 0, -1, -2, -3, 9, 7, 6, 3, 2, 1, 0, 0, -1, -1, 0, 0, -1, -1, -2, -3, -4, -7, -9, -11, 2, 1, 1, 0, -1, -2, -3, -6, -8, -9, 2, 2, 1, 1, -1, -2, -3, -5, -7, -8, 3, 2, 2, 2, 0, -1, -2, -4, -6, -7, 3, 3, 3, 3, 2, 1, -1, -3, -4, -4, 5, 6, 6, 5, 4, 2, 1, -1, -3, -4, 8, 8, 7, 6, 5, 4, 3, 0, -2, -3, 9, 8, 7, 6, 5, 4, 3, 1, -1, -3, 10, 8, 7, 6, 5, 4, 3, 1, -1, -2, 10, 9, 7, 5, 4, 3, 2, 1, 0, -1, -1, -1, -3, -4, -4, -3, -3, -6, -10, -11, 1, 0, -1, -2, -3, -3, -3, -5, -8, -10, 2, 1, 1, -1, -2, -2, -2, -4, -7, -9, 3, 2, 2, 0, -1, -2, -1, -3, -6, -7, 3, 3, 2, 2, 0, 0, 0, -1, -3, -5, 5, 5, 5, 4, 3, 2, 2, 1, -2, -4, 8, 8, 7, 6, 5, 4, 4, 2, 0, -3, 10, 9, 8, 7, 6, 4, 4, 3, 1, -3, 11, 9, 8, 7, 6, 5, 5, 4, 1, -2, 12, 10, 8, 7, 6, 5, 5, 4, 2, -1, -3, -5, -6, -6, -4, -4, -4, -6, -9, -12, -1, -2, -4, -4, -4, -3, -2, -4, -7, -11, 1, 0, -2, -3, -3, -2, -2, -2, -5, -9, 2, 1, 0, -2, -2, -2, -1, -1, -4, -7, 3, 2, 1, 0, 0, 0, 0, 0, -2, -4, 4, 4, 3, 3, 1, 1, 2, 2, 0, -3, 7, 7, 6, 5, 3, 3, 3, 3, 2, -2, 9, 9, 8, 7, 5, 4, 5, 4, 3, -2, 10, 9, 9, 8, 6, 5, 5, 5, 4, -1, 12, 10, 9, 8, 7, 6, 5, 5, 4, -1, -8, -8, -7, -6, -5, -4, -4, -5, -8, -12, -5, -6, -6, -6, -4, -3, -2, -3, -6, -10, -1, -3, -4, -5, -4, -3, -2, -1, -4, -8, 0, -1, -3, -3, -3, -2, -1, 0, -3, -6, 2, 1, -1, -2, -1, -1, 0, 0, 0, -3, 4, 3, 2, 1, 0, 0, 1, 3, 1, -2, 6, 6, 4, 3, 2, 2, 3, 4, 3, -1, 8, 8, 6, 5, 4, 3, 4, 5, 5, 0, 9, 9, 8, 7, 5, 5, 5, 6, 6, 1, 11, 9, 9, 8, 7, 6, 6, 6, 6, 0, },
{ 2, 1, 3, 1, -3, -11, -12, -12, -15, -17, 2, 1, 4, 2, -3, -10, -8, -9, -12, -15, 2, 2, 5, 2, -3, -8, -3, -6, -9, -12, 2, 2, 5, 2, -2, -7, -1, -4, -7, -10, 2, 1, 5, 2, -2, -6, -1, -3, -6, -9, 0, 0, 3, 0, -3, -5, -2, -5, -8, -9, -4, -3, 3, -2, -8, -11, -5, -7, -11, -12, -6, -4, 2, -2, -9, -14, -7, -9, -12, -14, -9, -7, -1, -3, -10, -14, -8, -11, -13, -15, -10, -11, -6, -7, -12, -15, -9, -11, -14, -16, 2, 1, 2, 0, -5, -9, -10, -10, -12, -15, 2, 1, 2, 0, -5, -8, -7, -8, -10, -13, 1, 1, 3, 1, -4, -6, -3, -6, -7, -10, 0, 1, 3, 1, -4, -5, -1, -4, -5, -7, -1, 0, 4, 1, -3, -5, -1, -3, -3, -5, -4, -2, 1, -1, -4, -5, -2, -4, -4, -5, -8, -5, -2, -4, -9, -10, -6, -6, -7, -8, -9, -7, -3, -5, -10, -12, -7, -8, -9, -10, -9, -8, -4, -5, -10, -11, -7, -9, -11, -12, -7, -8, -6, -6, -9, -11, -8, -9, -11, -13, 1, 0, 1, -1, -5, -7, -8, -9, -10, -13, 0, 0, 1, -1, -5, -6, -5, -7, -8, -11, 0, 0, 1, -1, -4, -5, -3, -5, -5, -8, -1, 0, 2, 0, -4, -4, -2, -3, -3, -5, -2, -1, 2, 0, -3, -4, -2, -2, -1, -3, -6, -4, 0, -2, -4, -4, -3, -3, -2, -2, -9, -7, -4, -6, -8, -9, -6, -6, -5, -4, -10, -9, -6, -7, -9, -10, -8, -7, -6, -6, -9, -8, -6, -6, -8, -9, -7, -7, -8, -8, -6, -7, -6, -6, -7, -8, -7, -7, -8, -10, 1, 0, 1, -1, -4, -6, -7, -7, -9, -11, 0, 0, 1, -1, -3, -5, -5, -6, -7, -9, 0, 0, 1, -1, -3, -3, -3, -4, -4, -5, -2, -1, 1, -1, -3, -3, -2, -2, -2, -3, -3, -2, 0, -1, -3, -3, -2, -1, -1, -2, -7, -5, -2, -3, -3, -3, -3, -3, -1, -1, -10, -8, -5, -6, -7, -6, -6, -6, -4, -4, -10, -9, -6, -6, -8, -7, -7, -7, -6, -5, -8, -8, -6, -6, -7, -7, -6, -7, -7, -6, -6, -6, -5, -5, -6, -6, -6, -6, -7, -7, 1, 1, 1, 1, -1, -3, -5, -6, -8, -10, 0, 0, 1, 1, 0, -2, -4, -4, -4, -5, -1, 0, 0, 0, 0, -1, -2, -3, -2, -2, -2, -1, 0, 0, 1, 0, -1, -2, -1, -1, -3, -3, -1, 0, 1, 0, 0, -1, 0, 0, -7, -5, -3, -2, 0, -1, -2, -2, 0, 0, -9, -7, -5, -4, -2, -3, -4, -5, -3, -1, -8, -7, -5, -5, -2, -3, -5, -5, -4, -2, -6, -6, -4, -4, -2, -3, -5, -5, -5, -4, -4, -3, -2, -2, 0, -2, -4, -5, -5, -5, 2, 2, 2, 2, 0, -2, -3, -3, -4, -7, 1, 2, 3, 2, 1, 0, 1, 1, 0, -2, 1, 1, 2, 2, 1, 1, 3, 3, 3, 1, 0, 0, 2, 3, 2, 1, 3, 3, 4, 2, -2, -1, 1, 2, 1, 1, 3, 3, 4, 3, -5, -3, -1, 0, 0, 0, 1, 0, 1, 1, -6, -5, -3, -2, -1, -2, -1, -1, 0, 1, -5, -4, -3, -2, -1, -2, -1, -1, -1, 0, -3, -2, -2, 0, 0, -1, -1, -1, -1, -1, 0, 1, 1, 2, 2, 0, -1, -1, -1, -2, 4, 3, 4, 3, 2, 0, 0, -1, -1, -5, 3, 4, 5, 6, 6, 5, 4, 3, 3, 0, 3, 4, 5, 6, 6, 6, 5, 4, 4, 4, 2, 4, 6, 6, 7, 6, 5, 4, 5, 5, 1, 2, 4, 5, 6, 5, 4, 2, 4, 6, -2, -1, 2, 2, 2, 2, 1, -1, 0, 1, -3, -1, 0, 1, 2, 1, 0, -2, -1, 1, -2, -1, 0, 1, 2, 2, 0, -2, -1, 0, 1, 1, 1, 2, 3, 2, 1, -2, -1, -1, 4, 4, 4, 4, 5, 3, 1, -1, -1, -1, 6, 6, 6, 6, 4, 2, 2, 1, 0, -3, 6, 6, 7, 8, 8, 7, 6, 4, 4, 3, 6, 7, 7, 7, 8, 8, 6, 4, 6, 6, 5, 6, 7, 7, 8, 8, 6, 3, 4, 6, 3, 5, 7, 6, 6, 6, 4, 1, 3, 5, 0, 1, 4, 2, 2, 2, 1, -2, -1, 1, 0, 1, 2, 2, 2, 2, 0, -3, -2, 0, 1, 2, 2, 2, 3, 2, 0, -3, -2, 0, 3, 3, 3, 3, 4, 3, 0, -2, -2, -1, 7, 7, 6, 5, 6, 4, 1, -1, -1, 0, 9, 8, 9, 9, 7, 5, 3, 2, 2, -1, 10, 9, 9, 9, 10, 9, 6, 4, 5, 4, 10, 9, 9, 8, 10, 9, 6, 3, 5, 7, 9, 9, 8, 7, 9, 9, 5, 1, 3, 6, 7, 9, 8, 5, 6, 7, 3, 0, 2, 4, 3, 4, 5, 2, 2, 2, 0, -3, -2, 0, 3, 4, 4, 2, 2, 2, -1, -3, -2, -1, 3, 4, 3, 2, 3, 3, -1, -3, -3, -1, 5, 6, 4, 3, 4, 3, -1, -3, -2, -1, 9, 9, 7, 7, 8, 5, 1, -1, -1, 0, 12, 10, 9, 10, 12, 9, 5, 4, 5, 4, 13, 11, 10, 9, 12, 11, 5, 2, 5, 6, 13, 11, 9, 8, 11, 10, 3, -2, 1, 6, 12, 11, 9, 7, 9, 8, 2, -4, -2, 4, 12, 11, 8, 5, 5, 6, 1, -4, -3, 2, 6, 9, 6, 1, 1, 2, -1, -5, -5, -1, 6, 7, 5, 1, 2, 2, -2, -5, -5, -2, 7, 7, 4, 1, 4, 3, -2, -5, -4, -2, 9, 9, 4, 3, 7, 5, -1, -4, -2, -2, 13, 11, 9, 11, 12, 8, 1, -2, 0, 0, },
},
{
{ 0, 0, -1, -1, 0, 0, 1, 1, 2, 2, 0, 0, -1, -1, 0, 0, 1, 1, 2, 2, 0, 0, -1, -1, -1, 0, 0, 1, 2, 2, -1, 0, -1, -1, -1, -1, 0, 1, 1, 1, -1, -1, -1, -1, -1, -1, 0, 0, 1, 1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, -2, -2, -1, -1, -1, -1, -1, 0, 0, 0, -2, -2, -2, -2, -1, -1, -1, -1, -1, 0, -2, -2, -2, -2, -1, -1, -1, -1, -1, -1, -2, -2, -2, -1, -1, 0, -1, -1, -2, -2, 1, 1, 0, -1, 0, 0, 1, 1, 2, 2, 1, 1, 0, -1, 0, 0, 1, 1, 2, 2, 1, 1, 0, -1, -1, 0, 1, 1, 2, 2, 0, 0, 0, -1, -1, 0, 0, 1, 1, 2, 0, 0, 0, 0, -1, -1, 0, 1, 1, 1, -1, -1, 0, 0, -1, -1, 0, 0, 1, 1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, -1, -1, -1, -1, 0, -1, -1, -1, -1, 0, -2, -2, -1, -1, 0, 0, -1, -1, -1, -1, -2, -2, -1, -1, -1, -1, -1, -2, -2, -2, 1, 1, 0, 0, 0, 0, 1, 1, 2, 2, 1, 1, 1, 0, 0, 0, 1, 1, 2, 2, 1, 1, 1, 0, 0, 0, 1, 1, 2, 2, 1, 1, 1, 0, -1, 0, 0, 1, 2, 2, 1, 0, 1, 0, -1, -1, 0, 1, 1, 2, 0, 0, 0, 0, -1, -1, 0, 0, 1, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, 0, 0, -1, -1, -1, -1, -2, -2, -1, -1, -1, 0, -1, -2, -2, -2, 2, 1, 0, 0, 0, 1, 1, 2, 2, 3, 2, 2, 1, 0, 0, 0, 1, 1, 2, 3, 2, 2, 1, 0, 0, 0, 1, 1, 2, 2, 2, 2, 2, 1, 0, 0, 1, 1, 2, 2, 1, 1, 1, 1, 0, 0, 0, 1, 2, 2, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, 0, 0, 0, -1, -1, -1, -2, -1, -1, -1, -1, 0, -1, -1, -2, -1, 2, 2, 1, 0, 0, 1, 1, 2, 2, 3, 2, 2, 1, 0, 0, 1, 1, 2, 2, 3, 2, 2, 2, 1, 0, 0, 1, 2, 2, 3, 2, 2, 2, 1, 0, 0, 1, 1, 2, 3, 1, 1, 1, 1, 1, 0, 0, 1, 2, 2, 1, 1, 1, 1, 0, 0, 0, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, -1, -1, 0, 0, 0, 0, 0, 0, 1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, -2, -1, -1, -1, -1, 0, 0, -1, -1, -1, 3, 2, 1, 0, 0, 1, 1, 2, 2, 3, 2, 2, 1, 1, 0, 1, 1, 2, 2, 3, 2, 2, 2, 1, 0, 0, 1, 2, 2, 3, 2, 2, 2, 1, 0, 0, 0, 1, 2, 3, 1, 1, 1, 1, 1, 0, 0, 1, 1, 2, 1, 1, 1, 1, 0, 0, 0, 1, 1, 2, 0, 0, 0, 0, 0, 0, 1, 1, 1, 2, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, -1, -1, -1, 0, 0, 1, 1, 0, 0, 0, -1, -1, -1, -1, 0, 0, 1, 0, -1, -1, 3, 2, 1, 1, 0, 1, 1, 2, 3, 3, 2, 2, 2, 1, 0, 0, 1, 2, 2, 3, 2, 2, 2, 1, 0, 0, 1, 1, 2, 3, 1, 2, 2, 1, 1, 0, 0, 1, 2, 3, 1, 1, 1, 1, 0, 0, 0, 1, 2, 2, 1, 1, 1, 1, 0, 0, 1, 1, 2, 2, 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, -1, -1, 0, 0, 1, 1, 1, 1, 1, 1, -1, -1, -1, 0, 0, 1, 1, 1, 0, 0, 3, 2, 1, 1, 0, 0, 1, 2, 3, 4, 3, 3, 2, 1, 0, 0, 1, 2, 3, 3, 2, 2, 2, 1, 0, 0, 1, 1, 2, 3, 2, 2, 2, 1, 0, 0, 0, 1, 2, 3, 1, 1, 1, 0, 0, 0, 1, 1, 2, 2, 1, 1, 1, 0, 0, 1, 1, 1, 2, 2, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, -1, -1, 0, 0, 1, 1, 1, 1, 1, 1, -1, -1, 0, 0, 1, 1, 1, 1, 1, 1, 3, 2, 2, 1, 0, 1, 1, 2, 3, 4, 3, 3, 2, 1, 0, 0, 1, 2, 3, 3, 2, 2, 1, 1, 0, 0, 1, 1, 2, 3, 2, 1, 1, 0, 0, 0, 1, 1, 2, 3, 1, 1, 0, 0, 0, 0, 1, 1, 2, 2, 1, 1, 1, 0, 1, 1, 1, 2, 2, 2, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, -1, 0, 0, 1, 1, 1, 1, 1, 1, 2, -1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 3, 2, 1, 0, 0, 1, 2, 2, 3, 4, 3, 2, 1, 0, 0, 0, 1, 2, 3, 3, 2, 2, 1, 0, 0, 0, 1, 2, 2, 3, 2, 1, 0, 0, 0, 0, 1, 1, 2, 3, 1, 1, 0, 0, 0, 1, 1, 2, 2, 3, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 0, 0, 1, 1, 1, 2, 1, 1, 2, 2, 0, 0, 1, 1, 2, 2, 1, 1, 2, 2, 0, 0, 0, 1, 2, 1, 1, 1, 1, 2, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, },
{ 3, 2, 1, 1, 1, 1, 2, 2, 2, 2, 3, 2, 1, 1, 1, 1, 2, 2, 1, 2, 2, 1, 1, 0, 0, 1, 1, 1, 2, 3, 2, 1, 0, 0, 0, 0, 1, 2, 3, 3, 1, 0, 0, -1, 0, 0, 1, 2, 3, 3, 0, 0, -1, -1, 0, 0, 1, 2, 3, 3, 0, -1, -1, -1, -1, 0, 1, 2, 2, 2, -1, -1, -1, -2, -1, 0, 1, 1, 2, 2, -1, -2, -2, -2, -1, 0, 0, 1, 1, 1, -1, -2, -2, -2, -1, -1, 0, 0, 1, 1, 4, 3, 2, 2, 1, 2, 2, 2, 2, 2, 4, 3, 2, 1, 1, 2, 2, 2, 2, 2, 3, 2, 1, 1, 1, 1, 1, 2, 2, 3, 2, 1, 1, 0, 0, 1, 1, 2, 3, 3, 2, 1, 0, 0, 0, 1, 2, 3, 3, 3, 1, 0, 0, 0, 0, 1, 2, 3, 3, 3, 0, 0, -1, -1, 0, 1, 2, 2, 3, 3, -1, -1, -1, -1, 0, 1, 2, 2, 3, 3, 0, -1, -1, -1, 0, 1, 1, 2, 2, 2, -1, -2, -1, -1, 0, 0, 1, 1, 1, 1, 4, 3, 2, 2, 2, 2, 2, 2, 2, 2, 4, 3, 2, 2, 1, 2, 2, 2, 2, 2, 4, 3, 2, 1, 1, 1, 2, 2, 2, 2, 3, 2, 1, 1, 1, 1, 2, 2, 2, 3, 2, 1, 1, 0, 1, 2, 2, 2, 3, 3, 1, 0, 0, 0, 0, 2, 2, 3, 3, 3, 0, 0, 0, 0, 1, 1, 2, 3, 3, 3, 0, -1, -1, 0, 0, 1, 2, 3, 3, 3, 0, -1, -1, 0, 0, 1, 2, 2, 2, 2, -1, -1, -1, -1, 0, 1, 1, 2, 1, 1, 5, 4, 2, 2, 2, 2, 2, 2, 2, 2, 5, 4, 2, 2, 1, 2, 2, 2, 2, 2, 4, 3, 2, 1, 1, 1, 2, 2, 2, 2, 3, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 0, 1, 2, 2, 2, 2, 3, 0, 0, 0, 0, 1, 2, 2, 2, 3, 3, 0, 0, 0, 0, 1, 2, 2, 3, 3, 3, 0, -1, -1, 0, 1, 1, 2, 2, 3, 3, -1, -1, -1, 0, 1, 1, 2, 2, 2, 2, -1, -1, -1, 0, 1, 1, 1, 2, 1, 1, 5, 4, 3, 2, 2, 2, 2, 2, 3, 2, 5, 4, 2, 2, 2, 2, 2, 2, 2, 2, 4, 3, 2, 1, 1, 2, 2, 2, 2, 2, 3, 2, 2, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 0, 1, 1, 2, 2, 2, 2, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 0, 0, 0, 0, 0, 1, 2, 2, 3, 3, 0, 0, 0, 0, 0, 1, 2, 2, 2, 2, -1, -1, -1, 0, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, 1, 1, 1, 1, 0, 0, 5, 4, 2, 1, 1, 2, 2, 2, 3, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 2, 2, 1, 2, 2, 2, 1, 2, 2, 2, 2, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 0, 1, 2, 2, 2, 2, 1, 1, 0, 0, 0, 0, 1, 1, 2, 2, 2, 0, 0, 0, 0, 0, 1, 1, 2, 1, 1, 0, -1, 0, 0, 0, 1, 1, 1, 1, 1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 0, 0, -1, -1, -1, 4, 3, 1, 0, 0, 1, 1, 2, 2, 2, 4, 3, 2, 1, 1, 1, 1, 2, 2, 2, 3, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, -1, -1, -1, -1, 0, 0, 0, 0, -1, 0, -1, -1, -2, -2, -1, 0, -1, 0, 0, -1, 0, -1, -2, -3, -3, 3, 2, 0, -1, 0, 1, 1, 2, 3, 2, 3, 3, 1, 0, 0, 0, 1, 2, 2, 2, 2, 2, 2, 1, 0, 1, 1, 1, 1, 2, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 1, 0, -1, -1, -1, 0, 0, -1, -1, -1, -1, 0, 0, 0, -1, -1, -1, -2, -2, -2, -2, 0, 0, -1, -1, -1, -1, -2, -3, -3, -3, -1, -1, -1, -1, -1, -1, -2, -3, -4, -4, 1, 1, 0, -1, 0, 0, 1, 2, 3, 2, 1, 1, 0, 0, -1, 0, 1, 2, 2, 2, 0, 0, 0, -1, -1, 0, 1, 1, 2, 2, -1, -1, -1, -1, -1, 0, 0, 1, 1, 2, -1, -1, -2, -1, -1, 0, 0, 1, 1, 1, -1, -2, -2, -2, -1, 0, 0, 0, 1, 1, -1, -2, -2, -2, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -2, -2, -1, -1, -1, -1, -1, -2, -2, -3, -3, -4, -1, -1, -1, -1, -2, -2, -2, -3, -4, -4, 0, -1, -1, -1, -1, 0, 1, 2, 3, 2, -1, -1, -1, -1, -1, 0, 1, 2, 2, 2, -1, -2, -2, -1, -1, 0, 1, 1, 2, 2, -2, -2, -2, -2, -1, 0, 1, 1, 2, 2, -2, -2, -2, -2, -1, -1, 0, 1, 1, 2, -2, -3, -2, -2, -1, -1, 0, 0, 1, 1, -2, -2, -2, -2, -1, 0, 0, -1, 0, 0, -2, -2, -2, -2, -1, -1, -1, -1, -2, -2, -2, -2, -2, -1, -1, -1, -1, -2, -3, -4, -2, -2, -2, -2, -2, -2, -2, -2, -4, -5, },
{ 5, 5, 3, 2, 0, 0, 0, 0, 0, 4, 6, 6, 5, 3, 1, -1, -1, -1, -1, 1, 7, 7, 4, 4, 2, 0, -1, -1, -1, -1, 8, 6, 2, 2, 3, 1, 0, 0, -1, -1, 8, 7, 5, 4, 3, 2, 1, 0, 0, 0, 7, 6, 6, 5, 3, 2, 2, 1, 0, 0, 6, 5, 4, 3, 2, 2, 2, 2, 2, 2, 4, 3, 2, 1, 1, 1, 2, 2, 3, 3, 3, 2, 1, 0, 0, 1, 0, 1, 2, 3, 1, 0, 0, -1, -2, -1, 0, 0, 1, 2, 2, 2, 2, 1, 0, 0, 0, 1, 1, 3, 4, 3, 3, 2, 0, -1, -1, 0, 0, 1, 5, 5, 2, 2, 1, 0, -1, -1, -1, -1, 5, 4, 0, 1, 1, 0, 0, -1, -1, -1, 5, 6, 3, 2, 2, 1, 1, 0, 0, 0, 5, 5, 5, 4, 3, 2, 1, 1, 0, 0, 4, 4, 3, 3, 2, 2, 2, 2, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 3, 3, 1, 1, 0, 0, 0, 1, 2, 2, 3, 3, 0, 0, -1, -1, -1, 0, 1, 1, 2, 3, 0, 0, 0, 1, 0, 1, 1, 1, 1, 3, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 2, 2, 3, 2, 1, -1, -1, 0, 0, 0, 3, 3, 1, 0, 1, 0, -1, 0, 0, 0, 2, 3, 2, 1, 1, 1, 0, 0, 0, 0, 2, 3, 4, 3, 2, 1, 1, 1, 0, 0, 2, 2, 2, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 0, 0, 1, 2, 2, 2, 2, 0, 0, 0, 0, 0, 1, 2, 3, 3, 3, 0, 0, 0, -1, 0, 0, 1, 2, 3, 3, -2, -2, -1, 0, 1, 1, 1, 1, 2, 3, -1, -1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, -1, 0, 0, 1, 1, 0, 1, 2, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 2, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 2, 1, 1, 1, 0, 0, 0, 0, 0, 1, 2, 2, 2, 2, -1, -1, 0, 0, 0, 1, 2, 3, 3, 3, -1, -1, 0, 0, 0, 0, 1, 2, 3, 3, -3, -3, -2, 0, 1, 2, 2, 2, 2, 3, -3, -2, -2, -1, 0, 1, 1, 1, 2, 2, -2, -2, -1, -1, 0, 0, 0, 1, 1, 1, -2, -2, -1, 0, 0, 0, 0, 1, 1, 1, -2, -2, -1, 0, 0, -1, 0, 1, 1, 1, -2, -2, -1, 0, 0, 0, 1, 1, 1, 1, -1, -1, -1, 0, 0, 0, 1, 1, 1, 1, -1, -1, -1, 0, 0, 0, 1, 1, 2, 1, -1, -1, -1, 0, 0, 0, 1, 2, 2, 2, 0, -1, -1, 0, 0, 0, 1, 2, 2, 3, -4, -3, -2, -1, 0, 1, 2, 2, 2, 3, -4, -3, -3, -1, 0, 1, 1, 2, 2, 2, -4, -3, -3, -2, -1, 0, 1, 1, 2, 2, -4, -3, -3, -2, -1, 0, 0, 1, 2, 2, -4, -3, -3, -2, -1, 0, 0, 1, 2, 1, -3, -3, -3, -2, -1, 0, 0, 1, 2, 2, -2, -2, -2, -2, -1, 0, 0, 1, 1, 2, -1, -2, -2, -1, 0, 0, 0, 1, 1, 1, -1, -1, -2, -1, 0, 0, 0, 1, 1, 1, -1, -1, -1, -1, 0, 0, 0, 1, 1, 1, -4, -3, -2, -1, 0, 1, 2, 3, 3, 3, -5, -4, -3, -2, 0, 1, 1, 2, 2, 3, -5, -4, -3, -2, -1, 0, 1, 1, 2, 2, -5, -4, -4, -2, -1, 0, 1, 1, 2, 2, -4, -4, -4, -3, -1, 0, 0, 1, 2, 2, -4, -4, -4, -3, -2, -1, 0, 1, 2, 2, -3, -3, -3, -3, -2, -1, 0, 0, 1, 2, -2, -2, -2, -2, -1, 0, 0, 0, 0, 1, -1, -2, -2, -2, -1, 0, -1, -1, 0, 0, 0, -1, -1, -1, -1, 0, -1, -1, -1, 0, -4, -3, -2, -1, 0, 1, 2, 3, 3, 3, -5, -4, -3, -2, -1, 0, 1, 2, 3, 3, -5, -4, -3, -2, -1, 0, 1, 2, 2, 3, -6, -5, -4, -2, -1, 0, 0, 1, 2, 2, -6, -5, -4, -3, -2, -1, 0, 1, 2, 2, -5, -5, -4, -3, -2, -1, 0, 1, 1, 2, -4, -4, -4, -3, -2, -1, 0, 0, 1, 1, -2, -3, -3, -3, -2, -1, 0, 0, 0, 0, -2, -2, -2, -2, -2, -1, -1, -2, -2, -1, 0, -1, -1, -2, -2, -1, -1, -2, -2, -2, -4, -3, -2, -1, 0, 1, 1, 2, 3, 3, -5, -4, -3, -2, -1, 0, 1, 2, 2, 3, -6, -4, -3, -2, -1, 0, 1, 1, 2, 3, -6, -5, -4, -3, -1, -1, 0, 1, 2, 2, -6, -5, -4, -3, -2, -1, 0, 0, 1, 2, -5, -5, -4, -3, -2, -1, 0, 0, 1, 1, -4, -5, -4, -3, -2, -1, 0, 0, 0, 1, -3, -3, -3, -3, -3, -1, -1, -1, -1, -1, -2, -2, -3, -3, -3, -2, -2, -2, -3, -3, -1, -1, -1, -2, -2, -2, -2, -3, -4, -4, -5, -3, -2, -1, -1, 0, 1, 1, 2, 3, -6, -4, -3, -2, -1, 0, 1, 1, 2, 3, -6, -5, -3, -2, -1, 0, 0, 1, 1, 2, -6, -5, -4, -3, -2, -1, 0, 0, 1, 2, -6, -5, -4, -3, -2, -1, 0, 0, 1, 1, -5, -5, -4, -3, -2, -1, 0, 0, 0, 1, -4, -4, -4, -3, -3, -2, -1, 0, 0, 0, -3, -3, -3, -3, -3, -2, -1, -1, -2, -2, -2, -2, -2, -3, -3, -3, -2, -3, -4, -5, -1, -1, -2, -2, -2, -3, -3, -3, -5, -7, },
{ -4, -1, 0, 1, 1, 1, 0, 1, 1, 0, -4, -2, 0, 1, 2, 2, 1, 0, -1, -2, -4, -2, 0, 1, 2, 1, 0, -1, -3, -5, -4, -2, 0, 1, 1, -1, -2, -3, -4, -6, -5, -2, 0, 0, -1, -3, -4, -5, -6, -8, -5, -3, -1, 0, -2, -4, -5, -6, -8, -10, -6, -3, -1, -1, -2, -4, -6, -8, -9, -10, -5, -4, -2, -2, -2, -4, -7, -8, -10, -11, -6, -4, -2, -2, -2, -4, -6, -8, -10, -11, -7, -4, -2, -2, -2, -3, -5, -7, -9, -11, -5, -3, -1, 1, 1, 2, 2, 3, 4, 4, -5, -3, 0, 1, 2, 3, 3, 2, 2, 2, -5, -3, 0, 2, 3, 3, 2, 1, 0, 0, -5, -3, -1, 2, 2, 1, 0, -1, -2, -2, -6, -4, -1, 1, 1, -1, -2, -3, -4, -4, -6, -4, -1, 0, 0, -2, -3, -4, -5, -5, -7, -5, -2, 0, -1, -2, -4, -5, -5, -5, -7, -6, -2, -1, -1, -2, -4, -5, -5, -5, -7, -5, -3, -1, -1, -1, -3, -4, -4, -5, -8, -5, -2, -1, -1, -1, -2, -3, -4, -5, -5, -3, -1, 1, 1, 2, 2, 3, 3, 4, -5, -3, -1, 1, 2, 2, 2, 2, 2, 2, -5, -3, -1, 2, 2, 2, 2, 1, 1, 0, -5, -4, -1, 2, 2, 1, 0, 0, -1, -1, -6, -4, -1, 1, 1, 0, -1, -2, -2, -2, -7, -5, -2, 0, 0, -1, -2, -3, -3, -2, -7, -5, -3, -1, 0, -1, -2, -3, -3, -2, -7, -6, -4, -1, 0, -1, -2, -2, -2, -1, -8, -6, -4, -1, -1, -1, -1, -1, -1, -1, -9, -6, -4, -2, -1, -1, -1, -1, -1, -1, -5, -3, -1, 0, 1, 2, 2, 3, 4, 5, -5, -3, -1, 1, 2, 2, 2, 2, 3, 3, -5, -3, -1, 1, 2, 2, 2, 1, 1, 1, -5, -4, -2, 1, 1, 1, 1, 0, 0, 0, -5, -4, -2, 0, 0, 0, -1, -1, -1, 0, -7, -5, -3, -1, 0, -1, -1, -1, -1, 0, -7, -6, -4, -1, -1, -1, -1, -1, 0, 0, -7, -7, -5, -2, 0, 0, -1, 0, 0, 1, -8, -6, -6, -3, -1, 0, 0, 0, 1, 2, -9, -7, -5, -4, -1, 0, 0, 0, 1, 2, -4, -3, -1, 0, 1, 2, 3, 4, 5, 6, -4, -3, -1, 0, 1, 2, 3, 4, 4, 5, -4, -3, -1, 0, 1, 2, 3, 3, 3, 3, -4, -3, -1, 0, 1, 2, 2, 2, 2, 2, -4, -3, -2, 0, 0, 1, 1, 1, 1, 2, -5, -4, -3, -2, -1, 0, 0, 1, 2, 2, -5, -6, -4, -2, -1, 0, 0, 1, 2, 3, -6, -6, -5, -3, -1, 0, 1, 1, 2, 3, -7, -6, -6, -4, -1, 0, 1, 1, 2, 3, -9, -8, -6, -5, -2, 0, 0, 1, 2, 4, -3, -2, -1, 0, 1, 3, 4, 5, 6, 7, -3, -1, -1, 0, 1, 3, 4, 5, 6, 6, -3, -1, -1, 0, 1, 3, 4, 5, 5, 5, -2, -1, -1, 0, 1, 3, 4, 4, 4, 4, -3, -1, -1, 0, 0, 1, 2, 2, 3, 4, -3, -3, -2, -1, -1, 1, 1, 2, 3, 4, -4, -4, -3, -2, -1, 0, 1, 2, 3, 4, -5, -4, -4, -3, -1, 0, 1, 2, 3, 4, -6, -5, -5, -4, -2, 0, 0, 1, 3, 4, -9, -7, -6, -5, -3, -1, 0, 1, 2, 4, 0, 0, 0, 0, 1, 2, 4, 5, 6, 7, 0, 0, 0, 1, 1, 3, 4, 5, 6, 7, 0, 1, 1, 1, 1, 3, 5, 5, 6, 6, 0, 1, 1, 1, 1, 3, 4, 4, 5, 5, 0, 1, 1, 0, 0, 1, 2, 3, 4, 5, -1, 0, 0, -1, -1, 0, 1, 3, 4, 5, -1, -1, -1, -1, -1, 0, 1, 2, 4, 5, -2, -2, -3, -3, -2, -1, 0, 1, 3, 5, -4, -4, -4, -3, -3, -1, 0, 1, 3, 4, -7, -6, -5, -4, -3, -2, -1, 0, 2, 4, 3, 3, 2, 2, 1, 1, 3, 4, 5, 7, 3, 3, 3, 2, 1, 1, 3, 5, 6, 7, 3, 3, 3, 2, 1, 2, 3, 5, 6, 6, 3, 3, 3, 2, 1, 1, 3, 4, 5, 6, 2, 2, 2, 1, -1, 0, 1, 4, 5, 6, 1, 0, 0, -1, -1, -1, 1, 3, 5, 6, 0, -1, -2, -2, -2, -1, 0, 2, 4, 6, -1, -2, -3, -3, -3, -2, -1, 1, 3, 5, -3, -4, -4, -4, -3, -2, -1, 1, 2, 4, -6, -6, -5, -4, -4, -3, -1, 0, 2, 4, 7, 6, 4, 2, 1, 1, 2, 3, 4, 6, 7, 6, 4, 2, 1, 1, 2, 3, 5, 6, 7, 6, 4, 2, 1, 0, 2, 4, 5, 6, 6, 5, 3, 1, 1, 0, 2, 4, 5, 7, 4, 3, 2, 0, -1, 0, 1, 3, 6, 7, 2, 1, 0, -1, -2, -1, 1, 3, 5, 7, 1, -1, -2, -2, -2, -2, 0, 2, 4, 6, 0, -2, -3, -4, -3, -2, -1, 1, 3, 5, -3, -4, -4, -4, -3, -3, -1, 1, 3, 5, -5, -6, -6, -5, -4, -3, -2, 0, 3, 5, 13, 10, 7, 4, 2, 1, 1, 2, 3, 5, 12, 10, 7, 4, 2, 1, 1, 2, 4, 5, 12, 10, 7, 4, 2, 1, 1, 3, 4, 6, 11, 9, 6, 3, 1, 0, 1, 3, 5, 6, 9, 8, 5, 2, 0, 0, 1, 3, 5, 7, 7, 5, 3, 1, -1, -1, 0, 3, 5, 6, 5, 3, 1, -1, -2, -1, 0, 2, 5, 7, 3, 1, -1, -3, -3, -2, -1, 2, 4, 6, 0, -1, -3, -4, -4, -3, -1, 1, 4, 6, -3, -4, -4, -5, -4, -3, -2, 1, 3, 5, },
{ -3, 0, 3, 6, 7, 8, 9, 10, 10, 9, -4, 0, 3, 5, 6, 8, 8, 8, 7, 6, -5, -2, 2, 5, 5, 6, 6, 5, 4, 4, -6, -3, 1, 4, 4, 4, 4, 3, 2, 2, -7, -4, 1, 2, 2, 2, 1, 0, 0, 0, -8, -5, -1, 0, 0, -1, -1, -2, -2, -2, -9, -7, -4, -2, -2, -3, -4, -4, -3, -4, -11, -8, -6, -4, -4, -5, -5, -6, -6, -7, -13, -11, -8, -6, -6, -6, -7, -8, -9, -9, -16, -13, -11, -8, -7, -8, -9, -10, -11, -12, -1, 2, 4, 6, 7, 8, 9, 10, 11, 12, -2, 1, 3, 5, 6, 7, 8, 9, 9, 9, -4, 0, 2, 4, 5, 6, 6, 6, 6, 6, -5, -2, 1, 4, 4, 4, 4, 3, 3, 4, -7, -4, 0, 2, 2, 2, 1, 1, 1, 3, -8, -5, -2, 0, 0, -1, -1, -1, 0, 2, -9, -6, -4, -2, -2, -2, -2, -2, -1, 0, -10, -8, -5, -4, -4, -4, -3, -3, -2, -2, -12, -10, -7, -5, -5, -5, -5, -5, -4, -4, -14, -12, -9, -6, -6, -6, -6, -6, -6, -6, 0, 1, 3, 5, 5, 7, 8, 10, 12, 13, -1, 1, 3, 4, 5, 7, 8, 9, 10, 11, -3, 1, 2, 4, 5, 6, 7, 8, 8, 8, -4, -1, 1, 3, 4, 5, 5, 5, 5, 6, -6, -4, -1, 2, 3, 2, 2, 2, 3, 4, -7, -5, -2, 0, 0, 0, 0, 1, 2, 3, -8, -6, -4, -1, -1, -1, -1, 0, 2, 2, -9, -7, -5, -3, -3, -2, -1, -1, 0, 1, -11, -8, -6, -4, -3, -3, -3, -2, -1, -1, -13, -11, -8, -5, -4, -4, -4, -3, -3, -2, 0, 0, 1, 3, 4, 6, 8, 9, 11, 12, -1, 0, 1, 3, 4, 6, 8, 9, 10, 11, -2, -1, 0, 3, 4, 5, 7, 8, 9, 9, -4, -2, 0, 2, 4, 5, 6, 6, 7, 7, -5, -4, -1, 1, 3, 3, 3, 4, 5, 5, -7, -5, -3, -1, 0, 1, 1, 2, 3, 4, -8, -6, -4, -2, -1, 0, 0, 2, 3, 3, -9, -7, -5, -2, -2, -1, 0, 1, 2, 2, -11, -9, -6, -3, -2, -1, 0, 0, 0, 1, -14, -11, -8, -4, -3, -2, -2, -1, -1, -1, 0, 0, 0, 1, 2, 4, 7, 9, 10, 12, -1, -1, 0, 0, 1, 4, 6, 8, 9, 10, -3, -2, -1, 0, 1, 3, 6, 7, 8, 9, -3, -2, -1, 0, 1, 3, 5, 6, 7, 7, -4, -3, -2, -1, 0, 2, 3, 4, 5, 6, -5, -4, -4, -2, 0, 0, 2, 3, 4, 5, -7, -6, -5, -4, -1, 0, 1, 2, 3, 4, -9, -8, -6, -4, -2, 0, 0, 1, 2, 3, -11, -9, -7, -5, -2, -1, 0, 0, 1, 1, -14, -11, -9, -7, -3, -2, -1, -1, -1, 0, 2, 1, 0, 1, 2, 3, 6, 8, 10, 12, 0, -1, -1, 0, 1, 3, 6, 7, 9, 10, -2, -2, -1, 0, 1, 2, 5, 7, 8, 9, -3, -2, -1, 0, 1, 2, 4, 6, 6, 7, -4, -3, -2, -1, 0, 1, 3, 4, 5, 5, -5, -4, -3, -3, 0, 0, 1, 2, 3, 4, -6, -6, -5, -5, -2, -1, 0, 2, 3, 3, -8, -7, -7, -6, -2, -2, -1, 1, 2, 3, -11, -9, -8, -6, -3, -2, -1, 0, 1, 2, -14, -12, -10, -8, -4, -3, -2, -1, -1, 1, 3, 3, 2, 2, 2, 2, 4, 7, 9, 10, 1, 1, 1, 1, 2, 2, 4, 6, 8, 10, -1, -1, 0, 0, 1, 1, 3, 5, 7, 8, -2, -1, -1, 0, 0, 0, 2, 4, 6, 7, -3, -2, -1, -1, -1, 0, 1, 3, 4, 5, -5, -4, -3, -3, -2, -2, -1, 1, 3, 4, -6, -6, -6, -5, -4, -3, -2, -1, 2, 3, -8, -7, -8, -7, -5, -4, -3, -2, 1, 3, -10, -9, -9, -7, -6, -5, -4, -3, 0, 1, -14, -12, -10, -9, -7, -6, -5, -4, -1, 0, 5, 5, 4, 4, 4, 3, 2, 4, 6, 9, 3, 3, 3, 3, 3, 2, 2, 3, 6, 8, 0, 1, 1, 2, 2, 1, 1, 3, 5, 7, -1, 0, 0, 1, 1, 1, 0, 1, 4, 6, -2, -1, 0, 0, 0, -1, -2, 0, 3, 5, -4, -3, -2, -2, -2, -2, -2, -1, 3, 4, -5, -5, -6, -5, -4, -4, -3, -2, 1, 3, -7, -7, -8, -7, -6, -5, -5, -3, 0, 3, -9, -10, -10, -8, -7, -6, -5, -4, -1, 2, -13, -12, -11, -10, -9, -8, -6, -5, -3, 1, 8, 7, 7, 6, 4, 2, 1, 1, 3, 5, 5, 5, 5, 5, 4, 2, 1, 2, 4, 6, 3, 3, 3, 3, 3, 1, 1, 1, 3, 6, 1, 1, 2, 2, 2, 1, 0, -1, 2, 5, -1, 0, 1, 1, 0, -1, -2, -2, 1, 4, -2, -1, -1, -1, -1, -3, -4, -2, 1, 3, -4, -3, -4, -4, -5, -5, -5, -4, 0, 3, -5, -5, -6, -6, -6, -6, -6, -5, -2, 2, -8, -8, -9, -8, -8, -8, -8, -6, -3, 1, -12, -12, -11, -10, -10, -10, -9, -7, -4, 0, 13, 11, 9, 7, 4, 2, 0, 0, 0, 0, 11, 9, 7, 6, 3, 1, 0, 1, 1, 2, 8, 6, 4, 4, 2, 0, 0, -1, 1, 3, 5, 3, 2, 2, 1, -1, -2, -2, 0, 4, 4, 2, 1, 0, -1, -3, -3, -3, 0, 3, 2, 0, -2, -2, -3, -5, -5, -3, 0, 3, 0, -2, -4, -6, -6, -6, -6, -5, -2, 2, -2, -4, -7, -8, -8, -8, -7, -6, -3, 1, -4, -7, -9, -9, -10, -10, -9, -7, -5, 0, -8, -10, -12, -12, -13, -13, -12, -9, -6, -2, },
{ -16, -13, -11, -11, -17, -14, -5, -4, -11, -13, -13, -11, -9, -8, -13, -11, -5, -4, -7, -11, -10, -8, -6, -5, -10, -9, -4, -3, -5, -9, -10, -7, -4, -2, -7, -6, -3, -2, -4, -8, -9, -7, -4, -1, -3, -2, -2, -1, -2, -7, -10, -7, -4, -1, -3, 0, 0, 1, 0, -6, -10, -7, -4, -2, -4, 0, 1, 3, 2, -3, -13, -9, -5, -4, -5, -1, 3, 5, 4, -2, -17, -13, -8, -7, -7, -2, 3, 5, 5, -1, -20, -16, -12, -10, -10, -4, 2, 5, 4, 0, -15, -12, -11, -8, -13, -12, -7, -6, -10, -10, -12, -11, -9, -7, -11, -11, -7, -6, -9, -10, -8, -8, -6, -5, -10, -10, -7, -6, -8, -10, -9, -7, -4, -3, -7, -8, -7, -5, -6, -9, -9, -7, -4, -1, -3, -3, -4, -4, -5, -8, -8, -6, -4, -1, -3, 0, -1, -1, -3, -8, -9, -7, -4, -2, -4, 0, 1, 2, -1, -6, -11, -7, -5, -3, -5, -1, 2, 3, 1, -4, -15, -12, -8, -6, -6, -3, 2, 3, 2, -3, -20, -15, -11, -10, -9, -5, 1, 3, 2, -2, -12, -11, -9, -7, -10, -10, -8, -8, -8, -7, -9, -10, -8, -6, -9, -10, -9, -8, -9, -9, -5, -7, -6, -5, -9, -10, -8, -8, -9, -9, -5, -6, -4, -3, -7, -8, -8, -7, -8, -10, -6, -6, -4, -2, -3, -4, -5, -5, -7, -9, -6, -5, -3, -1, -3, 0, -2, -2, -6, -8, -7, -5, -3, -1, -3, -1, 1, 0, -3, -7, -8, -6, -4, -3, -4, -2, 1, 1, -2, -6, -14, -10, -8, -5, -6, -4, 1, 1, -1, -4, -19, -14, -11, -9, -9, -5, 0, 1, 0, -3, -8, -9, -8, -6, -8, -8, -7, -7, -6, -4, -5, -8, -7, -5, -8, -9, -8, -7, -7, -7, -1, -5, -5, -5, -7, -8, -8, -8, -8, -8, -1, -3, -4, -3, -6, -8, -7, -7, -8, -9, -1, -3, -3, -2, -3, -4, -5, -6, -7, -9, -3, -4, -2, -1, -2, -1, -2, -4, -7, -8, -4, -4, -2, -2, -2, -1, -1, -2, -5, -8, -5, -5, -3, -3, -3, -2, 0, -1, -4, -6, -11, -9, -7, -5, -5, -3, 0, 0, -2, -5, -17, -14, -10, -9, -8, -5, 0, 0, -1, -3, -3, -5, -6, -4, -5, -5, -4, -3, -2, -1, 0, -3, -5, -5, -6, -6, -6, -5, -4, -3, 3, 0, -3, -4, -6, -6, -6, -6, -6, -6, 3, 1, -1, -3, -5, -6, -6, -6, -7, -8, 2, 0, -1, -2, -3, -3, -5, -6, -7, -8, 0, -1, -1, -1, -1, -1, -3, -4, -6, -8, -2, -2, -2, -2, -2, -1, -1, -3, -5, -7, -4, -3, -3, -3, -2, -1, -1, -1, -4, -6, -9, -7, -7, -5, -4, -2, 0, 0, -2, -4, -15, -12, -10, -8, -6, -3, 0, 0, -1, -3, -1, -2, -3, -3, -2, 0, 0, 1, 2, 1, 4, 1, -2, -3, -3, -1, -1, 0, 0, 0, 6, 4, 0, -2, -3, -2, -2, -2, -1, -2, 6, 4, 2, -1, -3, -2, -3, -3, -3, -4, 5, 3, 2, 1, -1, 0, -3, -4, -4, -5, 3, 2, 1, 0, 0, 0, -1, -3, -4, -6, 1, 0, -1, -1, 0, 1, 1, -1, -3, -5, -1, -1, -2, -2, -1, 1, 1, 0, -2, -4, -5, -5, -5, -4, -3, 0, 1, 1, 0, -3, -14, -10, -9, -7, -4, -1, 0, 1, 0, -2, 1, 0, -1, -1, -1, 1, 2, 3, 3, 2, 4, 2, 0, -1, -1, 1, 1, 1, 2, 1, 6, 4, 1, 0, -1, 0, 0, 0, 0, -1, 7, 5, 2, 1, -1, 0, -1, -2, -2, -2, 6, 5, 3, 3, 1, 0, -1, -2, -3, -2, 5, 3, 3, 4, 3, 2, 1, -2, -3, -2, 3, 2, 1, 2, 3, 3, 3, 0, -2, -2, 1, 0, 0, 1, 2, 3, 3, 1, -1, -1, -4, -3, -2, -1, 2, 3, 3, 2, 1, 0, -11, -8, -7, -5, -1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 5, 4, 5, 5, 5, 3, 2, 1, 0, 1, 4, 4, 4, 4, 4, 5, 3, 1, 0, 0, 3, 4, 3, 3, 3, 6, 4, 2, 1, 0, 2, 2, 2, 3, 2, 7, 5, 3, 3, 1, 1, 1, 2, 2, 2, 7, 5, 5, 4, 3, 3, 3, 2, 2, 2, 6, 4, 4, 5, 6, 6, 5, 4, 2, 2, 4, 3, 3, 4, 5, 6, 6, 5, 4, 3, 0, 1, 2, 3, 4, 6, 6, 5, 5, 2, -7, -4, -2, 1, 2, 4, 6, 5, 5, 3, 2, 1, 0, -1, 2, 7, 8, 8, 8, 8, 3, 0, -1, -2, 1, 6, 8, 8, 7, 7, 4, 0, -2, -3, 0, 3, 5, 6, 6, 6, 5, 2, -2, -2, -1, 2, 2, 3, 5, 5, 7, 3, 1, 0, 0, 1, 1, 2, 4, 5, 8, 4, 3, 2, 3, 3, 2, 3, 4, 4, 8, 5, 4, 4, 5, 6, 4, 4, 5, 5, 7, 5, 4, 4, 6, 7, 6, 5, 6, 6, 3, 4, 4, 4, 6, 8, 7, 6, 8, 8, -2, 2, 2, 2, 3, 7, 8, 7, 8, 8, 1, -1, -2, -2, 1, 9, 12, 12, 11, 11, 1, -2, -4, -3, 0, 7, 10, 10, 10, 10, 2, -3, -5, -3, -1, 3, 5, 6, 9, 9, 3, -2, -6, -4, -1, 2, 2, 3, 5, 8, 5, 0, -3, -2, -1, 1, 1, 2, 4, 7, 7, 3, -1, 0, 2, 2, 1, 2, 4, 7, 9, 4, 1, 2, 4, 5, 4, 4, 6, 9, 8, 6, 2, 3, 5, 8, 5, 6, 9, 10, 5, 6, 4, 3, 5, 9, 7, 8, 11, 12, 3, 7, 3, 2, 5, 11, 10, 10, 12, 13, },
},
};
// clang-format on
/*!\brief Function to set unit's laplacian and class buffer.
* \param[in] i_min The pos of the block's top boundary
* \param[in] i_max The pos of the block's bottom boundary
* \param[in] j_min The pos of the block's left boundary
* \param[in] j_max The pos of the block's right boundary
* \param[in] stripe_size The size of gdf unit stripe.
* \param[in] rec_pnt Frame reconstruction data (pointing at the
* top-leftcorner of the unit)
* \param[in] rec_stride Stride of \c rec_pnt
* \param[in] bit_depth Bit-depth of the video
* \param[in] gdf_lap_y, Array of the buffer where the results,
* laplacian data of the block, will be
* written. (array order : ver, hor,
* dia0 and dia1)
* \param[in] gdf_lap_y_stride Stride of \c gdf_lap_y
* \param[in] gdf_cls_y Buffer where the results, pixel class data
* of the block, will be written.
* \param[in] gdf_lap_y_stride Stride of \c gdf_cls_y
*/
void gdf_set_lap_and_cls_unit_c(const int i_min, const int i_max,
const int j_min, const int j_max,
const int stripe_size, const uint16_t *rec_pnt,
const int rec_stride, const int bit_depth,
uint16_t *const *gdf_lap_y,
const int gdf_lap_y_stride, uint32_t *gdf_cls_y,
const int gdf_cls_y_stride) {
const int blk_height = i_max - i_min;
const int blk_width = j_max - j_min;
const uint16_t *rec_y = rec_pnt;
const int rec_y_stride = rec_stride;
const int offset_ver = rec_y_stride, offset_dia0 = rec_y_stride + 1,
offset_dia1 = rec_y_stride - 1;
const int clip_mask =
(1 << (16 - (GDF_TEST_INP_PREC - AOMMIN(bit_depth, GDF_TEST_INP_PREC)))) -
1;
const int lap_cls_height = (blk_height >> 1);
const int lap_y_stride = gdf_lap_y_stride >> 1;
uint32_t *above_line[GDF_NET_INP_GRD_NUM], *cur_line[GDF_NET_INP_GRD_NUM];
gdf_cls_y += gdf_cls_y_stride * lap_cls_height;
for (int grd_idx = 0; grd_idx < GDF_NET_INP_GRD_NUM; grd_idx++) {
above_line[grd_idx] =
(uint32_t *)(gdf_lap_y[grd_idx]) + lap_y_stride * (lap_cls_height - 1);
cur_line[grd_idx] =
(uint32_t *)(gdf_lap_y[grd_idx]) + lap_y_stride * (lap_cls_height);
}
const int16_t *std_pos = (int16_t *)(rec_y + blk_height * rec_y_stride);
const int16_t *std_pos_1;
const int16_t *std_pos0;
const int16_t *std_pos1;
const int16_t *std_pos2;
if ((i_max + GDF_TEST_STRIPE_OFF) % stripe_size == 0) {
std_pos_1 = std_pos - 3 * rec_stride;
std_pos0 = std_pos_1 + rec_stride;
std_pos1 = std_pos0 + rec_stride;
std_pos2 = std_pos1 + rec_stride;
} else {
std_pos_1 = std_pos - rec_stride;
std_pos0 = std_pos;
std_pos1 = std_pos0 + rec_stride;
std_pos2 = std_pos1 + rec_stride;
}
const int16_t *y00 = std_pos0;
const int16_t *y10 = std_pos1;
const int16_t *y_10 = std_pos_1;
const int16_t *y20 = std_pos2;
const int16_t *y0_1 = std_pos0 - 1;
const int16_t *y01 = std_pos0 + 1;
const int16_t *y1_1 = std_pos1 - 1;
const int16_t *y11 = std_pos1 + 1;
const int16_t *y_1_1 = std_pos_1 - 1;
const int16_t *y21 = std_pos2 + 1;
const int16_t *y_11 = std_pos_1 + 1;
const int16_t *y2_1 = std_pos2 - 1;
above_line[GDF_VER][0] = abs((y00[0] << 1) - y_10[0] - y10[0]) +
abs((y10[0] << 1) - y00[0] - y20[0]) +
abs((y00[1] << 1) - y_10[1] - y10[1]) +
abs((y10[1] << 1) - y00[1] - y20[1]);
above_line[GDF_HOR][0] = abs((y00[0] << 1) - y0_1[0] - y01[0]) +
abs((y10[0] << 1) - y1_1[0] - y11[0]) +
abs((y00[1] << 1) - y0_1[1] - y01[1]) +
abs((y10[1] << 1) - y1_1[1] - y11[1]);
above_line[GDF_DIAG0][0] = abs((y00[0] << 1) - y_1_1[0] - y11[0]) +
abs((y10[0] << 1) - y0_1[0] - y21[0]) +
abs((y00[1] << 1) - y_1_1[1] - y11[1]) +
abs((y10[1] << 1) - y0_1[1] - y21[1]);
above_line[GDF_DIAG1][0] = abs((y00[0] << 1) - y_11[0] - y1_1[0]) +
abs((y10[0] << 1) - y01[0] - y2_1[0]) +
abs((y00[1] << 1) - y_11[1] - y1_1[1]) +
abs((y10[1] << 1) - y01[1] - y2_1[1]);
for (int j0 = 2; j0 <= blk_width; j0 += 2) {
int j1 = j0 + 1;
int j00 = (j0 - 2) >> 1;
int j01 = j00 + 1;
above_line[GDF_VER][j00] += above_line[GDF_VER][j01] =
abs((y00[j0] << 1) - y_10[j0] - y10[j0]) +
abs((y10[j0] << 1) - y00[j0] - y20[j0]) +
abs((y00[j1] << 1) - y_10[j1] - y10[j1]) +
abs((y10[j1] << 1) - y00[j1] - y20[j1]);
above_line[GDF_HOR][j00] += above_line[GDF_HOR][j01] =
abs((y00[j0] << 1) - y0_1[j0] - y01[j0]) +
abs((y10[j0] << 1) - y1_1[j0] - y11[j0]) +
abs((y00[j1] << 1) - y0_1[j1] - y01[j1]) +
abs((y10[j1] << 1) - y1_1[j1] - y11[j1]);
above_line[GDF_DIAG0][j00] += above_line[GDF_DIAG0][j01] =
abs((y00[j0] << 1) - y_1_1[j0] - y11[j0]) +
abs((y10[j0] << 1) - y0_1[j0] - y21[j0]) +
abs((y00[j1] << 1) - y_1_1[j1] - y11[j1]) +
abs((y10[j1] << 1) - y0_1[j1] - y21[j1]);
above_line[GDF_DIAG1][j00] += above_line[GDF_DIAG1][j01] =
abs((y00[j0] << 1) - y_11[j0] - y1_1[j0]) +
abs((y10[j0] << 1) - y01[j0] - y2_1[j0]) +
abs((y00[j1] << 1) - y_11[j1] - y1_1[j1]) +
abs((y10[j1] << 1) - y01[j1] - y2_1[j1]);
}
for (int i = (lap_cls_height - 1); i >= 0; i--) {
std_pos -= (rec_y_stride << 1);
gdf_cls_y -= gdf_cls_y_stride;
for (int grd_idx = 0; grd_idx < GDF_NET_INP_GRD_NUM; grd_idx++) {
above_line[grd_idx] -= lap_y_stride;
cur_line[grd_idx] -= lap_y_stride;
}
y00 = std_pos;
y10 = std_pos + offset_ver;
y_10 = std_pos - offset_ver;
y20 = std_pos + offset_ver + offset_ver;
y0_1 = std_pos - 1;
y01 = std_pos + 1;
y1_1 = std_pos + offset_ver - 1;
y11 = std_pos + offset_ver + 1;
y_1_1 = std_pos - offset_dia0;
y21 = std_pos + offset_ver + offset_dia0;
y_11 = std_pos - offset_dia1;
y2_1 = std_pos + offset_ver + offset_dia1;
if (i == 0) {
cur_line[GDF_VER][0] += abs((y00[0] << 1) - y_10[0] - y10[0]) +
abs((y10[0] << 1) - y00[0] - y20[0]) +
abs((y00[1] << 1) - y_10[1] - y10[1]) +
abs((y10[1] << 1) - y00[1] - y20[1]);
cur_line[GDF_HOR][0] += abs((y00[0] << 1) - y0_1[0] - y01[0]) +
abs((y10[0] << 1) - y1_1[0] - y11[0]) +
abs((y00[1] << 1) - y0_1[1] - y01[1]) +
abs((y10[1] << 1) - y1_1[1] - y11[1]);
cur_line[GDF_DIAG0][0] += abs((y00[0] << 1) - y_1_1[0] - y11[0]) +
abs((y10[0] << 1) - y0_1[0] - y21[0]) +
abs((y00[1] << 1) - y_1_1[1] - y11[1]) +
abs((y10[1] << 1) - y0_1[1] - y21[1]);
cur_line[GDF_DIAG1][0] += abs((y00[0] << 1) - y_11[0] - y1_1[0]) +
abs((y10[0] << 1) - y01[0] - y2_1[0]) +
abs((y00[1] << 1) - y_11[1] - y1_1[1]) +
abs((y10[1] << 1) - y01[1] - y2_1[1]);
for (int j0 = 2; j0 <= blk_width; j0 += 2) {
int j1 = j0 + 1;
int j00 = (j0 - 2) >> 1;
int j01 = j00 + 1;
uint32_t tmp_v = abs((y00[j0] << 1) - y_10[j0] - y10[j0]) +
abs((y10[j0] << 1) - y00[j0] - y20[j0]) +
abs((y00[j1] << 1) - y_10[j1] - y10[j1]) +
abs((y10[j1] << 1) - y00[j1] - y20[j1]);
uint32_t tmp_h = abs((y00[j0] << 1) - y0_1[j0] - y01[j0]) +
abs((y10[j0] << 1) - y1_1[j0] - y11[j0]) +
abs((y00[j1] << 1) - y0_1[j1] - y01[j1]) +
abs((y10[j1] << 1) - y1_1[j1] - y11[j1]);
uint32_t tmp_d0 = abs((y00[j0] << 1) - y_1_1[j0] - y11[j0]) +
abs((y10[j0] << 1) - y0_1[j0] - y21[j0]) +
abs((y00[j1] << 1) - y_1_1[j1] - y11[j1]) +
abs((y10[j1] << 1) - y0_1[j1] - y21[j1]);
uint32_t tmp_d1 = abs((y00[j0] << 1) - y_11[j0] - y1_1[j0]) +
abs((y10[j0] << 1) - y01[j0] - y2_1[j0]) +
abs((y00[j1] << 1) - y_11[j1] - y1_1[j1]) +
abs((y10[j1] << 1) - y01[j1] - y2_1[j1]);
cur_line[GDF_VER][j00] += tmp_v;
cur_line[GDF_HOR][j00] += tmp_h;
cur_line[GDF_DIAG0][j00] += tmp_d0;
cur_line[GDF_DIAG1][j00] += tmp_d1;
cur_line[GDF_VER][j01] += tmp_v;
cur_line[GDF_HOR][j01] += tmp_h;
cur_line[GDF_DIAG0][j01] += tmp_d0;
cur_line[GDF_DIAG1][j01] += tmp_d1;
cur_line[GDF_VER][j00] &= clip_mask;
cur_line[GDF_HOR][j00] &= clip_mask;
cur_line[GDF_DIAG1][j00] &= clip_mask;
cur_line[GDF_DIAG0][j00] &= clip_mask;
gdf_cls_y[j00] =
(cur_line[GDF_VER][j00] > cur_line[GDF_HOR][j00] ? 0 : 1) |
(cur_line[GDF_DIAG0][j00] > cur_line[GDF_DIAG1][j00] ? 0 : 2);
cur_line[GDF_HOR][j00] |= (cur_line[GDF_HOR][j00] << 16);
cur_line[GDF_VER][j00] |= (cur_line[GDF_VER][j00] << 16);
cur_line[GDF_DIAG0][j00] |= (cur_line[GDF_DIAG0][j00] << 16);
cur_line[GDF_DIAG1][j00] |= (cur_line[GDF_DIAG1][j00] << 16);
}
} else {
above_line[GDF_VER][0] = abs((y00[0] << 1) - y_10[0] - y10[0]) +
abs((y10[0] << 1) - y00[0] - y20[0]) +
abs((y00[1] << 1) - y_10[1] - y10[1]) +
abs((y10[1] << 1) - y00[1] - y20[1]);
above_line[GDF_HOR][0] = abs((y00[0] << 1) - y0_1[0] - y01[0]) +
abs((y10[0] << 1) - y1_1[0] - y11[0]) +
abs((y00[1] << 1) - y0_1[1] - y01[1]) +
abs((y10[1] << 1) - y1_1[1] - y11[1]);
above_line[GDF_DIAG0][0] = abs((y00[0] << 1) - y_1_1[0] - y11[0]) +
abs((y10[0] << 1) - y0_1[0] - y21[0]) +
abs((y00[1] << 1) - y_1_1[1] - y11[1]) +
abs((y10[1] << 1) - y0_1[1] - y21[1]);
above_line[GDF_DIAG1][0] = abs((y00[0] << 1) - y_11[0] - y1_1[0]) +
abs((y10[0] << 1) - y01[0] - y2_1[0]) +
abs((y00[1] << 1) - y_11[1] - y1_1[1]) +
abs((y10[1] << 1) - y01[1] - y2_1[1]);
for (int j0 = 2; j0 <= blk_width; j0 += 2) {
int j1 = j0 + 1;
int j00 = (j0 - 2) >> 1;
int j01 = j00 + 1;
cur_line[GDF_VER][j00] += above_line[GDF_VER][j00] +=
above_line[GDF_VER][j01] =
abs((y00[j0] << 1) - y_10[j0] - y10[j0]) +
abs((y10[j0] << 1) - y00[j0] - y20[j0]) +
abs((y00[j1] << 1) - y_10[j1] - y10[j1]) +
abs((y10[j1] << 1) - y00[j1] - y20[j1]);
cur_line[GDF_HOR][j00] += above_line[GDF_HOR][j00] +=
above_line[GDF_HOR][j01] =
abs((y00[j0] << 1) - y0_1[j0] - y01[j0]) +
abs((y10[j0] << 1) - y1_1[j0] - y11[j0]) +
abs((y00[j1] << 1) - y0_1[j1] - y01[j1]) +
abs((y10[j1] << 1) - y1_1[j1] - y11[j1]);
cur_line[GDF_DIAG0][j00] += above_line[GDF_DIAG0][j00] +=
above_line[GDF_DIAG0][j01] =
abs((y00[j0] << 1) - y_1_1[j0] - y11[j0]) +
abs((y10[j0] << 1) - y0_1[j0] - y21[j0]) +
abs((y00[j1] << 1) - y_1_1[j1] - y11[j1]) +
abs((y10[j1] << 1) - y0_1[j1] - y21[j1]);
cur_line[GDF_DIAG1][j00] += above_line[GDF_DIAG1][j00] +=
above_line[GDF_DIAG1][j01] =
abs((y00[j0] << 1) - y_11[j0] - y1_1[j0]) +
abs((y10[j0] << 1) - y01[j0] - y2_1[j0]) +
abs((y00[j1] << 1) - y_11[j1] - y1_1[j1]) +
abs((y10[j1] << 1) - y01[j1] - y2_1[j1]);
cur_line[GDF_VER][j00] &= clip_mask;
cur_line[GDF_HOR][j00] &= clip_mask;
cur_line[GDF_DIAG1][j00] &= clip_mask;
cur_line[GDF_DIAG0][j00] &= clip_mask;
gdf_cls_y[j00] =
(cur_line[GDF_VER][j00] > cur_line[GDF_HOR][j00] ? 0 : 1) |
(cur_line[GDF_DIAG0][j00] > cur_line[GDF_DIAG1][j00] ? 0 : 2);
cur_line[GDF_HOR][j00] |= (cur_line[GDF_HOR][j00] << 16);
cur_line[GDF_VER][j00] |= (cur_line[GDF_VER][j00] << 16);
cur_line[GDF_DIAG0][j00] |= (cur_line[GDF_DIAG0][j00] << 16);
cur_line[GDF_DIAG1][j00] |= (cur_line[GDF_DIAG1][j00] << 16);
}
}
}
}
/*!\brief Function to apply scaling factor to expected coding error
* and then generate the final filtered unit
*/
void gdf_compensation_unit_c(uint16_t *rec_pnt, const int rec_stride,
int16_t *err_pnt, const int err_stride,
const int err_shift, const int scale,
const int pxl_max, const int blk_height,
const int blk_width) {
const int errShift_half = err_shift > 0 ? 1 << (err_shift - 1) : 0;
for (int i = 0; i < blk_height; i++) {
for (int j = 0; j < blk_width; j++) {
int16_t res_pxl = scale * (*(err_pnt + j));
if (res_pxl > 0) {
res_pxl = (res_pxl + errShift_half) >> err_shift;
} else {
res_pxl = -(((-res_pxl) + errShift_half) >> err_shift);
}
rec_pnt[j] = (uint16_t)CLIP(res_pxl + rec_pnt[j], 0, pxl_max);
}
rec_pnt += rec_stride;
err_pnt += err_stride;
}
}
#define GDF_NORM_IDX(_va) \
((((_va) > 0) \
? (((gdf_idx_scale) * (_va) + (gdf_shift_half)) >> (gdf_shift)) \
: (-(((gdf_idx_scale) * (-(_va)) + (gdf_shift_half)) >> \
(gdf_shift)))) - \
(gdf_idx_min))
/*!\brief Function to generate vertical/horizontal/mixed features
* and then lookup for expected coding error with the
* corresponding quantized features
*/
void gdf_inference_unit_c(const int i_min, const int i_max, const int j_min,
const int j_max, const int qp_idx,
const uint16_t *rec_pnt, const int rec_stride,
uint16_t *const *gdf_lap_pnt,
const int gdf_lap_stride, const uint32_t *gdf_cls_pnt,
const int gdf_cls_stride, int16_t *err_pnt,
const int err_stride, const int pxl_shift,
const int ref_dst_idx) {
const int blk_height = i_max - i_min;
const int blk_width = j_max - j_min;
const int gdf_shift_value = pxl_shift;
const uint16_t *rec_y = rec_pnt;
const int rec_y_stride = rec_stride;
const int res_y_stride = err_stride;
const int is_intra = ref_dst_idx == 0 ? 1 : 0;
const int gdf_frm_max =
is_intra ? GDF_NET_LUT_IDX_INTRA_MAX : GDF_NET_LUT_IDX_INTER_MAX;
const int gdf_idx_min = -(gdf_frm_max >> 1);
const int gdf_idx_max = gdf_frm_max - 1 + gdf_idx_min;
const int gdf_idx_scale = AOMMAX(-gdf_idx_min, gdf_idx_max);
int32_t gdf_shift =
GDF_TEST_INP_PREC - GDF_TRAIN_INP_PREC + GDF_TRAIN_PAR_SCALE_LOG2;
int32_t gdf_shift_half = 1 << (gdf_shift - 1);
const uint16_t *copied_lap_pnt[GDF_NET_INP_GRD_NUM];
memcpy(copied_lap_pnt, gdf_lap_pnt,
sizeof(const uint16_t *) * GDF_NET_INP_GRD_NUM);
const int16_t *alpha, *weight;
const int32_t *bias;
const int8_t *gdftable;
if (is_intra) {
alpha = gdf_intra_alpha_table[qp_idx];
weight = gdf_intra_weight_table[qp_idx];
bias = gdf_intra_bias_table[qp_idx];
gdftable = gdf_intra_error_table[qp_idx];
} else {
const int inter_ref_dst_idx = ref_dst_idx - 1;
alpha = gdf_inter_alpha_table[inter_ref_dst_idx][qp_idx];
weight = gdf_inter_weight_table[inter_ref_dst_idx][qp_idx];
bias = gdf_inter_bias_table[inter_ref_dst_idx][qp_idx];
gdftable = gdf_inter_error_table[inter_ref_dst_idx][qp_idx];
}
const uint32_t *cls_line = gdf_cls_pnt;
int gdf_idx_offset[GDF_NET_LUT_IDX_NUM];
for (int idx = 0; idx < GDF_NET_LUT_IDX_NUM; idx++) {
gdf_idx_offset[idx] = 1;
for (int r_idx = 0; r_idx < GDF_NET_LUT_IDX_NUM - 1 - idx; r_idx++) {
gdf_idx_offset[idx] *=
is_intra ? GDF_NET_LUT_IDX_INTRA_MAX : GDF_NET_LUT_IDX_INTER_MAX;
}
}
const int16_t *rec_ptr = (const int16_t *)(rec_y);
const int16_t *s_pos_fwd = 0, *s_pos_bwd = 0;
for (int i = 0; i < blk_height; i++) {
int32_t gdf_idx[GDF_BLOCK_PADDED][GDF_NET_LUT_IDX_NUM] = { 0 };
for (int k = 0; k < GDF_OPTS_INP_TOT; k++) {
if (k < GDF_NET_INP_REC_NUM) {
s_pos_fwd = rec_ptr +
(gdf_guided_sample_coordinates_fwd[k][0] * rec_stride) +
gdf_guided_sample_coordinates_fwd[k][1];
s_pos_bwd = rec_ptr +
(gdf_guided_sample_coordinates_bwd[k][0] * rec_stride) +
gdf_guided_sample_coordinates_bwd[k][1];
}
for (int j = 0; j < blk_width; j++) {
uint32_t cls_idx = cls_line[j >> 1];
const int32_t inp_value =
k < GDF_NET_INP_REC_NUM
? (((s_pos_fwd[j] - rec_ptr[j]) * (1 << gdf_shift_value)))
: (((copied_lap_pnt[k - GDF_NET_INP_REC_NUM][j])
<< gdf_shift_value) >>
GDF_TRAIN_GRD_SHIFT);
const int cls_offset = k * GDF_TRAIN_CLS_NUM + cls_idx;
int32_t gdf_inp =
CLIP(inp_value, -alpha[cls_offset], alpha[cls_offset]);
if (k < GDF_NET_INP_REC_NUM) {
const int32_t inp_value2 =
(s_pos_bwd[j] - rec_ptr[j]) * (1 << gdf_shift_value);
gdf_inp += CLIP(inp_value2, -alpha[cls_offset], alpha[cls_offset]);
}
gdf_inp = CLIP(gdf_inp, -(1 << (GDF_TEST_INP_PREC - 1)),
(1 << (GDF_TEST_INP_PREC - 1)) - 1);
for (int idx = 0; idx < GDF_NET_LUT_IDX_NUM; idx++) {
gdf_idx[j][idx] +=
gdf_inp *
(int32_t)weight[cls_offset +
(GDF_OPTS_INP_TOT * GDF_TRAIN_CLS_NUM) * idx];
}
if (k == (GDF_OPTS_INP_TOT - 1)) {
const int8_t *tb_ptr = gdftable;
for (int idx = 0; idx < GDF_NET_LUT_IDX_NUM; idx++) {
gdf_idx[j][idx] += bias[cls_idx + GDF_TRAIN_CLS_NUM * idx];
const int32_t tmp_gdf_idx = GDF_NORM_IDX(gdf_idx[j][idx]);
tb_ptr +=
CLIP(tmp_gdf_idx, 0, gdf_frm_max - 1) * gdf_idx_offset[idx];
}
err_pnt[j] = (int16_t)*tb_ptr;
}
}
}
if (i & 1) {
cls_line += gdf_cls_stride;
for (int grd_idx = 0; grd_idx < GDF_NET_INP_GRD_NUM; grd_idx++) {
copied_lap_pnt[grd_idx] += gdf_lap_stride;
}
}
rec_ptr += rec_y_stride;
err_pnt += res_y_stride;
}
}