#include<cstdio>
#include<algorithm>
#include<cstring>
#include<queue>
#include<cmath>
#include<iostream>
using namespace std;
long long a,m,b;
long long read(long long m){
register long long x=0,f=0;
char ch=getchar();
while(!isdigit(ch)){
ch=getchar();
}
while(isdigit(ch)){
x=x*10+ch-'0';
if(x>=m){
f=1;
}
x%=m;
ch=getchar();
}
return x+(f==1?m:0);
}
long long phi(long long n){
long long ans=n,m=sqrt(n);
for(long long i=2;i<=m;i++){
if(n%i==0){
ans=ans/i*(i-1);
while(n%i==0){
n/=i;
}
}
}
if(n>1){
ans=ans/n*(n-1);
}
return ans;
}
long long fast_pow(long long a,long long b,long long p){
long long ret=1;
for(;b;b>>=1,a=a*a%p){
if(b&1){
ret=ret*a%p;
}
}
return ret;
}
int main(){
scanf("%lld%lld",&a,&m);
b=read(phi(m));
printf("%lld\n",fast_pow(a,b,m));
return 0;
}