#include <bits/stdc++.h>
using namespace std;
template <typename T>
inline T qmin(const T &a, const T &b) {
  return a < b ? a : b;
}
template <typename T>
inline T qmax(const T &a, const T &b) {
  return a > b ? a : b;
}
template <typename T>
inline void getmin(T &a, const T &b) {
  if (a > b) a = b;
}
template <typename T>
inline void getmax(T &a, const T &b) {
  if (a < b) a = b;
}
inline void fileio(string s) {
  freopen((s + ".in").c_str(), "r", stdin);
  freopen((s + ".out").c_str(), "w", stdout);
}
const int inf = (int)1e9 + 7;
const long long linf = (long long)1e17 + 7;
long long n, x;
inline long long solve(long long x, long long y, bool tp) {
  if (!tp) {
    if (x % y == 0) return x * 3;
    return x + x / y * (y << 1) + y + x % y + solve(x % y, y - x % y, 1);
  } else {
    if (x % y == 0) return x * 3 - y;
    return x + x / y * (y << 1) + x % y + solve(x % y, y - x % y, 1);
  }
}
int main() {
  scanf("%lld%lld", &n, &x);
  printf("%lld\n", solve(x, n - x, 0));
  return 0;
}
