A=abs
R=lambda z:round(z.real)+round(z.imag)*1j
def G(a,b):
if A(a)<A(b):a,b=b,a
return G(b,r)if(r:=a-R(a/b)*b)else b
def C(n):
a=[];N=int(A(n)**2);s=[1>0]*N;s[0]=s[1]=F=1>1;s[4::2]=[F]*(N-3>>1)
for i in range(3,-~int(N**.5)):
if s[i]:s[i*i::2*i]=(~-N+i*(2-i))//2//i*[F]
for p in[i for i,v in enumerate(s)if v]:
while N%p<1:N//=p;a+=p,
F,P,*z=a,1
while[]<F:
if(a:=F.pop(0))==2:u=1+1j
if a%4>2:u=a;F.pop(0)
else:
while P<a!=-~pow(P:=P+1,~-a//2,a):1
u=t-t.imag*2jif A(n-R(n/(t:=G(a,pow(P,~-a//4,a)+1j)))*t)else t
n/=u;z+=R(u),
return z[:-1]+[z[-1]*R(n)]
print(C(6840+585j))
QT1hYnMKUj1sYW1iZGEgejpyb3VuZCh6LnJlYWwpK3JvdW5kKHouaW1hZykqMWoKZGVmIEcoYSxiKToKIGlmIEEoYSk8QShiKTphLGI9YixhCiByZXR1cm4gRyhiLHIpaWYocjo9YS1SKGEvYikqYillbHNlIGIKZGVmIEMobik6CiBhPVtdO049aW50KEEobikqKjIpO3M9WzE+MF0qTjtzWzBdPXNbMV09Rj0xPjE7c1s0OjoyXT1bRl0qKE4tMz4+MSkKIGZvciBpIGluIHJhbmdlKDMsLX5pbnQoTioqLjUpKToKICBpZiBzW2ldOnNbaSppOjoyKmldPSh+LU4raSooMi1pKSkvLzIvL2kqW0ZdCiBmb3IgcCBpbltpIGZvciBpLHYgaW4gZW51bWVyYXRlKHMpaWYgdl06CiAgd2hpbGUgTiVwPDE6Ti8vPXA7YSs9cCwKIEYsUCwqej1hLDEKIHdoaWxlW108RjoKICBpZihhOj1GLnBvcCgwKSk9PTI6dT0xKzFqCiAgaWYgYSU0PjI6dT1hO0YucG9wKDApCiAgZWxzZToKICAgd2hpbGUgUDxhIT0tfnBvdyhQOj1QKzEsfi1hLy8yLGEpOjEKICAgdT10LXQuaW1hZyoyamlmIEEobi1SKG4vKHQ6PUcoYSxwb3coUCx+LWEvLzQsYSkrMWopKSkqdCllbHNlIHQKICBuLz11O3orPVIodSksCiByZXR1cm4gels6LTFdK1t6Wy0xXSpSKG4pXQoKcHJpbnQoQyg2ODQwKzU4NWopKQo=