from Crypto.Util.number import getPrime, bytes_to_long
import os

FLAG = open('flag.txt').read().strip()

print("Minister P: Hello everyone, it's opposite day, let's all submit our e^-1 mod d. It's Fine! no one will be able to decrypt our message, i'll even encrypt a fatal secret to prove!")

while True :
    try :
        p = getPrime(512)
        q = getPrime(512)
        n = p * q

        e = 0x1001
        tot = (p - 1) * (q - 1)
        d = pow(e, -1, tot)
        de = pow(e, -1, d) & ((1 << 524) - 1)
        break
    except :
        continue

ct = pow(bytes_to_long(FLAG.encode() + b"| | | | | |" + os.urandom(50)), e, n)

print(f'{n = }')
print(f'{de = }')
print(f'{ct = }')