Points: 1800 (p) Time limit: 1.0s Memory limit: 256M Input: stdin Output: stdout

Bạn có một dãy số gồm \(n\) số nguyên dương \(a_1,a_2,a_3,\ldots,a_n\) và số nguyên dương \(k\).

Bạn sẽ làm thao tác này tối đa \(k\) lần:

  • Chọn \(i \ \in [1;n]\) và cộng \(1\) vào \(a_i\). \(( * )\)

Bạn cần làm theo thao tác \(( * )\) sao cho \(gcd(a_1,a_2,\ldots,a_n)\) đạt giá trị lớn nhất có thể. Lưu ý rằng bạn có thể làm thao tác đó ít hơn hoặc bằng \(k\) lần (bạn có thể không cần làm theo và tính luôn).

Biết rằng \(gcd(a,b)\) là ước chung lớn nhất của \(a\)\(b\).

Yêu Cầu: Bạn hãy lập chương trình giải quyết bài toán trên.

Input

  • Dòng đầu tiên chứa số nguyên dương \(n,k\) \((2\ \le n\ \le3\times{10}^5, 1\ \le k\ \le\ {10}^{18})\).
  • Dòng còn lại chứa \(n\) số nguyên dương \(a_1,a_2,\ldots,a_n\) \((1\ \le a_i\ \le\ 3\times{10}^5)\), mỗi số cách nhau một khoảng trắng

Output

  • In ra kết quả bài toán sau khi thực hiện yêu cầu đề bài.

Scoring

  • Subtask \(1\) (\(30\%\) số điểm): Có \(2 \le n \le 5\)\(1 \le k \le 2 \times n\).
  • Subtask \(2\) (\(70\%\) số điểm): Không có ràng buộc gì thêm.

Example

Test 1

Input
3 6
3 4 9
Output
5
Note

Ta sẽ làm thao tác \(( * )\) với \(i=1\) hai lần, \(i=2\) một lần, \(i=3\) một lần.
Lúc này ta có \(a_1=5,\ a_2=5,\ a_3=10\). \(gcd(a_1=5,\ a_2=5,\ a_3=10) = 5\) đạt giá trị lớn nhất có thể.

Test 2

Input
3 4
30 10 20
Output
10
Note

Ta không cần làm thao tác, tính luôn \(gcd(a_1=30,\ a_2=10,\ a_3=20) = 10\). Đơn giản vì nó đã đạt giá trị lớn nhất có thể!


Comments

There are no comments at the moment.