#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 5e6 + 5, K = 5e6;
int n, m, cnt;
int h[N], e[N], w[N], ne[N], idx;
int a[N];
int d1[N], d2[N], d3[N];
bool v[N];
priority_queue<pair<int, int> > q;
void add(int a, int b, int c)
{
e[++idx] = b, w[idx] = c, ne[idx] = h[a], h[a] = idx;
}
void build(int p, int l, int r)
{
cnt++;
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 dij1()
{
memset(d1, 0x3f, sizeof d1);
d1[a[1]] = 0;
q.push(make_pair(0, a[1]));
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(d1[y] > d1[x] + w[i])
{
d1[y] = d1[x] + w[i];
q.push(make_pair(-d1[y], y));
}
}
}
}
void dij2()
{
memset(d2, 0x3f, sizeof d2);
memset(v, 0, sizeof v);
d2[a[n]] = 0;
q.push(make_pair(0, d2[n]));
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(d2[y] > d2[x] + w[i])
{
d2[y] = d2[x] + w[i];
q.push(make_pair(-d2[y], y));
}
}
}
}
void dij3()
{
for(int i = 1;i <= cnt;i++)
add(K, i, d1[i] + d2[i]);
memset(d3, 0x3f, sizeof d3);
memset(v, 0, sizeof v);
d3[K] = 0;
q.push(make_pair(0, K));
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(d3[y] > d3[x] + w[i])
{
d3[y] = d3[x] + w[i];
q.push(make_pair(-d3[y], y));
}
}
}
}
void modify(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) modify(p << 1, l, mid, lx, rx, u, v);
if(mid < rx) modify(p << 1 | 1, mid + 1, r, lx, rx, u, v);
}
signed main()
{
ios :: sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> n >> m;
build(1, 1, n);
for(int i = 1;i <= m;i++)
{
int c, p, lft, rgh;
cin >> c >> p >> lft >> rgh;
modify(1, 1, n, lft, rgh, a[c], p);
}
dij1();
dij2();
dij3();
for(int i = 1;i <= n;i++)
{
if(d3[a[i]] >= 0x3f3f3f3f3f3f3f3f) cout<<-1<<"\n";
else cout<<d3[a[i]]<<"\n";
}
return 0;
}