Page[] mappings in mapper code, X.DB update for games with no controls
authornotaz <notasas@gmail.com>
Sat, 26 May 2007 13:49:46 +0000 (13:49 +0000)
committernotaz <notasas@gmail.com>
Sat, 26 May 2007 13:49:46 +0000 (13:49 +0000)
git-svn-id: file:///home/notaz/opt/svn/fceu@136 be3aeb3a-fb24-0410-a615-afba39da0efa

Makefile.base
boards/konami-qtai.c
boards/mmc3.c
cart.c
fds.c
ines.c
ncpu.S
ncpu_debug.c
nsfbgnew.h [deleted file]
x6502.c

index bd411f2..1cc7885 100644 (file)
@@ -16,7 +16,7 @@ endif
 clean:
                ${RM} fceu fceu.exe ${OBJECTS} ${INPOBJS} ${MOBJS} ${MUOBJS} ${MUSOBJS} ${OBJDRIVER}
 
-nsf.o:         nsf.c nsf.h fce.h x6502.h svga.h video.h sound.h nsfbgnew.h general.h file.h
+nsf.o:         nsf.c nsf.h fce.h x6502.h svga.h video.h sound.h general.h file.h
 #x6502.o:      x6502.c x6502.h ops.h fce.h sound.h
 video.o:       video.c types.h video.h svga.h version.h general.h
 sound.o:       sound.c sound.h types.h fce.h svga.h x6502.h
index d42ff0b..b78d8e3 100644 (file)
@@ -96,6 +96,10 @@ static void M190Power(void)
   SetWriteHandler(0x7000,0x7FFF,BWRAM);
   SetReadHandler(0x6000,0x6FFF,ASWRAM);
   SetWriteHandler(0x6000,0x6FFF,BSWRAM);
+#ifdef ASM_6502
+  Page[14]=Page[15]=WRAM-0x7000;
+  Page[12]=Page[13]=SWRAM-0x6000;
+#endif
   Sync();
 }
 
index 6345910..bfee5cd 100644 (file)
@@ -287,12 +287,25 @@ void GenMMC3Power(void)
    FCEU_CheatAddRAM(1,0x7000,WRAM);
    SetReadHandler(0x7000,0x7FFF,MAWRAMMMC6);
    SetWriteHandler(0x7000,0x7FFF,MBWRAMMMC6);
+#ifdef ASM_6502
+   // asm code needs pages to be set again..
+   Page[14]=Page[15]=WRAM-0x7000;
+#endif
   }
   else
   {
    FCEU_CheatAddRAM(wrams>>10,0x6000,WRAM);
    SetReadHandler(0x6000,0x6000+wrams-1,MAWRAM);
    SetWriteHandler(0x6000,0x6000+wrams-1,MBWRAM);
+#ifdef ASM_6502
+   {
+    int addr;
+    for (addr=0x6000; addr < 0x6000+wrams-0x7ff; addr += 0x800)
+    {
+     Page[addr>>11]=WRAM - 0x6000;
+    }
+   }
+#endif
   }
   if(!(mmc3opts&2))
      FCEU_dwmemset(WRAM,0,wrams);
@@ -558,7 +571,7 @@ static DECLFW(M45Write)
  }
  EXPREGS[EXPREGS[4]]=V;
  EXPREGS[4]=(EXPREGS[4]+1)&3;
- if(!EXPREGS[4]) 
+ if(!EXPREGS[4])
  {
    FCEU_printf("CHROR %02x, PRGOR %02x, CHRAND %02x, PRGAND %02x\n",EXPREGS[0],EXPREGS[1],EXPREGS[2],EXPREGS[3]);
    FCEU_printf("CHR0 %03x, CHR1 %03x, PRG0 %03x, PRG1 %03x\n",
@@ -1528,6 +1541,10 @@ static void M254_Power(void)
  GenMMC3Power();
  SetWriteHandler(0x8000,0xBFFF,M254Write);
  SetReadHandler(0x6000,0x7FFF,MR254WRAM);
+#ifdef ASM_6502
+   // hrrr.. can't handle those evil xors here..
+   Page[12]=Page[13]=Page[14]=Page[15]=WRAM-0x6000;
+#endif
 }
 
 void Mapper254_Init(CartInfo *info)
diff --git a/cart.c b/cart.c
index e1cd5da..742f9b0 100644 (file)
--- a/cart.c
+++ b/cart.c
@@ -711,4 +711,22 @@ void FCEU_LoadGameSave(CartInfo *LocalHWInfo)
  }
 }
 
+void DumpEmptyCartMapping(void)
+{
+ int x, st=0, end=-1;
+
+ for(x=8;x<32;x++)
+ {
+  if (Page[x] == (nothing-x*2048) || Page[x] == 0)
+  {
+   if (end != x) st=x;
+   end=x+1;
+  }
+  if (end == x)
+   printf("DumpEmptyCartMapping: %04x-%04x\n", st*2048, end*2048-1);
+ }
+ if (end==32)
+  printf("DumpEmptyCartMapping: %04x-%04x\n", st*2048, end*2048-1);
+}
+
 
diff --git a/fds.c b/fds.c
index 8e2fa60..a8e3d40 100644 (file)
--- a/fds.c
+++ b/fds.c
@@ -150,9 +150,9 @@ static void FDSInit(void)
   int page;\r
   // asm code needs pages to be set again..\r
   for (page=12; page<28; page++) // 0x6000-0xdfff 32K RAM\r
-   Page[page]=FDSRAM  - (page<<11) + ((page-12)<<11);\r
+   Page[page]=FDSRAM  - (12<<11);\r
   for (; page<32; page++)        // 0xe000-0xffff 8K BIOS\r
-   Page[page]=FDSBIOS - (page<<11) + ((page-28)<<11);\r
+   Page[page]=FDSBIOS - (28<<11);\r
  }\r
 #endif\r
 }\r
diff --git a/ines.c b/ines.c
index 6665a13..8e244ae 100644 (file)
--- a/ines.c
+++ b/ines.c
@@ -916,6 +916,10 @@ static void iNESPower(void)
         setprg8r(1,0x6000,0);\r
 \r
         SetReadHandler(0x6000,0x7FFF,AWRAM);\r
+#ifdef ASM_6502\r
+        // asm code needs pages to be set again..\r
+        Page[12]=Page[13]=Page[14]=Page[15]=WRAM-0x6000;\r
+#endif\r
         SetWriteHandler(0x6000,0x7FFF,BWRAM);\r
         FCEU_CheatAddRAM(8,0x6000,WRAM);\r
 \r
diff --git a/ncpu.S b/ncpu.S
index 96c867b..dcade08 100644 (file)
--- a/ncpu.S
+++ b/ncpu.S
@@ -405,18 +405,25 @@ ldmfd sp!,{r0-r3,r12,lr}
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 @@@ $nnnn
 
-.macro ABS_ADDR
+.macro ABS_ADDR update_db=0
+.if \update_db
+       ldrb    r0, [REG_PC, #1]
+       ldrb    REG_ADDR, [REG_PC], #2
+       strb    r0, [REG_OP_TABLE, #(OTOFFS_X + 0x10)]          @ X.DB
+       orr     REG_ADDR, REG_ADDR, r0, lsl #8
+.else
        tst     REG_PC, #1
        ldrneb  REG_ADDR, [REG_PC], #1
        ldrneb  r0, [REG_PC], #1
        ldreqh  REG_ADDR, [REG_PC], #2
        orrne   REG_ADDR, REG_ADDR, r0, lsl #8
+.endif
 .endm
 
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 @@@ $nnnn, X
 .macro ABSX_ADDR
-       ABS_ADDR
+       ABS_ADDR 1
        add     REG_ADDR, REG_ADDR, REG_X
        bic     REG_ADDR, REG_ADDR, #0x10000
        and     r0,REG_ADDR,#0xff
@@ -435,7 +442,7 @@ ldmfd sp!,{r0-r3,r12,lr}
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 @@@ $nnnn, Y
 .macro ABSY_ADDR
-       ABS_ADDR
+       ABS_ADDR 1                                      @ a hack needed for Paperboy, Dirty Harry controls to work
        add     REG_ADDR, REG_ADDR, REG_Y
        bic     REG_ADDR, REG_ADDR, #0x10000
        and     r0,REG_ADDR,#0xff
@@ -3051,6 +3058,7 @@ op9E:     @ SHX $nnnn, Y
        .globl  RAM
        .globl  timestamp
 #else
+       .globl  X_
        .globl  nes_internal_ram
        .globl  timestamp_a
 #endif
index cc78ae6..774218a 100644 (file)
@@ -11,6 +11,7 @@ extern uint32 pc_base;
 extern uint8  nes_internal_ram[0x800];
 extern uint32 timestamp_a;
 extern uint32 framecount;
+extern X6502 X_;
 static uint32 framecount_d;
 uint32 PC_prev = 0xcccccc, OP_prev = 0xcccccc;
 int32  g_cnt = 0;
@@ -22,11 +23,14 @@ uint32 dwrites_c[2], dwrites_a[2];
 int dread_count_c, dread_count_a, dwrite_count_c, dwrite_count_a;
 int mapirq_cyc_c, mapirq_cyc_a;
 
+extern void DumpEmptyCartMapping(void);
+
 static void leave(void)
 {
        printf("\nA: %02x, X: %02x, Y: %02x, S: %02x\n", X.A, X.X, X.Y, X.S);
        printf("PC = %04x, OP=%02X\n", PC_prev, OP_prev);
        printf("rest = %08x\n", nes_registers[4]);
+       DumpEmptyCartMapping();
        exit(1);
 }
 
@@ -107,6 +111,12 @@ static void compare_state(void)
                fail = 1;
        }
 
+/*
+       if (X_.DB != X.DB) {
+               printf("DB: %02x vs %02x\n", X_.DB, X.DB);
+               fail = 1;
+       }
+*/
        if (fail) leave();
 }
 
diff --git a/nsfbgnew.h b/nsfbgnew.h
deleted file mode 100644 (file)
index 2c55fe1..0000000
+++ /dev/null
@@ -1,2062 +0,0 @@
-/* FCE Ultra - NES/Famicom Emulator
- *
- * Copyright notice for this file:
- *  Copyright (C) 2002 Ben Parnell
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-uint8 NSFBG[32640] = {
-0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
-2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,
-3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,
-2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
-2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,
-0,0,0,0,4,4,4,4,4,4,4,4,4,4,4,5,
-5,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,
-7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,
-8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
-8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
-8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
-8,8,8,8,8,8,8,8,8,8,8,7,7,7,7,7,
-7,7,7,7,7,7,7,7,7,7,7,6,6,6,6,6,
-6,6,6,6,6,6,6,6,6,5,4,4,4,4,4,4,
-4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,
-4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,
-2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
-2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
-2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,
-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,
-4,4,4,4,4,4,4,4,4,4,4,4,5,6,6,6,
-6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,
-7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
-7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
-8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
-8,8,8,8,8,8,8,8,8,8,8,8,8,8,7,7,
-7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
-7,7,7,6,6,6,6,6,6,6,6,6,6,6,6,6,
-6,6,6,5,4,4,4,4,4,4,4,4,4,4,4,4,
-5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,
-2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
-2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
-2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,
-4,4,4,4,4,4,4,4,4,4,5,5,6,6,6,6,
-6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,
-7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
-7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,
-8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
-8,8,8,8,8,7,7,7,7,7,7,7,7,7,7,7,
-7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,6,
-6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
-6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,5,
-4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,
-1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
-1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,
-2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
-2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
-2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,
-4,4,4,4,4,4,4,4,5,5,6,6,6,6,6,6,
-6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,
-7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
-7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,
-8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
-8,8,8,8,8,8,7,7,7,7,7,7,7,7,7,7,
-7,7,7,7,7,7,7,7,7,7,7,7,7,7,6,6,
-7,7,7,7,7,7,7,7,7,7,7,7,7,7,6,6,
-6,6,6,6,6,6,6,6,6,6,6,6,6,5,4,4,
-4,4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,
-2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
-2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
-2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
-2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,
-4,4,4,4,4,5,6,6,6,6,6,6,6,6,6,6,
-6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,
-7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,
-8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
-8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
-8,8,8,8,8,8,8,8,8,8,8,7,7,7,7,7,
-8,8,8,8,8,8,8,8,8,8,8,8,8,7,7,7,
-7,7,7,7,7,7,7,7,7,7,7,7,6,6,6,6,
-6,6,6,6,6,6,6,6,5,5,4,4,4,4,4,4,
-4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,
-1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,
-2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
-2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,
-3,3,3,24,24,3,3,3,3,3,3,3,3,3,3,3,
-3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,
-2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,
-1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,
-0,0,0,4,4,4,4,4,4,4,4,4,4,4,5,6,
-6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,
-7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,
-8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
-8,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,
-9,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
-9,9,9,9,9,9,9,9,9,9,9,9,8,8,8,8,
-8,8,8,8,8,8,8,8,8,8,8,7,7,7,7,7,
-7,7,7,7,7,7,7,6,6,6,6,6,6,6,6,6,
-6,5,4,4,4,4,4,4,4,4,4,0,0,0,0,0,
-0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,
-1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,
-3,3,3,3,24,24,24,24,24,24,24,24,24,24,24,24,
-24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,
-24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,
-24,24,24,3,3,3,3,3,2,2,2,2,2,2,2,2,
-2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,
-1,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,
-4,4,4,4,4,5,6,6,6,6,6,6,6,6,6,6,
-6,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,
-8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,
-9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
-9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
-10,10,10,10,10,10,10,11,11,9,9,9,9,9,9,9,
-9,9,9,9,9,9,9,9,9,9,8,8,8,8,8,8,
-8,8,8,8,8,8,7,7,7,7,7,7,7,7,7,6,
-6,6,6,6,6,6,6,6,5,4,4,4,4,4,4,4,
-4,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,
-1,1,1,1,2,2,2,2,2,2,2,2,2,2,3,3,
-3,3,24,24,24,24,24,24,24,24,24,24,24,25,25,25,
-25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,
-25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,
-25,25,25,25,25,25,25,24,24,24,24,24,24,24,24,24,
-24,24,3,3,3,2,2,2,2,2,2,2,2,2,2,2,
-1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,
-0,0,4,4,4,4,4,4,4,4,5,6,6,6,6,6,
-6,6,6,6,7,7,7,7,7,7,7,7,7,7,8,8,
-8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,
-9,9,9,9,9,9,9,9,9,9,11,11,10,10,10,10,
-10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-12,12,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-10,10,10,10,10,10,10,10,11,9,9,9,9,9,9,9,
-9,9,9,9,8,8,8,8,8,8,8,8,8,8,7,7,
-7,7,7,7,7,7,6,6,6,6,6,6,6,6,5,4,
-4,4,4,4,4,4,0,0,0,0,0,0,0,1,1,1,
-1,1,1,1,1,2,2,2,2,2,2,2,2,2,3,3,
-3,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,
-25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,
-26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,
-26,26,26,26,25,25,25,25,25,25,25,25,25,25,25,25,
-25,25,25,25,24,24,24,24,24,24,24,24,3,3,3,2,
-2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,
-0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,6,
-6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,
-8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,
-9,9,9,9,11,10,10,10,10,10,10,10,10,10,10,10,
-10,10,10,10,10,10,10,10,10,10,10,12,12,12,12,12,
-12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
-12,12,12,12,12,12,12,12,10,10,10,10,10,10,10,10,
-10,10,10,11,9,9,9,9,9,9,9,9,8,8,8,8,
-8,8,8,8,7,7,7,7,7,7,7,7,6,6,6,6,
-6,6,5,4,4,4,4,4,4,0,0,0,0,0,0,0,
-1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,3,
-3,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,
-25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,
-26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,
-26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,
-26,26,26,25,25,25,25,25,25,25,25,25,25,25,24,24,
-24,24,24,24,3,3,3,2,2,2,2,2,2,2,1,1,
-1,1,1,1,1,0,0,0,0,0,0,0,4,4,4,4,
-4,4,5,6,6,6,6,6,6,6,7,7,7,7,7,7,
-7,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,
-9,9,11,10,10,10,10,10,10,10,10,10,10,10,12,12,
-12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
-13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
-13,13,13,13,13,13,12,12,12,12,12,12,12,12,12,12,
-12,12,12,10,10,10,10,10,10,10,10,9,9,9,9,9,
-9,9,9,8,8,8,8,8,8,8,7,7,7,7,7,7,
-6,6,6,6,6,6,5,4,4,4,4,4,0,0,0,0,
-0,0,0,1,1,1,1,1,1,2,2,2,2,2,2,2,
-3,3,24,24,24,24,24,25,25,25,25,25,25,25,25,26,
-26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,
-27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,
-27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,
-27,27,26,26,26,26,26,26,26,26,26,26,26,25,25,25,
-25,25,25,25,25,24,24,24,24,24,24,3,3,2,2,2,
-2,2,2,1,1,1,1,1,1,1,0,0,0,0,0,0,
-4,4,4,4,4,5,6,6,6,6,6,6,7,7,7,7,
-7,7,7,8,8,8,8,8,8,9,9,9,9,9,9,9,
-9,10,10,10,10,10,10,10,10,10,12,12,12,12,12,12,
-12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,
-14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
-14,14,14,13,13,13,13,13,13,13,13,13,13,13,13,13,
-13,12,12,12,12,12,12,12,12,12,10,10,10,10,10,10,
-10,11,9,9,9,9,9,9,8,8,8,8,8,8,7,7,
-7,7,7,7,6,6,6,6,6,6,4,4,4,4,4,0,
-0,0,0,0,0,1,1,1,1,1,1,2,2,2,2,2,
-2,3,24,24,24,24,24,25,25,25,25,25,25,25,26,26,
-26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,
-27,27,27,29,29,29,29,29,29,29,29,29,29,29,29,29,
-29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,
-27,27,27,27,27,27,27,27,27,27,27,27,26,26,26,26,
-26,26,26,26,25,25,25,25,25,25,25,24,24,24,24,24,
-3,3,2,2,2,2,2,2,1,1,1,1,1,1,0,0,
-0,0,0,4,4,4,4,4,5,6,6,6,6,6,7,7,
-7,7,7,7,8,8,8,8,8,8,9,9,9,9,9,9,
-9,10,10,10,10,10,10,10,12,12,12,12,12,12,12,12,
-12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
-14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
-14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
-13,13,13,13,13,13,13,13,13,12,12,12,12,12,12,12,
-12,10,10,10,10,10,10,9,9,9,9,9,9,8,8,8,
-8,8,7,7,7,7,7,7,6,6,6,6,6,4,4,4,
-4,4,0,0,0,0,0,1,1,1,1,1,2,2,2,2,
-2,2,3,24,24,24,24,25,25,25,25,25,25,26,26,26,
-26,26,26,26,26,27,27,27,27,27,27,27,27,29,29,29,
-29,29,28,28,28,28,28,28,28,28,28,28,30,30,30,30,
-30,30,30,30,30,30,30,30,30,30,30,30,28,28,28,28,
-28,28,28,28,28,29,29,29,29,29,29,27,27,27,27,27,
-27,27,27,26,26,26,26,26,26,26,25,25,25,25,25,25,
-25,24,24,24,24,3,2,2,2,2,2,2,1,1,1,1,
-1,0,0,0,0,0,4,4,4,4,4,6,6,6,6,6,
-7,7,7,7,7,8,8,8,8,8,8,9,9,9,9,9,
-9,10,10,10,10,10,10,12,12,12,12,12,12,12,12,13,
-13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14,
-15,15,15,16,16,16,16,16,16,16,16,16,16,16,16,16,
-16,16,16,16,16,16,16,16,16,16,15,15,15,15,14,14,
-14,14,14,14,14,14,14,14,13,13,13,13,13,13,13,13,
-12,12,12,12,12,12,10,10,10,10,10,11,9,9,9,9,
-9,8,8,8,8,8,7,7,7,7,7,6,6,6,6,5,
-4,4,4,4,0,0,0,0,0,1,1,1,1,1,2,2,
-2,2,2,3,24,24,24,24,25,25,25,25,25,26,26,26,
-26,26,26,26,27,27,27,27,27,27,27,29,29,29,29,28,
-28,28,28,28,30,30,30,30,30,30,30,30,30,30,30,30,
-30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,
-30,30,30,30,30,30,30,30,30,28,28,28,28,28,29,29,
-29,29,27,27,27,27,27,27,27,26,26,26,26,26,26,25,
-25,25,25,25,25,24,24,24,24,3,2,2,2,2,2,1,
-1,1,1,1,0,0,0,0,0,4,4,4,4,6,6,6,
-6,6,7,7,7,7,7,8,8,8,8,8,9,9,9,9,
-9,11,10,10,10,10,10,12,12,12,12,12,12,13,13,13,
-13,13,13,13,13,14,14,14,14,14,14,14,14,14,14,15,
-16,16,16,16,16,16,16,16,17,17,17,17,17,17,17,17,
-17,17,17,17,17,17,17,17,17,17,16,16,16,16,16,16,
-16,16,16,16,15,15,14,14,14,14,14,14,14,14,13,13,
-13,13,13,13,13,12,12,12,12,12,10,10,10,10,10,11,
-9,9,9,9,8,8,8,8,8,7,7,7,7,7,6,6,
-6,6,4,4,4,4,0,0,0,0,0,1,1,1,1,2,
-2,2,2,2,3,24,24,24,24,25,25,25,25,25,26,26,
-26,26,26,27,27,27,27,27,27,29,29,29,29,28,28,28,
-28,30,30,30,30,30,30,30,30,30,30,31,31,31,31,31,
-31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,
-31,31,31,31,31,31,30,30,30,30,30,30,30,30,30,30,
-30,28,28,28,28,29,29,29,27,27,27,27,27,27,26,26,
-26,26,26,26,25,25,25,25,25,24,24,24,3,3,2,2,
-2,2,1,1,1,1,1,0,0,0,0,4,4,4,4,5,
-6,6,6,6,7,7,7,7,8,8,8,8,8,9,9,9,
-9,9,10,10,10,10,10,12,12,12,12,12,12,13,13,13,
-13,13,13,14,14,14,14,14,14,14,14,15,15,16,16,16,
-16,16,17,17,17,17,17,17,17,17,17,17,17,17,17,17,
-17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,
-17,17,17,17,16,16,16,16,16,16,16,15,15,14,14,14,
-14,14,14,14,13,13,13,13,13,12,12,12,12,12,10,10,
-10,10,10,9,9,9,9,9,8,8,8,8,7,7,7,7,
-6,6,6,6,5,4,4,4,4,0,0,0,0,1,1,1,
-1,2,2,2,2,3,24,24,24,24,25,25,25,25,26,26,
-26,26,26,27,27,27,27,27,27,29,29,29,28,28,28,30,
-30,30,30,30,30,30,30,31,31,31,31,31,31,31,31,31,
-31,31,31,31,31,32,32,32,32,32,32,32,32,32,32,32,
-32,31,31,31,31,31,31,31,31,31,31,31,31,31,31,30,
-30,30,30,30,30,30,30,28,28,28,29,29,29,27,27,27,
-27,27,27,26,26,26,26,26,25,25,25,25,24,24,24,24,
-3,2,2,2,2,1,1,1,1,0,0,0,0,4,4,4,
-4,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,
-9,9,9,10,10,10,10,10,12,12,12,12,12,13,13,13,
-13,13,14,14,14,14,14,14,14,15,15,16,16,16,16,16,
-17,17,17,17,17,17,17,17,17,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,17,17,17,17,17,17,17,17,17,17,16,16,16,16,16,
-16,15,14,14,14,14,14,14,13,13,13,13,13,12,12,12,
-12,12,10,10,10,10,9,9,9,9,9,8,8,8,8,7,
-7,7,7,6,6,6,6,4,4,4,4,0,0,0,0,1,
-1,1,2,2,2,2,2,3,24,24,24,25,25,25,25,26,
-26,26,26,26,27,27,27,27,27,29,29,28,28,28,30,30,
-30,30,30,30,30,31,31,31,31,31,31,31,31,31,32,32,
-32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
-32,32,32,32,32,32,32,32,32,32,32,32,31,31,31,31,
-31,31,31,31,31,30,30,30,30,30,30,30,28,28,28,29,
-29,27,27,27,27,27,26,26,26,26,26,25,25,25,25,24,
-24,24,24,3,2,2,2,2,1,1,1,1,0,0,0,0,
-4,4,4,5,6,6,6,6,7,7,7,8,8,8,8,8,
-9,9,9,9,10,10,10,10,12,12,12,12,12,13,13,13,
-13,13,14,14,14,14,14,14,15,16,16,16,16,16,16,17,
-17,17,17,17,17,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,17,17,17,17,17,17,17,
-17,16,16,16,16,16,15,14,14,14,14,14,13,13,13,13,
-13,12,12,12,12,10,10,10,10,9,9,9,9,8,8,8,
-8,7,7,7,7,6,6,6,6,4,4,4,4,0,0,0,
-1,1,1,1,2,2,2,2,3,24,24,24,25,25,25,25,
-26,26,26,26,27,27,27,27,27,29,29,28,28,28,30,30,
-30,30,30,30,31,31,31,31,31,31,31,32,32,32,32,32,
-32,32,32,32,32,32,32,33,33,33,33,33,33,33,33,33,
-33,33,33,33,33,33,33,33,32,32,32,32,32,32,32,32,
-32,32,32,31,31,31,31,31,31,31,30,30,30,30,30,30,
-28,28,28,29,29,27,27,27,27,27,26,26,26,26,25,25,
-25,25,24,24,24,3,2,2,2,2,1,1,1,1,0,0,
-0,0,4,4,4,5,6,6,6,7,7,7,7,8,8,8,
-8,9,9,9,9,10,10,10,10,12,12,12,12,13,13,13,
-13,13,14,14,14,14,14,15,15,16,16,16,16,16,17,17,
-17,17,17,18,18,18,18,18,18,18,18,18,18,19,19,19,
-19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,
-19,19,19,19,19,19,18,18,18,18,18,18,18,18,18,17,
-17,17,17,17,17,16,16,16,16,16,15,14,14,14,14,14,
-13,13,13,13,12,12,12,12,10,10,10,10,9,9,9,9,
-8,8,8,8,7,7,7,6,6,6,6,4,4,4,4,0,
-0,0,1,1,1,1,2,2,2,3,24,24,24,25,25,25,
-25,26,26,26,26,27,27,27,27,27,29,29,28,28,30,30,
-30,30,30,30,31,31,31,31,31,31,32,32,32,32,32,32,
-32,32,33,33,33,33,33,33,33,33,33,35,35,35,35,35,
-35,35,35,35,35,35,35,33,33,33,33,33,33,33,33,33,
-32,32,32,32,32,32,32,32,32,31,31,31,31,31,31,30,
-30,30,30,30,28,28,28,29,29,27,27,27,27,26,26,26,
-26,25,25,25,25,24,24,24,3,2,2,2,2,1,1,1,
-0,0,0,0,4,4,4,6,6,6,6,7,7,7,7,8,
-8,8,9,9,9,9,10,10,10,10,12,12,12,12,13,13,
-13,13,13,14,14,14,14,15,15,16,16,16,16,17,17,17,
-17,17,17,18,18,18,18,18,18,18,19,19,19,19,19,19,
-19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,
-19,19,19,19,19,19,19,19,19,19,19,19,18,18,18,18,
-18,18,18,18,17,17,17,17,17,17,16,16,16,15,15,14,
-14,14,14,13,13,13,13,12,12,12,12,10,10,10,10,9,
-9,9,9,8,8,8,7,7,7,7,6,6,6,4,4,4,
-0,0,0,0,1,1,1,2,2,2,2,3,24,24,24,25,
-25,25,26,26,26,26,27,27,27,27,29,29,28,28,28,30,
-30,30,30,30,31,31,31,31,31,32,32,32,32,32,32,32,
-33,33,33,33,33,33,35,35,35,35,35,34,34,34,34,34,
-34,34,34,34,34,34,34,34,34,34,34,35,35,35,35,35,
-35,33,33,33,33,33,32,32,32,32,32,32,32,31,31,31,
-31,31,31,30,30,30,30,30,28,28,29,29,27,27,27,27,
-26,26,26,26,25,25,25,25,24,24,3,2,2,2,2,1,
-1,1,0,0,0,0,4,4,4,6,6,6,6,7,7,7,
-8,8,8,8,9,9,9,11,10,10,10,12,12,12,12,13,
-13,13,13,14,14,14,14,14,15,16,16,16,16,17,17,17,
-17,17,18,18,18,18,18,18,18,19,19,19,19,19,19,19,
-19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,
-20,20,20,20,20,20,20,20,19,19,19,19,19,19,19,19,
-19,18,18,18,18,18,18,18,17,17,17,17,17,16,16,16,
-16,15,14,14,14,14,13,13,13,13,12,12,12,12,10,10,
-10,9,9,9,9,8,8,8,7,7,7,7,6,6,6,4,
-4,4,0,0,0,0,1,1,1,2,2,2,2,24,24,24,
-25,25,25,25,26,26,26,27,27,27,27,29,29,28,28,30,
-30,30,30,30,31,31,31,31,31,32,32,32,32,32,32,33,
-33,33,33,33,35,35,35,34,34,34,34,34,34,34,34,34,
-34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,
-34,34,34,35,35,35,35,33,33,33,33,32,32,32,32,32,
-32,31,31,31,31,31,30,30,30,30,30,28,28,29,29,27,
-27,27,27,26,26,26,26,25,25,25,24,24,24,3,2,2,
-2,1,1,1,1,0,0,0,4,4,4,6,6,6,6,7,
-7,7,8,8,8,9,9,9,9,10,10,10,10,12,12,12,
-13,13,13,13,14,14,14,14,14,15,16,16,16,17,17,17,
-17,17,17,18,18,18,18,18,19,19,19,19,19,19,19,19,
-20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,
-21,21,21,21,21,21,21,21,21,21,20,20,20,20,19,19,
-19,19,19,19,19,19,18,18,18,18,18,18,17,17,17,17,
-17,16,16,16,15,14,14,14,14,13,13,13,13,12,12,12,
-10,10,10,10,9,9,9,8,8,8,8,7,7,7,6,6,
-6,4,4,4,0,0,0,0,1,1,1,2,2,2,3,24,
-24,24,25,25,25,26,26,26,26,27,27,27,29,29,28,28,
-30,30,30,30,30,31,31,31,31,32,32,32,32,32,32,33,
-33,33,33,35,35,35,34,34,34,34,34,34,34,34,34,34,
-34,34,34,34,36,36,36,36,36,36,36,34,34,34,34,34,
-34,34,34,34,34,34,34,34,35,35,35,33,33,33,33,32,
-32,32,32,32,32,31,31,31,31,31,30,30,30,30,28,28,
-29,29,27,27,27,27,26,26,26,25,25,25,25,24,24,3,
-2,2,2,1,1,1,1,0,0,0,4,4,4,6,6,6,
-7,7,7,7,8,8,8,9,9,9,11,10,10,10,12,12,
-12,13,13,13,13,14,14,14,14,15,16,16,16,16,17,17,
-17,17,17,18,18,18,18,18,18,19,19,19,19,19,19,20,
-20,20,20,21,21,21,21,21,21,21,21,22,22,22,22,22,
-22,22,22,22,22,22,22,21,21,21,21,21,21,21,21,20,
-20,20,20,19,19,19,19,19,19,19,18,18,18,18,18,17,
-17,17,17,17,16,16,16,15,14,14,14,14,13,13,13,12,
-12,12,12,10,10,10,9,9,9,9,8,8,8,7,7,7,
-6,6,6,4,4,4,0,0,0,1,1,1,1,2,2,2,
-3,24,24,25,25,25,26,26,26,26,27,27,27,27,29,28,
-28,30,30,30,30,30,31,31,31,31,32,32,32,32,32,33,
-33,33,33,35,35,34,34,34,34,34,34,34,34,34,34,36,
-36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,
-36,36,36,36,34,34,34,34,34,34,34,34,34,35,35,33,
-33,33,33,32,32,32,32,32,31,31,31,31,31,30,30,30,
-30,28,28,29,29,27,27,27,26,26,26,26,25,25,25,24,
-24,24,2,2,2,2,1,1,1,0,0,0,4,4,4,6,
-6,6,7,7,7,8,8,8,8,9,9,9,10,10,10,12,
-12,12,12,13,13,13,13,14,14,14,15,16,16,16,16,17,
-17,17,17,17,18,18,18,18,18,19,19,19,19,19,19,20,
-20,20,21,21,21,21,21,21,22,22,22,22,22,22,22,22,
-22,22,22,22,22,22,22,22,22,22,22,22,22,22,21,21,
-21,21,21,21,20,20,20,19,19,19,19,19,19,18,18,18,
-18,18,17,17,17,17,17,16,16,16,15,14,14,14,13,13,
-13,13,12,12,12,10,10,10,11,9,9,9,8,8,8,7,
-7,7,6,6,6,4,4,4,0,0,0,1,1,1,2,2,
-2,2,24,24,24,25,25,25,26,26,26,27,27,27,27,29,
-29,28,28,30,30,30,30,31,31,31,31,32,32,32,32,32,
-33,33,33,35,35,35,34,34,34,34,34,34,34,36,36,36,
-36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,
-36,36,36,36,36,36,36,36,36,34,34,34,34,34,34,34,
-34,35,35,33,33,33,32,32,32,32,32,31,31,31,31,31,
-30,30,30,30,28,28,29,27,27,27,27,26,26,26,25,25,
-25,24,24,24,3,2,2,2,1,1,1,0,0,0,4,4,
-4,6,6,6,7,7,7,8,8,8,9,9,9,9,10,10,
-10,12,12,12,13,13,13,13,14,14,14,14,15,16,16,16,
-16,17,17,17,17,18,18,18,18,18,19,19,19,19,19,19,
-20,20,21,21,21,21,21,22,22,22,22,22,22,22,22,22,
-22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,
-22,22,22,21,21,21,21,21,20,20,20,19,19,19,19,19,
-18,18,18,18,18,17,17,17,17,16,16,16,15,14,14,14,
-14,13,13,13,12,12,12,12,10,10,10,9,9,9,8,8,
-8,7,7,7,6,6,6,5,4,4,0,0,0,1,1,1,
-2,2,2,3,24,24,24,25,25,25,26,26,26,27,27,27,
-29,29,28,28,30,30,30,30,31,31,31,31,32,32,32,32,
-32,33,33,33,35,35,34,34,34,34,34,34,34,36,36,36,
-36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,
-36,36,36,36,36,36,36,36,36,36,36,36,36,34,34,34,
-34,34,34,34,35,35,33,33,33,32,32,32,32,32,31,31,
-31,31,30,30,30,30,28,28,29,29,27,27,27,26,26,26,
-25,25,25,25,24,24,3,2,2,2,1,1,1,0,0,0,
-4,4,4,6,6,6,7,7,7,8,8,8,9,9,9,11,
-10,10,10,12,12,12,13,13,13,14,14,14,14,15,16,16,
-16,16,17,17,17,17,18,18,18,18,18,19,19,19,19,19,
-20,20,20,21,21,21,21,22,22,22,22,22,22,22,22,22,
-22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,
-22,22,22,22,22,22,22,21,21,21,21,20,20,20,19,19,
-19,19,19,18,18,18,18,18,17,17,17,17,16,16,16,15,
-14,14,14,13,13,13,13,12,12,12,10,10,10,9,9,9,
-8,8,8,7,7,7,6,6,6,5,4,4,0,0,0,1,
-1,1,2,2,2,3,24,24,25,25,25,26,26,26,26,27,
-27,27,29,29,28,28,30,30,30,31,31,31,31,32,32,32,
-32,32,33,33,33,35,35,34,34,34,34,34,34,36,36,36,
-36,36,36,36,36,36,36,36,37,37,37,37,37,37,37,37,
-37,37,37,37,37,37,36,36,36,36,36,36,36,36,36,36,
-36,34,34,34,34,34,34,35,35,33,33,33,32,32,32,32,
-32,31,31,31,31,30,30,30,30,28,28,29,27,27,27,27,
-26,26,26,25,25,25,24,24,3,2,2,2,1,1,1,0,
-0,0,4,4,4,6,6,6,7,7,7,8,8,8,9,9,
-9,10,10,10,12,12,12,12,13,13,13,14,14,14,14,16,
-15,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,
-19,19,20,20,21,21,21,21,22,22,22,22,22,22,22,22,
-22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,22,
-22,22,22,22,22,22,22,22,22,22,21,21,21,21,20,20,
-20,19,19,19,19,19,18,18,18,18,17,17,17,17,16,16,
-16,15,14,14,14,14,13,13,13,12,12,12,10,10,10,9,
-9,9,8,8,8,7,7,7,6,6,6,5,4,4,0,0,
-0,1,1,1,2,2,2,3,24,24,25,25,25,26,26,26,
-27,27,27,27,29,28,28,30,30,30,30,31,31,31,31,32,
-32,32,32,33,33,33,35,35,34,34,34,34,34,34,36,36,
-36,36,36,36,36,36,36,37,37,37,37,37,37,37,37,37,
-37,37,37,37,37,37,37,37,37,37,37,36,36,36,36,36,
-36,36,36,36,34,34,34,34,34,34,35,35,33,33,33,32,
-32,32,32,31,31,31,31,30,30,30,30,28,28,29,29,27,
-27,27,26,26,26,25,25,25,24,24,3,2,2,2,1,1,
-1,0,0,0,4,4,4,6,6,6,7,7,7,8,8,8,
-9,9,9,10,10,10,12,12,12,13,13,13,13,14,14,14,
-14,14,15,16,16,16,17,17,17,17,18,18,18,18,19,19,
-19,19,19,20,20,21,21,21,21,22,22,22,22,22,22,22,
-22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,
-23,23,23,23,22,22,22,22,22,22,22,22,22,21,21,21,
-21,20,20,19,19,19,19,19,18,18,18,18,18,17,17,17,
-17,16,16,16,15,14,14,14,13,13,13,12,12,12,10,10,
-10,11,9,9,9,8,8,8,7,7,6,6,6,5,4,4,
-0,0,0,1,1,1,2,2,2,3,24,24,25,25,25,26,
-26,26,27,27,27,27,29,28,28,30,30,30,30,31,31,31,
-31,32,32,32,32,33,33,33,35,35,34,34,34,34,34,36,
-36,36,36,36,36,36,36,36,37,37,37,37,37,37,37,37,
-37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,36,
-36,36,36,36,36,36,36,34,34,34,34,34,34,35,35,33,
-33,33,32,32,32,32,31,31,31,31,30,30,30,28,28,29,
-29,27,27,27,26,26,26,25,25,25,24,24,24,2,2,2,
-1,1,1,0,0,0,4,4,4,6,6,6,7,7,7,8,
-8,8,9,9,9,10,10,10,12,12,12,13,13,13,14,14,
-14,14,14,14,15,16,16,17,17,17,17,18,18,18,18,18,
-19,19,19,19,19,20,20,21,21,21,21,22,22,22,22,22,
-22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,
-23,23,23,23,23,23,23,22,22,22,22,22,22,22,22,22,
-21,21,21,21,20,20,19,19,19,19,19,18,18,18,18,17,
-17,17,17,16,16,16,15,14,14,14,13,13,13,13,12,12,
-12,10,10,10,9,9,9,8,8,8,7,7,7,6,6,6,
-4,4,0,0,0,1,1,1,2,2,2,3,24,24,25,25,
-25,26,26,26,27,27,27,27,29,28,28,30,30,30,30,31,
-31,31,32,32,32,32,32,33,33,35,35,34,34,34,34,34,
-34,36,36,36,36,36,36,36,36,37,37,37,37,37,37,37,
-37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,
-37,37,36,36,36,36,36,36,36,36,34,34,34,34,34,35,
-35,33,33,33,32,32,32,32,31,31,31,31,30,30,30,30,
-28,28,29,27,27,27,26,26,26,25,25,25,25,24,24,3,
-2,2,1,1,1,0,0,0,4,4,4,6,6,6,7,7,
-7,8,8,8,9,9,9,10,10,10,12,12,12,13,13,13,
-13,13,14,14,14,14,15,16,16,17,17,17,17,18,18,18,
-18,18,19,19,19,19,20,20,20,21,21,21,22,22,22,22,
-22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,
-23,23,23,23,23,23,23,23,23,23,22,22,22,22,22,22,
-22,22,22,21,21,21,20,20,20,19,19,19,19,18,18,18,
-18,18,17,17,17,17,16,16,15,14,14,14,14,13,13,13,
-12,12,12,10,10,10,9,9,9,8,8,8,7,7,7,6,
-6,6,4,4,4,0,0,1,1,1,2,2,2,3,24,24,
-25,25,25,26,26,26,27,27,27,27,29,28,28,30,30,30,
-30,31,31,31,32,32,32,32,33,33,33,35,35,34,34,34,
-34,34,34,36,36,36,36,36,36,36,37,37,37,37,37,37,
-37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,
-37,37,37,37,37,36,36,36,36,36,36,36,34,34,34,34,
-34,34,35,35,33,33,33,32,32,32,32,31,31,31,30,30,
-30,30,28,28,29,27,27,27,27,26,26,26,25,25,25,24,
-24,3,2,2,2,1,1,1,0,0,4,4,4,6,6,6,
-7,7,7,8,8,8,9,9,9,10,10,10,12,12,12,13,
-12,13,13,13,13,14,14,14,15,16,16,16,17,17,17,18,
-18,18,18,18,19,19,19,19,20,20,20,21,21,21,22,22,
-22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,
-23,23,23,23,23,23,23,23,23,23,23,23,23,22,22,22,
-22,22,22,22,22,21,21,21,21,20,20,19,19,19,19,19,
-18,18,18,18,17,17,17,17,16,16,16,14,14,14,14,13,
-13,13,12,12,12,10,10,10,9,9,9,8,8,8,7,7,
-7,6,6,6,4,4,4,0,0,0,1,1,1,2,2,3,
-24,24,25,25,25,26,26,26,26,27,27,27,29,28,28,30,
-30,30,30,31,31,31,32,32,32,32,32,33,33,35,35,34,
-34,34,34,34,34,36,36,36,36,36,36,36,37,37,37,37,
-37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,
-37,37,37,37,37,37,37,36,36,36,36,36,36,36,36,34,
-34,34,34,34,35,35,33,33,33,32,32,32,32,31,31,31,
-31,30,30,30,28,28,29,29,27,27,27,26,26,26,25,25,
-25,24,24,3,2,2,2,1,1,1,0,0,0,4,4,6,
-6,6,7,7,7,8,8,8,9,9,9,10,10,10,12,12,
-12,12,12,12,13,13,13,14,14,14,15,16,16,16,17,17,
-17,17,18,18,18,18,19,19,19,19,19,20,20,21,21,21,
-21,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,
-23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,22,
-22,22,22,22,22,22,22,21,21,21,21,20,20,19,19,19,
-19,19,18,18,18,18,17,17,17,17,16,16,16,15,14,14,
-14,13,13,13,12,12,12,10,10,10,11,9,9,8,8,8,
-7,7,7,6,6,6,4,4,4,0,0,0,1,1,1,2,
-2,2,3,24,24,25,25,25,26,26,26,27,27,27,29,28,
-28,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,
-35,34,34,34,34,34,34,36,36,36,36,36,36,36,37,37,
-37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,
-37,37,37,37,37,37,37,37,37,37,36,36,36,36,36,36,
-36,34,34,34,34,34,35,35,33,33,33,32,32,32,32,31,
-31,31,31,30,30,30,30,28,29,29,27,27,27,26,26,26,
-25,25,25,24,24,3,2,2,2,1,1,1,0,0,0,4,
-4,5,6,6,6,7,7,7,8,8,9,9,9,11,10,10,
-10,10,10,12,12,12,13,13,13,14,14,14,14,16,16,16,
-17,17,17,17,18,18,18,18,19,19,19,19,19,20,20,21,
-21,21,21,22,22,22,22,22,22,22,22,23,23,23,23,23,
-23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
-23,22,22,22,22,22,22,22,22,22,21,21,21,20,20,19,
-19,19,19,19,18,18,18,18,17,17,17,17,16,16,16,15,
-14,14,14,13,13,13,13,12,12,12,10,10,10,9,9,9,
-8,8,8,7,7,7,6,6,5,4,4,0,0,0,1,1,
-1,2,2,2,3,24,24,25,25,25,26,26,26,27,27,27,
-29,29,28,28,30,30,30,31,31,31,31,32,32,32,32,33,
-33,33,35,35,34,34,34,34,34,36,36,36,36,36,36,36,
-36,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,
-37,37,37,37,37,37,37,37,37,37,37,37,36,36,36,36,
-36,36,36,34,34,34,34,34,34,35,35,33,33,32,32,32,
-32,31,31,31,31,30,30,30,30,28,28,29,27,27,27,26,
-26,26,26,25,25,25,24,24,3,2,2,1,1,1,0,0,
-0,4,4,4,6,6,6,7,7,7,8,8,8,9,9,9,
-9,9,10,10,10,12,12,12,13,13,13,13,14,14,14,15,
-16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,19,
-20,20,21,21,21,21,22,22,22,22,22,22,22,22,23,23,
-23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
-23,23,23,22,22,22,22,22,22,22,22,22,21,21,21,20,
-20,20,19,19,19,19,18,18,18,18,18,17,17,17,17,16,
-16,15,14,14,14,14,13,13,13,12,12,12,10,10,10,9,
-9,9,8,8,8,7,7,7,6,6,6,4,4,4,0,0,
-0,1,1,1,2,2,3,24,24,25,25,25,26,26,26,26,
-27,27,27,29,28,28,30,30,30,30,31,31,31,31,32,32,
-32,32,33,33,33,35,34,34,34,34,34,34,36,36,36,36,
-36,36,36,36,37,37,37,37,37,37,37,37,37,37,37,37,
-37,37,37,37,37,37,37,37,37,37,37,37,37,37,36,36,
-36,36,36,36,36,34,34,34,34,34,34,35,35,33,33,33,
-32,32,32,32,31,31,31,31,30,30,30,28,28,29,27,27,
-27,27,26,26,26,25,25,25,24,24,3,2,2,2,1,1,
-1,0,0,0,4,4,6,6,6,7,7,7,8,8,8,9,
-8,8,9,9,9,10,10,10,12,12,12,13,13,13,14,14,
-14,14,16,16,16,17,17,17,17,18,18,18,18,18,19,19,
-19,19,20,20,20,21,21,21,22,22,22,22,22,22,22,22,
-22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
-23,23,23,23,23,22,22,22,22,22,22,22,22,22,21,21,
-21,20,20,20,19,19,19,19,19,18,18,18,18,17,17,17,
-17,16,16,16,15,14,14,14,13,13,13,12,12,12,10,10,
-10,9,9,9,8,8,8,7,7,7,6,6,6,5,4,4,
-0,0,0,1,1,1,2,2,2,3,24,24,25,25,25,26,
-26,26,27,27,27,29,29,28,28,30,30,30,31,31,31,31,
-32,32,32,32,33,33,33,35,35,34,34,34,34,34,34,36,
-36,36,36,36,36,36,36,37,37,37,37,37,37,37,37,37,
-37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,36,
-36,36,36,36,36,36,36,34,34,34,34,34,34,35,35,33,
-33,33,32,32,32,32,31,31,31,31,30,30,30,28,28,29,
-29,27,27,27,26,26,26,25,25,25,24,24,3,2,2,2,
-1,1,1,0,0,0,4,4,4,6,6,6,7,7,7,8,
-7,8,8,8,9,9,9,10,10,10,12,12,12,12,13,13,
-13,14,14,14,15,16,16,16,17,17,17,17,18,18,18,18,
-19,19,19,19,19,20,20,20,21,21,21,21,22,22,22,22,
-22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,
-23,23,23,23,23,23,22,22,22,22,22,22,22,22,22,22,
-21,21,21,20,20,20,19,19,19,19,19,18,18,18,18,17,
-17,17,17,16,16,16,15,14,14,14,13,13,13,13,12,12,
-12,10,10,10,9,9,9,8,8,8,7,7,7,6,6,6,
-4,4,4,0,0,0,1,1,1,2,2,3,24,24,25,25,
-25,25,26,26,26,27,27,27,29,29,28,30,30,30,30,31,
-31,31,31,32,32,32,32,33,33,33,35,35,34,34,34,34,
-34,34,36,36,36,36,36,36,36,36,37,37,37,37,37,37,
-37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,
-37,36,36,36,36,36,36,36,36,34,34,34,34,34,34,35,
-35,33,33,33,32,32,32,32,31,31,31,31,30,30,30,30,
-28,28,29,27,27,27,26,26,26,26,25,25,25,24,24,3,
-2,2,2,1,1,1,0,0,4,4,4,6,6,6,7,7,
-6,7,7,7,8,8,8,9,9,9,10,10,10,12,12,12,
-13,13,13,13,14,14,14,15,16,16,16,17,17,17,17,18,
-18,18,18,19,19,19,19,19,20,20,20,21,21,21,21,22,
-22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,
-23,23,23,23,23,23,23,22,22,22,22,22,22,22,22,22,
-22,21,21,21,21,20,20,20,19,19,19,19,19,18,18,18,
-18,17,17,17,17,16,16,16,15,14,14,14,14,13,13,13,
-12,12,12,10,10,10,9,9,9,8,8,8,7,7,7,6,
-6,6,5,4,4,0,0,0,1,1,1,2,2,2,3,24,
-24,25,25,25,26,26,26,27,27,27,27,29,28,28,30,30,
-30,30,31,31,31,31,32,32,32,32,33,33,33,35,35,34,
-34,34,34,34,34,36,36,36,36,36,36,36,36,36,37,37,
-37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,
-37,37,37,36,36,36,36,36,36,36,36,34,34,34,34,34,
-34,35,35,33,33,33,32,32,32,32,31,31,31,31,30,30,
-30,30,28,28,29,29,27,27,27,26,26,26,25,25,25,24,
-24,3,2,2,2,1,1,1,0,0,0,4,4,4,6,6,
-5,6,6,6,7,7,7,8,8,8,9,9,9,10,10,10,
-12,12,12,13,13,13,14,14,14,14,15,16,16,16,17,17,
-17,17,18,18,18,18,19,19,19,19,19,19,20,20,21,21,
-21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,23,
-23,23,23,23,23,23,23,22,22,22,22,22,22,22,22,22,
-22,22,22,21,21,21,21,20,20,20,19,19,19,19,19,18,
-18,18,18,18,17,17,17,17,16,16,16,15,14,14,14,13,
-13,13,12,12,12,12,10,10,10,9,9,9,8,8,8,7,
-7,7,6,6,6,4,4,4,0,0,0,1,1,1,2,2,
-2,3,24,24,25,25,25,26,26,26,27,27,27,27,29,28,
-28,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,
-35,35,34,34,34,34,34,34,36,36,36,36,36,36,36,36,
-36,36,37,37,37,37,37,37,37,37,37,37,37,37,37,37,
-37,37,37,37,36,36,36,36,36,36,36,36,36,34,34,34,
-34,34,34,35,35,33,33,33,32,32,32,32,32,31,31,31,
-31,30,30,30,28,28,29,29,27,27,27,26,26,26,26,25,
-25,25,24,24,3,2,2,2,1,1,1,0,0,0,4,4,
-4,4,4,6,6,6,7,7,7,8,8,8,9,9,9,11,
-10,10,10,12,12,12,13,13,13,14,14,14,14,15,16,16,
-16,17,17,17,17,18,18,18,18,19,19,19,19,19,19,20,
-20,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,
-22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,
-22,22,22,22,22,21,21,21,21,20,20,20,19,19,19,19,
-19,18,18,18,18,18,17,17,17,17,16,16,16,15,14,14,
-14,14,13,13,13,12,12,12,10,10,10,9,9,9,9,8,
-8,8,7,7,7,6,6,6,4,4,4,0,0,0,1,1,
-1,2,2,2,24,24,24,25,25,25,26,26,26,27,27,27,
-29,29,28,28,30,30,30,30,31,31,31,31,32,32,32,32,
-33,33,33,35,35,34,34,34,34,34,34,34,36,36,36,36,
-36,36,36,36,36,36,37,37,37,37,37,37,37,37,37,37,
-37,37,37,37,37,36,36,36,36,36,36,36,36,36,36,34,
-34,34,34,34,34,34,35,35,33,33,33,32,32,32,32,31,
-31,31,31,30,30,30,30,28,28,29,27,27,27,27,26,26,
-26,25,25,25,24,24,3,2,2,2,1,1,1,0,0,0,
-0,0,0,4,4,4,6,6,6,7,7,7,8,8,8,9,
-9,9,11,10,10,10,12,12,12,13,13,13,14,14,14,14,
-15,16,16,16,17,17,17,17,18,18,18,18,18,19,19,19,
-19,19,20,20,20,21,21,21,21,22,22,22,22,22,22,22,
-22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,
-22,22,22,22,22,22,22,21,21,21,21,21,20,20,19,19,
-19,19,19,19,18,18,18,18,17,17,17,17,17,16,16,16,
-15,14,14,14,13,13,13,13,12,12,12,10,10,10,9,9,
-9,8,8,8,7,7,7,6,6,6,5,4,4,0,0,0,
-1,1,1,2,2,2,3,24,24,24,25,25,25,26,26,26,
-27,27,27,29,29,28,28,30,30,30,30,31,31,31,31,32,
-32,32,32,33,33,33,33,35,35,34,34,34,34,34,34,36,
-36,36,36,36,36,36,36,36,36,36,36,36,37,37,37,37,
-37,37,37,37,37,36,36,36,36,36,36,36,36,36,36,36,
-36,34,34,34,34,34,34,34,35,35,33,33,33,32,32,32,
-32,32,31,31,31,31,30,30,30,28,28,29,29,27,27,27,
-26,26,26,26,25,25,25,24,24,3,2,2,2,1,1,1,
-1,1,1,0,0,0,4,4,4,6,6,6,7,7,7,8,
-8,8,9,9,9,10,10,10,12,12,12,12,13,13,13,14,
-14,14,14,15,16,16,16,17,17,17,17,18,18,18,18,18,
-19,19,19,19,19,19,20,20,21,21,21,21,21,22,22,22,
-22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,
-22,22,22,22,22,22,22,22,22,21,21,21,21,21,20,20,
-19,19,19,19,19,19,18,18,18,18,18,17,17,17,17,16,
-16,16,15,14,14,14,14,13,13,13,12,12,12,12,10,10,
-10,9,9,9,8,8,8,7,7,7,6,6,6,4,4,4,
-0,0,0,1,1,1,2,2,2,3,24,24,25,25,25,25,
-26,26,26,27,27,27,29,29,28,28,30,30,30,30,31,31,
-31,31,32,32,32,32,32,33,33,33,35,35,34,34,34,34,
-34,34,34,36,36,36,36,36,36,36,36,36,36,36,36,36,
-36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,
-36,36,36,34,34,34,34,34,34,34,35,35,33,33,33,32,
-32,32,32,32,31,31,31,31,30,30,30,30,28,28,29,29,
-27,27,27,26,26,26,25,25,25,25,24,24,3,2,2,2,
-2,2,2,1,1,1,0,0,0,4,4,5,6,6,6,7,
-7,7,8,8,8,9,9,9,10,10,10,12,12,12,12,13,
-13,13,14,14,14,14,15,16,16,16,17,17,17,17,18,18,
-18,18,18,19,19,19,19,19,19,20,20,20,21,21,21,21,
-21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,
-22,22,22,22,22,22,22,22,22,22,21,21,21,21,21,21,
-20,20,20,19,19,19,19,19,18,18,18,18,18,17,17,17,
-17,17,16,16,16,15,14,14,14,13,13,13,13,12,12,12,
-10,10,10,11,9,9,9,8,8,8,7,7,7,6,6,6,
-4,4,4,0,0,0,1,1,1,2,2,2,3,24,24,25,
-25,25,25,26,26,26,27,27,27,29,29,28,28,30,30,30,
-30,31,31,31,31,32,32,32,32,32,33,33,33,35,35,35,
-34,34,34,34,34,34,34,36,36,36,36,36,36,36,36,36,
-36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,
-36,36,36,36,36,34,34,34,34,34,34,34,35,35,33,33,
-33,33,32,32,32,32,31,31,31,31,31,30,30,30,30,28,
-28,29,27,27,27,27,26,26,26,25,25,25,24,24,24,3,
-24,3,2,2,2,1,1,1,1,0,0,0,4,4,5,6,
-6,6,7,7,7,8,8,8,9,9,9,10,10,10,10,12,
-12,12,13,13,13,14,14,14,14,15,16,16,16,17,17,17,
-17,17,18,18,18,18,18,19,19,19,19,19,19,20,20,20,
-21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,
-22,22,22,22,22,22,22,22,22,22,22,22,21,21,21,21,
-21,21,20,20,20,19,19,19,19,19,19,18,18,18,18,18,
-17,17,17,17,16,16,16,15,14,14,14,14,13,13,13,13,
-12,12,12,10,10,10,9,9,9,9,8,8,8,7,7,7,
-6,6,6,4,4,4,0,0,0,1,1,1,2,2,2,3,
-24,24,25,25,25,25,26,26,26,27,27,27,27,29,28,28,
-30,30,30,30,31,31,31,31,32,32,32,32,32,33,33,33,
-33,35,35,34,34,34,34,34,34,34,34,36,36,36,36,36,
-36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,
-36,36,36,36,36,36,36,34,34,34,34,34,34,34,34,35,
-35,33,33,33,32,32,32,32,32,31,31,31,31,30,30,30,
-30,28,28,29,29,27,27,27,27,26,26,26,25,25,25,24,
-25,25,24,24,3,2,2,2,1,1,1,0,0,0,0,4,
-4,5,6,6,6,7,7,7,8,8,8,9,9,9,10,10,
-10,10,12,12,12,13,13,13,13,14,14,14,15,16,16,16,
-17,17,17,17,17,18,18,18,18,18,19,19,19,19,19,19,
-20,20,20,21,21,21,21,21,21,22,22,22,22,22,22,22,
-22,22,22,22,22,22,22,22,22,22,22,22,22,22,21,21,
-21,21,21,21,20,20,20,19,19,19,19,19,19,18,18,18,
-18,18,18,17,17,17,17,16,16,16,15,14,14,14,14,13,
-13,13,12,12,12,12,10,10,10,9,9,9,8,8,8,8,
-7,7,7,6,6,6,4,4,4,0,0,0,1,1,1,2,
-2,2,3,24,24,25,25,25,25,26,26,26,27,27,27,27,
-29,28,28,30,30,30,30,31,31,31,31,31,32,32,32,32,
-32,33,33,33,35,35,34,34,34,34,34,34,34,34,36,36,
-36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,
-36,36,36,36,36,36,36,36,36,34,34,34,34,34,34,34,
-34,35,35,33,33,33,33,32,32,32,32,32,31,31,31,31,
-30,30,30,30,28,28,29,29,27,27,27,26,26,26,26,25,
-26,26,25,25,25,24,24,3,2,2,2,1,1,1,0,0,
-0,0,4,4,5,6,6,6,7,7,7,8,8,8,9,9,
-9,11,10,10,10,12,12,12,13,13,13,13,14,14,14,14,
-16,16,16,16,17,17,17,17,18,18,18,18,18,19,19,19,
-19,19,19,19,20,20,20,21,21,21,21,21,21,22,22,22,
-22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,
-21,21,21,21,21,21,20,20,20,20,19,19,19,19,19,19,
-18,18,18,18,18,17,17,17,17,17,16,16,16,15,14,14,
-14,14,13,13,13,12,12,12,12,10,10,10,9,9,9,8,
-8,8,7,7,7,7,6,6,6,4,4,4,0,0,0,1,
-1,1,2,2,2,3,24,24,25,25,25,25,26,26,26,27,
-27,27,27,29,28,28,28,30,30,30,30,31,31,31,31,32,
-32,32,32,32,33,33,33,35,35,35,34,34,34,34,34,34,
-34,34,36,36,36,36,36,36,36,36,36,36,36,36,36,36,
-36,36,36,36,36,36,36,36,36,36,36,34,34,34,34,34,
-34,34,34,35,35,35,33,33,33,32,32,32,32,32,31,31,
-31,31,31,30,30,30,30,28,28,29,29,27,27,27,26,26,
-27,26,26,26,25,25,25,25,24,24,3,2,2,2,1,1,
-1,0,0,0,4,4,4,5,6,6,6,7,7,7,8,8,
-8,9,9,9,11,10,10,10,12,12,12,13,13,13,13,14,
-14,14,14,15,16,16,16,17,17,17,17,18,18,18,18,18,
-18,19,19,19,19,19,19,20,20,20,21,21,21,21,21,21,
-21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,
-22,22,21,21,21,21,21,21,21,20,20,20,19,19,19,19,
-19,19,19,18,18,18,18,18,17,17,17,17,17,16,16,16,
-15,14,14,14,14,13,13,13,12,12,12,12,10,10,10,9,
-9,9,8,8,8,7,7,7,7,6,6,6,4,4,4,0,
-0,0,1,1,1,2,2,2,3,24,24,24,25,25,25,26,
-26,26,27,27,27,27,29,29,28,28,30,30,30,30,31,31,
-31,31,32,32,32,32,32,33,33,33,33,35,35,34,34,34,
-34,34,34,34,34,34,36,36,36,36,36,36,36,36,36,36,
-36,36,36,36,36,36,36,36,36,36,36,36,36,36,34,34,
-34,34,34,34,34,34,35,35,35,33,33,33,32,32,32,32,
-32,31,31,31,31,31,30,30,30,30,28,28,29,27,27,27,
-27,27,27,27,26,26,26,25,25,25,25,24,24,3,2,2,
-2,1,1,1,0,0,0,4,4,4,5,6,6,6,7,7,
-7,8,8,8,9,9,9,11,10,10,10,12,12,12,13,13,
-13,13,14,14,14,14,15,16,16,16,17,17,17,17,18,18,
-18,18,18,18,19,19,19,19,19,19,20,20,20,20,21,21,
-21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,
-22,22,22,22,22,21,21,21,21,21,21,21,20,20,20,19,
-19,19,19,19,19,19,18,18,18,18,18,17,17,17,17,16,
-16,16,16,15,14,14,14,13,13,13,13,12,12,12,12,10,
-10,10,9,9,9,8,8,8,7,7,7,7,6,6,6,4,
-4,4,0,0,0,1,1,1,2,2,2,3,24,24,24,25,
-25,25,26,26,26,27,27,27,27,29,29,28,28,30,30,30,
-30,31,31,31,31,32,32,32,32,32,33,33,33,33,35,35,
-34,34,34,34,34,34,34,34,34,36,36,36,36,36,36,36,
-36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,
-34,34,34,34,34,34,34,34,34,35,35,33,33,33,33,32,
-32,32,32,32,31,31,31,31,30,30,30,30,30,28,28,29,
-28,28,29,27,27,27,27,26,26,26,25,25,25,25,24,24,
-3,2,2,2,1,1,1,0,0,0,4,4,4,5,6,6,
-6,7,7,7,8,8,8,9,9,9,11,10,10,10,12,12,
-12,13,13,13,13,14,14,14,14,15,16,16,16,17,17,17,
-17,17,18,18,18,18,18,19,19,19,19,19,19,20,20,20,
-20,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,
-22,22,22,22,22,22,22,21,21,21,21,21,21,21,20,20,
-20,20,19,19,19,19,19,19,18,18,18,18,18,18,17,17,
-17,17,16,16,16,15,14,14,14,14,13,13,13,13,12,12,
-12,10,10,10,10,9,9,9,8,8,8,7,7,7,7,6,
-6,6,4,4,4,0,0,0,1,1,1,2,2,2,3,24,
-24,24,25,25,25,26,26,26,27,27,27,27,29,29,28,28,
-30,30,30,30,31,31,31,31,32,32,32,32,32,33,33,33,
-33,35,35,35,34,34,34,34,34,34,34,34,36,36,36,36,
-36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,
-36,36,36,34,34,34,34,34,34,34,34,34,35,35,33,33,
-33,33,32,32,32,32,32,31,31,31,31,30,30,30,30,28,
-30,30,28,28,28,29,27,27,27,27,26,26,26,25,25,25,
-25,24,24,3,2,2,2,1,1,1,0,0,0,4,4,4,
-6,6,6,6,7,7,7,8,8,8,9,9,9,11,10,10,
-10,12,12,12,13,13,13,13,14,14,14,14,15,16,16,16,
-17,17,17,17,18,18,18,18,18,18,19,19,19,19,19,19,
-20,20,20,20,21,21,21,21,21,21,21,22,22,22,22,22,
-22,22,22,22,22,22,22,22,22,22,21,21,21,21,21,21,
-21,20,20,20,20,19,19,19,19,19,19,18,18,18,18,18,
-18,17,17,17,17,16,16,16,15,14,14,14,14,13,13,13,
-13,12,12,12,10,10,10,10,9,9,9,8,8,8,7,7,
-7,6,6,6,6,4,4,4,0,0,0,1,1,1,2,2,
-2,3,24,24,25,25,25,25,26,26,26,27,27,27,27,29,
-29,28,28,30,30,30,30,31,31,31,31,32,32,32,32,32,
-33,33,33,33,35,35,34,34,34,34,34,34,34,34,34,36,
-36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,
-36,36,36,36,36,36,34,34,34,34,34,34,34,34,34,35,
-35,33,33,33,33,32,32,32,32,32,31,31,31,31,30,30,
-31,30,30,30,30,28,28,29,29,27,27,27,27,26,26,26,
-25,25,25,24,24,24,3,2,2,2,1,1,1,0,0,0,
-4,4,4,6,6,6,6,7,7,7,8,8,8,9,9,9,
-10,10,10,10,12,12,12,13,13,13,13,14,14,14,14,16,
-16,16,16,17,17,17,17,18,18,18,18,18,18,19,19,19,
-19,19,19,20,20,20,20,21,21,21,21,21,21,21,22,22,
-22,22,22,22,22,22,22,22,22,22,22,22,22,21,21,21,
-21,21,21,21,20,20,20,20,19,19,19,19,19,19,18,18,
-18,18,18,18,17,17,17,17,16,16,16,15,14,14,14,14,
-13,13,13,13,12,12,12,10,10,10,11,9,9,9,8,8,
-8,7,7,7,6,6,6,5,4,4,4,0,0,0,1,1,
-1,2,2,2,3,24,24,25,25,25,25,26,26,26,27,27,
-27,27,29,28,28,28,30,30,30,30,31,31,31,31,32,32,
-32,32,32,33,33,33,33,35,35,34,34,34,34,34,34,34,
-34,34,36,36,36,36,36,36,36,36,36,36,36,36,36,36,
-36,36,36,36,36,36,36,36,36,34,34,34,34,34,34,34,
-34,34,35,35,33,33,33,33,32,32,32,32,32,31,31,31,
-31,31,31,31,30,30,30,30,28,28,29,29,27,27,27,27,
-26,26,26,25,25,25,24,24,24,3,2,2,2,1,1,1,
-0,0,0,4,4,4,6,6,6,7,7,7,8,8,8,8,
-9,9,9,10,10,10,12,12,12,12,13,13,13,14,14,14,
-14,15,16,16,16,17,17,17,17,17,18,18,18,18,18,19,
-19,19,19,19,19,19,20,20,20,21,21,21,21,21,21,21,
-22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,
-22,21,21,21,21,21,21,20,20,20,20,19,19,19,19,19,
-19,18,18,18,18,18,18,17,17,17,17,16,16,16,15,14,
-14,14,14,13,13,13,13,12,12,12,10,10,10,11,9,9,
-9,8,8,8,7,7,7,6,6,6,5,4,4,0,0,0,
-0,1,1,1,2,2,2,3,24,24,25,25,25,26,26,26,
-26,27,27,27,29,29,28,28,30,30,30,30,31,31,31,31,
-31,32,32,32,32,32,33,33,33,35,35,35,34,34,34,34,
-34,34,34,34,36,36,36,36,36,36,36,36,36,36,36,36,
-36,36,36,36,36,36,36,36,36,36,36,36,34,34,34,34,
-34,34,34,34,34,35,35,33,33,33,33,32,32,32,32,32,
-32,32,32,31,31,31,31,30,30,30,30,28,28,29,29,27,
-27,27,26,26,26,26,25,25,25,24,24,24,2,2,2,2,
-1,1,1,0,0,0,4,4,4,6,6,6,7,7,7,8,
-8,8,9,9,9,9,10,10,10,12,12,12,13,13,13,13,
-14,14,14,14,15,16,16,16,17,17,17,17,17,18,18,18,
-18,18,19,19,19,19,19,19,20,20,20,21,21,21,21,21,
-21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,
-22,22,22,22,21,21,21,21,21,21,21,20,20,20,19,19,
-19,19,19,19,18,18,18,18,18,17,17,17,17,17,16,16,
-16,15,14,14,14,14,13,13,13,13,12,12,12,10,10,10,
-9,9,9,9,8,8,8,7,7,7,6,6,6,4,4,4,
-0,0,0,1,1,1,2,2,2,2,24,24,24,25,25,25,
-26,26,26,26,27,27,27,29,29,28,28,30,30,30,30,31,
-31,31,31,32,32,32,32,32,33,33,33,33,35,35,34,34,
-34,34,34,34,34,34,34,36,36,36,36,36,36,36,36,36,
-36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,34,
-34,34,34,34,34,34,34,34,35,35,33,33,33,33,32,32,
-33,32,32,32,32,32,31,31,31,31,30,30,30,30,28,28,
-29,29,27,27,27,26,26,26,26,25,25,25,24,24,3,2,
-2,2,1,1,1,0,0,0,4,4,4,5,6,6,6,7,
-7,7,8,8,8,9,9,9,10,10,10,10,12,12,12,13,
-13,13,13,14,14,14,15,16,16,16,17,17,17,17,17,18,
-18,18,18,18,19,19,19,19,19,19,20,20,20,20,21,21,
-21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,
-22,22,22,22,22,22,22,22,21,21,21,21,21,21,20,20,
-20,19,19,19,19,19,19,18,18,18,18,18,17,17,17,17,
-17,16,16,16,15,14,14,14,14,13,13,13,12,12,12,12,
-10,10,10,9,9,9,8,8,8,7,7,7,7,6,6,6,
-4,4,4,0,0,0,1,1,1,2,2,2,3,24,24,25,
-25,25,25,26,26,26,27,27,27,27,29,28,28,30,30,30,
-30,31,31,31,31,31,32,32,32,32,32,33,33,33,35,35,
-35,34,34,34,34,34,34,34,34,36,36,36,36,36,36,36,
-36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,
-36,36,36,34,34,34,34,34,34,34,34,35,35,33,33,33,
-33,33,33,33,32,32,32,32,31,31,31,31,31,30,30,30,
-30,28,28,29,27,27,27,27,26,26,26,25,25,25,25,24,
-24,3,2,2,2,1,1,1,0,0,0,4,4,4,6,6,
-6,7,7,7,8,8,8,8,9,9,9,10,10,10,12,12,
-12,13,13,13,13,14,14,14,14,15,16,16,16,17,17,17,
-17,18,18,18,18,18,19,19,19,19,19,19,20,20,20,21,
-21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,
-22,22,22,22,22,22,22,22,22,22,22,21,21,21,21,21,
-21,20,20,20,19,19,19,19,19,19,18,18,18,18,18,17,
-17,17,17,17,16,16,16,15,14,14,14,13,13,13,13,12,
-12,12,10,10,10,10,9,9,9,8,8,8,7,7,7,6,
-6,6,5,4,4,0,0,0,1,1,1,1,2,2,2,3,
-24,24,25,25,25,26,26,26,26,27,27,27,29,29,28,28,
-30,30,30,30,31,31,31,31,32,32,32,32,32,33,33,33,
-35,35,35,34,34,34,34,34,34,34,36,36,36,36,36,36,
-36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,
-36,36,36,36,36,36,34,34,34,34,34,34,34,34,35,35,
-34,35,35,33,33,33,32,32,32,32,32,31,31,31,31,30,
-30,30,30,28,28,29,29,27,27,27,26,26,26,26,25,25,
-25,24,24,3,2,2,2,1,1,1,0,0,0,0,4,4,
-5,6,6,6,7,7,7,8,8,8,9,9,9,10,10,10,
-12,12,12,12,13,13,13,14,14,14,14,15,16,16,16,17,
-17,17,17,18,18,18,18,18,19,19,19,19,19,19,20,20,
-20,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,
-22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,21,
-21,21,21,21,20,20,20,19,19,19,19,19,19,18,18,18,
-18,18,17,17,17,17,16,16,16,15,14,14,14,14,13,13,
-13,13,12,12,12,10,10,10,9,9,9,8,8,8,8,7,
-7,7,6,6,6,4,4,4,0,0,0,1,1,1,2,2,
-2,3,24,24,25,25,25,25,26,26,26,27,27,27,29,29,
-28,28,30,30,30,30,31,31,31,31,32,32,32,32,32,33,
-33,33,35,35,35,34,34,34,34,34,34,34,36,36,36,36,
-36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,
-36,36,36,36,36,36,36,36,36,34,34,34,34,34,34,34,
-34,34,34,34,35,35,33,33,33,32,32,32,32,32,31,31,
-31,31,30,30,30,30,28,28,29,29,27,27,27,26,26,26,
-25,25,25,25,24,24,3,2,2,2,1,1,1,0,0,0,
-4,4,4,6,6,6,7,7,7,8,8,8,9,9,9,11,
-10,10,10,12,12,12,13,13,13,14,14,14,14,15,16,16,
-16,17,17,17,17,18,18,18,18,18,19,19,19,19,19,19,
-20,20,20,21,21,21,21,21,22,22,22,22,22,22,22,22,
-22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,
-22,22,21,21,21,21,21,20,20,20,19,19,19,19,19,19,
-18,18,18,18,18,17,17,17,17,16,16,16,15,14,14,14,
-14,13,13,13,12,12,12,12,10,10,10,9,9,9,8,8,
-8,7,7,7,6,6,6,4,4,4,0,0,0,1,1,1,
-2,2,2,3,24,24,24,25,25,25,26,26,26,27,27,27,
-27,29,28,28,30,30,30,30,31,31,31,31,32,32,32,32,
-32,33,33,33,35,35,35,34,34,34,34,34,34,34,36,36,
-36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,
-36,36,36,36,36,36,36,36,36,36,36,36,34,34,34,34,
-34,34,34,34,34,34,35,35,33,33,33,33,32,32,32,32,
-31,31,31,31,31,30,30,30,28,28,29,29,27,27,27,26,
-26,26,26,25,25,25,24,24,3,2,2,2,1,1,1,0,
-0,0,4,4,4,6,6,6,7,7,7,8,8,8,9,9,
-9,9,10,10,10,12,12,12,13,13,13,13,14,14,14,15,
-16,16,16,17,17,17,17,18,18,18,18,18,19,19,19,19,
-19,19,20,20,20,21,21,21,21,22,22,22,22,22,22,22,
-22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,
-22,22,22,22,22,21,21,21,21,21,20,20,20,19,19,19,
-19,19,18,18,18,18,18,17,17,17,17,17,16,16,15,14,
-14,14,14,13,13,13,13,12,12,12,10,10,10,9,9,9,
-8,8,8,7,7,7,6,6,6,5,4,4,0,0,0,1,
-1,1,1,2,2,2,24,24,24,25,25,25,26,26,26,27,
-27,27,27,29,28,28,30,30,30,30,31,31,31,31,32,32,
-32,32,32,33,33,33,35,35,34,34,34,34,34,34,34,36,
-36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,
-36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,34,
-36,36,34,34,34,34,34,34,34,35,35,33,33,33,32,32,
-32,32,32,31,31,31,31,30,30,30,30,28,28,29,27,27,
-27,27,26,26,26,25,25,25,24,24,3,2,2,2,1,1,
-1,0,0,0,4,4,4,6,6,6,7,7,7,8,8,8,
-9,9,9,9,10,10,10,12,12,12,13,13,13,14,14,14,
-14,15,16,16,16,17,17,17,17,18,18,18,18,18,19,19,
-19,19,19,20,20,20,21,21,21,21,21,22,22,22,22,22,
-22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,
-22,22,22,22,22,22,22,22,21,21,21,21,21,20,20,19,
-19,19,19,19,19,18,18,18,18,18,17,17,17,17,16,16,
-16,15,14,14,14,13,13,13,13,12,12,12,10,10,10,9,
-9,9,8,8,8,8,7,7,7,6,6,6,4,4,4,0,
-0,0,1,1,1,2,2,2,24,24,24,25,25,25,26,26,
-26,27,27,27,27,29,28,28,30,30,30,30,31,31,31,31,
-32,32,32,32,32,33,33,33,35,35,34,34,34,34,34,34,
-34,36,36,36,36,36,36,36,36,36,36,36,36,37,37,37,
-37,37,37,37,37,37,36,36,36,36,36,36,36,36,36,36,
-36,36,36,36,36,34,34,34,34,34,34,35,35,35,33,33,
-33,32,32,32,32,31,31,31,31,30,30,30,30,28,28,29,
-27,27,27,27,26,26,26,25,25,25,24,24,3,2,2,2,
-1,1,1,0,0,0,4,4,4,6,6,6,7,7,7,8,
-8,8,9,9,9,11,10,10,10,12,12,12,13,13,13,14,
-14,14,14,15,16,16,16,17,17,17,17,18,18,18,18,19,
-19,19,19,19,19,20,20,21,21,21,21,21,22,22,22,22,
-22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,
-22,22,22,22,22,22,22,22,22,22,22,21,21,21,21,20,
-20,20,19,19,19,19,19,18,18,18,18,18,17,17,17,17,
-16,16,16,15,14,14,14,14,13,13,13,12,12,12,10,10,
-10,9,9,9,9,8,8,8,7,7,7,6,6,6,4,4,
-4,0,0,0,1,1,1,2,2,2,24,24,24,25,25,25,
-26,26,26,27,27,27,29,29,28,28,30,30,30,30,31,31,
-31,31,32,32,32,32,33,33,33,35,35,34,34,34,34,34,
-34,34,36,36,36,36,36,36,36,36,36,36,36,37,37,37,
-37,37,37,37,37,37,37,37,37,37,36,36,36,36,36,36,
-36,36,36,36,36,36,36,36,34,34,34,34,34,34,35,35,
-33,33,33,32,32,32,32,31,31,31,31,30,30,30,30,28,
-28,29,27,27,27,27,26,26,26,25,25,25,24,24,3,2,
-2,2,1,1,1,0,0,0,4,4,4,6,6,6,7,7,
-7,8,8,8,9,9,9,10,10,10,12,12,12,12,13,13,
-13,14,14,14,14,16,16,16,17,17,17,17,18,18,18,18,
-18,19,19,19,19,19,20,20,20,21,21,21,21,22,22,22,
-22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,
-22,22,22,22,22,22,22,22,22,22,22,22,22,22,21,21,
-21,21,20,20,19,19,19,19,19,19,18,18,18,18,17,17,
-17,17,16,16,16,15,14,14,14,14,13,13,13,12,12,12,
-10,10,10,9,9,9,9,8,8,8,7,7,7,6,6,5,
-4,4,0,0,0,1,1,1,2,2,2,3,24,24,25,25,
-25,25,26,26,26,27,27,27,29,29,28,28,30,30,30,31,
-31,31,31,32,32,32,32,32,33,33,33,35,35,34,34,34,
-34,34,34,36,36,36,36,36,36,36,36,36,36,37,37,37,
-37,37,37,37,37,37,37,37,37,37,37,37,37,37,36,36,
-37,36,36,36,36,36,36,36,36,36,34,34,34,34,34,34,
-35,35,33,33,33,32,32,32,32,31,31,31,31,30,30,30,
-30,28,28,29,27,27,27,27,26,26,26,25,25,25,24,24,
-3,2,2,2,1,1,1,0,0,0,4,4,4,6,6,6,
-7,7,7,8,8,8,9,9,9,10,10,10,12,12,12,13,
-13,13,13,14,14,14,15,16,16,16,17,17,17,17,18,18,
-18,18,19,19,19,19,19,19,20,20,21,21,21,21,22,22,
-22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,
-23,23,23,23,23,22,22,22,22,22,22,22,22,22,22,22,
-21,21,21,21,20,20,20,19,19,19,19,19,18,18,18,18,
-17,17,17,17,16,16,16,15,14,14,14,14,13,13,13,12,
-12,12,10,10,10,9,9,9,8,8,8,7,7,7,6,6,
-6,5,4,4,0,0,0,1,1,1,2,2,2,3,24,24,
-25,25,25,26,26,26,27,27,27,27,29,28,28,30,30,30,
-30,31,31,31,31,32,32,32,32,33,33,33,35,35,34,34,
-34,34,34,34,36,36,36,36,36,36,36,36,36,37,37,37,
-37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,
-37,37,37,36,36,36,36,36,36,36,36,36,34,34,34,34,
-34,34,35,35,33,33,33,32,32,32,32,31,31,31,31,30,
-30,30,30,28,28,29,27,27,27,26,26,26,26,25,25,25,
-24,24,3,2,2,2,1,1,1,0,0,0,4,4,5,6,
-6,7,7,7,8,8,8,9,9,9,11,10,10,10,12,12,
-12,13,13,13,14,14,14,14,16,16,16,17,17,17,17,18,
-18,18,18,18,19,19,19,19,19,20,20,21,21,21,21,22,
-22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,
-23,23,23,23,23,23,23,23,22,22,22,22,22,22,22,22,
-22,22,21,21,21,21,20,20,20,19,19,19,19,19,18,18,
-18,18,17,17,17,17,16,16,16,15,14,14,14,13,13,13,
-13,12,12,12,10,10,10,9,9,9,8,8,8,7,7,7,
-6,6,6,4,4,4,0,0,0,1,1,1,2,2,2,24,
-24,24,25,25,25,26,26,26,27,27,27,29,29,28,28,30,
-30,30,31,31,31,31,32,32,32,32,32,33,33,33,35,34,
-34,34,34,34,34,36,36,36,36,36,36,36,36,36,37,37,
-37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,
-37,37,37,37,37,37,36,36,36,36,36,36,36,36,34,34,
-34,34,34,34,35,35,33,33,33,32,32,32,32,31,31,31,
-31,30,30,30,28,28,29,29,27,27,27,26,26,26,25,25,
-25,24,24,24,2,2,2,1,1,1,0,0,0,4,4,4,
-6,6,6,7,7,7,8,8,8,9,9,9,10,10,10,12,
-12,12,13,13,13,14,14,14,14,15,16,16,16,17,17,17,
-17,18,18,18,18,19,19,19,19,19,20,20,21,21,21,21,
-22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,
-23,23,23,23,23,23,23,23,23,23,23,22,22,22,22,22,
-22,22,22,22,21,21,21,21,20,20,19,19,19,19,19,18,
-18,18,18,18,17,17,17,17,16,16,16,15,14,14,14,13,
-13,13,12,12,12,10,10,10,11,9,9,9,8,8,8,7,
-7,6,6,6,5,4,4,0,0,0,1,1,1,2,2,2,
-3,24,24,25,25,25,26,26,26,27,27,27,27,29,28,28,
-30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,35,
-35,34,34,34,34,34,36,36,36,36,36,36,36,36,36,37,
-37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,
-37,37,37,37,37,37,37,37,36,36,36,36,36,36,36,36,
-34,34,34,34,34,35,35,33,33,33,32,32,32,32,31,31,
-31,31,30,30,30,30,28,28,29,27,27,27,27,26,26,26,
-25,25,25,24,24,3,2,2,2,1,1,1,0,0,0,4,
-4,6,6,6,7,7,7,8,8,8,9,9,9,10,10,10,
-12,12,12,13,13,13,13,14,14,14,15,16,16,16,17,17,
-17,17,18,18,18,18,19,19,19,19,19,20,20,21,21,21,
-21,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,
-23,23,23,23,23,23,23,23,23,23,23,23,23,22,22,22,
-22,22,22,22,22,22,21,21,21,21,20,20,19,19,19,19,
-19,18,18,18,18,17,17,17,17,16,16,16,15,14,14,14,
-13,13,13,13,12,12,12,10,10,10,9,9,9,8,8,8,
-7,7,7,6,6,6,4,4,4,0,0,0,1,1,1,2,
-2,3,24,24,25,25,25,25,26,26,26,27,27,27,29,28,
-28,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,
-35,35,34,34,34,34,34,36,36,36,36,36,36,36,36,37,
-37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,
-37,37,37,37,37,37,37,37,37,37,36,36,36,36,36,36,
-36,34,34,34,34,34,34,35,35,33,33,33,32,32,32,32,
-31,31,31,31,30,30,30,28,28,29,29,27,27,27,26,26,
-26,25,25,25,24,24,3,2,2,2,1,1,1,0,0,0,
-4,4,5,6,6,6,7,7,8,8,8,9,9,9,11,10,
-10,10,12,12,12,13,13,13,14,14,14,15,16,16,16,17,
-17,17,17,18,18,18,18,19,19,19,19,19,20,20,21,21,
-21,21,22,22,22,22,22,22,22,22,22,23,23,23,23,23,
-23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,22,
-22,22,22,22,22,22,22,22,21,21,21,20,20,20,19,19,
-19,19,19,18,18,18,18,17,17,17,17,16,16,16,14,14,
-14,14,13,13,13,12,12,12,10,10,10,9,9,9,8,8,
-8,7,7,7,6,6,6,4,4,4,0,0,0,1,1,1,
-2,2,2,3,24,24,25,25,25,26,26,26,27,27,27,29,
-29,28,30,30,30,30,31,31,31,31,32,32,32,32,33,33,
-33,35,35,34,34,34,34,34,36,36,36,36,36,36,36,36,
-37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,
-37,37,37,37,37,37,37,37,37,37,37,36,36,36,36,36,
-36,36,36,34,34,34,34,34,35,35,33,33,33,32,32,32,
-32,31,31,31,31,30,30,30,30,28,29,29,27,27,27,26,
-26,26,25,25,25,24,24,3,2,2,2,1,1,1,0,0,
-0,4,4,4,6,6,6,7,7,7,8,8,8,9,9,9,
-10,10,10,12,12,12,13,13,13,14,14,14,15,16,16,16,
-17,17,17,17,18,18,18,18,19,19,19,19,19,20,20,21,
-21,21,21,22,22,22,22,22,22,22,22,22,23,23,23,23,
-23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
-22,22,22,22,22,22,22,22,22,21,21,21,21,20,20,19,
-19,19,19,19,18,18,18,18,17,17,17,17,16,16,16,15,
-14,14,14,13,13,13,12,12,12,10,10,10,11,9,9,9,
-8,8,7,7,7,6,6,6,5,4,4,0,0,0,1,1,
-1,2,2,2,3,24,24,25,25,25,26,26,26,27,27,27,
-29,29,28,28,30,30,30,31,31,31,31,32,32,32,32,33,
-33,33,35,35,34,34,34,34,34,36,36,36,36,36,36,36,
-36,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,
-37,37,37,37,37,37,37,37,37,37,37,37,36,36,36,36,
-36,36,36,36,34,34,34,34,34,35,35,33,33,33,32,32,
-32,32,31,31,31,31,30,30,30,30,28,29,29,27,27,27,
-26,26,26,25,25,25,24,24,3,2,2,2,1,1,1,0,
-0,0,4,4,4,6,6,6,7,7,7,8,8,8,9,9,
-9,10,10,10,12,12,12,13,13,13,14,14,14,15,16,16,
-16,17,17,17,17,18,18,18,18,19,19,19,19,19,20,20,
-21,21,21,21,22,22,22,22,22,22,22,22,23,23,23,23,
-23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
-23,23,22,22,22,22,22,22,22,22,21,21,21,21,20,20,
-19,19,19,19,19,18,18,18,18,17,17,17,17,16,16,16,
-15,14,14,14,13,13,13,12,12,12,12,10,10,11,9,9,
-9,8,8,7,7,7,6,6,6,5,4,4,0,0,0,1,
-1,1,2,2,2,3,24,24,25,25,25,26,26,26,27,27,
-27,29,29,28,28,30,30,30,31,31,31,31,32,32,32,32,
-33,33,33,35,35,34,34,34,34,34,36,36,36,36,36,36,
-36,36,37,37,37,37,37,37,37,37,37,37,37,37,37,37,
-37,37,37,37,37,37,37,37,37,37,37,37,37,37,36,36,
-36,36,36,36,36,34,34,34,34,34,35,35,33,33,33,32,
-32,32,32,31,31,31,31,30,30,30,30,28,29,29,27,27,
-27,26,26,26,25,25,25,24,24,3,2,2,2,1,1,1,
-0,0,0,4,4,5,6,6,6,7,7,7,8,8,9,9,
-9,11,10,10,12,12,12,12,13,13,13,14,14,14,15,16,
-16,16,17,17,17,17,18,18,18,18,19,19,19,19,19,20,
-20,21,21,21,21,22,22,22,22,22,22,22,22,23,23,23,
-23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
-23,23,23,22,22,22,22,22,22,22,22,21,21,21,21,20,
-20,19,19,19,19,19,18,18,18,18,17,17,17,17,16,16,
-16,15,14,14,14,13,13,13,12,12,12,10,10,10,11,9,
-9,8,8,8,7,7,7,6,6,6,4,4,4,0,0,0,
-1,1,1,2,2,2,3,24,24,25,25,25,26,26,26,27,
-27,27,29,29,28,30,30,30,30,31,31,31,31,32,32,32,
-32,33,33,33,35,35,34,34,34,34,34,36,36,36,36,36,
-36,36,37,37,37,37,37,37,37,37,37,37,37,37,37,37,
-37,37,37,37,37,37,37,37,37,37,37,37,37,37,36,36,
-36,36,36,36,36,36,34,34,34,34,34,35,35,33,33,33,
-32,32,32,32,31,31,31,31,30,30,30,28,28,29,29,27,
-27,27,26,26,26,25,25,25,24,24,3,2,2,2,1,1,
-1,0,0,0,4,4,5,6,6,7,7,7,8,8,8,9,
-9,9,10,10,10,12,12,12,13,13,13,13,14,14,14,15,
-16,16,16,17,17,17,18,18,18,18,18,19,19,19,19,19,
-20,20,21,21,21,22,22,22,22,22,22,22,22,22,23,23,
-23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
-23,23,23,23,22,22,22,22,22,22,22,22,21,21,21,21,
-20,20,19,19,19,19,19,18,18,18,18,17,17,17,17,16,
-16,16,14,14,14,14,13,13,13,12,12,12,10,10,10,9,
-9,9,8,8,8,7,7,7,6,6,6,4,4,4,0,0,
-0,1,1,1,2,2,2,24,24,25,25,25,25,26,26,26,
-27,27,27,29,28,28,30,30,30,30,31,31,31,32,32,32,
-32,32,33,33,35,35,34,34,34,34,34,34,36,36,36,36,
-36,36,36,37,37,37,37,37,37,37,37,37,37,37,37,37,
-37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,36,
-36,36,36,36,36,36,34,34,34,34,34,34,35,35,33,33,
-33,32,32,32,32,31,31,31,31,30,30,30,28,28,29,27,
-27,27,27,26,26,26,25,25,25,24,24,3,2,2,2,1,
-1,1,0,0,4,4,4,6,6,6,7,7,7,8,8,8,
-9,9,9,10,10,10,12,12,12,13,13,13,14,14,14,14,
-15,16,16,17,17,17,17,18,18,18,18,19,19,19,19,19,
-20,20,21,21,21,21,22,22,22,22,22,22,22,22,23,23,
-23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
-23,23,23,23,23,22,22,22,22,22,22,22,22,21,21,21,
-20,20,20,19,19,19,19,19,18,18,18,18,17,17,17,17,
-16,16,15,14,14,14,14,13,13,13,12,12,12,10,10,10,
-9,9,9,8,8,8,7,7,7,6,6,6,4,4,4,0,
-0,1,1,1,2,2,2,3,24,24,25,25,25,26,26,26,
-27,27,27,27,29,28,28,30,30,30,31,31,31,31,32,32,
-32,32,33,33,33,35,35,34,34,34,34,34,36,36,36,36,
-36,36,36,36,37,37,37,37,37,37,37,37,37,37,37,37,
-37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,
-36,36,36,36,36,36,36,34,34,34,34,34,34,35,33,33,
-33,32,32,32,32,31,31,31,31,30,30,30,30,28,29,29,
-27,27,27,26,26,26,25,25,25,24,24,3,2,2,2,1,
-1,1,0,0,0,4,4,4,6,6,6,7,7,7,8,8,
-8,9,9,9,10,10,10,12,12,12,13,13,13,14,14,14,
-15,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,
-19,20,20,21,21,21,21,22,22,22,22,22,22,22,22,23,
-23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
-23,23,23,23,23,22,22,22,22,22,22,22,22,21,21,21,
-21,20,20,19,19,19,19,19,18,18,18,18,17,17,17,17,
-16,16,16,15,14,14,14,13,13,13,12,12,12,12,10,10,
-11,9,9,9,8,8,7,7,7,6,6,6,5,4,4,0,
-0,0,1,1,1,2,2,2,3,24,24,25,25,25,26,26,
-26,27,27,27,29,29,28,30,30,30,30,31,31,31,31,32,
-32,32,32,33,33,33,35,35,34,34,34,34,34,36,36,36,
-36,36,36,36,37,37,37,37,37,37,37,37,37,37,37,37,
-37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,
-36,36,36,36,36,36,36,34,34,34,34,34,34,35,35,33,
-33,33,32,32,32,32,31,31,31,31,30,30,30,28,28,29,
-27,27,27,27,26,26,26,25,25,25,24,24,3,2,2,2,
-1,1,1,0,0,4,4,4,6,6,6,7,7,7,8,8,
-8,9,9,9,10,10,10,12,12,12,13,13,13,14,14,14,
-14,15,16,16,17,17,17,17,18,18,18,18,18,19,19,19,
-19,20,20,20,21,21,21,22,22,22,22,22,22,22,22,22,
-23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
-23,23,23,23,23,22,22,22,22,22,22,22,22,22,21,21,
-21,20,20,20,19,19,19,19,18,18,18,18,18,17,17,17,
-17,16,16,15,14,14,14,14,13,13,13,12,12,12,10,10,
-10,9,9,9,8,8,8,7,7,7,6,6,6,4,4,4,
-0,0,1,1,1,2,2,2,3,24,24,25,25,25,26,26,
-26,27,27,27,27,29,28,28,30,30,30,30,31,31,31,32,
-32,32,32,33,33,33,35,35,34,34,34,34,34,34,36,36,
-36,36,36,36,36,37,37,37,37,37,37,37,37,37,37,37,
-37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,
-36,36,36,36,36,36,36,36,34,34,34,34,34,35,35,33,
-33,33,32,32,32,32,31,31,31,31,30,30,30,28,28,29,
-29,27,27,27,26,26,26,25,25,25,24,24,3,2,2,2,
-1,1,1,0,0,0,4,4,5,6,6,6,7,7,8,8,
-8,9,9,9,11,10,10,12,12,12,12,13,13,13,14,14,
-14,15,16,16,16,17,17,17,17,18,18,18,18,19,19,19,
-19,19,20,20,21,21,21,21,22,22,22,22,22,22,22,22,
-23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
-23,23,23,23,23,23,22,22,22,22,22,22,22,22,21,21,
-21,21,20,20,19,19,19,19,19,18,18,18,18,17,17,17,
-17,16,16,16,15,14,14,14,13,13,13,12,12,12,10,10,
-10,9,9,9,8,8,8,7,7,7,6,6,6,4,4,4,
-0,0,0,1,1,1,2,2,2,24,24,24,25,25,25,26,
-26,26,27,27,27,29,29,28,30,30,30,30,31,31,31,31,
-32,32,32,32,33,33,33,35,35,34,34,34,34,34,36,36,
-36,36,36,36,36,36,37,37,37,37,37,37,37,37,37,37,
-37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,
-36,36,36,36,36,36,36,36,34,34,34,34,34,35,35,33,
-33,33,32,32,32,32,31,31,31,31,30,30,30,30,28,28,
-29,27,27,27,26,26,26,25,25,25,24,24,24,2,2,2,
-1,1,1,0,0,0,4,4,4,6,6,6,7,7,7,8,
-8,8,9,9,9,10,10,10,12,12,12,13,13,13,14,14,
-14,14,16,16,16,17,17,17,17,18,18,18,18,19,19,19,
-19,19,20,20,21,21,21,21,22,22,22,22,22,22,22,22,
-22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
-23,23,23,23,23,23,22,22,22,22,22,22,22,22,21,21,
-21,21,20,20,19,19,19,19,19,18,18,18,18,17,17,17,
-17,16,16,16,15,14,14,14,13,13,13,12,12,12,12,10,
-10,11,9,9,9,8,8,8,7,7,7,6,6,5,4,4,
-0,0,0,1,1,1,2,2,2,3,24,24,25,25,25,26,
-26,26,27,27,27,29,29,28,28,30,30,30,31,31,31,31,
-32,32,32,32,33,33,33,35,35,34,34,34,34,34,34,36,
-36,36,36,36,36,36,37,37,37,37,37,37,37,37,37,37,
-37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,
-36,36,36,36,36,36,36,36,34,34,34,34,34,34,35,33,
-33,33,32,32,32,32,31,31,31,31,30,30,30,30,28,28,
-29,27,27,27,26,26,26,26,25,25,25,24,24,3,2,2,
-2,1,1,0,0,0,4,4,4,6,6,6,7,7,7,8,
-8,8,9,9,9,10,10,10,12,12,12,13,13,13,14,14,
-14,14,15,16,16,17,17,17,17,18,18,18,18,18,19,19,
-19,19,19,20,20,21,21,21,22,22,22,22,22,22,22,22,
-22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
-23,23,23,23,23,23,22,22,22,22,22,22,22,22,21,21,
-21,21,20,20,19,19,19,19,19,18,18,18,18,17,17,17,
-17,16,16,16,15,14,14,14,13,13,13,13,12,12,12,10,
-10,10,9,9,9,8,8,8,7,7,7,6,6,6,4,4,
-0,0,0,1,1,1,2,2,2,3,24,24,25,25,25,26,
-26,26,27,27,27,27,29,28,28,30,30,30,30,31,31,31,
-32,32,32,32,32,33,33,35,35,34,34,34,34,34,34,36,
-36,36,36,36,36,36,37,37,37,37,37,37,37,37,37,37,
-37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,
-36,36,36,36,36,36,36,36,34,34,34,34,34,34,35,33,
-33,33,32,32,32,32,31,31,31,31,30,30,30,30,28,28,
-29,27,27,27,27,26,26,26,25,25,25,24,24,3,2,2,
-2,1,1,1,0,0,4,4,4,6,6,6,7,7,7,8,
-8,8,9,9,9,10,10,10,12,12,12,13,13,13,13,14,
-14,14,15,16,16,16,17,17,17,17,18,18,18,18,19,19,
-19,19,19,20,20,21,21,21,21,22,22,22,22,22,22,22,
-22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
-23,23,23,23,23,22,22,22,22,22,22,22,22,22,21,21,
-21,21,20,20,19,19,19,19,19,18,18,18,18,17,17,17,
-17,16,16,16,15,14,14,14,13,13,13,13,12,12,12,10,
-10,10,9,9,9,8,8,8,7,7,7,6,6,6,4,4,
-4,0,0,1,1,1,2,2,2,3,24,24,25,25,25,26,
-26,26,27,27,27,27,29,28,28,30,30,30,30,31,31,31,
-31,32,32,32,32,33,33,33,35,34,34,34,34,34,34,36,
-36,36,36,36,36,36,36,37,37,37,37,37,37,37,37,37,
-37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,
-36,36,36,36,36,36,36,36,34,34,34,34,34,35,35,33,
-33,33,32,32,32,32,31,31,31,31,30,30,30,30,28,28,
-29,27,27,27,27,26,26,26,25,25,25,24,24,3,2,2,
-2,1,1,1,0,0,4,4,4,6,6,6,7,7,7,8,
-8,8,9,9,9,10,10,10,12,12,12,13,13,13,13,14,
-14,14,15,16,16,16,17,17,17,17,18,18,18,18,19,19,
-19,19,19,20,20,21,21,21,21,22,22,22,22,22,22,22,
-22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
-23,23,23,23,23,22,22,22,22,22,22,22,22,22,21,21,
-21,21,20,20,19,19,19,19,19,18,18,18,18,17,17,17,
-17,16,16,16,15,14,14,14,13,13,13,13,12,12,12,10,
-10,10,9,9,9,8,8,8,7,7,7,6,6,6,4,4,
-4,0,0,0,1,1,2,2,2,3,24,24,25,25,25,26,
-26,26,26,27,27,27,29,28,28,30,30,30,30,31,31,31,
-31,32,32,32,32,33,33,33,35,35,34,34,34,34,34,36,
-36,36,36,36,36,36,36,37,37,37,37,37,37,37,37,37,
-37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,
-36,36,36,36,36,36,36,36,34,34,34,34,34,35,35,33,
-33,33,32,32,32,32,31,31,31,31,30,30,30,30,28,28,
-29,27,27,27,26,26,26,26,25,25,25,24,24,3,2,2,
-2,1,1,1,0,0,4,4,4,6,6,6,7,7,7,8,
-8,8,9,9,9,10,10,10,12,12,12,13,13,13,13,14,
-14,14,15,16,16,16,17,17,17,17,18,18,18,18,19,19,
-19,19,19,20,20,21,21,21,21,22,22,22,22,22,22,22,
-22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
-23,23,23,23,23,22,22,22,22,22,22,22,22,22,21,21,
-21,21,20,20,19,19,19,19,19,18,18,18,18,17,17,17,
-17,16,16,16,15,14,14,14,13,13,13,13,12,12,12,10,
-10,10,9,9,9,8,8,8,7,7,7,6,6,6,4,4,
-4,0,0,1,1,1,2,2,2,3,24,24,25,25,25,26,
-26,26,26,27,27,27,29,28,28,30,30,30,30,31,31,31,
-31,32,32,32,32,33,33,33,35,35,34,34,34,34,34,36,
-36,36,36,36,36,36,36,37,37,37,37,37,37,37,37,37,
-37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,36,
-36,36,36,36,36,36,36,34,34,34,34,34,34,35,35,33,
-33,33,32,32,32,32,31,31,31,31,30,30,30,30,28,28,
-29,27,27,27,26,26,26,25,25,25,25,24,24,3,2,2,
-2,1,1,0,0,0,4,4,4,6,6,6,7,7,7,8,
-8,8,9,9,9,10,10,10,12,12,12,13,13,13,13,14,
-14,14,15,16,16,16,17,17,17,17,18,18,18,18,19,19,
-19,19,19,20,20,21,21,21,21,22,22,22,22,22,22,22,
-22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
-23,23,23,23,22,22,22,22,22,22,22,22,22,22,21,21,
-21,21,20,20,19,19,19,19,19,18,18,18,18,17,17,17,
-17,16,16,16,15,14,14,14,13,13,13,13,12,12,12,10,
-10,10,9,9,9,8,8,8,7,7,7,6,6,6,4,4,
-0,0,0,1,1,1,2,2,2,3,24,24,25,25,25,26,
-26,26,27,27,27,27,29,28,28,30,30,30,30,31,31,31,
-31,32,32,32,32,33,33,33,35,35,34,34,34,34,34,36,
-36,36,36,36,36,36,36,37,37,37,37,37,37,37,37,37,
-37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,36,
-36,36,36,36,36,36,36,34,34,34,34,34,34,35,35,33,
-33,33,32,32,32,32,31,31,31,31,30,30,30,30,28,29,
-29,27,27,27,26,26,26,25,25,25,24,24,24,2,2,2,
-1,1,1,0,0,0,4,4,4,6,6,6,7,7,7,8,
-8,8,9,9,9,10,10,10,12,12,12,13,13,13,14,14,
-14,14,15,16,16,16,17,17,17,17,18,18,18,18,19,19,
-19,19,19,20,20,21,21,21,21,22,22,22,22,22,22,22,
-22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
-23,23,23,23,22,22,22,22,22,22,22,22,22,22,21,21,
-21,20,20,20,19,19,19,19,19,18,18,18,18,17,17,17,
-17,16,16,16,15,14,14,14,13,13,13,12,12,12,12,10,
-10,11,9,9,9,8,8,8,7,7,7,6,6,5,4,4,
-0,0,0,1,1,1,2,2,2,3,24,24,25,25,25,26,
-26,26,27,27,27,27,29,28,28,30,30,30,30,31,31,31,
-32,32,32,32,32,33,33,33,35,35,34,34,34,34,34,36,
-36,36,36,36,36,36,36,37,37,37,37,37,37,37,37,37,
-37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,36,
-36,36,36,36,36,36,36,34,34,34,34,34,34,35,35,33,
-33,33,32,32,32,32,31,31,31,31,30,30,30,28,28,29,
-29,27,27,27,26,26,26,25,25,25,24,24,3,2,2,2,
-1,1,1,0,0,0,4,4,4,6,6,6,7,7,7,8,
-8,8,9,9,9,10,10,10,12,12,12,13,13,13,14,14,
-14,14,15,16,16,17,17,17,17,18,18,18,18,18,19,19,
-19,19,19,20,20,21,21,21,21,22,22,22,22,22,22,22,
-22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
-23,23,23,23,22,22,22,22,22,22,22,22,22,21,21,21,
-21,20,20,20,19,19,19,19,18,18,18,18,18,17,17,17,
-17,16,16,16,14,14,14,14,13,13,13,12,12,12,10,10,
-10,9,9,9,8,8,8,7,7,7,6,6,6,5,4,4,
-0,0,0,1,1,1,2,2,2,3,24,24,25,25,25,26,
-26,26,27,27,27,29,29,28,28,30,30,30,31,31,31,31,
-32,32,32,32,32,33,33,35,35,34,34,34,34,34,34,36,
-36,36,36,36,36,36,36,37,37,37,37,37,37,37,37,37,
-37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,36,
-36,36,36,36,36,36,36,34,34,34,34,34,34,35,35,33,
-33,32,32,32,32,32,31,31,31,31,30,30,30,28,28,29,
-29,27,27,27,26,26,26,25,25,25,24,24,3,2,2,2,
-1,1,1,0,0,0,4,4,5,6,6,6,7,7,7,8,
-8,9,9,9,11,10,10,10,12,12,12,13,13,13,14,14,
-14,14,16,16,16,17,17,17,17,18,18,18,18,19,19,19,
-19,19,20,20,20,21,21,21,21,22,22,22,22,22,22,22,
-22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
-23,23,23,23,22,22,22,22,22,22,22,22,22,21,21,21,
-21,20,20,19,19,19,19,19,18,18,18,18,18,17,17,17,
-17,16,16,15,14,14,14,14,13,13,13,12,12,12,10,10,
-10,9,9,9,8,8,8,7,7,7,6,6,6,4,4,4,
-0,0,0,1,1,1,2,2,2,3,24,24,25,25,25,26,
-26,26,27,27,27,29,29,28,28,30,30,30,31,31,31,31,
-32,32,32,32,33,33,33,35,35,34,34,34,34,34,34,36,
-36,36,36,36,36,36,36,37,37,37,37,37,37,37,37,37,
-37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,36,
-36,36,36,36,36,36,36,34,34,34,34,34,35,35,33,33,
-33,32,32,32,32,31,31,31,31,30,30,30,30,28,28,29,
-27,27,27,27,26,26,26,25,25,25,24,24,3,2,2,2,
-1,1,1,0,0,0,4,4,6,6,6,7,7,7,8,8,
-8,9,9,9,10,10,10,12,12,12,12,13,13,13,14,14,
-14,15,16,16,16,17,17,17,17,18,18,18,18,19,19,19,
-19,19,20,20,20,21,21,21,22,22,22,22,22,22,22,22,
-22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
-23,23,23,23,22,22,22,22,22,22,22,22,22,21,21,21,
-21,20,20,19,19,19,19,19,18,18,18,18,17,17,17,17,
-16,16,16,15,14,14,14,13,13,13,13,12,12,12,10,10,
-10,9,9,9,8,8,8,7,7,7,6,6,6,4,4,4,
-0,0,0,1,1,1,2,2,2,24,24,25,25,25,25,26,
-26,26,27,27,27,29,28,28,30,30,30,30,31,31,31,31,
-32,32,32,32,33,33,33,35,35,34,34,34,34,34,34,36,
-36,36,36,36,36,36,36,37,37,37,37,37,37,37,37,37,
-37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,36,
-36,36,36,36,36,36,36,34,34,34,34,34,35,35,33,33,
-33,32,32,32,32,31,31,31,31,30,30,30,30,28,28,29,
-27,27,27,26,26,26,26,25,25,25,24,24,3,2,2,2,
-1,1,0,0,0,4,4,4,6,6,6,7,7,7,8,8,
-8,9,9,9,10,10,10,12,12,12,13,13,13,13,14,14,
-14,15,16,16,16,17,17,17,17,18,18,18,18,19,19,19,
-19,19,20,20,21,21,21,21,22,22,22,22,22,22,22,22,
-22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
-23,23,23,23,22,22,22,22,22,22,22,22,22,21,21,21,
-21,20,20,19,19,19,19,19,18,18,18,18,17,17,17,17,
-16,16,16,15,14,14,14,13,13,13,13,12,12,12,10,10,
-10,9,9,9,8,8,8,7,7,7,6,6,6,4,4,0,
-0,0,1,1,1,2,2,2,3,24,24,25,25,25,26,26,
-26,27,27,27,27,29,28,28,30,30,30,30,31,31,31,31,
-32,32,32,32,33,33,33,35,35,34,34,34,34,34,36,36,
-36,36,36,36,36,36,37,37,37,37,37,37,37,37,37,37,
-37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,36,
-36,36,36,36,36,36,34,34,34,34,34,34,35,35,33,33,
-33,32,32,32,32,31,31,31,31,30,30,30,28,28,29,29,
-27,27,27,26,26,26,25,25,25,24,24,24,2,2,2,1,
-1,1,0,0,0,4,4,4,6,6,6,7,7,7,8,8,
-8,9,9,9,10,10,10,12,12,12,13,13,13,14,14,14,
-14,15,16,16,17,17,17,17,18,18,18,18,18,19,19,19,
-19,19,20,20,21,21,21,21,22,22,22,22,22,22,22,22,
-22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
-23,23,23,23,22,22,22,22,22,22,22,22,22,21,21,21,
-20,20,20,19,19,19,19,19,18,18,18,18,17,17,17,17,
-16,16,16,15,14,14,14,13,13,13,12,12,12,12,10,10,
-11,9,9,9,8,8,8,7,7,6,6,6,5,4,4,0,
-0,0,1,1,1,2,2,2,3,24,24,25,25,25,26,26,
-26,27,27,27,29,29,28,28,30,30,30,31,31,31,31,32,
-32,32,32,33,33,33,35,35,34,34,34,34,34,34,36,36,
-36,36,36,36,36,36,37,37,37,37,37,37,37,37,37,37,
-37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,36,
-36,36,36,36,36,36,34,34,34,34,34,34,35,35,33,33,
-33,32,32,32,32,31,31,31,31,30,30,30,28,28,29,29,
-27,27,27,26,26,26,25,25,25,24,24,3,2,2,2,1,
-1,1,0,0,0,4,4,5,6,6,6,7,7,7,8,8,
-9,9,9,11,10,10,10,12,12,12,13,13,13,14,14,14,
-15,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,
-19,20,20,21,21,21,21,22,22,22,22,22,22,22,22,22,
-23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
-23,23,23,23,22,22,22,22,22,22,22,22,22,21,21,21,
-20,20,20,19,19,19,19,19,18,18,18,18,17,17,17,17,
-16,16,16,14,14,14,14,13,13,13,12,12,12,10,10,10,
-9,9,9,8,8,8,7,7,7,6,6,6,4,4,4,0,
-0,0,1,1,1,2,2,2,3,24,24,25,25,25,26,26,
-26,27,27,27,29,29,28,28,30,30,30,31,31,31,31,32,
-32,32,32,33,33,33,35,35,34,34,34,34,34,34,36,36,
-36,36,36,36,36,37,37,37,37,37,37,37,37,37,37,37,
-37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,36,
-36,36,36,36,36,36,34,34,34,34,34,34,35,35,33,33,
-33,32,32,32,32,31,31,31,31,30,30,30,28,28,29,29,
-27,27,27,26,26,26,25,25,25,24,24,3,2,2,2,1,
-1,1,0,0,0,4,4,5,6,6,7,7,7,8,8,8,
-9,9,9,10,10,10,12,12,12,13,13,13,13,14,14,14,
-15,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,
-19,20,20,21,21,21,21,22,22,22,22,22,22,22,22,22,
-23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
-23,23,23,23,22,22,22,22,22,22,22,22,22,21,21,21,
-20,20,20,19,19,19,19,18,18,18,18,18,17,17,17,17,
-16,16,15,14,14,14,14,13,13,13,12,12,12,10,10,10,
-9,9,9,8,8,8,7,7,7,6,6,6,4,4,4,0,
-0,0,1,1,1,2,2,2,24,24,24,25,25,25,26,26,
-26,27,27,27,29,28,28,30,30,30,30,31,31,31,31,32,
-32,32,32,33,33,33,35,35,34,34,34,34,34,36,36,36,
-36,36,36,36,36,37,37,37,37,37,37,37,37,37,37,37,
-37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,36,
-36,36,36,36,36,36,34,34,34,34,34,34,35,35,33,33,
-32,32,32,32,32,31,31,31,30,30,30,30,28,28,29,27,
-27,27,27,26,26,26,25,25,25,24,24,3,2,2,2,1,
-1,1,0,0,4,4,4,6,6,6,7,7,7,8,8,8,
-9,9,9,10,10,10,12,12,12,13,13,13,13,14,14,14,
-15,16,16,16,17,17,17,18,18,18,18,18,19,19,19,19,
-19,20,20,21,21,21,22,22,22,22,22,22,22,22,22,23,
-23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
-23,23,23,23,22,22,22,22,22,22,22,22,22,21,21,21,
-20,20,20,19,19,19,19,18,18,18,18,18,17,17,17,17,
-16,16,15,14,14,14,14,13,13,13,12,12,12,10,10,10,
-9,9,9,8,8,8,7,7,7,6,6,6,4,4,4,0,
-0,1,1,1,2,2,2,3,24,24,25,25,25,26,26,26,
-27,27,27,27,29,28,28,30,30,30,30,31,31,31,32,32,
-32,32,32,33,33,35,35,34,34,34,34,34,34,36,36,36,
-36,36,36,36,37,37,37,37,37,37,37,37,37,37,37,37,
-37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,36,
-36,36,36,36,36,36,34,34,34,34,34,34,35,35,33,33,
-32,32,32,32,32,31,31,31,30,30,30,30,28,28,29,27,
-27,27,27,26,26,26,25,25,25,24,24,3,2,2,2,1,
-1,0,0,0,4,4,4,6,6,6,7,7,7,8,8,8,
-9,9,9,10,10,10,12,12,12,13,13,13,14,14,14,14,
-15,16,16,17,17,17,17,18,18,18,18,19,19,19,19,19,
-20,20,20,21,21,21,22,22,22,22,22,22,22,22,22,23,
-23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
-23,23,23,23,22,22,22,22,22,22,22,22,22,21,21,21,
-20,20,19,19,19,19,19,18,18,18,18,18,17,17,17,16,
-16,16,15,14,14,14,13,13,13,13,12,12,12,10,10,10,
-9,9,9,8,8,8,7,7,7,6,6,6,4,4,0,0,
-0,1,1,1,2,2,2,3,24,24,25,25,25,26,26,26,
-27,27,27,29,29,28,28,30,30,30,31,31,31,31,32,32,
-32,32,33,33,33,35,35,34,34,34,34,34,34,36,36,36,
-36,36,36,36,37,37,37,37,37,37,37,37,37,37,37,37,
-37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,36,
-36,36,36,36,36,36,34,34,34,34,34,34,35,35,33,33,
-32,32,32,32,32,31,31,31,30,30,30,30,28,28,29,27,
-27,27,26,26,26,26,25,25,25,24,24,3,2,2,1,1,
-1,0,0,0,4,4,4,6,6,6,7,7,7,8,8,8,
-9,9,9,10,10,10,12,12,12,13,13,13,14,14,14,14,
-16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,19,
-20,20,21,21,21,21,22,22,22,22,22,22,22,22,23,23,
-23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
-23,23,23,23,22,22,22,22,22,22,22,22,22,21,21,21,
-20,20,19,19,19,19,19,18,18,18,18,18,17,17,17,16,
-16,16,15,14,14,14,13,13,13,13,12,12,12,10,10,10,
-9,9,9,8,8,8,7,7,7,6,6,5,4,4,0,0,
-0,1,1,1,2,2,2,3,24,24,25,25,25,26,26,26,
-27,27,27,29,29,28,28,30,30,30,31,31,31,31,32,32,
-32,32,33,33,33,35,35,34,34,34,34,34,36,36,36,36,
-36,36,36,36,37,37,37,37,37,37,37,37,37,37,37,37,
-37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,36,
-36,36,36,36,36,36,34,34,34,34,34,34,35,35,33,33,
-32,32,32,32,31,31,31,31,30,30,30,30,28,28,29,27,
-27,27,26,26,26,25,25,25,25,24,24,2,2,2,1,1,
-1,0,0,0,4,4,4,6,6,6,7,7,7,8,8,8,
-9,9,9,10,10,10,12,12,12,13,13,13,14,14,14,15,
-16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,19,
-20,20,21,21,21,21,22,22,22,22,22,22,22,22,23,23,
-23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
-23,23,23,23,22,22,22,22,22,22,22,22,22,21,21,21,
-20,20,19,19,19,19,19,18,18,18,18,17,17,17,17,16,
-16,16,15,14,14,14,13,13,13,13,12,12,12,10,10,10,
-9,9,9,8,8,8,7,7,7,6,6,5,4,4,0,0,
-0,1,1,1,2,2,2,3,24,24,25,25,25,26,26,26,
-27,27,27,29,29,28,28,30,30,30,31,31,31,31,32,32,
-32,32,33,33,33,35,35,34,34,34,34,34,36,36,36,36,
-36,36,36,36,37,37,37,37,37,37,37,37,37,37,37,37,
-37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,36,
-36,36,36,36,36,36,34,34,34,34,34,34,35,35,33,33,
-32,32,32,32,31,31,31,31,30,30,30,30,28,28,29,27,
-27,27,26,26,26,25,25,25,25,24,24,2,2,2,1,1,
-1,0,0,0,4,4,4,6,6,6,7,7,7,8,8,8,
-9,9,9,10,10,10,12,12,12,13,13,13,14,14,14,15,
-16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,19,
-20,20,21,21,21,21,22,22,22,22,22,22,22,22,23,23,
-23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
-23,23,23,23,22,22,22,22,22,22,22,22,22,21,21,21,
-20,20,19,19,19,19,19,18,18,18,18,17,17,17,17,16,
-16,16,15,14,14,14,13,13,13,13,12,12,12,10,10,10,
-9,9,9,8,8,8,7,7,7,6,6,5,4,4,0,0,
-0,1,1,1,2,2,2,3,24,24,25,25,25,26,26,26,
-27,27,27,29,29,28,28,30,30,30,31,31,31,31,32,32,
-32,32,33,33,33,35,35,34,34,34,34,34,36,36,36,36,
-36,36,36,36,37,37,37,37,37,37,37,37,37,37,37,37,
-37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,36,
-36,36,36,36,36,36,34,34,34,34,34,34,35,35,33,33,
-32,32,32,32,31,31,31,31,30,30,30,30,28,28,29,27,
-27,27,26,26,26,26,25,25,25,24,24,3,2,2,1,1,
-1,0,0,0,4,4,4,6,6,6,7,7,7,8,8,8,
-9,9,9,10,10,10,12,12,12,13,13,13,14,14,14,14,
-16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,19,
-20,20,21,21,21,21,22,22,22,22,22,22,22,22,23,23,
-23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
-23,23,23,23,22,22,22,22,22,22,22,22,22,21,21,21,
-20,20,19,19,19,19,19,18,18,18,18,18,17,17,17,16,
-16,16,15,14,14,14,13,13,13,13,12,12,12,10,10,10,
-9,9,9,8,8,8,7,7,7,6,6,5,4,4,0,0,
-0,1,1,1,2,2,2,3,24,24,25,25,25,26,26,26,
-27,27,27,29,29,28,28,30,30,30,31,31,31,31,32,32,
-32,32,33,33,33,35,35,34,34,34,34,34,36,36,36,36,
-36,36,36,36,37,37,37,37,37,37,37,37,37,37,37,37,
-37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,36,
-36,36,36,36,36,36,34,34,34,34,34,34,35,35,33,33,
-32,32,32,32,32,31,31,31,30,30,30,30,28,28,29,27,
-27,27,26,26,26,26,25,25,25,24,24,3,2,2,2,1,
-1,0,0,0,4,4,4,6,6,6,7,7,7,8,8,8,
-9,9,9,10,10,10,12,12,12,13,13,13,14,14,14,14,
-15,16,16,17,17,17,17,18,18,18,18,19,19,19,19,19,
-20,20,20,21,21,21,22,22,22,22,22,22,22,22,22,23,
-23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
-23,23,23,23,22,22,22,22,22,22,22,22,22,21,21,21,
-20,20,19,19,19,19,19,18,18,18,18,18,17,17,17,16,
-16,16,15,14,14,14,13,13,13,13,12,12,12,10,10,10,
-9,9,9,8,8,8,7,7,7,6,6,6,4,4,0,0,
-0,1,1,1,2,2,2,3,24,24,25,25,25,26,26,26,
-27,27,27,29,29,28,28,30,30,30,31,31,31,31,32,32,
-32,32,33,33,33,35,35,34,34,34,34,34,34,36,36,36,
-36,36,36,36,37,37,37,37,37,37,37,37,37,37,37,37,
-37,37,37,37,37,37,37,37,37,37,37,37,37,37,36,36,
-36,36,36,36,36,36,34,34,34,34,34,34,35,35,33,33,
-32,32,32,32,32,31,31,31,30,30,30,30,28,28,29,27,
-27,27,27,26,26,26,25,25,25,24,24,3,2,2,2,1,
-1,1,0,0,4,4,4,6,6,6,7,7,7,8,8,8,
-9,9,9,10,10,10,12,12,12,13,13,13,13,14,14,14,
-15,16,16,16,17,17,17,18,18,18,18,18,19,19,19,19,
-19,20,20,21,21,21,21,22,22,22,22,22,22,22,22,23,
-23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
-23,23,23,23,22,22,22,22,22,22,22,22,21,21,21,21,
-20,20,19,19,19,19,19,18,18,18,18,18,17,17,17,16,
-16,16,15,14,14,14,14,13,13,13,12,12,12,10,10,10,
-9,9,9,8,8,8,7,7,7,6,6,6,4,4,4,0,
-0,1,1,1,2,2,2,3,24,24,25,25,25,26,26,26,
-27,27,27,27,29,28,28,30,30,30,30,31,31,31,32,32,
-32,32,32,33,33,35,35,34,34,34,34,34,34,36,36,36,
-36,36,36,36,36,37,37,37,37,37,37,37,37,37,37,37,
-37,37,37,37,37,37,37,37,37,37,37,37,37,37,36,36,
-36,36,36,36,36,36,34,34,34,34,34,34,35,35,33,33,
-32,32,32,32,32,31,31,31,30,30,30,30,28,28,29,27,
-27,27,27,26,26,26,25,25,25,24,24,3,2,2,2,1,
-1,1,0,0,0,4,4,5,6,6,7,7,7,8,8,8,
-9,9,9,11,10,10,12,12,12,12,13,13,13,14,14,14,
-15,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,
-19,20,20,20,21,21,21,22,22,22,22,22,22,22,22,22,
-23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
-23,23,23,22,22,22,22,22,22,22,22,22,21,21,21,21,
-20,20,19,19,19,19,19,18,18,18,18,18,17,17,17,17,
-16,16,15,14,14,14,14,13,13,13,12,12,12,10,10,10,
-9,9,9,8,8,8,7,7,7,6,6,6,4,4,4,0,
-0,0,1,1,1,2,2,2,24,24,24,25,25,25,26,26,
-26,27,27,27,29,29,28,30,30,30,30,31,31,31,31,32,
-32,32,32,33,33,33,35,35,34,34,34,34,34,34,36,36,
-36,36,36,36,36,37,37,37,37,37,37,37,37,37,37,37,
-37,37,37,37,37,37,37,37,37,37,37,37,37,36,36,36,
-36,36,36,36,36,36,34,34,34,34,34,34,35,33,33,33,
-32,32,32,32,32,31,31,31,31,30,30,30,28,28,29,29,
-27,27,27,26,26,26,25,25,25,24,24,3,2,2,2,1,
-1,1,0,0,0,4,4,4,6,6,6,7,7,7,8,8,
-8,9,9,9,10,10,10,12,12,12,13,13,13,14,14,14,
-14,15,16,16,17,17,17,17,18,18,18,18,18,19,19,19,
-19,19,20,20,21,21,21,21,22,22,22,22,22,22,22,22,
-22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,
-23,23,22,22,22,22,22,22,22,22,22,22,21,21,21,21,
-20,20,19,19,19,19,19,18,18,18,18,18,17,17,17,17,
-16,16,15,14,14,14,14,13,13,13,12,12,12,10,10,10,
-9,9,9,8,8,8,7,7,7,6,6,6,5,4,4,0,
-0,0,1,1,1,2,2,2,3,24,24,25,25,25,26,26,
-26,27,27,27,29,29,28,28,30,30,30,30,31,31,31,32,
-32,32,32,32,33,33,33,35,35,34,34,34,34,34,36,36,
-36,36,36,36,36,36,36,37,37,37,37,37,37,37,37,37,
-37,37,37,37,37,37,37,37,37,37,37,37,36,36,36,36,
-36,36,36,36,36,34,34,34,34,34,34,35,35,33,33,33,
-32,32,32,32,32,31,31,31,31,30,30,30,28,28,29,29,
-27,27,27,26,26,26,25,25,25,24,24,24,2,2,2,1,
-1,1,0,0,0,4,4,4,6,6,6,7,7,7,8,8,
-8,9,9,9,10,10,10,12,12,12,12,13,13,13,14,14,
-14,15,16,16,16,17,17,17,17,18,18,18,18,18,19,19,
-19,19,19,20,20,21,21,21,21,22,22,22,22,22,22,22,
-22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,
-22,22,22,22,22,22,22,22,22,22,22,21,21,21,21,20,
-20,20,19,19,19,19,19,18,18,18,18,18,17,17,17,17,
-16,16,15,14,14,14,14,13,13,13,12,12,12,10,10,10,
-11,9,9,9,8,8,8,7,7,7,6,6,6,4,4,0,
-0,0,1,1,1,2,2,2,3,24,24,25,25,25,25,26,
-26,26,27,27,27,29,29,28,28,30,30,30,31,31,31,31,
-32,32,32,32,33,33,33,35,35,34,34,34,34,34,34,34,
-36,36,36,36,36,36,36,36,36,37,37,37,37,37,37,37,
-37,37,37,37,37,37,37,37,37,37,37,36,36,36,36,36,
-36,36,36,36,36,34,34,34,34,34,34,35,35,33,33,33,
-32,32,32,32,32,31,31,31,31,30,30,30,28,28,29,29,
-27,27,27,26,26,26,26,25,25,25,24,24,3,2,2,2,
-1,1,1,0,0,0,4,4,5,6,6,6,7,7,7,8,
-8,8,9,9,9,10,10,10,12,12,12,13,13,13,13,14,
-14,14,15,16,16,16,17,17,17,17,18,18,18,18,18,19,
-19,19,19,19,20,20,20,21,21,21,21,22,22,22,22,22,
-22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,
-22,22,22,22,22,22,22,22,22,22,22,21,21,21,21,20,
-20,20,19,19,19,19,19,18,18,18,18,18,17,17,17,17,
-16,16,16,14,14,14,14,13,13,13,12,12,12,12,10,10,
-10,9,9,9,8,8,8,7,7,7,6,6,6,4,4,4,
-0,0,0,1,1,1,2,2,2,3,24,24,25,25,25,26,
-26,26,27,27,27,27,29,28,28,30,30,30,30,31,31,31,
-31,32,32,32,32,33,33,33,33,35,35,34,34,34,34,34,
-34,36,36,36,36,36,36,36,36,36,36,37,37,37,37,37,
-37,37,37,37,37,37,37,36,36,36,36,36,36,36,36,36,
-36,36,36,36,34,34,34,34,34,34,34,35,35,33,33,33,
-32,32,32,32,32,31,31,31,31,30,30,30,28,28,29,29,
-27,27,27,26,26,26,26,25,25,25,24,24,3,2,2,2,
-1,1,1,0,0,0,4,4,4,6,6,6,7,7,7,8,
-8,8,9,9,9,11,10,10,10,12,12,12,13,13,13,14,
-14,14,14,15,16,16,16,17,17,17,17,18,18,18,18,18,
-19,19,19,19,19,20,20,20,21,21,21,21,21,22,22,22,
-22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,
-22,22,22,22,22,22,22,22,22,22,21,21,21,21,20,20,
-20,19,19,19,19,19,19,18,18,18,18,17,17,17,17,17,
-16,16,16,15,14,14,14,13,13,13,13,12,12,12,10,10,
-10,9,9,9,8,8,8,7,7,7,6,6,6,5,4,4,
-0,0,0,1,1,1,2,2,2,2,24,24,24,25,25,25,
-26,26,26,27,27,27,27,29,28,28,30,30,30,30,31,31,
-31,31,32,32,32,32,32,33,33,33,35,35,34,34,34,34,
-34,34,34,36,36,36,36,36,36,36,36,36,36,36,36,36,
-36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,
-36,36,36,34,34,34,34,34,34,34,35,35,33,33,33,33,
-32,32,32,32,31,31,31,31,31,30,30,30,30,28,28,29,
-27,27,27,27,26,26,26,25,25,25,24,24,24,2,2,2,
-2,1,1,1,0,0,0,4,4,5,6,6,6,7,7,7,
-8,8,8,9,9,9,10,10,10,12,12,12,12,13,13,13,
-14,14,14,14,15,16,16,16,17,17,17,17,18,18,18,18,
-18,19,19,19,19,19,19,20,20,20,21,21,21,21,21,22,
-22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,
-22,22,22,22,22,22,22,22,21,21,21,21,21,21,20,20,
-20,19,19,19,19,19,18,18,18,18,18,17,17,17,17,17,
-16,16,16,15,14,14,14,13,13,13,13,12,12,12,10,10,
-10,11,9,9,9,8,8,8,7,7,7,6,6,6,4,4,
-4,0,0,0,1,1,1,2,2,2,3,24,24,25,25,25,
-25,26,26,26,27,27,27,27,29,28,28,30,30,30,30,31,
-31,31,31,32,32,32,32,32,33,33,33,35,35,35,34,34,
-34,34,34,34,34,36,36,36,36,36,36,36,36,36,36,36,
-36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,
-36,34,34,34,34,34,34,34,34,35,35,35,33,33,33,32,
-32,32,32,32,31,31,31,31,31,30,30,30,30,28,28,29,
-27,27,27,27,26,26,26,25,25,25,25,24,24,3,2,2,
-2,1,1,1,0,0,0,4,4,4,6,6,6,6,7,7,
-7,8,8,8,9,9,9,10,10,10,12,12,12,12,13,13,
-13,13,14,14,14,15,16,16,16,17,17,17,17,17,18,18,
-18,18,18,19,19,19,19,19,19,20,20,20,20,21,21,21,
-21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,
-22,22,22,22,22,22,21,21,21,21,21,21,20,20,20,20,
-19,19,19,19,19,19,18,18,18,18,18,17,17,17,17,17,
-16,16,16,15,14,14,14,13,13,13,13,12,12,12,12,10,
-10,10,9,9,9,8,8,8,7,7,7,6,6,6,6,4,
-4,4,0,0,0,1,1,1,2,2,2,3,24,24,25,25,
-25,25,26,26,26,27,27,27,27,29,28,28,30,30,30,30,
-31,31,31,31,31,32,32,32,32,32,33,33,33,35,35,35,
-34,34,34,34,34,34,34,34,36,36,36,36,36,36,36,36,
-36,36,36,36,36,36,36,36,36,36,36,36,36,36,34,34,
-34,34,34,34,34,34,34,34,35,35,35,33,33,33,33,32,
-32,32,32,32,31,31,31,31,31,30,30,30,30,28,28,29,
-29,27,27,27,26,26,26,26,25,25,25,24,24,24,2,2,
-2,2,1,1,1,0,0,0,4,4,4,6,6,6,7,7,
-7,7,8,8,8,9,9,9,10,10,10,10,12,12,12,13,
-13,13,13,14,14,14,14,15,16,16,16,17,17,17,17,17,
-18,18,18,18,18,19,19,19,19,19,19,19,20,20,20,20,
-21,21,21,21,21,21,21,21,21,21,22,22,22,22,22,22,
-22,21,21,21,21,21,21,21,21,21,20,20,20,20,19,19,
-19,19,19,19,19,18,18,18,18,18,18,17,17,17,17,16,
-16,16,16,15,14,14,14,14,13,13,13,12,12,12,12,10,
-10,10,9,9,9,9,8,8,8,7,7,7,6,6,6,5,
-4,4,0,0,0,0,1,1,1,2,2,2,3,24,24,25,
-25,25,25,26,26,26,27,27,27,27,29,29,28,28,30,30,
-30,30,31,31,31,31,31,32,32,32,32,32,33,33,33,33,
-35,35,34,34,34,34,34,34,34,34,34,34,36,36,36,36,
-34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,
-34,34,34,34,34,34,34,35,35,35,33,33,33,33,32,32,
-32,32,32,31,31,31,31,31,30,30,30,30,30,28,28,29,
-29,27,27,27,26,26,26,26,25,25,25,25,24,24,3,2,
-2,2,1,1,1,1,0,0,0,4,4,4,6,6,6,7,
-7,7,7,8,8,8,9,9,9,11,10,10,10,12,12,12,
-13,13,13,13,14,14,14,14,15,16,16,16,16,17,17,17,
-17,17,18,18,18,18,18,18,19,19,19,19,19,19,19,19,
-20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,
-21,21,21,21,21,21,21,20,20,20,20,20,19,19,19,19,
-19,19,19,19,18,18,18,18,18,18,17,17,17,17,17,16,
-16,16,16,15,14,14,14,14,13,13,13,13,12,12,12,10,
-10,10,11,9,9,9,8,8,8,7,7,7,7,6,6,6,
-4,4,4,0,0,0,1,1,1,1,2,2,2,3,24,24,
-25,25,25,25,26,26,26,26,27,27,27,29,29,28,28,30,
-30,30,30,30,31,31,31,31,31,32,32,32,32,32,33,33,
-33,33,35,35,35,34,34,34,34,34,34,34,34,34,34,34,
-34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,
-34,34,34,34,35,35,35,35,33,33,33,33,33,32,32,32,
-32,32,32,31,31,31,31,31,30,30,30,30,30,28,28,29,
-29,27,27,27,27,26,26,26,25,25,25,25,24,24,24,2,
-2,2,2,1,1,1,0,0,0,0,4,4,4,6,6,6,
-7,7,7,7,8,8,8,9,9,9,9,10,10,10,12,12,
-12,12,13,13,13,13,14,14,14,14,15,16,16,16,16,17,
-17,17,17,17,18,18,18,18,18,18,18,19,19,19,19,19,
-19,19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,
-20,20,20,20,20,20,20,20,20,19,19,19,19,19,19,19,
-19,19,19,18,18,18,18,18,18,17,17,17,17,17,17,16,
-16,16,15,14,14,14,14,14,13,13,13,13,12,12,12,10,
-10,10,10,9,9,9,9,8,8,8,7,7,7,6,6,6,
-6,4,4,4,0,0,0,1,1,1,1,2,2,2,3,24,
-24,24,25,25,25,26,26,26,26,27,27,27,27,29,29,28,
-28,30,30,30,30,30,31,31,31,31,31,32,32,32,32,32,
-32,33,33,33,33,33,35,35,35,35,34,34,34,34,34,34,
-34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,
-35,35,35,35,35,33,33,33,33,33,33,32,32,32,32,32,
-32,32,31,31,31,31,31,30,30,30,30,30,28,28,28,29,
-29,27,27,27,27,26,26,26,26,25,25,25,24,24,24,3,
-2,2,2,2,1,1,1,0,0,0,0,4,4,4,6,6,
-6,7,7,7,7,8,8,8,9,9,9,9,10,10,10,10,
-12,12,12,12,13,13,13,13,14,14,14,14,15,15,16,16,
-16,16,17,17,17,17,17,18,18,18,18,18,18,18,18,19,
-19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,
-19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,
-19,18,18,18,18,18,18,18,17,17,17,17,17,17,16,16,
-16,16,15,14,14,14,14,14,13,13,13,13,12,12,12,12,
-10,10,10,11,9,9,9,8,8,8,8,7,7,7,6,6,
-6,6,4,4,4,0,0,0,0,1,1,1,2,2,2,2,
-3,24,24,25,25,25,25,26,26,26,26,27,27,27,27,29,
-29,28,28,30,30,30,30,30,31,31,31,31,31,31,32,32,
-32,32,32,32,32,33,33,33,33,33,33,35,35,35,35,35,
-33,33,35,35,35,35,35,35,35,35,35,35,35,35,35,35,
-33,33,33,33,33,33,33,33,32,32,32,32,32,32,32,32,
-32,31,31,31,31,31,31,30,30,30,30,30,28,28,28,29,
-29,27,27,27,27,26,26,26,26,25,25,25,25,24,24,24,
-3,2,2,2,1,1,1,1,0,0,0,4,4,4,4,6,
-6,6,6,7,7,7,8,8,8,8,9,9,9,9,10,10,
-10,10,12,12,12,12,13,13,13,13,14,14,14,14,14,15,
-16,16,16,16,17,17,17,17,17,17,17,18,18,18,18,18,
-18,18,18,18,19,19,19,19,19,19,19,19,19,19,19,19,
-19,19,19,19,19,19,19,19,19,19,19,19,19,19,18,18,
-18,18,18,18,18,18,18,17,17,17,17,17,17,16,16,16,
-16,15,15,14,14,14,14,13,13,13,13,13,12,12,12,12,
-10,10,10,10,9,9,9,9,8,8,8,7,7,7,7,6,
-6,6,6,4,4,4,0,0,0,0,1,1,1,2,2,2,
-2,3,24,24,24,25,25,25,25,26,26,26,26,27,27,27,
-27,29,29,28,28,28,30,30,30,30,30,31,31,31,31,31,
-31,32,32,32,32,32,32,32,32,33,33,33,33,33,33,33,
-33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,
-33,33,33,33,32,32,32,32,32,32,32,32,32,32,32,31,
-31,31,31,31,31,31,30,30,30,30,30,28,28,28,29,29,
-27,27,27,27,27,26,26,26,26,25,25,25,25,24,24,24,
-3,2,2,2,2,1,1,1,1,0,0,0,0,4,4,4,
-6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,
-10,10,10,10,12,12,12,12,13,13,13,13,13,14,14,14,
-14,14,15,16,16,16,16,16,17,17,17,17,17,17,17,17,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,19,19,
-19,19,19,19,19,19,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,17,17,17,17,17,17,17,17,16,16,16,16,
-16,15,14,14,14,14,14,13,13,13,13,13,12,12,12,12,
-10,10,10,10,9,9,9,9,8,8,8,8,7,7,7,7,
-6,6,6,6,4,4,4,0,0,0,0,1,1,1,1,2,
-2,2,2,3,24,24,24,25,25,25,25,26,26,26,26,27,
-27,27,27,27,29,29,28,28,28,30,30,30,30,30,31,31,
-31,31,31,31,31,32,32,32,32,32,32,32,32,32,32,32,
-32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
-32,32,32,32,32,32,32,32,32,32,32,32,31,31,31,31,
-31,31,31,31,30,30,30,30,30,30,28,28,28,28,29,29,
-27,27,27,27,27,26,26,26,26,25,25,25,25,25,24,24,
-24,3,2,2,2,2,1,1,1,1,0,0,0,0,4,4,
-4,5,6,6,6,6,7,7,7,8,8,8,8,8,9,9,
-9,9,10,10,10,10,12,12,12,12,12,13,13,13,13,13,
-14,14,14,14,14,15,15,16,16,16,16,16,17,17,17,17,
-17,17,17,17,17,17,18,18,18,18,18,18,18,18,18,18,
-18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
-18,17,17,17,17,17,17,17,17,17,16,16,16,16,16,15,
-15,14,14,14,14,14,14,13,13,13,13,13,12,12,12,12,
-10,10,10,10,11,9,9,9,9,8,8,8,8,7,7,7,
-7,6,6,6,6,4,4,4,4,0,0,0,0,1,1,1,
-2,2,2,2,2,3,24,24,24,25,25,25,25,26,26,26,
-26,26,27,27,27,27,29,29,29,28,28,28,30,30,30,30,
-30,30,31,31,31,31,31,31,31,31,31,32,32,32,32,32,
-31,31,31,32,32,32,32,32,32,32,32,32,32,32,32,32,
-32,32,32,32,32,32,31,31,31,31,31,31,31,31,31,31,
-31,31,30,30,30,30,30,30,30,28,28,28,28,29,29,27,
-27,27,27,27,27,26,26,26,26,26,25,25,25,25,24,24,
-24,3,3,2,2,2,2,1,1,1,1,0,0,0,0,4,
-4,4,4,6,6,6,6,7,7,7,7,8,8,8,8,8,
-9,9,9,9,10,10,10,10,10,12,12,12,12,12,13,13,
-13,13,13,14,14,14,14,14,14,14,15,16,16,16,16,16,
-16,16,17,17,17,17,17,17,17,17,17,17,17,17,17,17,
-17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,
-17,17,17,17,17,17,17,16,16,16,16,16,16,16,15,14,
-14,14,14,14,14,14,13,13,13,13,13,12,12,12,12,12,
-10,10,10,10,10,9,9,9,9,8,8,8,8,8,7,7,
-7,7,6,6,6,6,4,4,4,4,0,0,0,0,1,1,
-1,1,2,2,2,2,2,3,24,24,24,25,25,25,25,25,
-26,26,26,26,27,27,27,27,27,27,29,29,28,28,28,28,
-30,30,30,30,30,30,30,31,31,31,31,31,31,31,31,31,
-31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,
-31,31,31,31,31,31,31,31,31,31,31,31,31,31,30,30,
-30,30,30,30,30,30,30,28,28,28,28,29,29,29,27,27,
-27,27,27,27,26,26,26,26,26,26,25,25,25,25,25,24,
-24,24,3,2,2,2,2,2,1,1,1,1,0,0,0,0,
-4,4,4,4,5,6,6,6,6,7,7,7,7,7,8,8,
-8,8,9,9,9,9,9,10,10,10,10,10,12,12,12,12,
-12,13,13,13,13,13,13,14,14,14,14,14,14,14,14,15,
-15,16,16,16,16,16,16,16,16,16,17,17,17,17,17,17,
-17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,
-17,17,16,16,16,16,16,16,16,16,16,15,15,14,14,14,
-14,14,14,14,14,13,13,13,13,13,13,12,12,12,12,12,
-10,10,10,10,10,9,9,9,9,9,8,8,8,8,8,7,
-7,7,7,6,6,6,6,5,4,4,4,4,0,0,0,0,
-1,1,1,1,2,2,2,2,2,3,24,24,24,24,25,25,
-25,25,25,26,26,26,26,26,27,27,27,27,27,27,29,29,
-29,28,28,28,28,30,30,30,30,30,30,30,30,30,31,31,
-30,30,30,30,30,30,30,30,30,30,30,30,31,31,31,31,
-31,31,31,31,30,30,30,30,30,30,30,30,30,30,30,30,
-30,30,30,30,28,28,28,28,28,29,29,29,29,27,27,27,
-27,27,27,27,26,26,26,26,26,25,25,25,25,25,25,24,
-24,24,3,3,2,2,2,2,2,1,1,1,1,0,0,0,
-0,0,4,4,4,4,5,6,6,6,6,7,7,7,7,7,
-8,8,8,8,8,9,9,9,9,9,10,10,10,10,10,12,
-12,12,12,12,12,13,13,13,13,13,13,13,13,14,14,14,
-14,14,14,14,14,14,15,15,15,16,16,16,16,16,16,16,
-16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
-16,16,16,16,16,16,16,15,15,15,14,14,14,14,14,14,
-14,14,14,13,13,13,13,13,13,13,12,12,12,12,12,12,
-10,10,10,10,10,9,9,9,9,9,9,8,8,8,8,7,
-7,7,7,7,6,6,6,6,6,4,4,4,4,0,0,0,
-0,0,1,1,1,1,1,2,2,2,2,2,3,24,24,24,
-24,25,25,25,25,25,26,26,26,26,26,26,27,27,27,27,
-27,27,27,29,29,29,28,28,28,28,28,30,30,30,30,30,
-28,28,28,28,30,30,30,30,30,30,30,30,30,30,30,30,
-30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,28,
-28,28,28,28,28,28,29,29,29,29,27,27,27,27,27,27,
-27,27,26,26,26,26,26,26,26,25,25,25,25,25,25,24,
-24,24,24,3,2,2,2,2,2,2,1,1,1,1,1,0,
-0,0,0,0,4,4,4,4,5,6,6,6,6,6,7,7,
-7,7,7,8,8,8,8,8,9,9,9,9,9,9,10,10,
-10,10,10,10,12,12,12,12,12,12,12,13,13,13,13,13,
-13,13,13,14,14,14,14,14,14,14,14,14,14,14,14,14,
-14,14,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
-15,15,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
-13,13,13,13,13,13,13,13,13,12,12,12,12,12,12,10,
-10,10,10,10,10,11,9,9,9,9,9,8,8,8,8,8,
-7,7,7,7,7,6,6,6,6,6,5,4,4,4,4,0,
-0,0,0,0,1,1,1,1,1,2,2,2,2,2,2,3,
-24,24,24,24,25,25,25,25,25,25,26,26,26,26,26,26,
-26,27,27,27,27,27,27,27,27,29,29,29,29,28,28,28,
-27,29,29,29,29,29,29,29,28,28,28,28,28,28,28,28,
-28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,29,
-29,29,29,29,29,29,27,27,27,27,27,27,27,27,27,27,
-26,26,26,26,26,26,26,26,25,25,25,25,25,25,25,24,
-24,24,24,3,3,2,2,2,2,2,2,1,1,1,1,1,
-0,0,0,0,0,0,4,4,4,4,5,6,6,6,6,6,
-7,7,7,7,7,7,8,8,8,8,8,8,9,9,9,9,
-9,9,10,10,10,10,10,10,10,12,12,12,12,12,12,12,
-12,13,13,13,13,13,13,13,13,13,13,13,13,14,14,14,
-14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,
-14,14,14,14,14,14,14,14,14,14,14,13,13,13,13,13,
-13,13,13,13,13,13,12,12,12,12,12,12,12,12,10,10,
-10,10,10,10,10,9,9,9,9,9,9,9,8,8,8,8,
-8,7,7,7,7,7,7,6,6,6,6,6,5,4,4,4,
-4,4,0,0,0,0,0,1,1,1,1,1,1,2,2,2,
-2,2,3,3,24,24,24,24,25,25,25,25,25,25,25,26,
-26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,
-27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,
-27,29,29,29,29,29,29,29,29,29,29,27,27,27,27,27,
-27,27,27,27,27,27,27,27,27,27,27,27,27,26,26,26,
-26,26,26,26,26,26,26,25,25,25,25,25,25,25,25,24,
-24,24,24,24,3,3,2,2,2,2,2,2,1,1,1,1,
-1,1,0,0,0,0,0,0,4,4,4,4,4,5,6,6,
-6,6,6,6,7,7,7,7,7,7,8,8,8,8,8,8,
-9,9,9,9,9,9,9,11,10,10,10,10,10,10,10,12,
-12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,
-13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
-13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
-13,13,12,12,12,12,12,12,12,12,12,12,12,10,10,10,
-10,10,10,10,11,9,9,9,9,9,9,9,8,8,8,8,
-8,8,7,7,7,7,7,7,6,6,6,6,6,6,5,4,
-4,4,4,4,0,0,0,0,0,0,1,1,1,1,1,1,
-2,2,2,2,2,2,3,3,24,24,24,24,24,25,25,25,
-25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,27,
-26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,
-27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,
-27,27,27,27,27,27,27,26,26,26,26,26,26,26,26,26,
-26,26,26,26,26,25,25,25,25,25,25,25,25,25,24,24,
-24,24,24,24,3,3,2,2,2,2,2,2,2,1,1,1,
-1,1,1,1,0,0,0,0,0,0,4,4,4,4,4,4,
-5,6,6,6,6,6,6,7,7,7,7,7,7,7,8,8,
-8,8,8,8,8,9,9,9,9,9,9,9,9,9,10,10,
-10,10,10,10,10,10,10,10,12,12,12,12,12,12,12,12,
-12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,
-13,13,13,13,13,13,13,13,12,12,12,12,12,12,12,12,
-12,12,12,12,12,12,12,12,12,12,10,10,10,10,10,10,
-10,10,10,11,9,9,9,9,9,9,9,9,8,8,8,8,
-8,8,8,7,7,7,7,7,7,7,6,6,6,6,6,6,
-6,4,4,4,4,4,4,0,0,0,0,0,0,0,1,1,
-1,1,1,1,2,2,2,2,2,2,2,2,3,3,24,24,
-24,24,24,24,25,25,25,25,25,25,25,25,25,26,26,26,
-25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,
-26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,
-26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,
-25,25,25,25,25,25,25,25,25,25,25,25,25,24,24,24,
-24,24,24,24,3,3,2,2,2,2,2,2,2,2,2,1,
-1,1,1,1,1,1,0,0,0,0,0,0,0,4,4,4,
-4,4,4,4,5,6,6,6,6,6,6,6,7,7,7,7,
-7,7,7,7,8,8,8,8,8,8,8,8,9,9,9,9,
-9,9,9,9,9,9,11,10,10,10,10,10,10,10,10,10,
-10,10,10,10,12,12,12,12,12,12,12,12,12,12,12,12,
-12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,
-12,12,12,12,10,10,10,10,10,10,10,10,10,10,10,10,
-10,11,9,9,9,9,9,9,9,9,9,9,8,8,8,8,
-8,8,8,8,8,7,7,7,7,7,7,7,6,6,6,6,
-6,6,6,6,4,4,4,4,4,4,4,0,0,0,0,0,
-0,0,1,1,1,1,1,1,1,1,2,2,2,2,2,2,
-2,2,3,3,24,24,24,24,24,24,24,25,25,25,25,25,
-24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,
-25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,
-25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,
-25,25,25,25,25,25,25,25,25,25,24,24,24,24,24,24,
-24,24,24,3,3,3,2,2,2,2,2,2,2,2,2,2,
-1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,
-0,4,4,4,4,4,4,4,5,6,6,6,6,6,6,6,
-6,6,7,7,7,7,7,7,7,7,7,8,8,8,8,8,
-8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,
-9,9,11,10,10,10,10,10,10,10,10,10,10,10,10,10,
-10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
-10,10,10,10,10,10,10,10,10,10,10,10,10,11,9,9,
-9,9,9,9,9,9,9,9,9,9,9,9,8,8,8,8,
-8,8,8,8,8,8,7,7,7,7,7,7,7,7,7,6,
-6,6,6,6,6,6,6,5,4,4,4,4,4,4,4,0,
-0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,
-2,2,2,2,2,2,2,2,2,2,3,3,3,24,24,24,
-2,2,2,2,2,3,3,3,3,24,24,24,24,24,24,24,
-24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,
-25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,
-25,25,25,25,24,24,24,24,24,24,24,24,24,24,24,24,
-24,24,3,3,3,3,2,2,2,2,2,2,2,2,2,2,
-2,2,1,1,1,1,1,1,1,1,1,1,0,0,0,0,
-0,0,0,0,0,0,4,4,4,4,4,4,4,4,5,6,
-6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,
-7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,
-9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
-9,9,9,9,9,9,9,9,9,9,9,9,9,11,9,9,
-9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
-9,9,9,9,9,9,9,9,9,9,8,8,8,8,8,8,
-8,8,8,8,8,8,8,7,7,7,7,7,7,7,7,7,
-7,7,6,6,6,6,6,6,6,6,6,5,4,4,4,4,
-4,4,4,4,4,0,0,0,0,0,0,0,0,0,1,1,
-1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,
-1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,
-2,2,2,2,3,3,3,3,3,3,24,24,24,24,24,24,
-24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,
-24,24,24,24,24,24,24,24,24,24,24,24,24,24,3,3,
-3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,
-2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,
-1,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,
-4,4,4,4,4,4,5,6,6,6,6,6,6,6,6,6,
-6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,8,
-8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
-8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
-9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
-9,9,9,9,9,9,8,8,8,8,8,8,8,8,8,8,
-8,8,8,8,8,8,8,8,8,7,7,7,7,7,7,7,
-7,7,7,7,7,7,6,6,6,6,6,6,6,6,6,6,
-6,5,4,4,4,4,4,4,4,4,4,4,0,0,0,0,
-0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1
-};
diff --git a/x6502.c b/x6502.c
index 57f8a00..d81cdab 100644 (file)
--- a/x6502.c
+++ b/x6502.c
@@ -64,13 +64,21 @@ uint32 timestamp;
 static INLINE uint8 RdMem(unsigned int A)
 {
  int _DB1=ARead[A](A);
- /*if (A >= 0x2000)*/ _DB=_DB1;
 #ifdef DEBUG_ASM_6502
+ //_DB=_DB1;
  //printf("a == %x, pc == %x\n", A, _PC);
+ if (A >= 0x2000) {
+  if (A == _PC || A == _PC - 1 || A == _PC + 1) {
+   //printf("fr: %02x\n", _DB1);
+  }
+  _DB=_DB1;
+ }
  if (A >= 0x2000 && A != _PC && A != _PC - 1 && A != _PC + 1) {
   dreads[dread_count_c++] = _DB1;
   if (dread_count_c > 4) { printf("dread_count out of range\n"); exit(1); }
  }
+#else
+ _DB=_DB1;
 #endif
  return _DB1;
 }
@@ -92,7 +100,11 @@ static INLINE void WrMem(unsigned int A, uint8 V)
 static INLINE uint8 RdRAM(unsigned int A)
 {
  //return((_DB=RAM[A]));
- return((_DB=RAM[A]));
+ int _DB1=RAM[A];
+#ifndef DEBUG_ASM_6502
+ _DB=_DB1;
+#endif
+ return _DB1;
 }
 
 static INLINE void WrRAM(unsigned int A, uint8 V)