#include <algorithm>
#include <bitset>
#include <cctype>
#include <cerrno>
#include <clocale>
#include <cmath>
#include <complex>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <deque>
#include <exception>
#include <fstream>
#include <functional>
#include <limits>
#include <list>
#include <map>
#include <iomanip>
#include <ios>
#include <iosfwd>
#include <iostream>
#include <istream>
#include <ostream>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <stdexcept>
#include <streambuf>
#include <string>
#include <utility>
#include <vector>
#include <cwchar>
#include <cwctype>
using namespace std;
int a[100001],n,vis[200001],vis1[200001];
int main(){
cin>>n;
for(int i=1;i<=n;++i){
cin>>a[i];
}
int y=1;
for(int i=1;i<=n-1;++i){
for(int j=i+1;j<=n;++j){
vis[y]=max(a[i],a[j])%min(a[i],a[j]);
y++;
}
}
for(int i=1;i<=n-1;++i){
for(int j=i+1;j<=n;++j){
if(vis[i]==vis[j]){
vis[i]=-1;
}
}
}
int maxn=-1;
for(int i=1;i<=n;++i){
if(vis[i]==-1) continue;
else
if(vis[i]>maxn) maxn=vis[i];
}
int o=1;
for(int i=1;i<=n;++i){
if(vis[i]==maxn) vis[i]=-1;
if(vis[i]==-1) continue;
else {
vis1[o]=vis[i];
o++;
}
}
if(o<=2) {
cout<<"-1";
return 0;
}
o--;
int maxnn=-1;
for(int i=1;i<=o;++i){
if(vis1[i]>maxn) maxnn=vis1[i];
}
cout<<maxnn;
return 0;
}
真的写吐了,求大佬查错!