{
TASK:food
LANG:PASCAL
}
type
   int =longint;
   ar = array[0..100] of longint;
var
   v:array[1..100] of int ;
   vf:array[1..100] of ar;
   price:array[1..100] of int;
   deal:array[1..100] of int;
   g:array[1..100]of ar;
   n,m:int;

procedure inp ;
var
   f:text;
   i,j,t:int;
begin
   assign(f,'');
   reset(f);
   read(f,n,m);
   for i:=1 to n do
     read(f,price[i]);
   for i:=1 to  m do
   begin
      read(f,deal[i]);
      read(f,g[i,0]);
      for j:=1 to g[i,0] do
      begin
        read(f,t);
        inc(g[i,t]);
      end;
   end;
   close(f);
end;

function sum(var a:array of int):int;
var
  i,ans:int;
begin

   for i:=1 to a[0] do
    ans:=ans+a[i]*price[i];
   sum:=ans;
end;

procedure solve;
var
   i,j,min,wh,t,k:int;
begin
   v[1]:=sum(g[1])-deal[1];
   vf[1]:=g[1];
   for i:=2 to n do
   begin
      min:=v[i-1];
      for j:=i-1 to 1 do
      begin
         t:=v[j];
         for k:=1 to g[i,0] do
          if g[i,k]>vf[j,k] then t:=t+(g[i,k]-vf[j,k])*price[k];
         t:=t-deal[i];
         if t<min then
         begin
           min:=t;
           wh:=j;
         end;

      end;
      v[i]:=min;
      if wh=0 then continue;
      vf[i]:=vf[wh];
      for j:=1 to g[i,0] do
      begin
         if vf[i,j]<g[i,j] then vf[i,j]:=g[i,j];
      end;
   end;
end;

begin
   inp;
   solve;
   if v[n]>0 then writeln('0')else
    writeln(-v[n]);
end.