#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using ll = long long; #define fst first #define snd second /* clang-format off */ template struct _vec { using type = vector::type>; }; template struct _vec { using type = T; }; template using vec = typename _vec::type; template vector make_v(size_t size, const T& init) { return vector(size, init); } template auto make_v(size_t size, Ts... rest) { return vector(size, make_v(rest...)); } template inline void chmin(T &a, const T& b) { if (b < a) a = b; } template inline void chmax(T &a, const T& b) { if (b > a) a = b; } /* clang-format on */ int main() { #ifdef DEBUG ifstream ifs("in.txt"); cin.rdbuf(ifs.rdbuf()); #endif int N, K; while (cin >> N >> K) { vector A(N); for (int &x : A) cin >> x; sort(A.rbegin(), A.rend()); int res = 0; auto dfs = [&](auto dfs, int i, int value, int unused) { if (i >= N) { if (value < unused) chmax(res, value); return; } dfs(dfs, i + 1, value, A[i]); dfs(dfs, i + 1, value % A[i], unused); }; dfs(dfs, 0, K, 1e9 + 10); cout << res << endl; } return 0; }