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


typedef struct data_t{
	int num;
	struct data_t *next;
}DATA_T;


int main()
{
	char in_str[256];
	DATA_T *pointer;
	DATA_T *bk_p, *bk_p2;
	DATA_T yamafuda;	// 山札を指す変数
	int n;			// 札の枚数
	int r;			// カット操作回数
	int p, c;		// p枚目の札からc枚を一番上に持ってくる
	int count, i, j;

	while(1){
		// 枚数とカット回数の入力
		fgets(in_str, sizeof(in_str), stdin);
		sscanf(in_str, "%d %d", &n, &r);

		if(n == 0 && r == 0)
			break;

		yamafuda.num = 0;
		yamafuda.next = NULL;
		for(i = 0; i < n; i++){
			if( (pointer = (DATA_T *)malloc(sizeof(DATA_T))) == NULL){
				printf("malloc error\n");
				exit(1);
			}
			pointer->num = i + 1;
			pointer->next = yamafuda.next;
			yamafuda.next = pointer;
		}

		// カット操作
		for(i = 0; i < r; i++){
			fgets(in_str, sizeof(in_str), stdin);
			sscanf(in_str, "%d %d", &p, &c);

			// 先頭を先頭に持ってこようとするとバグる
			if(p == 1)
				continue;

			/* 山札のてっぺんに持ってくる*/
			// 交換し始めの前の場所のポインタを求める
			count = 1;
			for(pointer = &yamafuda; count != p; pointer = pointer->next)
				count++;
			bk_p = pointer;

			// 交換し終わりの場所の次のポインタを求める
			count = 1;
			for(pointer = pointer->next; count != c; pointer = pointer->next)
				count++;
			bk_p2 = pointer->next;

			// 交換
			pointer->next = yamafuda.next;
			yamafuda.next = bk_p->next;
			bk_p->next = bk_p2;
		}

		printf("%d\n", yamafuda.next->num);
	}

	return 0;
}
