///P5-營運分析師

#include <iostream>
#include <cmath>
#define MAX 300

using namespace std;

struct flight
{
    char fn[10];
    int s,t,n,order[MAX];
    int sum=0;
    float money = 0;
    float gMoney =0;
    float got = 0;
};

struct flight fly[15];

int main()
{
    int F;
    cin >> F;

    for (int k = 0; k<F; k++)
    {
        cin>>fly[k].fn >> fly[k].s>> fly[k].t>> fly[k].n;
        fly[k].sum = 0;
        for (int i=1; i<= fly[k].n; i++)
        {
            cin >> fly[k].order[i];
            fly[k].sum += fly[k].order[i];
        }



        int sec1 = (int) round(fly[k].t*0.2);
        if (fly[k].sum >= sec1)
        {
            fly[k].money = fly[k].money + round(fly[k].s*0.7*sec1);
            fly[k].sum -= sec1;
        }
        else
        {
            fly[k].money = fly[k].money + round(fly[k].s*0.7*fly[k].sum);
            fly[k].sum =0;
        }

        int sec2 = (int) round(fly[k].t*0.4)-sec1;
        if (fly[k].sum>=sec2)
        {
            fly[k].money = fly[k].money + round(fly[k].s*0.8*sec2);
            fly[k].sum -= sec2;
        }
        else if (fly[k].sum>0 && fly[k].sum<sec2)
        {
            fly[k].money = fly[k].money + round(fly[k].s*0.8*fly[k].sum);
            fly[k].sum = 0;
        }

        int sec3 = (int) round(fly[k].t*0.6)-sec1-sec2;
        if ( fly[k].sum>=sec3)
        {
            fly[k].money = fly[k].money + round(fly[k].s*0.9*sec3);
            fly[k].sum -= sec3;
        }
        else if (fly[k].sum >0 && fly[k].sum < sec3)
        {
            fly[k].money = fly[k].money + round(fly[k].s*0.9*fly[k].sum);
            fly[k].sum = 0;
        }

        if (fly[k].sum>0)
            fly[k].money = fly[k].money + fly[k].s*fly[k].sum;


       fly[k].gMoney = round(fly[k].s*fly[k].t*0.3);
       fly[k].got =  fly[k].money - fly[k].gMoney ;

        //cout << fly[k].money << " " << fly[k].gMoney << " " << fly[k].got  << endl;

    }


    //sort by money-gMoney

    for (int i = 0; i<F; i++)
        for (int j=0; j<F-1; j++)
    {
        struct flight temp;
        if (fly[i].got>fly[j].got)
        {
            temp = fly[i];
            fly[i] = fly[j];
            fly[j] = temp;
        }
    }

     for (int i = 0; i<F; i++)
     {
         cout << fly[i].fn << " " << fly[i].got << endl;
     }


    return 0;
}

/*
輸入說明

每個測試資料有一行數字，數字之間以空白隔開。
第一個整數代表該航班的票面價s, s≦5,000，
第二個整數代表機位數t, t ≦ 250，
第三個整數n, 0≦ n ≦10 代表該航班共有n 個訂位記錄，
後面則有n 個整數，分別代表每個訂位的機位數。
當然，所訂的機位總數不會超過t。

輸出說明
請輸出飛航該班機的利潤或虧損金額。


輸出說明
請輸出飛航該班機的利潤或虧損金額。
範例輸入
6
AX-330 2000 60 6 5 10 20 14 1 5
CS-028 5000 240 5 3 14 14 14 10
AA-053 3000 100 10 10 10 10 10 10 10 10 10 2 5
CC-123 1000 50 3 20 1 1
BX-103 4500 250 8 20 20 14 2 4 5 7 9
DD-236 500 250 10 25 25 25 25 25 25 25 25 25 25
範例輸出
AA-053 135000
DD-236 72500
AX-330 59600
CC-123 1800
BX-103 -68400
CS-028 -164000


--
售價的模式：
給定某航段的票面價及機位數，
前20%賣出的機位售價為票面價之70%，
前21%~40%賣出的機位售價為票面價之80%，
前41%~60%賣出的機位售價為票面價之 90%，
最後售出的機位則全部為票面價。


*/
