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,一经查实,立即删除!

相关文章

Failed to instantiate file__from module__The specified list does

Hello, I have a problem creating a site collection from my onet.xml. I guess the list “Pages” is not created correctly. What do I need to get it created? The error message; Failed to instantiate file "Default.aspx" from module "ProjectP…

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

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

Hexo 博客本地预览报错:Error: listen EADDRINUSE 0.0.0.0:4000

Hexo博客在执行hexo s进行本地预览的时候&#xff0c;默认端口号是4000&#xff0c;当该端口号被占用时会报错 Error: listen EADDRINUSE 0.0.0.0:4000 &#xff0c;此时可以关闭占用该端口的进程&#xff0c;也可以更换端口号&#xff0c;更换端口号可以通过以下两种方法实现&…

SharePoint入门识记-整体架构

SharePoint站点层次结构&#xff1a; 1.Web Application: 一般创建后对应一个IIS Web Site, 默认创建后是打不开的&#xff0c;因为网站没有任何内容。 2.Site Collection: 一个Web Application 下通常可以包含多个SiteCollection&#xff0c;创建一个SiteCollection后默认会…

如何带团队

什么样的老板才能让团队迅速壮大&#xff0c;有战斗力&#xff1f;我研究从这三个方面着手&#xff0c;供大家参考。 第一&#xff1a;分钱 当老板&#xff0c;别整太虚的&#xff0c;要清楚大家都是来挣钱的&#xff0c;办企业是赚钱&#xff0c;打工也是为了赚钱。首先谈分…

Python 中 if __name__ == '__main__': 的理解

1、这段代码的功能 一个 Python 的文件有两种使用的方法&#xff0c;第一是直接作为脚本执行&#xff0c;第二是 import 到其他的 Python 脚本中被调用&#xff08;模块重用&#xff09;执行。因此 if __name__ __main__: 的作用就是控制这两种情况执行代码的过程&#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可以通过各…

程序员必须掌握的核心算法有哪些?

由于我之前一直强调数据结构以及算法学习的重要性&#xff0c;所以就有一些读者经常问我&#xff0c;数据结构与算法应该要学习到哪个程度呢&#xff1f;&#xff0c;说实话&#xff0c;这个问题我不知道要怎么回答你&#xff0c;主要取决于你想学习到哪些程度&#xff0c;不过…

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;一款由…

界面原型设计工具Balsamiq、墨刀、Axure、Mockplus

Balsamiq的体验 这个基于Adobe AIR Runtime的工具实在是有让人眼前一亮的感觉&#xff0c;手绘风格的元件样式粗犷淋漓&#xff0c;能创建接近于纸上手绘的原型文件。其提供了丰富的手绘风格的web常用元件&#xff0c;包括常用的html控件、以及一些组合控件&#xff0c;如多媒体…

PWN-COMPETITION-HGAME2022-Week3

PWN-COMPETITION-HGAME2022-Week3changeable_noteelder_notesized_notechangeable_note edit_note中的gets函数存在堆溢出漏洞 本题没有leak函数&#xff0c;考虑利用_IO_2_1_stdout泄露libc 参考&#xff1a;好好说话之IO_FILE利用&#xff08;1&#xff09;&#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;鼠标经过某个组件&#…