#include <bits/stdc++.h>
using namespace std;
class classcomp {
 public:
  bool operator()(const int& l, const int& r) const { return l < r; }
};
long long n, m;
void mul(long long ans[][2], long long x[][2], long long y[][2]) {
  int i, j, k;
  for (i = 0; i < 2; i++) {
    for (j = 0; j < 2; j++) {
      ans[i][j] = 0;
      for (k = 0; k < 2; k++) {
        ans[i][j] = (ans[i][j] + x[i][k] * y[k][j]) % m;
      }
    }
  }
}
void power(long long ans[][2], long long a[][2], long long exp) {
  if (exp == 1) {
    int i, j;
    for (i = 0; i < 2; i++)
      for (j = 0; j < 2; j++) ans[i][j] = a[i][j];
    return;
  }
  long long x[2][2];
  power(x, a, exp / 2);
  mul(ans, x, x);
  if (exp % 2 == 1) {
    long long y[2][2];
    int i, j;
    for (i = 0; i < 2; i++)
      for (j = 0; j < 2; j++) y[i][j] = ans[i][j];
    mul(ans, a, y);
  }
  return;
}
int main() {
  cin >> n >> m;
  long long a[2][2] = {{3, 2}, {0, 1}}, c[2][2];
  if (n == 1) {
    printf("%lld\n", 2 % m);
    return 0;
  }
  power(c, a, n - 1);
  cout << (c[0][0] * 2 + c[0][1] * 1) % m << endl;
  return 0;
}
