using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

class Program {
    static void Main(string[] args) {
        //入力
        string s = Console.ReadLine();
        int N = int.Parse(s.Split(' ')[0]);
        int X = int.Parse(s.Split(' ')[1]);

        //回答用変数
        int ans = N;

        //長辺と短辺を入れる用の変数
        int long_ = Math.Max(N - X, X);
        int short_ = Math.Min(N - X, X);

        //検証
        while (true) {
            //片方がゼロになったら抜け出す
            if (long_ == 0 || short_ == 0) {
                break;
            }

            //割り切れたら、奇数倍をかけて終了
            if (long_ % short_ == 0) {
                ans += (long_ / short_) * 2 - 1;
                break;
            //割り切れなかったら、偶数倍をかけてもう一周回す
            } else {
                ans += short_ * 2;
                //一時保管用
                int long_temp = long_;
                long_ = Math.Max(long_temp % short_, short_);
                short_ = Math.Min(long_temp % short_, short_);
            }
        }


        //出力
        Console.WriteLine(ans);
    }
}