/*
TASK:food
LANG:C++
*/
#include <stdio.h>
#define max(a,b) (a > b ? a : b)
#define FOR(i,n) for(int i=0;i<n;i++)
#define maxn 76
#define maxm 76

bool used[maxn];
int p[maxn];
int sz[maxn];
int offers[maxm][10];
int poff[maxm];
int n,m;
int best;

void init() {
     scanf("%d %d",&n,&m);
     FOR(i,n) scanf("%d",&p[i]);
     FOR(i,m) {
              scanf("%d",&poff[i]);
              scanf("%d",&sz[i]);
              FOR(j,sz[i]) scanf("%d",&offers[i][j]);
     }
}

void calc() {
     char cused[10];
     int all(0);
     int oPrice(0);
     FOR(i,10) cused[i] = 0;
     FOR(i,m) {
        if(used[i]) {
          FOR(j,sz[i]) {
             if( (cused[ offers[i][j] >> 3 ] & (1<< (offers[i][j] & 7))) == 0 ) {
                 all += p[ offers[i][j] ];
                 cused[ offers[i][j] >> 3] |= (1 << (offers[i][j] & 7) );
             }
          }
          oPrice += poff[i];
        }
     }
     if(oPrice > all) best = max(best, oPrice-all);
}

void rec(int last) {
     if(last>=n) { calc(); return; }
     for(int i=last+1;i<=n;i++) {
             used[i]=1;
             rec(i+1);
             used[i]=0;
     }
}

int main() {
    init();
    best = 0;
    rec(-1);
    printf("%d\n",best);
    scanf("%d",&n);
    return 0;
}
