#include <bits/stdc++.h>
using namespace std;
template <class T>
T gmin(T u, T v) {
  return (u < v) ? u : v;
}
template <class T>
T gmax(T u, T v) {
  return (u > v) ? u : v;
}
template <class T>
T gcd(T u, T v) {
  if (v == 0) return u;
  return (u % v == 0) ? v : gcd(v, u % v);
}
int main() {
  long long n, m, ans = 0, tmp = 0;
  cin >> n >> m;
  for (ans = 1, tmp = 3; n > 0; n >>= 1) {
    if (n & 1) {
      ans *= tmp;
      ans %= m;
    }
    tmp *= tmp;
    tmp %= m;
  }
  for (--ans; ans < 0; ans += m)
    ;
  cout << ans << endl;
  return 0;
}
