import java.util.*; import java.io.*; import java.math.*; import java.util.stream.Stream; public class Main{ static PrintWriter output; static Scanner sc; static void solve(){ int t = ni(); while(t-->0) { int l = ni(); int r = ni(); int a = ni(); int b = ni(); int max = -100000000; max = Math.max(max,calc(l,r,a,b)); output.println(max); } } static int calc(int l,int r,int a,int b) { int max = -100000000; for(int i=l ; i<=r ; i++) max = Math.max(max,a*i+b); return max; } public static void main(String[] args) throws IOException{ output = new PrintWriter(System.out); sc = new Scanner(System.in); solve(); output.flush(); } static int ni(){ return sc.nextInt();} static long nl(){ return sc.nextLong();} static String ns(){return sc.next();} static BigInteger bi(){return sc.nextBigInteger();} static BigDecimal bd(){return sc.nextBigDecimal();} static Map<Long,Integer> counter(long [] A) { HashMap<Long,Integer> count = new HashMap<>(); for(int i=0;i<A.length;i++) { if(!count.containsKey(A[i])) count.put(A[i],1); else count.put(A[i],count.get(A[i])+1); } return count; } }