{
TASK: VAIKAIV
LANG: PASCAL
}
program vvaikai;
var vaikk, eilmax, newvaik, i, len, pos, zodziu, vvaikk, liek: integer;
nend : boolean;
failas: text;
seka : array [1..25] of integer;
eilute : array [1..50] of string;
iskr : array [1..25] of boolean;
procedure ismesti (position : integer);
var j, k: integer;
begin
j := 1;
k := 1;
while (iskr[j] = true) or (k <> position) do
begin
if (iskr[j] <> true) then k := k + 1;
j := j + 1;
end;
iskr[j] := true;
liek := k;
end;
begin
assign(failas, 'VAIKAI.IN');
reset(failas);
Read(failas, vaikk);
Read(failas, eilmax);
ReadLn(failas, newvaik);
for i := 1 to vaikk do Read(failas, seka[i]);
ReadLn(failas);
for i := 1 to eilmax do ReadLn(failas, eilute[i]);
{ eiluciu zodziu skaicius }
zodziu := 0;
for i := 1 to eilmax do
begin
len := Length(eilute[i]);
nend := false;
for pos := 1 to len do
begin
if (eilute[i][pos] <> ' ') then begin nend := true; end;
if (eilute[i][pos] = ' ') AND (nend = true) then begin
nend := false;
zodziu := zodziu +1;
end;
end;
if (nend = true) then zodziu := zodziu + 1;
end;
close(failas);
vvaikk := vaikk + 1;
liek := 1;
while (vvaikk <> 1) do
begin
pos := zodziu mod vvaikk;
pos := pos + liek - 1;
if (pos >= vvaikk) then pos := pos mod vvaikk;
if (pos = 0) then pos := vvaikk;
ismesti(pos);
vvaikk := vvaikk - 1;
end;
pos := 0;
for i := 1 to vaikk+1 do
begin
if (iskr[i] <> true) then pos := i;
end;
assign(failas, 'VAIKAI.OUT');
rewrite(failas);
for i := 1 to vaikk + 1 do
begin
if (i < pos) then write(failas,seka[i]);
if (i = pos) then write(failas,newvaik);
if (i > pos) then write(failas,seka[i-1]);
if (i <> vaikk+1) then write(failas, ' ');
end;
close(failas);
end.