Too simple
import itertools
from Crypto.Util.number import *
hint = 251
n = 108960799213330048807537253155955524262938083957673388027650083719597357215238547761557943499634403020900601643719960988288543702833581456488410418793239589934165142850195998163833962875355916819854378922306890883033496525502067124670576471251882548376530637034077
e = 3359917755894163258174451768521610910491402727660720673898848239095553816126131162471035843306464197912997253011899806560624938869918893182751614520610693643690087988363775343761651198776860913310798127832036941524620284804884136983215497742441302140070096928109039
c = 72201537621260682675988549650349973570539366370497258107694937619698999052787116039080427209958662949131892284799148484018421298241124372816425123784602508705232247879799611203283114123802597553853842227351228626180079209388772101105198454904371772564490263034162
e //= hint
PR.<x> = PolynomialRing(Zmod(n))
f = e * x - 1
f = f.monic()
x = f.small_roots(X=2^256, beta=4. / 6.)[0]
p = gcd(ZZ(f(x)), n).nth_root(4)
q = n // p^5
phi = p^4 * (p-1) * (q-1)
d = inverse_mod(e, phi)
m1 = pow(c, d, n)
m1p = Zmod(p^5)(m1)
m1q = Zmod(q)(m1)
mp_list = m1p.nth_root(hint, all=True)
# print(f'{mp_list = }')
mq_list = m1q.nth_root(hint, all=True)
# print(f'{mq_list = }')
for mp, mq in itertools.product(mp_list, mq_list):
m = crt([ZZ(mp), ZZ(mq)], [p^5, q])
msg = long_to_bytes(int(m))
if (b'flag' in msg):
print(msg)
