import java.util.*; import java.math.*; public class Main { static BigInteger K = BigInteger.valueOf(2); static BigInteger pot(BigInteger a, BigInteger b, BigInteger m) { if (b.equals(BigInteger.ZERO)) return BigInteger.ONE; if (b.remainder(K).equals(BigInteger.ZERO)) { BigInteger u = pot(a, b.divide(K), m); return u.multiply(u).remainder(m); } return pot(a, b.subtract(BigInteger.ONE), m).multiply(a).remainder(m); } public static void main(String[] args) { Scanner x = new Scanner(System.in); while (x.hasNextLong()) { BigInteger n = BigInteger.valueOf(x.nextLong()); BigInteger p = BigInteger.valueOf(x.nextLong()); BigInteger a = pot(K, n.subtract(BigInteger.ONE), p); BigInteger u = a.add(a).remainder(p); u = u.subtract(K).add(p).remainder(p); if (n.equals(BigInteger.ONE)) u = BigInteger.ONE; System.out.println(u.remainder(p)); } } }