#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define rep(i, n) for (int i = 0; i < (int)(n); ++i) //#define cerr if(false) cerr #ifdef DEBUG #define show(...) cerr << #__VA_ARGS__ << " = ", debug(__VA_ARGS__); #else #define show(...) 42 #endif using namespace std; using ll = long long; using pii = pair; template ostream& operator<<(ostream& os, pair a) { os << '(' << a.first << ',' << a.second << ')'; return os; } template ostream& operator<<(ostream& os, vector v) { for (auto x : v) os << x << ' '; return os; } void debug() { cerr << '\n'; } template void debug(H a, T... b) { cerr << a; if (sizeof...(b)) cerr << ", "; debug(b...); } int main(){ int n, k; cin >> n >> k; vectora(n); rep(i,n)cin >> a[i]; sort(a.rbegin(), a.rend()); int ans = 0; rep(i,1<<(n-1)){ int t = k; rep(j,n-1){ if(i >> j & 1){ t %= a[j]; } } ans = max(ans, t % a[n-1]); } cout << ans << endl; }