#include <stdio.h>
#include <stdlib.h>

typedef struct Node {
	struct Node* before;
	struct Node* next;
	int data;
}Node;

typedef struct Queue {
	struct Node* left;
	struct Node* right;
	int length;
	int turn;
}Queue;

int main() {
	int n, k;
	scanf("%d %d", &n, &k);
	int left, right;
	Queue* head = (Queue*)malloc(sizeof(Queue));
	head->length = 0;
	head->turn = 1;
	int add = 1;
	int minus = 1;
	while (k--) {
		scanf("%d %d", &left, &right);
		if (left == right)continue;
		if (head->length == 0) {//空队列处理
			//添加第一个元素
			Node* s = (Node*)malloc(sizeof(Node));
			s->before = NULL;
			s->next = NULL;
			s->data = add++;
			head->left = s;
			head->right = s;
			head->length++;
		}
		//先把元素入列
		while (add <= right) {
			if (head->turn == 1) {//从队尾入队
				Node* s = (Node*)malloc(sizeof(Node));
				s->before = head->right;
				s->next = NULL;
				s->data = add++;
				head->right->next = s;
				head->right = s;
				head->length++;
			}
			else {//逆序从队头添加元素
				Node* s = (Node*)malloc(sizeof(Node));
				s->before = NULL;
				s->next = head->left;
				s->data = add++;
				head->left->before = s;
				head->left = s;
				head->length++;
			}
		}
		//把元素出列
		while (minus < left) {
			if (head->length == 0) break;//空队列结束循环,防止越界访问
			if (head->turn == 1) {//正序从队头出
				Node* p = head->left;
				printf("%d ", p->data);
				head->left = p->next;
				if (head->left) head->left->before = NULL;//处理野指针
				free(p);
				head->length--;
			}
			else {//逆序从队尾出列
				Node* p = head->right;
				printf("%d ", p->data);
				head->right = p->before;
				if (head->right)head->right->next = NULL;//处理野指针
				free(p);
				head->length--;
			}
			minus++;
		}
		head->turn *= (-1);
	}
	//输出队列中剩余的全部元素
	if (head->turn == 1) {//正序从队头输出
		Node* p = NULL;
		while (head->left) {
			p = head->left;
			printf("%d ", p->data);
			head->left = p->next;
			//head->left->before = NULL;
			free(p);
		}
	}
	else {
		Node* p = NULL;
		while (head->right) {
			p = head->right;
			printf("%d ", p->data);
			head->right = p->before;
			//head->right->next = NULL;
			free(p);
		}
	}
	//输出未反转过的元素
	while (add <= n) printf("%d ", add++);
	return 0;
}