## 题目描述：

Maximum Value

time limit per test

1 second

memory limit per test

256 megabytes

input

standard input

output

standard output

You are given a sequence a consisting of n integers. Find the maximum possible value of (integer remainder of *a**i* divided by *a**j), where 1 ≤ i, j ≤ n* and ai ≥ aj.

Input

The first line contains integer n — the length of the sequence (1 ≤ n ≤ 2·105).

The second line contains n space-separated integers *a**i* (1 ≤ *a**i* ≤ 106).

Output

Print the answer to the problem.

Examples

Input

Copy

``33 4 5``

Output

Copy

``2``

## 代码：

``````#include <iostream>
#include <cstdio>
#include <algorithm>
#define max_n 200005
using namespace std;
int n;
int a[max_n];
int tot = 0;
int cnt[1000005];
int maxm = 0;
{
x=0;int f=0;char ch = getchar();
while(ch<'0'||ch>'9') {if(ch=='-')f=1;ch=getchar();}
while('0'<=ch&&ch<='9') {x=10*x+ch-'0';ch=getchar();}
x=f?-x:x;
}
#pragma optimize(2)
int main()
{
for(int i = 0;i<n;i++)
{
int num;
if(cnt[num]==0)
{
a[tot++] = num;
cnt[num] = 1;
}
}
sort(a,a+tot);
for(int i = 0;i<tot;i++)
{
for(int j = a[i];j<=2*a[tot-1];j+=a[i])
{
int pos = lower_bound(a,a+tot,j+a[i])-a-1;
if(pos==-1)pos++;
//cout << "pos " << pos << endl;
//cout << a[pos] << "%" << a[i] << endl;
maxm = max(maxm,a[pos]%a[i]);
}
}
cout << maxm << endl;
return 0;
}
``````