#include <bits/stdc++.h>
using namespace std;
const int N = (1e6);
int T[N << 2], A[N];
void update(int l, int r, int x, int y, int val, int p) {
  if (x > r || y < l) return;
  if (x <= l && y >= r) {
    if (T[p] == -1) T[p] = val;
    return;
  }
  if (T[p] != -1) {
    if (T[p << 1] == -1) T[p << 1] = T[p];
    if (T[p << 1 | 1] == -1) T[p << 1 | 1] = T[p];
  }
  int md = (l + r) >> 1;
  update(l, md, x, y, val, p << 1);
  update(md + 1, r, x, y, val, (p << 1) | 1);
}
void build(int l, int r, int p) {
  if (l == r) {
    A[l] = T[p];
    return;
  }
  if (T[p] != -1) {
    if (T[p << 1] == -1) T[p << 1] = T[p];
    if (T[p << 1 | 1] == -1) T[p << 1 | 1] = T[p];
  }
  int md = (l + r) >> 1;
  build(l, md, p << 1);
  build(md + 1, r, (p << 1) | 1);
}
int main() {
  int n, m;
  scanf("%d %d", &n, &m);
  int a, b, c;
  ;
  memset(T, -1, sizeof T);
  for (int i = 0; i < m; i++) {
    scanf("%d %d %d", &a, &b, &c);
    --a, --b, --c;
    if (a < c) {
      update(0, n - 1, a, c - 1, c, 1);
    }
    if (c < b) update(0, n - 1, c + 1, b, c, 1);
  }
  build(0, n - 1, 1);
  for (int i = 0; i < n; i++) printf("%d ", 1 + A[i]);
}
