process.stdin.resume();
process.stdin.setEncoding('utf8');

var lines = []
var reader = require('readline').createInterface({
  input: process.stdin,
  output: process.stdout
});

reader.on('line', (line) => {
  lines.push(line);
});

reader.on('close', () => {
 var x = Number(lines[0].split(' ')[0]);
 var n = Number(lines[0].split(' ')[1]);
 var ans = '';
 var a = [];

 for(i=-100; i<=100; i++){
   a.push(i);
 }

 function diffArray(arr1, arr2) {
  var newArr = [];
  for(var a = 0 ; a < arr1.length; a++){
    if(arr2.indexOf(arr1[a]) === -1 ){
      newArr.push(arr1[a]);
    }    
  }
  for(var b = 0; b < arr2.length; b++){
    if(arr1.indexOf(arr2[b]) === -1 ){
       newArr.push(arr2[b]);
       }
  }
  return newArr;
}

function getClosestNum(num, ar){
   //近似値を保持しておく変数
   var closest;
   //配列かどうか、要素があるか判定
   if(Object.prototype.toString.call(ar) ==='[object Array]' && ar.length>0){
     //まず配列の最初の要素を近似値として保持する
     closest = ar[0];
     //配列の要素を順次比較していく
     for(var i=0;i<ar.length;i++){ 
        //この時点での近似値と、指定値の差異を絶対値で保持しておく
        var closestDiff = Math.abs(num - closest);
        //読み込んだ値と比較し、差異を絶対値で保持しておく
        var currentDiff = Math.abs(num - ar[i]);
        //新しく比較した値のほうが近かったら、近似値として保持しておく
        if(currentDiff < closestDiff){
            closest = ar[i];
        }
      }
     //ループが終わったら、近似値を返す
      return closest;
    }
 //配列じゃなかったらfalse
 return false;
}

 if(n === 0){
   ans = x;
 }else{
   var p = lines[1].split(' ');
   p = p.map(function(str) { return Number(str)});
   p = p.map(function(str) { return Math.abs(str)});

   if(p.indexOf(x) == -1){
     ans = x;
   }else{
     var saar = diffArray(a,p);
     // console.log(saar);
     ans = getClosestNum(x,saar);
   }
}
  
console.log(ans);
 
});