#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6 + 1000;
int a[maxn], num[2 * maxn], dp[maxn];
int tedad(int l, int r) { return num[r] - num[l - 1]; }
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int n, k;
  cin >> n >> k;
  for (int i = 0; i < n; ++i) {
    cin >> a[i];
    num[a[i]]++;
  }
  for (int i = 1; i < maxn; ++i) {
    num[i] += num[i - 1];
  }
  dp[1] = n;
  for (int i = 2; i < maxn; ++i) {
    for (int j = i; j < maxn; j += i) {
      dp[i] += tedad(j, min(1000000, min(j + k, j + i - 1)));
    }
  }
  for (int i = maxn - 1; i >= 1; --i) {
    if (dp[i] == n) {
      cout << i << endl;
      return 0;
    }
  }
}
