#include <iostream>
#include <queue>
using namespace std;
int main()
{
int n, m, k, q;
scanf("%d%d%d%d", &n, &m, &k, &q);
int processing[1010], i, res[1010];
for(i = 1; i <= k; i++)
{
scanf("%d", &processing[i]);
res[i] = -1;
}
int former[30], flag[30];
for(i = 1; i <= n; i++)
{
former[i] = 8 * 60;
flag[i] = 1;
}
queue<int> que[30];
int window = 1;
for(i = 1; i <= k && i <= n * m; i++)
{
que[window++].push(i);
if(window > n)
{
window = 1;
}
}
int mintime, minindex, j, size, cur, curtime;
while(1)
{
mintime = 10000000;
minindex = -1;
for(j = 1; j <= n; j++)
{
size = que[j].size();
if(size > 0 && flag[j] == 1)
{
cur = que[j].front();
curtime = former[j] + processing[cur];
if(curtime < mintime)
{
mintime = curtime;
minindex = j;
}
}
}
if(minindex == -1)
{
break;
}
cur = que[minindex].front();
que[minindex].pop();
former[minindex] = res[cur] = mintime;
if(mintime >= 17 * 60)
{
flag[minindex] = 0;
}
else if(i <= k)
{
que[minindex].push(i++);
}
}
int time, hour, minute;
for(i = 1; i <= q; i++)
{
scanf("%d", &cur);
time = res[cur];
if(time == -1)
{
printf("Sorry\n");
}
else
{
hour = time / 60;
minute = time % 60;
printf("%02d:%02d\n", hour, minute);
}
}
system("pause");
return 0;
}