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

int n,m;
struct qw{int cena;} A[80];
struct offer{int cena,no,ce,pro[80];} P[80];
int min(int a,int b)
{if(a>b)return b;
 return a;
}
void vhod()
{int a,b,k,d;
 scanf("%d %d",&n,&m);
 for(int i=1;i<=n;i++)
  scanf("%d",&A[i].cena);
 for(int j=1;j<=m;j++)
  {scanf("%d",&P[j].cena);
   scanf("%d",&a);P[j].no=a;
     if(a==1)
     {scanf("%d",&d);A[d].cena=P[j].cena;P[j].pro[d]=1;}
     else for( k=1;k<=a;k++)
	 {scanf("%d",&b);
	  P[j].pro[b]=1;
	  P[j].ce+=A[b].cena;
	 }
  P[j].ce-=P[j].cena;
 }
}

void sol()
{int x=1,v;
 if(P[1].no>1)v=P[1].no;
   else v=3333;
 for(int i=2;i<=m;i++)
     if(v>P[i].ce&&P[i].ce!=0)v=P[i].ce;

 if(v<0){v*=(-1);printf("%d\n",v);}
   else printf("0\n");
}
int main()
{vhod();
 sol();
 return 0;
}
