#include #include using namespace std; using ll = long long; int main(){ ios::sync_with_stdio(false); cin.tie(0); int T; cin >> T; while(T--){ ll N, M, A, B, C, D; cin >> N >> M >> A >> B >> C >> D; auto rec = [&](auto rec, ll n, ll m, ll a, ll b, ll c, ll d) -> ll { assert(c >= 0 && d >= 0); ll dc = c / m, dd = d / m, ofs = 0; // Ax + B[(Cx + D) / M] -> (A + [BC / M]) x + [BD / M] a += b * dc; c -= dc * m; ofs += b * dd; d -= dd * m; // floor((C(N-1) + D) / M) の最大値 ll num = (c * (n - 1) + d) / m; ll res = ofs + max(0ll, a * (n - 1) + b * num); if((!(a >= 0) ^ (b >= 0)) || num == 0) return res; if(a < 0){ res = max(res, ofs + b + rec(rec, num, c, b, a, m, m + c - 1 - d)); }else{ res = max(res, ofs + rec(rec, num, c, b, a, m, m - d - 1)); } return res; }; cout << rec(rec, N, M, A, B, C, D) << '\n'; } }