#include <iostream>
#include <cstdio>
using namespace std;
const int maxn=11000; //time limits
const int nummax=1001;
int time_In[maxn]={0};
int time_Out[maxn][maxn]={0}; //store the key
int box[nummax];
bool book[nummax];
int mark_time[maxn]={0};
int findpos(int n){
int pos;
for(int i=1;i<=n;i++){
if(book[i]==false ){ pos=i; break;}
}
return pos;
}
int main()
{
int n,num_person;
for(int i=1;i<=maxn;i++){
for(int j=1;j<=maxn;j++){
time_Out[i][j]=0;
}
}
for(int i=1;i<=nummax;i++) book[i]=true;
scanf("%d %d",&n,&num_person);
for(int i=1;i<=n;i++) box[i]=i;
for(int i=1;i<=num_person;i++){
int key,start,len;
scanf("%d %d %d",&key,&start,&len);
mark_time[start+len]++;
time_In[start] = key;
int time_len=1;
if(mark_time[start+len] == 1){
time_Out[start+len][time_len]= key;
}else{
while(time_Out[start+len][time_len]!=0) time_len++; //find the first postion to insert;
time_Out[start+len][time_len]=key;
}
}
// for(int i=1;i<maxn;i++){
// int index=1;
// while(time_Out[i][index]!=0){
// printf("%d ",time_Out[i][index]);
// index++;
// }
//
// }
for(int i=1;i<=maxn;i++){
int index=1;
while(i!=1 && time_Out[i][index]!= 0){
int pos=findpos(n);
// if(pos<0 ) break;
box[pos] = time_Out[i][index];
book[pos] = true;
printf("%d %d\n",pos,time_Out[i][index]);
index++;
}
if(time_In[i] != 0){
book[ time_In[i] ] = false;
}
}
for(int i=1;i<=n;i++){
printf("%d",box[i]);
if(i!=n) printf(" ");
}
return 0;
}
#include <cstdio>
using namespace std;
const int maxn=11000; //time limits
const int nummax=1001;
int time_In[maxn]={0};
int time_Out[maxn][maxn]={0}; //store the key
int box[nummax];
bool book[nummax];
int mark_time[maxn]={0};
int findpos(int n){
int pos;
for(int i=1;i<=n;i++){
if(book[i]==false ){ pos=i; break;}
}
return pos;
}
int main()
{
int n,num_person;
for(int i=1;i<=maxn;i++){
for(int j=1;j<=maxn;j++){
time_Out[i][j]=0;
}
}
for(int i=1;i<=nummax;i++) book[i]=true;
scanf("%d %d",&n,&num_person);
for(int i=1;i<=n;i++) box[i]=i;
for(int i=1;i<=num_person;i++){
int key,start,len;
scanf("%d %d %d",&key,&start,&len);
mark_time[start+len]++;
time_In[start] = key;
int time_len=1;
if(mark_time[start+len] == 1){
time_Out[start+len][time_len]= key;
}else{
while(time_Out[start+len][time_len]!=0) time_len++; //find the first postion to insert;
time_Out[start+len][time_len]=key;
}
}
// for(int i=1;i<maxn;i++){
// int index=1;
// while(time_Out[i][index]!=0){
// printf("%d ",time_Out[i][index]);
// index++;
// }
//
// }
for(int i=1;i<=maxn;i++){
int index=1;
while(i!=1 && time_Out[i][index]!= 0){
int pos=findpos(n);
// if(pos<0 ) break;
box[pos] = time_Out[i][index];
book[pos] = true;
printf("%d %d\n",pos,time_Out[i][index]);
index++;
}
if(time_In[i] != 0){
book[ time_In[i] ] = false;
}
}
for(int i=1;i<=n;i++){
printf("%d",box[i]);
if(i!=n) printf(" ");
}
return 0;
}