REVERSE-COMPETITION-HGAME2022-Week1

REVERSE-COMPETITION-HGAME2022-Week1

    • easyasm
    • creakme
    • Flag Checker
    • 猫头鹰是不是猫

easyasm

程序一开始将si设置为0,然后si和28比较,如果si小于28则进入循环
循环体中,si作为下标,从输入中取值存入al,然后al左移4位,压入栈
保持下标si不变,再重新从输入中取一次值存入al,然后al右移4位
右移4位后的结果与之前左移4位的结果相加,然后异或0x17,最后与已知比较
asm-main
整个过程相当于将输入中的每一个值的高4位和低4位交换,然后异或0x17,最后与已知比较
写逆脚本即可得到flag

arr=[0x91, 0x61, 0x01, 0xC1, 0x41, 0xA0, 0x60, 0x41, 0xD1, 0x21,0x14, 0xC1, 0x41, 0xE2, 0x50, 0xE1, 0xE2, 0x54, 0x20, 0xC1,0xE2, 0x60, 0x14, 0x30, 0xD1, 0x51, 0xC0, 0x17]
for i in range(len(arr)-1):arr[i]^=0x17arr[i]=((arr[i]<<4)&0xff)|((arr[i]>>4)&0xff)
print("".join(chr(i) for i in arr))
#hgame{welc0me_to_4sm_w0rld}

creakme

输入经过变形TEA加密与已知的密文res比较,密钥是"ABCD"那一串
creakme-main
常规TEA加密过程如下图
可以发现题目的变形TEA,delta不同,在32轮循环中,多异或一个v3(即sum),而且密钥有交换
tea-encrypt
对常规TEA的解密过程做相应的变换,已知密文和密钥,解出明文即为flag

#include <stdio.h>
#include <stdint.h>void decrypt(uint32_t* v, uint32_t* k) {uint32_t v0 = v[0], v1 = v[1], sum = 1183502080, i;  uint32_t delta = 0x12345678;                     uint32_t k0 = k[0], k1 = k[1], k2 = k[2], k3 = k[3];   for (i = 0; i<32; i++) {                         v1 -= sum ^ ((v0 << 4) + k0) ^ (v0 + sum) ^ ((v0 >> 5) + k1);v0 -= sum ^ ((v1 << 4) + k2) ^ (v1 + sum) ^ ((v1 >> 5) + k3);sum -= delta;}                                              v[0] = v0; v[1] = v1;
}int main()
{uint32_t v[2] = { 1222194312, 51123276 };//hgame{H4//1391163586, 3986482669->ppy_v4c4//2921328102, 3126465133->ti0n!}uint32_t k[4] = { 0x44434241,0x48474645,0x4C4B4A49,0x504F4E4D };int n = sizeof(v) / sizeof(uint32_t);decrypt(v, k);for (int i = 0; i < n; i++){for (int j = 0; j < 4; j++){printf("%c", (v[i] >> (j * 8)) & 0xFF);}}printf("\n");return 0;
}
//hgame{H4ppy_v4c4ti0n!}

Flag Checker

apk文件,jadx-gui打开
首先对输入进行RC4加密,密钥为"carol"
然后对RC4加密的结果进行base64变换,最后与已知的base64字符串比较
flagchecker-main
首先对已知的base64字符串进行逆变换,得到RC4加密的密文

import base64
c="mg6CITV6GEaFDTYnObFmENOAVjKcQmGncF90WhqvCFyhhsyqq1s="
c=base64.b64decode(c)
arr=[]
for i in c:arr.append(ord(i))
print(arr)
#[154, 14, 130, 33, 53, 122, 24, 70, 133, 13, 54, 39, 57, 177, 102, 16, 211, 128, 86, 50, 156, 66, 97, 167, 112, 95, 116, 90, 26, 175, 8, 92, 161, 134, 204, 170, 171, 91]

已知密文和密钥。解RC4得到的明文即为flag

#include<stdio.h>
void rc4_init(unsigned char* s, unsigned char* key, unsigned long Len_k)
{int i = 0, j = 0;char k[256] = { 0 };unsigned char tmp = 0;for (i = 0; i < 256; i++) {s[i] = i;k[i] = key[i % Len_k];}for (i = 0; i < 256; i++) {j = (j + s[i] + k[i]) % 256;tmp = s[i];s[i] = s[j];s[j] = tmp;}
}
void rc4_crypt(unsigned char* Data, unsigned long Len_D, unsigned char* key, unsigned long Len_k) //加解密
{unsigned char s[256];rc4_init(s, key, Len_k);int i = 0, j = 0, t = 0;unsigned long k = 0;unsigned char tmp;for (k = 0; k < Len_D; k++) {i = (i + 1) % 256;j = (j + s[i]) % 256;tmp = s[i];s[i] = s[j];s[j] = tmp;t = (s[i] + s[j]) % 256;Data[k] = Data[k] ^ s[t];}
}
void main()
{unsigned char key[] = "carol";unsigned long key_len = sizeof(key) - 1;unsigned char data[] = { 154, 14, 130, 33, 53, 122, 24, 70, 133, 13, 54, 39, 57, 177, 102, 16, 211, 128, 86, 50, 156, 66, 97, 167, 112, 95, 116, 90, 26, 175, 8, 92, 161, 134, 204, 170, 171, 91 };rc4_crypt(data, sizeof(data), key, key_len);for (int i = 0; i < sizeof(data); i++){printf("%c", data[i]);}printf("\n");return;
}
//hgame{weLC0ME_To-tHE_WORLD_oF-AnDr0|D}

猫头鹰是不是猫

对输入的处理逻辑主要在sub_1347函数中
第17行是对a2所指地址处的数据进行处理,和输入无关,可以调试得到
第23行有输入参与,整个处理过程相当于一个64元一次方程组,在每一个64元一次方程中,输入的64个值作为未知量,每个未知量的系数是从a2所指地址处取出(可调试得到)
mao-main
调试取出的密文res和两次执行sub_1347函数时第23行a2所指地址处的数据(arr1和arr2)如下

res=[0x25d15d4,0x24c73b4,0x243cf71,0x230134c,0x2132cfe,0x1be2fca,0x142ca26,0xd61955,0x9427a8,0x9b8674,0x90c832,0x8812c7,0x80ba58,0x7981e1,0x72ab68,0x74cb4b,0x723f3f,0x7cc258,0x89cd5c,0x88e2a2,0x8e8906,0x8b88a0,0x8eec8d,0x8f3573,0x8b746f,0x912c82,0x8d7cf2,0x832099,0x7f45a5,0x685aff,0x50a4d2,0x526fe2,0x58923b,0x529ec1,0x516d1a,0x5b7453,0x7028e6,0x89c6fa,0xa5d6ae,0xd37a14,0xb8cfaa,0xb0bb4b,0xae69a4,0xa1154b,0x9dcbe7,0xa1dc20,0xaa07e3,0xb25cb1,0xb2fd98,0xb12f29,0xe428a0,0x11b2184,0x1615722,0x1a502f3,0x1c0aa9d,0x1d4169f,0x1ef8b76,0x233e5bb,0x275a6f0,0x2a9ca35,0x2a8904c,0x2a194ef,0x2926f39,0x28e92c3]
arr1=[0x10,0x10,0x10,0x10,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0x10,0x12,0x13,0x11,0x11,0x11,0x11,0x10,0xf,0x12,0x14,0x14,0x12,0x10,0x13,0x13,0x12,0x14,0x14,0x13,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x12,0x11,0x11,0x11,0x11,0x11,0x11,0x12,0x10,0x10,0x10,0x10,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0x10,0xf,0xf,0x10,0xf,0xe,0xd,0xb,0xb,0xd,0xd,0xf,0x11,0x12,0xc,0xc,0xe,0xc,0x10,0x11,0xe,0xe,0x12,0x11,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x12,0x10,0x10,0x10,0x10,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0x10,0x10,0x10,0xe,0xe,0xd,0x9,0xa,0xb,0xa,0xb,0x11,0x9,0xb,0xd,0xf,0xa,0x9,0x9,0xa,0xd,0xf,0xd,0x11,0x11,0x13,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x12,0x10,0x10,0x10,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0x10,0x10,0xe,0xe,0xd,0xe,0xd,0xf,0x14,0x10,0xe,0xe,0x12,0x10,0x9,0xe,0xe,0xb,0xb,0x7,0x7,0xa,0xc,0xf,0x12,0x14,0x13,0x12,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x12,0x10,0x10,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0x10,0x11,0xf,0xd,0xd,0xd,0x10,0xe,0x11,0x12,0x10,0xe,0x11,0xe,0x11,0xc,0xa,0xe,0xe,0xa,0xb,0x7,0x8,0xc,0x11,0x15,0x14,0x15,0x15,0x11,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x10,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0x12,0x11,0xd,0xc,0x9,0x9,0x8,0x7,0xd,0x11,0x12,0xf,0xe,0xf,0x11,0xf,0xa,0xd,0xc,0x9,0xa,0x9,0xc,0xe,0x11,0x14,0x14,0x15,0x14,0x11,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0x10,0x13,0x13,0x11,0xc,0xb,0xa,0xb,0x7,0x7,0x7,0x9,0xe,0xf,0xb,0x9,0xe,0x11,0xd,0xa,0xd,0xc,0xc,0xf,0x11,0xf,0x10,0x11,0x12,0x12,0x12,0x12,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0x10,0x13,0x10,0x10,0xb,0x7,0xf,0xd,0xb,0x9,0x7,0x7,0x8,0x8,0x8,0x9,0xa,0xd,0x11,0xf,0xf,0xd,0x10,0x13,0x11,0xe,0xf,0xf,0x10,0xe,0x10,0x11,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0x11,0x13,0x10,0xe,0x9,0x8,0x7,0x6,0xb,0xb,0xa,0x6,0x4,0x1,0x2,0x2,0x2,0x7,0xe,0x11,0x10,0xf,0x10,0x13,0x11,0x9,0x5,0x9,0xd,0xd,0x12,0x14,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0x10,0x10,0xe,0xb,0xb,0x9,0x7,0x8,0x8,0x7,0x9,0xb,0x6,0x2,0x5,0x8,0x9,0x6,0x1,0x8,0xe,0x11,0xf,0xe,0x12,0x8,0x8,0xa,0x5,0xb,0xe,0x11,0x14,0x11,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xe,0x10,0xc,0xd,0x8,0xa,0x9,0x8,0x9,0xb,0x9,0x6,0x6,0x0,0x3,0x8,0x5,0x6,0x4,0xc,0x11,0x12,0x11,0xf,0x7,0x8,0x7,0xf,0xe,0x10,0x12,0x12,0x12,0x11,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x11,0x11,0x10,0x10,0x11,0x11,0x11,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0x10,0x10,0xc,0xe,0xe,0xd,0xa,0x9,0xa,0xa,0xb,0xb,0xa,0x4,0x6,0x0,0x0,0x0,0x0,0x9,0x4,0xa,0x10,0x13,0x12,0xc,0x4,0x0,0x0,0x9,0xf,0x11,0x11,0x12,0x12,0x11,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x12,0x15,0x15,0x17,0x13,0x11,0x11,0x11,0x11,0x11,0x10,0x11,0x11,0x11,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0x10,0xe,0xf,0x10,0xb,0x9,0xa,0xa,0xa,0xa,0xa,0xc,0xc,0x6,0x7,0x0,0x0,0x0,0x2,0xa,0x4,0xc,0x10,0x10,0x12,0x11,0x7,0x0,0x0,0xa,0x10,0x12,0x12,0x15,0x14,0x12,0x10,0x10,0x10,0x10,0x10,0x10,0x15,0x14,0x11,0x10,0x12,0x13,0x15,0x11,0x10,0x10,0x10,0x10,0x11,0x10,0x11,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xe,0x10,0x11,0xf,0xd,0xb,0xb,0xb,0x8,0x9,0xc,0xe,0xe,0xc,0x6,0x7,0x2,0x4,0xb,0x6,0x5,0xd,0xf,0x11,0x12,0x12,0xe,0x6,0x7,0xd,0x12,0x11,0xe,0x10,0x14,0x10,0x10,0x10,0xf,0x10,0x10,0x12,0x14,0x10,0x10,0x10,0x10,0x10,0x15,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xd,0xf,0xe,0xd,0xb,0xa,0xa,0xa,0xb,0x9,0xb,0xd,0xd,0xf,0xc,0x6,0xa,0xa,0x5,0x9,0xa,0xd,0xe,0xc,0x13,0x11,0xe,0xc,0xb,0xe,0x15,0x12,0x11,0x12,0x13,0x12,0x10,0xf,0xf,0x10,0x10,0x14,0x11,0x10,0x10,0x10,0x10,0x10,0x15,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0xf,0xf,0xf,0xf,0xf,0xf,0x10,0xd,0xc,0xb,0xa,0x9,0xa,0x9,0xa,0x8,0x7,0x8,0xb,0xd,0xf,0x10,0xe,0xb,0xb,0xc,0xa,0xa,0xc,0xc,0xa,0x12,0x10,0x13,0x10,0x10,0x11,0x14,0x11,0x10,0xe,0x12,0x12,0x10,0xf,0xf,0xf,0x10,0x16,0x10,0x10,0x10,0x10,0x10,0x10,0x15,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0xf,0xf,0xf,0xf,0xf,0xf,0x10,0xe,0xa,0x8,0x8,0x8,0x8,0x7,0xa,0x8,0x5,0x6,0x7,0xc,0x10,0xf,0xf,0xd,0xb,0xa,0x5,0x6,0xa,0xb,0x7,0xf,0xf,0xe,0xb,0x11,0x11,0x11,0x11,0x10,0x10,0xf,0x10,0xf,0xf,0xf,0xf,0x10,0x15,0x10,0x10,0x10,0x10,0x10,0x10,0x15,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xe,0x9,0x7,0x7,0xa,0x9,0x6,0xa,0xc,0x6,0x3,0x7,0xa,0xd,0x10,0xa,0x6,0x6,0x8,0x6,0x3,0x2,0x5,0x3,0x9,0xf,0xb,0x7,0x8,0xd,0x12,0xe,0xf,0x10,0x10,0x10,0xf,0xf,0xf,0xf,0x10,0x15,0x10,0x10,0x10,0x10,0x10,0x11,0x15,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0xf,0xf,0xf,0xf,0xf,0xf,0x10,0xd,0x9,0xa,0xb,0xa,0x8,0x4,0x8,0xc,0x9,0x7,0x6,0x6,0xc,0xd,0x7,0x7,0x7,0x9,0x9,0x6,0x4,0x1,0x1,0x4,0xd,0xc,0x9,0x5,0x5,0xa,0xd,0xd,0x10,0x12,0x10,0xf,0xf,0xf,0xf,0xf,0x11,0x16,0x14,0x13,0x13,0x14,0x16,0x11,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x11,0xf,0xf,0xf,0xf,0xf,0xf,0x10,0xc,0xa,0xf,0xd,0xa,0xa,0x6,0x3,0x7,0xc,0x9,0x5,0x5,0xb,0xb,0x9,0xb,0xd,0xd,0xa,0x7,0x5,0x1,0x1,0x2,0xe,0x12,0x11,0x9,0x6,0x8,0xa,0xe,0xf,0x12,0x10,0xf,0xf,0xf,0xf,0xf,0xf,0x10,0x11,0x12,0x12,0x12,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xc,0xd,0xd,0xf,0xa,0xb,0x9,0x4,0x7,0xb,0xa,0x9,0x5,0xa,0xb,0xe,0xd,0xe,0xd,0xa,0x9,0x8,0x7,0x5,0x3,0x9,0xf,0x13,0x14,0xd,0x9,0x9,0xa,0xd,0x13,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0x11,0x11,0xb,0xe,0xa,0xa,0x7,0x6,0x3,0x6,0xa,0xc,0x6,0x7,0xe,0xd,0xe,0xc,0x10,0xe,0xc,0x8,0x6,0x5,0x4,0x6,0x9,0x11,0x14,0x14,0xb,0x6,0x9,0xc,0x15,0x10,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0x13,0x11,0x9,0xb,0x8,0x6,0x8,0x9,0x5,0x5,0x6,0x8,0x9,0xb,0xa,0xd,0xb,0xc,0xd,0x11,0xf,0x9,0x6,0x3,0x4,0x6,0x10,0x12,0x13,0x14,0xf,0x7,0x8,0xd,0x13,0x11,0x10,0x10,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0x12,0xd,0xb,0x9,0x7,0x6,0x9,0xa,0xa,0xb,0xe,0x9,0x9,0xe,0xa,0xc,0x8,0x8,0xd,0xc,0xf,0xb,0x6,0x9,0x7,0x8,0x11,0x15,0x15,0x15,0x10,0xc,0xf,0xf,0x12,0x13,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xe,0xe,0xe,0x9,0x6,0x7,0xa,0xe,0xc,0x9,0xb,0xb,0xd,0xc,0x8,0x6,0x7,0x8,0xc,0xa,0x9,0xb,0xe,0xc,0x8,0x6,0xa,0xb,0xb,0x11,0x13,0xe,0xe,0x10,0x12,0x12,0x12,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xf,0xf,0xf,0xf,0xf,0xf,0xe,0x11,0xe,0xf,0xb,0x7,0x6,0xb,0xa,0x7,0x4,0x7,0xa,0xe,0xe,0xc,0x8,0x6,0x3,0x4,0x3,0x2,0x6,0x8,0x5,0x5,0x2,0x6,0x6,0x7,0xd,0x11,0xe,0xa,0xd,0xf,0xf,0x11,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xf,0xe,0xe,0xe,0xf,0xf,0xf,0x10,0xb,0xe,0xd,0xa,0x8,0x5,0x7,0x5,0x3,0x4,0x8,0xe,0x10,0x9,0x5,0x7,0x8,0x8,0x5,0x2,0x6,0x8,0x6,0x5,0x7,0xa,0x5,0x5,0xc,0xc,0x8,0x8,0x8,0xd,0x10,0x11,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xf,0xe,0xe,0xe,0xe,0xe,0xf,0xa,0x8,0xc,0xb,0x10,0x7,0x5,0x3,0x4,0x2,0x2,0x5,0x9,0xd,0xa,0x3,0x4,0xa,0xd,0xa,0x5,0x6,0x9,0x6,0x5,0xc,0x8,0x5,0x6,0xc,0x9,0x6,0x6,0x5,0xa,0xf,0x10,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0x10,0x10,0x10,0x10,0x10,0x10,0xf,0xe,0xe,0xe,0xe,0xe,0xc,0x8,0x6,0x8,0xd,0xf,0x4,0x4,0x3,0x2,0x0,0x1,0x2,0x4,0x8,0x8,0x2,0x3,0x7,0xd,0xb,0xa,0x7,0x9,0x5,0x9,0xb,0x6,0x4,0xa,0xa,0x8,0x4,0x7,0x4,0x9,0xd,0x10,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0x10,0x10,0x10,0x10,0xe,0xe,0xe,0xe,0xf,0xc,0x9,0x6,0x5,0x7,0xd,0xc,0x2,0x2,0x4,0x1,0x0,0x0,0x1,0x4,0x8,0x7,0x2,0x3,0x5,0x7,0xc,0xf,0xa,0x9,0x6,0xa,0x8,0x3,0x3,0xc,0x8,0x4,0x5,0x8,0x4,0x7,0xd,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0x10,0x10,0x10,0xe,0xe,0xe,0xe,0xd,0xa,0x6,0x5,0x6,0x7,0xf,0x8,0x1,0x2,0x4,0x2,0x2,0x1,0x1,0x4,0x5,0x5,0x5,0x8,0x5,0x5,0xc,0x10,0xb,0xc,0xb,0xa,0x7,0x5,0x5,0xb,0x5,0x5,0x5,0x9,0x8,0xb,0xb,0xf,0xf,0xe,0xf,0x10,0x15,0x10,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0x14,0xf,0xf,0xf,0xf,0xf,0x10,0xe,0xe,0xe,0xf,0xb,0x8,0x5,0x6,0x6,0x9,0xf,0x4,0x2,0x5,0x4,0x1,0x5,0x3,0x1,0x5,0x4,0x4,0x7,0x8,0x6,0x7,0xb,0x10,0xd,0xf,0xc,0x9,0x7,0x8,0xb,0x8,0x7,0x7,0x5,0x9,0xc,0xc,0xa,0x12,0xf,0xe,0xf,0x15,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0x15,0xf,0xf,0xf,0xf,0xf,0x10,0xe,0xe,0xe,0xd,0x8,0x7,0x5,0x5,0x8,0xe,0xb,0x5,0xb,0x9,0x2,0x4,0x7,0x3,0x2,0x4,0x2,0x3,0x6,0x8,0x7,0x8,0xb,0xc,0x10,0x10,0xd,0xb,0x8,0x9,0xc,0xa,0x7,0xc,0x4,0x9,0x10,0xa,0x8,0x12,0xf,0xe,0x12,0x12,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0x15,0x10,0xf,0xf,0xf,0xf,0x10,0xe,0xe,0xe,0x9,0x7,0x5,0x4,0x7,0xf,0xf,0x8,0xc,0xd,0x3,0x2,0x5,0x7,0x2,0x4,0x6,0x2,0x2,0x5,0x9,0xb,0xb,0xc,0xd,0xe,0x11,0x10,0xc,0xb,0xc,0xd,0xa,0x9,0xf,0x3,0x7,0x10,0xd,0x8,0x11,0x10,0xf,0x16,0xe,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0x15,0x10,0xf,0xf,0xf,0xf,0x10,0xe,0xe,0xb,0x9,0x4,0x3,0x9,0xe,0xb,0x8,0x6,0xe,0x8,0x2,0x2,0x6,0x4,0x2,0x6,0x7,0x3,0x4,0x4,0x9,0xd,0xd,0xd,0xc,0xc,0x10,0x11,0xb,0xd,0xe,0xc,0xb,0x9,0xf,0x3,0x4,0xc,0x11,0x9,0xf,0x11,0x11,0x13,0xe,0xf,0xf,0xf,0x13,0xf,0xf,0xf,0xf,0xf,0x15,0x10,0xf,0xf,0xf,0xf,0x10,0xe,0xe,0xa,0xb,0x4,0x2,0xc,0x7,0xe,0x4,0x6,0xe,0xc,0x4,0x1,0x4,0x3,0x4,0x5,0x7,0x5,0x6,0x3,0x6,0xc,0xc,0xb,0xa,0xc,0xc,0x11,0xb,0xe,0x10,0x8,0x9,0xa,0x11,0x7,0x5,0x7,0x11,0xa,0x10,0x12,0x12,0x12,0xe,0xe,0xf,0xf,0x18,0x11,0xf,0xf,0xf,0xf,0x15,0xf,0xf,0xf,0xf,0xf,0x10,0xe,0xd,0xc,0x7,0x5,0x5,0x7,0xa,0xe,0x5,0x5,0xa,0xe,0x3,0x1,0x4,0x6,0x4,0x2,0x8,0x8,0x7,0x2,0x5,0x8,0xa,0xa,0x9,0xc,0xa,0x10,0xb,0xd,0xd,0x6,0x7,0xa,0x11,0xe,0x7,0x5,0xd,0x9,0x10,0x12,0xf,0x16,0x12,0x10,0x11,0x13,0x15,0x14,0xf,0xf,0xf,0xf,0x16,0xf,0xf,0xf,0xf,0xf,0x10,0xe,0xd,0xf,0x5,0x1,0x7,0x5,0xa,0x7,0x6,0x6,0xd,0xa,0x1,0x1,0x6,0x8,0x3,0x2,0x8,0x9,0x8,0x3,0x3,0x7,0x9,0x8,0x8,0xa,0x9,0xc,0xc,0xa,0xa,0x5,0x5,0x8,0xf,0x12,0x5,0x8,0xb,0xb,0x11,0x10,0xe,0xf,0x12,0x13,0x13,0x12,0xf,0x14,0x15,0x13,0x14,0x16,0x12,0xf,0xf,0xf,0xf,0xf,0x10,0xe,0xd,0xc,0x4,0x9,0x2,0x5,0x9,0x9,0x6,0x8,0xa,0x8,0x2,0x5,0x7,0x6,0x1,0x2,0x6,0x7,0x9,0x5,0x1,0x5,0x9,0x5,0x4,0x8,0x9,0xf,0xa,0x7,0x5,0x3,0x4,0x6,0xd,0x10,0x9,0xb,0xf,0xf,0x13,0x10,0xe,0xe,0xe,0xe,0xe,0xf,0xf,0xf,0x10,0x11,0x11,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xe,0xd,0xa,0x5,0x9,0x3,0x5,0x8,0xd,0x9,0xb,0xb,0xa,0x6,0x5,0x6,0x4,0x2,0x3,0x4,0x4,0xa,0x8,0x1,0x3,0xa,0x7,0x3,0x8,0xa,0xa,0xa,0x3,0x3,0x4,0x3,0x7,0xb,0xd,0xa,0xe,0xf,0x13,0x12,0x10,0xe,0xe,0xe,0xe,0xe,0xe,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0x10,0xd,0xd,0xe,0xc,0xc,0x5,0x6,0xd,0xe,0xb,0xb,0xa,0x8,0x4,0x5,0x4,0x3,0x2,0x6,0x3,0x1,0x8,0xb,0x3,0x2,0x7,0x9,0x6,0x8,0xc,0x8,0x9,0x2,0x5,0x5,0x3,0x9,0x9,0xb,0xc,0x10,0xf,0x12,0x10,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xd,0xd,0x10,0x11,0xb,0x7,0xa,0xf,0xd,0xb,0x8,0x7,0x9,0x6,0x4,0x6,0x3,0x2,0x7,0x7,0x1,0x4,0xb,0x6,0x1,0x3,0x8,0x8,0x8,0xa,0x8,0x3,0x2,0x4,0x7,0x6,0xa,0x5,0xa,0x10,0x15,0x14,0x11,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xd,0xd,0x11,0x12,0x10,0xb,0x12,0x12,0x10,0xd,0x9,0x7,0x7,0x2,0x5,0x7,0x4,0x2,0x5,0xa,0x7,0x1,0xa,0x9,0x2,0x1,0x5,0x8,0x8,0xa,0x7,0x2,0x2,0x4,0x9,0x6,0x9,0x6,0x9,0x12,0x17,0x15,0xe,0xd,0xd,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xd,0xd,0x11,0x12,0x10,0xe,0x16,0x13,0x10,0xa,0x8,0x8,0x4,0x2,0x5,0x7,0x7,0x4,0x3,0x9,0xd,0xa,0x6,0xb,0x5,0x0,0x3,0x8,0xa,0xa,0x4,0x1,0x1,0x6,0x5,0x6,0x9,0xb,0xa,0x11,0x16,0x11,0xd,0xd,0xd,0xd,0xe,0xe,0xe,0xe,0x14,0xe,0xe,0xe,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xd,0xd,0x12,0x13,0x11,0xe,0x13,0xc,0xc,0xa,0xa,0x6,0x4,0x4,0x7,0x8,0x8,0x5,0x2,0x8,0xb,0xb,0x9,0xc,0x9,0x3,0x3,0x8,0xa,0x6,0x3,0x1,0x3,0x5,0x2,0x8,0xb,0xa,0xd,0xe,0x12,0xf,0xd,0xd,0xd,0xd,0xd,0xe,0xe,0xe,0x14,0xe,0xe,0xe,0xe,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xd,0xd,0x10,0x13,0x12,0x10,0x11,0x9,0xb,0xb,0x9,0x6,0x7,0x7,0x8,0x8,0x6,0x5,0x1,0x5,0xa,0xa,0x8,0x6,0x7,0x5,0x4,0x8,0x7,0x2,0x3,0x3,0x3,0x3,0x4,0x7,0xa,0xa,0xd,0xd,0xe,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xe,0x11,0x12,0xe,0xe,0xe,0xe,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xd,0xd,0xf,0x14,0x13,0xf,0x12,0xb,0xc,0xa,0x9,0x4,0x7,0x6,0x7,0x7,0x6,0x4,0x2,0x3,0x7,0xa,0xa,0x7,0x7,0x4,0x7,0x7,0x3,0x3,0x3,0x3,0x3,0x5,0x6,0x9,0x9,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xe,0xe,0x13,0xf,0xe,0xe,0xe,0xe,0xf,0xe,0xf,0xf,0xf,0xf,0xf,0xf,0xf,0xd,0xd,0xd,0x13,0x14,0xe,0x11,0xe,0xd,0xb,0xa,0x4,0x7,0x4,0x6,0x6,0x7,0x5,0x3,0x4,0x5,0x8,0xa,0xa,0x5,0x1,0x5,0x2,0x1,0x3,0x4,0x2,0x4,0x7,0x9,0x8,0xd,0xe,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xe,0xd,0x15,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xf,0xf,0xf,0xf,0xf,0xf,0xd,0xd,0xd,0xe,0xf,0xd,0x11,0x11,0xd,0xd,0xa,0x3,0x6,0x5,0x7,0x6,0x5,0x4,0x4,0x3,0x5,0x5,0x7,0xa,0x9,0x5,0x4,0x3,0x4,0x3,0x1,0x3,0x8,0xd,0x9,0x8,0xf,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xf,0x15,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xf,0xf,0xf,0xe,0xe,0xe,0xf,0xd,0xd,0xd,0xd,0xd,0xd,0xe,0x12,0xc,0x8,0x9,0x3,0x6,0x6,0x8,0x8,0x5,0x2,0x3,0x2,0x2,0x6,0x8,0x7,0x6,0x6,0x5,0x3,0x1,0x2,0x3,0x8,0xd,0xb,0x7,0x10,0xe,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0x11,0x12,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xf,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0x10,0xb,0x5,0x7,0x5,0x6,0x6,0x7,0x7,0x8,0x3,0x1,0x4,0x4,0x4,0x6,0x9,0x8,0x6,0x6,0x4,0x1,0x3,0x8,0xa,0x7,0x8,0xe,0xe,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0x13,0x10,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xf,0x12,0xd,0xd,0xc,0xd,0xd,0xd,0xd,0xd,0xc,0x8,0x7,0x9,0x6,0x3,0x4,0x6,0x8,0x7,0x2,0x2,0x7,0x7,0x7,0x7,0x7,0x6,0x5,0x3,0x0,0x4,0x6,0x3,0x6,0xe,0xe,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0x15,0xe,0xe,0xe,0x10,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xe,0xf,0x13,0x14,0xd,0xc,0xd,0xd,0xd,0xd,0xd,0xd,0xc,0xb,0xa,0x9,0xa,0x5,0x1,0x2,0x3,0x7,0x5,0x2,0x3,0x6,0x6,0x6,0x6,0x5,0x3,0x1,0x2,0x3,0x3,0x5,0x9,0xe,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0x15,0xe,0xe,0xe,0x15,0xe,0xe,0xe,0x10,0x12,0x14,0x12,0xf,0x12,0x15,0x15,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xc,0xe,0xe,0xc,0xa,0x2,0x3,0x2,0x2,0x3,0x4,0x4,0x4,0x5,0x5,0x4,0x3,0x2,0x2,0x1,0x1,0x2,0x6,0xa,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xe,0x15,0xe,0xe,0x10,0x14,0x10,0x16,0x17,0x16,0x17,0x17,0x18,0x17,0x14,0x18,0x16,0xd,0xc,0xd,0xc,0xd,0xd,0xd,0xd,0xd,0xd,0xe,0xe,0xe,0xb,0x9,0x8,0x5,0x4,0x2,0x4,0x5,0x7,0x8,0x9,0x8,0x8,0x5,0x3,0x2,0x2,0x6,0x4,0xb,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0x14,0xf,0xd,0x15,0xf,0xe,0x13,0x16,0x17,0x17,0x18,0x18,0x18,0x18,0x18,0x15,0xd,0xc,0xc,0xd,0xd,0xc,0xd,0xd,0xd,0xd,0xd,0xf,0xf,0xe,0x9,0x7,0x6,0x2,0x3,0x7,0x9,0xa,0xb,0xb,0xa,0xa,0x8,0x4,0x3,0x2,0x4,0x5,0xc,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xf,0x14,0x11,0x13,0xd,0xf,0x14,0x15,0x16,0x16,0x16,0x13,0x17,0x18,0x18,0x18,0xd,0xd,0xc,0xd,0xd,0xc,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xa,0x6,0x3,0x2,0x7,0x8,0xa,0xb,0xc,0xc,0xc,0xd,0xd,0x5,0x3,0x2,0x3,0x8,0xc,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0x11,0x14,0xe,0xd,0xe,0x12,0x13,0x14,0x14,0x15,0x14,0x14,0x15,0x16,0x14,0xd,0xd,0xc,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xa,0x6,0x6,0x6,0xa,0xb,0xb,0xc,0xd,0xe,0xf,0x10,0x10,0x8,0x6,0x4,0x5,0x9,0xb,0xe,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xf,0xe,0xd,0xe,0xf,0xe,0xf,0xf,0x11,0x12,0x13,0x13,0x13,0x13,0x13,0x14,0x14,0x13,0xd,0xc,0xd,0xd,0xd,0xc,0xc,0xd,0xd,0xd,0xd,0xd,0xd,0xe,0xc,0x9,0x8,0xa,0xa,0xc,0xe,0xe,0x10,0x12,0x13,0x13,0x12,0xd,0xa,0xa,0x7,0x9,0xf,0x13,0x11,0xe,0xe,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xe,0xe,0x12,0x11,0x13,0x13,0x13,0x13,0xf,0x10,0xe,0xd,0x13,0x12,0x12,0x12,0xd,0x10,0x11,0xd,0xc,0xd,0xd,0xd,0xc,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0x12,0x10,0xc,0xb,0x10,0x10,0x11,0x12,0x14,0x14,0x16,0x14,0x12,0x10,0xd,0xd,0xc,0x8,0x9,0xe,0x13,0x12,0x11,0x13,0x12,0xe,0xd,0xe,0xf,0xe,0xe,0x12,0x11,0x11,0x11,0x11,0x11,0x11,0x10,0x10,0xd,0xd,0xd,0xc,0xe,0xf,0x10,0x11,0x11,0x12,0xc,0xc,0xc,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0x15,0x12,0xd,0xb,0x11,0x13,0x14,0x15,0x14,0x12,0x13,0x12,0xe,0xe,0xd,0xd,0xd,0x9,0x7,0xc,0x12,0x12,0x10,0x10,0x13,0x14,0x11,0x10,0x10,0x12,0x11,0xf,0xe,0xd,0xc,0xd,0xe,0xd,0xc,0xa,0xa,0x9,0xc,0x10,0x10,0x12,0x13,0x12,0x12,0x13,0xc,0xc,0xc,0xc,0xd,0xc,0xc,0xd,0xd,0xd,0xd,0xd,0xd,0x11,0x15,0x14,0x10,0xd,0xe,0xe,0x10,0x10,0x10,0x10,0xe,0xf,0xd,0xd,0xd,0xd,0xd,0xc,0x7,0xa,0xe,0x14,0xd,0xe,0x10,0x14,0x14,0x11,0x10,0xc,0xe,0xb,0xe,0xf,0xa,0xb,0xd,0xa,0x8,0x9,0x9,0x8,0xe,0x13,0x13,0x12,0x12,0x12,0x12,0x13,0xc,0xc,0xc,0xd,0xc,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xf,0x16,0x16,0x14,0xf,0xd,0xd,0xa,0x9,0x9,0xa,0xb,0xb,0x9,0xa,0xd,0xc,0xb,0xa,0xa,0x9,0xa,0x9,0x13,0x11,0x8,0x8,0xf,0x15,0x10,0xb,0xa,0xa,0xc,0xa,0x9,0x8,0xb,0x8,0x8,0x6,0x9,0xd,0x9,0x9,0xc,0x10,0x12,0x11,0x10,0x12,0x14,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xd,0xe,0xf,0x14,0x16,0x16,0x16,0x16,0x10,0xc,0x8,0x8,0x6,0x6,0x8,0x7,0x7,0x6,0x7,0xa,0x8,0x9,0x8,0xb,0x9,0x8,0x6,0xc,0x10,0xa,0x6,0xb,0xf,0xe,0xa,0xc,0xb,0xb,0xb,0x9,0x7,0x9,0x8,0xb,0xa,0x8,0x7,0x8,0x9,0x12,0x14,0x14,0x13,0x13,0x11,0x13]
arr2=[0xf,0xe,0xe,0xd,0xd,0xe,0xe,0xd,0xc,0xa,0xd,0x15,0x11,0xe,0xb,0xa,0xb,0x10,0x11,0x8,0x8,0x7,0xa,0xc,0xd,0xc,0x10,0x12,0x9,0x6,0x7,0x8,0x7,0x8,0x9,0x8,0x9,0xa,0xc,0xc,0xe,0x10,0x10,0xe,0x9,0x4,0x3,0x5,0x6,0x6,0x6,0x3,0x4,0x6,0x6,0x5,0x5,0x5,0x5,0x4,0x5,0x7,0x5,0x4,0xf,0xf,0xe,0xd,0xd,0xe,0xe,0xd,0xc,0xb,0x15,0xf,0xf,0xe,0xb,0xa,0x8,0x8,0xa,0x8,0x8,0x7,0x9,0xb,0xb,0xb,0x13,0xd,0xc,0x5,0x6,0x7,0x7,0x8,0x9,0x9,0xa,0xc,0xf,0x11,0x11,0x11,0x10,0xa,0x4,0x4,0x5,0x6,0x7,0x7,0x6,0x4,0x5,0x7,0x6,0x6,0x5,0x5,0x4,0x3,0x5,0x6,0x4,0x3,0xf,0xf,0xe,0xd,0xd,0xe,0xe,0xd,0xc,0x13,0xf,0xd,0xf,0xe,0xc,0xa,0x8,0x8,0x9,0x8,0x8,0x7,0x9,0xa,0x9,0x10,0xe,0x8,0x11,0x5,0x6,0x9,0x10,0x11,0x11,0x12,0x12,0x13,0x15,0x16,0x16,0x15,0x13,0xa,0x4,0x5,0x6,0x7,0x9,0x9,0x6,0x5,0x8,0x8,0x6,0x6,0x5,0x4,0x4,0x3,0x3,0x4,0x3,0x3,0xf,0xf,0xe,0xe,0xd,0xe,0xe,0xe,0xe,0x13,0xc,0xd,0xe,0xe,0xd,0xc,0xa,0x9,0x9,0x9,0x8,0x7,0x9,0xa,0xc,0x12,0xa,0x8,0x12,0x6,0x6,0x7,0x7,0x6,0x7,0x8,0x9,0xc,0xf,0x14,0xe,0xa,0x5,0x4,0x5,0x6,0x7,0x9,0xa,0xa,0x7,0x7,0x9,0x9,0x7,0x6,0x6,0x5,0x6,0x6,0x6,0x6,0x5,0x5,0xf,0xe,0xe,0xd,0xd,0xe,0xe,0xe,0xf,0x12,0xb,0xc,0xd,0xe,0xe,0xe,0xc,0xb,0xb,0xb,0xa,0xa,0xb,0xe,0x17,0x12,0x12,0x12,0x14,0xc,0x7,0x7,0x7,0x6,0x6,0x8,0xa,0xd,0xe,0x14,0xb,0x6,0x4,0x5,0x6,0x7,0x9,0xa,0xb,0xa,0x7,0x9,0xb,0x9,0x7,0x6,0x6,0x6,0x7,0x7,0x7,0x7,0x7,0x6,0xf,0xf,0xe,0xe,0xd,0xe,0xf,0xe,0xc,0x14,0x8,0x8,0xb,0xe,0xe,0xe,0xd,0x11,0x16,0xf,0xc,0xc,0xe,0x16,0xe,0xd,0xc,0x9,0x8,0x13,0x7,0x7,0x7,0x6,0x6,0x7,0x9,0xc,0xd,0x14,0xa,0x7,0x6,0x6,0x8,0x9,0xa,0xc,0xc,0xa,0x9,0xb,0xb,0xa,0x8,0x7,0x7,0x7,0x7,0x8,0x7,0x7,0x7,0x6,0xf,0xe,0xe,0xe,0xd,0xe,0xf,0xd,0x7,0xa,0x10,0x4,0x5,0xc,0xf,0x13,0x16,0x13,0xd,0xc,0xc,0xd,0x16,0xf,0xd,0xd,0xc,0x9,0x7,0x11,0xb,0x8,0x7,0x6,0x5,0x6,0x9,0xc,0xd,0x14,0xb,0xa,0x8,0x8,0x9,0xb,0xb,0xd,0xc,0xa,0xb,0xc,0xb,0xb,0x9,0x8,0x7,0x7,0x8,0x8,0x8,0x7,0x7,0x6,0xe,0xe,0xe,0xe,0xd,0xd,0xe,0xb,0x3,0x2,0x9,0x11,0x12,0x13,0x13,0x12,0xd,0xc,0xc,0xc,0xc,0x10,0x12,0xd,0xd,0xd,0xb,0x9,0x8,0xe,0xd,0x7,0x8,0x6,0x5,0x6,0x9,0xb,0xc,0x14,0xc,0xb,0xa,0xa,0xb,0xc,0xc,0xd,0xc,0xb,0xc,0xd,0xc,0xb,0xa,0x8,0x8,0x8,0x8,0x8,0x8,0x7,0x7,0x6,0xe,0xe,0xe,0xe,0xd,0xd,0xe,0x7,0x2,0x4,0x4,0x4,0x4,0x3,0x3,0x9,0xa,0xa,0xb,0xb,0xc,0xc,0xc,0xc,0xc,0xc,0xb,0x8,0x7,0x5,0x4,0x6,0x7,0x6,0x5,0x5,0x8,0xa,0xb,0x14,0xd,0xc,0xb,0xb,0xc,0xd,0xd,0xd,0xd,0xc,0xd,0xd,0xd,0xc,0xa,0x9,0x8,0x8,0x8,0x8,0x8,0x7,0x7,0x6,0xf,0xe,0xe,0xe,0xd,0xd,0xd,0x3,0x4,0x5,0x5,0x5,0x4,0x3,0x3,0x3,0x7,0x9,0xb,0xc,0xd,0xc,0xd,0xc,0xc,0xb,0x9,0x7,0x5,0x5,0x5,0x5,0x4,0x3,0x3,0x3,0x3,0x4,0x7,0xb,0xb,0xc,0xc,0xc,0xd,0xd,0xe,0xd,0xd,0xd,0xd,0xe,0xd,0xc,0xb,0x9,0x8,0x8,0x8,0x8,0x8,0x7,0x6,0x5,0xf,0xf,0xe,0xe,0xd,0xd,0xb,0x3,0x5,0x6,0x6,0x4,0x4,0x3,0x3,0x3,0x3,0x9,0xd,0xd,0xd,0xc,0xa,0xb,0x9,0x8,0x7,0x5,0x4,0x3,0x3,0x2,0x2,0x1,0x1,0x1,0x1,0x2,0x2,0x4,0x7,0xa,0xb,0xd,0xe,0xd,0xe,0xe,0xd,0xe,0xe,0xd,0xd,0xc,0xb,0xa,0x9,0x8,0x8,0x8,0x8,0x7,0x6,0x5,0xf,0xf,0xe,0xe,0xd,0xd,0x9,0x3,0x5,0x6,0x5,0x5,0x4,0x4,0x3,0x2,0x2,0x4,0xb,0xc,0xa,0x8,0x7,0x5,0x4,0x4,0x4,0x3,0x3,0x2,0x2,0x2,0x1,0x1,0x1,0x1,0x1,0x2,0x2,0x3,0x4,0x4,0x5,0x9,0xd,0xd,0xe,0xd,0xe,0xd,0xd,0xd,0xd,0xc,0xb,0x9,0x9,0x8,0x8,0x8,0x8,0x7,0x5,0x6,0xf,0xe,0xe,0xe,0xd,0xd,0x7,0x4,0x6,0x6,0x5,0x4,0x4,0x3,0x3,0x2,0x2,0x2,0x4,0x9,0x9,0x5,0x3,0x2,0x2,0x2,0x2,0x3,0x3,0x3,0x2,0x2,0x1,0x1,0x1,0x1,0x1,0x2,0x2,0x5,0x5,0x3,0x2,0x2,0x6,0xc,0xd,0xd,0xd,0xe,0xe,0xd,0xc,0xb,0x9,0x8,0x7,0x7,0x7,0x7,0x8,0x7,0x5,0x6,0xf,0xe,0xe,0xe,0xd,0xc,0x4,0x5,0x7,0x6,0x5,0x4,0x4,0x3,0x3,0x2,0x2,0x2,0x3,0x4,0x4,0x2,0x2,0x2,0x2,0x2,0x1,0x2,0x3,0x3,0x3,0x3,0x2,0x1,0x1,0x1,0x2,0x2,0x4,0x6,0x6,0x3,0x2,0x2,0x2,0x5,0x9,0xc,0xe,0xe,0xc,0x8,0x6,0x5,0x5,0x6,0x7,0x6,0x6,0x6,0x7,0x6,0x5,0x6,0xf,0xe,0xe,0xe,0xd,0xb,0x4,0x5,0x7,0x6,0x5,0x5,0x4,0x4,0x3,0x3,0x3,0x2,0x2,0x2,0x2,0x4,0x7,0x9,0xa,0x9,0x7,0x4,0x2,0x4,0x4,0x4,0x4,0x3,0x2,0x2,0x2,0x2,0x4,0x4,0x4,0x4,0x4,0x3,0x3,0x4,0x5,0x9,0xc,0xa,0x4,0x3,0x4,0x3,0x3,0x4,0x6,0x6,0x7,0x8,0x7,0x5,0x4,0x6,0xf,0xe,0xe,0xe,0xd,0xa,0x3,0x5,0x7,0x6,0x5,0x4,0x4,0x3,0x3,0x3,0x3,0x3,0x2,0x2,0x7,0xd,0xd,0xc,0xd,0x12,0xe,0xa,0x5,0x1,0x4,0x4,0x4,0x5,0x5,0x4,0x3,0x2,0x4,0x4,0x3,0x4,0x5,0x6,0x5,0x6,0x6,0x5,0x6,0x5,0x4,0x4,0x5,0x4,0x4,0x3,0x5,0x7,0x8,0x9,0x6,0x3,0x2,0x3,0xe,0xe,0xe,0xe,0xd,0x9,0x4,0x6,0x7,0x7,0x5,0x5,0x4,0x3,0x3,0x3,0x3,0x3,0x2,0x8,0x10,0x11,0xf,0xa,0x7,0x9,0xf,0xd,0xb,0x5,0x2,0x3,0x6,0x6,0x7,0x4,0x2,0x2,0x3,0x1,0x0,0x1,0x4,0x3,0x5,0x4,0x5,0x6,0x4,0x3,0x4,0x4,0x4,0x5,0x4,0x3,0x5,0x9,0xa,0xa,0x6,0x3,0x2,0x2,0xe,0xe,0xe,0xd,0xd,0x7,0x4,0x5,0x7,0x7,0x6,0x5,0x4,0x4,0x4,0x4,0x3,0x3,0x6,0x10,0x12,0x11,0x6,0x4,0x2,0x3,0x3,0xd,0xe,0x9,0x3,0x3,0x3,0x5,0x4,0x2,0x2,0x1,0x1,0x0,0x0,0x0,0x3,0x2,0x4,0x1,0x1,0x3,0x2,0x2,0x4,0x5,0x6,0x5,0x5,0x4,0x4,0x9,0xa,0x8,0x5,0x2,0x2,0x3,0xe,0xe,0xe,0xd,0xd,0x6,0x6,0x5,0x7,0x7,0x7,0x6,0x5,0x4,0x4,0x4,0x4,0x5,0x9,0x11,0x13,0x10,0x5,0x3,0x2,0x2,0x2,0xa,0xd,0xb,0x4,0x3,0x3,0x1,0x2,0x2,0x1,0x0,0x0,0x0,0x0,0x1,0x3,0x1,0x3,0x0,0x1,0x3,0x6,0x7,0x5,0x4,0x4,0x5,0x5,0x5,0x4,0xb,0xa,0x7,0x4,0x3,0x3,0x5,0xe,0xe,0xd,0xd,0xd,0x6,0x6,0x6,0x6,0x6,0x6,0x6,0x5,0x4,0x3,0x3,0x3,0x4,0x6,0x8,0xc,0xb,0x6,0x2,0x2,0x2,0x2,0x2,0x4,0x3,0x1,0x1,0x2,0x3,0x2,0x3,0x2,0x1,0x1,0x1,0x2,0x2,0x2,0x1,0x2,0x1,0x0,0x3,0xc,0x10,0xf,0xa,0x6,0x4,0x5,0x5,0x4,0xc,0xc,0xa,0x8,0x6,0x6,0x8,0xe,0xd,0xd,0xd,0xc,0x6,0x6,0x7,0x6,0x6,0x6,0x5,0x4,0x3,0x3,0x3,0x3,0x3,0x4,0x3,0x2,0x2,0x2,0x2,0x2,0x1,0x1,0x1,0x1,0x2,0x2,0x3,0x3,0x3,0x2,0x3,0x2,0x2,0x2,0x2,0x3,0x2,0x2,0x2,0x2,0x4,0x1,0x2,0x6,0xb,0x11,0x11,0xb,0x8,0x5,0x5,0x4,0xb,0xd,0xb,0xb,0x9,0x8,0x9,0xe,0xd,0xd,0xd,0xc,0x5,0x4,0x7,0x6,0x6,0x5,0x4,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x2,0x2,0x3,0x3,0x2,0x3,0x3,0x3,0x3,0x2,0x1,0x1,0x2,0x3,0x3,0x2,0x3,0x3,0x3,0x4,0x4,0x4,0x4,0xb,0x10,0xe,0x8,0x5,0x4,0xa,0xb,0xb,0xc,0xb,0x9,0x8,0xd,0xd,0xd,0xd,0xa,0x2,0x3,0x5,0x6,0x6,0x4,0x3,0x2,0x2,0x2,0x1,0x1,0x1,0x2,0x1,0x1,0x1,0x1,0x2,0x1,0x1,0x1,0x2,0x2,0x3,0x2,0x3,0x3,0x3,0x3,0x2,0x1,0x1,0x1,0x1,0x1,0x3,0x3,0x2,0x3,0x2,0x3,0x4,0x5,0x5,0x4,0x2,0xe,0x11,0xe,0x5,0x4,0x9,0xa,0xa,0xb,0xb,0x9,0x9,0xc,0xc,0xc,0xc,0xa,0x4,0x3,0x3,0x5,0x5,0x3,0x2,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x2,0x3,0x2,0x2,0x3,0x5,0x3,0x2,0x3,0x2,0x2,0x2,0x2,0x2,0x2,0x3,0x2,0x2,0x2,0x1,0x1,0x2,0x3,0x5,0x5,0x5,0xb,0x13,0x11,0x6,0x5,0xb,0xc,0xb,0xb,0xb,0xa,0xa,0xc,0xc,0xc,0xc,0x9,0x5,0x4,0x2,0x4,0x4,0x2,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x1,0x2,0x2,0x2,0x4,0x3,0x2,0x2,0x3,0x2,0x2,0x2,0x2,0x3,0x2,0x2,0x3,0x1,0x1,0x2,0x3,0x3,0x2,0x3,0x4,0x5,0x6,0x8,0x11,0x13,0x7,0x5,0xc,0xc,0xc,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0x9,0x3,0x3,0x4,0x3,0x2,0x2,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x2,0x1,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x3,0x3,0x2,0x2,0x2,0x1,0x0,0x1,0x2,0x3,0x4,0x3,0x3,0x3,0x4,0x5,0x5,0x7,0xc,0x6,0x5,0xb,0xb,0xb,0xb,0xb,0xb,0xb,0xc,0xc,0xd,0xc,0x9,0x2,0x2,0x3,0x3,0x2,0x2,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x3,0x2,0x2,0x2,0x1,0x1,0x1,0x1,0x2,0x2,0x2,0x3,0x3,0x2,0x2,0x1,0x2,0x2,0x1,0x1,0x1,0x2,0x2,0x3,0x3,0x3,0x3,0x4,0x4,0x4,0x4,0x3,0x3,0x5,0xa,0xb,0xb,0xb,0xc,0xc,0xd,0xd,0xd,0xe,0xc,0x3,0x2,0x2,0x2,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x1,0x1,0x2,0x2,0x2,0x2,0x2,0x2,0x1,0x2,0x2,0x2,0x1,0x1,0x1,0x1,0x2,0x2,0x2,0x2,0x2,0x4,0x5,0x8,0xa,0xb,0xc,0x8,0x5,0x3,0x2,0x2,0x3,0x2,0x2,0x3,0x4,0x4,0x3,0x2,0x2,0x2,0x4,0xb,0xc,0xc,0xc,0xd,0xe,0xe,0xe,0xe,0xe,0xd,0x3,0x2,0x2,0x1,0x1,0x1,0x1,0x2,0x2,0x2,0x2,0x1,0x1,0x0,0x1,0x1,0x1,0x2,0x2,0x2,0x2,0x1,0x1,0x1,0x1,0x1,0x2,0x2,0x1,0x3,0xa,0xd,0xe,0xe,0xf,0xf,0x11,0x10,0xe,0xc,0xb,0x8,0x3,0x2,0x2,0x2,0x3,0x3,0x3,0x2,0x2,0x2,0x3,0xa,0xc,0xc,0xd,0xd,0xe,0xe,0xf,0xf,0xe,0xd,0x4,0x2,0x2,0x2,0x2,0x2,0x1,0x1,0x1,0x1,0x1,0x2,0x2,0x1,0x1,0x1,0x1,0x2,0x2,0x1,0x1,0x1,0x1,0x0,0x1,0x1,0x1,0x1,0x2,0x9,0xc,0x11,0x12,0x11,0x10,0xf,0x11,0x11,0x10,0x10,0xf,0x10,0xf,0x4,0x2,0x2,0x2,0x3,0x3,0x3,0x2,0x2,0x3,0xa,0xd,0xd,0xd,0xe,0xf,0xf,0xf,0xf,0xf,0xd,0x4,0x2,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x2,0x1,0x1,0x1,0x1,0x2,0x1,0x1,0x1,0x1,0x0,0x1,0x1,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x2,0x8,0xc,0x12,0x13,0x11,0xf,0x11,0x12,0x12,0x12,0x12,0x11,0xf,0x4,0x2,0x2,0x2,0x2,0x3,0x2,0x2,0x2,0x3,0xa,0xe,0xe,0xe,0xe,0x10,0xf,0xf,0xf,0xe,0xb,0x2,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x1,0x0,0x0,0x0,0x1,0x1,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x1,0x1,0x1,0x1,0x0,0x1,0x2,0x9,0xc,0xe,0x10,0xe,0x11,0x10,0x10,0x11,0xf,0xd,0xa,0x1,0x2,0x1,0x2,0x2,0x2,0x3,0x2,0x1,0x3,0xb,0xd,0xd,0xe,0xf,0x10,0xf,0xf,0xf,0xe,0x7,0x2,0x2,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x1,0x2,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x1,0x1,0x1,0x1,0x0,0x0,0x1,0x3,0x9,0xb,0xc,0xd,0xd,0xc,0xc,0xc,0xc,0xa,0x3,0x2,0x1,0x1,0x1,0x1,0x1,0x2,0x2,0x2,0x4,0xd,0xf,0xe,0xe,0xf,0x10,0xf,0xf,0xf,0xc,0x4,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x1,0x1,0x1,0x0,0x0,0x1,0x2,0x2,0x6,0x9,0xb,0xa,0xb,0xb,0xa,0x9,0x4,0x1,0x2,0x1,0x1,0x1,0x1,0x1,0x2,0x1,0x2,0x4,0xc,0xe,0xf,0xf,0x10,0x11,0x10,0xf,0x10,0x10,0x3,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x2,0x1,0x0,0x2,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x2,0x1,0x2,0x1,0x2,0x4,0x6,0x6,0x5,0x3,0x1,0x0,0x1,0x2,0x1,0x1,0x1,0x1,0x1,0x2,0x2,0x1,0x4,0xd,0xe,0xd,0xf,0x10,0x10,0x12,0x13,0x13,0x12,0x6,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x1,0x1,0x1,0x1,0x0,0x1,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x2,0x1,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x1,0x1,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x5,0xe,0xf,0xf,0xf,0xf,0x13,0x13,0x13,0x13,0x13,0xc,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x1,0x2,0x1,0x0,0x0,0x0,0x0,0x1,0x1,0x2,0x2,0x1,0x1,0x1,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x6,0xc,0x10,0x10,0x10,0x10,0x13,0x13,0x13,0x13,0x13,0x10,0x2,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x2,0x1,0x1,0x1,0x1,0x1,0x2,0x1,0x0,0x1,0x1,0x1,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x1,0x2,0x1,0x1,0x1,0x1,0x1,0x2,0x1,0x2,0x2,0x1,0x1,0x2,0x1,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x8,0x11,0xf,0x10,0x12,0x12,0x13,0x14,0x14,0x14,0x14,0x10,0x3,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x1,0x1,0x1,0x2,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x1,0x1,0x1,0x1,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x2,0x0,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x2,0xc,0x12,0x14,0x12,0x11,0x14,0x13,0x14,0x14,0x14,0x13,0x11,0x6,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x2,0x1,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x1,0x1,0x0,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x2,0xc,0x14,0x14,0x14,0x14,0x12,0x13,0x13,0x14,0x13,0x13,0x12,0xa,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x1,0x0,0x0,0x2,0x1,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x1,0x1,0x0,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x2,0x5,0x10,0x11,0x14,0x14,0x15,0x15,0x12,0x12,0x12,0x13,0x13,0x12,0xc,0x2,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x1,0x1,0x0,0x0,0x0,0x1,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x1,0x1,0x1,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x9,0x12,0x13,0x12,0x15,0x14,0x15,0xd,0xe,0xf,0xf,0x11,0x12,0xf,0x4,0x1,0x1,0x0,0x1,0x1,0x0,0x0,0x1,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x1,0x1,0x0,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x1,0x1,0x1,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x2,0xe,0x14,0x13,0x14,0x13,0x15,0x14,0x9,0xc,0xc,0x9,0xb,0x10,0xe,0x6,0x1,0x1,0x1,0x1,0x1,0x0,0x1,0x1,0x1,0x0,0x0,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x1,0x0,0x1,0x1,0x0,0x0,0x0,0x1,0x1,0x1,0x1,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x1,0x1,0x1,0x1,0x1,0x3,0x10,0x15,0x15,0x13,0x14,0x12,0x15,0xa,0xa,0xa,0xa,0xc,0xd,0xd,0x7,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x1,0x1,0x1,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0xa,0x11,0x14,0x15,0x14,0x13,0x14,0x13,0xb,0xc,0xe,0xe,0x10,0x11,0xd,0x8,0x2,0x1,0x1,0x1,0x1,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x2,0xf,0x14,0x13,0x14,0x15,0x14,0x14,0x14,0x11,0x12,0x11,0x13,0x14,0x13,0x12,0xc,0x2,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x1,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x6,0x13,0x14,0x13,0x14,0x14,0x15,0x14,0x15,0x13,0x12,0x14,0x14,0x14,0x14,0x13,0xd,0x3,0x1,0x2,0x1,0x1,0x1,0x0,0x1,0x1,0x0,0x0,0x0,0x0,0x1,0x1,0x1,0x0,0x0,0x0,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x2,0xf,0x14,0x15,0x14,0x13,0x15,0x15,0x16,0x14,0x13,0x13,0x14,0x14,0x14,0x13,0x12,0xe,0x3,0x2,0x1,0x1,0x1,0x1,0x0,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x1,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x1,0x5,0x14,0x15,0x15,0x15,0x13,0x15,0x16,0x16,0x15,0x14,0x14,0x14,0x14,0x13,0x13,0x12,0xd,0x3,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x9,0x15,0x15,0x15,0x15,0x15,0x13,0x16,0x16,0x16,0x14,0x14,0x14,0x14,0x13,0x13,0x11,0x9,0x2,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x1,0x1,0x0,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xe,0x16,0x16,0x16,0x16,0x15,0x14,0x16,0x16,0x16,0x13,0x14,0x14,0x14,0x14,0x12,0xd,0x4,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x5,0x12,0x16,0x16,0x16,0x15,0x15,0x15,0x14,0x16,0x16,0xf,0x10,0x11,0x11,0x11,0xe,0x7,0x2,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0x1,0xc,0x16,0x18,0x17,0x16,0x17,0x17,0x15,0x14,0x16,0x16,0xd,0xc,0xc,0xb,0xb,0x8,0x3,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x1,0x1,0x1,0x2,0x15,0x19,0x19,0x19,0x19,0x19,0x19,0x15,0x14,0x14,0x15,0xd,0xc,0xc,0xa,0x7,0x3,0x1,0x1,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x1,0x1,0x1,0x5,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x15,0x14,0x11,0x12,0xc,0xc,0xb,0x8,0x5,0x1,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xb,0x19,0x19,0x19,0x19,0x19,0x19,0x18,0x13,0x14,0xd,0xc,0xc,0xb,0x9,0x5,0x2,0x1,0x1,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x13,0x19,0x19,0x19,0x19,0x19,0x19,0x17,0x19,0x19,0x18,0xf,0xb,0x9,0x6,0x2,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0xa,0x6,0x3,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x7,0x3,0x2,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x16,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x5,0x2,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xa,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x3,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x15,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x2,0x2,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x2,0x1,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0xd,0x19,0x19,0x18,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19]

arr1和arr2的长度均为4096,即64*64的方阵
以arr1为例,需要注意的是
arr1的前64个元素是输入的第一个字符(比如a1)分别在64个一次方程中的系数,例如:

1个方程:arr1[0]*a1+arr1[64]*a2+...2个方程:arr1[1]*a1+arr1[65]*a2+...3个方程:arr1[2]*a1+arr1[66]*a2+...

于是需要对arr1和arr2进行转置处理,如下:

arr=[]
for i in range(64):tmp=""for j in range(64):if j==63:tmp += str((arr1[j * 64 + i]))+";"else:tmp+=str((arr1[j*64+i]))+","print(tmp)

已知密文res,将arr1和arr2进行转置处理后,用Matlab进行求解即可得到flag

arr=[104,103,97,109,101,123,49,48,48,48,49,49,49,48,48,48,48,48,49,49,48,48,48,48,49,48,48,48,48,48,48,48,48,49,49,48,48,48,49,48,49,48,49,49,48,48,48,48,49,48,48,48,49,48,48,49,49,48,48,49,49,49,49,125]
print("".join(chr(i) for i in arr))
#hgame{100011100000110000100000000110001010110000100010011001111}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/437988.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

谷歌浏览器检查更新时出错:无法启动更新检查(错误代码为 3: 0x80080005 -- system level)

谷歌浏览器检查更新报错&#xff1a;检查更新时出错&#xff1a;无法启动更新检查&#xff08;错误代码为 3: 0x80080005 – system level&#xff09;&#xff0c;如下图所示&#xff1a; 网上的解决方法都是因为谷歌被墙&#xff0c;所以要重新下载&#xff0c;事实上并不是…

PWN-COMPETITION-HGAME2022-Week2

PWN-COMPETITION-HGAME2022-Week2blindecho_severoldfashion_noteblind 访问/proc/self/mem即可修改当前进程的内存&#xff0c;.text段也是可修改的 程序开始的时候直接输出了write的地址&#xff0c;泄露libc&#xff0c;然后在__libc_start_main上喷射shellcode # -*- cod…

Sharepoint学习笔记—Site Definition系列-- 1、创建Site Columns

https://www.cnblogs.com/wsdj-ITtech/archive/2012/08/12/2470219.html Site Columns是Sharepoint网站的一个重要底层结构&#xff0c;它是一类可重用的列定义或模板&#xff0c;可以将其分配给一个或多个 SharePoint 网站的一个或多个列表。 一个Site Column是由几个属性定义…

利用Cloudflare为基于GitHub Pages的Hexo博客添加HTTPS支持

2022-01-25 更新&#xff1a;博客新地址&#xff1a;https://www.itbob.cn/&#xff0c;文章距上次编辑时间较远&#xff0c;部分内容可能已经过时&#xff01; 文章目录● 前言● 注册 Cloudflare● 添加站点● 修改DNS● 开启 HTTPS● 重定向强制 HTTPSHTTP&#xff08;超文本…

REVERSE-COMPETITION-HGAME2022-Week2

REVERSE-COMPETITION-HGAME2022-Week2xD MAZEupx magic 0fake shellcreakme2upx magic 1xD MAZE 迷宫题&#xff0c;不过不是上下左右&#xff0c;而是只有前进 0-512&#xff0c;1-64&#xff0c;2-8&#xff0c;3-1 每一次v14加上前进的单位后&#xff0c;需要保证map[v14]3…

Github+jsDelivr+PicGo 打造稳定快速、高效免费图床

2022-01-25 更新&#xff1a;博客新地址&#xff1a;https://www.itbob.cn/&#xff0c;文章距上次编辑时间较远&#xff0c;部分内容可能已经过时&#xff01; 本文原创首发于我的个人博客&#xff1a;www.itrhx.com&#xff0c;欢迎访问&#xff01; 本文在我个人博客上的链接…

用于科研的移动机器人平台推荐

作者&#xff1a;知乎用户 链接&#xff1a;https://www.zhihu.com/question/59738106/answer/268510238 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 最近看到一篇介绍机器人移动平台的文章&#xff0c;与题主分…

turtlebot3入门教程

旨在用于教育&#xff0c;研究&#xff0c;产品原型和爱好应用的目的。 TurtleBot3的目标是大幅降低平台的尺寸和价格&#xff0c;而不会牺牲性能&#xff0c;功能和质量。 由于提供了不同可选&#xff0c;如底盘&#xff0c;计算机和传感器&#xff0c;TurtleBot3可以通过各…

UI设计工具比较:Sketch、Adobe XD、墨刀、Mockplus、Axure RP

UI设计工具&#xff0c;分为2个派系。 其中&#xff0c;最大、最主流的派系&#xff0c;是Sketch、Adobe XD、墨刀这个派系。 这个派系的软件&#xff0c;操作方式、思路都非常接近&#xff0c;连常用快捷键都一样&#xff0c;会一个就等于都会了。 在一个无限大的画布上&…

光学字符识别 Tesseract-OCR 的下载、安装和基本用法

OCR&#xff1a;即Optical Character Recognition&#xff0c;光学字符识别&#xff0c;是指检查纸或者图片上打印的字符&#xff0c;通过检测暗、亮的模式确定其形状&#xff0c;然后用字符识别方法将形状翻译成计算机文字的过程&#xff1b; Tesseract-OCR&#xff1a;一款由…

利用官方支持为基于GitHub Pages的Hexo博客启用HTTPS

2022-01-25 更新&#xff1a;博客新地址&#xff1a;https://www.itbob.cn/&#xff0c;文章距上次编辑时间较远&#xff0c;部分内容可能已经过时&#xff01; HTTP&#xff08;超文本传输协议&#xff09;&#xff0c;是一个基于请求与响应&#xff0c;无状态的&#xff0c;应…

标注功能介绍

Mockplus3.5.0.1版本中&#xff0c;新增了标注功能。多种标注模式&#xff0c;智能生成&#xff0c;随时查看。原型设计效率更高。 Mockplus的标注功能有以下四种模式&#xff1a; 1、无选中标注 在未选中任何组件时&#xff0c;按住Ctrl键&#xff0c;鼠标经过某个组件&#…

REVERSE-COMPETITION-HGAME2022-Week3

REVERSE-COMPETITION-HGAME2022-Week3Answers Windowscreakme3hardenedfishmanAnswer’s Windows 含有GUI的程序&#xff0c;ida打开&#xff0c;ShiftF12打开字符串窗口&#xff0c;发现"right"和"wrong" 对"right"查找交叉引用&#xff0c;来…

NuGet的简单使用

什么是NuGet&#xff1f; NuGet&#xff08;读作New Get&#xff09;是用于微软.NET开发平台的软件包管理器&#xff0c;是一个Visual Studio的扩展。在使用Visual Studio开发基于.NET Framework的应用时&#xff0c;NuGet能够令你在项目中添加、移除和更新引用的工作变得更加…

Python3 爬虫学习笔记 C02 【基本库 requests 的使用】

Python3 爬虫学习笔记第二章 —— 【基本库 requests 的使用】文章目录【2.1】 requests 简介【2.2】 requests 基本用法 【2.3】 requests 构建 GET 请求 【2.3.1】 基本用法【2.3.2】 二进制数据抓取 【2.3.3】 添加 headers【2.4】 requests 构建 POST 请求 【2.5】 request…

REVERSE-COMPETITION-HGAME2022-Week4

REVERSE-COMPETITION-HGAME2022-Week4( WOW )serverezvmhardasm( WOW ) 32位exe&#xff0c;ida打开 观察伪代码逻辑&#xff0c;上面的红框中&#xff0c;输入经过加密&#xff0c;密文放入Buf2中&#xff0c;然后Buf2和已知的密文res比较 比较完&#xff0c;打印"win&q…

Python3 爬虫学习笔记 C03 【Ajax 数据爬取】

Python3 爬虫学习笔记第三章 —— 【Ajax 数据爬取】文章目录【3.1】Ajax 简介 【3.2】解析真实地址提取【3.1】Ajax 简介 Ajax — Asynchronous Javascript And XML&#xff08;异步 JavaScript 和 XML&#xff09;&#xff0c;是指一种创建交互式网页应用的网页开发技术。可…

REVERSE-COMPETITION-HWS-5TH-2022

REVERSE-COMPETITION-HWS-5TH-2022re1re2re3re1 64位exe&#xff0c;ida打开&#xff0c;来到main函数 输入的长度应为32&#xff0c;输入经过TEA加密&#xff0c;密文与已知的cipher进行比较 进入TEA函数&#xff0c;发现是魔改TEA&#xff0c;需一次性传入8个unsigned int&…

REVERSE-COMPETITION-DSCTF-2022

REVERSE-COMPETITION-DSCTF-2022catchmeFFunctionnothingbad_applefantastic_cpucatchme 安卓逆向&#xff0c;java层传递输入&#xff0c;调用native层的check方法 ida打开.so文件&#xff0c;没有直接找到check方法&#xff0c;JNI_OnLoad也看不出什么 Findcrypt查到AES的S盒…

01-单一职责原则(SPR)

1. 背景 类T负责两个不同的职责&#xff1a;职责P1&#xff0c;职责P2。当由于职责P1需求发生改变而需要修改类T时&#xff0c;有可能会导致原本运行正常的职责P2功能发生故障。 2. 定义 不要存在多于一个导致类变更的原因。通俗的说&#xff0c;即一个类只负责一项职责。 3.…