using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using static System.Console;
using static System.Math;

namespace AtCoder
{
    class Program
    {
        static void Main(string[] args)
        {
            var n = ReadInt();
            for (int i = 0; i < n; i++)
            {
                var xybp = ReadInts();
                var a = xybp[0] * xybp[2] + xybp[1] * xybp[3];
                if (xybp[2] >= 5 && xybp[3] >= 2)
                {
                    var b = a * 0.8;
                    if (a < b)
                    {
                        WriteLine(a);
                    }
                    else
                    {
                        WriteLine(b);
                    }
                }
                else
                {
                    int z;
                    int x;
                    if (xybp[2] <= 5)
                    {
                        z = 5;
                    }
                    else
                    {
                        z = xybp[2];
                    }
                    if (xybp[3] <= 2)
                    {
                        x = 2;
                    }
                    else
                    {
                        x = xybp[3];
                    }


                    if ((xybp[0] * z + xybp[1] * x)*0.8 < a)
                    {
                        WriteLine((xybp[0] * z + xybp[1] * x) * 0.8);
                    }
                    else
                    {
                    WriteLine(a);

                    }
                }
            }
        }

        private static string Read() { return ReadLine(); }
        private static string[] Reads() { return (Read().Split()); }
        private static int ReadInt() { return int.Parse(Read()); }
        private static long ReadLong() { return long.Parse(Read()); }
        private static double ReadDouble() { return double.Parse(Read()); }
        private static int[] ReadInts() { return Array.ConvertAll(Read().Split(), int.Parse); }
        private static long[] ReadLongs() { return Array.ConvertAll(Read().Split(), long.Parse); }
        private static double[] ReadDoubles() { return Array.ConvertAll(Read().Split(), double.Parse); }

        public static void debuglist(List<int> x)
        {
            foreach (var item in x)
            {
                WriteLine(item);
            }
        }
        public static void debuglist(List<string> x)
        {
            foreach (var item in x)
            {
                WriteLine(item);
            }
        }
        //最大公約数

        public static int Gcd(int a, int b)
        {
            if (a < b)
            {
                return Gcd(b, a);
            }
            while (b != 0)
            {
                var reminder = a % b;
                a = b;
                b = reminder;
            }
            return a;
        }

        //最小公倍数
        public static int Lcm(int a, int b)
        {
            return a * b / Gcd(a, b);
        }

        //文字数を数える
        public static int CountChar(string s, char c)
        {
            return s.Length - s.Replace(c.ToString(), "").Length;
        }
    }
}



Measured memory_bytes: 17944