#ifdef LOCAL #define _GLIBCXX_DEBUG #endif // LOCAL #pragma GCC optimize("O3") #include using namespace std; using ll = long long; void solve_test (istream &cin, ostream &cout) { int n, a, b, x, y; cin >> n >> a >> b >> x >> y; assert(a >= b); ll ans = 0; ans += ll(a) * min(n, x); n -= min(n, x); if (n > 0) { const ll rest = ll(x) * a; const ll work = ll(x + y) * b; if (rest > work) { const int cycles = n / (x + y); ans += rest * cycles; n %= (x + y); ll rem_rest = ll(n) * b; ll rem_work = 0; if (n >= y) rem_work = ll(n - y) * a; ans += max(rem_rest, rem_work); } else ans += ll(n) * b; } cout << ans << "\n"; } void solve (istream &cin, ostream &cout) { int t; cin >> t; for (int i = 0; i < t; i++) solve_test(cin, cout); } int main() { #ifdef LOCAL ifstream in("input.txt"); ofstream out("output.txt"); solve(in, out); #else solve(cin, cout); #endif }