fun main(args: Array<String>) {
    val (k, a, b) = readLine()!!.split(" ").map{it.toLong()}

    // 単純にｋ回操作を行ったら時間切れ

    // 交換しないほうが良いケース
    if(b-a <=2) {
        print(k+1)
        return
    }

    // 交換できないケース
    if (a >= k ) {
        print(k+1)
        return
    }


    // 以下の手順を単純に行うのは x 場合分けして計算する

    // その他の場合は溜まり次第交換していったほうが良い，
    // A -> B 交換するたびに，新たに A -> B 交換するための枚数は貯まるので一度条件を満たせば交換し続けるのが最善


    // 交換できる & 交換したほうが良いので，まず第一回まで貯める
    var cnt = a
    var res = k - (a-1)

    // 以降は残り回数の

    cnt += if (res % 2 == 0L) {
        (b-a) * (res/2)
    } else {
        (b-a) * (res/2) + 1
    }

    print(cnt)
}
