#include <bits/stdc++.h>
using namespace std;
long long N, C;
int A[101000];
long long ret;
int ok(int V) {
  int i, j;
  map<int, int> M;
  if (V < N / 2) {
    for (int i = 0; i < N; i++) {
      if (i <= V)
        M[A[i]]++;
      else if (N - 1 - i <= V) {
        if (M[A[i]]-- == 0) return false;
      } else if (A[i] != A[N - i - 1])
        return false;
    }
    return true;
  } else {
    for (i = 0; i < N; i++) {
      if (i <= V)
        M[A[i]]++;
      else if (M[A[i]]-- == 0)
        return false;
    }
    j = 0;
    for (auto it = M.begin(); it != M.end(); it++) j += it->second % 2;
    return j == N % 2;
  }
}
void solve() {
  int j, x;
  string s;
  cin >> N;
  for (int i = 0; i < N; i++) cin >> A[i];
  for (C = 0; C < N; C++)
    if (A[C] != A[N - 1 - C]) break;
  if (C == N) {
    cout << N * (N + 1) / 2 << endl;
    return;
  }
  N -= 2 * C;
  for (int i = 0; i < N; i++) A[i] = A[i + C];
  if (!ok((int)(N - 1))) {
    printf("0\n");
    return;
  }
  ret += (C + 1) * (C + 1);
  for (int i = 0; i < 2; i++) {
    x = 0;
    for (j = 20; j >= 0; j--)
      if (x + (1 << j) <= N - 2 && !ok(x + (1 << j))) x += 1 << j;
    ret += (C + 1) * (N - x - 2);
    reverse(A, A + N);
  }
  cout << ret << endl;
}
int main() { solve(); }
