#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

int n,m;

int main()
{
    cin>>n>>m;
    vector<int> v(m+2);
    v[0] = 0;
    v[m+1] = n+1;
    for(int i=1;i<=m;i++){
        cin>>v[i];
    }  
    sort(v.begin(),v.end());
    int mm = n;
    for(int i=1;i<m+2;i++){
        int d = v[i]-v[i-1];
        if(d>1){
            mm = min(d-1,mm);
        }
    }
    int res = 0;
    for(int i=1;i<m+2;i++){
        int d = v[i]-v[i-1];
        if(d>1){
            res += (d-1+mm-1)/mm;
        }
    }
    cout<<res<<endl;
    return 0;
}

#include <bits/stdc++.h>
#define arr(i,n) for(ll i=0;i<n;i++)
#define ARR(i,n) for(ll i=n-1;i>=0;i--)
#define f(i,a,b)  for(ll i=a;i<b;i++)
#define F(i,a,b)  for(ll i=b-1;i>=a;i--)
#define float double
#define PI 3.14159265358979323846
#define pb push_back
#define mp make_pair
#define vi vector<ll>
#define ceil(a,b) ceil(a*1.0/b)
#define vpii vector< pair<ll,ll> >
#define debug(x) cout<<(#x)<<" is "<<(x)<<endl
#define gcd(a,b) __gcd(a,b)
#define lcm(a,b) (a*(b/gcd(a,b)))
#define all(v) v.begin(),v.end()
#define inputarr(a,n) for(ll i=0;i<n;++i) cin>>a[i]
#define integer_to_string to_string 
#define IOS  ios::sync_with_stdio(0); cin.tie(0); cout.tie(0)
typedef long long ll;
using namespace std;
const ll  mod = 1000000000 + 7;
int main()
{
    IOS;
    //code start here
    ll n;
    cin>>n;
    vi v;
    ll x,y;
    ll sum=0,sum1=0,res=0;
    arr(i,n) 
    {
        cin>>x>>y;
        sum+=x;
        v.pb(2*x+y);
    }
    sort(all(v));
    ARR(i,v.size())
    {
        sum1+=v[i];
        res++;
        if(sum1>sum) break;
    }
    cout<<res;
    return 0;
}

/*freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);*/

/*For graph
    vector< pair<ll,ll> >graph={{0,1},{1,0},{0,-1},{-1,0}}; //4 direction
    vector< pair<ll,ll> >graph={{0,1},{1,0},{0,-1},{-1,0}
                                {1,1}{1,-1}{-1,1}{-1,-1}}; //8 direction

    int check(int i,int j,int n,int m) //for checking valid or not
    {
     return (i>=0&&i<n&&j>=0&&j<m);
    }
*/