import os

p = 976587515151157853906217533218628082997694810624501256713825565393104401181424137241411773166895742488073494310423053958982999306664033166558694992713519800786677177868941467774984461383291985787235443601280394923454187820306132252783585496029333634052291369387702654299666989994576195906206956770403424313293905942425891346365354768209319882406040779132139054816217907628083986358978262094797946867809454020562323903149996291074813320538520777836142425048644958403744243183458331380239994374757614259615233890356191395881863189048412691215351826563724785048370594709342437712912589059740909174539951283533724210907524886462662611133040749402728476364993206011122701100229183771682270298652925702713626263895059680989964878635937886677688002862140770396358907063648860577188815329407916227424630589556922529424015380346033040063996070435979437637065801374800041794640264383205352180985618225062348062038067599175418462111305940629659936317589952472983442511241164556608492601225868437395140712415928744061856429314623190440820651361084773232870256074375771597830037729231411058834896947711347616131010262889796447711998503763452364776453341891278035299486273412909699722579880773523447131505257048364726495465768309335163508947095969

flag = '<REDACTED>'

def gcd(a, b):
	while b:
		a, b = b, a % b
	return a
def generate_key():
	x = int.from_bytes(os.urandom(4096 // 8), 'big')
	while gcd(x, p - 1) > 1:
		x = int.from_bytes(os.urandom(4096 // 8), 'big')
	return x

def encrypt(priv: int, data: str):
	data = int.from_bytes(data.encode(), 'big')
	return pow(data, priv, p)

def int_to_bytes(x: int) -> bytes:
    return x.to_bytes((x.bit_length() + 7) // 8, 'big')

x = generate_key()
c = encrypt(x, flag)
print(x)
print(c)
