#include<cstdio>
#define min(x,y) (x<y?x:y)
using namespace std;
int main(){
	int n,k;
	freopen(".4.in","r",stdin);
	freopen(".4.out","w",stdout);
	scanf("%d%d",&n,&k);
	int a[300001],g=0x7FFFFFFF;
	for (int i=0;i<n;i++){
		scanf("%d",&a[i]);
		g=min(g,a[i]);
	}
	int t,b;
	while (true){
		t=g;
		for (int i=0;i<n;i++){
			b=a[i]/g;
			if (!(b>0 && b*g>=a[i]-k))g=a[i]/(b+1);
		}
		if (t==g)break;
	}
	printf("%d\n",g);
	return 0;
}
