a:array[1..10] of boolean;
b:array[0..10,0..30] of longint;
p:array[1..10] of longint;
n,m,t,i,j,k,l,ans:longint;
function check:boolean;
var
i,j:longint;
c:array[1..30] of boolean;
begin
fillchar(c,sizeof(c),false);
for i:=1 to b[0,0] do c[b[0,i]]:=true;
for i:=1 to t do
if a[i] then
for j:=1 to b[i,0] do
c[b[i,j]]:=true;
for i:=1 to n do
if not c[i] then exit(false);
exit(true);
end;
function sum:longint;
var
i:longint;
begin
sum:=0;
for i:=1 to t do
if a[i] then sum:=sum+p[i];
end;
procedure sub(s:longint);
var
i,j:longint;
begin
if s>t then begin
if check then ans:=sum;
exit;
end;
a[s]:=true;
sub(s+1);
a[s]:=false;
sub(s+1);
end;
begin
readln(n,b[0,0],t);
for i:=1 to b[0,0] do
read(b[0,i]);
readln;
for i:=1 to t do
begin
read(p[i],b[i,0]);
for j:=1 to b[i,0] do
read(b[i,j]);
readln;
end;
fillchar(a,sizeof(a),false);
ans:=maxlongint;
sub(1);
writeln(ans);
end.