#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N=110;
int n,m;
int price,cnt;
int id,cost;
int g[N][N],dis[N];
int level[N];
bool st[N];
int dijkstra(int l,int r) {
memset(dis,0x3f,sizeof(dis));
memset(st,0,sizeof(st));
dis[0]=0;
for(int i=1; i<=n+1; i++) {
int t=-1;
for(int j=0; j<=n; j++)
if(!st[j]&&(t==-1||dis[t]>dis[j]))
t=j;
st[t]=true;
for(int j=1; j<=n; j++)
if(level[j]>=l&&level[j]<=r)
dis[j]=min(dis[j],dis[t]+g[t][j]);
}
return dis[1];
}
int main() {
cin>>m>>n;
memset(g,0x3f,sizeof(g));
for(int i=0; i<=n; i++) g[i][i]=0;
for(int i=1; i<=n; i++) {
cin>>price>>level[i]>>cnt;
g[0][i]=min(g[0][i],price);
while(cnt--) {
cin>>id>>cost;
g[id][i]=min(g[id][i],cost);
}
}
int ans=0x3f3f3f3f;
for(int i=level[1]-m; i<=level[1]; i++) ans=min(ans,dijkstra(i,i+m));
cout<<ans<<endl;
return 0;
}