#include #define repr(i,a,b) for(int i=a;i=a;i--) // [a, b) #define reprev(i,n) reprrev(i,0,n) #define _GLIBCXX_DEBUG using ll = long long; using ull = unsigned long long; template inline bool chmax(T& a, T b) { if (a < b) { a = b; return true; } return false; } template inline bool chmin(T& a, T b) { if (a > b) { a = b; return true; } return false; } const ll mod = 1e9+7; void chmod(ll &M){ if(M >= mod) M %= mod; else if(M < 0){ M += (abs(M)/mod + 1)*mod; M %= mod; } } int getl(int i, int N) { return i==0? N-1:i-1; }; int getr(int i, int N) { return i==N-1? 0:i+1; }; long long GCD(long long a, long long b) { if (b == 0) return a; else return GCD(b, a % b); } using namespace std; using Graph = vector>; int main() { int T; cin >> T; rep(i, T) { int l, r, a, b; cin >> l >> r >> a >> b; if(a>0) cout << a*r+b << endl; if(a<0) cout << a*l+b << endl; if(a==0) cout << b << endl; } }