#include <bits/stdc++.h>
using namespace std;
using int64 = long long;
const int N_MAX = 6e6;
const int64 myINF = 3e9;
struct T{
int d;
int l;
}v[N_MAX+1];
int vdif[N_MAX+1];
bool cmp (T first, T second) {
if(first.d < second.d) return true;
return false;
if(first.l<second.l) return true;
return false;
}
ifstream fin ("orase.in");
ofstream fout ("orase.out");
int main()
{
int n,m,dd,ll;
fin >> m >> n;;
for (int i = 1; i <= n; i ++){
fin >> dd;
v[i].d=dd;
fin >> ll;
v[i].l=ll;
}
sort ( 1+ v, 1+v+n, cmp);
for(int i=1;i<=n;i++){
if(i==1)
vdif[1]=v[1].d-v[1].l;
vdif[i]=min(vdif[i-1],v[i].d-v[i].l);
}
int64 sum = 0, min_sum = 0; int j = 1;
int64 answer = -myINF; int left, right;
for (int i = 1; i <= n; i ++) {
int64 candidate = v[i].d + v[i].l - vdif[i];
if (candidate > answer) {
answer = candidate;
left = j;
right = i;
}
else if (candidate == answer && j < left) {
left = j;
right = i;
}
}
fout << answer ;
return 0;
}