m@main=readLn>>=putStrLn.f>>m f n=s n++" = "++unwords[s x++'^':s p|p<-[2..21],x<-[round$r n**(1/r p)],x^p==n] s=show r=read.s