#include<iostream>
#include<cstdio>
#include<string.h>
#include<string>
#include<stack>
#include<set>
#include<algorithm>
#include<cmath>
#include<vector>
#include<map>
#define LL __int64
#define lll unsigned long long
#define MAX 1000009
#define eps 1e-8
#define INF 0xfffffff
using namespace std;
/*
快速幂乘模板题
题意:找规律 规律是pow(2,n) - 2,当n == 1时候 ans = 1;
解法:快速幂乘,说是黑书上有,还没看到,学习了。
*/
LL mod;
LL mul(LL m,LL n) //计算m*n%mod,将b按二进制分解
{
LL res=0;
while(n)
{
if(n&1)
res = (res + m)%mod;
n = n>>1;
m = (m + m)%mod;
}
return res;
}
LL qmod(LL m,LL n) //幂乘,将n分解为2进制
{
LL res=1;
while(n)
{
if(n&1)
res = mul(res,m)%mod;
n = n>>1;
m = mul(m,m)%mod;
}
return res;
}
int main()
{
LL n;
while(scanf("%I64d%I64d",&n,&mod)!=EOF)
{
if(n==1)
printf("%I64d\n",1%mod);
else
{
printf("%I64d\n",(qmod(2,n)-2 + mod)%mod);
}
}
return 0;
}
#include<cstdio>
#include<string.h>
#include<string>
#include<stack>
#include<set>
#include<algorithm>
#include<cmath>
#include<vector>
#include<map>
#define LL __int64
#define lll unsigned long long
#define MAX 1000009
#define eps 1e-8
#define INF 0xfffffff
using namespace std;
/*
快速幂乘模板题
题意:找规律 规律是pow(2,n) - 2,当n == 1时候 ans = 1;
解法:快速幂乘,说是黑书上有,还没看到,学习了。
*/
LL mod;
LL mul(LL m,LL n) //计算m*n%mod,将b按二进制分解
{
LL res=0;
while(n)
{
if(n&1)
res = (res + m)%mod;
n = n>>1;
m = (m + m)%mod;
}
return res;
}
LL qmod(LL m,LL n) //幂乘,将n分解为2进制
{
LL res=1;
while(n)
{
if(n&1)
res = mul(res,m)%mod;
n = n>>1;
m = mul(m,m)%mod;
}
return res;
}
int main()
{
LL n;
while(scanf("%I64d%I64d",&n,&mod)!=EOF)
{
if(n==1)
printf("%I64d\n",1%mod);
else
{
printf("%I64d\n",(qmod(2,n)-2 + mod)%mod);
}
}
return 0;
}