V&NCTF 2022

V&NCTF的题目虽然很难,但是能学到很多东西,下面是看着wp的随便写写

ezmath

from Crypto.Util.number import*
import random
from secret import flag,check
from hashlib import sha256
import socketserver
import signal
import string 

table = string.ascii_letters+string.digits
class Task(socketserver.BaseRequestHandler):
    def _recvall(self):
        BUFF_SIZE = 2048
        data = b''
        while True:
            part = self.request.recv(BUFF_SIZE)
            data += part
            if len(part) < BUFF_SIZE:
                break
        return data.strip()

    def send(self, msg, newline=True):
        try:
            if newline:
                msg += b'\n'
            self.request.sendall(msg)
        except:
            pass

    def recv(self, prompt=b''):
        self.send(prompt, newline=False)
        return self._recvall()

    def proof_of_work(self):
        proof = (''.join([random.choice(table)for _ in range(20)])).encode()
        sha = sha256(proof).hexdigest().encode()
        self.send(b"[+] sha256(XXXX+" + proof[4:] + b") == " + sha )
        XXXX = self.recv(prompt = b'[+] Plz Tell Me XXXX :')
        if len(XXXX) != 4 or sha256(XXXX + proof[4:]).hexdigest().encode() != sha:
            return False
        return True

    def handle(self):
        proof = self.proof_of_work()
        if not proof:
            self.request.close()
        counts = 0
        signal.alarm(60)
        for i in range(777):
            times = getPrime(32)
            self.send(b'plz give me the ' + str(times).encode() + b'th (n) that satisfying (2^n-1) % 15 == 0:')
            n = int(self.recv())
            a , ret = check(times,n)
            if a == True:
                self.send(ret.encode())
                counts += 1
            else:
                self.send(ret.encode())
        if counts == 777:
            self.send(b'You get flag!')
            self.send(flag)
        else:
            self.send(b'something wrong?')
        self.request.close()

class ThreadedServer(socketserver.ThreadingMixIn, socketserver.TCPServer):
    pass

class ForkedServer(socketserver.ForkingMixIn, socketserver.TCPServer):
    pass

if __name__ == "__main__":
    HOST, PORT = '0.0.0.0', 10001
    print("HOST:POST " + HOST+":" + str(PORT))
    server = ForkedServer((HOST, PORT), Task)
    server.allow_reuse_address = True
    server.serve_forever() 

简单题目,直接枚举2模15的阶是4,故第k个满足的是4k

import hashlib
from pwn import *
from itertools import product
import string
from Crypto.Util.number import *
p=remote('node4.buuoj.cn',26276)



context.log_level = 'debug'
table = string.ascii_letters + string.digits

def proof_of_work():
	rev = p.recvuntil("sha256(XXXX+")
	suffix = p.recv(16).decode()
	p.recvuntil(" == ")
	res = p.recv(64).decode()
	def f(x):
		hashresult = hashlib.sha256((x+suffix).encode()).hexdigest()
		if hashresult == res:
			return 1
		else:
			return 0
	prefix = util.iters.mbruteforce(f,table,4,'upto')
	p.sendline(str(prefix))


             
proof_of_work()
for i in range(777):
    p.recvuntil('me the ')
    t=p.recvuntil(' ')[:-3]
    t=4*int(t)
    p.sendline(str(t))
p.interactive()

AreYouAdmin

from Crypto.Util.number import *
from hashlib import *
from secret import secretkey,flag,ezmath_flag
import socketserver
import os
import signal
import string
assert len(bin(secretkey)) == 169

table = string.ascii_letters+string.digits

class PseudoRandomNumbersGenerators:
    def __init__(self,seed1,seed2):
        self.state_a = seed1
        self.state_b = seed2
        self.a = getRandomNBitInteger(160)
        self.b = getRandomNBitInteger(160)
        self.c = getRandomNBitInteger(160)
        self.M = 1 << 512

    def GetNext(self):
        ret = (self.state_a * self.a + self.state_b * self.b + self.c) % self.M
        self.state_a = self.state_b
        self.state_b = ret
        return ret

    def GetSomethingUseful(self,admin):
        if admin == True:
            return self.a,self.b,self.c
        else:
            return "You can't get anything here!Get out!"
    
    def choice(self,input):
        length = len(input)
        tmp = self.GetNext() % length
        return input[tmp]

class DigitalSignatureAlgorithm:
    def __init__(self,RANDOM):
        self.p = 8945295668911819059540208265461979177678201229057426412681001447446107919117765962027889488459965388254641301806100385155760254966914075104367813869235667
        self.q = 4472647834455909529770104132730989588839100614528713206340500723723053959558882981013944744229982694127320650903050192577880127483457037552183906934617833
        self.g = 3
        self.Random = RANDOM

    def verify(self, m, y, sig):
        r, s = sig
        if (not (1 <= r <= self.q - 1)) or (not (1 <= s <= self.q - 1)): 
            return False
        z = bytes_to_long(sha256(m).digest())
        w = inverse(s, self.q)
        u1 = (z * w) % self.q
        u2 = (r * w) % self.q
        v = (pow(self.g, u1, self.p) * pow(y, u2, self.p)) % self.p % self.q
        return r == v

    def sign(self, m , x):
        z = bytes_to_long(sha256(m).digest())
        while 1:
            k = self.Random.GetNext() % self.q 
            r = pow(self.g , k, self.p) % self.q
            s = (inverse(k, self.q) * (z + x * r)) % self.q
            if (s != 0) and (r != 0) :
                return (r, s)

RANDOM = PseudoRandomNumbersGenerators(getPrime(120),getPrime(120))
DSA = DigitalSignatureAlgorithm(RANDOM)
x = secretkey
y = pow(DSA.g,x,DSA.p)

MENU = br'''
[S]ign.
[V]erify(or get flag).
[I]dentify.
[E]xit.
'''

class Task(socketserver.BaseRequestHandler):
    def _recvall(self):
        BUFF_SIZE = 2048
        data = b''
        while True:
            part = self.request.recv(BUFF_SIZE)
            data += part
            if len(part) < BUFF_SIZE:
                break
        return data.strip()

    def send(self, msg, newline=True):
        try:
            if newline:
                msg += b'\n'
            self.request.sendall(msg)
        except:
            pass

    def recv(self, prompt=b''):
        self.send(prompt, newline=False)
        return self._recvall()

    def proof_of_work(self):
        proof = (''.join([RANDOM.choice(table)for _ in range(20)])).encode()
        sha = sha256(proof).hexdigest().encode()
        self.send(b"[+] sha256(XXXX+" + proof[4:] + b") == " + sha )
        XXXX = self.recv(prompt = b'[+] Plz Tell Me XXXX :')
        if len(XXXX) != 4 or sha256(XXXX + proof[4:]).hexdigest().encode() != sha:
            return False
        return True

    def sign(self):
        m0 = b'dawn'
        m1 = b'whisper'
        m2 = b'want flag'
        sign0 = DSA.sign(m0,x)
        sign1 = DSA.sign(m1,x)
        sign2 = DSA.sign(m2,x)

        self.send(b'sign of (dawn) is: '      + str(sign0).encode())
        self.send(b'sign of (whisper) is: '   + str(sign1).encode())
        self.send(b'sign of (want flag) is: ' + str(sign2).encode())

    def identify(self):
        rec_key = self.recv(b'flag of ezmath is :')
        ret = RANDOM.GetSomethingUseful(rec_key == ezmath_flag)
        self.send(str(ret).encode())

    def verify(self):
        msg = self.recv(b'msg:')
        r = int(self.recv(b'r:'))
        s = int(self.recv(b's:'))
        sig = (r,s)
        if msg == b"I'm Admin.Plz give me flag!":
            if DSA.verify(msg,y,sig):
                self.send(b'Yes Sir!Thank you Sir!')
                return flag
            else:
                self.send(b'Who are U?Get out!')
                return False
        else:
            if DSA.verify(msg,y,sig):
                self.send(b'Yeah!You sign successfully!')
                return os.urandom(32)

    def handle(self):
        proof = self.proof_of_work()
        if not proof:
            self.request.close()
        signal.alarm(60)
        chance = 0
        while 1:
            self.send(MENU)
            option = self.recv(b'\n==plz give me your option==\n[IN]:')
            if option == b'S':
                if chance == 0:
                    self.sign()
                    chance += 1
                else:
                    self.send(b'ERROR! You only have one time!')
            elif option == b'V':
                ret = self.verify()
                if ret :
                    self.send(b'Your Flag is :' + ret)
                break
            elif option == b'I':
                self.identify()
            else:
                break
        self.request.close()

class ThreadedServer(socketserver.ThreadingMixIn, socketserver.TCPServer):
    pass

class ForkedServer(socketserver.ForkingMixIn, socketserver.TCPServer):
    pass

if __name__ == "__main__":
    HOST, PORT = '0.0.0.0', 10004
    print("HOST:POST " + HOST+":" + str(PORT))
    server = ForkedServer((HOST, PORT), Task)
    server.allow_reuse_address = True
    server.serve_forever() 

题目条件就是给了三次签名和魔改LCG的生成系数

然后我就想着去构造格,真不明白我当时为什么总想着SVP规约出一个长达256bits的向量,还是tcl

后面问了下大佬,可以通过CVP解决,之前陇原战疫有接触过一次,不是很熟悉

这里借这个机会深入了解一下

Babai's Algorithm

很明显的我们在平面直角坐标系里解决CVP问题是简单的,只需对目标向量坐标取整即可,那么为什么CVP问题会是NP-hard问题呢

这里引入Hadamard ratio

对于n维的格的一组基v1,···,vn 记H(v1,···,vn)=\((\frac{det(L)}{||v1||||v2||···||v~n~||})^{\frac{1}{n}}∈(0,1)\)

我们利用哈达马比率来刻画一组基的正交程度

H~1时我们称其为好基,H~0时我们称其为坏基

babai算法的思想就是利用LLL算法规约出一组好基,并利用取整的思想求最近向量

image

babai的代码实现(reversed这个地方没太明白,以后问问)

def babai(A, w):
    A = A.LLL()
    G = A.gram_schmidt()[0]
    t = w
    for i in reversed(range(A.nrows())):
        c = ((t * G[i]) / (G[i] * G[i])).round()
        t -= A[i] * c
    return w - t

我们根据条件得出四个同余式

s1k1=h1+xr1 mod(q)

s2k2=h2+xr2 mod(q)

s3k3=h3+xr3 mod(q)

k3=ak1+bk2+c mod(M)

梳理一下我们未知的量是k1,k2,k3,x

调整一下同余式

image

我们考虑构造格\(\left[\begin{matrix}s_1&&&-a\\&s_2&&-b\\&&s_3&1\\r_1&r_2&r_3&\\q&&&\\&q&&\\&&q&\\&&&M\end{matrix}\right]\)

我们希望规约后能够得到\([\begin{matrix}h_1&h_2&h_3&c\end{matrix}]\)首先注意到h都在256bits的量级,c在160bits的量级,基本不能通过SVP解决,故只能考虑CVP

于是我们需要对格进行扩充

\(\left[\begin{matrix}s_1&&&-a&1/λ_1&&&&\\&s_2&&-b&&1/λ_2&&&\\&&s_3&1&&&1/λ_3&\\r_1&r_2&r_3&&&&&1/λ_4\\q&&&\\&q&&\\&&q&\\&&&M\end{matrix}\right]\)

将其调整为8×8的矩阵,其中λ我们是可以根据需求进行调整的

于是我们希望规约后可以得到\([\begin{matrix}h_1&h_2&h_3&c&\frac{k_1}{λ_1}&\frac{k_2}{λ_2}&\frac{k_3}{λ_3}&-\frac{x}{λ_4}\end{matrix}]\)

其中k平均大概在511bits的样子(注意到最开始的几个低bits的数在sha256的验证时用掉了)

x的话题目给了在167bits的量级上

于是我们令λ1-3=25114=2167

用babai算法找\([\begin{matrix}h_1&h_2&h_3&c&1&1&1&-1\end{matrix}]\)的最近向量

由于同一个端口数据相同,我就没有写交互了

h1=59321673573909906265288710676456384358157017247524812933609264006321909880946
h2=84344567394273297492826058854936847520759247638820383794017833480152249569966
h3=31915758673949819228460572288910607244566306546872092881831612333627535673163
s1=2313608943027490945436746972423511365879999330988549095095132120714394465148082634131163512272345999596881490464359543365542617220829797786792240343115038
s2=969838527803859562171399332746979221088434685014925682789858498898550675886955557222288015549413071909933836811563263353311430176281676138272351592417782
s3=2705895714477901863092933739898228254114437223114721094423380479182263285235889280492479840081206911882012812956517058692673774491305322039721568384262796
r1=2648168993951468948635423727912213456286832390117660198247386119008267054780100804475308964094224973917725846851433949296444053774254373994933506863614902
r2=1641581589246292967706310483596963882929119604760421080209223001054553185925721220826880872464819666195439769525050420483288240083859929318309030945071425
r3=2047344748363132977442661413765298431089316641404391668494489079071777863130943485327993372769474260007190838259780861912416677386811473551434746276919523
a=1288778668095346346053418256124506514548392096659
b=817117072486370525439624349682018381752585029841
c=1387869140496615611625076357881819669517224075919
p = 8945295668911819059540208265461979177678201229057426412681001447446107919117765962027889488459965388254641301806100385155760254966914075104367813869235667
q = 4472647834455909529770104132730989588839100614528713206340500723723053959558882981013944744229982694127320650903050192577880127483457037552183906934617833
M=1<<512
kk=1<<511
xx=1<<167
def babai(A, w):
    A = A.LLL()
    G = A.gram_schmidt()[0]
    t = w
    for i in reversed(range(A.nrows())):
        c = ((t * G[i]) / (G[i] * G[i])).round()
        t -= A[i] * c
    return w - t
L=Matrix(QQ,[[s1,0,0,-a,1/kk,0,0,0],
            [0,s2,0,-b,0,1/kk,0,0],
            [0,0,s3,1,0,0,1/kk,0],
            [r1,r2,r3,0,0,0,0,1/xx],
            [q,0,0,0,0,0,0,0],
            [0,q,0,0,0,0,0,0],
            [0,0,q,0,0,0,0,0],
            [0,0,0,M,0,0,0,0]])
v=vector(QQ,[h1,h2,h3,c,1,1,1,-1])
vv=babai(L,v)
print(vv)
x=vv[7]*xx
print(x)
from hashlib import sha256
import gmpy2
from Crypto.Util.number import bytes_to_long
p = 8945295668911819059540208265461979177678201229057426412681001447446107919117765962027889488459965388254641301806100385155760254966914075104367813869235667
q = 4472647834455909529770104132730989588839100614528713206340500723723053959558882981013944744229982694127320650903050192577880127483457037552183906934617833
g=3
msg=b"I'm Admin.Plz give me flag!"
x=99681635728635879538940784529297431947697608270113
print(x.bit_length())

def sign(m, x):
    z = bytes_to_long(sha256(m).digest())
    k=2022
    r = pow(g, k, p) % q
    s = (gmpy2.invert(k, q) * (z + x * r)) % q
    if (s != 0) and (r != 0):
        return (r, s)
print(sign(msg,x))

babyPHE

hint:babyphe 给个hint 快速幂的消耗

from Crypto.Util.number import*
import random

class CryptoSystem:
    def __init__(self,kbit) :
        self.k_bit = kbit
        self.p_bit = self.k_bit//2
        self.q_bit = self.k_bit - self.p_bit
        self.gen_alice_key()

    def gen_alice_key(self):
        while 1:
            p = getPrime(self.p_bit)
            p_tmp = (p-1)//2
            if isPrime(p_tmp):
                break

        while 1:
            q = getPrime(self.q_bit)
            q_tmp = (q-1)//2
            if isPrime(q_tmp):
                break

        N = p * q 

        while 1:
            g = random.randrange(N*N)
            if  (pow(g,p_tmp * q_tmp,N*N) - 1) %  N == 0 and \
                (pow(g,p_tmp * q_tmp,N*N) - 1) // N >= 1 and \
                (pow(g,p_tmp * q_tmp,N*N) - 1) // N <= N - 1:
                break

        self.alice_pub = (N,g)
        self.alice_sec = (p,q)

    def gen_other_key(self):
        N,g = self.alice_pub
        a = random.randrange(N*N)
        h = pow(g,a,N*N)
        pub = h
        sec = a 
        return pub,sec

    def other_encrypt(self,pk,m):
        N,g = self.alice_pub
        r = random.randrange(N*N)
        A = pow(g,r,N*N)
        B = (pow(pk,r,N*N) * (1 + m * N)) % (N * N)
        return A,B

    def Add(self,dataCipher1,dataCipher2):
        N , g = self.alice_pub
        A1,B1 = dataCipher1
        A2,B2 = dataCipher2

        B = (B1*B2) % (N*N)

        return (A1,A2,B)
What do you want to get?
[1]the pk list
[2]Alice Public Parameters
[3]Mixed Flag
[4]exit
SERVER <INPUT>: 1
[~]My pk_list is:
[1322842566065856798965165348078862357662198978947230709254526492285633103717144968735233037057635982712449886088094071707373492828329816403406086925271118810344041229312732672575513454776879004607034599714440192959516462346178676822793054022355340273220895758465252657627533580580661259224576036836899300361602939684184409146605413303645375209063407283788834371731645965734210815674655141937633174952825964571184358064898432155429127042537390331662523018090768538304757528325737029530914511997095609887140188315159519726941243145154982311426980770893222512421681100895613703769217217726796485797389777578427706351431, 1929353920719299187661308157981749306000287810274985728139426214822581195090665401749753846077249277129639243707822757055941082464616169391698813564752296766917445328390119101887079278115873441407801269666064184707573218538829473509387530062976418264787144789530314562024653164934843854581804048249892522951148405452048197467260971792040669602533612092283424644152035305528153991413104737633877324819675765337058593912363038132773480442939092315660329419364524776069424287921244597238072942644562723590311132742006220424699393681291317394377782898447415333917160012108428733209008198177742632631879274165624277481851, 2789011373470240533905631892024296570906678296635752216220081790321204618235380094204993170523863943409640177956225417067840314617943182599260568907798576069406172968452018144820358899764046320473076086697805329140694534284547901328504085789250614483796435793917853203275245694757472744115420469760429645812640609868625658899893385756019985012438222660060690915389700165285949020489881437563281013841781250607647190620114790531723711706881018137164963096418632285359393453886085197112836853795501737185507901528886916379304576807819903178457247637148399648414584715050473645451454849514269920884716122913229594738752, 8944887367617587241442393229883580834740342304462111105224025291430611321546396102859687333969359524930738537937019013829384606176130513825457156561590666892656705555749481830166659743707548225210121902143969013444405319894625585668596912347789701976651629049271616876141532892390115295041834392608002822127929010500807946326595393217920014219030212857645423747224881557529221103453754309642068857884385938458625120451502032936317586320054048545222493315098707459226052260059007544536679036212141093443337050020955677617422530969961597220552901351308324088233175574555360591700985283581991040305739566382858380007428, 4397583564610423253499843461668397587635466857732498334676375533511290617079510457503762044490728238057694987978886639696168812864700076791908544778388891874223240097159332439061591837526459605271437124176402469035387238812282824293798762114991886550968552873900950500579121111075038947153723573424753662964020656383407389945413094698336805849701462154602561757363428980638610186902374298570018733098337050825688853874037287219878049002782016236313417300752658640951783183554558075556909424245130397476445117448915568396749223181152049295802355315026409054042717276851919403986477022829837140433933944675291372701186, 1887024557812390859587427679482183732847546004970185587894674995710637541577988021282086719881808142878304006798878288881586175207328098796364980971344261196626251002434715710053431197448244191714456166010179613555563774449838465354540108151902674835883336359438359335789619289783630973892862795355598386473633599846961468826660481787403864011853875011153240424154600064584435939126646722766878200900632739799123128975043646600429503490785669792258905940031301822731688276652795642091651576954347376088562802150248176635532850763237619932687425335901131629912404948543484891756530792238399773172947496813143007946734]
What do you want to get?
[1]the pk list
[2]Alice Public Parameters
[3]Mixed Flag
[4]exit
SERVER <INPUT>: 2
[~]Alice public_parameters is
(99432570713451062672092617212319674009128734021066252368974800380230695323011362021233083666801384874016217174138172838324478923078565331451675890131482611143922160917396923797235440250981885284277138989238227045468313350149185634986094994817254420199118748807731778875073713159130977981056629225363484612477, 3968529370264936315920184477746788220647053714090169783299608119529824310904496486702826831189864895901209648545829990235312934722991437418299346170024807755247754432133360178045395401174982549914108473260518839316780908593318455968053014605561504763936320319823824648449367236939727402970530941741756355440144535524693269860226342989569545529027400537822905839372506033736360929447563246349881828685681190426611634101046071883134662542428054340117879442277375242419725749540743809427149381516979587301032095071523792619805416206328411405597400382193217814410409605898798472988157572731575592931542612306878517511455)
What do you want to get?
[1]the pk list
[2]Alice Public Parameters
[3]Mixed Flag
[4]exit
SERVER <INPUT>: 3
[~]What you want is the flag!
[(8629971888291975347213791416269354663615597341449778464247397219745286182369049868780117508051847999960298596024452522313329959950925171599359898743763042054503440417555174526249829160862494674723813461791740628652379407441970707977460111090664195622293993068339178752253267336919360579659595380424128716331274966011720520402081818339785138564100448828785381210446654549751563770054480276370471933784135979318211388960544875452302901572290613486671118837737952929707183938688557203481397969599355299594458247427664016117339384449186175616507581548517338060151198448327302002598499596140923762164185685397703246525017, 2382704819350988648204939926259922012821070196393254466517927977328047779007630655554783102909445420233334603414269830021827909871784463842733412228018177538280291666226870925572366499683051585600821733321248692261413823782180369786281108496129071519528138126973685857158738633931510584076135644438451418512008698435996783365565980823146754387114607644836143562871251037131100844233499210456295742002818248405955542240031209179401171271988182498301048707975128420754563407337516505117424026601497057408173728989963923392569169720608288778589977299331468798591689742966007919372616963939427942973022672206407915356894, 7720313960516556678241507800313698506319294922044337939798672519899373894106710230654330788343477820100945131225868724604111187104961165449671731600123366694979688433519949770849824359157765719319384499326446776281094391789559201066092080637825695308899163795101674215619537911161758825346990604246201908242641998141131720545547223028612859544467335764381503082373878441543065709211578323452814290911656080720587522044520123114130521964539949874597280324605268358583300909472806691738357290060135813749592500883291268752974739510309885861678540543885454291467441449775481576475597779098977264432915191026950037121271), (2382704819350988648204939926259922012821070196393254466517927977328047779007630655554783102909445420233334603414269830021827909871784463842733412228018177538280291666226870925572366499683051585600821733321248692261413823782180369786281108496129071519528138126973685857158738633931510584076135644438451418512008698435996783365565980823146754387114607644836143562871251037131100844233499210456295742002818248405955542240031209179401171271988182498301048707975128420754563407337516505117424026601497057408173728989963923392569169720608288778589977299331468798591689742966007919372616963939427942973022672206407915356894, 2507489313693027727447823694213947097758893725637064080783076417422312360728871796716507607648204050957058352447513001293923638548755061814481143157280185982134248529705643296490203782611775648931232850380043060019259802341855745407723808559404538235550140640847652196525197728216863601181861238447111155134874873220188560494260693812235297043755237290506736697473642464212381153314464150028542768640544348115479388781714169932337684281395098898295048720991373671433770742876559915120975993663066370466552784425304512344074776338296352164911126588429313182901480992761403886230939719560496866577975131579057233980418, 3603233069921949635850852842102780282250188557063111749359701863158964441251898915819927526832514804676814118399988368079794874992149765916759224281185627030856640018562907911112504000563096016700256240666273611941320289178055416603630913077176567643353181182220432293206255187929971213857584642985361915813306867425294385269330460752200900341331665528445829353168856397102607628243111558263291982908278855340763809937944911956507459341371522547886786433534425538866644727624245702953159357318705462680438481025308981427064201053009152196210535434082336140957273740170206132676978454465699712662183230838620576397771), (2507489313693027727447823694213947097758893725637064080783076417422312360728871796716507607648204050957058352447513001293923638548755061814481143157280185982134248529705643296490203782611775648931232850380043060019259802341855745407723808559404538235550140640847652196525197728216863601181861238447111155134874873220188560494260693812235297043755237290506736697473642464212381153314464150028542768640544348115479388781714169932337684281395098898295048720991373671433770742876559915120975993663066370466552784425304512344074776338296352164911126588429313182901480992761403886230939719560496866577975131579057233980418, 7769230445155201113494537348459352387708612203054561299606903286112936921859421067127410781913677713423158049411013804288570673695825855969822168904613465090290306226978616894321879293271162132061470408070909310151619998411378202847228354918571965001390588172776972224778839119169450173333867054090477937647516598663804457249106382500709364775634358601371251459877683379682809903658838902783963786177719437968604142810768329151307435649733153348164028321577077681431486645592176232620214087883116496965071120567845561936056520916949714662519666931982850792755106900551200428113854794154127442081282902169286650571401, 1980172577526976953208467529900525783074696095931646996510173485588725995089661024536807562115058145311072178324244275386472867798089304656532882034354969245827559132434491283213041279414052179349423545284449349791764442814795484489622913236952945004885237471927992708071668392107252909374174486979848725181384806622865162901189364378882337523881706060196311538634436782157680819223656846784628557021576760718204769640388889532408106414067642872013172395542468221843563481648375218787976310106718686529056130227939362903825973551762087339318300140188516130629026785777810412625331595370234139359970280877739798474389), (7769230445155201113494537348459352387708612203054561299606903286112936921859421067127410781913677713423158049411013804288570673695825855969822168904613465090290306226978616894321879293271162132061470408070909310151619998411378202847228354918571965001390588172776972224778839119169450173333867054090477937647516598663804457249106382500709364775634358601371251459877683379682809903658838902783963786177719437968604142810768329151307435649733153348164028321577077681431486645592176232620214087883116496965071120567845561936056520916949714662519666931982850792755106900551200428113854794154127442081282902169286650571401, 1575094877701795854498774908638903522669421051531573312093667127284544685427913301822137233349330103439966188241901781657995508053590393431112660182478894250834736190200611323499178795811947949448699368341885262244922319233898608781419619210833188270769502178623446319852515092097374376230284979030896357428170209276025068117869920819506765819887277035215331513588698837794510471067850530536430462916048677656769292228807520578503908679844209663943585309414158448052732725558692228885890997143173078704774290593538094709155128226553159420350131695351485888673216532336279540226705255688328040783577052756207587006270, 6610352931587720854451143899633952315748731096581247094289941806600249309199110458686226240414159314916443802659936796194501937130258325721955971712271359425220780891458718764787684248492736828049383593460850257630134166697516000923586434837108552164118408207483861356227241654737966362556299121885909952085344055245123817034374630986706235981670472671656419267459375338043531055577663540904728281161038164044605649226826294253565008079171696929526279467128593521303305237010056264278316607644578180995774851856042734859960770608950180509999278132547381198060859308178075010227172861725398283857061313337363575325263), (1575094877701795854498774908638903522669421051531573312093667127284544685427913301822137233349330103439966188241901781657995508053590393431112660182478894250834736190200611323499178795811947949448699368341885262244922319233898608781419619210833188270769502178623446319852515092097374376230284979030896357428170209276025068117869920819506765819887277035215331513588698837794510471067850530536430462916048677656769292228807520578503908679844209663943585309414158448052732725558692228885890997143173078704774290593538094709155128226553159420350131695351485888673216532336279540226705255688328040783577052756207587006270, 2899196346496640651515578300741477267252027393819388234592692441244872565455171075206663782801019182310445822694710022355107834170061256021528233984226982722687848721193571620263169761625920013511824364907813108870230498313614430769087521400686949128276439718637571413546438066894526733998540267545169908267918034044567676900418717621781005337988884902642672158843440942895072083594499934345701806316446232804191200045145796718350218780127702500537329430739697477802056514649362531623994574050100569446437453774196354144878113348032018382822752357224093912706852592549799275481078987386652273745516181324786938308335, 1518486070937095431267728249967625462615084214873519869724691145931391888893984408735020316869577560635376392428533320137999061224646280418013600820687411977047143852240859128701565827810521684321783327786465208897593862389568908868890826199105669712761247928108093008056596587483514169117862021972656609656939975812867444210967581049993172306174305541579882729780098039933312778734112663231561634590403753870449301486897270821771001471591549309582677751258104686430351246789904546466436576979978832001105662418364938101412232320509104886209874169009281768978468363614092630860981345300448240861393056424955085865425)]
What do you want to get?
[1]the pk list
[2]Alice Public Parameters
[3]Mixed Flag
[4]exit
SERVER <INPUT>: 4

还给了个附件是6个数组记录了某个参数的变化

总的来说这道题有点遗憾,给了提示后我猜到应该和侧信道攻击有关,查到了一个相似的描述电压变化的,但是最后不知道为什么还是算不出结果,复现的时候我按一模一样的操作重做了一遍就出了。。。😢

import gmpy2
from Crypto.Util.number import *
n,g=(99432570713451062672092617212319674009128734021066252368974800380230695323011362021233083666801384874016217174138172838324478923078565331451675890131482611143922160917396923797235440250981885284277138989238227045468313350149185634986094994817254420199118748807731778875073713159130977981056629225363484612477, 3968529370264936315920184477746788220647053714090169783299608119529824310904496486702826831189864895901209648545829990235312934722991437418299346170024807755247754432133360178045395401174982549914108473260518839316780908593318455968053014605561504763936320319823824648449367236939727402970530941741756355440144535524693269860226342989569545529027400537822905839372506033736360929447563246349881828685681190426611634101046071883134662542428054340117879442277375242419725749540743809427149381516979587301032095071523792619805416206328411405597400382193217814410409605898798472988157572731575592931542612306878517511455)
energy=[[166, 171, 75, 63, 194, 190, 165, 80, 194, 164, 90, 74, 198, 182, 88, 89, 179, 89, 193, 70, 61, 74, 187, 175, 171, 73, 84, 91, 199, 189, 62, 160, 174, 175, 96, 77, 175, 167, 94, 69, 173, 69, 88, 60, 183, 99, 164, 98, 91, 185, 174, 69, 80, 160, 90, 79, 91, 81, 71, 77, 89, 180, 62, 185, 171, 89, 164, 160, 180, 96, 160, 99, 190, 76, 178, 86, 90, 70, 91, 76, 165, 199, 88, 169, 76, 72, 64, 77, 172, 98, 65, 88, 89, 69, 81, 172, 193, 195, 193, 160, 179, 89, 168, 95, 79, 83, 67, 160, 187, 88, 60, 165, 187, 171, 194, 162, 82, 91, 199, 93, 85, 164, 93, 93, 61, 163, 180, 80, 173, 165, 182, 183, 90, 186, 62, 85, 90, 63, 183, 78, 77, 184, 80, 61, 193, 195, 166, 80, 70, 96, 178, 182, 91, 62, 189, 167, 80, 83, 192, 75, 73, 92, 178, 75, 67, 162, 66, 83, 161, 179, 94, 84, 82, 72, 199, 80, 96, 65, 186, 94, 186, 95, 199, 189, 182, 99, 94, 172, 185, 99, 89, 194, 165, 188, 70, 169, 198, 184, 70, 84, 191, 174, 162, 194, 188, 160, 180, 189, 83, 191, 171, 182, 70, 84, 174, 68, 171, 162, 75, 94, 96, 180, 83, 70, 192, 161, 67, 70, 62, 98, 178, 196, 190, 196, 167, 82, 75, 89, 195, 187, 87, 160, 182, 90, 193, 192, 180, 68, 83, 85, 185, 197, 163, 178, 92, 65, 167, 91, 196, 197, 184, 60, 169, 186, 181, 84, 64, 190, 183, 191, 72, 68, 99, 80, 193, 180, 79, 76, 191, 190, 184, 187, 75, 184, 92, 183, 90, 69, 164, 180, 166, 169, 196, 175, 179, 181, 192, 178, 193, 81, 183, 170, 66, 60, 175, 195, 77, 170, 164, 94, 75, 193, 197, 85, 78, 196, 86, 164, 176, 97, 171, 73, 70, 65, 82, 92, 76, 165, 75, 61, 91, 176, 198, 167, 164, 178, 186, 63, 76, 194, 90, 62, 162, 173, 68, 190, 71, 163, 70, 178, 194, 97, 68, 170, 162, 187, 177, 60, 190, 76, 176, 183, 176, 71, 71, 61, 66, 75, 195, 164, 189, 74, 180, 169, 99, 190, 162, 66, 163, 66, 81, 175, 165, 195, 88, 88, 187, 170, 77, 90, 190, 72, 80, 177, 84, 193, 96, 69, 99, 181, 90, 161, 80, 69, 69, 85, 90, 68, 198, 174, 64, 161, 91, 169, 194, 174, 184, 61, 97, 180, 80, 199, 192, 88, 172, 88, 187, 63, 168, 81, 65, 184, 168, 178, 189, 163, 68, 184, 189, 98, 194, 162, 196, 186, 77, 185, 80, 84, 169, 79, 66, 68, 81, 89, 72, 182, 67, 88, 82, 182, 80, 68, 65, 90, 171, 177, 65, 95, 70, 60, 180, 79, 170, 76, 193, 173, 168, 173, 93, 171, 190, 87, 74, 161, 189, 165, 69, 160, 180, 91, 167, 188, 184, 73, 82, 79, 86, 164, 78, 178, 166, 165, 163, 189, 71, 85, 191, 180, 79, 60, 198, 60, 186, 167, 178, 175, 79, 90, 65, 181, 168, 75, 63, 97, 96, 197, 192, 73, 86, 69, 189, 68, 186, 177, 92, 179, 185, 189, 193, 186, 161, 98, 79, 167, 81, 77, 84, 194, 169, 67, 164, 195, 176, 162, 199, 168, 177, 66, 189, 69, 62, 76, 191, 190, 97, 92, 79, 74, 92, 181, 174, 61, 68, 65, 83, 186, 61, 163, 93, 60, 163, 190, 86, 91, 173, 63, 190, 72, 190, 168, 189, 191, 92, 175, 90, 170, 175, 94, 81, 75, 74, 195, 92, 198, 167, 98, 73, 190, 174, 161, 75, 77, 84, 79, 190, 88, 80, 68, 68, 90, 174, 190, 186, 62, 178, 66, 194, 97, 186, 172, 68, 177, 62, 197, 171, 170, 179, 88, 96, 96, 169, 84, 62, 60, 69, 187, 96, 87, 94, 65, 195, 174, 87, 94, 80, 73, 168, 195, 98, 82, 198, 92, 80, 174, 186, 160, 168, 177, 192, 188, 67, 193, 191, 193, 174, 67, 174, 194, 88, 82, 197, 76, 61, 188, 189, 175, 177, 81, 68, 69, 83, 88, 179, 88, 87, 190, 64, 91, 169, 190, 84, 65, 166, 76, 171, 92, 192, 98, 81, 65, 178, 166, 66, 195, 174, 161, 189, 188, 62, 160, 96, 66, 93, 178, 166, 79, 96, 193, 84, 192, 180, 163, 190, 98, 165, 81, 166, 85, 193, 81, 79, 72, 187, 196, 90, 62, 171, 93, 89, 160, 98, 80, 194, 88, 179, 65, 87, 186, 163, 92, 73, 189, 61, 86, 166, 187, 70, 93, 185, 173, 161, 90, 184, 199, 189, 173, 191, 179, 164, 174, 60, 69, 192, 176, 170, 198, 164, 185, 63, 75, 188, 189, 173, 88, 61, 184, 68, 71, 165, 163, 79, 189, 185, 61, 98, 77, 65, 172, 190, 175, 174, 78, 173, 193, 160, 162, 171, 91, 182, 193, 98, 187, 160, 190, 197, 90, 89, 98, 161, 67, 80, 61, 171, 168, 173, 89, 193, 196, 84, 96, 185, 179, 177, 196, 63, 161, 176, 80, 63, 66, 68, 75, 179, 74, 171, 66, 174, 176, 75, 162, 96, 76, 86, 193, 93, 192, 72, 82, 74, 194, 92, 190, 84, 170, 86, 195, 168, 174, 78, 186, 169, 75, 196, 176, 90, 78, 97, 99, 176, 95, 78, 190, 161, 180, 185, 173, 191, 78, 66, 75, 93, 199, 192, 174, 181, 74, 70, 88, 175, 169, 188, 60, 172, 174, 193, 188, 86, 184, 70, 81, 72, 65, 86, 64, 179, 82, 196, 98, 74, 77, 82, 90, 77, 183, 98, 164, 90, 96, 85, 73, 96, 65, 60, 185, 199, 189, 76, 94, 194, 169, 65, 96, 79, 89, 176, 86, 185, 86, 174, 81, 182, 87, 191, 78, 88, 181, 82, 62, 166, 196, 185, 86, 92, 99, 163, 176, 173, 197, 88, 66, 172, 194, 88, 85, 177, 164, 177, 167, 88, 176, 181, 174, 99, 70, 179, 165, 94, 95, 173, 199, 173, 186, 160, 199, 79, 93, 184, 177, 72, 188, 174, 64, 196, 165, 67, 69, 185, 79, 92, 190, 197, 181, 77, 99, 69, 180, 160, 171, 92, 160, 64, 81, 74, 183, 178, 193, 182, 196, 174, 160, 192, 192, 91, 62, 67, 96, 161, 191, 169, 64, 96, 97, 183, 167, 91, 195, 191, 184, 83, 89, 96, 196, 70, 60, 98, 70, 61, 69, 64, 179, 82, 88, 195, 84, 73, 168, 90, 190, 83, 74, 172, 179, 192, 165, 65, 89, 189, 76, 192, 176, 190, 192, 194, 174, 182, 89, 164, 96, 68, 92, 74, 98, 168, 78, 88, 69, 76, 163, 95, 85, 90, 70, 93, 99, 162, 175, 168, 89, 75, 179, 193, 85, 91, 178, 90, 98, 97, 77, 73, 79, 87, 84, 173, 88, 72, 180, 96, 197, 166, 81, 91, 99, 80, 186, 170, 186, 189, 163, 86, 84, 86, 98, 91, 78, 194, 81, 185, 193, 81, 162, 196, 191, 71, 73, 160, 73, 64, 161, 182, 187, 60, 60, 98, 61, 164, 81, 70, 192, 74, 65, 195, 84, 96, 79, 163, 94, 177, 90, 196, 96, 99, 67, 164, 169, 199, 184, 163, 89, 177, 169, 74, 64, 192, 82, 166, 68, 179, 164, 97, 96, 173, 183, 70, 78, 168, 84, 66, 179, 181, 70, 191, 98, 193, 91, 70, 166, 187, 63, 73, 71, 176, 85, 60, 77, 64, 196, 68, 190, 194, 67, 184, 73, 190, 70, 163, 62, 64, 61, 99, 88, 175, 64, 182, 188, 165, 180, 171, 185, 64, 180, 174, 88, 74, 77, 85, 62, 196, 65, 63, 177, 67, 83, 195, 70, 61, 90, 78, 74, 183, 60, 192, 92, 83, 90, 73, 197, 94, 93, 71, 183, 191, 81, 73, 67, 173, 94, 77, 189, 193, 62, 160, 184, 199, 160, 183, 84, 174, 83, 196, 84, 196, 86, 168, 65, 65, 70, 64, 161, 188, 85, 76, 89, 91, 75, 184, 64, 62, 85, 67, 92, 193, 86, 79, 171, 75, 98, 93, 76, 174, 188, 188, 177, 82, 168, 82, 95, 60, 72, 69, 196, 95, 97, 189, 60, 172, 79, 171, 197, 73, 97, 74, 181, 162, 67, 61, 69, 198, 168, 69, 76, 191, 192, 85, 77, 71, 80, 95, 176, 188, 163, 67, 74, 162, 60, 78, 189, 171, 181, 177, 184, 189, 173, 174, 199, 160, 199, 97, 78, 187, 184, 193, 189, 193, 162, 198, 65, 193, 83, 181, 187, 71, 75, 73, 188, 177, 163, 185, 82, 89, 176, 83, 70, 87, 173, 90, 93, 191, 61, 69, 170, 96, 169, 72, 61, 168, 87, 98, 188, 194, 197, 66, 172, 89, 83, 62, 72, 171, 177, 93, 92, 176, 98, 81, 79, 62, 63, 71, 92, 73, 73, 176, 80, 79, 160, 192, 183, 66, 71, 199, 183, 172, 99, 71, 80, 99, 188, 183, 175, 61, 93, 60, 97, 168, 95, 167, 195, 181, 190, 88, 197, 178, 170, 82, 177, 84, 177, 92, 190, 97, 90, 83, 80, 189, 174, 160, 62, 93, 90, 188, 70, 182, 184, 166, 175, 73, 76, 182, 77, 68, 71, 98, 82, 194, 98, 93, 67, 198, 91, 90, 186, 72, 160, 194, 180, 169, 179, 72, 69, 89, 83, 183, 192, 193, 67, 189, 183, 186, 90, 62, 89, 187, 194, 174, 167, 182, 186, 60, 177, 188, 85, 198, 192, 91, 93, 99, 168, 93, 81, 91, 84, 195, 98, 177, 83, 160, 79, 79, 177, 190, 165, 172, 174, 80, 73, 74, 193, 166, 68, 99, 166, 82, 176, 171, 184, 67, 181, 80, 184, 90, 92, 187, 197, 181, 176, 186, 195, 183, 195, 193, 87, 193, 84, 81, 190, 97, 179, 164, 189, 184, 97, 70, 193, 66, 67, 173, 61, 99, 188, 183, 92, 183, 87, 185, 182, 196, 69, 185, 96, 173, 78, 90, 72, 87, 80, 85, 84, 161, 99, 98, 87, 63, 87, 70, 69, 161, 198, 188, 90, 92, 184, 178, 76, 76, 188, 173, 82, 91, 176, 183, 170, 65, 173, 99, 169, 87, 172, 168, 98, 97, 161, 197, 171, 74, 96, 73, 69, 194, 76, 97, 181, 160, 99, 199, 182, 189, 165, 99, 178, 72, 91, 71, 94, 80, 96, 65, 194, 198, 89, 186, 79, 67, 195, 176, 172, 76, 184, 75, 84, 196, 180, 76, 95, 192, 92, 172, 186, 183, 61, 178, 190, 70, 193, 77, 177, 186, 169, 89, 168, 195, 82, 179, 69, 87, 185, 69, 82, 91, 74, 97, 85, 70, 73, 70, 72, 179, 61, 62, 88, 96, 65, 96, 178, 87, 197, 88, 162, 68, 71, 61, 162, 163, 198, 179, 62, 184, 94, 64, 191, 72, 84, 168, 177, 89, 97, 63, 164, 94, 177, 60, 189, 73, 69, 187, 90, 196, 60, 81, 79, 72, 68, 85, 83, 166, 166, 185, 90, 166, 78, 167, 81, 92, 85, 170, 97, 163, 176, 62, 185, 70, 174, 69, 69, 195, 64, 65, 197, 80, 74, 65, 168, 63, 62, 77, 198, 189, 164, 62, 98, 192, 66, 62, 167, 82, 66, 60, 185, 196, 91, 171, 91, 197, 72, 88, 88, 76, 92, 182, 79, 184, 163, 79, 171, 70, 178, 189, 189, 65, 195, 169, 86, 172, 178, 97, 98, 79, 185, 182, 175, 168, 86, 190, 163, 73, 90, 69, 61, 191, 83, 85, 69, 80, 163, 96, 174, 72, 183, 94, 165, 63, 166, 62, 187, 191, 65, 172, 96, 171, 163, 94, 161, 73, 91, 75, 90, 70, 167, 170, 170, 173, 63, 87, 166, 92, 75, 194, 67, 199, 80, 162, 190, 66, 183, 176, 183, 168, 164, 174, 75, 98, 93, 183, 180, 67, 87, 162, 169, 160, 71, 61, 176, 194, 195, 67, 182, 179, 96, 91, 96, 178, 73, 174, 76, 60, 82, 67, 99, 79, 181, 99, 76, 83, 86, 188, 170, 183, 63, 93, 85, 68, 69, 92, 187, 179, 167, 74, 164, 79, 192, 88, 73, 180, 97, 176, 185, 63, 180, 196, 69, 169, 178, 69, 192, 191, 176, 71, 194, 170, 92, 66, 186, 97, 161, 160, 171, 186, 85, 66, 189, 173, 89, 197, 182, 184, 183, 160, 162, 96, 96, 65, 98, 193, 60, 78, 179, 73, 187, 197, 194, 182, 182, 63, 182, 90, 161, 63],
[172, 69, 78, 168, 92, 74, 169, 192, 170, 171, 99, 171, 79, 65, 78, 196, 160, 178, 67, 86, 97, 170, 172, 63, 162, 69, 184, 186, 74, 180, 181, 183, 192, 97, 62, 82, 179, 76, 94, 77, 87, 90, 161, 97, 82, 193, 172, 172, 199, 73, 66, 188, 193, 173, 81, 74, 160, 71, 161, 165, 168, 85, 188, 83, 166, 96, 96, 180, 83, 77, 161, 77, 72, 181, 81, 179, 90, 66, 187, 198, 173, 184, 98, 174, 88, 71, 96, 90, 94, 81, 179, 86, 67, 191, 79, 94, 67, 193, 78, 183, 70, 77, 160, 80, 166, 192, 84, 71, 67, 183, 164, 98, 96, 98, 86, 86, 180, 76, 196, 91, 70, 62, 173, 94, 177, 170, 166, 68, 75, 69, 96, 89, 97, 196, 66, 173, 84, 98, 98, 169, 64, 183, 198, 160, 68, 87, 171, 198, 91, 163, 170, 78, 90, 183, 98, 94, 67, 98, 181, 98, 61, 160, 97, 93, 161, 96, 189, 188, 188, 198, 68, 63, 74, 177, 163, 181, 183, 199, 196, 168, 181, 169, 193, 96, 179, 84, 198, 64, 167, 186, 199, 195, 91, 89, 79, 95, 175, 76, 70, 68, 177, 197, 187, 177, 61, 195, 67, 64, 194, 89, 76, 194, 184, 199, 196, 173, 188, 87, 82, 196, 186, 198, 185, 78, 187, 84, 82, 79, 89, 164, 89, 89, 61, 69, 64, 95, 90, 186, 193, 68, 191, 178, 195, 189, 190, 195, 165, 95, 192, 174, 167, 195, 89, 162, 68, 91, 183, 89, 171, 196, 174, 77, 70, 194, 70, 73, 199, 70, 71, 196, 173, 62, 61, 195, 180, 177, 66, 195, 99, 180, 69, 194, 197, 173, 98, 173, 94, 98, 80, 166, 85, 194, 91, 95, 69, 76, 187, 71, 76, 186, 73, 61, 162, 171, 170, 90, 60, 199, 180, 174, 72, 162, 191, 66, 183, 167, 71, 85, 161, 98, 86, 193, 71, 63, 180, 189, 71, 175, 195, 79, 191, 67, 94, 95, 63, 60, 66, 161, 185, 192, 174, 96, 186, 170, 181, 80, 174, 82, 181, 76, 69, 91, 83, 196, 184, 85, 91, 197, 71, 62, 190, 81, 190, 180, 180, 189, 63, 97, 79, 99, 191, 165, 74, 179, 174, 198, 89, 162, 185, 194, 196, 74, 99, 75, 199, 186, 69, 88, 93, 95, 83, 75, 62, 162, 190, 90, 83, 172, 177, 71, 174, 97, 99, 166, 182, 166, 89, 173, 160, 94, 87, 62, 182, 87, 78, 160, 186, 75, 76, 173, 190, 175, 175, 186, 177, 71, 180, 62, 190, 171, 173, 68, 61, 73, 87, 164, 198, 182, 178, 197, 166, 186, 171, 60, 85, 78, 164, 184, 83, 60, 93, 171, 172, 171, 183, 98, 178, 85, 188, 81, 196, 199, 87, 63, 92, 178, 190, 190, 83, 170, 167, 72, 68, 189, 173, 182, 74, 78, 87, 184, 170, 68, 195, 81, 60, 63, 89, 67, 168, 183, 163, 61, 161, 183, 86, 94, 94, 169, 92, 184, 71, 96, 176, 185, 174, 94, 81, 96, 193, 88, 160, 69, 188, 199, 190, 71, 167, 176, 169, 85, 175, 177, 167, 71, 80, 171, 161, 77, 62, 169, 178, 64, 169, 90, 178, 180, 187, 199, 89, 177, 170, 164, 99, 181, 63, 193, 77, 179, 79, 193, 62, 95, 193, 90, 192, 69, 97, 178, 75, 61, 80, 189, 192, 99, 176, 164, 191, 182, 186, 71, 66, 190, 185, 78, 63, 83, 81, 70, 61, 83, 84, 90, 62, 69, 83, 87, 182, 62, 67, 67, 78, 81, 89, 82, 82, 60, 174, 167, 98, 88, 167, 162, 89, 84, 163, 196, 81, 194, 174, 192, 185, 164, 179, 170, 69, 194, 60, 91, 78, 96, 61, 181, 194, 80, 187, 79, 185, 198, 193, 171, 67, 62, 92, 165, 83, 170, 188, 82, 180, 166, 83, 77, 199, 160, 60, 197, 78, 97, 183, 68, 60, 76, 177, 76, 170, 164, 172, 178, 192, 173, 164, 187, 186, 179, 95, 78, 82, 187, 99, 85, 99, 99, 161, 66, 63, 85, 72, 68, 163, 84, 176, 61, 98, 69, 169, 186, 76, 183, 87, 81, 195, 92, 173, 83, 99, 90, 90, 183, 85, 89, 77, 63, 90, 176, 187, 193, 60, 193, 176, 90, 186, 166, 186, 89, 163, 63, 65, 194, 65, 186, 71, 90, 75, 185, 84, 98, 191, 61, 60, 76, 94, 190, 169, 195, 162, 180, 162, 62, 88, 86, 64, 84, 64, 91, 162, 170, 163, 161, 68, 188, 63, 91, 93, 97, 171, 173, 97, 193, 176, 93, 173, 81, 63, 91, 181, 194, 61, 199, 90, 95, 74, 96, 184, 96, 60, 189, 172, 187, 162, 68, 176, 97, 166, 81, 72, 75, 72, 69, 165, 198, 186, 73, 97, 178, 165, 191, 87, 172, 192, 91, 180, 62, 199, 194, 179, 172, 69, 62, 174, 180, 177, 91, 75, 99, 88, 75, 84, 99, 73, 164, 172, 89, 195, 199, 77, 179, 71, 182, 84, 68, 184, 65, 161, 89, 192, 91, 165, 181, 99, 65, 184, 86, 197, 161, 162, 76, 73, 161, 180, 186, 187, 60, 66, 86, 165, 95, 66, 196, 80, 164, 77, 95, 83, 87, 162, 78, 173, 64, 65, 90, 71, 76, 170, 177, 185, 81, 82, 162, 62, 94, 69, 68, 179, 183, 66, 181, 163, 72, 177, 79, 84, 64, 184, 74, 163, 61, 71, 162, 70, 82, 160, 166, 192, 197, 184, 64, 80, 86, 99, 85, 82, 61, 68, 74, 91, 84, 60, 98, 76, 181, 170, 163, 67, 79, 161, 165, 182, 174, 75, 94, 170, 183, 71, 160, 188, 169, 168, 190, 75, 176, 92, 160, 99, 162, 91, 185, 199, 75, 184, 197, 172, 161, 83, 66, 86, 64, 75, 175, 77, 161, 182, 77, 75, 192, 178, 184, 85, 89, 62, 68, 163, 185, 92, 189, 73, 79, 182, 82, 178, 72, 99, 168, 187, 175, 163, 185, 174, 88, 168, 87, 197, 182, 164, 91, 85, 176, 81, 72, 97, 91, 62, 75, 96, 180, 88, 178, 172, 67, 163, 94, 68, 88, 168, 184, 190, 184, 90, 160, 85, 169, 196, 185, 193, 92, 164, 71, 162, 185, 193, 67, 185, 179, 70, 98, 78, 171, 94, 91, 193, 197, 75, 81, 176, 69, 179, 196, 65, 79, 91, 160, 66, 86, 83, 171, 79, 66, 168, 94, 90, 96, 90, 179, 167, 73, 163, 88, 193, 87, 181, 182, 70, 167, 88, 83, 188, 184, 164, 86, 189, 62, 97, 97, 91, 83, 83, 68, 99, 60, 66, 160, 61, 184, 76, 173, 184, 75, 91, 197, 71, 90, 81, 189, 166, 86, 174, 94, 192, 94, 176, 74, 64, 166, 93, 176, 199, 165, 165, 62, 61, 76, 185, 66, 179, 94, 178, 92, 99, 196, 195, 66, 186, 168, 182, 187, 95, 193, 84, 79, 170, 195, 195, 184, 197, 197, 69, 60, 74, 192, 99, 179, 82, 179, 73, 85, 163, 163, 188, 88, 86, 191, 64, 189, 82, 197, 161, 86, 168, 94, 199, 63, 162, 68, 189, 174, 168, 89, 161, 61, 72, 84, 88, 170, 70, 185, 179, 67, 184, 69, 199, 195, 72, 60, 66, 84, 82, 160, 170, 191, 70, 194, 96, 85, 60, 96, 173, 95, 182, 87, 69, 177, 64, 195, 167, 91, 69, 194, 61, 73, 163, 86, 191, 83, 177, 186, 99, 99, 188, 178, 89, 186, 194, 176, 199, 83, 195, 168, 199, 87, 172, 188, 99, 64, 171, 95, 186, 172, 69, 197, 188, 86, 194, 193, 94, 95, 186, 192, 68, 169, 71, 94, 167, 172, 93, 173, 171, 64, 171, 166, 182, 76, 174, 66, 177, 190, 182, 171, 95, 87, 175, 170, 82, 189, 195, 170, 163, 192, 160, 165, 92, 69, 61, 194, 183, 194, 175, 193, 98, 82, 63, 163, 69, 197, 94, 186, 70, 60, 168, 66, 178, 176, 95, 68, 80, 84, 96, 163, 67, 67, 170, 71, 164, 85, 60, 182, 178, 62, 174, 89, 196, 196, 93, 93, 178, 195, 77, 179, 74, 91, 190, 198, 72, 189, 88, 167, 196, 74, 182, 67, 184, 181, 94, 76, 93, 65, 197, 95, 79, 197, 179, 193, 193, 160, 77, 183, 179, 62, 184, 185, 87, 177, 168, 176, 161, 92, 90, 165, 178, 182, 81, 184, 181, 180, 86, 94, 84, 88, 190, 71, 80, 181, 169, 88, 167, 167, 172, 65, 71, 91, 64, 91, 171, 65, 185, 99, 191, 90, 169, 93, 99, 193, 63, 187, 164, 166, 70, 74, 173, 77, 86, 161, 174, 168, 88, 82, 87, 163, 82, 197, 185, 186, 170, 197, 160, 99, 85, 192, 98, 176, 175, 60, 168, 94, 183, 197, 81, 194, 60, 61, 71, 192, 199, 164, 179, 161, 164, 177, 161, 60, 95, 160, 68, 74, 191, 84, 163, 190, 173, 96, 91, 86, 65, 67, 161, 70, 189, 72, 66, 70, 186, 80, 192, 195, 160, 177, 172, 94, 198, 196, 71, 188, 78, 98, 193, 96, 190, 64, 82, 98, 189, 64, 170, 77, 197, 193, 175, 190, 161, 198, 190, 64, 69, 84, 167, 190, 177, 66, 197, 173, 99, 91, 61, 67, 163, 63, 62, 83, 164, 160, 183, 195, 73, 67, 72, 83, 92, 182, 80, 94, 198, 181, 75, 97, 97, 83, 69, 191, 187, 188, 181, 80, 83, 92, 165, 186, 91, 170, 61, 193, 83, 165, 196, 68, 189, 66, 87, 171, 194, 185, 66, 169, 75, 70, 161, 70, 63, 169, 187, 64, 165, 65, 177, 87, 197, 63, 181, 70, 63, 69, 75, 99, 194, 178, 84, 62, 71, 81, 69, 183, 184, 195, 169, 60, 175, 97, 89, 170, 91, 198, 177, 73, 97, 197, 74, 196, 190, 75, 96, 78, 93, 86, 69, 77, 197, 98, 163, 192, 92, 87, 186, 199, 85, 195, 81, 87, 174, 180, 174, 61, 77, 92, 197, 65, 190, 81, 187, 173, 62, 79, 175, 171, 99, 194, 96, 71, 172, 69, 62, 194, 199, 168, 63, 90, 183, 70, 70, 172, 87, 193, 169, 94, 187, 166, 81, 84, 95, 191, 87, 73, 165, 61, 198, 78, 78, 87, 75, 180, 167, 186, 61, 177, 188, 82, 166, 92, 188, 179, 82, 187, 167, 189, 177, 183, 88, 71, 84, 167, 78, 177, 163, 66, 73, 82, 65, 83, 182, 160, 66, 199, 174, 187, 194, 91, 178, 169, 187, 183, 163, 177, 190, 90, 191, 175, 160, 81, 84, 179, 75, 175, 185, 173, 60, 91, 197, 168, 73, 72, 74, 77, 98, 188, 176, 88, 79, 65, 91, 92, 172, 89, 82, 177, 62, 160, 187, 73, 78, 88, 99, 194, 167, 190, 194, 68, 95, 180, 81, 169, 64, 192, 63, 165, 196, 161, 75, 63, 192, 88, 75, 97, 173, 92, 195, 190, 192, 160, 182, 76, 160, 162, 192, 160, 80, 99, 84, 80, 83, 160, 165, 99, 85, 99, 182, 193, 175, 168, 162, 89, 95, 98, 92, 176, 168, 89, 77, 76, 188, 194, 97, 95, 94, 181, 191, 189, 186, 65, 175, 194, 182, 189, 192, 180, 197, 76, 87, 164, 87, 166, 77, 88, 169, 62, 77, 167, 99, 181, 99, 197, 65, 82, 162, 179, 89, 192, 76, 75, 87, 94, 177, 167, 80, 96, 176, 78, 79, 194, 77, 80, 181, 186, 68, 63, 90, 177, 185, 185, 83, 191, 163, 89, 79, 172, 85, 171, 91, 79, 84, 180, 86, 70, 85, 166, 187, 183, 64, 92, 93, 196, 178, 171, 176, 76, 163, 62, 78, 196, 183, 164, 72, 182, 167, 172, 180, 173, 193, 183, 71, 66, 196, 161, 88, 194, 81, 184, 161, 187, 166, 64, 190, 172, 96, 83, 184, 78, 179, 182, 92, 171, 176, 181, 172, 80, 187, 176, 99, 61, 84, 82, 99, 185, 98, 96, 96, 198, 79, 80, 168, 74, 177, 167, 96, 66, 60, 86, 92, 163, 190, 64, 88, 87, 161, 176, 171, 79, 78, 67, 199, 178, 176, 179, 84, 191, 75, 95, 184, 64, 174, 61, 192, 64, 177, 92, 179, 83, 75, 185, 67, 194, 74, 99, 73, 165, 163, 163, 191, 62, 89, 178, 90, 76, 190, 197, 178, 61, 72, 190, 75, 174, 98, 84, 97, 72, 94, 185, 185, 70, 95, 186, 187, 73, 85, 198, 176, 97, 185, 87, 173],
[183, 188, 60, 69, 63, 185, 181, 163, 163, 83, 182, 80, 167, 162, 97, 179, 167, 66, 199, 163, 64, 85, 196, 194, 179, 99, 90, 166, 181, 192, 160, 82, 191, 96, 182, 94, 197, 164, 183, 183, 63, 190, 73, 99, 66, 69, 81, 182, 87, 79, 87, 66, 79, 70, 79, 190, 192, 84, 180, 176, 75, 195, 95, 76, 163, 178, 62, 95, 174, 63, 83, 91, 67, 170, 97, 162, 68, 169, 175, 173, 173, 80, 187, 179, 197, 185, 184, 64, 84, 176, 93, 92, 64, 66, 188, 85, 199, 65, 172, 86, 180, 189, 64, 90, 83, 86, 162, 164, 190, 195, 62, 191, 173, 71, 199, 170, 181, 88, 170, 182, 80, 89, 182, 182, 166, 91, 64, 188, 171, 188, 69, 91, 68, 68, 94, 90, 72, 68, 73, 77, 166, 180, 91, 90, 177, 175, 79, 175, 69, 197, 76, 165, 199, 181, 78, 85, 188, 65, 79, 196, 80, 61, 197, 70, 195, 64, 94, 173, 172, 61, 174, 76, 85, 184, 60, 169, 199, 188, 95, 184, 93, 65, 67, 78, 173, 89, 63, 197, 188, 177, 94, 95, 96, 192, 196, 199, 88, 66, 175, 87, 61, 87, 61, 196, 192, 76, 176, 64, 194, 68, 192, 68, 180, 69, 189, 91, 175, 70, 78, 180, 92, 170, 161, 175, 187, 175, 168, 88, 64, 83, 188, 174, 169, 196, 76, 90, 94, 79, 82, 98, 179, 81, 62, 92, 77, 175, 194, 161, 92, 87, 60, 91, 95, 60, 76, 63, 82, 86, 192, 82, 97, 162, 173, 94, 182, 62, 163, 168, 175, 165, 171, 161, 78, 165, 87, 174, 192, 86, 69, 165, 183, 84, 187, 192, 89, 76, 74, 170, 77, 184, 71, 82, 174, 89, 71, 64, 87, 81, 171, 189, 187, 88, 188, 73, 70, 180, 82, 179, 162, 194, 68, 60, 183, 193, 72, 175, 65, 160, 96, 186, 62, 182, 94, 73, 178, 64, 194, 186, 81, 96, 93, 91, 183, 97, 179, 68, 179, 78, 85, 168, 92, 165, 173, 69, 197, 164, 182, 69, 166, 199, 78, 179, 197, 190, 189, 85, 177, 190, 198, 66, 78, 161, 163, 185, 186, 180, 176, 169, 69, 93, 83, 181, 86, 98, 96, 174, 68, 181, 190, 69, 80, 74, 180, 176, 70, 190, 77, 196, 65, 78, 168, 83, 95, 93, 196, 191, 180, 188, 61, 97, 185, 63, 161, 183, 81, 76, 98, 161, 189, 76, 83, 170, 72, 199, 76, 97, 67, 89, 77, 192, 74, 182, 74, 167, 89, 191, 85, 198, 166, 88, 78, 181, 176, 174, 65, 61, 188, 197, 173, 165, 181, 199, 185, 170, 82, 95, 196, 171, 188, 96, 162, 89, 80, 195, 83, 195, 193, 170, 160, 88, 172, 177, 197, 169, 68, 190, 62, 165, 163, 197, 85, 165, 65, 164, 190, 186, 88, 63, 72, 97, 170, 91, 71, 64, 182, 178, 87, 191, 175, 190, 89, 74, 165, 175, 179, 164, 190, 69, 87, 86, 81, 199, 193, 188, 83, 196, 97, 97, 84, 168, 174, 99, 78, 68, 182, 165, 86, 65, 169, 199, 73, 163, 194, 194, 83, 176, 191, 165, 63, 87, 188, 167, 74, 94, 64, 175, 60, 74, 168, 186, 61, 81, 167, 92, 161, 96, 85, 83, 186, 182, 90, 194, 189, 178, 176, 181, 194, 175, 181, 198, 179, 193, 173, 78, 66, 164, 79, 92, 86, 174, 183, 196, 84, 99, 165, 160, 193, 178, 98, 69, 67, 63, 64, 163, 96, 62, 184, 193, 82, 90, 81, 184, 189, 186, 187, 179, 193, 94, 86, 94, 193, 166, 186, 168, 87, 71, 89, 66, 163, 83, 188, 187, 162, 79, 161, 194, 190, 190, 95, 183, 177, 173, 170, 87, 98, 91, 161, 164, 91, 94, 160, 169, 65, 166, 163, 91, 94, 180, 95, 179, 89, 182, 161, 195, 194, 62, 184, 180, 179, 196, 171, 72, 162, 77, 184, 80, 99, 167, 196, 163, 179, 182, 80, 174, 187, 185, 68, 163, 198, 84, 83, 188, 193, 99, 162, 167, 61, 62, 68, 89, 82, 181, 175, 92, 190, 75, 162, 62, 70, 60, 191, 69, 77, 160, 71, 80, 180, 92, 169, 172, 178, 189, 183, 164, 65, 175, 66, 162, 86, 174, 91, 169, 181, 161, 72, 195, 60, 68, 97, 85, 195, 60, 163, 169, 81, 92, 184, 196, 170, 62, 65, 161, 161, 67, 67, 190, 167, 80, 165, 196, 179, 190, 163, 68, 186, 185, 99, 66, 186, 82, 85, 180, 75, 193, 193, 94, 174, 76, 192, 61, 83, 99, 99, 81, 98, 73, 75, 62, 61, 187, 177, 72, 93, 94, 186, 198, 78, 64, 98, 69, 72, 76, 84, 87, 94, 67, 191, 78, 73, 170, 74, 62, 68, 82, 180, 173, 197, 163, 162, 82, 83, 81, 179, 198, 188, 168, 89, 94, 188, 169, 94, 87, 197, 86, 62, 73, 182, 160, 176, 198, 190, 76, 98, 64, 182, 192, 73, 160, 60, 191, 67, 167, 78, 160, 185, 174, 169, 194, 61, 60, 186, 94, 64, 85, 184, 78, 89, 92, 171, 79, 96, 78, 88, 87, 190, 171, 83, 188, 177, 162, 60, 87, 92, 69, 67, 164, 81, 187, 160, 77, 187, 186, 89, 190, 196, 185, 69, 179, 184, 194, 85, 164, 198, 90, 173, 68, 80, 73, 99, 93, 163, 69, 195, 190, 83, 167, 169, 161, 173, 61, 80, 89, 86, 91, 162, 90, 98, 79, 83, 64, 171, 175, 95, 162, 97, 89, 62, 169, 185, 80, 195, 188, 81, 160, 95, 168, 98, 96, 96, 166, 78, 161, 86, 199, 63, 198, 180, 96, 61, 76, 82, 75, 178, 79, 80, 178, 91, 88, 190, 164, 191, 165, 160, 73, 61, 193, 96, 89, 199, 66, 74, 165, 187, 179, 163, 66, 188, 67, 65, 91, 60, 176, 65, 77, 90, 71, 175, 167, 186, 172, 171, 164, 192, 61, 187, 99, 191, 196, 181, 183, 176, 163, 193, 62, 67, 69, 69, 198, 173, 72, 60, 196, 190, 67, 78, 74, 197, 197, 179, 175, 96, 189, 187, 190, 67, 79, 84, 70, 178, 98, 98, 86, 198, 189, 65, 181, 176, 80, 66, 186, 92, 188, 67, 196, 176, 61, 189, 82, 95, 199, 189, 96, 178, 97, 184, 93, 187, 92, 178, 189, 161, 171, 161, 160, 190, 161, 99, 191, 181, 183, 199, 192, 65, 162, 193, 171, 190, 64, 65, 190, 170, 60, 192, 67, 97, 189, 94, 89, 174, 198, 84, 90, 170, 181, 185, 160, 91, 184, 194, 176, 188, 89, 78, 161, 70, 169, 187, 76, 88, 185, 79, 96, 169, 67, 81, 191, 168, 175, 85, 96, 96, 77, 88, 197, 75, 79, 196, 87, 198, 72, 72, 82, 93, 70, 182, 191, 75, 88, 80, 70, 187, 66, 175, 164, 185, 65, 180, 185, 92, 82, 90, 99, 178, 174, 169, 184, 180, 68, 167, 96, 161, 188, 93, 84, 174, 192, 78, 186, 187, 82, 60, 177, 88, 88, 181, 79, 90, 60, 162, 183, 177, 90, 161, 190, 161, 63, 177, 191, 196, 180, 68, 179, 181, 87, 80, 86, 71, 62, 62, 189, 170, 187, 90, 97, 80, 168, 181, 166, 186, 199, 193, 90, 80, 173, 195, 161, 79, 68, 164, 82, 89, 84, 192, 181, 97, 181, 191, 88, 197, 67, 91, 69, 194, 181, 187, 93, 75, 65, 160, 86, 184, 67, 61, 71, 67, 163, 94, 83, 164, 184, 169, 78, 172, 163, 72, 197, 162, 96, 181, 182, 78, 87, 73, 169, 168, 199, 192, 175, 174, 95, 188, 195, 192, 75, 62, 171, 90, 98, 173, 181, 63, 166, 199, 75, 193, 66, 83, 91, 183, 75, 65, 82, 167, 97, 91, 172, 83, 170, 164, 60, 166, 93, 79, 62, 71, 179, 93, 177, 61, 76, 186, 183, 80, 84, 82, 182, 167, 94, 71, 176, 172, 80, 84, 87, 170, 72, 93, 78, 167, 163, 78, 81, 98, 73, 188, 175, 168, 80, 195, 72, 161, 198, 78, 64, 191, 82, 176, 65, 91, 85, 62, 192, 166, 193, 173, 186, 76, 179, 78, 88, 174, 172, 86, 177, 84, 68, 163, 188, 96, 194, 193, 193, 82, 91, 178, 181, 174, 65, 175, 73, 87, 196, 169, 93, 69, 63, 176, 167, 78, 71, 175, 81, 165, 87, 78, 173, 86, 177, 193, 163, 198, 173, 179, 80, 179, 63, 65, 71, 192, 190, 183, 61, 168, 87, 74, 74, 81, 73, 197, 165, 73, 82, 85, 191, 188, 69, 181, 199, 72, 183, 68, 90, 81, 80, 95, 173, 90, 178, 193, 171, 93, 190, 64, 179, 165, 175, 79, 92, 91, 61, 65, 163, 85, 181, 165, 80, 62, 64, 168, 197, 84, 161, 75, 172, 77, 169, 71, 76, 78, 70, 189, 199, 91, 167, 80, 82, 94, 71, 167, 174, 182, 187, 81, 168, 187, 160, 178, 163, 66, 85, 71, 97, 93, 99, 90, 87, 195, 99, 74, 99, 188, 174, 99, 199, 69, 177, 61, 180, 85, 193, 163, 70, 69, 197, 168, 187, 90, 180, 74, 82, 96, 179, 176, 163, 83, 160, 170, 94, 89, 198, 168, 82, 187, 63, 89, 86, 76, 97, 70, 180, 93, 81, 189, 97, 167, 93, 80, 92, 64, 70, 78, 191, 96, 95, 77, 161, 164, 171, 178, 190, 98, 190, 83, 161, 192, 83, 194, 186, 97, 93, 65, 65, 175, 176, 63, 82, 93, 161, 169, 65, 163, 63, 80, 175, 72, 194, 180, 187, 95, 62, 174, 171, 165, 65, 160, 168, 161, 171, 89, 61, 164, 168, 79, 63, 182, 174, 189, 186, 89, 85, 69, 77, 176, 88, 167, 199, 86, 192, 193, 161, 68, 78, 185, 68, 78, 90, 189, 179, 83, 192, 163, 164, 164, 83, 78, 166, 69, 66, 167, 91, 78, 161, 183, 198, 73, 193, 162, 192, 160, 95, 83, 191, 62, 175, 190, 183, 198, 196, 79, 165, 96, 85, 180, 77, 194, 165, 80, 65, 68, 186, 83, 172, 69, 190, 75, 66, 170, 94, 72, 95, 171, 83, 184, 79, 183, 189, 76, 82, 96, 91, 169, 72, 172, 168, 177, 168, 77, 186, 196, 187, 85, 196, 63, 69, 67, 194, 180, 181, 80, 179, 170, 162, 91, 174, 169, 196, 197, 85, 60, 167, 65, 168, 194, 71, 60, 183, 170, 192, 74, 88, 96, 75, 178, 86, 91, 183, 80, 168, 161, 162, 97, 181, 75, 68, 97, 172, 96, 84, 94, 195, 161, 192, 175, 92, 168, 187, 196, 168, 181, 188, 84, 67, 63, 86, 196, 67, 197, 167, 72, 199, 87, 62, 177, 194, 178, 93, 162, 88, 177, 82, 166, 62, 185, 99, 61, 89, 69, 63, 79, 161, 89, 73, 91, 165, 73, 72, 161, 89, 91, 93, 198, 63, 170, 168, 68, 87, 177, 62, 87, 187, 77, 99, 173, 190, 90, 198, 86, 198, 167, 65, 172, 93, 167, 194, 189, 182, 70, 184, 91, 189, 189, 79, 169, 177, 166, 160, 164, 60, 85, 173, 167, 99, 95, 97, 183, 88, 185, 85, 194, 184, 94, 191, 92, 173, 95, 177, 167, 78, 90, 184, 79, 72, 165, 173, 98, 65, 68, 72, 63, 173, 98, 80, 163, 167, 67, 66, 161, 82, 86, 186, 91, 182, 171, 66, 85, 84, 175, 189, 188, 63, 195, 194, 75, 187, 168, 66, 95, 87, 72, 90, 96, 170, 173, 184, 63, 189, 89, 87, 188, 171, 190, 86, 162, 96, 198, 79, 71, 82, 80, 75, 198, 171, 163, 72, 195, 176, 170, 92, 60, 76, 173, 171, 97, 162, 65, 98, 90, 80, 185, 74, 197, 168, 176, 60, 175, 95, 97, 96, 82, 180, 96, 160, 71, 89, 74, 180, 95, 60, 196, 90, 196, 86, 65, 98, 194, 184, 67, 163, 191, 174, 60, 171, 83, 174, 79, 98, 192, 64, 188, 180, 86, 86, 184, 60, 189, 171, 66, 91, 178, 162, 164, 183, 88, 168, 90, 83, 167, 160, 189, 183, 190, 89, 65, 76, 82, 197, 178, 76, 192, 185, 91, 171, 65, 88, 185, 170, 87, 92, 170, 93, 85, 170, 80, 192, 197, 169, 98, 93, 91, 60, 181, 172, 162, 68, 189, 197, 89, 185, 161, 187, 72, 197, 91, 68, 164, 71, 70, 177, 80, 162, 84, 72, 72, 170, 75, 180],
[167, 94, 87, 99, 160, 64, 89, 167, 192, 192, 188, 71, 168, 89, 74, 78, 164, 80, 168, 183, 81, 97, 169, 82, 98, 67, 189, 182, 193, 191, 185, 197, 190, 189, 66, 68, 99, 64, 68, 185, 93, 185, 174, 198, 94, 88, 66, 75, 70, 99, 83, 197, 93, 91, 86, 195, 193, 185, 99, 94, 179, 183, 186, 166, 68, 176, 86, 90, 174, 67, 68, 167, 175, 73, 186, 94, 64, 161, 99, 66, 82, 170, 61, 161, 93, 161, 172, 84, 183, 79, 65, 198, 183, 88, 198, 80, 188, 99, 171, 180, 83, 83, 175, 196, 177, 69, 61, 94, 186, 191, 81, 183, 89, 162, 172, 164, 170, 82, 99, 189, 67, 91, 177, 189, 89, 85, 190, 92, 191, 85, 179, 88, 89, 177, 74, 97, 65, 82, 178, 184, 66, 99, 192, 80, 60, 184, 197, 72, 97, 87, 96, 181, 61, 65, 196, 75, 75, 68, 175, 162, 73, 66, 92, 82, 92, 92, 173, 81, 75, 191, 61, 70, 170, 173, 167, 67, 166, 77, 165, 84, 167, 183, 95, 160, 78, 187, 172, 162, 74, 94, 187, 194, 184, 80, 167, 77, 199, 179, 187, 69, 60, 63, 178, 191, 78, 95, 188, 77, 161, 71, 71, 189, 188, 173, 76, 194, 65, 61, 165, 73, 171, 60, 188, 91, 181, 177, 93, 71, 77, 88, 169, 81, 160, 67, 170, 162, 160, 68, 76, 181, 68, 161, 69, 162, 64, 177, 171, 88, 165, 62, 168, 189, 76, 192, 190, 79, 176, 89, 167, 175, 68, 172, 183, 82, 83, 70, 97, 76, 196, 68, 93, 170, 187, 166, 66, 192, 179, 93, 93, 85, 94, 82, 177, 64, 190, 188, 188, 70, 162, 191, 191, 74, 165, 163, 99, 85, 163, 60, 179, 161, 186, 77, 185, 71, 161, 173, 92, 86, 66, 171, 97, 179, 69, 185, 76, 77, 194, 91, 189, 70, 168, 181, 93, 61, 75, 166, 99, 84, 77, 183, 98, 86, 64, 84, 66, 60, 183, 88, 179, 190, 168, 174, 80, 186, 71, 83, 199, 78, 168, 73, 176, 175, 176, 163, 95, 75, 195, 95, 166, 61, 181, 94, 90, 83, 64, 63, 79, 65, 90, 172, 175, 189, 70, 62, 92, 62, 184, 62, 199, 73, 77, 90, 95, 198, 194, 191, 197, 81, 192, 164, 188, 77, 191, 89, 69, 84, 168, 95, 186, 64, 191, 71, 86, 70, 189, 166, 76, 73, 68, 75, 68, 73, 194, 75, 79, 74, 98, 199, 80, 189, 187, 179, 84, 188, 170, 186, 73, 80, 89, 68, 181, 73, 85, 84, 81, 89, 76, 194, 80, 168, 179, 76, 61, 180, 181, 177, 82, 95, 169, 69, 62, 181, 164, 68, 193, 168, 186, 91, 98, 96, 164, 160, 177, 187, 73, 182, 81, 88, 94, 85, 167, 83, 174, 191, 167, 186, 63, 177, 184, 170, 93, 169, 96, 68, 69, 163, 172, 198, 173, 77, 177, 183, 163, 195, 166, 84, 196, 99, 62, 172, 164, 179, 164, 175, 194, 74, 189, 84, 189, 190, 192, 65, 78, 166, 66, 93, 62, 71, 64, 61, 199, 77, 89, 63, 64, 175, 179, 61, 185, 99, 70, 83, 172, 169, 74, 194, 192, 99, 182, 63, 64, 183, 88, 93, 91, 194, 77, 98, 188, 95, 179, 171, 80, 83, 77, 197, 160, 96, 191, 165, 167, 61, 97, 198, 173, 195, 195, 179, 183, 166, 173, 89, 197, 72, 174, 89, 193, 169, 163, 181, 196, 80, 71, 167, 189, 171, 85, 83, 160, 184, 162, 79, 90, 76, 88, 70, 84, 172, 62, 171, 168, 90, 174, 199, 86, 78, 192, 175, 182, 67, 181, 198, 80, 198, 180, 193, 169, 180, 71, 177, 175, 96, 160, 179, 198, 87, 182, 83, 63, 79, 98, 163, 183, 183, 198, 87, 178, 162, 163, 71, 80, 165, 195, 170, 188, 95, 169, 68, 70, 65, 195, 80, 81, 187, 86, 90, 94, 88, 183, 65, 168, 187, 86, 99, 184, 197, 91, 95, 182, 160, 63, 90, 180, 68, 190, 87, 86, 87, 69, 77, 172, 71, 193, 89, 186, 97, 190, 71, 74, 165, 166, 69, 81, 74, 198, 90, 74, 60, 191, 90, 168, 77, 178, 187, 76, 72, 197, 92, 88, 94, 167, 184, 172, 164, 164, 80, 61, 72, 166, 61, 175, 166, 60, 91, 171, 187, 87, 164, 195, 187, 191, 79, 61, 182, 66, 170, 164, 179, 177, 162, 96, 95, 63, 192, 60, 171, 73, 76, 182, 78, 191, 180, 86, 65, 179, 62, 179, 187, 62, 93, 93, 93, 171, 90, 187, 181, 83, 182, 167, 81, 70, 93, 70, 74, 160, 64, 184, 171, 72, 80, 75, 177, 97, 166, 174, 194, 160, 190, 83, 61, 79, 65, 198, 189, 177, 84, 85, 166, 179, 174, 60, 169, 60, 168, 180, 82, 191, 161, 164, 84, 185, 88, 169, 165, 195, 85, 170, 67, 97, 192, 70, 164, 175, 91, 192, 171, 173, 94, 97, 69, 87, 179, 61, 82, 199, 192, 195, 170, 74, 88, 99, 86, 87, 172, 67, 94, 98, 187, 61, 99, 79, 178, 61, 68, 191, 81, 180, 191, 85, 170, 76, 194, 190, 176, 180, 79, 98, 95, 93, 76, 174, 191, 175, 61, 177, 69, 98, 162, 80, 184, 195, 192, 70, 66, 94, 75, 194, 87, 69, 84, 171, 179, 167, 193, 90, 69, 160, 83, 196, 178, 173, 97, 65, 71, 160, 185, 160, 94, 60, 183, 178, 97, 81, 60, 188, 171, 86, 193, 178, 96, 196, 181, 194, 96, 66, 87, 181, 84, 87, 183, 177, 195, 168, 171, 70, 83, 92, 183, 88, 174, 183, 176, 189, 183, 163, 170, 180, 171, 193, 172, 171, 85, 89, 90, 192, 162, 71, 60, 187, 87, 182, 189, 194, 187, 166, 84, 95, 69, 183, 180, 65, 188, 182, 72, 160, 191, 68, 171, 164, 91, 84, 166, 88, 92, 184, 162, 163, 167, 75, 82, 89, 176, 179, 74, 180, 67, 97, 167, 196, 197, 182, 81, 91, 166, 94, 173, 87, 192, 177, 195, 93, 188, 160, 96, 197, 91, 164, 73, 95, 97, 99, 67, 175, 162, 160, 174, 73, 87, 85, 77, 81, 61, 81, 60, 80, 162, 82, 97, 175, 180, 98, 88, 182, 192, 65, 183, 96, 84, 84, 178, 96, 196, 70, 83, 82, 167, 177, 175, 74, 188, 186, 95, 76, 99, 99, 174, 178, 96, 70, 180, 69, 69, 96, 180, 162, 98, 181, 193, 92, 172, 98, 90, 62, 92, 166, 88, 172, 171, 166, 91, 164, 189, 94, 176, 91, 178, 72, 90, 163, 161, 72, 191, 180, 61, 163, 163, 173, 84, 86, 178, 180, 71, 66, 87, 166, 90, 180, 82, 80, 60, 79, 99, 166, 176, 171, 167, 98, 67, 195, 87, 90, 169, 199, 189, 80, 96, 191, 169, 84, 198, 170, 88, 167, 96, 69, 177, 67, 182, 179, 69, 70, 75, 174, 80, 171, 82, 95, 195, 75, 82, 195, 169, 71, 193, 61, 70, 192, 61, 94, 162, 186, 71, 66, 77, 61, 83, 91, 73, 91, 70, 99, 173, 61, 67, 86, 92, 75, 88, 195, 93, 160, 62, 183, 163, 60, 189, 183, 183, 78, 64, 67, 178, 180, 81, 169, 180, 97, 184, 162, 74, 87, 64, 190, 95, 162, 190, 62, 81, 69, 183, 97, 193, 177, 194, 172, 199, 176, 99, 190, 183, 75, 164, 96, 193, 178, 178, 70, 65, 86, 78, 75, 171, 93, 180, 187, 65, 86, 183, 175, 186, 62, 196, 97, 66, 96, 87, 162, 71, 179, 93, 177, 91, 182, 87, 64, 162, 187, 71, 177, 185, 91, 77, 184, 82, 78, 89, 95, 190, 85, 186, 60, 192, 60, 99, 85, 178, 68, 182, 164, 164, 166, 183, 97, 193, 183, 61, 72, 198, 72, 62, 183, 60, 87, 88, 161, 162, 71, 163, 190, 179, 96, 70, 190, 161, 190, 78, 183, 182, 96, 91, 198, 83, 66, 96, 187, 195, 85, 183, 77, 97, 187, 193, 169, 79, 90, 78, 196, 167, 183, 168, 184, 175, 70, 62, 189, 91, 86, 167, 174, 82, 173, 75, 85, 62, 66, 85, 194, 81, 189, 85, 75, 167, 88, 65, 88, 97, 164, 189, 68, 75, 170, 179, 189, 199, 198, 196, 60, 89, 164, 68, 167, 74, 194, 178, 177, 72, 96, 196, 62, 95, 177, 169, 83, 97, 70, 191, 79, 79, 174, 82, 80, 187, 180, 180, 98, 90, 198, 168, 173, 180, 175, 87, 65, 192, 81, 73, 95, 61, 173, 194, 87, 76, 92, 169, 68, 95, 182, 76, 175, 163, 63, 69, 173, 194, 98, 69, 175, 86, 187, 62, 74, 85, 87, 194, 171, 161, 85, 177, 76, 182, 75, 185, 84, 94, 170, 188, 161, 178, 65, 90, 63, 81, 98, 75, 172, 89, 194, 97, 67, 174, 192, 197, 169, 94, 182, 85, 80, 165, 170, 193, 177, 90, 186, 72, 164, 93, 168, 194, 87, 84, 176, 87, 174, 86, 64, 98, 161, 196, 72, 172, 70, 191, 165, 195, 180, 92, 84, 181, 73, 172, 191, 194, 193, 75, 94, 182, 185, 198, 168, 195, 92, 81, 174, 86, 170, 78, 89, 160, 98, 169, 91, 160, 86, 89, 194, 194, 181, 197, 77, 97, 161, 166, 62, 64, 82, 81, 87, 168, 85, 98, 82, 180, 97, 92, 183, 90, 76, 174, 170, 188, 82, 163, 64, 91, 95, 187, 73, 166, 199, 183, 72, 191, 165, 177, 190, 183, 188, 98, 187, 72, 195, 78, 60, 98, 95, 72, 193, 197, 196, 67, 178, 91, 162, 192, 67, 62, 71, 86, 72, 68, 187, 63, 189, 183, 160, 71, 177, 78, 183, 67, 65, 67, 171, 65, 64, 85, 166, 169, 175, 183, 77, 194, 79, 62, 172, 175, 180, 74, 87, 164, 67, 69, 199, 163, 179, 91, 77, 97, 98, 87, 99, 178, 99, 71, 87, 173, 92, 99, 179, 96, 94, 61, 62, 92, 174, 61, 60, 199, 81, 196, 171, 97, 63, 186, 63, 96, 192, 84, 72, 67, 160, 92, 69, 92, 197, 74, 95, 189, 183, 185, 180, 186, 166, 97, 83, 199, 168, 184, 185, 75, 184, 76, 81, 173, 96, 176, 190, 164, 165, 196, 98, 178, 87, 168, 78, 186, 79, 190, 83, 181, 176, 177, 64, 175, 63, 162, 95, 172, 99, 98, 174, 174, 71, 89, 87, 173, 168, 73, 182, 180, 66, 76, 182, 65, 161, 63, 161, 198, 178, 68, 198, 86, 185, 178, 195, 88, 74, 179, 193, 98, 199, 63, 179, 172, 88, 61, 97, 160, 65, 162, 184, 83, 95, 182, 83, 198, 190, 84, 63, 84, 97, 76, 167, 162, 80, 91, 96, 194, 189, 191, 73, 163, 64, 196, 73, 171, 85, 199, 84, 69, 81, 93, 198, 60, 189, 171, 176, 184, 94, 82, 168, 96, 183, 84, 99, 167, 71, 91, 199, 176, 86, 70, 182, 166, 95, 163, 173, 90, 75, 168, 188, 176, 94, 179, 91, 96, 198, 96, 67, 71, 198, 187, 84, 83, 190, 87, 174, 96, 98, 84, 180, 194, 94, 89, 169, 79, 77, 95, 60, 182, 188, 99, 79, 189, 72, 92, 182, 70, 198, 181, 80, 86, 172, 196, 187, 67, 84, 176, 79, 169, 83, 184, 168, 82, 64, 60, 187, 92, 178, 164, 60, 161, 68, 60, 180, 66, 173, 80, 168, 164, 78, 84, 74, 199, 98, 199, 188, 173, 65, 70, 85, 191, 183, 78, 161, 192, 79, 162, 192, 179, 73, 183, 85, 192, 89, 174, 61, 191, 166, 88, 172, 65, 171, 63, 70, 191, 172, 161, 75, 73, 99, 67, 162, 85, 182, 178, 79, 60, 66, 70, 188, 70, 96, 85, 163, 192, 197, 82, 166, 160, 173, 183, 186, 169, 179, 192, 60, 91, 79, 188, 184, 84, 96, 163, 69, 98, 195, 87, 162, 77, 190, 96, 181, 171, 197, 81, 167, 178, 161, 67, 175, 92, 69, 74, 189, 60, 63, 187, 71, 69, 74, 183, 185, 194, 187, 87, 164, 94, 199, 164, 72, 184, 176, 197, 193, 164, 80, 81, 79, 92, 164, 97, 168, 90, 169, 196, 169, 74, 164, 177, 176, 185, 191, 76, 167, 189, 174, 64, 171, 84, 189, 176, 67, 90, 177, 183, 93, 62, 164, 174, 68, 185, 198, 71, 185, 69],
[175, 80, 64, 92, 69, 190, 182, 165, 170, 183, 187, 166, 99, 64, 174, 163, 186, 190, 87, 198, 176, 171, 94, 72, 183, 82, 83, 188, 181, 76, 89, 174, 193, 168, 86, 185, 88, 68, 77, 66, 168, 166, 168, 88, 184, 93, 161, 88, 185, 167, 64, 188, 63, 163, 72, 180, 164, 65, 175, 80, 60, 195, 171, 69, 193, 195, 83, 78, 167, 197, 63, 94, 75, 60, 88, 96, 67, 193, 95, 68, 70, 169, 63, 174, 72, 169, 187, 69, 83, 67, 73, 75, 176, 167, 96, 185, 186, 186, 178, 97, 74, 184, 161, 93, 83, 182, 66, 60, 187, 98, 64, 63, 195, 183, 166, 96, 84, 80, 74, 96, 77, 163, 92, 80, 194, 79, 165, 64, 91, 90, 62, 82, 183, 186, 184, 160, 81, 199, 79, 74, 67, 78, 78, 68, 163, 160, 66, 176, 85, 190, 188, 81, 179, 188, 169, 168, 79, 197, 99, 160, 170, 77, 63, 190, 187, 192, 186, 178, 163, 81, 181, 170, 86, 186, 94, 61, 84, 193, 197, 167, 194, 75, 183, 90, 73, 71, 195, 61, 67, 165, 81, 164, 84, 179, 98, 71, 161, 164, 84, 170, 175, 68, 182, 73, 186, 161, 185, 173, 180, 190, 180, 63, 96, 95, 84, 85, 178, 69, 196, 62, 95, 91, 84, 176, 180, 86, 191, 71, 182, 73, 67, 91, 197, 82, 168, 85, 176, 194, 77, 177, 90, 62, 163, 74, 167, 65, 170, 92, 169, 88, 76, 169, 185, 182, 170, 166, 69, 164, 99, 94, 180, 83, 83, 71, 162, 72, 161, 176, 180, 85, 98, 191, 67, 193, 169, 190, 84, 167, 181, 90, 69, 60, 194, 188, 176, 161, 97, 70, 187, 65, 93, 63, 68, 77, 171, 89, 72, 78, 182, 180, 89, 193, 171, 89, 160, 78, 185, 82, 82, 197, 86, 65, 90, 199, 76, 165, 178, 187, 196, 198, 193, 173, 185, 73, 61, 198, 82, 88, 167, 90, 71, 90, 163, 185, 167, 96, 160, 88, 74, 71, 76, 161, 80, 192, 169, 196, 75, 89, 187, 185, 81, 173, 190, 188, 161, 172, 84, 70, 185, 83, 179, 176, 91, 77, 76, 64, 197, 161, 97, 176, 68, 176, 166, 65, 97, 190, 67, 84, 79, 97, 180, 72, 162, 167, 191, 68, 75, 82, 163, 76, 96, 75, 95, 68, 164, 171, 162, 76, 179, 175, 71, 86, 95, 84, 197, 75, 164, 181, 67, 176, 99, 163, 64, 197, 175, 65, 90, 85, 171, 178, 174, 98, 65, 194, 188, 195, 90, 62, 181, 176, 73, 169, 167, 63, 167, 84, 61, 192, 180, 70, 96, 160, 82, 196, 198, 87, 190, 93, 62, 70, 181, 182, 182, 96, 87, 88, 80, 197, 79, 178, 161, 82, 175, 71, 80, 187, 167, 190, 89, 191, 77, 70, 171, 168, 177, 174, 183, 164, 181, 94, 92, 187, 98, 169, 164, 195, 90, 197, 84, 78, 199, 176, 184, 77, 186, 192, 185, 198, 93, 185, 166, 167, 62, 79, 71, 194, 177, 171, 91, 71, 83, 160, 67, 192, 184, 64, 79, 75, 165, 85, 89, 68, 188, 199, 191, 93, 62, 80, 182, 170, 64, 70, 77, 173, 175, 82, 168, 65, 62, 71, 95, 98, 97, 161, 93, 65, 65, 76, 98, 63, 171, 86, 177, 173, 88, 71, 193, 167, 194, 186, 196, 68, 82, 72, 172, 98, 73, 199, 164, 193, 184, 169, 92, 85, 98, 189, 87, 182, 76, 77, 86, 84, 164, 85, 160, 171, 93, 180, 97, 191, 163, 61, 80, 62, 186, 98, 190, 63, 190, 198, 91, 67, 85, 77, 72, 84, 162, 188, 71, 60, 171, 189, 197, 169, 173, 97, 172, 182, 190, 98, 95, 78, 189, 64, 78, 168, 196, 190, 74, 76, 194, 177, 196, 71, 75, 88, 65, 188, 181, 179, 182, 180, 178, 96, 165, 77, 189, 71, 79, 160, 60, 189, 88, 64, 95, 80, 81, 197, 195, 98, 190, 97, 188, 167, 182, 70, 186, 190, 190, 63, 193, 163, 161, 189, 67, 192, 93, 183, 69, 88, 184, 169, 187, 188, 77, 91, 168, 178, 191, 64, 174, 161, 184, 92, 72, 171, 94, 73, 93, 187, 193, 88, 97, 173, 195, 196, 183, 78, 65, 166, 172, 60, 73, 161, 171, 188, 96, 97, 81, 175, 75, 90, 161, 62, 194, 81, 71, 76, 62, 193, 184, 179, 84, 63, 162, 179, 163, 94, 61, 195, 60, 168, 91, 187, 189, 170, 74, 70, 88, 161, 85, 81, 77, 63, 177, 172, 79, 88, 162, 163, 182, 174, 72, 70, 189, 84, 192, 186, 97, 163, 84, 195, 63, 64, 163, 185, 199, 167, 76, 185, 165, 179, 197, 196, 181, 162, 177, 75, 85, 88, 70, 90, 83, 160, 190, 68, 169, 97, 187, 74, 165, 164, 174, 190, 61, 63, 180, 172, 170, 167, 76, 169, 160, 198, 169, 164, 84, 186, 73, 180, 195, 171, 180, 162, 72, 96, 188, 171, 187, 81, 171, 192, 64, 178, 175, 193, 60, 173, 77, 68, 63, 164, 182, 190, 65, 79, 73, 63, 99, 166, 190, 60, 183, 82, 192, 98, 66, 60, 88, 96, 188, 89, 193, 186, 172, 80, 73, 99, 162, 74, 77, 86, 60, 193, 194, 163, 198, 61, 197, 191, 95, 175, 64, 60, 71, 71, 178, 160, 86, 185, 192, 83, 72, 66, 185, 76, 88, 193, 82, 69, 97, 174, 165, 76, 195, 168, 198, 181, 185, 70, 61, 82, 62, 94, 90, 60, 178, 80, 197, 60, 176, 163, 71, 171, 69, 85, 77, 167, 99, 63, 74, 169, 161, 74, 182, 73, 70, 62, 92, 99, 176, 163, 187, 72, 182, 180, 162, 98, 97, 82, 61, 180, 72, 86, 198, 191, 186, 192, 175, 64, 185, 197, 169, 79, 96, 184, 87, 98, 75, 83, 185, 95, 186, 76, 61, 175, 98, 198, 197, 96, 163, 170, 160, 83, 99, 90, 95, 87, 90, 169, 161, 77, 166, 191, 86, 76, 89, 184, 78, 67, 174, 188, 194, 78, 191, 64, 88, 198, 165, 84, 191, 96, 178, 169, 165, 175, 96, 88, 75, 170, 195, 177, 99, 72, 192, 193, 199, 183, 188, 181, 178, 73, 75, 90, 71, 60, 167, 169, 78, 83, 172, 171, 171, 64, 94, 65, 73, 174, 167, 186, 191, 83, 89, 181, 98, 191, 164, 186, 183, 86, 177, 85, 84, 68, 66, 96, 81, 184, 71, 72, 81, 63, 187, 83, 171, 178, 170, 70, 64, 185, 98, 68, 193, 175, 71, 195, 72, 176, 83, 87, 70, 191, 92, 160, 88, 96, 88, 172, 171, 175, 89, 186, 193, 177, 85, 62, 194, 183, 65, 166, 61, 163, 167, 84, 160, 76, 167, 175, 60, 70, 73, 185, 166, 174, 62, 189, 85, 61, 194, 184, 73, 69, 187, 67, 193, 64, 176, 88, 80, 72, 81, 160, 162, 187, 89, 98, 168, 184, 182, 191, 160, 186, 160, 176, 172, 72, 69, 176, 69, 99, 84, 166, 185, 63, 67, 87, 195, 185, 179, 191, 186, 63, 62, 67, 181, 70, 186, 61, 87, 66, 185, 94, 86, 73, 75, 96, 67, 164, 76, 181, 62, 181, 63, 167, 160, 78, 81, 180, 67, 91, 73, 99, 63, 72, 73, 70, 62, 80, 175, 83, 75, 64, 90, 84, 87, 69, 170, 185, 97, 78, 82, 62, 170, 197, 162, 195, 178, 73, 193, 195, 161, 92, 180, 96, 186, 60, 167, 90, 91, 76, 189, 183, 86, 194, 77, 95, 97, 182, 166, 89, 65, 86, 63, 184, 68, 186, 95, 174, 198, 160, 181, 70, 81, 80, 88, 84, 179, 87, 87, 69, 61, 186, 165, 62, 73, 61, 75, 85, 172, 169, 82, 81, 170, 68, 68, 199, 82, 94, 188, 197, 186, 167, 191, 164, 72, 192, 172, 94, 187, 90, 189, 169, 98, 98, 77, 194, 162, 198, 196, 62, 63, 71, 61, 164, 73, 90, 180, 199, 180, 84, 64, 184, 79, 174, 81, 70, 76, 77, 69, 91, 161, 166, 89, 97, 186, 86, 185, 193, 181, 88, 93, 81, 181, 167, 69, 182, 187, 181, 160, 83, 92, 199, 180, 82, 81, 82, 61, 68, 179, 167, 81, 89, 67, 63, 97, 86, 170, 175, 177, 164, 90, 98, 78, 186, 196, 181, 96, 61, 189, 94, 183, 81, 194, 187, 187, 87, 170, 82, 73, 65, 164, 99, 199, 94, 81, 65, 179, 64, 64, 68, 99, 180, 171, 198, 167, 85, 63, 186, 88, 163, 86, 179, 175, 88, 87, 97, 168, 188, 194, 70, 69, 84, 63, 173, 199, 85, 76, 180, 99, 90, 95, 60, 83, 181, 192, 167, 189, 179, 71, 78, 92, 179, 193, 177, 187, 198, 193, 94, 87, 92, 193, 174, 172, 98, 74, 190, 75, 74, 90, 175, 77, 76, 78, 184, 60, 94, 63, 170, 185, 179, 62, 176, 188, 81, 95, 72, 177, 183, 196, 88, 98, 81, 64, 93, 189, 162, 63, 82, 90, 183, 86, 186, 162, 189, 85, 60, 75, 65, 184, 90, 172, 71, 92, 167, 65, 87, 81, 86, 174, 167, 192, 63, 185, 175, 199, 60, 198, 88, 178, 173, 180, 66, 180, 186, 64, 169, 199, 183, 79, 78, 61, 197, 168, 67, 192, 64, 179, 193, 178, 79, 93, 96, 81, 193, 72, 74, 181, 172, 178, 66, 82, 183, 85, 93, 165, 182, 189, 169, 96, 71, 73, 77, 190, 192, 86, 77, 197, 168, 85, 63, 167, 87, 62, 67, 77, 177, 169, 68, 84, 99, 70, 176, 185, 85, 66, 60, 199, 163, 192, 81, 80, 69, 79, 76, 179, 60, 161, 183, 176, 72, 164, 181, 168, 167, 72, 81, 96, 70, 78, 66, 91, 80, 198, 166, 80, 73, 61, 76, 78, 192, 70, 166, 74, 94, 64, 67, 90, 196, 192, 196, 61, 182, 187, 85, 84, 172, 61, 73, 90, 71, 198, 70, 188, 187, 68, 88, 181, 163, 164, 63, 182, 168, 61, 171, 198, 67, 95, 190, 195, 90, 169, 69, 164, 89, 177, 79, 77, 68, 168, 170, 167, 194, 84, 90, 168, 65, 94, 176, 170, 95, 169, 168, 84, 90, 165, 77, 64, 191, 180, 83, 90, 164, 195, 183, 162, 181, 98, 74, 99, 79, 194, 73, 84, 175, 90, 92, 90, 166, 97, 74, 166, 172, 193, 75, 99, 89, 66, 97, 167, 160, 165, 90, 94, 84, 189, 185, 60, 63, 86, 178, 170, 199, 185, 67, 81, 185, 75, 161, 82, 191, 83, 165, 99, 184, 73, 184, 196, 66, 187, 168, 181, 195, 172, 165, 170, 189, 188, 199, 67, 61, 164, 74, 198, 86, 179, 195, 69, 61, 72, 85, 169, 76, 192, 61, 162, 175, 90, 197, 97, 85, 173, 68, 175, 175, 95, 162, 199, 165, 166, 166, 83, 98, 178, 172, 177, 64, 72, 188, 198, 164, 70, 196, 181, 160, 77, 63, 64, 172, 84, 93, 174, 161, 184, 70, 173, 79, 192, 89, 187, 192, 187, 164, 96, 93, 192, 86, 196, 75, 181, 163, 164, 96, 174, 77, 174, 179, 85, 197, 189, 60, 160, 184, 179, 91, 183, 182, 94, 93, 174, 160, 162, 175, 170, 183, 82, 184, 84, 89, 174, 160, 171, 93, 76, 83, 78, 164, 176, 71, 192, 70, 168, 193, 168, 191, 79, 173, 186, 98, 179, 165, 74, 191, 96, 80, 198, 163, 171, 188, 183, 80, 66, 81, 187, 196, 75, 196, 84, 195, 73, 99, 192, 185, 81, 197, 186, 167, 198, 183, 67, 170, 85, 94, 166, 168, 85, 175, 173, 96, 190, 169, 73, 176, 194, 98, 69, 187, 196, 85, 178, 187, 164, 69, 178, 96, 185, 167, 178, 160, 98, 162, 168, 81, 176, 96, 77, 60, 81, 85, 82, 90, 80, 78, 163, 76, 70, 99, 96, 161, 80, 86, 188, 183, 96, 199, 188, 70, 76, 174, 160, 63, 84, 169, 71, 77, 92, 73, 60, 64, 97, 89, 75, 94, 60, 66, 99, 71, 162, 168, 92, 62, 89, 99, 67, 179, 90, 196, 196, 82, 164, 86, 161, 175, 86, 184, 80, 165, 185, 174, 164, 169, 163, 185, 181, 69, 191, 92, 196, 176, 89, 88, 184, 74, 182, 68, 72, 191, 180, 172, 96, 98, 165, 63, 188, 173, 84, 181, 89, 160, 80, 88, 79, 161, 77, 65, 92, 173, 193],
[173, 180, 172, 182, 96, 77, 78, 73, 165, 73, 98, 199, 191, 76, 199, 65, 85, 166, 195, 191, 78, 194, 191, 82, 160, 181, 86, 69, 175, 169, 180, 167, 83, 93, 166, 166, 74, 82, 172, 192, 182, 192, 93, 89, 87, 180, 97, 170, 89, 71, 64, 174, 98, 198, 81, 199, 166, 192, 66, 178, 75, 177, 163, 68, 86, 180, 87, 194, 165, 67, 82, 196, 173, 64, 170, 99, 170, 77, 66, 64, 184, 182, 65, 75, 78, 99, 87, 160, 182, 177, 72, 193, 188, 171, 186, 186, 71, 178, 169, 167, 62, 166, 190, 84, 85, 72, 180, 92, 88, 184, 65, 98, 81, 183, 76, 78, 182, 73, 77, 64, 68, 187, 181, 174, 187, 193, 172, 190, 191, 174, 184, 96, 181, 190, 99, 68, 194, 73, 176, 82, 197, 193, 198, 196, 171, 67, 192, 97, 199, 174, 86, 98, 185, 68, 84, 88, 74, 199, 75, 187, 78, 77, 164, 87, 78, 165, 93, 60, 160, 81, 72, 194, 75, 96, 92, 73, 84, 64, 76, 175, 75, 175, 177, 91, 179, 99, 63, 193, 162, 180, 96, 73, 91, 189, 168, 86, 60, 163, 196, 66, 169, 166, 72, 97, 179, 161, 163, 65, 165, 76, 89, 85, 184, 190, 76, 174, 188, 177, 183, 192, 83, 185, 168, 172, 82, 195, 77, 176, 93, 68, 63, 75, 176, 194, 164, 97, 182, 189, 63, 170, 75, 183, 165, 199, 171, 199, 177, 199, 164, 65, 162, 97, 184, 192, 199, 164, 177, 62, 193, 61, 71, 82, 188, 72, 79, 92, 99, 167, 66, 74, 63, 64, 92, 197, 67, 174, 92, 187, 164, 196, 182, 78, 92, 188, 89, 74, 68, 185, 195, 65, 88, 174, 98, 185, 88, 192, 60, 95, 60, 77, 94, 98, 171, 90, 89, 167, 96, 66, 199, 76, 77, 167, 167, 60, 89, 172, 73, 173, 82, 198, 88, 183, 96, 194, 79, 185, 167, 194, 193, 95, 165, 169, 85, 72, 185, 96, 79, 60, 67, 194, 97, 189, 88, 175, 85, 95, 91, 64, 170, 88, 179, 189, 72, 162, 82, 93, 90, 191, 197, 86, 198, 63, 193, 80, 85, 188, 196, 184, 94, 99, 173, 170, 198, 183, 164, 83, 170, 170, 179, 76, 172, 194, 199, 84, 197, 76, 189, 169, 195, 79, 67, 75, 171, 160, 91, 198, 82, 196, 83, 183, 92, 169, 197, 182, 187, 176, 62, 163, 79, 81, 190, 179, 79, 167, 167, 81, 182, 182, 77, 70, 69, 187, 199, 87, 188, 73, 75, 173, 179, 186, 178, 194, 169, 174, 181, 175, 69, 167, 164, 91, 187, 160, 189, 165, 79, 68, 188, 171, 68, 88, 164, 87, 93, 174, 184, 68, 176, 64, 181, 91, 163, 190, 182, 161, 77, 68, 165, 66, 165, 164, 175, 163, 94, 96, 173, 162, 96, 77, 85, 187, 65, 176, 85, 90, 66, 95, 87, 97, 71, 81, 182, 62, 173, 72, 190, 96, 160, 178, 62, 81, 166, 196, 186, 171, 182, 199, 197, 171, 93, 178, 187, 197, 187, 186, 160, 181, 76, 190, 82, 174, 168, 176, 81, 198, 160, 163, 180, 198, 195, 167, 61, 194, 74, 179, 85, 91, 72, 195, 178, 72, 188, 82, 61, 198, 80, 79, 166, 186, 96, 99, 182, 93, 161, 198, 86, 175, 86, 92, 77, 67, 70, 87, 183, 198, 172, 66, 166, 167, 66, 61, 193, 183, 193, 66, 160, 187, 83, 84, 192, 67, 77, 167, 89, 197, 67, 94, 93, 78, 179, 85, 194, 166, 78, 74, 71, 162, 65, 192, 182, 80, 163, 189, 196, 188, 87, 182, 72, 199, 177, 183, 174, 83, 94, 80, 95, 172, 93, 192, 98, 62, 78, 67, 65, 88, 96, 89, 61, 99, 66, 91, 95, 90, 183, 79, 76, 165, 94, 162, 66, 77, 64, 194, 198, 76, 75, 89, 199, 95, 94, 167, 95, 64, 97, 71, 180, 188, 62, 167, 179, 162, 176, 161, 189, 78, 83, 163, 196, 195, 186, 64, 98, 162, 166, 90, 61, 93, 186, 188, 186, 84, 179, 85, 197, 194, 187, 67, 73, 195, 86, 94, 94, 189, 162, 171, 65, 73, 170, 71, 62, 87, 97, 85, 186, 66, 90, 76, 85, 168, 80, 88, 192, 75, 171, 191, 72, 74, 195, 71, 65, 98, 93, 99, 65, 192, 169, 177, 164, 61, 86, 71, 174, 64, 65, 184, 198, 187, 72, 166, 177, 93, 173, 63, 169, 78, 63, 60, 66, 175, 178, 182, 174, 188, 166, 97, 83, 66, 171, 98, 198, 79, 82, 72, 70, 82, 176, 171, 97, 165, 97, 92, 75, 81, 69, 83, 65, 90, 173, 174, 83, 62, 87, 65, 77, 184, 182, 89, 65, 192, 65, 195, 72, 77, 87, 178, 192, 63, 63, 167, 70, 97, 62, 76, 78, 191, 195, 81, 197, 167, 165, 186, 75, 197, 164, 94, 97, 178, 165, 181, 166, 199, 89, 181, 72, 82, 72, 91, 81, 61, 68, 198, 89, 94, 174, 182, 176, 99, 62, 193, 196, 165, 86, 196, 163, 177, 85, 76, 183, 167, 188, 191, 66, 186, 192, 84, 78, 171, 167, 75, 188, 178, 83, 75, 197, 84, 90, 67, 190, 70, 86, 68, 182, 60, 191, 80, 78, 186, 99, 166, 197, 67, 73, 64, 84, 62, 185, 79, 62, 161, 174, 192, 168, 185, 185, 76, 71, 95, 180, 175, 81, 60, 88, 75, 164, 93, 93, 60, 176, 96, 169, 90, 189, 80, 184, 62, 169, 177, 196, 82, 173, 83, 77, 180, 174, 78, 71, 92, 76, 188, 196, 89, 62, 169, 197, 164, 164, 171, 198, 188, 86, 66, 191, 67, 89, 165, 188, 84, 196, 73, 162, 172, 173, 198, 66, 194, 68, 73, 173, 176, 168, 169, 171, 67, 87, 167, 98, 90, 180, 185, 170, 186, 193, 66, 183, 85, 72, 99, 197, 68, 172, 168, 79, 165, 173, 182, 193, 66, 196, 70, 177, 175, 92, 91, 78, 196, 86, 198, 65, 195, 190, 190, 90, 62, 181, 86, 189, 188, 80, 194, 74, 168, 93, 193, 78, 93, 197, 171, 92, 87, 69, 63, 162, 167, 162, 184, 188, 180, 194, 161, 65, 171, 169, 85, 177, 73, 62, 182, 189, 83, 160, 90, 89, 171, 189, 189, 181, 162, 181, 198, 162, 65, 93, 199, 63, 72, 163, 173, 87, 167, 182, 186, 181, 80, 181, 62, 180, 160, 72, 85, 181, 173, 161, 85, 197, 78, 92, 77, 174, 197, 92, 77, 183, 62, 176, 186, 179, 192, 62, 162, 185, 63, 193, 65, 63, 85, 166, 181, 79, 86, 170, 60, 160, 76, 193, 164, 171, 74, 190, 89, 63, 70, 88, 86, 99, 194, 99, 66, 75, 83, 99, 86, 69, 183, 180, 94, 198, 77, 96, 64, 91, 192, 73, 179, 86, 77, 68, 195, 162, 75, 83, 191, 93, 187, 62, 62, 189, 169, 186, 188, 60, 78, 68, 78, 183, 62, 67, 195, 173, 65, 173, 187, 72, 98, 97, 76, 94, 84, 69, 165, 78, 178, 185, 160, 71, 90, 84, 89, 186, 171, 168, 89, 80, 96, 92, 189, 181, 95, 162, 68, 190, 88, 171, 168, 94, 165, 182, 162, 168, 70, 66, 160, 75, 61, 176, 185, 87, 70, 167, 193, 63, 74, 69, 182, 97, 62, 91, 180, 172, 76, 89, 83, 184, 99, 182, 182, 180, 89, 80, 94, 170, 72, 184, 89, 166, 190, 87, 61, 96, 182, 66, 84, 190, 171, 199, 81, 169, 76, 197, 61, 182, 185, 169, 97, 178, 91, 190, 77, 78, 80, 86, 170, 88, 99, 196, 60, 178, 69, 161, 184, 164, 182, 193, 176, 76, 192, 190, 184, 192, 72, 90, 160, 173, 62, 74, 180, 171, 69, 160, 169, 177, 73, 81, 163, 195, 199, 198, 199, 85, 189, 166, 68, 169, 176, 199, 88, 97, 163, 76, 163, 92, 63, 177, 76, 73, 86, 164, 199, 167, 171, 97, 186, 70, 184, 93, 168, 93, 87, 94, 189, 170, 162, 61, 94, 163, 78, 184, 186, 61, 162, 196, 198, 89, 92, 99, 163, 97, 66, 177, 72, 85, 199, 96, 198, 171, 63, 96, 167, 71, 160, 61, 83, 187, 181, 176, 96, 85, 60, 86, 88, 83, 166, 85, 175, 64, 97, 84, 72, 83, 181, 69, 63, 160, 66, 178, 170, 161, 74, 188, 198, 194, 76, 179, 61, 177, 190, 73, 187, 163, 98, 177, 98, 80, 74, 176, 91, 92, 178, 191, 166, 67, 60, 192, 180, 188, 197, 76, 160, 161, 66, 163, 77, 73, 83, 89, 65, 80, 163, 89, 197, 98, 76, 165, 65, 171, 88, 86, 79, 73, 196, 165, 183, 80, 179, 194, 87, 171, 189, 168, 72, 85, 182, 90, 188, 189, 192, 82, 91, 193, 195, 66, 165, 161, 86, 194, 171, 180, 66, 196, 75, 85, 64, 94, 73, 160, 167, 168, 160, 183, 81, 60, 178, 166, 176, 78, 62, 60, 161, 94, 176, 180, 60, 197, 186, 88, 72, 98, 74, 175, 99, 61, 161, 69, 172, 65, 61, 170, 94, 185, 87, 163, 168, 60, 167, 176, 172, 88, 185, 168, 165, 179, 82, 96, 185, 164, 92, 161, 173, 163, 74, 181, 73, 71, 178, 67, 184, 171, 163, 191, 79, 76, 79, 64, 76, 82, 180, 161, 84, 83, 62, 86, 64, 68, 183, 168, 175, 64, 174, 87, 87, 72, 75, 165, 70, 170, 195, 188, 65, 84, 171, 97, 75, 79, 172, 165, 94, 164, 178, 90, 71, 168, 161, 71, 195, 66, 94, 188, 60, 98, 170, 76, 161, 198, 75, 187, 193, 60, 82, 95, 178, 74, 194, 177, 164, 73, 82, 176, 186, 83, 162, 60, 63, 84, 89, 75, 194, 167, 74, 68, 67, 169, 160, 96, 67, 197, 82, 170, 177, 197, 181, 94, 83, 81, 75, 161, 96, 184, 91, 177, 193, 174, 161, 90, 166, 182, 85, 67, 68, 87, 77, 79, 76, 61, 163, 63, 65, 183, 86, 181, 74, 172, 69, 167, 194, 93, 68, 195, 174, 184, 60, 64, 168, 63, 80, 190, 80, 186, 183, 64, 163, 84, 161, 167, 77, 75, 161, 171, 164, 162, 99, 69, 169, 84, 191, 70, 191, 61, 82, 190, 63, 191, 94, 64, 195, 182, 165, 185, 198, 160, 193, 189, 87, 176, 162, 178, 89, 71, 90, 160, 180, 184, 167, 81, 177, 80, 178, 197, 85, 93, 181, 72, 191, 62, 164, 97, 86, 175, 79, 177, 171, 74, 91, 165, 186, 172, 190, 188, 166, 196, 96, 65, 81, 74, 82, 60, 76, 77, 67, 63, 172, 169, 80, 198, 85, 98, 176, 77, 180, 194, 185, 81, 67, 69, 63, 72, 95, 97, 177, 163, 94, 78, 91, 183, 98, 67, 94, 74, 196, 161, 76, 72, 171, 78, 71, 83, 71, 60, 66, 95, 89, 197, 94, 189, 73, 81, 61, 60, 186, 72, 62, 178, 181, 166, 81, 64, 83, 82, 99, 164, 88, 176, 176, 83, 80, 197, 96, 186, 167, 181, 97, 191, 71, 189, 177, 178, 161, 189, 192, 199, 188, 83, 163, 70, 88, 197, 67, 179, 75, 70, 187, 186, 82, 75, 79, 174, 196, 99, 70, 163, 164, 62, 195, 178, 76, 62, 171, 177, 75, 165, 170, 90, 174, 79, 178, 197, 98, 191, 174, 65, 89, 174, 166, 73, 199, 83, 75, 165, 172, 163, 88, 72, 161, 80, 167, 172, 177, 94, 73, 175, 183, 183, 161, 89, 174, 180, 162, 82, 165, 177, 177, 76, 182, 195, 62, 177, 184, 67, 93, 61, 191, 77, 88, 175, 163, 99, 79, 97, 80, 88, 176, 76, 181, 80, 170, 160, 185, 167, 61, 170, 90, 162, 78, 197, 73, 192, 99, 63, 170, 82, 191, 95, 66, 84, 168, 187, 198, 178, 70, 83, 168, 172, 174, 187, 180, 196, 175, 63, 88, 181, 183, 184, 171, 94, 179, 175, 61, 162, 197, 189, 82, 175, 86, 76, 183, 169, 69, 169, 170, 163, 79, 81, 86, 161, 94, 194, 77, 183, 191, 169, 83, 99, 180, 95, 183, 188, 180, 167, 77, 75, 169, 161, 85, 161, 173, 67, 199, 162, 65, 169, 72, 169, 177, 83, 164, 170, 93, 77, 181, 174, 69, 189, 95, 166, 179, 73, 169, 160, 183, 181, 193, 88, 73, 182, 192, 90, 189]]
sec=[]
for i in range(len(energy)):
    t=energy[i]
    s=''
    for j in range(len(t)):
        if t[j]>130:
            s+='1'
        else:
            s+='0'
    sec.append(int(s,2))
c=[(8629971888291975347213791416269354663615597341449778464247397219745286182369049868780117508051847999960298596024452522313329959950925171599359898743763042054503440417555174526249829160862494674723813461791740628652379407441970707977460111090664195622293993068339178752253267336919360579659595380424128716331274966011720520402081818339785138564100448828785381210446654549751563770054480276370471933784135979318211388960544875452302901572290613486671118837737952929707183938688557203481397969599355299594458247427664016117339384449186175616507581548517338060151198448327302002598499596140923762164185685397703246525017, 2382704819350988648204939926259922012821070196393254466517927977328047779007630655554783102909445420233334603414269830021827909871784463842733412228018177538280291666226870925572366499683051585600821733321248692261413823782180369786281108496129071519528138126973685857158738633931510584076135644438451418512008698435996783365565980823146754387114607644836143562871251037131100844233499210456295742002818248405955542240031209179401171271988182498301048707975128420754563407337516505117424026601497057408173728989963923392569169720608288778589977299331468798591689742966007919372616963939427942973022672206407915356894, 7720313960516556678241507800313698506319294922044337939798672519899373894106710230654330788343477820100945131225868724604111187104961165449671731600123366694979688433519949770849824359157765719319384499326446776281094391789559201066092080637825695308899163795101674215619537911161758825346990604246201908242641998141131720545547223028612859544467335764381503082373878441543065709211578323452814290911656080720587522044520123114130521964539949874597280324605268358583300909472806691738357290060135813749592500883291268752974739510309885861678540543885454291467441449775481576475597779098977264432915191026950037121271), (2382704819350988648204939926259922012821070196393254466517927977328047779007630655554783102909445420233334603414269830021827909871784463842733412228018177538280291666226870925572366499683051585600821733321248692261413823782180369786281108496129071519528138126973685857158738633931510584076135644438451418512008698435996783365565980823146754387114607644836143562871251037131100844233499210456295742002818248405955542240031209179401171271988182498301048707975128420754563407337516505117424026601497057408173728989963923392569169720608288778589977299331468798591689742966007919372616963939427942973022672206407915356894, 2507489313693027727447823694213947097758893725637064080783076417422312360728871796716507607648204050957058352447513001293923638548755061814481143157280185982134248529705643296490203782611775648931232850380043060019259802341855745407723808559404538235550140640847652196525197728216863601181861238447111155134874873220188560494260693812235297043755237290506736697473642464212381153314464150028542768640544348115479388781714169932337684281395098898295048720991373671433770742876559915120975993663066370466552784425304512344074776338296352164911126588429313182901480992761403886230939719560496866577975131579057233980418, 3603233069921949635850852842102780282250188557063111749359701863158964441251898915819927526832514804676814118399988368079794874992149765916759224281185627030856640018562907911112504000563096016700256240666273611941320289178055416603630913077176567643353181182220432293206255187929971213857584642985361915813306867425294385269330460752200900341331665528445829353168856397102607628243111558263291982908278855340763809937944911956507459341371522547886786433534425538866644727624245702953159357318705462680438481025308981427064201053009152196210535434082336140957273740170206132676978454465699712662183230838620576397771), (2507489313693027727447823694213947097758893725637064080783076417422312360728871796716507607648204050957058352447513001293923638548755061814481143157280185982134248529705643296490203782611775648931232850380043060019259802341855745407723808559404538235550140640847652196525197728216863601181861238447111155134874873220188560494260693812235297043755237290506736697473642464212381153314464150028542768640544348115479388781714169932337684281395098898295048720991373671433770742876559915120975993663066370466552784425304512344074776338296352164911126588429313182901480992761403886230939719560496866577975131579057233980418, 7769230445155201113494537348459352387708612203054561299606903286112936921859421067127410781913677713423158049411013804288570673695825855969822168904613465090290306226978616894321879293271162132061470408070909310151619998411378202847228354918571965001390588172776972224778839119169450173333867054090477937647516598663804457249106382500709364775634358601371251459877683379682809903658838902783963786177719437968604142810768329151307435649733153348164028321577077681431486645592176232620214087883116496965071120567845561936056520916949714662519666931982850792755106900551200428113854794154127442081282902169286650571401, 1980172577526976953208467529900525783074696095931646996510173485588725995089661024536807562115058145311072178324244275386472867798089304656532882034354969245827559132434491283213041279414052179349423545284449349791764442814795484489622913236952945004885237471927992708071668392107252909374174486979848725181384806622865162901189364378882337523881706060196311538634436782157680819223656846784628557021576760718204769640388889532408106414067642872013172395542468221843563481648375218787976310106718686529056130227939362903825973551762087339318300140188516130629026785777810412625331595370234139359970280877739798474389), (7769230445155201113494537348459352387708612203054561299606903286112936921859421067127410781913677713423158049411013804288570673695825855969822168904613465090290306226978616894321879293271162132061470408070909310151619998411378202847228354918571965001390588172776972224778839119169450173333867054090477937647516598663804457249106382500709364775634358601371251459877683379682809903658838902783963786177719437968604142810768329151307435649733153348164028321577077681431486645592176232620214087883116496965071120567845561936056520916949714662519666931982850792755106900551200428113854794154127442081282902169286650571401, 1575094877701795854498774908638903522669421051531573312093667127284544685427913301822137233349330103439966188241901781657995508053590393431112660182478894250834736190200611323499178795811947949448699368341885262244922319233898608781419619210833188270769502178623446319852515092097374376230284979030896357428170209276025068117869920819506765819887277035215331513588698837794510471067850530536430462916048677656769292228807520578503908679844209663943585309414158448052732725558692228885890997143173078704774290593538094709155128226553159420350131695351485888673216532336279540226705255688328040783577052756207587006270, 6610352931587720854451143899633952315748731096581247094289941806600249309199110458686226240414159314916443802659936796194501937130258325721955971712271359425220780891458718764787684248492736828049383593460850257630134166697516000923586434837108552164118408207483861356227241654737966362556299121885909952085344055245123817034374630986706235981670472671656419267459375338043531055577663540904728281161038164044605649226826294253565008079171696929526279467128593521303305237010056264278316607644578180995774851856042734859960770608950180509999278132547381198060859308178075010227172861725398283857061313337363575325263), (1575094877701795854498774908638903522669421051531573312093667127284544685427913301822137233349330103439966188241901781657995508053590393431112660182478894250834736190200611323499178795811947949448699368341885262244922319233898608781419619210833188270769502178623446319852515092097374376230284979030896357428170209276025068117869920819506765819887277035215331513588698837794510471067850530536430462916048677656769292228807520578503908679844209663943585309414158448052732725558692228885890997143173078704774290593538094709155128226553159420350131695351485888673216532336279540226705255688328040783577052756207587006270, 2899196346496640651515578300741477267252027393819388234592692441244872565455171075206663782801019182310445822694710022355107834170061256021528233984226982722687848721193571620263169761625920013511824364907813108870230498313614430769087521400686949128276439718637571413546438066894526733998540267545169908267918034044567676900418717621781005337988884902642672158843440942895072083594499934345701806316446232804191200045145796718350218780127702500537329430739697477802056514649362531623994574050100569446437453774196354144878113348032018382822752357224093912706852592549799275481078987386652273745516181324786938308335, 1518486070937095431267728249967625462615084214873519869724691145931391888893984408735020316869577560635376392428533320137999061224646280418013600820687411977047143852240859128701565827810521684321783327786465208897593862389568908868890826199105669712761247928108093008056596587483514169117862021972656609656939975812867444210967581049993172306174305541579882729780098039933312778734112663231561634590403753870449301486897270821771001471591549309582677751258104686430351246789904546466436576979978832001105662418364938101412232320509104886209874169009281768978468363614092630860981345300448240861393056424955085865425)]
m=[bytes_to_long(b'vnctf')]
for i in range(len(c)):
    cc=c[i][2]
    pri1=pow(c[i][0],sec[i],n**2)
    pri2=pow(c[i][1],sec[i+1],n**2)
    pri=gmpy2.invert(pri1*pri2,n**2)
    mm=((cc*pri-1)%(n**2))//n
    mm-=m[i]
    m.append(mm)
for i in range(len(m)):
    print(str(long_to_bytes(m[i]))[2:-1],end='')

还有一道AES和ocb模式的比赛的时候没看,以后找机会复现吧

总的来说还要加油呀,不会的东西还是太多了

posted @ 2022-02-14 14:19  hash_hash  阅读(346)  评论(0)    收藏  举报