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 JavaScript (node.js v5.12) (judge verdict: Wrong Answer)

function myin(){return require("fs").readFileSync("/dev/stdin", "utf8").trim();}
function myout(t){console.log(t);}//standard output
function myerr(t){console.error(t);}//standard error
//[no]param
//0:何もしない  1:数値へ変換  2:半角SPで分割  3:改行で分割  4:半角SPで分割し、数値配列へ
//5:改行で分割し、数値配列へ  6:1文字に分割  7:1文字に分割し、数値配列へ
function myconv(i,no){switch(no){case 0:return i;case 1:return parseInt(i);case 2:return i.split(" ");case 3:return i.split("\n");case 4:return i.split(" ").map((a)=>Number(a));case 5:return i.split("\n").map((a)=>Number(a));case 6:return i.split("");case 7:return i.split("").map((a)=>Number(a));}}
function Main(input) {
  input = myconv(input,4);
  var N = input[0];
  var P = input[1];
  var pf = getPrimeFactorization(P);
  var pfKeys = Array.from(Object.keys(pf));
  var output = 1;
  for(var i = 0; i < pfKeys.length; i++){
    if(pf[pfKeys[i]] >= N){
       output *= pfKeys[i];
    }
  }
  myout(output);
}
function getPrimeFactorization(val){
  var primeList = {};
  var div = 2;
  while(val > 1){
    if(val % div == 0){
      (primeList[div] == null)  ? primeList[div] = 1 : primeList[div]++;
      val /= div;
    }else{
      div = (div == 2) ? div + 1 : div + 2;
    }
  }
  return primeList;
}
Main(myin());