Problem:
Score : 300 points

Problem Statement

Given are an integer X and an integer sequence of length N: p_1, \ldots, p_N.

Among the integers not contained in the sequence p_1, \ldots, p_N (not necessarily positive), find the integer nearest to X, that is, find the integer whose absolute difference with X is the minimum. If there are multiple such integers, report the smallest such integer.

Constraints

1 \leq X \leq 100

0 \leq N \leq 100

1 \leq p_i \leq 100

p_1, \ldots, p_N are all distinct.

All values in input are integers.

Input

Input is given from Standard Input in the following format:

X N
p_1 ... p_N

Output

Print the answer.

Sample Input 1

6 5
4 7 10 6 5

Sample Output 1

8

Among the integers not contained in the sequence 4, 7, 10, 6, 5, the one nearest to 6 is 8.

Sample Input 2

10 5
4 7 10 6 5

Sample Output 2

9

Among the integers not contained in the sequence 4, 7, 10, 6, 5, the ones nearest to 10 are 9 and 11. We should print the smaller one, 9.

Sample Input 3

100 0

Sample Output 3

100

When N = 0, the second line in the input will be empty. Also, as seen here, X itself can be the answer.

Solution in C++ (GCC 9.2.1) (judge verdict: Accepted)

#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
#define ll long long
#define in insert
#define pb emplace_back
#define vi vector<int>
#define vll vector<ll>
#define vvi vector<vi>
#define Rep(i,a,b) for(int i=a;i<=b;i++)
#define Rev(i,a,b) for(ll i=a;i>=b;i--)
#define FOR(m) Rep(i,1,m)
#define For(m) Rep(i,0,m-1)
#define Rbl(x,a) for(auto &x : a)
#define FIO ios::sync_with_stdio(0);   cin.tie(0);
#define F first
#define S second
#define pii pair<int,int>
#define pll pair<ll,ll>
#define mp make_pair
#define vpii vector<pii>
#define vpll vector<pll>
#define all(x) (x).begin(),(x).end()
#define sz(x) (int) (x).size()
const ll INF = 0x3f3f3f3f3f3f3f3fll;
#define mod 1000000007


int main()
{
FIO

    ll x, n;   cin >> x >> n;
    if(n == 0)
    {
        cout << x;
        return 0;
    }
    ll a[n];
    For(n) cin >> a[i];
    sort(a,a+n);
    int high = upper_bound(a,a+n,x)-a;
    // cout << high << endl;
    if(high == 0)
        cout << x;
    else
    {
        int low = high-1;
        if(a[low] == x)
        {
            low--;
            int x1 = x-1, x2 = x+1;
            // cout << low << " " << high << endl;
            // cout << x1 << " " << x2 << endl;
            while(1)
            {
                if(low >= 0)
                {
                    if(a[low--] != x1)
                    {
                        cout << x1 ;
                        return 0;
                    }
                    else
                        x1--;
                }
                else
                {
                    cout << x1;
                    return 0;
                }
                if(high < n)
                {
                    if(a[high++] != x2)
                    {
                        cout << x2 ;
                        return 0;
                    }
                    else
                        x2++;
                }
                else
                {
                    cout << x2;
                    return 0;
                }
            }
        }
        else
            cout << x << endl;
    }
    
    return 0;
}