#include <bits/stdc++.h>
using namespace std;
#define ri register int
#define M 305
#define mod 1000003
template <class G> void read(G &x)
{
x=0;int f=0;char ch=getchar();
while(ch<'0'||ch>'9'){f|=ch=='-';ch=getchar();}
while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}
x=f?-x:x;
return ;
}
int n,m;
long long val[M];
long long arr[M];
long long dp[M][M];
long long inv[M];
long long get(long long a,int b)
{
long long ans=1;
while(b)
{
if(b&1) ans=ans*a%mod;
a=a*a%mod;
b>>=1;
}
return ans;
}
long long ck(int i,int k,int j)
{
//cout<<abs(arr[k]/arr[i-1]-arr[j]/arr[k])*abs(arr[k]/arr[i-1]-arr[j]/arr[k])<<endl;
return abs(arr[k]*inv[i-1]%mod-arr[j]*inv[k]%mod)*abs(arr[k]*inv[i-1]%mod-arr[j]*inv[k]%mod);
}
int main(){
read(n);arr[0]=1;inv[0]=1;
for(ri i=1;i<=n;i++)
{
read(val[i]);
arr[i]=arr[i-1]*val[i]%mod;
inv[i]=get(arr[i],mod-2);
}
for(ri i=1;i<=n;i++) dp[i][i]=0;
for(ri t=1;t<n;t++)
{
for(ri i=1;i+t<=n;i++)
{
int j=i+t;
for(ri k=i;k<j;k++)
{
dp[i][j]=max(dp[i][j],dp[i][k]+dp[k+1][j]+ck(i,k,j));
}
}
}
printf("%lld",dp[1][n]);
}