#include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; const int MAX_N = 20; int dp[1 << MAX_N]; int main() { int N, K; cin >> N >> K; memset(dp, -1, sizeof(dp)); dp[0] = K; vector A(N); for (int i = 0; i < N; ++i) { cin >> A[i]; } for (int i = 0; i < N; ++i) { for (int mask = 0; mask < (1 << N); ++mask) { if (__builtin_popcount(mask) != i) continue; for (int j = 0; j < N; ++j) { if (mask >> j & 1) continue; int nmask = mask | (1 << j); dp[nmask] = max(dp[nmask], dp[mask] % A[j]); } } } cout << dp[(1 << N) - 1] << endl; return 0; }