← Home
package main

import (
	"bufio"
	"io"
	"os"
	"strconv"
)

type FastScanner struct {
	data []byte
	idx  int
	n    int
}

func NewFastScanner() *FastScanner {
	data, _ := io.ReadAll(os.Stdin)
	return &FastScanner{data: data, n: len(data)}
}

func (fs *FastScanner) NextInt() int {
	for fs.idx < fs.n && fs.data[fs.idx] <= ' ' {
		fs.idx++
	}
	sign := 1
	if fs.idx < fs.n && fs.data[fs.idx] == '-' {
		sign = -1
		fs.idx++
	}
	val := 0
	for fs.idx < fs.n {
		c := fs.data[fs.idx]
		if c < '0' || c > '9' {
			break
		}
		val = val*10 + int(c-'0')
		fs.idx++
	}
	return val * sign
}

func main() {
	fs := NewFastScanner()
	n := fs.NextInt()

	a := make([]int64, n)
	b := make([]int64, n)

	for i := 0; i < n; i++ {
		a[i] = int64(fs.NextInt())
	}
	for i := 0; i < n; i++ {
		b[i] = int64(fs.NextInt())
	}

	sumA := make([]int64, n+1)
	sumB := make([]int64, n+1)
	idxA := make([]int64, n+1)
	idxB := make([]int64, n+1)

	for i := n - 1; i >= 0; i-- {
		sumA[i] = sumA[i+1] + a[i]
		sumB[i] = sumB[i+1] + b[i]
		idxA[i] = idxA[i+1] + a[i]*int64(i)
		idxB[i] = idxB[i+1] + b[i]*int64(i)
	}

	var ans int64
	var cur int64

	for i := 0; i <= n; i++ {
		score := cur
		coef := int64(2*n + i - 1)

		if i%2 == 0 {
			score += int64(i)*sumA[i] + idxA[i]
			score += coef*sumB[i] - idxB[i]
		} else {
			score += int64(i)*sumB[i] + idxB[i]
			score += coef*sumA[i] - idxA[i]
		}

		if score > ans {
			ans = score
		}

		if i == n {
			break
		}

		t := int64(2 * i)
		if i%2 == 0 {
			cur += t*a[i] + (t+1)*b[i]
		} else {
			cur += t*b[i] + (t+1)*a[i]
		}
	}

	w := bufio.NewWriterSize(os.Stdout, 1<<20)
	w.WriteString(strconv.FormatInt(ans, 10))
	w.WriteByte('\n')
	w.Flush()
}