#include<iostream>
#include <string.h>
#include <math.h> 
#include <algorithm>
#include<cstdlib>
typedef long long ll;
using namespace std;

bool IsPrime(int num)
{
    if (num < 2) return false;
    else if (num == 2) return true;
    else if (num % 2 == 0) return false; // 偶数はあらかじめ除く

    double sqrtNum = sqrt(num);
    for (int i = 3; i <= sqrtNum; i += 2)
    {
        if (num % i == 0)
        {
            // 素数ではない
            return false;
        }
    }

    // 素数である
    return true;
}

int main()
{
    ll n,p,ans = 1;
    cin >> n >> p;
    int a = 0;
    while(p%2 == 0){
        a++; 
        p = p/2;
    }  
   
            for(int j = 0; j < a/n; j++)
            {
                ans *= 2;
            } 
    for(int i = 3; i*i <= p; i+=2)
    {
        //if(IsPrime(i) == true){
        int cnt = 0
        while(p%i == 0){
            cnt++; 
            p = p/i;
        }  
        for(int j = 0; j < cnt/n; j++)
        {
            ans *= i;
        }  
        //
    }
    cout << ans << endl;
}