loop do
  n,k = gets.split(" ").map(&:to_i)
  break if n == 0 && k == 0
  cards = Array.new(n+1)
  k.times do
    i = gets.to_i
    cards[i] = i
  end
  cards.compact!

  seq = 1
  max = 0
  # 白が含まれていない場合
  if cards[0] != 0
    1.upto(k-1) do |i|
      if cards[i] == cards[i-1] + 1
        seq += 1
      else
        max = seq if max < seq
        seq = 1
      end
    end
    # 最後が連続していた場合の処理
    max = seq if max < seq
  # 白が含まれている場合
  else
    seq_w = 1 # 白紙を使った場合の長さ
    use_w = false
    2.upto(k-1) do |i|
      if cards[i] == cards[i-1] + 1
        seq   += 1
        seq_w += 1
      elsif cards[i] == cards[i-1] + 2
        use_w = true
        max = seq if max < seq
        max = seq_w if max < seq_w
        seq_w = seq + 2
        seq = 1
      else
        max = seq if max < seq
        max = seq_w if max < seq_w
        seq = 1
        seq_w = 1
      end
    end
    # 最後が連続していた場合の処理
    max = seq if max < seq
    max = seq_w if max < seq_w
    max += 1 unless use_w
  end

  puts max
end