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

#include <iostream>
#include <vector>
//#include <stdlib.h>
#include <stdio.h>
using namespace std;

int N,M;
int n[76];
struct A{
       int s;
       vector <char> f;
       bool u[76];
       };
       
vector <A> m;
vector <A> l;

void ini()
{
     int i,j;
     //freopen("test1.txt","r",stdin);
     //freopen("test2.txt","w",stdout);
     cin>>N>>M;
     //int i;
         for(i=1;i<=N;i++)
                          cin>>n[i];
         for(i=1;i<=M;i++)
                          {
                                    A h;
                                    cin>>h.s;
                                    int j,fi,a;
                                    cin>>fi;
                                            for(j=1;j<=fi;j++){
                                                               cin>>a;
                                                              h.f.push_back(a);
                                                              }
                                      m.push_back(h);                        
                          }   
            /*for(i=0;i<m.size();i++)
            {
                                   for(j=0;j<m[i].f.size();j++)
                                   cout<<m[i].f[j]<<" ";
                                   cout<<endl;
                                   }*/                    
 }
long long mini=999999999;
void solve()
{
     A h;
     int i,j,k,t,o;
     for(i=0;i<=N;i++)
                      h.u[i]=0;
     h.u[0]=0;
     h.s=0;
     h.f.push_back(0);
     l.push_back(h);
     
                      for(i=1;i<=N;i++)
                                       {
                                       o=l.size();
                                       for(j=0;j<o;j++)
                                                       {
                                                              A y;
                                                             y=l[j];
                                                             y.u[i]=1;
                                                             y.s=l[j].s+n[i];
                                                             y.f.push_back(i);
                                                             l.push_back(y);
                                                             }
                                      for(j=o;j<l.size();j++)                       
                                                             {long long r=l[j].s;
                                                            for(k=0;k<m.size();k++)
                                                             {int s1=1;
                                                             for(t=0;t<m[k].f.size();t++)                                                             
                                                                   if(!l[j].u[m[k].f[t]])
                                                                   {s1=0; break;}                                                                                 
                                                                   if(s1==1) r-=m[k].s;
                                                             }     
                                                             if(mini>r) mini=r;
                                                             }
                                      
                                      }
 
 
 
 
 
}
 void outo()
 {
   //   cout<<mini<<endl;
      if(mini<0) cout<<-mini<<endl;
                 else cout<<"0"<<endl;
  }
  
 

int main()
{
    ini();
    solve();
    outo();
 //   system("pause");
    return 0;
}
