#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
int n, m; cin >> n >> m;
vector<array<int, 4>> proj(m);
for(int i = 0; i < m; i++){
cin >> proj[i][0] >> proj[i][1] >> proj[i][2] >> proj[i][3];
proj[i][2] += 1;
}
vector<int> dist(m, 1e18);
priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> pq;
for(int i = 0; i < m; i++){
if(proj[i][1] == 1){
dist[i] = proj[i][3];
pq.push({dist[i], i});
}
}
int ans = 1e18;
while(!pq.empty()){
auto [cur, u] = pq.top();
pq.pop();
if(cur > dist[u]) continue;
if(proj[u][2] == n + 1) ans = min(ans, cur);
for(int v = 0; v < m; v++){
if(u == v) continue;
if(proj[u][2] - proj[v][1] >= abs(proj[u][0] - proj[v][0])){
if(dist[v] > dist[u] + proj[v][3]){
dist[v] = dist[u] + proj[v][3];
pq.push({dist[v], v});
}
}
}
}
cout << (ans == 1e18 ? -1 : ans);
}