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

/* カードの山 (0 番目を一番上のカードとする) */
int length;
int* cards;
int* buffer;

/* カードの山を指定された枚数で初期化する */
void init(int n) {
	int i;
	free(cards);
	free(buffer);
	length = n;
	cards = (int*)malloc(sizeof(int) * length);
	buffer = (int*)malloc(sizeof(int) * length);
	for (i = 0; i < length; i++) cards[i] = length - i; /* カードに番号をつける */
}

/* カット操作を行う (上からp枚目の札からc枚の札を山から抜き取り、山の一番上に置く) */
void cut(int p, int c) {
	int i;
	int* q;
	/* カット操作後のカードの山を buffer 配列に生成する */
	for (i = 0; i < c; i++) buffer[i] = cards[p - 1 + i];
	for (i = 0; i < p - 1; i++) buffer[c + i] = cards[i];
	for (i = p - 1 + c; i < length; i++) buffer[i] = cards[i];
	/* cards と buffer の参照を入れ換え、 cards をカット操作後の状態にする */
	q = cards;
	cards = buffer;
	buffer = q;
}

int main(void) {
	int n; /* 山にある札の枚数 */
	int r; /* カット操作の回数 */
	int p, c, i;

	/* データセット毎の処理 */
	while (scanf("%d%d", &n, &r) == 2) {
		if (n < 1 || n > 50 || r < 1 || r > 50) break;
		/* シミュレーション */
		init(n);
		for (i = 0; i < r; i++) {
			scanf("%d%d", &p, &c);
			cut(p, c);
		}
		/* 出力 */
		printf("%d\n", cards[0]);
	}

    return 0;
}