p = 18265166690888475568508205788351723108492598063556694453866020018612082716314197018581664220266891343266826262103380794092636040577744226926080805739120171556812778934479727248098841525477772831490126199548545786503110837372880363428957764884329593924744941695642013585909156506088780643030023164855973833306872727463131996134184118614172430586758877233701077685751718260071836310060281140572946121079034501926660471152233585368113925178752435191910762241019003537704885083238106369534830393975302288404167836930602217985985847446070323598776341522649183248452794742376328444827351843724799192817079741161233112260479 h = 4967224096990794383219394548021661512726675694147838134779085870532422860903557980609209611713600051085944165443541629919867486254693404349210710383848787111293470866844887628407505277639836299797939984616893146647351591326606770521678401285613589626410018479980831585926061303904550146343466643582612670862834763887770328979710431031177418547347283523083258882829675470842927115407426622663316454822399636240738287665733629112976904877165355516610469901309760380900426025418466453719738514032928207738877975591007250792160137047114036933809472387873650910438263376962726381797927297555569681381513766206991560665841 c = 16817585342429374146630376920213715475053842668013412994500648477443919828494694587495599063908719008851497141935769861968183626958443589329598781614352147198572062882796132537628308726395654751145080742405050157500585726017502230322869060570158864938641538722583753556090927664838782228764769369834459631417465435803556700281096974029668813698732758153249834904501478272838991307791205987117636747526652824803482977910064904853019629040285700901775083075557874528402638028712625642698991805017963162010854671654728900722088963013805447853328852730983161366447618298248888612010461342887166024478519281752219951330472
K=2**(bits//2-1) v1 = vector(ZZ, [1, h*K]) v2 = vector(ZZ, [0, p*K]) m = matrix([v1, v2]) f, g = m.LLL()[1] g = g//K #print(f,g)
a = f * c % p % g m = ZZ(c * f % q) * inverse_mod(f, g) % g print(bytes.fromhex(hex(m)[2:]))