#include <bits/stdc++.h>
using namespace std;
template <typename C>
void MA(C& a, C b) {
  if (a < b) a = b;
}
template <typename C>
void MI(C& a, C b) {
  if (a > b) a = b;
}
int n, t[100010], j[100010], np;
int spr() {
  for (int i = 0; i < n / 2; i++) {
    j[t[i]] -= 2;
    if (j[t[i]] < 0) return i;
  }
  if (n & 1)
    if (j[t[n / 2]] % 2 == 0) return n / 2;
  for (int i = n / 2 - 1; i >= 0; i--) {
    if (t[i] != t[n - i - 1]) return n - i - 1;
  }
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    scanf("%d", &t[i]);
    t[i]--;
    j[t[i]]++;
  }
  for (int i = 0; i < n; i++)
    if (j[i] & 1) np++;
  if (np > 1) {
    puts("0");
    return 0;
  }
  int il = 0;
  while (il < n && t[il] == t[n - il - 1]) il++;
  if (il == n) {
    printf("%lld\n", n * 1ll * (n + 1) / 2);
    return 0;
  }
  int s1 = spr();
  for (int i = 0; i < n / 2; i++) swap(t[i], t[n - i - 1]);
  for (int i = 0; i < n; i++) j[i] = 0;
  for (int i = 0; i < n; i++) j[t[i]]++;
  np = 0;
  for (int i = 0; i < n; i++)
    if (j[i] & 1) np++;
  int s2 = spr();
  il++;
  s1++;
  s2++;
  printf("%lld\n", il * 1ll * (s1 + s2) - il * 1ll * il);
}
