From e7f5287861e2da956537a6db8abb26f9a26255f8 Mon Sep 17 00:00:00 2001 From: notaz Date: Sat, 26 May 2007 13:49:46 +0000 Subject: [PATCH] Page[] mappings in mapper code, X.DB update for games with no controls git-svn-id: file:///home/notaz/opt/svn/fceu@136 be3aeb3a-fb24-0410-a615-afba39da0efa --- Makefile.base | 2 +- boards/konami-qtai.c | 4 + boards/mmc3.c | 19 +- cart.c | 18 + fds.c | 4 +- ines.c | 4 + ncpu.S | 14 +- ncpu_debug.c | 10 + nsfbgnew.h | 2062 ------------------------------------------ x6502.c | 16 +- 10 files changed, 82 insertions(+), 2071 deletions(-) delete mode 100644 nsfbgnew.h diff --git a/Makefile.base b/Makefile.base index bd411f2..1cc7885 100644 --- a/Makefile.base +++ b/Makefile.base @@ -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 diff --git a/boards/konami-qtai.c b/boards/konami-qtai.c index d42ff0b..b78d8e3 100644 --- a/boards/konami-qtai.c +++ b/boards/konami-qtai.c @@ -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(); } diff --git a/boards/mmc3.c b/boards/mmc3.c index 6345910..bfee5cd 100644 --- a/boards/mmc3.c +++ b/boards/mmc3.c @@ -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 --- 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 --- a/fds.c +++ b/fds.c @@ -150,9 +150,9 @@ static void FDSInit(void) int page; // asm code needs pages to be set again.. for (page=12; page<28; page++) // 0x6000-0xdfff 32K RAM - Page[page]=FDSRAM - (page<<11) + ((page-12)<<11); + Page[page]=FDSRAM - (12<<11); for (; page<32; page++) // 0xe000-0xffff 8K BIOS - Page[page]=FDSBIOS - (page<<11) + ((page-28)<<11); + Page[page]=FDSBIOS - (28<<11); } #endif } diff --git a/ines.c b/ines.c index 6665a13..8e244ae 100644 --- a/ines.c +++ b/ines.c @@ -916,6 +916,10 @@ static void iNESPower(void) setprg8r(1,0x6000,0); SetReadHandler(0x6000,0x7FFF,AWRAM); +#ifdef ASM_6502 + // asm code needs pages to be set again.. + Page[12]=Page[13]=Page[14]=Page[15]=WRAM-0x6000; +#endif SetWriteHandler(0x6000,0x7FFF,BWRAM); FCEU_CheatAddRAM(8,0x6000,WRAM); diff --git a/ncpu.S b/ncpu.S index 96c867b..dcade08 100644 --- 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 diff --git a/ncpu_debug.c b/ncpu_debug.c index cc78ae6..774218a 100644 --- a/ncpu_debug.c +++ b/ncpu_debug.c @@ -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 index 2c55fe1..0000000 --- a/nsfbgnew.h +++ /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 --- 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) -- 2.39.5