from Cryptodome.Util.number import *
import random

flag = ''

def extended_euclidean(a, b):
    if a == 0:
        return (b, 0, 1)
    else:
        g, y, x = extended_euclidean(b % a, a)
        return (g, x - (b // a) * y, y)

def modinv(a, m):
    g, x, y = extended_euclidean(a, m)
    if g != 1:
        print("You_suck_but_talk_sh!t_ma_boooooy")
    else:
        return x % m

def nextPrimeNumber(n):
    num = n + 1
    while True:
        if isPrime(num):
            return num
        num += 1

p = random.randint(1<<251,1<<252)
p = nextPrimeNumber(p)
p1 = nextPrimeNumber(p*10)
p2 = nextPrimeNumber(p1*10)
p3 = nextPrimeNumber(p2*10)

N = p * p1 * p2 * p3
e = 65537
c = pow(bytes_to_long(flag.encode()), e, N)

print(c)
#c = 229145683199122141062695417638319613454171143196823573981241141074335653751856140483967472650904482966206825677284239454007829506337697732722225288955593825225159742516717804841432039258429619310334666704692498492723151637133505625220661263279619365389702573650488865291434661876494576182457232500164762575180
print(N)
#N = 233683907972393158453534504707222685050906198452024067837041953130776034578756916171161064080748642497026785002175398339053337939891909219601769397508883016356054832109353294489022136178550899225085247401992927061849888289705558371923437442642019694262727798531908625577932532958845906630003599437798701688583
