#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 3e6 + 6, K = 5e5;
int n, k;
int h[N], e[N], w[N], ne[N], idx;
int a[N];
void add(int a, int b, int c){
e[++idx] = b, w[idx] = c, ne[idx] = h[a];
}
int d1[N], d2[N], dis[N];
bool v1[N], v2[N], v[N];
priority_queue<pair<int, int> > q1, q2;
void build(int p, int l, int r)
{
if(l == r)
{
a[l] = p;
return;
}
int mid = l + r >> 1;
add(p << 1, p, 0);
add((p << 1 | 1), p, 0);
build(p << 1, l, mid);
build(p << 1 | 1, mid + 1, r);
}
void connect(int p, int l, int r, int lx, int rx, int u, int v)
{
if(l >= lx && r <= rx)
{
add(p, u, v);
return;
}
int mid = l + r >> 1;
if(mid >= lx) connect(p << 1, l, mid, lx, rx, u, v);
if(mid < rx) connect(p << 1 | 1, mid + 1, r, lx, rx, u, v);
}
void dij1()
{
memset(d1, 0x3f, sizeof d1);
d1[a[1]] = 0;
q1.push(make_pair(0, a[1]));
while(!q1.empty())
{
int x = q1.top().second;
q1.pop();
if(v1[x]) continue;
v1[x] = 1;
for(int i = h[x]; i; i = ne[i])
{
int y = e[i];
if(d1[y] > d1[x] + w[i])
{
d1[y] = d1[x] + w[i];
q1.push(make_pair(-d1[y], y));
}
}
}
}
void dij2()
{
memset(d2, 0x3f, sizeof d2);
d2[a[n]] = 0;
q2.push(make_pair(0, a[n]));
while(!q2.empty())
{
int x = q2.top().second;
q2.pop();
if(v2[x]) continue;
v2[x] = 1;
for(int i = h[x]; i; i = ne[i])
{
int y = e[i];
if(d2[y] > d2[x] + w[i])
{
d2[y] = d2[x] + w[i];
q2.push(make_pair(-d2[y], y));
}
}
}
}
void dij()
{
priority_queue<pair<int, int> > q;
for(int i = 1;i <= n;i++){
dis[a[i]] = d1[a[i]] + d2[a[i]];
q.push(make_pair(-dis[a[i]], a[i]));
}
while(!q.empty())
{
int x = q.top().second;
q.pop();
if(v[x]) continue;
v[x] = 1;
for(int i = h[x]; i; i = ne[i])
{
int y = e[i];
if(dis[y] > dis[x] + w[i])
{
dis[y] = dis[x] + w[i];
q.push(make_pair(-dis[y], y));
}
}
}
}
signed main()
{
cin >> n >> k;
build(1, 1, n);
for(int i = 1;i <= k;i++)
{
int c, p, l ,r;
cin >> c >> p >> l >> r;
connect(1, 1, n, l, r, a[c], p);
}
dij1();
dij2();
dij();
for(int i = 1;i <= n;i++)
{
if(d1[a[i]] + d2[a[i]] >= 0x3f3f3f3f3f3f3f3f){
cout<<-1<<"\n";
} else cout<<dis[a[i]]<<"\n";
}
return 0;
}