#include <iostream>
#include <deque>
#include <queue>
#include <string.h>
#define DEBUG 0
usingnamespacestd;intN,M,K,A,B;// N : 접수 창구 수, M : 정비 창구 수, K : 고객 수, A : 고객이 이용한 접수 창구, B: 고객이 이용한 장비 창구intJeobsu[2][10],Jeongbi[2][10];// 사용중일 경우 [1][i] = 고객 번호classCustomer{public:intcnum;inttime;// 도착 시간intJeobsuT;intJeongbiT;intsu;// 이용한 접수 창구 번호intbi;// 이용한 정비 창구 번호Customer(intn,intt){cnum=n;time=t;}};deque<Customer>customers;voidget_input(){customers.clear();memset(Jeobsu,0,sizeof(Jeobsu));memset(Jeongbi,0,sizeof(Jeongbi));cin>>N>>M>>K>>A>>B;for(inti=1;i<=N;i++)cin>>Jeobsu[0][i];// i 번째 접수 창구가 고장을 접수하는 데 걸리는 시간for(inti=1;i<=M;i++)cin>>Jeongbi[0][i];// i 번째 정비 창구가 고장을 정비하는 데 걸리는 시간for(inti=1;i<=K;i++){intt;cin>>t;customers.push_back(Customer(i,t));}}intget_available_index(intn,intarr[2][10]){// n : 창구 수for(inti=1;i<=n;i++)if(arr[1][i]==0)returni;return-1;}intsolve(){inttime=0;intcomplete=0;deque<int>sol;deque<Customer>cus=customers;deque<int>waitingA;// store index of wating jeobsu customerdeque<int>waitingB;while(1){if(complete==K)break;while(cus.size()!=0&&cus[0].time<=time){waitingA.push_back(cus[0].cnum-1);cus.pop_front();}for(inti=1;i<=M;i++){if(Jeongbi[1][i]!=0){// 정비 창구에서 정비중인 고객들을 대상으로intindex=Jeongbi[1][i]-1;// 정비중인 고객 indexif(time>=customers[index].JeongbiT+Jeongbi[0][i]){// 고객의 정비 시작 시간 + 해당 정비 창구의 소요 시간Jeongbi[1][i]=0;complete++;if(customers[index].su==A&&customers[index].bi==B)sol.push_back(customers[index].cnum);}}}for(inti=1;i<=N;i++){if(Jeobsu[1][i]!=0){// 접수 창구에서 접수중인 고객들을 대상으로intindex=Jeobsu[1][i]-1;// 접수 고객 indexif(time>=customers[index].JeobsuT+Jeobsu[0][i]){// 고객의 정비 시작 시간 + 해당 정비 창구의 소요 시간Jeobsu[1][i]=0;waitingB.push_back(index);}}}while(waitingB.size()){intbi=get_available_index(M,Jeongbi);if(bi==-1)break;else{Jeongbi[1][bi]=customers[waitingB[0]].cnum;customers[waitingB[0]].JeongbiT=time;customers[waitingB[0]].bi=bi;waitingB.pop_front();}}while(waitingA.size()){intsu=get_available_index(N,Jeobsu);if(su==-1)break;else{Jeobsu[1][su]=customers[waitingA[0]].cnum;customers[waitingA[0]].JeobsuT=time;customers[waitingA[0]].su=su;waitingA.pop_front();}}time++;}if(sol.size()){intres=0;for(inti=0;i<sol.size();i++){res+=sol[i];}returnres;}else{return-1;}}intmain(){intsol[50]={0,};intntest;cin>>ntest;for(inti=0;i<ntest;i++){get_input();sol[i]=solve();}for(inti=0;i<ntest;i++)cout<<"#"<<i+1<<" "<<sol[i]<<endl;}