6
12 8 12 17 20 5
17 4 8 8 8 4
 6
4 1 12 9 3 11
12 20 19 12 19 11
 1
1
1
 2
1 2
1 1
 1
7
5
 6
16 20 18 7 14 2
17 12 4 10 7 4

705
 917
 1
 9
 5
 741

#include <bits/stdc++.h>
using namespace std;
int N;
long long a[300001], b[300001];
long long acumlin[300001];
long long acumlin2[300001];
long long acumcima[300001];
long long acumbaixo[300001];
long long route() {
  long long ans = 0, acum = 0, t = 0;
  for (int i = 0; i < N; i++) {
    if ((i & 1) == 0) {
      ans = max(ans, acum + (acumcima[2 * N - i] - acumcima[i]) +
                         (t - i) * (acumlin[2 * N - i] - acumlin[i]));
      acum += (t++) * a[i];
      acum += (t++) * b[i];
    } else {
      ans = max(ans, acum + (acumbaixo[2 * N - i] - acumbaixo[i]) +
                         (t + 1 - i) * (acumlin2[2 * N - i] - acumlin2[i]));
      acum += (t++) * b[i];
      acum += (t++) * a[i];
    }
  }
  return max(ans, acum);
}
int main() {
  int ind;
  long long ans;
  scanf("%d", &N);
  for (int i = 0; i < N; i++) scanf("%lld", &a[i]);
  for (int i = 0; i < N; i++) scanf("%lld", &b[i]);
  for (int i = 0; i < N; i++) {
    acumcima[i + 1] = acumcima[i] + i * a[i];
    acumbaixo[i + 1] = acumbaixo[i] + i * b[i];
    acumlin[i + 1] = acumlin[i] + a[i];
    acumlin2[i + 1] = acumlin2[i] + b[i];
  }
  for (int i = N; i < N + N; i++) {
    ind = N - 1 - (i - N);
    acumcima[i + 1] = acumcima[i] + i * b[ind];
    acumbaixo[i + 1] = acumbaixo[i] + i * a[ind];
    acumlin[i + 1] = acumlin[i] + b[ind];
    acumlin2[i + 1] = acumlin2[i] + a[ind];
  }
  ans = route();
  printf("%lld\n", ans);
  return 0;
}
