using System;
using System.Collections.Generic;
using System.Numerics;
using System.Linq;
using static System.Math;

class MainClass
{

    public static void Main(string[] args)
    {
        var N = LnInt();
        var As = new List<int[]>();
        var _ = LnInts();
        var counter0 = 0;
        foreach (var i in _)
        {
            As.Add(new[] { counter0, i });
            counter0++;
        }
        var en = As.OrderByDescending(x => x[1]);
        foreach (var i in en) Console.Write(i[1]);
        As = en.ToList();

        var newPlaces = Enumerable.Repeat(-1, N).ToArray();
        for (int i = 0; i < N; i++)
        {
            var min = 0;
            var max = 0;
            var counter = 0;
            foreach (var l in newPlaces) { if (l == -1) { min = counter; counter = N - 1; break; } else { counter++; } }
            foreach (var m in newPlaces.Reverse()) { if (m == -1) { max = counter; break; } else { counter--; } }
            var newIndex = As[i][0] - min > max - As[i][0] ? min : max;
            newPlaces[newIndex] = Abs(As[i][0] - newIndex) * As[i][1];
        }
        var result = 0;
        foreach (var np in newPlaces) { result += np; }
        Console.WriteLine(result);
    }



    public static int[] LnInts()
    {
        var vs = Console.ReadLine().Trim().Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
        var ins = new int[vs.Length];
        for (int i = 0; i < vs.Length; i++) ins[i] = int.Parse(vs[i]);
        return ins;
    }

    public static int LnInt()
    {
        var vs = Console.ReadLine().Trim();
        return int.Parse(vs);
    }

    public static string[] LnStrs()
    {
        var vs = Console.ReadLine().Trim().Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
        return vs;
    }
    public static string LnStr()
    {
        var vs = Console.ReadLine().Trim();
        return vs;
    }
}