/*
TASK:food
LANG:C
*/

#include <stdio.h>

char conf[75];
short N, M, f[75], hr[75][10];
long c[75], p[75], best=0;

void calc(void)
{
  static char fl;
  static short i, j;
  static long res;
  res=0;
  for(i=0; i<N; ++i)
    if(conf[i])
      res-=c[i];
  for(i=0; i<M; ++i)
  {
    fl=0;
    for(j=0; j<f[i]; ++j)
      if(!conf[hr[i][j]])
        fl=1;
    if(fl)
      continue;
    res+=p[i];
  }
  if(res>best)
    best=res;
}

void bTr(char p)
{
  if(p==N)
  {
    calc();
    return;
  }
  conf[p]=0;
  bTr(p+1);
  conf[p]=1;
  bTr(p+1);
}

void input(void)
{
  short i, j;
  scanf("%hd %hd", &N, &M);
  for(i=0; i<N; ++i)
    scanf("%ld", &c[i]);
  for(i=0; i<M; ++i)
  {
    scanf("%ld %hd", &p[i], &f[i]);
    for(j=0; j<f[i]; ++j)
    {
      scanf("%hd", &hr[i][j]);
      --hr[i][j];
    }
  }
}

int main(void)
{
  input();
  bTr(0);
  printf("%ld\n", best);
  return 0;
}

