void solve() {
int n, m;
cin >> n >> m;
vector<vector<char>> a(n + 3, vector<char>(m + 3));
auto draw = [&](int x, int y) -> void {
a[x][y] = '/';
a[x][y + 1] = '\\';
a[x + 1][y] = '\\';
a[x + 1][y + 1] = '/';
};
for (int i = 1; i <= n; i += 2)
for (int j = 1; j <= m; j += 2) {
draw(i, j);
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++)
cout << a[i][j];
cout << endl;
}
}
void solve() {
int n, p;
cin >> n >> p;
vector<ll> a(n + 1), s(n + 1);
for (int i = 1; i <= n; i++) {
cin >> a[i];
s[i] = (s[i - 1] + a[i]) % p;
}
// cout << endl;
set<pll> st;
st.insert({0, 0});
int ans = -1;
int l, r;
for (int i = 1; i <= n; i++) {
auto [val, pos] = *st.begin();
ll res = (s[i] - val + p) % p;
if (res > ans) {
ans = res, l = pos + 1, r = i;
}
auto it = st.upper_bound({s[i], 0});
if (it != st.end()) {
auto [val1, pos1] = *st.upper_bound({s[i], 0});
res = (s[i] - val1 + p) % p;
if (res > ans) {
ans = res, l = pos1 + 1, r = i;
}
}
st.insert({s[i], i});
}
cout << l - 1 << " " << r - 1 << " " << ans << endl;
}
void solve() {
ll n, a, b;
cin >> n >> a >> b;
auto cal = [&](ll x) -> ll {
int t = min(n - 7 * x, x);
t += (n - 7 * x - t) / 2;
return x * a + t * b;
};
int l = 0, r = n / 7;
while (l + 5 < r) {
int lmid = l + (r - l) / 3;
int rmid = r - (r - l) / 3;
if (cal(lmid) <= cal(rmid))
l = lmid + 1;
else
r = rmid - 1;
}
ll ans = 0;
for (int i = l; i <= r; i++) {
ans = max(ans, cal(i));
}
cout << ans << endl;
}