WA*33
#include<bits/stdc++.h>
using namespace std;
using ll=long long;
int n,m,res;
ll ans;
struct node{
int num,c,id;
}b[200005];
bool operator <(const node &x,const node &y){return x.c<y.c;}
vector<int>a[200005],bl[200005];
bool vis[200005],vis2[200005],vis3[200005];
void dfs(int u){
vis[u]=true;
for(int v:a[u])if(!vis3[v]){
vis3[v]=true,res++;
for(int x:bl[v])if(!vis[x])dfs(x);
}
return ;
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++){
scanf("%d%d",&b[i].num,&b[i].c),b[i].id=i;
for(int j=0;j<b[i].num;j++){
int x;scanf("%d",&x);
a[i].push_back(x),bl[x].push_back(i);
}
}
dfs(1);
if(res<n){puts("-1");return 0;}
sort(b+1,b+m+1);
for(int i=1;i<=m;i++)for(int u:a[b[i].id])if(!vis2[u])vis2[u]=true,ans+=b[i].c;
printf("%lld",ans-b[1].c);
return 0;
}