using
System;
using
System.Linq;
using
System.Collections.Generic;
class
GFG
{
static
int
[,] dp=
new
int
[1000001,2];
static
int
recur(
int
i,
int
j,
int
T,
int
A,
int
B)
{
if
(dp[i,j] != -1)
return
dp[i,j];
int
ans = Int32.MinValue;
if
(i + A <= T)
ans = Math.Max(ans, recur(i + A, j, T, A, B));
else
ans = i;
if
(i + B <= T)
ans = Math.Max(ans, recur(i + B, j, T, A, B));
else
ans = Math.Max(ans, i);
if
(j == 1)
ans = Math.Max(ans, recur(i / 2, 0, T, A, B));
return
dp[i,j] = ans;
}
static
void
maxTarLessThanEqualToT(
int
T,
int
A,
int
B)
{
for
(
int
i=0; i<1000001; i++)
for
(
int
j=0; j<2; j++)
dp[i,j]=-1;
Console.WriteLine(recur(0, 1, T, A, B));
}
static
public
void
Main()
{
int
T = 8, A = 5, B = 6;
maxTarLessThanEqualToT(T, A, B);
int
T1 = 11, A1 = 5, B1 = 8;
maxTarLessThanEqualToT(T1, A1, B1);
}
}