#include <iostream>
#include <vector>
#include <algorithm>
#include <cstring>
#include <queue>
#include <ctime>
#define pb push_back
#define mp make_pair
#define ll long long
#define MOD 1e9 + 7
#define ull unsigned long long
#define iloop(a,b) for(ll i = a; i < b; ++i)
#define jloop(a,b) for(ll j = a; j < b; ++j)
using namespace std;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef pair<int,int> ii;
#define sz(a) int((a).size())
#define pb push_back
#define all(c) (c).begin(),(c).end()
#define tr(c,i) for(typeof((c).begin() i = (c).begin(); i != (c).end(); i++)
#define present(c,x) ((c).find(x) != (c).end())
#define cpresent(c,x) (find(all(c),x) != (c).end())
#define p(a) cout << a << "\n";
void solve()
{
int n;
while(scanf("%d",&n) != EOF)
{
ll arr[n];
iloop(0,n)
{
scanf("%lld",&arr[i]);
}
vector<vector<pair<ll, ll> > > dp(n,vector<pair<ll, ll> >(n));//second -- smoke, first -- sum
for(int i = n-1; i >= 0; --i)
{
for(int j = i, k = n-1; j >= 0 && k >= 0; --j, --k)
{
if(j == k)
dp[j][k] = mp(arr[j],0);
else
{
if(dp[j+1][k].first*arr[j] + dp[j+1][k].second <= dp[j][k-1].first*arr[k] + dp[j][k-1].second)
{
dp[j][k].first = (dp[j+1][k].first + arr[j])%100;
dp[j][k].second = dp[j+1][k].first*arr[j] + dp[j+1][k].second;
}
else
{
dp[j][k].first = (dp[j][k-1].first + arr[k])%100;
dp[j][k].second = dp[j][k-1].first*arr[k] + dp[j][k-1].second;
}
}
}
}
/*iloop(0,n)
{
jloop(0,n)
{
printf("%lld,%lld ", dp[i][j].first, dp[i][j].second);
}
printf("\n");
}*/
printf("%lld\n", dp[0][n-1].second);
}
}
int main()
{
bool testing = false;
/*std::ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);*/
if(testing)
{
freopen("test.txt","rt",stdin);
int start = clock();
solve();
int end = clock();
cout << "time: " << (end - start)/(double)(CLOCKS_PER_SEC)*1000 << " milliseconds\n";
}
else
{
solve();
}
}