use std::cmp;
use std::io::{stdin, Read};

macro_rules! parse {
    ($it: ident ) => {};
    ($it: ident, ) => {};
    ($it: ident, $var:ident : $tr:tt $($r:tt)*) => {
        let $var = parse_val!($it, $tr);
        parse!($it $($r)*);
    };
    ($it: ident, mut $var:ident : $tr:tt $($r:tt)*) => {
        let mut $var = parse_val!($it, $tr);
        parse!($it $($r)*);
    };
}

macro_rules! parse_val {
    ($it: ident, [$tr:tt; $len:expr]) => {
        (0..$len).map(|_| parse_val!($it, $tr)).collect::<Vec<_>>();
    };
    ($it: ident, $tr: ty) => {
        $it.next().unwrap().parse::<$tr>().unwrap()
    };
}

fn solve(s: &str) {
    let mut it = s.split_whitespace();
    parse!(it, n: usize, a: [usize; n]);
    let mut target = vec![None; n];
    let mut l: Vec<usize> = vec![0; n];
    let mut r: Vec<usize> = vec![0; n];
    let mut curl = 0;
    let mut curr = n - 1;
    let diff = |x, y| if x > y { x - y } else { y - x };
    let update = |curl, curr, l: &mut Vec<usize>, r: &mut Vec<usize>| {
        for i in 0..n {
            l[i] = diff(i, curl) * a[i];
        }
        for i in 0..n {
            r[i] = diff(i, curr) * a[i];
        }
    };
    for _ in 0..n {
        update(curl, curr, &mut l, &mut r);
        let mut tr = n;
        let mut mtr = None;
        for i in 0..n {
            if target[i] == None {
                if let Some(mtr) = mtr {
                    if mtr >= r[i] {
                        continue;
                    }
                }
                mtr = Some(r[i]);
                tr = i;
            }
        }
        let mut tl = n;
        let mut mtl = None;
        for i in (0..n).rev() {
            if target[i] == None {
                if let Some(mtl) = mtl {
                    if mtl >= l[i] {
                        continue;
                    }
                }
                mtl = Some(l[i]);
                tl = i;
            }
        }
        if mtl > mtr {
            target[tl] = Some(curl);
            curl += 1;
        } else {
            target[tr] = Some(curr);
            if curr != 0 {
                curr -= 1;
            }
        }
    }
    let mut ret = 0;
    for i in 0..n {
        let j = target[i].unwrap();
        ret += diff(i, j) * a[i];
    }
    println!("{}", ret);
}

fn main() {
    let mut s = String::new();
    stdin().read_to_string(&mut s).unwrap();
    solve(&s);
}

#[cfg(test)]
mod tests {
    use super::*;
    #[test]
    fn test_input() {
        let s = "
        ";
        solve(s);
    }
}
