class Integer
  def divisor_list
    require 'prime'

    return [] if self <= 0
    return [1] if self == 1

    prime_division.map.with_index { |(base, k), i|
      s = i.zero? ? 0 : 1
      (s..k).map { |n| base ** n }
    }.inject { |res, e| res + res.flat_map { |t| e.map { |v| t * v } } }.sort
  end
end

N, K = gets.split.map(&:to_i)
A = gets.split.map(&:to_i)

def f(x)
  upDP = Array.new(N) { Hash.new(false) }
  downDP = Array.new(N) { Hash.new(false) }

  A.each_with_index do |a, i|
    down = a % x
    up = x - down

    limit = 2 * K

    if i.zero?
      upDP[0][up] = up
      downDP[0][-down] = down
    else
      up_keys = upDP[i - 1].keys

      up_keys.each do |k|
        cnt = upDP[i - 1][k]

        upDP[i][k + up] = cnt + up if cnt + up <= limit
        downDP[i][k - down] = cnt + down if cnt + down <= limit
      end

      down_keys = downDP[i - 1].keys

      down_keys.each do |k|
        cnt = downDP[i - 1][k]

        upDP[i][k + up] = cnt + up if cnt + up <= limit
        downDP[i][k - down] = cnt + down if cnt + down <= limit
      end
    end

    # p [x, downDP[i], upDP[i]]
  end

  upDP[N - 1][0] || downDP[N - 1][0]
end

sum = A.inject(:+)
ans = 1

sum.divisor_list.each do |x|
  ans = x if f(x) && ans < x
end

puts ans
