/*
TASK:food
LANG:C++
*/
#include<stdio.h>
#define maxn 100

using namespace std;

int N, M;

long long f[maxn];
long long g[maxn];
long long c[maxn];

int n[maxn];
int is_in[maxn][maxn] = {0};
int m[maxn] = {0};
int top = 0;
int used[maxn] = {0};
int u[maxn] = {0};
int o[maxn][maxn];

void input();
void solve();


int main()
{
input();
solve();
return 0;
}

void solve()
{
int i, j;
long long ans = 0;
long long a;
int flag;

for(i = 0; i < M; i++)
 {
 for(j = 0, a = -g[i]; j < n[i]; j++)
  a += f[o[i][j]-1];
 c[i] = a;
 }

while(1)
 {
 flag = 0;
 for(i = 0; i < M; i++)
  if(c[i] <= 0 && used[i] == 0)
   {
   ans -= c[i];
   used[i] = 1; flag = 1;
   top = 0;
   for(j = 0; j < n[i]; j++) m[top++] = o[i][j];
   break;
   }
   
 if(flag == 0) break;

 for(i = 0; i < top; i++)
  if(u[m[i]] == 0)
   {
   u[m[i]] = 1;
   for(j = 1; j <= is_in[m[i]][0]; j++)
    c[ is_in[m[i]][j] ] -= f[m[i]-1];
   }


 }

printf("%lld\n", ans);
}


void input()
{
int i, j;
scanf("%d%d", &N, &M);
for(i = 0; i < N; i++) scanf("%lld", &f[i]);

for(i = 0; i < M; i++)
 {
 scanf("%lld%d", &g[i], &n[i]);
 for(j = 0; j < n[i]; j++)
  {
  scanf("%d", &o[i][j]);
  is_in[o[i][j]][++is_in[o[i][j]][0]] = i;
  }
 }
}

 
