Go: package main

import "fmt"

func main() {
	var n, r int
	fmt.Scan(&n, &r)
	for n != 0 || r != 0 {
		arr := make([]int, n)
		for i := range arr {
			arr[i] = len(arr) - i
		}

		for i := 0; i < r; i++ {
			var p, c int
			fmt.Scan(&p, &c)
			mid, top, last := arr[:p-1], arr[p-1:p-1+c], arr[p-1+c:]
			arr = append(append(append([]int{}, top...), mid...), last...)
		}
		fmt.Println(arr[0])
		fmt.Scan(&n, &r)
	}
}

C++: using namespace std;

int main(){
    int n,r,p,c,a[50];

    while(cin >> n >> r,n||r){
        for(int i=0;i<n;i++){
            a[i] = n-i;
        }

        for(int i=0;i<r;i++){
            cin >> p >> c;
            rotate(a,a+p-1,a+p+c-1);
        }
    cout << a[0] << endl;
    }

    return 0;

}

C++: #include<bits/stdc++.h>
#include<vector>
using namespace std;
int main(void){

  while(true){
    int n, r;   cin >> n >> r;
    if(n == 0 && r == 0)    break;

    vector<int> yamahuda(n);
    for(int i = 0 ; i < n ; i++)  yamahuda[i] = i + 1;

    for(int i = 0 ; i < r ; i++){

      int p, c;   cin >> p >> c;
      vector<int> keep(c);
      for(int i = 0 ; i < c ; i++)
        keep[i] = yamahuda[n - p - c  + 1 + i];

      for(int i = 0 ; i < p - 1 ; i++)
        yamahuda[n - p - c + 1 + i] = yamahuda[n - p + 1 + i];

      for(int i = 0 ; i < c ; i++)
        yamahuda[n - c + i] = keep[i];

    }

    cout << yamahuda[n - 1] << endl;

  }

  return 0;
}

C++: #include <iostream>
#include <vector>

using namespace std;

#define P(a,n) for (int k = 0; k < n; k++) printf("%d ", a[k]);

int main(){
    int n, r;
    while (cin >> n >> r && n && r) {
        vector<int> pct(n);
        for (int i = 0; i < n; i++) { pct[i] = n-i; }
        for (int i = 0; i < r; i++) {
            int p, c; cin >> p >> c;
            vector<int> tmp1(c);
            vector<int> tmp2(p-1);
            for (int j = 0; j < c; j++) tmp1[j] = pct[p+j-1];
            for (int j = 0; j < p-1; j++) tmp2[j] = pct[j];
            for (int j = 0; j < p-1; j++) pct[c+j] = tmp2[j];
            for (int j = 0; j < c; j++) pct[j] = tmp1[j];
        }
        cout << pct[0] << endl;
    }
    return 0;
}

C++: #include <iostream>
#include <algorithm>
using namespace std;

int n, r, p, c;
int h[51];

int main() {
  while(cin>>n>>r,n|r) {
    for(int i=1;i<=n;++i) {
      h[i] = n-i+1;
    }
    for(int i=0;i<r;++i) {
      cin>>p>>c;
      rotate(h+1, h+p, h+p+c);
    }
    cout << h[1] <<endl;
  }
  return 0;
}

C++: #include<iostream>
#include<vector>

using namespace std;

int main(){
  int n,r,p,c;
  while(1){
    cin >> n >> r;
    if (n==0) return 0;
    vector<int> ca(n,0);
    for(int i=0;i<n;i++){
      ca[i]=n-i;
    }
    for(int i=0;i<r;i++){
      cin>>p>>c;
      vector<int>sw(c,0);
      for(int j=0;j<c;j++){
        sw[j]=ca[p-1];
        ca.erase(ca.begin()+p-1);
      }
      for(int j=c-1;j>=0;j--){
        ca.insert(ca.begin(),sw[j]);
      }
    }
    cout << ca[0]<<endl;
  }
}

C++: #include <bits/stdc++.h>
using namespace std;

int main(void){
  while(1){
    vector<int> f;
    int n, r, p, c;
    cin >> n >> r;
    if(n == 0 && r == 0) return 0;
    for(int i=n; i >= 0; i--){
      f.push_back(i);
    }


    for(int i=0; i < r; i++){
      cin >> p >> c;
      vector<int> t;
      for(int j=p-1; j < p+c; j++){
        t.push_back(f.at(j));
      }
      for(int j=p-1; j > 0; j--){
        f.at(j+c) = f.at(j);
      }
      for(int j=0; j < c; j++){
        f.at(j) = t.at(j);
      }


    }
    cout << f.front() << endl;
  }
}

C++: #include <cstdlib>
#include <iostream>
#include <vector>
using namespace std;

int main() {
	cin.tie(0);
	ios::sync_with_stdio(false);

	for(int n, r; cin >> n >> r, n;) {
		vector<int> cards;
		cards.reserve(n);
		for(int i = n; i > 0; --i)
			cards.push_back(i);

		for(int i = 0; i < r; ++i) {
			int p, c;
			cin >> p >> c;

			vector<int> tmp(cards);
			for(int i = 0; i < p - 1; ++i)
				tmp[i + c] = cards[i];

			for(int i = 0; i < c; ++i)
				tmp[i] = cards[i + p - 1];

			cards.swap(tmp);
		}

		cout << cards[0] << endl;
	}

	return EXIT_SUCCESS;
}

C++: #include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
	int n, r, p, c, i, ans;
	
	while (cin >> n  && cin >> r) {
		int Deck[51];

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

		for (i = 0; i < n; i++) {
			Deck[i] = n-i;
		}

		for (i = 0; i < r; i++) {
			cin >> p; cin >> c;

			rotate(Deck, Deck + p - 1, Deck + p + c - 1);
		}

		cout << Deck[0] << endl;
	}
}

C++: /*Function Template*/
#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
typedef pair<ll,ll> pint;
const int MAX = 510000;
const int MOD = 1000000007;
#define rep(i, n) for(ll i = 0; i < (n); i++)
#define Rep(i, n) for(ll i = 1; i < (n); i++)
#define ALL(a)  (a).begin(),(a).end()
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
ll fac[MAX], finv[MAX], inv[MAX];


template<class T> inline bool chmin(T& a, T b) {
    if (a > b) {
        a = b;
        return true;
    }
    return false;
}
template<class T> inline bool chmax(T& a, T b) {
    if (a < b) {
        a = b;
        return true;
    }
    return false;
}
// テーブルを作る前処理
void COMinit() {
    fac[0] = fac[1] = 1;
    finv[0] = finv[1] = 1;
    inv[1] = 1;
    for (ll i = 2; i < MAX; i++){
        fac[i] = fac[i - 1] * i % MOD;
        inv[i] = MOD - inv[MOD%i] * (MOD / i) % MOD;
        finv[i] = finv[i - 1] * inv[i] % MOD;
    }

}
ll Len(ll n) {
  ll s=0;
  while(n!=0) s++, n/=10;
  return s;
}


ll Sint(ll n) {
  ll m=0,s=0,a=n;
  while(a!=0) s++, a/=10;
  for(ll i=s-1;i>=0;i--) m+=n/((ll)pow(10,i))-(n/((ll)pow(10,i+1)))*10;
  return m;
}


ll Svec(vector<ll> v){
  ll n=0;
  for(ll i=0;i<v.size();i++) n+=v[i];
  return n;
}


ll GCD(ll a,ll b) {
  return b ? GCD(b,a%b) : a;
}


ll LCM(ll a,ll b){
  return a/GCD(a,b)*b;
}


ll Factorial(ll n){
  ll m=1;
  while(n>=1) m*=n,n--;
  return m;
}

void runlength(string s,vector<pair<char,ll>> &p){
  ll x=1;
  if(s.size()==1){
    p.push_back(pair<char,ll>(s[0],1));
  }
  for(ll i=0;i<s.size()-1;i++){
    if(s[i]==s[i+1]){
      x++;
      if(i==s.size()-2){
        p.push_back(pair<char,ll>(s[i],x));
      }
    }else{
      p.push_back(pair<char,ll>(s[i],x));
      x=1;
      if(i==s.size()-2){
        p.push_back(pair<char,ll>(s[s.size()-1],x));
      }
    }
  }
}




ll COM(ll n,ll k){
    if (n < k) return 0;
    if (n < 0 || k < 0) return 0;
    return fac[n] * (finv[k] * finv[n - k] % MOD) % MOD;
}

const int MAX_N=100010;
vector<bool> sieve_of_eratosthenes(){
  vector<bool> isPrime(MAX_N+1,true);
  for(int i=2;i<=MAX_N;i++){
    if(isPrime[i]){
      for(int j=2*i;j<=MAX_N;j+=i){
        isPrime[j]=false;
      }
    }
  }
  return isPrime;
}

vector<pint> prime_factorize(ll n){
  vector<pint> ans;
  for(ll p=2;p<=sqrt(n);p++){
    if(n%p!=0) continue;
    ll cnt=0;
    while(n%p==0){
      n/=p;
      cnt++;
    }
    ans.push_back(make_pair(p,cnt));
  }
  if(n!=1) ans.push_back(make_pair(n,1));
  return ans;
}

/*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/
int main() {
  IOS;
  while(true){
    ll n,r;cin>>n>>r;
    if(n==0 && r==0) break;
    vector<vector<ll>> v(r+1);
    rep(i,n) v[0].push_back(n-i);
    rep(i,r){
      ll p,c;cin>>p>>c;p--;
      rep(j,c){
        v[i+1].push_back(v[i][p+j]);
      }
      rep(j,n){
        if(p<=j && j<p+c) continue;
        v[i+1].push_back(v[i][j]);
      }
    }
    cout<<v[r][0]<<endl;
  }
}