#include <stdio.h>
#include <malloc.h>
#include <string.h>
class A
{
public:
enum{N=20,M=10,K=1000,max_time=540};
void init();
void run();
private:
char* traninttimetostr(int itime,char *stime);
void findsortindex(int *ar,int *index_ar,int len);
int n,m,k,q,curpp;
int pp[K],pplt[K];
int wait[N][K],sumt[N],summt[N];
};
void A::init()
{
int i;
scanf("%d%d%d%d",&n,&m,&k,&q);
for(i=0;i<k;i++) scanf("%d",pp+i);
for(i=0;i<n;i++) {sumt[i]=0;summt[i]=0;}
}
void A::findsortindex(int *ar,int *index_ar,int len)
{
char *ar1=(char*)malloc(len);
int i,j,k;
for(i=0;i<len;i++) ar1[i]=ar[i];
for(i=0;i<len;i++)
{
k=i;
for(j=i+1;j<len;j++)
{
if(ar1[j]<ar1[k]) k=j;
}
index_ar[i]=k;
}
free(ar1);
}
void A::run()
{
int i,j,index_ar[N],pid;
curpp=0;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
if(curpp>=k) break;
wait[j][i]=pp[curpp];
sumt[j]+=wait[j][i];
pplt[curpp]=sumt[j];
curpp++;
}
}
for(i=0;;i++)
{
if(curpp>=k) break;
for(j=0;j<n;j++)
{
summt[j]+=wait[j][i];
}
findsortindex(summt,index_ar,n);
int l=0;
while(curpp<k&&l<n)
{
wait[index_ar[l]][i]=pp[curpp];
sumt[index_ar[l]]+=wait[index_ar[l]][i];
pplt[curpp]=sumt[index_ar[l]];
curpp++;
l++;
}
}
for(i=0;i<q;i++)
{
scanf("%d",&pid);
char stime[10];
printf("%s\n",traninttimetostr(pplt[pid-1],stime));
}
}
char* A::traninttimetostr(int itime,char *stime)
{
if(itime>max_time) strcpy(stime,"Sorry");
else
{
int ih,im,i;
ih=8+itime/60;
im=itime%60;
i=ih/10;stime[0]=i+'0';
i=ih%10;stime[1]=i+'0';
stime[2]=':';
i=im/10;stime[3]=i+'0';
i=im%10;stime[4]=i+'0';
stime[5]='\0';
}
return stime;
}
int main()
{
//freopen("test.in","r",stdin);
A *a=new A;
a->init();
a->run();
return 0;
}