35 #define BITSTREAM_READER_LE 
   50     {8,  {0, 4, 5, 4, 4, 4, 6, 6}},
 
   51     {12, {0, 2, 2, 3, 3, 3, 3, 5, 3, 2, 2, 2}},
 
   52     {12, {0, 2, 3, 4, 3, 3, 3, 3, 4, 3, 2, 2}},
 
   53     {12, {0, 3, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2}},
 
   54     {13, {0, 4, 4, 3, 3, 3, 3, 2, 3, 3, 2, 1, 1}},
 
   55     {9,  {0, 4, 4, 4, 4, 3, 3, 3, 2}},
 
   56     {10, {0, 4, 4, 4, 4, 3, 3, 2, 2, 2}},
 
   57     {12, {0, 4, 4, 4, 3, 3, 2, 3, 2, 2, 2, 2}}
 
   62     {10, {1, 2, 3, 4, 4, 7, 5, 5, 4, 1}},
 
   63     {11, {2, 3, 4, 4, 4, 7, 5, 4, 3, 3, 2}},
 
   64     {12, {2, 4, 5, 5, 5, 5, 6, 4, 4, 3, 1, 1}},
 
   65     {13, {3, 3, 4, 4, 5, 6, 6, 4, 4, 3, 2, 1, 1}},
 
   66     {11, {3, 4, 4, 5, 5, 5, 6, 5, 4, 2, 2}},
 
   67     {13, {3, 4, 5, 5, 5, 5, 6, 4, 3, 3, 2, 1, 1}},
 
   68     {13, {3, 4, 5, 5, 5, 6, 5, 4, 3, 3, 2, 1, 1}},
 
   69     {9,  {3, 4, 4, 5, 5, 5, 6, 5, 5}}
 
   75 typedef void (*
ivi_mc_func) (int16_t *buf, 
const int16_t *ref_buf,
 
   76                              ptrdiff_t pitch, 
int mc_type);
 
   78                                  const int16_t *ref_buf2,
 
   79                                  ptrdiff_t pitch, 
int mc_type, 
int mc_type2);
 
   82                   int offs, 
int mv_x, 
int mv_y, 
int mv_x2, 
int mv_y2,
 
   83                   int mc_type, 
int mc_type2)
 
   85     int ref_offs = offs + mv_y * band->
pitch + mv_x;
 
   88     int ref_size = (mc_type > 1) * band->
pitch + (mc_type & 1);
 
   93         av_assert0(buf_size - min_size - ref_size >= ref_offs);
 
   99         int ref_offs2 = offs + mv_y2 * band->
pitch + mv_x2;
 
  100         int ref_size2 = (mc_type2 > 1) * band->
pitch + (mc_type2 & 1);
 
  101         if (offs < 0 || ref_offs2 < 0 || !band->b_ref_buf)
 
  103         if (buf_size - min_size - ref_size2 < ref_offs2)
 
  108                band->
pitch, mc_type2);
 
  110             mc_avg(band->
buf + offs, band->
ref_buf + ref_offs,
 
  129     int         pos, 
i, j, codes_per_row, prefix, not_last_row;
 
  130     uint16_t    codewords[256]; 
 
  135     for (
i = 0; 
i < 
cb->num_rows; 
i++) {
 
  136         codes_per_row = 1 << 
cb->xbits[
i];
 
  137         not_last_row  = (
i != 
cb->num_rows - 1);
 
  138         prefix        = ((1 << 
i) - 1) << (
cb->xbits[
i] + not_last_row);
 
  140         for (j = 0; j < codes_per_row; j++) {
 
  148             codewords[
pos] = prefix | j;
 
  166     for (
i = 0; 
i < 8; 
i++) {
 
  247                        "Error while initializing custom vlc table!\n");
 
  270     for (p = 0; p < 3; p++) {
 
  272             for (
b = 0; 
b < 
planes[p].num_bands; 
b++) {
 
  295     uint32_t b_width, b_height, align_fac, width_aligned,
 
  296              height_aligned, buf_size;
 
  315     for (p = 0; p < 3; p++) {
 
  324                                             : (
planes[p].width  + 1) >> 1;
 
  326                                             : (
planes[p].height + 1) >> 1;
 
  330         align_fac       = p ? 8 : 16;
 
  331         width_aligned   = 
FFALIGN(b_width , align_fac);
 
  332         height_aligned  = 
FFALIGN(b_height, align_fac);
 
  333         buf_size        = width_aligned * height_aligned * 
sizeof(int16_t);
 
  335         for (
b = 0; 
b < 
planes[p].num_bands; 
b++) {
 
  339             band->
width    = b_width;
 
  341             band->
pitch    = width_aligned;
 
  342             band->
aheight  = height_aligned;
 
  349             planes[p].bands[0].blk_vlc.cust_desc.num_rows = 0;
 
  357                           int p, 
int b, 
int t_height, 
int t_width)
 
  362     for (y = 0; y < band->
height; y += t_height) {
 
  363         for (x = 0; x < band->
width; x += t_width) {
 
  396                               int tile_width, 
int tile_height)
 
  398     int p, 
b, x_tiles, y_tiles, t_width, t_height, 
ret;
 
  401     for (p = 0; p < 3; p++) {
 
  402         t_width  = !p ? tile_width  : (tile_width  + 3) >> 2;
 
  403         t_height = !p ? tile_height : (tile_height + 3) >> 2;
 
  405         if (!p && 
planes[0].num_bands == 4) {
 
  406             if (t_width % 2 || t_height % 2) {
 
  413         if(t_width<=0 || t_height<=0)
 
  416         for (
b = 0; 
b < 
planes[p].num_bands; 
b++) {
 
  440                                  p, 
b, t_height, t_width);
 
  480                        band->
pitch, blk_size);
 
  488                                    int mv_x2, 
int mv_y2,
 
  489                                    int *prev_dc, 
int is_intra,
 
  490                                    int mc_type, 
int mc_type2,
 
  491                                    uint32_t 
quant, 
int offs,
 
  496     uint8_t col_flags[8];
 
  498     uint32_t sym = 0, lo, hi, q;
 
  501     int num_coeffs = blk_size * blk_size;
 
  502     int col_mask   = blk_size - 1;
 
  508     if (min_size > buf_size)
 
  517     memset(trvec, 0, num_coeffs * 
sizeof(trvec[0]));
 
  519     memset(col_flags, 0, 
sizeof(col_flags));
 
  520     while (scan_pos <= num_coeffs) {
 
  544         if (scan_pos >= num_coeffs || scan_pos < 0)
 
  549             ff_dlog(avctx, 
"Val = 0 encountered!\n");
 
  556         col_flags[
pos & col_mask] |= !!
val;
 
  559     if (scan_pos < 0 || scan_pos >= num_coeffs && sym != rvmap->
eob_sym)
 
  564         *prev_dc     += trvec[0];
 
  566         col_flags[0] |= !!*prev_dc;
 
  576                         band->
pitch, col_flags);
 
  580         return ivi_mc(band, 
mc, mc_avg, offs, mv_x, mv_y, mv_x2, mv_y2,
 
  599     int mbn, 
blk, num_blocks, blk_size, 
ret, is_intra;
 
  600     int mc_type = 0, mc_type2 = -1;
 
  601     int mv_x = 0, mv_y = 0, mv_x2 = 0, mv_y2 = 0;
 
  603     uint32_t cbp, 
quant, buf_offs;
 
  607     const uint8_t *scale_tab;
 
  613     num_blocks = (band->
mb_size != blk_size) ? 4 : 1;
 
  626     for (mbn = 0, 
mb = tile->
mbs; mbn < tile->num_MBs; 
mb++, mbn++) {
 
  627         is_intra = !
mb->type;
 
  629         buf_offs = 
mb->buf_offs;
 
  647                 mc_type  = ((mv_y  & 1) << 1) | (mv_x  & 1);
 
  648                 mc_type2 = ((mv_y2 & 1) << 1) | (mv_x2 & 1);
 
  656             if (
mb->type != 2 && 
mb->type != 3)
 
  659                 int dmv_x, dmv_y, cx, cy;
 
  666                 if (
mb->xpos + dmv_x < 0 ||
 
  668                     mb->ypos + dmv_y < 0 ||
 
  673             if (
mb->type == 2 || 
mb->type == 3) {
 
  674                 int dmv_x, dmv_y, cx, cy;
 
  681                 if (
mb->xpos + dmv_x < 0 ||
 
  683                     mb->ypos + dmv_y < 0 ||
 
  693                 buf_offs += blk_size;
 
  694             } 
else if (
blk == 2) {
 
  695                 buf_offs -= blk_size;
 
  696                 buf_offs += blk_size * band->
pitch;
 
  701                                               mc_avg_with_delta_func,
 
  702                                               mv_x, mv_y, mv_x2, mv_y2,
 
  704                                               mc_type, mc_type2, 
quant,
 
  710                 int min_size = (blk_size - 1) * band->
pitch + blk_size;
 
  712                 if (min_size > buf_size)
 
  722                     ret = 
ivi_mc(band, mc_no_delta_func, mc_avg_no_delta_func,
 
  723                                  buf_offs, mv_x, mv_y, mv_x2, mv_y2,
 
  751     int             x, y, need_mc, mbn, 
blk, num_blocks, mv_x, mv_y, mc_type;
 
  752     int             offs, mb_offset, row_offset, 
ret;
 
  761     int             pitch       = band->
pitch;
 
  765                "parameters %d in ivi_process_empty_tile()\n",
 
  770     offs       = tile->
ypos * pitch + tile->
xpos;
 
  773     row_offset = mb_size * pitch;
 
  776     for (y = tile->
ypos; y < (tile->
ypos + tile->
height); y += mb_size) {
 
  779         for (x = tile->
xpos; x < xend; x += mb_size) {
 
  782             mb->buf_offs = mb_offset;
 
  806                     need_mc |= 
mb->mv_x || 
mb->mv_y; 
 
  808                         int dmv_x, dmv_y, cx, cy;
 
  810                         dmv_x = 
mb->mv_x >> is_halfpel;
 
  811                         dmv_y = 
mb->mv_y >> is_halfpel;
 
  812                         cx    = 
mb->mv_x &  is_halfpel;
 
  813                         cy    = 
mb->mv_y &  is_halfpel;
 
  815                         if (   
mb->xpos + dmv_x < 0
 
  816                             || 
mb->xpos + dmv_x + mb_size + cx > pitch
 
  817                             || 
mb->ypos + dmv_y < 0
 
  818                             || 
mb->ypos + dmv_y + mb_size + cy > band->
aheight) {
 
  828             mb_offset += mb_size;
 
  834         num_blocks = (mb_size != band->
blk_size) ? 4 : 1; 
 
  838         for (mbn = 0, 
mb = tile->
mbs; mbn < tile->num_MBs; 
mb++, mbn++) {
 
  844                 mc_type = ((mv_y & 1) << 1) | (mv_x & 1);
 
  852                 ret = 
ivi_mc(band, mc_no_delta_func, 0, offs,
 
  853                              mv_x, mv_y, 0, 0, mc_type, -1);
 
  862         for (y = 0; y < tile->
height; y++) {
 
  863             memcpy(dst, 
src, tile->
width*
sizeof(band->
buf[0]));
 
  874 static uint16_t ivi_calc_band_checksum(
const IVIBandDesc *band)
 
  877     int16_t     *
src, checksum;
 
  883         for (x = 0; x < band->
width; x++)
 
  908     for (y = 0; y < plane->
height; y++) {
 
  911         for (x = 0; x < 
w; x++) {
 
  912             int t = 
src[x] + 128;
 
  917             for (x = 0; x < 
w; x++)
 
  926     if (
ctx->pic_conf.luma_bands <= 1 && 
i == 2)
 
  930     return band->
bufs[
i];
 
  981         idx1 = band->
corr[
i * 2];
 
  982         idx2 = band->
corr[
i * 2 + 1];
 
  994         tile = &band->
tiles[t];
 
 1004                                       (
ctx->planes[0].bands[0].mb_size >> 3) - (band->
mb_size >> 3));
 
 1007             ff_dlog(avctx, 
"Empty tile encountered!\n");
 
 1023                        "Corrupted tile data encountered!\n");
 
 1029                        "Tile data_size mismatch!\n");
 
 1041         idx1 = band->
corr[
i*2];
 
 1042         idx2 = band->
corr[
i*2+1];
 
 1053         uint16_t chksum = ivi_calc_band_checksum(band);
 
 1056                    "Band checksum mismatch! Plane %d, band %d, " 
 1057                    "received: %"PRIx32
", calculated: %"PRIx16
"\n",
 
 1072     const uint8_t   *buf = avpkt->
data;
 
 1073     int             buf_size = avpkt->
size;
 
 1079     ctx->frame_data = buf;
 
 1080     ctx->frame_size = buf_size;
 
 1085                "Error while decoding picture header: %d\n", 
result);
 
 1088     if (
ctx->gop_invalid)
 
 1092         if (
ctx->got_p_frame) {
 
 1095             ctx->got_p_frame = 0;
 
 1107     if (!
ctx->planes[0].bands) {
 
 1112     ctx->switch_buffers(
ctx);
 
 1114     if (
ctx->is_nonnull_frame(
ctx)) {
 
 1115         ctx->buf_invalid[
ctx->dst_buf] = 1;
 
 1116         for (p = 0; p < 3; p++) {
 
 1117             for (
b = 0; 
b < 
ctx->planes[p].num_bands; 
b++) {
 
 1121                            "Error while decoding band: %d, plane: %d\n", 
b, p);
 
 1126         ctx->buf_invalid[
ctx->dst_buf] = 0;
 
 1128         if (
ctx->is_scalable)
 
 1131         for (p = 0; p < 3; p++) {
 
 1132             if (!
ctx->planes[p].bands[0].buf)
 
 1136     if (
ctx->buf_invalid[
ctx->dst_buf])
 
 1139     if (!
ctx->is_nonnull_frame(
ctx))
 
 1149     if (
ctx->is_scalable) {
 
 1183             ctx->got_p_frame = 0;
 
 1189     if (
ctx->show_indeo4_info) {
 
 1190         if (
ctx->is_scalable)
 
 1192         if (
ctx->uses_tiling)
 
 1194         if (
ctx->has_b_frames)
 
 1196         if (
ctx->has_transp)
 
 1200         if (
ctx->uses_fullpel)
 
 1202         ctx->show_indeo4_info = 0;
 
 1217     if (
ctx->mb_vlc.cust_tab.table)
 
 1220     if (
ctx->blk_vlc.cust_tab.table)
 
 1233     0,  8, 16, 24, 32, 40, 48, 56,
 
 1234     1,  9, 17, 25, 33, 41, 49, 57,
 
 1235     2, 10, 18, 26, 34, 42, 50, 58,
 
 1236     3, 11, 19, 27, 35, 43, 51, 59,
 
 1237     4, 12, 20, 28, 36, 44, 52, 60,
 
 1238     5, 13, 21, 29, 37, 45, 53, 61,
 
 1239     6, 14, 22, 30, 38, 46, 54, 62,
 
 1240     7, 15, 23, 31, 39, 47, 55, 63
 
 1244      0,  1,  2,  3,  4,  5,  6,  7,
 
 1245      8,  9, 10, 11, 12, 13, 14, 15,
 
 1246     16, 17, 18, 19, 20, 21, 22, 23,
 
 1247     24, 25, 26, 27, 28, 29, 30, 31,
 
 1248     32, 33, 34, 35, 36, 37, 38, 39,
 
 1249     40, 41, 42, 43, 44, 45, 46, 47,
 
 1250     48, 49, 50, 51, 52, 53, 54, 55,
 
 1251     56, 57, 58, 59, 60, 61, 62, 63
 
 1255     0, 1, 4, 8, 5, 2, 3, 6, 9, 12, 13, 10, 7, 11, 14, 15
 
 1267     {1,  1,  0,  1,  1,  0,  1,  1,  2,  2,  1,  1,  1,  1,  3,  3,
 
 1268      1,  1,  2,  2,  1,  1,  4,  4,  1,  1,  1,  1,  2,  2,  5,  5,
 
 1269      1,  1,  3,  3,  1,  1,  6,  6,  1,  2,  1,  2,  7,  7,  1,  1,
 
 1270      8,  8,  1,  1,  4,  2,  1,  4,  2,  1,  3,  3,  1,  1,  1,  9,
 
 1271      9,  1,  2,  1,  2,  1,  5,  5,  1,  1, 10, 10,  1,  1,  3,  3,
 
 1272      2,  2,  1,  1, 11, 11,  6,  4,  4,  1,  6,  1,  2,  1,  2, 12,
 
 1273      8,  1, 12,  7,  8,  7,  1, 16,  1, 16,  1,  3,  3, 13,  1, 13,
 
 1274      2,  2,  1, 15,  1,  5, 14, 15,  1,  5, 14,  1, 17,  8, 17,  8,
 
 1275      1,  4,  4,  2,  2,  1, 25, 25, 24, 24,  1,  3,  1,  3,  1,  8,
 
 1276      6,  7,  6,  1, 18,  8, 18,  1,  7, 23,  2,  2, 23,  1,  1, 21,
 
 1277     22,  9,  9, 22, 19,  1, 21,  5, 19,  5,  1, 33, 20, 33, 20,  8,
 
 1278      4,  4,  1, 32,  2,  2,  8,  3, 32, 26,  3,  1,  7,  7, 26,  6,
 
 1279      1,  6,  1,  1, 16,  1, 10,  1, 10,  2, 16, 29, 28,  2, 29, 28,
 
 1280      1, 27,  5,  8,  5, 27,  1,  8,  3,  7,  3, 31, 41, 31,  1, 41,
 
 1281      6,  1,  6,  7,  4,  4,  1,  1,  2,  1,  2, 11, 34, 30, 11,  1,
 
 1282     30, 15, 15, 34, 36, 40, 36, 40, 35, 35, 37, 37, 39, 39, 38, 38},
 
 1285     { 1,  -1,   0,   2,  -2,   0,   3,  -3,   1,  -1,   4,  -4,   5,  -5,   1,  -1,
 
 1286       6,  -6,   2,  -2,   7,  -7,   1,  -1,   8,  -8,   9,  -9,   3,  -3,   1,  -1,
 
 1287      10, -10,   2,  -2,  11, -11,   1,  -1,  12,   4, -12,  -4,   1,  -1,  13, -13,
 
 1288       1,  -1,  14, -14,   2,   5,  15,  -2,  -5, -15,  -3,   3,  16, -16,  17,   1,
 
 1289      -1, -17,   6,  18,  -6, -18,   2,  -2,  19, -19,   1,  -1,  20, -20,   4,  -4,
 
 1290       7,  -7,  21, -21,   1,  -1,   2,   3,  -3,  22,  -2, -22,   8,  23,  -8,   1,
 
 1291       2, -23,  -1,   2,  -2,  -2,  24,   1, -24,  -1,  25,   5,  -5,   1, -25,  -1,
 
 1292       9,  -9,  26,   1, -26,   3,   1,  -1,  27,  -3,  -1, -27,   1,   3,  -1,  -3,
 
 1293      28,  -4,   4,  10, -10, -28,   1,  -1,   1,  -1,  29,   6, -29,  -6,  30,  -4,
 
 1294       3,   3,  -3, -30,   1,   4,  -1,  31,  -3,   1,  11, -11,  -1, -31,  32,  -1,
 
 1295      -1,   2,  -2,   1,   1, -32,   1,   4,  -1,  -4,  33,  -1,   1,   1,  -1,   5,
 
 1296       5,  -5, -33,  -1, -12,  12,  -5,  -7,   1,   1,   7,  34,   4,  -4,  -1,   4,
 
 1297     -34,  -4,  35,  36,  -2, -35,  -2, -36,   2,  13,   2,  -1,   1, -13,   1,  -1,
 
 1298      37,   1,  -5,   6,   5,  -1,  38,  -6,  -8,   5,   8,  -1,   1,   1, -37,  -1,
 
 1299       5,  39,  -5,  -5,   6,  -6, -38, -39, -14,  40,  14,   2,   1,   1,  -2, -40,
 
 1300      -1,  -2,   2,  -1,  -1,  -1,   1,   1,   1,  -1,   1,  -1,   1,  -1,   1,  -1}
 
 1306     {0,  1,  1,  2,  2,  3,  3,  4,  4,  5,  5,  6,  8,  6,  8,  7,
 
 1307      7,  9,  9, 10, 10, 11, 11,  1, 12,  1, 12, 13, 13, 16, 14, 16,
 
 1308     14, 15, 15, 17, 17, 18,  0, 18, 19, 20, 21, 19, 22, 21, 20, 22,
 
 1309     25, 24,  2, 25, 24, 23, 23,  2, 26, 28, 26, 28, 29, 27, 29, 27,
 
 1310     33, 33,  1, 32,  1,  3, 32, 30, 36,  3, 36, 30, 31, 31, 35, 34,
 
 1311     37, 41, 34, 35, 37,  4, 41,  4, 49,  8,  8, 49, 40, 38,  5, 38,
 
 1312     40, 39,  5, 39, 42, 43, 42,  7, 57,  6, 43, 44,  6, 50,  7, 44,
 
 1313     57, 48, 50, 48, 45, 45, 46, 47, 51, 46, 47, 58,  1, 51, 58,  1,
 
 1314     52, 59, 53,  9, 52, 55, 55, 59, 53, 56, 54, 56, 54,  9, 64, 64,
 
 1315     60, 63, 60, 63, 61, 62, 61, 62,  2, 10,  2, 10, 11,  1, 11, 13,
 
 1316     12,  1, 12, 13, 16, 16,  8,  8, 14,  3,  3, 15, 14, 15,  4,  4,
 
 1317      1, 17, 17,  5,  1,  7,  7,  5,  6,  1,  2,  2,  6, 22,  1, 25,
 
 1318     21, 22,  8, 24,  1, 21, 25, 24,  8, 18, 18, 23,  9, 20, 23, 33,
 
 1319     29, 33, 20,  1, 19,  1, 29, 36,  9, 36, 19, 41, 28, 57, 32,  3,
 
 1320     28,  3,  1, 27, 49, 49,  1, 32, 26, 26,  2,  4,  4,  7, 57, 41,
 
 1321      2,  7, 10,  5, 37, 16, 10, 27,  8,  8, 13, 16, 37, 13,  1,  5},
 
 1324     {0,   1,  -1,   1,  -1,   1,  -1,   1,  -1,   1,  -1,   1,   1,  -1,  -1,   1,
 
 1325     -1,   1,  -1,   1,  -1,   1,  -1,   2,   1,  -2,  -1,   1,  -1,   1,   1,  -1,
 
 1326     -1,   1,  -1,   1,  -1,   1,   0,  -1,   1,   1,   1,  -1,   1,  -1,  -1,  -1,
 
 1327      1,   1,   2,  -1,  -1,   1,  -1,  -2,   1,   1,  -1,  -1,   1,   1,  -1,  -1,
 
 1328      1,  -1,   3,   1,  -3,   2,  -1,   1,   1,  -2,  -1,  -1,  -1,   1,   1,   1,
 
 1329      1,   1,  -1,  -1,  -1,   2,  -1,  -2,   1,   2,  -2,  -1,   1,   1,   2,  -1,
 
 1330     -1,   1,  -2,  -1,   1,   1,  -1,   2,   1,   2,  -1,   1,  -2,  -1,  -2,  -1,
 
 1331     -1,   1,   1,  -1,   1,  -1,   1,   1,   1,  -1,  -1,   1,   4,  -1,  -1,  -4,
 
 1332      1,   1,   1,   2,  -1,  -1,   1,  -1,  -1,   1,  -1,  -1,   1,  -2,   1,  -1,
 
 1333      1,   1,  -1,  -1,   1,   1,  -1,  -1,   3,   2,  -3,  -2,   2,   5,  -2,   2,
 
 1334      2,  -5,  -2,  -2,  -2,   2,  -3,   3,   2,   3,  -3,   2,  -2,  -2,   3,  -3,
 
 1335      6,   2,  -2,   3,  -6,   3,  -3,  -3,   3,   7,  -4,   4,  -3,   2,  -7,   2,
 
 1336      2,  -2,  -4,   2,   8,  -2,  -2,  -2,   4,   2,  -2,   2,   3,   2,  -2,  -2,
 
 1337      2,   2,  -2,  -8,  -2,   9,  -2,   2,  -3,  -2,   2,  -2,   2,   2,   2,   4,
 
 1338     -2,  -4,  10,   2,   2,  -2,  -9,  -2,   2,  -2,   5,   4,  -4,   4,  -2,   2,
 
 1339     -5,  -4,  -3,   4,   2,  -3,   3,  -2,  -5,   5,   3,   3,  -2,  -3, -10,  -4}
 
 1345     {1,  1,  0,  2,  2,  1,  1,  3,  3,  4,  4,  0,  1,  1,  5,  5,
 
 1346      2,  2,  6,  6,  7,  7,  1,  8,  1,  8,  3,  3,  9,  9,  1,  2,
 
 1347      2,  1,  4, 10,  4, 10, 11, 11,  1,  5, 12, 12,  1,  5, 13, 13,
 
 1348      3,  3,  6,  6,  2,  2, 14, 14, 16, 16, 15,  7, 15,  8,  8,  7,
 
 1349      1,  1, 17, 17,  4,  4,  1,  1, 18, 18,  2,  2,  5,  5, 25,  3,
 
 1350      9,  3, 25,  9, 19, 24, 19, 24,  1, 21, 20,  1, 21, 22, 20, 22,
 
 1351     23, 23,  8,  6, 33,  6,  8, 33,  7,  7, 26, 26,  1, 32,  1, 32,
 
 1352     28,  4, 28, 10, 29, 27, 27, 10, 41,  4, 29,  2,  2, 41, 36, 31,
 
 1353     49, 31, 34, 30, 34, 36, 30, 35,  1, 49, 11,  5, 35, 11,  1,  3,
 
 1354      3,  5, 37, 37,  8, 40,  8, 40, 12, 12, 42, 42,  1, 38, 16, 57,
 
 1355      1,  6, 16, 39, 38,  6,  7,  7, 13, 13, 39, 43,  2, 43, 57,  2,
 
 1356     50,  9, 44,  9, 50,  4, 15, 48, 44,  4,  1, 15, 48, 14, 14,  1,
 
 1357     45, 45,  8,  3,  5,  8, 51, 47,  3, 46, 46, 47,  5, 51,  1, 17,
 
 1358     17, 58,  1, 58,  2, 52, 52,  2, 53,  7, 59,  6,  6, 56, 53, 55,
 
 1359      7, 55,  1, 54, 59, 56, 54, 10,  1, 10,  4, 60,  1, 60,  8,  4,
 
 1360      8, 64, 64, 61,  1, 63,  3, 63, 62, 61,  5, 11,  5,  3, 11, 62},
 
 1363     { 1,  -1,   0,   1,  -1,   2,  -2,   1,  -1,   1,  -1,   0,   3,  -3,   1,  -1,
 
 1364       2,  -2,   1,  -1,   1,  -1,   4,   1,  -4,  -1,   2,  -2,   1,  -1,   5,   3,
 
 1365      -3,  -5,   2,   1,  -2,  -1,   1,  -1,   6,   2,   1,  -1,  -6,  -2,   1,  -1,
 
 1366       3,  -3,   2,  -2,   4,  -4,   1,  -1,   1,  -1,   1,   2,  -1,   2,  -2,  -2,
 
 1367       7,  -7,   1,  -1,   3,  -3,   8,  -8,   1,  -1,   5,  -5,   3,  -3,   1,   4,
 
 1368       2,  -4,  -1,  -2,   1,   1,  -1,  -1,   9,   1,   1,  -9,  -1,   1,  -1,  -1,
 
 1369       1,  -1,   3,  -3,   1,   3,  -3,  -1,   3,  -3,   1,  -1,  10,   1, -10,  -1,
 
 1370       1,   4,  -1,   2,   1,  -1,   1,  -2,   1,  -4,  -1,   6,  -6,  -1,   1,   1,
 
 1371       1,  -1,   1,   1,  -1,  -1,  -1,   1,  11,  -1,  -2,   4,  -1,   2, -11,   5,
 
 1372      -5,  -4,  -1,   1,   4,   1,  -4,  -1,  -2,   2,   1,  -1,  12,   1,  -2,   1,
 
 1373     -12,   4,   2,   1,  -1,  -4,   4,  -4,   2,  -2,  -1,   1,   7,  -1,  -1,  -7,
 
 1374      -1,  -3,   1,   3,   1,   5,   2,   1,  -1,  -5,  13,  -2,  -1,   2,  -2, -13,
 
 1375       1,  -1,   5,   6,   5,  -5,   1,   1,  -6,   1,  -1,  -1,  -5,  -1,  14,   2,
 
 1376      -2,   1, -14,  -1,   8,   1,  -1,  -8,   1,   5,   1,   5,  -5,   1,  -1,   1,
 
 1377      -5,  -1,  15,   1,  -1,  -1,  -1,   3, -15,  -3,   6,   1,  16,  -1,   6,  -6,
 
 1378      -6,   1,  -1,   1, -16,   1,   7,  -1,   1,  -1,  -6,  -3,   6,  -7,   3,  -1}
 
 1384     {0,  1,  1,  2,  2,  3,  3,  4,  4,  1,  1,  5,  5,  6,  6,  7,
 
 1385      7,  8,  8,  9,  9,  2,  2, 10, 10,  1,  1, 11, 11, 12, 12,  3,
 
 1386      3, 13, 13,  0, 14, 14, 16, 15, 16, 15,  4,  4, 17,  1, 17,  1,
 
 1387      5,  5, 18, 18,  2,  2,  6,  6,  8, 19,  7,  8,  7, 19, 20, 20,
 
 1388     21, 21, 22, 24, 22, 24, 23, 23,  1,  1, 25, 25,  3,  3, 26, 26,
 
 1389      9,  9, 27, 27, 28, 28, 33, 29,  4, 33, 29,  1,  4,  1, 32, 32,
 
 1390      2,  2, 31, 10, 30, 10, 30, 31, 34, 34,  5,  5, 36, 36, 35, 41,
 
 1391     35, 11, 41, 11, 37,  1,  8,  8, 37,  6,  1,  6, 40,  7,  7, 40,
 
 1392     12, 38, 12, 39, 39, 38, 49, 13, 49, 13,  3, 42,  3, 42, 16, 16,
 
 1393     43, 43, 14, 14,  1,  1, 44, 15, 44, 15,  2,  2, 57, 48, 50, 48,
 
 1394     57, 50,  4, 45, 45,  4, 46, 47, 47, 46,  1, 51,  1, 17, 17, 51,
 
 1395      8,  9,  9,  5, 58,  8, 58,  5, 52, 52, 55, 56, 53, 56, 55, 59,
 
 1396     59, 53, 54,  1,  6, 54,  7,  7,  6,  1,  2,  3,  2,  3, 64, 60,
 
 1397     60, 10, 10, 64, 61, 62, 61, 63,  1, 63, 62,  1, 18, 24, 18,  4,
 
 1398     25,  4,  8, 21, 21,  1, 24, 22, 25, 22,  8, 11, 19, 11, 23,  1,
 
 1399     20, 23, 19, 20,  5, 12,  5,  1, 16,  2, 12, 13,  2, 13,  1, 16},
 
 1402     { 0,   1,  -1,   1,  -1,   1,  -1,   1,  -1,   2,  -2,   1,  -1,   1,  -1,   1,
 
 1403      -1,   1,  -1,   1,  -1,   2,  -2,   1,  -1,   3,  -3,   1,  -1,   1,  -1,   2,
 
 1404      -2,   1,  -1,   0,   1,  -1,   1,   1,  -1,  -1,   2,  -2,   1,   4,  -1,  -4,
 
 1405       2,  -2,   1,  -1,  -3,   3,   2,  -2,   2,   1,   2,  -2,  -2,  -1,   1,  -1,
 
 1406       1,  -1,   1,   1,  -1,  -1,   1,  -1,   5,  -5,   1,  -1,   3,  -3,   1,  -1,
 
 1407       2,  -2,   1,  -1,   1,  -1,   1,   1,   3,  -1,  -1,   6,  -3,  -6,  -1,   1,
 
 1408       4,  -4,   1,   2,   1,  -2,  -1,  -1,   1,  -1,   3,  -3,   1,  -1,   1,   1,
 
 1409      -1,   2,  -1,  -2,   1,   7,  -3,   3,  -1,   3,  -7,  -3,   1,  -3,   3,  -1,
 
 1410       2,   1,  -2,   1,  -1,  -1,   1,   2,  -1,  -2,  -4,  -1,   4,   1,   2,  -2,
 
 1411       1,  -1,  -2,   2,   8,  -8,  -1,   2,   1,  -2,  -5,   5,   1,  -1,  -1,   1,
 
 1412      -1,   1,   4,  -1,   1,  -4,  -1,  -1,   1,   1,   9,   1,  -9,   2,  -2,  -1,
 
 1413      -4,   3,  -3,  -4,  -1,   4,   1,   4,   1,  -1,   1,  -1,   1,   1,  -1,   1,
 
 1414      -1,  -1,  -1,  10,   4,   1,   4,  -4,  -4, -10,   6,   5,  -6,  -5,   1,  -1,
 
 1415       1,   3,  -3,  -1,   1,  -1,  -1,  -1,  11,   1,   1, -11,  -2,  -2,   2,   5,
 
 1416      -2,  -5,  -5,   2,  -2,  12,   2,  -2,   2,   2,   5,  -3,  -2,   3,  -2, -12,
 
 1417      -2,   2,   2,   2,  -5,   3,   5,  13,  -3,   7,  -3,  -3,  -7,   3, -13,   3}
 
 1423     {0,  1,  1,  1,  2,  2,  1,  3,  3,  1,  1,  1,  4,  4,  1,  5,
 
 1424      2,  1,  5,  2,  1,  1,  6,  6,  1,  1,  1,  1,  1,  7,  3,  1,
 
 1425      2,  3,  0,  1,  2,  7,  1,  1,  1,  8,  1,  1,  8,  1,  1,  1,
 
 1426      9,  1,  9,  1,  2,  1,  1,  2,  1,  1, 10,  4,  1, 10,  1,  4,
 
 1427      1,  1,  1,  1,  1,  3,  1,  1,  1,  3,  2,  1,  5,  1,  1,  1,
 
 1428      2,  5,  1, 11,  1, 11,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
 
 1429      2,  1,  6,  1,  6,  1,  1,  2,  1,  1,  1,  1,  1,  1,  1, 12,
 
 1430      3,  1, 12,  1,  1,  1,  2,  1,  1,  3,  1,  1,  1,  1,  1,  1,
 
 1431      4,  1,  1,  1,  2,  1,  1,  4,  1,  1,  1,  1,  1,  1,  2,  1,
 
 1432      1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  3,  1,  2,  1,  1,  5,
 
 1433      1,  1,  1,  1,  1,  7,  1,  7,  1,  1,  2,  3,  1,  1,  1,  1,
 
 1434      5,  1,  1,  1,  1,  1,  1,  2, 13,  1,  1,  1,  1,  1,  1,  1,
 
 1435      1,  1,  1,  1,  1,  1,  1,  1, 13,  2,  1,  1,  4,  1,  1,  1,
 
 1436      3,  1,  6,  1,  1,  1, 14,  1,  1,  1,  1,  1, 14,  6,  1,  1,
 
 1437      1,  1, 15,  2,  4,  1,  2,  3, 15,  1,  1,  1,  8,  1,  1,  8,
 
 1438      1,  1,  1,  1,  1,  1,  1,  1,  2,  1,  1,  1,  1,  1,  1,  1},
 
 1441     { 0,   1,  -1,   2,   1,  -1,  -2,   1,  -1,   3,  -3,   4,   1,  -1,  -4,   1,
 
 1442       2,   5,  -1,  -2,  -5,   6,   1,  -1,  -6,   7,  -7,   8,  -8,   1,   2,   9,
 
 1443       3,  -2,   0,  -9,  -3,  -1,  10, -10,  11,   1, -11,  12,  -1, -12,  13, -13,
 
 1444       1,  14,  -1, -14,   4,  15, -15,  -4,  16, -16,   1,   2,  17,  -1, -17,  -2,
 
 1445      18, -18,  19, -19,  20,   3, -20,  21, -21,  -3,   5,  22,   2, -22, -23,  23,
 
 1446      -5,  -2,  24,   1, -24,  -1,  25, -25,  26, -26, -27,  27,  28,  29, -28, -29,
 
 1447       6,  30,   2, -31,  -2, -30,  31,  -6, -32,  32,  33, -33,  34, -35, -34,   1,
 
 1448       4, -36,  -1,  35,  37,  36,   7, -37,  38,  -4, -38,  39,  41,  40, -40, -39,
 
 1449       3,  42, -43, -41,  -7, -42,  43,  -3,  44, -44,  45, -45,  46,  47,   8, -47,
 
 1450     -48, -46,  50, -50,  48,  49,  51, -49,  52, -52,   5, -51,  -8, -53,  53,   3,
 
 1451     -56,  56,  55,  54, -54,   2,  60,  -2, -55,  58,   9,  -5,  59,  57, -57, -63,
 
 1452      -3, -58, -60, -61,  61, -59, -62,  -9,   1,  64,  62,  69, -64,  63,  65, -67,
 
 1453     -68,  66, -65,  68, -66, -69,  67, -70,  -1,  10,  71, -71,   4,  73,  72,  70,
 
 1454       6, -76,  -3,  74, -78, -74,   1,  78,  80, -72, -75,  76,  -1,   3, -73,  79,
 
 1455      75,  77,   1,  11,  -4, -79, -10,  -6,  -1, -77, -83, -80,   2,  81, -84,  -2,
 
 1456      83, -81,  82, -82,  84, -87, -86,  85, -11, -85,  86, -89,  87, -88,  88,  89}
 
 1462     {1,  1,  0,  2,  1,  2,  1,  3,  3,  1,  1,  4,  4,  2,  2,  1,
 
 1463      1,  5,  5,  6,  1,  6,  1,  7,  7,  3,  3,  2,  8,  2,  8,  1,
 
 1464      1,  0,  9,  9,  1,  1, 10,  4, 10,  4, 11, 11,  2,  1,  2,  1,
 
 1465     12, 12,  3,  3,  1,  1, 13,  5,  5, 13, 14,  1,  1, 14,  2,  2,
 
 1466      6,  6, 15,  1,  1, 15, 16,  4,  7, 16,  4,  7,  1,  1,  3,  3,
 
 1467      8,  8,  2,  2,  1,  1, 17, 17,  1,  1, 18, 18,  5,  5,  2,  2,
 
 1468      1,  1,  9, 19,  9, 19, 20,  3,  3, 20,  1, 10, 21,  1, 10,  4,
 
 1469      4, 21, 22,  6,  6, 22,  1,  1, 23, 24,  2,  2, 23, 24, 11,  1,
 
 1470      1, 11,  7, 25,  7,  1,  1, 25,  8,  8,  3, 26,  3,  1, 12,  2,
 
 1471      2, 26,  1, 12,  5,  5, 27,  4,  1,  4,  1, 27, 28,  1, 28, 13,
 
 1472      1, 13,  2, 29,  2,  1, 32,  6,  1, 30, 14, 29, 14,  6,  3, 31,
 
 1473      3,  1, 30,  1, 32, 31, 33,  9, 33,  1,  1,  7,  9,  7,  2,  2,
 
 1474      1,  1,  4, 36, 34,  4,  5, 10, 10,  5, 34,  1,  1, 35,  8,  8,
 
 1475     36,  3, 35,  1, 15,  3,  2,  1, 16, 15, 16,  2, 37,  1, 37,  1,
 
 1476      1,  1,  6,  6, 38,  1, 38, 11,  1, 39, 39, 40, 11,  2, 41,  4,
 
 1477     40,  1,  2,  4,  1,  1,  1, 41,  3,  1,  3,  1,  5,  7,  5,  7},
 
 1480     { 1,  -1,   0,   1,   2,  -1,  -2,   1,  -1,   3,  -3,   1,  -1,   2,  -2,   4,
 
 1481      -4,   1,  -1,   1,   5,  -1,  -5,   1,  -1,   2,  -2,   3,   1,  -3,  -1,   6,
 
 1482      -6,   0,   1,  -1,   7,  -7,   1,   2,  -1,  -2,   1,  -1,   4,   8,  -4,  -8,
 
 1483       1,  -1,   3,  -3,   9,  -9,   1,   2,  -2,  -1,   1,  10, -10,  -1,   5,  -5,
 
 1484       2,  -2,   1,  11, -11,  -1,   1,   3,   2,  -1,  -3,  -2,  12, -12,   4,  -4,
 
 1485       2,  -2,  -6,   6,  13, -13,   1,  -1,  14, -14,   1,  -1,   3,  -3,   7,  -7,
 
 1486      15, -15,   2,   1,  -2,  -1,   1,   5,  -5,  -1, -16,   2,   1,  16,  -2,   4,
 
 1487      -4,  -1,   1,   3,  -3,  -1,  17, -17,   1,   1,  -8,   8,  -1,  -1,   2,  18,
 
 1488     -18,  -2,   3,   1,  -3,  19, -19,  -1,   3,  -3,   6,   1,  -6,  20,   2,   9,
 
 1489      -9,  -1, -20,  -2,   4,  -4,   1,  -5,  21,   5, -21,  -1,   1, -22,  -1,   2,
 
 1490      22,  -2,  10,   1, -10,  23,   1,   4, -23,   1,   2,  -1,  -2,  -4,  -7,   1,
 
 1491       7, -24,  -1,  24,  -1,  -1,   1,   3,  -1, -25,  25,   4,  -3,  -4,  11, -11,
 
 1492      26, -26,   6,   1,   1,  -6,  -5,  -3,   3,   5,  -1, -27,  27,   1,   4,  -4,
 
 1493      -1,  -8,  -1,  28,   2,   8, -12, -28,  -2,  -2,   2,  12,  -1,  29,   1, -29,
 
 1494      30, -30,   5,  -5,   1, -31,  -1,   3,  31,  -1,   1,   1,  -3, -13,   1,  -7,
 
 1495      -1, -32,  13,   7,  32,  33, -33,  -1,  -9, -34,   9,  34,  -6,   5,   6,  -5}
 
 1501     {1,  1,  0,  1,  1,  2,  2,  1,  1,  3,  3,  1,  1,  0,  2,  2,
 
 1502      4,  1,  4,  1,  1,  1,  5,  5,  1,  1,  6,  6,  2,  2,  1,  1,
 
 1503      3,  3,  7,  7,  1,  1,  8,  8,  1,  1,  2,  2,  1,  9,  1,  9,
 
 1504      4,  4, 10,  1,  1, 10,  1,  1, 11, 11,  3,  3,  1,  2,  1,  2,
 
 1505      1,  1, 12, 12,  5,  5,  1,  1, 13,  1,  1, 13,  2,  2,  1,  1,
 
 1506      6,  6,  1,  1,  4, 14,  4, 14,  3,  1,  3,  1,  1,  1, 15,  7,
 
 1507     15,  2,  2,  7,  1,  1,  1,  8,  1,  8, 16, 16,  1,  1,  1,  1,
 
 1508      2,  1,  1,  2,  1,  1,  3,  5,  5,  3,  4,  1,  1,  4,  1,  1,
 
 1509     17, 17,  9,  1,  1,  9,  2,  2,  1,  1, 10, 10,  1,  6,  1,  1,
 
 1510      6, 18,  1,  1, 18,  1,  1,  1,  2,  2,  3,  1,  3,  1,  1,  1,
 
 1511      4,  1, 19,  1, 19,  7,  1,  1, 20,  1,  4, 20,  1,  7, 11,  2,
 
 1512      1, 11, 21,  2,  8,  5,  1,  8,  1,  5, 21,  1,  1,  1, 22,  1,
 
 1513      1, 22,  1,  1,  3,  3,  1, 23,  2, 12, 24,  1,  1,  2,  1,  1,
 
 1514     12, 23,  1,  1, 24,  1,  1,  1,  4,  1,  1,  1,  2,  1,  6,  6,
 
 1515      4,  2,  1,  1,  1,  1,  1,  1,  1, 14, 13,  3,  1, 25,  9, 25,
 
 1516     14,  1,  9,  3, 13,  1,  1,  1,  1,  1, 10,  1,  1,  2, 10,  2},
 
 1519     {-20,  -1,   0,   2,  -2,   1,  -1,   3,  -3,   1,  -1,   4,  -4,   0,   2,  -2,
 
 1520        1,   5,  -1,  -5,   6,  -6,   1,  -1,   7,  -7,   1,  -1,   3,  -3,   8,  -8,
 
 1521        2,  -2,   1,  -1,   9,  -9,   1,  -1,  10, -10,   4,  -4,  11,   1, -11,  -1,
 
 1522        2,  -2,   1,  12, -12,  -1,  13, -13,   1,  -1,   3,  -3,  14,   5, -14,  -5,
 
 1523      -15,  15,  -1,   1,   2,  -2,  16, -16,   1,  17, -17,  -1,   6,  -6,  18, -18,
 
 1524        2,  -2, -19,  19,  -3,   1,   3,  -1,   4,  20,  -4,   1, -21,  21,   1,   2,
 
 1525       -1,  -7,   7,  -2,  22, -22,  23,   2, -23,  -2,   1,  -1, -24,  24, -25,  25,
 
 1526       -8, -26,  26,   8, -27,  27,   5,   3,  -3,  -5,  -4,  28, -28,   4,  29, -29,
 
 1527        1,  -1,  -2, -30,  30,   2,   9,  -9, -31,  31,   2,  -2, -32,   3,  32, -33,
 
 1528       -3,   1,  33, -34,  -1,  34, -35,  35, -10,  10,  -6,  36,   6, -36,  37, -37,
 
 1529       -5,  38,   1, -38,  -1,   3,  39, -39,  -1,  40,   5,   1, -40,  -3,   2, -11,
 
 1530      -41,  -2,   1,  11,  -3,  -4,  41,   3,  42,   4,  -1, -43, -42,  43,   1, -44,
 
 1531       45,  -1,  44, -45,  -7,   7, -46,   1, -12,   2,   1, -47,  46,  12,  47,  48,
 
 1532       -2,  -1, -48,  49,  -1, -50, -49,  50,  -6, -51,  51,  52, -13,  53,  -4,   4,
 
 1533        6,  13, -53, -52, -54,  55,  54, -55, -56,  -2,   2,  -8,  56,   1,  -3,  -1,
 
 1534        2,  58,   3,   8,  -2,  57, -58, -60, -59, -57,  -3,  60,  59, -14,   3,  14}
 
 1540     {1,  1,  0,  2,  2,  1,  1,  3,  3,  4,  4,  5,  5,  1,  1,  6,
 
 1541      6,  2,  2,  7,  7,  8,  8,  1,  1,  3,  3,  9,  9, 10, 10,  1,
 
 1542      1,  2,  2,  4,  4, 11,  0, 11, 12, 12, 13, 13,  1,  1,  5,  5,
 
 1543     14, 14, 15, 16, 15, 16,  3,  3,  1,  6,  1,  6,  2,  2,  7,  7,
 
 1544      8,  8, 17, 17,  1,  1,  4,  4, 18, 18,  2,  2,  1, 19,  1, 20,
 
 1545     19, 20, 21, 21,  3,  3, 22, 22,  5,  5, 24,  1,  1, 23,  9, 23,
 
 1546     24,  9,  2,  2, 10,  1,  1, 10,  6,  6, 25,  4,  4, 25,  7,  7,
 
 1547     26,  8,  1,  8,  3,  1, 26,  3, 11, 11, 27, 27,  2, 28,  1,  2,
 
 1548     28,  1, 12, 12,  5,  5, 29, 13, 13, 29, 32,  1,  1, 33, 31, 30,
 
 1549     32,  4, 30, 33,  4, 31,  3, 14,  1,  1,  3, 34, 34,  2,  2, 14,
 
 1550      6,  6, 35, 36, 35, 36,  1, 15,  1, 16, 16, 15,  7,  9,  7,  9,
 
 1551     37,  8,  8, 37,  1,  1, 39,  2, 38, 39,  2, 40,  5, 38, 40,  5,
 
 1552      3,  3,  4,  4, 10, 10,  1,  1,  1,  1, 41,  2, 41,  2,  6,  6,
 
 1553      1,  1, 11, 42, 11, 43,  3, 42,  3, 17,  4, 43,  1, 17,  7,  1,
 
 1554      8, 44,  4,  7, 44,  5,  8,  2,  5,  1,  2, 48, 45,  1, 12, 45,
 
 1555     12, 48, 13, 13,  1,  9,  9, 46,  1, 46, 47, 47, 49, 18, 18, 49},
 
 1558     { 1,  -1,   0,   1,  -1,   2,  -2,   1,  -1,   1,  -1,   1,  -1,   3,  -3,   1,
 
 1559      -1,  -2,   2,   1,  -1,   1,  -1,   4,  -4,  -2,   2,   1,  -1,   1,  -1,   5,
 
 1560      -5,  -3,   3,   2,  -2,   1,   0,  -1,   1,  -1,   1,  -1,   6,  -6,   2,  -2,
 
 1561       1,  -1,   1,   1,  -1,  -1,  -3,   3,   7,   2,  -7,  -2,  -4,   4,   2,  -2,
 
 1562       2,  -2,   1,  -1,   8,  -8,   3,  -3,   1,  -1,  -5,   5,   9,   1,  -9,   1,
 
 1563      -1,  -1,   1,  -1,  -4,   4,   1,  -1,   3,  -3,   1, -10,  10,   1,   2,  -1,
 
 1564      -1,  -2,   6,  -6,   2,  11, -11,  -2,   3,  -3,   1,  -4,   4,  -1,   3,  -3,
 
 1565       1,   3,  12,  -3,  -5, -12,  -1,   5,   2,  -2,   1,  -1,  -7,   1,  13,   7,
 
 1566      -1, -13,   2,  -2,   4,  -4,   1,   2,  -2,  -1,   1,  14, -14,   1,   1,   1,
 
 1567      -1,  -5,  -1,  -1,   5,  -1,  -6,   2, -15,  15,   6,   1,  -1,  -8,   8,  -2,
 
 1568      -4,   4,   1,   1,  -1,  -1,  16,   2, -16,  -2,   2,  -2,   4,   3,  -4,  -3,
 
 1569      -1,  -4,   4,   1, -17,  17,  -1,  -9,   1,   1,   9,   1,  -5,  -1,  -1,   5,
 
 1570      -7,   7,   6,  -6,   3,  -3,  18, -18,  19, -19,   1, -10,  -1,  10,  -5,   5,
 
 1571      20, -20,  -3,   1,   3,   1,   8,  -1,  -8,   2,   7,  -1, -21,  -2,   5,  21,
 
 1572       5,  -1,  -7,  -5,   1,  -6,  -5, -11,   6,  22,  11,   1,   1, -22,  -3,  -1,
 
 1573       3,  -1,   3,  -3, -23,   4,  -4,   1,  23,  -1,   1,  -1,   1,  -2,   2,  -1}
 
 1579     {1,  1,  1,  1,  0,  2,  2,  1,  1,  3,  3,  0,  1,  1,  2,  2,
 
 1580      4,  4,  1,  1,  5,  5,  1,  1,  2,  2,  3,  3,  6,  6,  1,  1,
 
 1581      7,  7,  8,  1,  8,  2,  2,  1,  4,  4,  1,  3,  1,  3,  9,  9,
 
 1582      2,  2,  1,  5,  1,  5, 10, 10,  1,  1, 11, 11,  3,  6,  3,  4,
 
 1583      4,  6,  2,  2,  1, 12,  1, 12,  7, 13,  7, 13,  1,  1,  8,  8,
 
 1584      2,  2, 14, 14, 16, 15, 16,  5,  5,  1,  3, 15,  1,  3,  4,  4,
 
 1585      1,  1, 17, 17,  2,  2,  6,  6,  1, 18,  1, 18, 22, 21, 22, 21,
 
 1586     25, 24, 25, 19,  9, 20,  9, 23, 19, 24, 20,  3, 23,  7,  3,  1,
 
 1587      1,  7, 28, 26, 29,  5, 28, 26,  5,  8, 29,  4,  8, 27,  2,  2,
 
 1588      4, 27,  1,  1, 10, 36, 10, 33, 33, 36, 30,  1, 32, 32,  1, 30,
 
 1589      6, 31, 31, 35,  3,  6, 11, 11,  3,  2, 35,  2, 34,  1, 34,  1,
 
 1590     37, 37, 12,  7, 12,  5, 41,  5,  4,  7,  1,  8, 13,  4,  1, 41,
 
 1591     13, 38,  8, 38,  9,  1, 40, 40,  9,  1, 39,  2,  2, 49, 39, 42,
 
 1592      3,  3, 14, 16, 49, 14, 16, 42, 43, 43,  6,  6, 15,  1,  1, 15,
 
 1593     44, 44,  1,  1, 50, 48,  4,  5,  4,  7,  5,  2, 10, 10, 48,  7,
 
 1594     50, 45,  2,  1, 45,  8,  8,  1, 46, 46,  3, 47, 47,  3,  1,  1},
 
 1597     { 1,  -1,   2,  -2,   0,   1,  -1,   3,  -3,   1,  -1,   0,   4,  -4,   2,  -2,
 
 1598       1,  -1,   5,  -5,   1,  -1,   6,  -6,   3,  -3,   2,  -2,   1,  -1,   7,  -7,
 
 1599       1,  -1,   1,   8,  -1,   4,  -4,  -8,   2,  -2,   9,   3,  -9,  -3,   1,  -1,
 
 1600       5,  -5,  10,   2, -10,  -2,   1,  -1,  11, -11,   1,  -1,  -4,   2,   4,   3,
 
 1601      -3,  -2,   6,  -6,  12,   1, -12,  -1,   2,   1,  -2,  -1,  13, -13,   2,  -2,
 
 1602       7,  -7,   1,  -1,   1,   1,  -1,   3,  -3,  14,   5,  -1, -14,  -5,   4,  -4,
 
 1603      15, -15,   1,  -1,   8,  -8,  -3,   3,  16,   1, -16,  -1,   1,   1,  -1,  -1,
 
 1604       1,   1,  -1,   1,   2,   1,  -2,   1,  -1,  -1,  -1,   6,  -1,   3,  -6,  17,
 
 1605     -17,  -3,   1,   1,   1,   4,  -1,  -1,  -4,   3,  -1,   5,  -3,  -1,  -9,   9,
 
 1606      -5,   1,  18, -18,   2,   1,  -2,   1,  -1,  -1,   1,  19,  -1,   1, -19,  -1,
 
 1607       4,   1,  -1,   1,   7,  -4,  -2,   2,  -7,  10,  -1, -10,   1,  20,  -1, -20,
 
 1608       1,  -1,   2,   4,  -2,   5,   1,  -5,   6,  -4,  21,   4,   2,  -6, -21,  -1,
 
 1609      -2,   1,  -4,  -1,  -3,  22,  -1,   1,   3, -22,  -1,  11, -11,   1,   1,   1,
 
 1610       8,  -8,   2,   2,  -1,  -2,  -2,  -1,   1,  -1,  -5,   5,   2,  23, -23,  -2,
 
 1611       1,  -1,  24, -24,  -1,  -1,   7,   6,  -7,   5,  -6,  12,  -3,   3,   1,  -5,
 
 1612       1,   1, -12,  25,  -1,  -5,   5, -25,  -1,   1,   9,   1,  -1,  -9,  26, -26}