#include <bits/stdc++.h>
using namespace std;
map<long long, long long> M;
bool vis[100003];
long long w[1000000], t[1000003], t1[1000003];
long long x, y, z, a, b, c, n, m, q, k, ans;
vector<long long> v2, v1, v;
long long poww(long long x, long long y) {
  if (x == 0) return 0;
  if (x == 1) return 1;
  if (y == 0) return 1;
  if (y == 1) return x;
  long long d = poww(x, y / 2);
  if (y % 2) return d * d * x;
  return d * d;
}
long long inf = 1e10;
long long a1, n1;
void build(long long nd, long long l, long long r) {
  if (l == r) {
    t[nd] = l;
    return;
  }
  long long mid = (l + r) / 2;
  build(2 * nd, l, mid);
  build(2 * nd + 1, mid + 1, r);
}
void up(long long nd, long long l, long long r, long long x, long long y,
        long long z) {
  if (x > r || y < l) return;
  if (t[nd] == -inf) return;
  if (t[nd] > 0) {
    if (t[nd] != z) t1[t[nd]] = z;
    if (t[nd] != z) t[nd] = -inf;
    return;
  }
  if (l >= x && r <= y) {
    for (int i = l; i <= r; i++) {
      if (i != z && t1[i] == 0) t1[i] = z;
    }
    if (z > r || z < l)
      t[nd] = -inf;
    else
      t[nd] = z;
    return;
  }
  long long mid = (l + r) / 2;
  up(nd * 2, l, mid, x, y, z);
  up(nd * 2 + 1, mid + 1, r, x, y, z);
}
int main() {
  memset(t, -1, sizeof(t));
  cin >> n >> m;
  build(1, 1, n);
  while (m--) {
    scanf("%lld%lld%lld", &a, &b, &c);
    up(1, 1, n, a, b, c);
  }
  for (int i = 1; i <= n; i++) printf("%lld ", t1[i]);
  return 0;
}
