#include #include #include #include using namespace std; long long n, p; long long P(long long x, long long y) { if (y == 1) return 1ll % p; long long t = 1ll; for (; y; y >>= 1ll) { if (y & 1ll) { long long t1 = t; long long t2 = x; long long tmp = 0; for (; t2; t2 >>= 1ll) { if (t2 & 1ll) tmp = (tmp + t1) % p; t1 = (t1 + t1) % p; } t = tmp; } long long t1 = x; long long t2 = x; long long tmp = 0; for (; t2; t2 >>= 1ll) { if (t2 & 1ll) tmp = (tmp + t1) % p; t1 = (t1 + t1) % p; } x = tmp; } return t; } int main() { while (scanf("%I64d%I64d", &n, &p) != EOF) { printf("%I64d\n", (P(2ll, n) - 2ll + p) % p); } return 0; }