#include<bits/stdc++.h>
#define MAXSIZE 10010
using namespace std;
typedef struct{
int l, r;
int max;
int biao;
}BUILDING;
typedef struct{
int l, r, h;
}B;
B b[MAXSIZE];
BUILDING building[4*MAXSIZE];
void build(int pos, int l, int r);
void down(int pos);
void change(int pos, int l, int r, int k);
int query(int pos, int l, int r);
int main(){
int b0 = 0, l0 = 0, r0 = 0, h0 = 0, len = 0, a[MAXSIZE] = {0};
while(scanf("%d %d %d", &l0, &h0, &r0) != EOF){
b0++;
b[b0].l = l0;
b[b0].h = h0;
b[b0].r = r0;
len = max(len, r0);
}
build(1, 1, len);
for(int i = 1; i <= b0; ++i){
change(1, b[i].l, b[i].r-1, b[i].h);
}
for(int i = 1; i <= len; ++i){
a[i] = query(1, i, i);
}
printf("1 %d ", a[1]);
for(int i = 2; i <= len; ++i){
if(a[i] != a[i-1]){
printf("%d %d ", i, a[i]);
}
}
return 0;
}
void build(int pos, int l, int r){
building[pos].l = l;
building[pos].r = r;
if(l == r)
{
building[pos].max = 0;
building[pos].biao = 0;
return;
}
int mid = (l + r) / 2;
build(2 * pos, l, mid);
build(2 * pos + 1, mid + 1, r);
}
void change(int pos, int l, int r, int k){
if(l <= building[pos].l && building[pos].r <= r){
if(building[pos].max < k){
building[pos].max = k;
building[pos].biao = k;
}
return;
}
if(building[pos].biao)
down(pos);
int mid = (building[pos].l + building[pos].r) / 2;
if(l <= mid) change(2*pos, l, r, k);
if(r > mid) change(2*pos+1, l, r, k);
building[pos].max = max(building[2*pos].max, building[2*pos+1].max);
}
void down(int pos){
if(building[2*pos].biao < building[pos].biao){
building[2*pos].biao = building[pos].biao;
building[2*pos].max = max(building[2*pos].max, building[2*pos].biao);
}
if(building[2*pos+1].biao < building[pos].biao){
building[2*pos+1].biao = building[pos].biao;
building[2*pos+1].max = max(building[2*pos+1].max, building[2*pos+1].biao);
}
}
int query(int pos, int l, int r){
if(l <= building[pos].l && building[pos].r <= r){
return building[pos].max;
}
if(building[pos].biao)
down(pos);
int mid = (building[pos].l + building[pos].r) / 2, max0 = 0;
if(l <= mid){
max0 = max(max0, query(2*pos, l, r));
}
if(r > mid){
max0 = max(max0, query(2*pos+1, l, r));
}
return max0;
}