#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,ans,fa[500005],m[500005],c[500005],q;
struct node{
int l,r,c,id;
}a[500005];
bool cmp(node x,node y)
{
return x.c<y.c;
}
int get(int x)
{
if (x==fa[x]){
return x;
}
return fa[x]=get(fa[x]);
}
void mg(int x,int y,int v)
{
if (get(x)!=get(y)){
fa[get(y)]=get(x);
ans+=v;
}
}
int gm(int x)
{
if (x==m[x]){
return x;
}
return m[x]=gm(m[x]);
}
signed main()
{
cin>>n>>q;
for (int i=1;i<=q;i++){
fa[n+i]=n+i;
}
for (int i=1;i<=n;i++){
m[i]=i;
}
for (int i=1;i<=q;i++){
cin>>a[i].l>>a[i].r>>a[i].c;
a[i].id=n+i;
}
sort(a+1,a+q+1,cmp);
for (int i=1;i<=q;i++){
for (int j=a[i].l;j<=a[i].r;j++){
if (c[j]){
mg(a[i].id,c[j],a[i].c);
j=gm(j);
}else{
if (j!=a[i].l){
m[gm(j-1)]=gm(j);
}
c[j]=a[i].id;
ans+=a[i].c;
}
}
}
int df=0;
for (int i=n+1;i<=n+q;i++){
if (fa[i]==i){
df++;
}
}
cout<<(df==1?ans:-1);
}
rt。