unittest
{
	assert( [ "4 2 6" ].parse.expand.solve == 7 );
	assert( [ "7 3 4" ].parse.expand.solve == 8 );
	assert( [ "314159265 35897932 384626433" ].parse.expand.solve == 48518828981938099 );
}



import std.conv;
import std.range;
import std.stdio;
import std.typecons;

void main()
{
	stdin.byLineCopy.parse.expand.solve.writeln;
}

auto parse( Range )( Range input )
if( isInputRange!Range && is( ElementType!Range == string ) )
{
	auto kab = input.front.split.to!( long[] );
	return tuple( kab[ 0 ], kab[ 1 ], kab[ 2 ] );
}

auto solve( long k, long a, long b )
{
	auto ans = 1L;
	if( 2 < b - a )
	{
		while( 0 < k )
		{
			if( 2 <= k && a <= ans )
			{
				ans += b - a;
				k -= 2;
			}
			else
			{
				ans++;
				k--;
			}
		}
	}
	else
	{
		ans += k;
	}
	return ans;
}
