source: 3DVCSoftware/trunk/source/Lib/TLibCommon/TComRom.cpp @ 2

Last change on this file since 2 was 2, checked in by hhi, 12 years ago

inital import

  • Property svn:eol-style set to native
File size: 169.9 KB
Line 
1
2
3/** \file     TComRom.cpp
4    \brief    global variables & functions
5*/
6
7#include "TComRom.h"
8#include <memory.h>
9#include <stdlib.h>
10#include <stdio.h>
11
12// ====================================================================================================================
13// Initialize / destroy functions
14// ====================================================================================================================
15
16// initialize ROM variables
17Void initROM()
18{
19  Int i, c;
20 
21  // g_aucConvertToBit[ x ]: log2(x/4), if x=4 -> 0, x=8 -> 1, x=16 -> 2, ...
22  ::memset( g_aucConvertToBit,   -1, sizeof( g_aucConvertToBit ) );
23  c=0;
24  for ( i=4; i<MAX_CU_SIZE; i*=2 )
25  {
26    g_aucConvertToBit[ i ] = c;
27    c++;
28  }
29  g_aucConvertToBit[ i ] = c;
30 
31  // g_auiFrameScanXY[ g_aucConvertToBit[ transformSize ] ]: zigzag scan array for transformSize
32  c=2;
33  for ( i=0; i<MAX_CU_DEPTH; i++ )
34  {
35    g_auiFrameScanXY[ i ] = new UInt[ c*c ];
36    g_auiFrameScanX [ i ] = new UInt[ c*c ];
37    g_auiFrameScanY [ i ] = new UInt[ c*c ];
38    initFrameScanXY( g_auiFrameScanXY[i], g_auiFrameScanX[i], g_auiFrameScanY[i], c, c );
39#if QC_MDCS
40    g_auiSigLastScan[0][i] = new UInt[ c*c ];
41    g_auiSigLastScan[1][i] = new UInt[ c*c ];
42    g_auiSigLastScan[2][i] = new UInt[ c*c ];
43    initSigLastScan( g_auiSigLastScan[0][i], g_auiSigLastScan[1][i], g_auiSigLastScan[2][i], c, c, i);
44#endif //QC_MDCS
45
46    c <<= 1;
47  } 
48}
49
50Void destroyROM()
51{
52  Int i;
53 
54  for ( i=0; i<MAX_CU_DEPTH; i++ )
55  {
56    delete[] g_auiFrameScanXY[i];
57    delete[] g_auiFrameScanX [i];
58    delete[] g_auiFrameScanY [i];
59#if QC_MDCS
60    delete[] g_auiSigLastScan[0][i];
61    delete[] g_auiSigLastScan[1][i];
62    delete[] g_auiSigLastScan[2][i];
63#endif //QC_MDCS
64  }
65
66#if HHI_DMM_INTRA
67  if ( !g_aacWedgeLists.empty() )
68  {
69    for ( UInt ui = 0; ui < g_aacWedgeLists.size(); ui++ )
70    {
71      g_aacWedgeLists[ui].clear();
72    }
73    g_aacWedgeLists.clear();
74  }
75
76  if ( !g_aacWedgeRefLists.empty() )
77  {
78    for ( UInt ui = 0; ui < g_aacWedgeRefLists.size(); ui++ )
79    {
80      g_aacWedgeRefLists[ui].clear();
81    }
82    g_aacWedgeRefLists.clear();
83  }
84#endif
85}
86
87// ====================================================================================================================
88// Data structure related table & variable
89// ====================================================================================================================
90
91UInt g_uiMaxCUWidth  = MAX_CU_SIZE;
92UInt g_uiMaxCUHeight = MAX_CU_SIZE;
93UInt g_uiMaxCUDepth  = MAX_CU_DEPTH;
94UInt g_uiAddCUDepth  = 0;
95
96UInt g_auiZscanToRaster [ MAX_NUM_SPU_W*MAX_NUM_SPU_W ] = { 0, };
97UInt g_auiRasterToZscan [ MAX_NUM_SPU_W*MAX_NUM_SPU_W ] = { 0, };
98UInt g_auiRasterToPelX  [ MAX_NUM_SPU_W*MAX_NUM_SPU_W ] = { 0, };
99UInt g_auiRasterToPelY  [ MAX_NUM_SPU_W*MAX_NUM_SPU_W ] = { 0, };
100
101UInt g_auiPUOffset[4] = { 0, 8, 4, 4 };
102
103Void initZscanToRaster ( Int iMaxDepth, Int iDepth, UInt uiStartVal, UInt*& rpuiCurrIdx )
104{
105  Int iStride = 1 << ( iMaxDepth - 1 );
106 
107  if ( iDepth == iMaxDepth )
108  {
109    rpuiCurrIdx[0] = uiStartVal;
110    rpuiCurrIdx++;
111  }
112  else
113  {
114    Int iStep = iStride >> iDepth;
115    initZscanToRaster( iMaxDepth, iDepth+1, uiStartVal,                     rpuiCurrIdx );
116    initZscanToRaster( iMaxDepth, iDepth+1, uiStartVal+iStep,               rpuiCurrIdx );
117    initZscanToRaster( iMaxDepth, iDepth+1, uiStartVal+iStep*iStride,       rpuiCurrIdx );
118    initZscanToRaster( iMaxDepth, iDepth+1, uiStartVal+iStep*iStride+iStep, rpuiCurrIdx );
119  }
120}
121
122Void initRasterToZscan ( UInt uiMaxCUWidth, UInt uiMaxCUHeight, UInt uiMaxDepth )
123{
124  UInt  uiMinCUWidth  = uiMaxCUWidth  >> ( uiMaxDepth - 1 );
125  UInt  uiMinCUHeight = uiMaxCUHeight >> ( uiMaxDepth - 1 );
126 
127  UInt  uiNumPartInWidth  = (UInt)uiMaxCUWidth  / uiMinCUWidth;
128  UInt  uiNumPartInHeight = (UInt)uiMaxCUHeight / uiMinCUHeight;
129 
130  for ( UInt i = 0; i < uiNumPartInWidth*uiNumPartInHeight; i++ )
131  {
132    g_auiRasterToZscan[ g_auiZscanToRaster[i] ] = i;
133  }
134}
135
136Void initRasterToPelXY ( UInt uiMaxCUWidth, UInt uiMaxCUHeight, UInt uiMaxDepth )
137{
138  UInt    i;
139 
140  UInt* uiTempX = &g_auiRasterToPelX[0];
141  UInt* uiTempY = &g_auiRasterToPelY[0];
142 
143  UInt  uiMinCUWidth  = uiMaxCUWidth  >> ( uiMaxDepth - 1 );
144  UInt  uiMinCUHeight = uiMaxCUHeight >> ( uiMaxDepth - 1 );
145 
146  UInt  uiNumPartInWidth  = uiMaxCUWidth  / uiMinCUWidth;
147  UInt  uiNumPartInHeight = uiMaxCUHeight / uiMinCUHeight;
148 
149  uiTempX[0] = 0; uiTempX++;
150  for ( i = 1; i < uiNumPartInWidth; i++ )
151  {
152    uiTempX[0] = uiTempX[-1] + uiMinCUWidth; uiTempX++;
153  }
154  for ( i = 1; i < uiNumPartInHeight; i++ )
155  {
156    memcpy(uiTempX, uiTempX-uiNumPartInWidth, sizeof(UInt)*uiNumPartInWidth);
157    uiTempX += uiNumPartInWidth;
158  }
159 
160  for ( i = 1; i < uiNumPartInWidth*uiNumPartInHeight; i++ )
161  {
162    uiTempY[i] = ( i / uiNumPartInWidth ) * uiMinCUWidth;
163  }
164};
165
166#if MTK_SAO
167Int  LevelRowCol2Idx(int level, int row, int col)
168{
169  Int idx;
170  if (level == 0)
171  {
172    idx = 0;
173  }
174  else if (level == 1)
175  {
176    idx = 1 + row*2 + col;
177  }
178  else if (level == 2)
179  {
180    idx = 5 + row*4 + col;
181  }
182  else if (level == 3)
183  {
184    idx = 21 + row*8 + col;
185  }
186  else // (level == 4)
187  {
188    idx = 85 + row*16 + col;
189  }
190  return idx;
191}
192
193void Idx2LevelRowCol(int idx, int *level, int *row, int *col)
194{
195  if (idx == 0)
196  {
197    *level = 0;
198    *row = 0;
199    *col = 0;
200  }
201  else if (idx>=1 && idx<=4)
202  {
203    *level = 1;
204    *row = (idx-1) / 2;
205    *col = (idx-1) % 2;
206  }
207  else if (idx>=5 && idx<=20)
208  {
209    *level = 2;
210    *row = (idx-5) / 4;
211    *col = (idx-5) % 4;
212  }
213  else if (idx>=21 && idx<=84)
214  {
215    *level = 3;
216    *row = (idx-21) / 8;
217    *col = (idx-21) % 8;
218  }
219  else // (idx>=85 && idx<=340)
220  {
221    *level = 4;
222    *row = (idx-85) / 16;
223    *col = (idx-85) % 16;
224  }
225}
226#endif
227
228#if E243_CORE_TRANSFORMS
229  UInt g_auiQ[6] = {26214,23302,20560,18396,16384,14564};   
230  UInt g_auiIQ[6] = {40,45,51,57,64,72};
231
232  const short g_aiT4[4][4] = {
233    { 64, 64, 64, 64},
234    { 83, 36,-36,-83},
235    { 64,-64,-64, 64},
236    { 36,-83, 83,-36}
237  };
238
239  const short g_aiT8[8][8] = {
240    { 64, 64, 64, 64, 64, 64, 64, 64},
241    { 89, 75, 50, 18,-18,-50,-75,-89},
242    { 83, 36,-36,-83,-83,-36, 36, 83},
243    { 75,-18,-89,-50, 50, 89, 18,-75},
244    { 64,-64,-64, 64, 64,-64,-64, 64},
245    { 50,-89, 18, 75,-75,-18, 89,-50},
246    { 36,-83, 83,-36,-36, 83,-83, 36},
247    { 18,-50, 75,-89, 89,-75, 50,-18}
248  };
249
250 const short g_aiT16[16][16] = {
251    { 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64},
252    { 90, 87, 80, 70, 57, 43, 25,  9, -9,-25,-43,-57,-70,-80,-87,-90},
253    { 89, 75, 50, 18,-18,-50,-75,-89,-89,-75,-50,-18, 18, 50, 75, 89},
254    { 87, 57,  9,-43,-80,-90,-70,-25, 25, 70, 90, 80, 43, -9,-57,-87},
255    { 83, 36,-36,-83,-83,-36, 36, 83, 83, 36,-36,-83,-83,-36, 36, 83},
256    { 80,  9,-70,-87,-25, 57, 90, 43,-43,-90,-57, 25, 87, 70, -9,-80},
257    { 75,-18,-89,-50, 50, 89, 18,-75,-75, 18, 89, 50,-50,-89,-18, 75},
258    { 70,-43,-87,  9, 90, 25,-80,-57, 57, 80,-25,-90, -9, 87, 43,-70},
259    { 64,-64,-64, 64, 64,-64,-64, 64, 64,-64,-64, 64, 64,-64,-64, 64},
260    { 57,-80,-25, 90, -9,-87, 43, 70,-70,-43, 87,  9,-90, 25, 80,-57},
261    { 50,-89, 18, 75,-75,-18, 89,-50,-50, 89,-18,-75, 75, 18,-89, 50},
262    { 43,-90, 57, 25,-87, 70,  9,-80, 80, -9,-70, 87,-25,-57, 90,-43},
263    { 36,-83, 83,-36,-36, 83,-83, 36, 36,-83, 83,-36,-36, 83,-83, 36},
264    { 25,-70, 90,-80, 43,  9,-57, 87,-87, 57, -9,-43, 80,-90, 70,-25},
265    { 18,-50, 75,-89, 89,-75, 50,-18,-18, 50,-75, 89,-89, 75,-50, 18},
266    {  9,-25, 43,-57, 70,-80, 87,-90, 90,-87, 80,-70, 57,-43, 25, -9}
267 };
268
269  const short g_aiT32[32][32] = {
270    { 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64},
271    { 90, 90, 88, 85, 82, 78, 73, 67, 61, 54, 46, 38, 31, 22, 13,  4, -4,-13,-22,-31,-38,-46,-54,-61,-67,-73,-78,-82,-85,-88,-90,-90},
272    { 90, 87, 80, 70, 57, 43, 25,  9, -9,-25,-43,-57,-70,-80,-87,-90,-90,-87,-80,-70,-57,-43,-25, -9,  9, 25, 43, 57, 70, 80, 87, 90},
273    { 90, 82, 67, 46, 22, -4,-31,-54,-73,-85,-90,-88,-78,-61,-38,-13, 13, 38, 61, 78, 88, 90, 85, 73, 54, 31,  4,-22,-46,-67,-82,-90},
274    { 89, 75, 50, 18,-18,-50,-75,-89,-89,-75,-50,-18, 18, 50, 75, 89, 89, 75, 50, 18,-18,-50,-75,-89,-89,-75,-50,-18, 18, 50, 75, 89},
275    { 88, 67, 31,-13,-54,-82,-90,-78,-46, -4, 38, 73, 90, 85, 61, 22,-22,-61,-85,-90,-73,-38,  4, 46, 78, 90, 82, 54, 13,-31,-67,-88},
276    { 87, 57,  9,-43,-80,-90,-70,-25, 25, 70, 90, 80, 43, -9,-57,-87,-87,-57, -9, 43, 80, 90, 70, 25,-25,-70,-90,-80,-43,  9, 57, 87},
277    { 85, 46,-13,-67,-90,-73,-22, 38, 82, 88, 54, -4,-61,-90,-78,-31, 31, 78, 90, 61,  4,-54,-88,-82,-38, 22, 73, 90, 67, 13,-46,-85},
278    { 83, 36,-36,-83,-83,-36, 36, 83, 83, 36,-36,-83,-83,-36, 36, 83, 83, 36,-36,-83,-83,-36, 36, 83, 83, 36,-36,-83,-83,-36, 36, 83},
279    { 82, 22,-54,-90,-61, 13, 78, 85, 31,-46,-90,-67,  4, 73, 88, 38,-38,-88,-73, -4, 67, 90, 46,-31,-85,-78,-13, 61, 90, 54,-22,-82},
280    { 80,  9,-70,-87,-25, 57, 90, 43,-43,-90,-57, 25, 87, 70, -9,-80,-80, -9, 70, 87, 25,-57,-90,-43, 43, 90, 57,-25,-87,-70,  9, 80},
281    { 78, -4,-82,-73, 13, 85, 67,-22,-88,-61, 31, 90, 54,-38,-90,-46, 46, 90, 38,-54,-90,-31, 61, 88, 22,-67,-85,-13, 73, 82,  4,-78},
282    { 75,-18,-89,-50, 50, 89, 18,-75,-75, 18, 89, 50,-50,-89,-18, 75, 75,-18,-89,-50, 50, 89, 18,-75,-75, 18, 89, 50,-50,-89,-18, 75},
283    { 73,-31,-90,-22, 78, 67,-38,-90,-13, 82, 61,-46,-88, -4, 85, 54,-54,-85,  4, 88, 46,-61,-82, 13, 90, 38,-67,-78, 22, 90, 31,-73},
284    { 70,-43,-87,  9, 90, 25,-80,-57, 57, 80,-25,-90, -9, 87, 43,-70,-70, 43, 87, -9,-90,-25, 80, 57,-57,-80, 25, 90,  9,-87,-43, 70},
285    { 67,-54,-78, 38, 85,-22,-90,  4, 90, 13,-88,-31, 82, 46,-73,-61, 61, 73,-46,-82, 31, 88,-13,-90, -4, 90, 22,-85,-38, 78, 54,-67},
286    { 64,-64,-64, 64, 64,-64,-64, 64, 64,-64,-64, 64, 64,-64,-64, 64, 64,-64,-64, 64, 64,-64,-64, 64, 64,-64,-64, 64, 64,-64,-64, 64},
287    { 61,-73,-46, 82, 31,-88,-13, 90, -4,-90, 22, 85,-38,-78, 54, 67,-67,-54, 78, 38,-85,-22, 90,  4,-90, 13, 88,-31,-82, 46, 73,-61},
288    { 57,-80,-25, 90, -9,-87, 43, 70,-70,-43, 87,  9,-90, 25, 80,-57,-57, 80, 25,-90,  9, 87,-43,-70, 70, 43,-87, -9, 90,-25,-80, 57},
289    { 54,-85, -4, 88,-46,-61, 82, 13,-90, 38, 67,-78,-22, 90,-31,-73, 73, 31,-90, 22, 78,-67,-38, 90,-13,-82, 61, 46,-88,  4, 85,-54},
290    { 50,-89, 18, 75,-75,-18, 89,-50,-50, 89,-18,-75, 75, 18,-89, 50, 50,-89, 18, 75,-75,-18, 89,-50,-50, 89,-18,-75, 75, 18,-89, 50},
291    { 46,-90, 38, 54,-90, 31, 61,-88, 22, 67,-85, 13, 73,-82,  4, 78,-78, -4, 82,-73,-13, 85,-67,-22, 88,-61,-31, 90,-54,-38, 90,-46},
292    { 43,-90, 57, 25,-87, 70,  9,-80, 80, -9,-70, 87,-25,-57, 90,-43,-43, 90,-57,-25, 87,-70, -9, 80,-80,  9, 70,-87, 25, 57,-90, 43},
293    { 38,-88, 73, -4,-67, 90,-46,-31, 85,-78, 13, 61,-90, 54, 22,-82, 82,-22,-54, 90,-61,-13, 78,-85, 31, 46,-90, 67,  4,-73, 88,-38},
294    { 36,-83, 83,-36,-36, 83,-83, 36, 36,-83, 83,-36,-36, 83,-83, 36, 36,-83, 83,-36,-36, 83,-83, 36, 36,-83, 83,-36,-36, 83,-83, 36},
295    { 31,-78, 90,-61,  4, 54,-88, 82,-38,-22, 73,-90, 67,-13,-46, 85,-85, 46, 13,-67, 90,-73, 22, 38,-82, 88,-54, -4, 61,-90, 78,-31},
296    { 25,-70, 90,-80, 43,  9,-57, 87,-87, 57, -9,-43, 80,-90, 70,-25,-25, 70,-90, 80,-43, -9, 57,-87, 87,-57,  9, 43,-80, 90,-70, 25},
297    { 22,-61, 85,-90, 73,-38, -4, 46,-78, 90,-82, 54,-13,-31, 67,-88, 88,-67, 31, 13,-54, 82,-90, 78,-46,  4, 38,-73, 90,-85, 61,-22},
298    { 18,-50, 75,-89, 89,-75, 50,-18,-18, 50,-75, 89,-89, 75,-50, 18, 18,-50, 75,-89, 89,-75, 50,-18,-18, 50,-75, 89,-89, 75,-50, 18},
299    { 13,-38, 61,-78, 88,-90, 85,-73, 54,-31,  4, 22,-46, 67,-82, 90,-90, 82,-67, 46,-22, -4, 31,-54, 73,-85, 90,-88, 78,-61, 38,-13},
300    {  9,-25, 43,-57, 70,-80, 87,-90, 90,-87, 80,-70, 57,-43, 25, -9, -9, 25,-43, 57,-70, 80,-87, 90,-90, 87,-80, 70,-57, 43,-25,  9},
301    {  4,-13, 22,-31, 38,-46, 54,-61, 67,-73, 78,-82, 85,-88, 90,-90, 90,-90, 88,-85, 82,-78, 73,-67, 61,-54, 46,-38, 31,-22, 13, -4}
302  };
303
304#else //E243_CORE_TRANSFORMS
305// ====================================================================================================================
306// Quantization & DeQuantization
307// ====================================================================================================================
308
309UInt g_aiQuantCoef4[6] =
310{
311  102, 93, 79, 73, 64, 57
312};
313
314Int g_aiDequantCoef4[6] =
315{
316  10, 11, 13, 14, 16,18
317};
318
319UInt g_aiQuantCoef[6][16] =
320{
321  {
322    13107, 8066,13107, 8066,
323    8066, 5243, 8066, 5243,
324    13107, 8066,13107, 8066,
325    8066, 5243, 8066, 5243
326  },
327  {
328    11916, 7490,11916, 7490,
329    7490, 4660, 7490, 4660,
330    11916, 7490,11916, 7490,
331    7490, 4660, 7490, 4660
332  },
333  {
334    10082, 6554,10082, 6554,
335    6554, 4194, 6554, 4194,
336    10082, 6554,10082, 6554,
337    6554, 4194, 6554, 4194
338  },
339  {
340    9362, 5825, 9362, 5825,
341    5825, 3647, 5825, 3647,
342    9362, 5825, 9362, 5825,
343    5825, 3647, 5825, 3647
344  },
345  {
346    8192, 5243, 8192, 5243,
347    5243, 3355, 5243, 3355,
348    8192, 5243, 8192, 5243,
349    5243, 3355, 5243, 3355
350  },
351  {
352    7282, 4559, 7282, 4559,
353    4559, 2893, 4559, 2893,
354    7282, 4559, 7282, 4559,
355    4559, 2893, 4559, 2893
356  }
357};
358
359Int g_aiDequantCoef[6][16] =
360{
361  {
362    10, 13, 10, 13,
363    13, 16, 13, 16,
364    10, 13, 10, 13,
365    13, 16, 13, 16
366  },
367  {
368    11, 14, 11, 14,
369    14, 18, 14, 18,
370    11, 14, 11, 14,
371    14, 18, 14, 18
372  },
373  {
374    13, 16, 13, 16,
375    16, 20, 16, 20,
376    13, 16, 13, 16,
377    16, 20, 16, 20
378  },
379  {
380    14, 18, 14, 18,
381    18, 23, 18, 23,
382    14, 18, 14, 18,
383    18, 23, 18, 23
384  },
385  {
386    16, 20, 16, 20,
387    20, 25, 20, 25,
388    16, 20, 16, 20,
389    20, 25, 20, 25
390  },
391  {
392    18, 23, 18, 23,
393    23, 29, 23, 29,
394    18, 23, 18, 23,
395    23, 29, 23, 29
396  }
397};
398
399UInt g_aiQuantCoef4096[6] =
400{
401  26, 23, 20, 18, 16, 14
402}; // 9
403// {51, 47, 39, 37, 32, 28}; // 10
404// {102, 93, 79, 73, 64, 57}; // 11
405
406UInt g_aiDeQuantCoef4096[6] =
407{
408  10, 11, 13, 14, 16, 18
409}; // 9
410// {20, 22, 26, 28, 32, 36}; // 10
411// {40, 44, 52, 56, 64, 72}; // 11
412
413UInt g_aiQuantCoef1024[6][1024] =
414{
415  {
416    102, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 102, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
417    103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 104, 103, 104, 103, 104, 103, 104, 103, 104, 103, 104, 103, 103, 103, 103, 104, 103, 103, 103, 103, 103,
418    103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 104, 103, 104, 103, 104, 103, 104, 103, 104, 103, 104, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
419    103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 104, 103, 104, 103, 104, 103, 104, 103, 104, 103, 104, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
420    103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
421    103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 104, 103, 104, 103, 104, 103, 104, 103, 104, 103, 104, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
422    103, 103, 103, 103, 103, 103, 104, 103, 103, 103, 104, 104, 103, 104, 104, 104, 103, 104, 104, 104, 103, 104, 104, 103, 103, 103, 104, 103, 103, 103, 103, 103,
423    103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
424    103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
425    103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 104, 103, 104, 103, 104, 103, 104, 103, 104, 103, 104, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
426    103, 103, 103, 103, 103, 103, 104, 103, 103, 103, 104, 104, 103, 104, 104, 104, 103, 104, 104, 104, 103, 104, 104, 103, 103, 103, 104, 103, 103, 103, 103, 103,
427    103, 104, 104, 104, 103, 104, 104, 103, 103, 104, 104, 104, 103, 104, 104, 104, 103, 104, 104, 104, 103, 104, 104, 104, 103, 103, 104, 104, 103, 104, 104, 104,
428    103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
429    103, 104, 104, 104, 103, 104, 104, 103, 103, 104, 104, 104, 103, 104, 104, 104, 103, 104, 104, 104, 103, 104, 104, 104, 103, 103, 104, 104, 103, 104, 104, 104,
430    103, 103, 103, 103, 103, 103, 104, 103, 103, 103, 104, 104, 103, 104, 104, 104, 103, 104, 104, 104, 103, 104, 104, 103, 103, 103, 104, 103, 103, 103, 103, 103,
431    103, 104, 104, 104, 103, 104, 104, 103, 103, 104, 104, 104, 103, 104, 104, 104, 103, 104, 104, 104, 103, 104, 104, 104, 103, 103, 104, 104, 103, 104, 104, 104,
432    102, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 102, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
433    103, 104, 104, 104, 103, 104, 104, 103, 103, 104, 104, 104, 103, 104, 104, 104, 103, 104, 104, 104, 103, 104, 104, 104, 103, 103, 104, 104, 103, 104, 104, 104,
434    103, 103, 103, 103, 103, 103, 104, 103, 103, 103, 104, 104, 103, 104, 104, 104, 103, 104, 104, 104, 103, 104, 104, 103, 103, 103, 104, 103, 103, 103, 103, 103,
435    103, 104, 104, 104, 103, 104, 104, 103, 103, 104, 104, 104, 103, 104, 104, 104, 103, 104, 104, 104, 103, 104, 104, 104, 103, 103, 104, 104, 103, 104, 104, 104,
436    103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
437    103, 104, 104, 104, 103, 104, 104, 103, 103, 104, 104, 104, 103, 104, 104, 104, 103, 104, 104, 104, 103, 104, 104, 104, 103, 103, 104, 104, 103, 104, 104, 104,
438    103, 103, 103, 103, 103, 103, 104, 103, 103, 103, 104, 104, 103, 104, 104, 104, 103, 104, 104, 104, 103, 104, 104, 103, 103, 103, 104, 103, 103, 103, 103, 103,
439    103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 104, 103, 104, 103, 104, 103, 104, 103, 104, 103, 104, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
440    103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
441    103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
442    103, 104, 103, 103, 103, 103, 104, 103, 103, 103, 104, 104, 103, 104, 104, 104, 103, 104, 104, 104, 103, 104, 104, 103, 103, 103, 104, 103, 103, 103, 103, 103,
443    103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 104, 103, 104, 103, 104, 103, 104, 103, 104, 103, 104, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
444    103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
445    103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 104, 103, 104, 103, 104, 103, 104, 103, 104, 103, 104, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
446    103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 104, 103, 104, 103, 104, 103, 104, 103, 104, 103, 104, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
447    103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 104, 103, 104, 103, 104, 103, 104, 103, 104, 103, 104, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103
448  },
449  {
450    93, 94, 94, 94, 93, 94, 94, 93, 93, 94, 94, 94, 93, 94, 94, 94, 93, 94, 94, 94, 93, 94, 94, 94, 93, 93, 94, 94, 93, 94, 94, 94,
451    94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
452    94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
453    94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
454    93, 94, 94, 94, 93, 94, 94, 93, 93, 94, 94, 94, 93, 94, 94, 94, 93, 94, 94, 94, 93, 94, 94, 94, 93, 93, 94, 94, 93, 94, 94, 94,
455    94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
456    94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
457    93, 94, 94, 94, 93, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 93, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 93, 94, 94, 94,
458    93, 94, 94, 94, 93, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 93, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 93, 94, 94, 94,
459    94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
460    94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
461    94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
462    93, 94, 94, 94, 93, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 93, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 93, 94, 94, 94,
463    94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
464    94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
465    94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
466    93, 94, 94, 94, 93, 94, 94, 93, 93, 94, 94, 94, 93, 94, 94, 94, 93, 94, 94, 94, 93, 94, 94, 94, 93, 93, 94, 94, 93, 94, 94, 94,
467    94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
468    94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
469    94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
470    93, 94, 94, 94, 93, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 93, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 93, 94, 94, 94,
471    94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
472    94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
473    94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
474    93, 94, 94, 94, 93, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 93, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
475    93, 94, 94, 94, 93, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 93, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 93, 94, 94, 94,
476    94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
477    94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
478    93, 94, 94, 94, 93, 94, 94, 93, 93, 94, 94, 94, 93, 94, 94, 94, 93, 94, 94, 94, 93, 94, 94, 94, 94, 93, 94, 94, 93, 94, 94, 94,
479    94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
480    94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94,
481    94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94
482  },
483  {
484    79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
485    79, 80, 80, 80, 79, 80, 80, 79, 79, 80, 80, 80, 79, 80, 80, 80, 79, 80, 80, 80, 79, 80, 80, 80, 79, 79, 80, 80, 79, 80, 80, 80,
486    79, 80, 80, 80, 79, 80, 80, 79, 79, 79, 80, 80, 79, 80, 80, 80, 79, 80, 80, 80, 79, 80, 80, 79, 79, 79, 80, 80, 79, 80, 80, 80,
487    79, 80, 80, 79, 79, 80, 80, 79, 79, 79, 80, 80, 79, 80, 80, 80, 79, 80, 80, 80, 79, 80, 80, 79, 79, 79, 80, 80, 79, 79, 80, 80,
488    79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
489    79, 80, 80, 80, 79, 80, 80, 79, 79, 80, 80, 80, 79, 80, 80, 80, 79, 80, 80, 80, 79, 80, 80, 80, 79, 79, 80, 80, 79, 80, 80, 80,
490    79, 80, 80, 80, 79, 80, 80, 79, 79, 80, 80, 80, 79, 80, 80, 80, 79, 80, 80, 80, 79, 80, 80, 80, 79, 79, 80, 80, 79, 80, 80, 80,
491    79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 80, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
492    79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 80, 79, 80, 79, 80, 79, 80, 79, 80, 79, 80, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
493    79, 80, 79, 79, 79, 80, 80, 79, 79, 79, 80, 80, 79, 80, 80, 80, 79, 80, 80, 80, 79, 80, 80, 79, 79, 79, 80, 79, 79, 79, 79, 80,
494    79, 80, 80, 80, 79, 80, 80, 79, 79, 80, 80, 80, 79, 80, 80, 80, 79, 80, 80, 80, 79, 80, 80, 80, 79, 79, 80, 80, 79, 80, 80, 80,
495    79, 80, 80, 80, 79, 80, 80, 79, 80, 80, 80, 80, 80, 80, 80, 80, 79, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 79, 80, 80, 80,
496    79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 80, 79, 80, 79, 80, 79, 80, 79, 80, 79, 80, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
497    79, 80, 80, 80, 79, 80, 80, 79, 80, 80, 80, 80, 80, 80, 80, 80, 79, 80, 80, 80, 80, 80, 80, 80, 80, 79, 80, 80, 79, 80, 80, 80,
498    79, 80, 80, 80, 79, 80, 80, 79, 79, 80, 80, 80, 79, 80, 80, 80, 79, 80, 80, 80, 79, 80, 80, 80, 79, 79, 80, 80, 79, 80, 80, 80,
499    79, 80, 80, 80, 79, 80, 80, 79, 80, 80, 80, 80, 80, 80, 80, 80, 79, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 79, 80, 80, 80,
500    79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
501    79, 80, 80, 80, 79, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 79, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 79, 80, 80, 80,
502    79, 80, 80, 80, 79, 80, 80, 79, 79, 80, 80, 80, 79, 80, 80, 80, 79, 80, 80, 80, 79, 80, 80, 80, 79, 79, 80, 80, 79, 80, 80, 80,
503    79, 80, 80, 80, 79, 80, 80, 79, 80, 80, 80, 80, 80, 80, 80, 80, 79, 80, 80, 80, 80, 80, 80, 80, 80, 79, 80, 80, 79, 80, 80, 80,
504    79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 80, 79, 80, 79, 80, 79, 80, 79, 80, 79, 80, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
505    79, 80, 80, 80, 79, 80, 80, 79, 80, 80, 80, 80, 80, 80, 80, 80, 79, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 79, 80, 80, 80,
506    79, 80, 80, 80, 79, 80, 80, 79, 79, 80, 80, 80, 79, 80, 80, 80, 79, 80, 80, 80, 79, 80, 80, 80, 79, 79, 80, 80, 79, 80, 80, 80,
507    79, 80, 79, 79, 79, 80, 80, 79, 79, 79, 80, 80, 79, 80, 80, 80, 79, 80, 80, 80, 79, 80, 80, 79, 79, 79, 80, 79, 79, 79, 79, 80,
508    79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 80, 79, 80, 79, 80, 79, 80, 79, 80, 79, 80, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
509    79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 80, 79, 79, 79, 80, 79, 80, 79, 79, 79, 80, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
510    79, 80, 80, 80, 79, 80, 80, 79, 79, 80, 80, 80, 79, 80, 80, 80, 79, 80, 80, 80, 79, 80, 80, 80, 79, 79, 80, 80, 79, 80, 80, 80,
511    79, 80, 80, 80, 79, 80, 80, 79, 79, 79, 80, 80, 79, 80, 80, 80, 79, 80, 80, 80, 79, 80, 80, 79, 79, 79, 80, 80, 79, 79, 80, 80,
512    79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
513    79, 80, 80, 79, 79, 80, 80, 79, 79, 79, 80, 80, 79, 80, 80, 80, 79, 80, 80, 80, 79, 80, 80, 79, 79, 79, 80, 79, 79, 79, 79, 80,
514    79, 80, 80, 80, 79, 80, 80, 79, 79, 79, 80, 80, 79, 80, 80, 80, 79, 80, 80, 80, 79, 80, 80, 79, 79, 79, 80, 80, 79, 79, 80, 80,
515    79, 80, 80, 80, 79, 80, 80, 79, 79, 80, 80, 80, 79, 80, 80, 80, 79, 80, 80, 80, 79, 80, 80, 80, 79, 79, 80, 80, 79, 80, 80, 80
516  },
517  {
518    73, 74, 74, 73, 73, 74, 74, 73, 73, 73, 74, 74, 73, 74, 74, 74, 73, 74, 74, 74, 73, 74, 74, 73, 73, 73, 74, 73, 73, 73, 73, 74,
519    74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
520    74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 73, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
521    73, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 73, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
522    73, 74, 74, 74, 73, 74, 74, 73, 73, 74, 74, 74, 73, 74, 74, 74, 73, 74, 74, 74, 73, 74, 74, 74, 73, 73, 74, 74, 73, 74, 74, 74,
523    74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
524    74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
525    73, 74, 74, 74, 73, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 73, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 73, 74, 74, 74,
526    73, 74, 74, 74, 73, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 73, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 73, 74, 74, 74,
527    73, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 73, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
528    74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
529    74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
530    73, 74, 74, 74, 73, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 73, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 73, 74, 74, 74,
531    74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
532    74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
533    74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
534    73, 74, 73, 73, 73, 74, 74, 73, 73, 73, 74, 74, 73, 74, 74, 74, 73, 74, 74, 74, 73, 74, 74, 73, 73, 73, 74, 73, 73, 73, 73, 74,
535    74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
536    74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
537    74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
538    73, 74, 74, 74, 73, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 73, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 73, 74, 74, 74,
539    74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
540    74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
541    73, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 73, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
542    73, 74, 74, 74, 73, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 73, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 73, 74, 74, 74,
543    73, 74, 74, 74, 73, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 73, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 73, 74, 74, 74,
544    74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
545    73, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 73, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
546    73, 74, 74, 74, 73, 74, 74, 73, 73, 74, 74, 74, 73, 74, 74, 74, 73, 74, 74, 74, 73, 74, 74, 74, 73, 73, 74, 74, 73, 74, 74, 74,
547    73, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 73, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
548    73, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 73, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
549    74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74
550  },
551  {
552    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
553    64, 65, 65, 65, 64, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65,
554    64, 65, 65, 65, 64, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 64, 65, 65, 65,
555    64, 65, 65, 65, 64, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 64, 65, 65, 65,
556    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
557    64, 65, 65, 65, 64, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 64, 65, 65, 65,
558    64, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65,
559    64, 64, 64, 64, 64, 64, 65, 64, 64, 64, 65, 65, 64, 65, 65, 65, 64, 65, 65, 65, 64, 65, 65, 64, 64, 64, 65, 64, 64, 64, 64, 64,
560    64, 65, 65, 65, 64, 65, 65, 64, 64, 64, 65, 65, 64, 65, 65, 65, 64, 65, 65, 65, 64, 65, 65, 64, 64, 64, 65, 65, 64, 65, 65, 65,
561    64, 65, 65, 65, 64, 65, 65, 64, 64, 65, 65, 65, 64, 65, 65, 65, 64, 65, 65, 65, 64, 65, 65, 65, 64, 64, 65, 65, 64, 65, 65, 65,
562    64, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65,
563    64, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65,
564    64, 65, 65, 65, 64, 65, 65, 64, 64, 64, 65, 65, 64, 65, 65, 65, 64, 65, 65, 65, 64, 65, 65, 64, 64, 64, 65, 65, 64, 64, 65, 65,
565    64, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65,
566    64, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65,
567    64, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65,
568    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
569    64, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65,
570    64, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65,
571    64, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65,
572    64, 65, 65, 65, 64, 65, 65, 64, 64, 64, 65, 65, 64, 65, 65, 65, 64, 65, 65, 65, 64, 65, 65, 64, 64, 64, 65, 65, 64, 65, 65, 65,
573    64, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65,
574    64, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65,
575    64, 65, 65, 65, 64, 65, 65, 64, 64, 65, 65, 65, 64, 65, 65, 65, 64, 65, 65, 65, 64, 65, 65, 65, 64, 64, 65, 65, 64, 65, 65, 65,
576    64, 65, 65, 65, 64, 65, 65, 64, 64, 64, 65, 65, 64, 65, 65, 65, 64, 65, 65, 65, 64, 65, 65, 64, 64, 64, 65, 65, 64, 65, 65, 65,
577    64, 65, 64, 64, 64, 64, 65, 64, 64, 64, 65, 65, 64, 65, 65, 65, 64, 65, 65, 65, 64, 65, 65, 64, 64, 64, 65, 64, 64, 64, 64, 65,
578    64, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65,
579    64, 65, 65, 65, 64, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 64, 65, 65, 65,
580    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
581    64, 65, 65, 65, 64, 65, 65, 64, 65, 65, 65, 65, 64, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 64, 65, 65, 65,
582    64, 65, 65, 65, 64, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 64, 65, 65, 65,
583    64, 65, 65, 65, 64, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65
584  },
585  {
586    57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
587    57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 58, 57, 58, 57, 58, 57, 58, 57, 58, 57, 58, 57, 57, 57, 57, 58, 57, 57, 57, 57, 57,
588    57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 58, 57, 58, 57, 58, 57, 58, 57, 58, 57, 58, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
589    57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 58, 57, 58, 57, 58, 57, 58, 57, 58, 57, 58, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
590    57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
591    57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 58, 57, 58, 57, 58, 57, 58, 57, 58, 57, 58, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
592    57, 57, 57, 57, 57, 57, 58, 57, 57, 57, 58, 58, 57, 58, 58, 58, 57, 58, 58, 58, 57, 58, 58, 57, 57, 57, 58, 57, 57, 57, 57, 57,
593    57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
594    57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
595    57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 58, 57, 58, 57, 58, 57, 58, 57, 58, 57, 58, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
596    57, 57, 57, 57, 57, 57, 58, 57, 57, 57, 58, 58, 57, 58, 58, 58, 57, 58, 58, 58, 57, 58, 58, 57, 57, 57, 58, 57, 57, 57, 57, 57,
597    57, 58, 58, 58, 57, 58, 58, 57, 57, 58, 58, 58, 57, 58, 58, 58, 57, 58, 58, 58, 57, 58, 58, 58, 57, 57, 58, 58, 57, 58, 58, 58,
598    57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
599    57, 58, 58, 58, 57, 58, 58, 57, 57, 58, 58, 58, 57, 58, 58, 58, 57, 58, 58, 58, 57, 58, 58, 58, 57, 57, 58, 58, 57, 58, 58, 58,
600    57, 57, 57, 57, 57, 57, 58, 57, 57, 57, 58, 58, 57, 58, 58, 58, 57, 58, 58, 58, 57, 58, 58, 57, 57, 57, 58, 57, 57, 57, 57, 57,
601    57, 58, 58, 58, 57, 58, 58, 57, 57, 58, 58, 58, 57, 58, 58, 58, 57, 58, 58, 58, 57, 58, 58, 58, 57, 57, 58, 58, 57, 58, 58, 58,
602    57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
603    57, 58, 58, 58, 57, 58, 58, 57, 57, 58, 58, 58, 57, 58, 58, 58, 57, 58, 58, 58, 57, 58, 58, 58, 57, 57, 58, 58, 57, 58, 58, 58,
604    57, 57, 57, 57, 57, 57, 58, 57, 57, 57, 58, 58, 57, 58, 58, 58, 57, 58, 58, 58, 57, 58, 58, 57, 57, 57, 58, 57, 57, 57, 57, 57,
605    57, 58, 58, 58, 57, 58, 58, 57, 57, 58, 58, 58, 57, 58, 58, 58, 57, 58, 58, 58, 57, 58, 58, 58, 57, 57, 58, 58, 57, 58, 58, 58,
606    57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
607    57, 58, 58, 58, 57, 58, 58, 57, 57, 58, 58, 58, 57, 58, 58, 58, 57, 58, 58, 58, 57, 58, 58, 58, 57, 57, 58, 58, 57, 58, 58, 58,
608    57, 57, 57, 57, 57, 57, 58, 57, 57, 57, 58, 58, 57, 58, 58, 58, 57, 58, 58, 58, 57, 58, 58, 57, 57, 57, 58, 57, 57, 57, 57, 57,
609    57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 58, 57, 58, 57, 58, 57, 58, 57, 58, 57, 58, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
610    57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
611    57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
612    57, 58, 57, 57, 57, 57, 58, 57, 57, 57, 58, 58, 57, 58, 58, 58, 57, 58, 58, 58, 57, 58, 58, 57, 57, 57, 58, 57, 57, 57, 57, 57,
613    57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 58, 57, 58, 57, 58, 57, 58, 57, 58, 57, 58, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
614    57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
615    57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 58, 57, 58, 57, 58, 57, 58, 57, 58, 57, 58, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
616    57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 58, 57, 58, 57, 58, 57, 58, 57, 58, 57, 58, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
617    57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 58, 57, 58, 57, 58, 57, 58, 57, 58, 57, 58, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57
618  }
619};
620UInt g_aiDeQuantCoef1024[6][1024] =
621{
622  {
623    40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
624    40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
625    40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
626    40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
627    40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
628    40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
629    40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
630    40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
631    40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
632    40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
633    40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
634    40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 41, 40, 41, 40, 41, 40, 41, 40, 41, 40, 41, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
635    40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
636    40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 41, 40, 41, 40, 41, 40, 41, 40, 41, 40, 41, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
637    40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
638    40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 41, 40, 41, 40, 41, 40, 41, 40, 41, 40, 41, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
639    40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
640    40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 41, 40, 41, 40, 41, 40, 41, 40, 41, 40, 41, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
641    40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
642    40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 41, 40, 41, 40, 41, 40, 41, 40, 41, 40, 41, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
643    40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
644    40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 41, 40, 41, 40, 41, 40, 41, 40, 41, 40, 41, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
645    40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
646    40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
647    40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
648    40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
649    40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
650    40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
651    40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
652    40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
653    40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
654    40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40
655  },
656  {
657    44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
658    44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 45, 44, 45, 44, 45, 44, 45, 44, 45, 44, 45, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
659    44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 45, 44, 45, 44, 44, 44, 45, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
660    44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
661    44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
662    44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 45, 44, 45, 44, 45, 44, 45, 44, 45, 44, 45, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
663    44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 45, 44, 45, 44, 45, 44, 45, 44, 45, 44, 45, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
664    44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
665    44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
666    44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
667    44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 45, 44, 45, 44, 45, 44, 45, 44, 45, 44, 45, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
668    44, 45, 44, 44, 44, 45, 45, 44, 44, 44, 45, 45, 44, 45, 45, 45, 44, 45, 45, 45, 44, 45, 45, 44, 44, 44, 45, 44, 44, 44, 44, 45,
669    44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
670    44, 45, 44, 44, 44, 45, 45, 44, 44, 44, 45, 45, 44, 45, 45, 45, 44, 45, 45, 45, 44, 45, 45, 44, 44, 44, 45, 44, 44, 44, 44, 45,
671    44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 45, 44, 45, 44, 45, 44, 45, 44, 45, 44, 45, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
672    44, 45, 45, 44, 44, 45, 45, 44, 44, 44, 45, 45, 44, 45, 45, 45, 44, 45, 45, 45, 44, 45, 45, 44, 44, 44, 45, 44, 44, 44, 44, 45,
673    44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
674    44, 45, 45, 44, 44, 45, 45, 44, 44, 44, 45, 45, 44, 45, 45, 45, 44, 45, 45, 45, 44, 45, 45, 44, 44, 44, 45, 45, 44, 44, 45, 45,
675    44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 45, 44, 45, 44, 45, 44, 45, 44, 45, 44, 45, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
676    44, 45, 44, 44, 44, 45, 45, 44, 44, 44, 45, 45, 44, 45, 45, 45, 44, 45, 45, 45, 44, 45, 45, 44, 44, 44, 45, 44, 44, 44, 44, 45,
677    44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
678    44, 45, 45, 44, 44, 45, 45, 44, 44, 44, 45, 45, 44, 45, 45, 45, 44, 45, 45, 45, 44, 45, 45, 44, 44, 44, 45, 44, 44, 44, 44, 45,
679    44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 45, 44, 45, 44, 45, 44, 45, 44, 45, 44, 45, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
680    44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
681    44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
682    44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
683    44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 45, 44, 45, 44, 45, 44, 45, 44, 45, 44, 45, 44, 44, 44, 44, 45, 44, 44, 44, 44, 44,
684    44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 45, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
685    44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
686    44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
687    44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 45, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44,
688    44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 45, 44, 45, 44, 45, 44, 45, 44, 45, 44, 45, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44
689  },
690  {
691    52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
692    52, 53, 53, 53, 52, 53, 53, 52, 52, 52, 53, 53, 52, 53, 53, 53, 52, 53, 53, 53, 52, 53, 53, 52, 52, 52, 53, 53, 52, 52, 53, 53,
693    52, 53, 52, 52, 52, 53, 53, 52, 52, 52, 53, 53, 52, 53, 53, 53, 52, 53, 53, 53, 52, 53, 53, 52, 52, 52, 53, 52, 52, 52, 52, 53,
694    52, 53, 52, 52, 52, 52, 53, 52, 52, 52, 53, 53, 52, 53, 53, 53, 52, 53, 53, 53, 52, 53, 53, 52, 52, 52, 53, 52, 52, 52, 52, 52,
695    52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
696    52, 53, 53, 52, 52, 53, 53, 52, 52, 52, 53, 53, 52, 53, 53, 53, 52, 53, 53, 53, 52, 53, 53, 52, 52, 52, 53, 53, 52, 52, 53, 53,
697    52, 53, 53, 53, 52, 53, 53, 52, 52, 53, 53, 53, 52, 53, 53, 53, 52, 53, 53, 53, 52, 53, 53, 53, 52, 52, 53, 53, 52, 53, 53, 53,
698    52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
699    52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 53, 52, 53, 52, 53, 52, 53, 52, 53, 52, 53, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
700    52, 52, 52, 52, 52, 52, 53, 52, 52, 52, 53, 53, 52, 53, 53, 53, 52, 53, 53, 53, 52, 53, 53, 52, 52, 52, 53, 52, 52, 52, 52, 52,
701    52, 53, 53, 53, 52, 53, 53, 52, 52, 53, 53, 53, 52, 53, 53, 53, 52, 53, 53, 53, 52, 53, 53, 53, 52, 52, 53, 53, 52, 53, 53, 53,
702    52, 53, 53, 53, 52, 53, 53, 52, 53, 53, 53, 53, 53, 53, 53, 53, 52, 53, 53, 53, 53, 53, 53, 53, 53, 52, 53, 53, 52, 53, 53, 53,
703    52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 53, 52, 53, 52, 53, 52, 53, 52, 53, 52, 53, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
704    52, 53, 53, 53, 52, 53, 53, 52, 53, 53, 53, 53, 53, 53, 53, 53, 52, 53, 53, 53, 53, 53, 53, 53, 53, 52, 53, 53, 52, 53, 53, 53,
705    52, 53, 53, 53, 52, 53, 53, 52, 52, 53, 53, 53, 52, 53, 53, 53, 52, 53, 53, 53, 52, 53, 53, 53, 52, 52, 53, 53, 52, 53, 53, 53,
706    52, 53, 53, 53, 52, 53, 53, 52, 53, 53, 53, 53, 53, 53, 53, 53, 52, 53, 53, 53, 53, 53, 53, 53, 53, 52, 53, 53, 52, 53, 53, 53,
707    52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
708    52, 53, 53, 53, 52, 53, 53, 52, 53, 53, 53, 53, 53, 53, 53, 53, 52, 53, 53, 53, 53, 53, 53, 53, 53, 52, 53, 53, 52, 53, 53, 53,
709    52, 53, 53, 53, 52, 53, 53, 52, 52, 53, 53, 53, 52, 53, 53, 53, 52, 53, 53, 53, 52, 53, 53, 53, 52, 52, 53, 53, 52, 53, 53, 53,
710    52, 53, 53, 53, 52, 53, 53, 52, 53, 53, 53, 53, 53, 53, 53, 53, 52, 53, 53, 53, 53, 53, 53, 53, 53, 52, 53, 53, 52, 53, 53, 53,
711    52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 53, 52, 53, 52, 53, 52, 53, 52, 53, 52, 53, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
712    52, 53, 53, 53, 52, 53, 53, 52, 53, 53, 53, 53, 53, 53, 53, 53, 52, 53, 53, 53, 53, 53, 53, 53, 53, 52, 53, 53, 52, 53, 53, 53,
713    52, 53, 53, 53, 52, 53, 53, 52, 52, 53, 53, 53, 52, 53, 53, 53, 52, 53, 53, 53, 52, 53, 53, 53, 52, 52, 53, 53, 52, 53, 53, 53,
714    52, 52, 52, 52, 52, 52, 53, 52, 52, 52, 53, 53, 52, 53, 53, 53, 52, 53, 53, 53, 52, 53, 53, 52, 52, 52, 53, 52, 52, 52, 52, 52,
715    52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 53, 52, 53, 52, 53, 52, 53, 52, 53, 52, 53, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
716    52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
717    52, 53, 53, 53, 52, 53, 53, 52, 52, 53, 53, 53, 52, 53, 53, 53, 52, 53, 53, 53, 52, 53, 53, 53, 52, 52, 53, 53, 52, 53, 53, 53,
718    52, 53, 52, 52, 52, 53, 53, 52, 52, 52, 53, 53, 52, 53, 53, 53, 52, 53, 53, 53, 52, 53, 53, 52, 52, 52, 53, 52, 52, 52, 52, 53,
719    52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
720    52, 52, 52, 52, 52, 52, 53, 52, 52, 52, 53, 53, 52, 53, 53, 53, 52, 53, 53, 53, 52, 53, 53, 52, 52, 52, 53, 52, 52, 52, 52, 52,
721    52, 53, 52, 52, 52, 53, 53, 52, 52, 52, 53, 53, 52, 53, 53, 53, 52, 53, 53, 53, 52, 53, 53, 52, 52, 52, 53, 52, 52, 52, 52, 53,
722    52, 53, 53, 52, 52, 53, 53, 52, 52, 52, 53, 53, 52, 53, 53, 53, 52, 53, 53, 53, 52, 53, 53, 52, 52, 52, 53, 53, 52, 52, 53, 53
723  },
724  {
725    56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
726    56, 57, 57, 57, 56, 57, 57, 56, 56, 57, 57, 57, 56, 57, 57, 57, 56, 57, 57, 57, 56, 57, 57, 57, 56, 56, 57, 57, 56, 57, 57, 57,
727    56, 57, 57, 57, 56, 57, 57, 56, 56, 57, 57, 57, 56, 57, 57, 57, 56, 57, 57, 57, 56, 57, 57, 57, 56, 56, 57, 57, 56, 57, 57, 57,
728    56, 57, 57, 57, 56, 57, 57, 56, 56, 57, 57, 57, 56, 57, 57, 57, 56, 57, 57, 57, 56, 57, 57, 57, 56, 56, 57, 57, 56, 57, 57, 57,
729    56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
730    56, 57, 57, 57, 56, 57, 57, 56, 56, 57, 57, 57, 56, 57, 57, 57, 56, 57, 57, 57, 56, 57, 57, 57, 56, 56, 57, 57, 56, 57, 57, 57,
731    56, 57, 57, 57, 56, 57, 57, 56, 57, 57, 57, 57, 56, 57, 57, 57, 56, 57, 57, 57, 57, 57, 57, 57, 57, 56, 57, 57, 56, 57, 57, 57,
732    56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 57, 56, 57, 56, 57, 56, 57, 56, 57, 56, 57, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
733    56, 56, 56, 56, 56, 56, 57, 56, 56, 56, 56, 57, 56, 57, 56, 57, 56, 57, 56, 57, 56, 57, 56, 56, 56, 56, 57, 56, 56, 56, 56, 56,
734    56, 57, 57, 57, 56, 57, 57, 56, 56, 56, 57, 57, 56, 57, 57, 57, 56, 57, 57, 57, 56, 57, 57, 56, 56, 56, 57, 57, 56, 56, 57, 57,
735    56, 57, 57, 57, 56, 57, 57, 56, 56, 57, 57, 57, 56, 57, 57, 57, 56, 57, 57, 57, 57, 57, 57, 57, 57, 56, 57, 57, 56, 57, 57, 57,
736    56, 57, 57, 57, 56, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 56, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 56, 57, 57, 57,
737    56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 57, 56, 57, 56, 57, 56, 57, 56, 57, 56, 57, 56, 56, 56, 56, 57, 56, 56, 56, 56, 56,
738    56, 57, 57, 57, 56, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 56, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 56, 57, 57, 57,
739    56, 57, 57, 57, 56, 57, 57, 56, 56, 57, 57, 57, 56, 57, 57, 57, 56, 57, 57, 57, 56, 57, 57, 57, 56, 56, 57, 57, 56, 57, 57, 57,
740    56, 57, 57, 57, 56, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 56, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 56, 57, 57, 57,
741    56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
742    56, 57, 57, 57, 56, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 56, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 56, 57, 57, 57,
743    56, 57, 57, 57, 56, 57, 57, 56, 56, 57, 57, 57, 56, 57, 57, 57, 56, 57, 57, 57, 56, 57, 57, 57, 56, 56, 57, 57, 56, 57, 57, 57,
744    56, 57, 57, 57, 56, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 56, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 56, 57, 57, 57,
745    56, 56, 56, 56, 56, 56, 57, 56, 56, 56, 57, 57, 56, 57, 56, 57, 56, 57, 56, 57, 56, 57, 56, 56, 56, 56, 57, 56, 56, 56, 56, 56,
746    56, 57, 57, 57, 56, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 56, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 56, 57, 57, 57,
747    56, 57, 57, 57, 56, 57, 57, 56, 56, 57, 57, 57, 56, 57, 57, 57, 56, 57, 57, 57, 56, 57, 57, 57, 56, 56, 57, 57, 56, 57, 57, 57,
748    56, 57, 57, 57, 56, 57, 57, 56, 56, 56, 57, 57, 56, 57, 57, 57, 56, 57, 57, 57, 56, 57, 57, 56, 56, 56, 57, 57, 56, 57, 57, 57,
749    56, 56, 56, 56, 56, 56, 57, 56, 56, 56, 57, 57, 56, 57, 56, 57, 56, 57, 56, 57, 56, 57, 56, 56, 56, 56, 57, 56, 56, 56, 56, 56,
750    56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 57, 56, 57, 56, 57, 56, 57, 56, 57, 56, 57, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
751    56, 57, 57, 57, 56, 57, 57, 56, 57, 57, 57, 57, 57, 57, 57, 57, 56, 57, 57, 57, 57, 57, 57, 57, 57, 56, 57, 57, 56, 57, 57, 57,
752    56, 57, 57, 57, 56, 57, 57, 56, 56, 57, 57, 57, 56, 57, 57, 57, 56, 57, 57, 57, 56, 57, 57, 57, 56, 56, 57, 57, 56, 57, 57, 57,
753    56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
754    56, 57, 57, 57, 56, 57, 57, 56, 56, 56, 57, 57, 56, 57, 57, 57, 56, 57, 57, 57, 56, 57, 57, 57, 56, 56, 57, 57, 56, 57, 57, 57,
755    56, 57, 57, 57, 56, 57, 57, 56, 56, 57, 57, 57, 56, 57, 57, 57, 56, 57, 57, 57, 56, 57, 57, 57, 56, 56, 57, 57, 56, 57, 57, 57,
756    56, 57, 57, 57, 56, 57, 57, 56, 56, 57, 57, 57, 56, 57, 57, 57, 56, 57, 57, 57, 56, 57, 57, 57, 56, 56, 57, 57, 56, 57, 57, 57
757  },
758  {
759    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
760    64, 65, 65, 65, 64, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65,
761    64, 65, 65, 65, 64, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 64, 65, 65, 65,
762    64, 65, 65, 65, 64, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 64, 65, 65, 65,
763    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
764    64, 65, 65, 65, 64, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 64, 65, 65, 65,
765    64, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65,
766    64, 64, 64, 64, 64, 64, 65, 64, 64, 64, 65, 65, 64, 65, 65, 65, 64, 65, 65, 65, 64, 65, 65, 64, 64, 64, 65, 64, 64, 64, 64, 64,
767    64, 65, 65, 65, 64, 65, 65, 64, 64, 64, 65, 65, 64, 65, 65, 65, 64, 65, 65, 65, 64, 65, 65, 64, 64, 64, 65, 65, 64, 65, 65, 65,
768    64, 65, 65, 65, 64, 65, 65, 64, 64, 65, 65, 65, 64, 65, 65, 65, 64, 65, 65, 65, 64, 65, 65, 65, 64, 64, 65, 65, 64, 65, 65, 65,
769    64, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65,
770    64, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65,
771    64, 65, 65, 65, 64, 65, 65, 64, 64, 64, 65, 65, 64, 65, 65, 65, 64, 65, 65, 65, 64, 65, 65, 64, 64, 64, 65, 65, 64, 64, 65, 65,
772    64, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65,
773    64, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65,
774    64, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65,
775    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
776    64, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65,
777    64, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65,
778    64, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65,
779    64, 65, 65, 65, 64, 65, 65, 64, 64, 64, 65, 65, 64, 65, 65, 65, 64, 65, 65, 65, 64, 65, 65, 64, 64, 64, 65, 65, 64, 65, 65, 65,
780    64, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65,
781    64, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65,
782    64, 65, 65, 65, 64, 65, 65, 64, 64, 65, 65, 65, 64, 65, 65, 65, 64, 65, 65, 65, 64, 65, 65, 65, 64, 64, 65, 65, 64, 65, 65, 65,
783    64, 65, 65, 65, 64, 65, 65, 64, 64, 64, 65, 65, 64, 65, 65, 65, 64, 65, 65, 65, 64, 65, 65, 64, 64, 64, 65, 65, 64, 65, 65, 65,
784    64, 65, 64, 64, 64, 64, 65, 64, 64, 64, 65, 65, 64, 65, 65, 65, 64, 65, 65, 65, 64, 65, 65, 64, 64, 64, 65, 64, 64, 64, 64, 65,
785    64, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65,
786    64, 65, 65, 65, 64, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 64, 65, 65, 65,
787    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
788    64, 65, 65, 65, 64, 65, 65, 64, 65, 65, 65, 65, 64, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 64, 65, 65, 65,
789    64, 65, 65, 65, 64, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 64, 65, 65, 65,
790    64, 65, 65, 65, 64, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 64, 65, 65, 65
791  },
792  {
793    72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72,
794    72, 73, 73, 73, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 72, 73, 73, 73,
795    72, 73, 73, 73, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 72, 73, 73, 73,
796    72, 73, 73, 73, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 72, 73, 73, 73,
797    72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 73, 72, 73, 72, 73, 72, 73, 72, 73, 72, 73, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72,
798    72, 73, 73, 73, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 72, 73, 73, 73,
799    72, 73, 73, 73, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 72, 73, 73, 73,
800    72, 73, 73, 73, 72, 73, 73, 72, 72, 73, 73, 73, 72, 73, 73, 73, 72, 73, 73, 73, 72, 73, 73, 73, 72, 72, 73, 73, 72, 73, 73, 73,
801    72, 73, 73, 73, 72, 73, 73, 72, 72, 73, 73, 73, 72, 73, 73, 73, 72, 73, 73, 73, 72, 73, 73, 73, 72, 72, 73, 73, 72, 73, 73, 73,
802    72, 73, 73, 73, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 72, 73, 73, 73,
803    72, 73, 73, 73, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 72, 73, 73, 73,
804    72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
805    72, 73, 73, 73, 72, 73, 73, 72, 72, 73, 73, 73, 72, 73, 73, 73, 72, 73, 73, 73, 72, 73, 73, 73, 72, 72, 73, 73, 72, 73, 73, 73,
806    72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
807    72, 73, 73, 73, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 72, 73, 73, 73,
808    72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
809    72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72,
810    72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
811    72, 73, 73, 73, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 72, 73, 73, 73,
812    72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
813    72, 73, 73, 73, 72, 73, 73, 72, 72, 73, 73, 73, 72, 73, 73, 73, 72, 73, 73, 73, 72, 73, 73, 73, 72, 72, 73, 73, 72, 73, 73, 73,
814    72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
815    72, 73, 73, 73, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 72, 73, 73, 73,
816    72, 73, 73, 73, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 72, 73, 73, 73,
817    72, 73, 73, 73, 72, 73, 73, 72, 72, 73, 73, 73, 72, 73, 73, 73, 72, 73, 73, 73, 72, 73, 73, 73, 72, 72, 73, 73, 72, 73, 73, 73,
818    72, 73, 73, 73, 72, 73, 73, 72, 72, 73, 73, 73, 72, 73, 73, 73, 72, 73, 73, 73, 72, 73, 73, 73, 72, 72, 73, 73, 72, 73, 73, 73,
819    72, 73, 73, 73, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 72, 73, 73, 73,
820    72, 73, 73, 73, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 72, 73, 73, 73,
821    72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 73, 72, 73, 72, 73, 72, 73, 72, 73, 72, 73, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72,
822    72, 73, 73, 73, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 72, 73, 73, 73,
823    72, 73, 73, 73, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 72, 73, 73, 73,
824    72, 73, 73, 73, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 72, 73, 73, 73
825  }
826};
827
828UInt g_aiQuantCoef256[6][256] =
829{
830  {
831    207, 209, 209, 208, 207, 209, 208, 209, 207, 209, 208, 209, 207, 208, 209, 209,
832    209, 212, 212, 211, 209, 211, 210, 212, 209, 212, 210, 211, 209, 211, 212, 212,
833    209, 212, 212, 211, 209, 211, 210, 212, 209, 212, 210, 211, 209, 211, 212, 212,
834    208, 211, 211, 210, 208, 210, 209, 211, 208, 211, 209, 210, 208, 210, 211, 211,
835    207, 209, 209, 208, 207, 208, 208, 209, 207, 209, 208, 208, 207, 208, 209, 209,
836    209, 211, 211, 210, 208, 210, 210, 211, 209, 211, 210, 210, 208, 210, 211, 211,
837    208, 210, 210, 209, 208, 210, 209, 210, 208, 211, 209, 210, 208, 209, 210, 210,
838    209, 212, 212, 211, 209, 211, 210, 212, 209, 212, 210, 211, 209, 211, 212, 212,
839    207, 209, 209, 208, 207, 209, 208, 209, 207, 210, 208, 209, 207, 208, 209, 209,
840    209, 212, 212, 211, 209, 211, 211, 212, 210, 212, 210, 211, 209, 211, 212, 212,
841    208, 210, 210, 209, 208, 210, 209, 210, 208, 210, 209, 210, 208, 209, 210, 210,
842    209, 211, 211, 210, 208, 210, 210, 211, 209, 211, 210, 210, 208, 210, 211, 211,
843    207, 209, 209, 208, 207, 208, 208, 209, 207, 209, 208, 208, 207, 208, 209, 209,
844    208, 211, 211, 210, 208, 210, 209, 211, 208, 211, 209, 210, 208, 210, 211, 211,
845    209, 212, 212, 211, 209, 211, 210, 212, 209, 212, 210, 211, 209, 211, 212, 212,
846    209, 212, 212, 211, 209, 211, 210, 212, 209, 212, 210, 211, 209, 211, 212, 212
847  },
848  {
849    188, 190, 190, 189, 188, 190, 189, 190, 188, 190, 189, 190, 188, 189, 190, 190,
850    190, 192, 192, 191, 190, 192, 191, 192, 190, 193, 191, 192, 190, 191, 192, 192,
851    190, 192, 192, 191, 190, 192, 191, 192, 190, 192, 191, 192, 190, 191, 192, 192,
852    189, 191, 191, 190, 189, 191, 190, 191, 189, 192, 190, 191, 189, 190, 191, 191,
853    188, 190, 190, 189, 188, 189, 189, 190, 188, 190, 189, 189, 188, 189, 190, 190,
854    190, 192, 192, 191, 189, 191, 191, 192, 190, 192, 191, 191, 189, 191, 192, 192,
855    189, 191, 191, 190, 189, 191, 190, 191, 189, 191, 190, 191, 189, 190, 191, 191,
856    190, 192, 192, 191, 190, 192, 191, 193, 190, 193, 191, 192, 190, 191, 192, 192,
857    188, 190, 190, 189, 188, 190, 189, 190, 188, 190, 189, 190, 188, 189, 190, 190,
858    190, 193, 192, 192, 190, 192, 191, 193, 190, 193, 191, 192, 190, 192, 192, 193,
859    189, 191, 191, 190, 189, 191, 190, 191, 189, 191, 190, 191, 189, 190, 191, 191,
860    190, 192, 192, 191, 189, 191, 191, 192, 190, 192, 191, 191, 189, 191, 192, 192,
861    188, 190, 190, 189, 188, 189, 189, 190, 188, 190, 189, 189, 188, 189, 190, 190,
862    189, 191, 191, 190, 189, 191, 190, 191, 189, 192, 190, 191, 189, 190, 191, 191,
863    190, 192, 192, 191, 190, 192, 191, 192, 190, 192, 191, 192, 190, 191, 192, 192,
864    190, 192, 192, 191, 190, 192, 191, 192, 190, 193, 191, 192, 190, 191, 192, 192
865  },
866  {
867    159, 161, 161, 160, 159, 160, 160, 161, 159, 161, 160, 160, 159, 160, 161, 161,
868    161, 163, 163, 162, 161, 162, 162, 163, 161, 163, 162, 162, 161, 162, 163, 163,
869    161, 163, 163, 162, 161, 162, 162, 163, 161, 163, 162, 162, 161, 162, 163, 163,
870    160, 162, 162, 161, 160, 161, 161, 162, 160, 162, 161, 161, 160, 161, 162, 162,
871    159, 161, 161, 160, 159, 160, 160, 161, 159, 161, 160, 160, 159, 160, 161, 161,
872    160, 162, 162, 161, 160, 162, 161, 162, 160, 162, 161, 162, 160, 161, 162, 162,
873    160, 162, 162, 161, 160, 161, 161, 162, 160, 162, 161, 161, 160, 161, 162, 162,
874    161, 163, 163, 162, 161, 162, 162, 163, 161, 163, 162, 162, 161, 162, 163, 163,
875    159, 161, 161, 160, 159, 160, 160, 161, 159, 161, 160, 160, 159, 160, 161, 161,
876    161, 163, 163, 162, 161, 162, 162, 163, 161, 163, 162, 162, 161, 162, 163, 163,
877    160, 162, 162, 161, 160, 161, 161, 162, 160, 162, 161, 161, 160, 161, 162, 162,
878    160, 162, 162, 161, 160, 162, 161, 162, 160, 162, 161, 162, 160, 161, 162, 162,
879    159, 161, 161, 160, 159, 160, 160, 161, 159, 161, 160, 160, 159, 160, 161, 161,
880    160, 162, 162, 161, 160, 161, 161, 162, 160, 162, 161, 161, 160, 161, 162, 162,
881    161, 163, 163, 162, 161, 162, 162, 163, 161, 163, 162, 162, 161, 162, 163, 163,
882    161, 163, 163, 162, 161, 162, 162, 163, 161, 163, 162, 162, 161, 162, 163, 163
883  },
884  {
885    148, 150, 150, 149, 148, 149, 149, 150, 148, 150, 149, 149, 148, 149, 150, 150,
886    150, 151, 151, 150, 149, 151, 150, 151, 150, 151, 150, 151, 149, 150, 151, 151,
887    150, 151, 151, 150, 149, 151, 150, 151, 150, 151, 150, 151, 149, 150, 151, 151,
888    149, 150, 150, 150, 149, 150, 150, 150, 149, 150, 150, 150, 149, 150, 150, 150,
889    148, 149, 149, 149, 148, 149, 149, 149, 148, 149, 149, 149, 148, 149, 149, 149,
890    149, 151, 151, 150, 149, 150, 150, 151, 149, 151, 150, 150, 149, 150, 151, 151,
891    149, 150, 150, 150, 149, 150, 149, 150, 149, 150, 149, 150, 149, 150, 150, 150,
892    150, 151, 151, 150, 149, 151, 150, 151, 150, 151, 150, 151, 149, 150, 151, 151,
893    148, 150, 150, 149, 148, 149, 149, 150, 148, 150, 149, 149, 148, 149, 150, 150,
894    150, 151, 151, 150, 149, 151, 150, 151, 150, 151, 150, 151, 149, 150, 151, 151,
895    149, 150, 150, 150, 149, 150, 149, 150, 149, 150, 149, 150, 149, 150, 150, 150,
896    149, 151, 151, 150, 149, 150, 150, 151, 149, 151, 150, 150, 149, 150, 151, 151,
897    148, 149, 149, 149, 148, 149, 149, 149, 148, 149, 149, 149, 148, 149, 149, 149,
898    149, 150, 150, 150, 149, 150, 150, 150, 149, 150, 150, 150, 149, 150, 150, 150,
899    150, 151, 151, 150, 149, 151, 150, 151, 150, 151, 150, 151, 149, 150, 151, 151,
900    150, 151, 151, 150, 149, 151, 150, 151, 150, 151, 150, 151, 149, 150, 151, 151
901  },
902  {
903    129, 131, 131, 130, 129, 130, 130, 131, 129, 131, 130, 130, 129, 130, 131, 131,
904    131, 132, 132, 132, 131, 132, 131, 132, 131, 132, 131, 132, 131, 132, 132, 132,
905    131, 132, 132, 132, 131, 132, 131, 132, 131, 132, 131, 132, 131, 132, 132, 132,
906    130, 132, 132, 131, 130, 131, 131, 132, 130, 132, 131, 131, 130, 131, 132, 132,
907    129, 131, 131, 130, 129, 130, 130, 131, 129, 131, 130, 130, 129, 130, 131, 131,
908    130, 132, 132, 131, 130, 131, 131, 132, 130, 132, 131, 131, 130, 131, 132, 132,
909    130, 131, 131, 131, 130, 131, 131, 132, 130, 132, 131, 131, 130, 131, 131, 131,
910    131, 132, 132, 132, 131, 132, 132, 132, 131, 132, 132, 132, 131, 132, 132, 132,
911    129, 131, 131, 130, 129, 130, 130, 131, 129, 131, 130, 130, 129, 130, 131, 131,
912    131, 132, 132, 132, 131, 132, 132, 132, 131, 132, 132, 132, 131, 132, 132, 132,
913    130, 131, 131, 131, 130, 131, 131, 132, 130, 132, 131, 131, 130, 131, 131, 131,
914    130, 132, 132, 131, 130, 131, 131, 132, 130, 132, 131, 131, 130, 131, 132, 132,
915    129, 131, 131, 130, 129, 130, 130, 131, 129, 131, 130, 130, 129, 130, 131, 131,
916    130, 132, 132, 131, 130, 131, 131, 132, 130, 132, 131, 131, 130, 131, 132, 132,
917    131, 132, 132, 132, 131, 132, 131, 132, 131, 132, 131, 132, 131, 132, 132, 132,
918    131, 132, 132, 132, 131, 132, 131, 132, 131, 132, 131, 132, 131, 132, 132, 132
919  },
920  {
921    115, 116, 116, 116, 115, 116, 116, 116, 115, 116, 116, 116, 115, 116, 116, 116,
922    116, 118, 118, 117, 116, 117, 117, 118, 116, 118, 117, 117, 116, 117, 118, 118,
923    116, 118, 118, 117, 116, 117, 117, 118, 116, 118, 117, 117, 116, 117, 118, 118,
924    116, 117, 117, 116, 116, 117, 116, 117, 116, 117, 116, 117, 116, 116, 117, 117,
925    115, 116, 116, 116, 115, 116, 116, 116, 115, 116, 116, 116, 115, 116, 116, 116,
926    116, 117, 117, 117, 116, 117, 116, 117, 116, 117, 116, 117, 116, 117, 117, 117,
927    116, 117, 117, 116, 116, 116, 116, 117, 116, 117, 116, 116, 116, 116, 117, 117,
928    116, 118, 118, 117, 116, 117, 117, 118, 116, 118, 117, 117, 116, 117, 118, 118,
929    115, 116, 116, 116, 115, 116, 116, 116, 115, 116, 116, 116, 115, 116, 116, 116,
930    116, 118, 118, 117, 116, 117, 117, 118, 116, 118, 117, 117, 116, 117, 118, 118,
931    116, 117, 117, 116, 116, 116, 116, 117, 116, 117, 116, 116, 116, 116, 117, 117,
932    116, 117, 117, 117, 116, 117, 116, 117, 116, 117, 116, 117, 116, 117, 117, 117,
933    115, 116, 116, 116, 115, 116, 116, 116, 115, 116, 116, 116, 115, 116, 116, 116,
934    116, 117, 117, 116, 116, 117, 116, 117, 116, 117, 116, 117, 116, 116, 117, 117,
935    116, 118, 118, 117, 116, 117, 117, 118, 116, 118, 117, 117, 116, 117, 118, 118,
936    116, 118, 118, 117, 116, 117, 117, 118, 116, 118, 117, 117, 116, 117, 118, 118
937  }
938 
939};
940UInt g_aiDeQuantCoef256[6][256] =
941{
942  {
943    81, 82, 82, 81, 81, 81, 81, 82, 81, 82, 81, 81, 81, 81, 82, 82,
944    82, 83, 83, 82, 82, 82, 82, 83, 82, 83, 82, 82, 82, 82, 83, 83,
945    82, 83, 83, 82, 82, 82, 82, 83, 82, 83, 82, 82, 82, 82, 83, 83,
946    81, 82, 82, 82, 81, 82, 82, 82, 81, 82, 82, 82, 81, 82, 82, 82,
947    81, 82, 82, 81, 81, 81, 81, 82, 81, 82, 81, 81, 81, 81, 82, 82,
948    81, 82, 82, 82, 81, 82, 82, 82, 81, 82, 82, 82, 81, 82, 82, 82,
949    81, 82, 82, 82, 81, 82, 82, 82, 81, 82, 82, 82, 81, 82, 82, 82,
950    82, 83, 83, 82, 82, 82, 82, 83, 82, 83, 82, 82, 82, 82, 83, 83,
951    81, 82, 82, 81, 81, 81, 81, 82, 81, 82, 81, 81, 81, 81, 82, 82,
952    82, 83, 83, 82, 82, 82, 82, 83, 82, 83, 82, 82, 82, 82, 83, 83,
953    81, 82, 82, 82, 81, 82, 82, 82, 81, 82, 82, 82, 81, 82, 82, 82,
954    81, 82, 82, 82, 81, 82, 82, 82, 81, 82, 82, 82, 81, 82, 82, 82,
955    81, 82, 82, 81, 81, 81, 81, 82, 81, 82, 81, 81, 81, 81, 82, 82,
956    81, 82, 82, 82, 81, 82, 82, 82, 81, 82, 82, 82, 81, 82, 82, 82,
957    82, 83, 83, 82, 82, 82, 82, 83, 82, 83, 82, 82, 82, 82, 83, 83,
958    82, 83, 83, 82, 82, 82, 82, 83, 82, 83, 82, 82, 82, 82, 83, 83
959  },
960  {
961    89, 90, 90, 90, 89, 90, 89, 90, 89, 90, 89, 90, 89, 90, 90, 90,
962    90, 91, 91, 90, 90, 91, 90, 91, 90, 91, 90, 91, 90, 90, 91, 91,
963    90, 91, 91, 90, 90, 91, 90, 91, 90, 91, 90, 91, 90, 90, 91, 91,
964    90, 90, 90, 90, 89, 90, 90, 91, 90, 91, 90, 90, 89, 90, 90, 90,
965    89, 90, 90, 89, 89, 90, 89, 90, 89, 90, 89, 90, 89, 89, 90, 90,
966    90, 91, 91, 90, 90, 90, 90, 91, 90, 91, 90, 90, 90, 90, 91, 91,
967    89, 90, 90, 90, 89, 90, 90, 90, 89, 90, 90, 90, 89, 90, 90, 90,
968    90, 91, 91, 91, 90, 91, 90, 91, 90, 91, 90, 91, 90, 91, 91, 91,
969    89, 90, 90, 90, 89, 90, 89, 90, 89, 90, 89, 90, 89, 90, 90, 90,
970    90, 91, 91, 91, 90, 91, 90, 91, 90, 91, 90, 91, 90, 91, 91, 91,
971    89, 90, 90, 90, 89, 90, 90, 90, 89, 90, 90, 90, 89, 90, 90, 90,
972    90, 91, 91, 90, 90, 90, 90, 91, 90, 91, 90, 90, 90, 90, 91, 91,
973    89, 90, 90, 89, 89, 90, 89, 90, 89, 90, 89, 90, 89, 89, 90, 90,
974    90, 90, 90, 90, 89, 90, 90, 91, 90, 91, 90, 90, 89, 90, 90, 90,
975    90, 91, 91, 90, 90, 91, 90, 91, 90, 91, 90, 91, 90, 90, 91, 91,
976    90, 91, 91, 90, 90, 91, 90, 91, 90, 91, 90, 91, 90, 90, 91, 91
977  },
978  {
979    105, 106, 106, 106, 105, 106, 106, 106, 105, 106, 106, 106, 105, 106, 106, 106,
980    106, 107, 107, 107, 106, 107, 107, 108, 106, 108, 107, 107, 106, 107, 107, 107,
981    106, 107, 107, 107, 106, 107, 107, 107, 106, 108, 107, 107, 106, 107, 107, 107,
982    106, 107, 107, 106, 106, 107, 106, 107, 106, 107, 106, 107, 106, 106, 107, 107,
983    105, 106, 106, 106, 105, 106, 106, 106, 105, 106, 106, 106, 105, 106, 106, 106,
984    106, 107, 107, 107, 106, 107, 106, 107, 106, 107, 106, 107, 106, 107, 107, 107,
985    106, 107, 107, 106, 106, 106, 106, 107, 106, 107, 106, 106, 106, 106, 107, 107,
986    106, 108, 107, 107, 106, 107, 107, 108, 106, 108, 107, 107, 106, 107, 107, 108,
987    105, 106, 106, 106, 105, 106, 106, 106, 105, 106, 106, 106, 105, 106, 106, 106,
988    106, 108, 108, 107, 106, 107, 107, 108, 106, 108, 107, 107, 106, 107, 108, 108,
989    106, 107, 107, 106, 106, 106, 106, 107, 106, 107, 106, 106, 106, 106, 107, 107,
990    106, 107, 107, 107, 106, 107, 106, 107, 106, 107, 106, 107, 106, 107, 107, 107,
991    105, 106, 106, 106, 105, 106, 106, 106, 105, 106, 106, 106, 105, 106, 106, 106,
992    106, 107, 107, 106, 106, 107, 106, 107, 106, 107, 106, 107, 106, 106, 107, 107,
993    106, 107, 107, 107, 106, 107, 107, 107, 106, 108, 107, 107, 106, 107, 107, 107,
994    106, 107, 107, 107, 106, 107, 107, 108, 106, 108, 107, 107, 106, 107, 107, 107
995  },
996  {
997    113, 115, 114, 114, 113, 114, 114, 115, 113, 115, 114, 114, 113, 114, 114, 114,
998    115, 116, 116, 115, 114, 115, 115, 116, 115, 116, 115, 115, 114, 115, 116, 116,
999    114, 116, 116, 115, 114, 115, 115, 116, 114, 116, 115, 115, 114, 115, 116, 116,
1000    114, 115, 115, 115, 114, 115, 114, 115, 114, 115, 114, 115, 114, 115, 115, 115,
1001    113, 114, 114, 114, 113, 114, 114, 114, 113, 114, 114, 114, 113, 114, 114, 114,
1002    114, 115, 115, 115, 114, 115, 115, 115, 114, 115, 115, 115, 114, 115, 115, 115,
1003    114, 115, 115, 114, 114, 115, 114, 115, 114, 115, 114, 115, 114, 114, 115, 115,
1004    115, 116, 116, 115, 114, 115, 115, 116, 115, 116, 115, 115, 114, 115, 116, 116,
1005    113, 115, 114, 114, 113, 114, 114, 115, 113, 115, 114, 114, 113, 114, 114, 115,
1006    115, 116, 116, 115, 114, 115, 115, 116, 115, 116, 115, 115, 114, 115, 116, 116,
1007    114, 115, 115, 114, 114, 115, 114, 115, 114, 115, 114, 115, 114, 114, 115, 115,
1008    114, 115, 115, 115, 114, 115, 115, 115, 114, 115, 115, 115, 114, 115, 115, 115,
1009    113, 114, 114, 114, 113, 114, 114, 114, 113, 114, 114, 114, 113, 114, 114, 114,
1010    114, 115, 115, 115, 114, 115, 114, 115, 114, 115, 114, 115, 114, 115, 115, 115,
1011    114, 116, 116, 115, 114, 115, 115, 116, 114, 116, 115, 115, 114, 115, 116, 116,
1012    114, 116, 116, 115, 114, 115, 115, 116, 115, 116, 115, 115, 114, 115, 116, 116
1013  },
1014  {
1015    129, 131, 131, 130, 129, 130, 130, 131, 129, 131, 130, 130, 129, 130, 131, 131,
1016    131, 132, 132, 132, 131, 132, 131, 132, 131, 132, 131, 132, 131, 132, 132, 132,
1017    131, 132, 132, 132, 131, 132, 131, 132, 131, 132, 131, 132, 131, 132, 132, 132,
1018    130, 132, 132, 131, 130, 131, 131, 132, 130, 132, 131, 131, 130, 131, 132, 132,
1019    129, 131, 131, 130, 129, 130, 130, 131, 129, 131, 130, 130, 129, 130, 131, 131,
1020    130, 132, 132, 131, 130, 131, 131, 132, 130, 132, 131, 131, 130, 131, 132, 132,
1021    130, 131, 131, 131, 130, 131, 131, 132, 130, 132, 131, 131, 130, 131, 131, 131,
1022    131, 132, 132, 132, 131, 132, 132, 132, 131, 132, 132, 132, 131, 132, 132, 132,
1023    129, 131, 131, 130, 129, 130, 130, 131, 129, 131, 130, 130, 129, 130, 131, 131,
1024    131, 132, 132, 132, 131, 132, 132, 132, 131, 132, 132, 132, 131, 132, 132, 132,
1025    130, 131, 131, 131, 130, 131, 131, 132, 130, 132, 131, 131, 130, 131, 131, 131,
1026    130, 132, 132, 131, 130, 131, 131, 132, 130, 132, 131, 131, 130, 131, 132, 132,
1027    129, 131, 131, 130, 129, 130, 130, 131, 129, 131, 130, 130, 129, 130, 131, 131,
1028    130, 132, 132, 131, 130, 131, 131, 132, 130, 132, 131, 131, 130, 131, 132, 132,
1029    131, 132, 132, 132, 131, 132, 131, 132, 131, 132, 131, 132, 131, 132, 132, 132,
1030    131, 132, 132, 132, 131, 132, 131, 132, 131, 132, 131, 132, 131, 132, 132, 132
1031  },
1032  {
1033    146, 147, 147, 146, 146, 147, 146, 147, 146, 147, 146, 147, 145, 146, 147, 147,
1034    147, 149, 149, 148, 147, 148, 148, 149, 147, 149, 148, 148, 147, 148, 149, 149,
1035    147, 149, 149, 148, 147, 148, 148, 149, 147, 149, 148, 148, 147, 148, 149, 149,
1036    146, 148, 148, 147, 146, 147, 147, 148, 146, 148, 147, 147, 146, 147, 148, 148,
1037    146, 147, 147, 146, 145, 147, 146, 147, 146, 147, 146, 147, 145, 146, 147, 147,
1038    147, 148, 148, 147, 147, 148, 147, 148, 147, 148, 147, 148, 147, 147, 148, 148,
1039    146, 148, 148, 147, 146, 147, 147, 148, 146, 148, 147, 147, 146, 147, 148, 148,
1040    147, 149, 149, 148, 147, 148, 148, 149, 147, 149, 148, 148, 147, 148, 149, 149,
1041    146, 147, 147, 146, 146, 147, 146, 147, 146, 147, 146, 147, 146, 146, 147, 147,
1042    147, 149, 149, 148, 147, 148, 148, 149, 147, 149, 148, 148, 147, 148, 149, 149,
1043    146, 148, 148, 147, 146, 147, 147, 148, 146, 148, 147, 147, 146, 147, 148, 148,
1044    147, 148, 148, 147, 147, 148, 147, 148, 147, 148, 147, 148, 147, 147, 148, 148,
1045    145, 147, 147, 146, 145, 147, 146, 147, 146, 147, 146, 147, 145, 146, 147, 147,
1046    146, 148, 148, 147, 146, 147, 147, 148, 146, 148, 147, 147, 146, 147, 148, 148,
1047    147, 149, 149, 148, 147, 148, 148, 149, 147, 149, 148, 148, 147, 148, 149, 149,
1048    147, 149, 149, 148, 147, 148, 148, 149, 147, 149, 148, 148, 147, 148, 149, 149
1049  }
1050};
1051
1052
1053Int g_aiDequantCoef64[6][64] =
1054{
1055  {
1056    20,  19, 25, 19, 20, 19, 25, 19,
1057    19,  18, 24, 18, 19, 18, 24, 18,
1058    25,  24, 32, 24, 25, 24, 32, 24,
1059    19,  18, 24, 18, 19, 18, 24, 18,
1060    20,  19, 25, 19, 20, 19, 25, 19,
1061    19,  18, 24, 18, 19, 18, 24, 18,
1062    25,  24, 32, 24, 25, 24, 32, 24,
1063    19,  18, 24, 18, 19, 18, 24, 18
1064  },
1065  {
1066    22,  21, 28, 21, 22, 21, 28, 21,
1067    21,  19, 26, 19, 21, 19, 26, 19,
1068    28,  26, 35, 26, 28, 26, 35, 26,
1069    21,  19, 26, 19, 21, 19, 26, 19,
1070    22,  21, 28, 21, 22, 21, 28, 21,
1071    21,  19, 26, 19, 21, 19, 26, 19,
1072    28,  26, 35, 26, 28, 26, 35, 26,
1073    21,  19, 26, 19, 21,