/*
TASK:food
LANG:C++
*/

#include<stdio.h>
#include<stdlib.h>
#define LIM 75
int n,m;
int x,y,z,sum,save[LIM],cost[LIM],stuff[LIM][LIM],len[LIM],suma[LIM];
int active[LIM];
bool grr[LIM][LIM];
int used[LIM];

int sort(const void *a,const void *b)
{
return *(int *)a-*(int *)b;
}

void input()
{
scanf("%d%d",&n,&m);
for(x=1;x<=n;x++)
scanf("%d",&cost[x]);
for(x=1;x<=m;x++)
{
scanf("%d%d",&save[x],&len[x]);
for(y=0;y<len[x];y++)
                     {
                     scanf("%d",&stuff[x][y]);
                     grr[x][stuff[x][y]]=1;
                     }
}
for(x=0;x<m;x++)
qsort(stuff[x],len[x],sizeof(int),sort);

for(x=1;x<=m;x++)
{
sum=0;
for(y=0;y<len[x];y++)
sum+=cost[stuff[x][y]];
suma[x]=sum;
}
for(x=1;x<=m;x++)
active[x]=1;
return;
}

int main()
{
input();
for(x=1;x<=m;x++)
if(save[x]>=suma[x])
                    for(y=0;y<len[x];y++)
                                         used[stuff[x][y]]=1;
for(x=1;x<=n;x++)
if(used[x]==0)
{
sum=0;
for(y=1;y<=m;y++)
if(active[y]==1&&grr[y][x]==1) //ako X hrana uchastva v Y promociq
sum+=save[y];
if(sum<cost[x])  //ako X harchi poveche, otkolkoto spestqva
                 {
                 for(y=0;y<m;y++)
                 if(grr[y][x]==1)
                                 active[y]=0; //promociqta se razvalq
                 used[x]=2;
                 x=0;
                 }
else used[x]=1;
}
sum=0;
for(x=1;x<=m;x++)
if(active[x])
sum+=save[x];
for(x=1;x<=n;x++)
if(used[x]==1)sum-=cost[x];
if(sum>0)
printf("%d\n",sum);
else
printf("0\n");
return 0;
}
