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: Accepted)

function main(input){
  var line1 = input[0].split(' ');
  var n = parseInt(line1[0]);
  var p = parseInt(line1[1]);

  var ans = 1;
  var arr = primeFactorization(p);
  for (var i=0; i<arr.length; i++){
    var r = arr[i].r;
    while (n<=r) {
      ans *= arr[i].num;
      r=r-n;
    }
  }

  console.log(ans);
}


function parse(line){
  var ret = [];
  var arr = line.split(' ');
  for (var i = 0; i < arr.length; i++) {
    ret.push(parseInt(arr[i]));
  }
  return ret;
}

function primeFactorization(n) {
  var s = Math.floor(Math.sqrt(n));
  var r = 0;
  
  var result = [];
  for (var i = 2;i <= s;i++) {
    if ((n % i) == 0) {
      r = 0;
      do {
	r++;
	n = n / i;
      } while ((n % i) == 0);
      result.push({num:i, r:r});
    }
  }
  if (n > s) {
    result.push({num:n, r:1});
  }
  
  return result;
}

var input = '';

process.stdin.resume();
process.stdin.setEncoding('utf8');
process.stdin.on('data', function(chunk) {
  input += chunk;
});
process.stdin.on('end', function() {
  input = input.split('\n');
  main(input);
});