Problem:
Score : 300 points

Problem Statement

There are N integers a_1, a_2, ..., a_N not less than 1.
The values of a_1, a_2, ..., a_N are not known, but it is known that a_1 \times a_2 \times ... \times a_N = P.

Find the maximum possible greatest common divisor of a_1, a_2, ..., a_N.

Constraints

1 \leq N \leq 10^{12}

1 \leq P \leq 10^{12}

Input

Input is given from Standard Input in the following format:

N P

Output

Print the answer.

Sample Input 1

3 24

Sample Output 1

2

The greatest common divisor would be 2 when, for example, a_1=2, a_2=6 and a_3=2.

Sample Input 2

5 1

Sample Output 2

1

As a_i are positive integers, the only possible case is a_1 = a_2 = a_3 = a_4 = a_5 = 1.

Sample Input 3

1 111

Sample Output 3

111

Sample Input 4

4 972439611840

Sample Output 4

206

Solution in C++14 (GCC 5.4.1) (judge verdict: Wrong Answer)

#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
#include<cmath>
#include<climits>

int main(){
	long long n, p;
	long long ans=1;

	std::vector<bool> isPrime(10000001, true);
	std::vector<long long> prime;
	std::vector<long long> numPrime;

	std::cin>>n>>p;

	isPrime[0]=false;
	isPrime[1]=false;

	for(int i=2; i<10000001; i++){
		if(!isPrime[i])
			continue;

		prime.push_back(i);

		for(int j=2*i; j< 10000001; j+=i){
			isPrime[j]=false;
		}
	}

	numPrime.resize(prime.size(), 0);
	long long num=0;

	for(int i=0; i<prime.size(); i++){
		if(p==1)
			break;

		while(p%prime[i]==0){
			p/=prime[i];
			numPrime[i]++;
		}
	}
	
	for(int i=prime.size()-1; i>=0; i--){
		if(numPrime[i]>=n){
			long long tmp= numPrime[i]/n;
			ans*= (prime[i]* tmp);
		}
	}


	std::cout<<ans<<std::endl;

	return 0;
}