超级素数幂(java)
import java.util.Scanner;

public class Main {

	    public static void main(String[] args) {
	        Scanner in = new Scanner(System.in);
	        long n=in.nextLong();
	        func(n);
	    }
	    public static void func(long n){
	    	long p=(long)(Math.sqrt(n)+1);
	    	long q=2;
	    	for(;p>=2;p--){
                long tmp=myPow(p,q);
                long flag=tmp-n;
                if(flag==0){
                    if(!isPrime((int)p)) continue;
                    System.out.println(p+" "+q);
                    return ;
                }else if(flag<0){
                    q++;
                    p=(long)(Math.pow(n,1.0/q)+1);
                }
	    		//if(!isPrime(p)) continue;
                //isprime
	    		//long tmp=n;
                
                /*if((q=isOK(p,tmp))>0){
                    System.out.println(p+" "+q);
                    return ;
                }*/
	    	}
	    	System.out.println("No");
	    }
	    public static boolean isPrime(int n){
	    	if(n<=1) return false;
	    	for(int i=2;i*i<=n;i++){
	    		if(n%i==0) return false;
	    	}
	    	return true;
	    }
    	public static long myPow(long p,long q){
            return q == 0 ? 1 : myPow(p, q-1) * p;
        }
    	/*public static long isOK(long p, long n){
            if(n==1) return 0;
            if(n%p==0){
                return isOK(p,n/p)+1;
            }
            return -1;
        }*/
}