#ifdef LOCAL #define _GLIBCXX_DEBUG #endif #include #define rep(i,n) for(int i=0;i=0;--i) #define reps(i,a,b) for(int i=a;i; template inline bool chmax(T &a,T b){if(a inline bool chmin(T &a,T b){if(b vector make_vec(size_t a){return vector(a);} template auto make_vec(size_t a,Ts... ts){return vector(ts...))>(a,make_vec(ts...));} template typename enable_if::value>::type fill_v(U &u,const V... v){u=U(v...);} template typename enable_if::value>::type fill_v(U &u,const V... v){for(auto &e:u)fill_v(e,v...);} vector a; int dfs(int x) { if (x < a[0]) return x; int idx = upper_bound(all(a), x) - a.begin(); int res = 0; rep(i, idx) chmax(res, dfs(x%a[i])); return res; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n, k; cin >> n >> k; a.resize(n); rep(i, n) cin >> a[i]; sort(all(a)); int mx = 0; rep(i, n) chmax(mx, dfs(k%a[i])); cout << mx << endl; }