#include <bits/stdc++.h>
using namespace std;
int n, x, len, a[100010], ans;
set<int> s;
set<int>::iterator asd;
int main()
{/*a[n-1] 是最大的a[n-2] 可能是次大的a[n]%a[n-1]<a[n-1] 不可能是最大的,可能是次大的a[n-1]%a[n-2]<a[n-2] 不可能是次大的a[n-2]%a[n-3]<a[n-3] 不可能是次大的所以次大值在a[n-2]和a[n]%a[n-1]中取得,为两者中的最大值*/scanf("%d", &n);//set会自动从小到大排序for(int i=1; i<=n; ++i){scanf("%d", &x);s.insert(x);}n=int(s.size()); //获取不重复的数字个数asd=s.begin();//将数字存在a数组中for(int i=1; i<=n; ++i){a[i]=*asd; //asd 是迭代器asd++;}//原数只有 1 个if(n==1){printf("-1");}else if(n==2){ //原数有两个, 则余数为 a[n-1] 和 a[n]%a[n-1]<a[n-1]printf("%d", a[n]%a[n-1]);}else{ //原数至少 3 个ans=max(a[n]%a[n-1], a[n-2]);printf("%d", ans);}return 0;
}