import std.stdio, std.string, std.range, std.conv, std.array, std.algorithm, std.math, std.typecons;

void main() {
    auto tmp = readln.split.to!(long[]);
    auto K = tmp[0], A = tmp[1], B = tmp[2];
    if (B - A <= 2) {
        writeln(1 + K);
    } else {
        // A-1回最初に叩く
        const tataki = max(0, A-1);
        K -= tataki;
        long pt = 1 + tataki;
        // 残り回数が1以下になるまで2回ずつ消費し、B-Aだけ稼ぐ
        const urikai = K/2;
        K -= urikai * 2;
        pt += (B-A) * urikai;
        // 残り回数叩く
        if (K == 1) pt++;

        writeln(pt);
    }
}

