#include <bits/stdc++.h>
using namespace std;
long long ans;
int a[200005], sum[200005], n, i, k, L;
inline int OK() {
  for (int i = 1; i <= n; i++)
    if (a[i] != a[n - i + 1]) return 0;
  printf("%I64d\n", n * 1ll * (n + 1) / 2);
  return 1;
}
inline int NOT_OK() {
  for (int i = 1; i <= n; i++) sum[a[i]]++;
  int s = 0;
  for (int i = 1; i <= n; i++) s += sum[i] & 1;
  if (s > 1) puts("0");
  return s > 1;
}
inline int CAN(int l, int r) {
  memset(sum, 0, sizeof(sum));
  for (int i = L; i <= n - L + 1; i++)
    if ((i < l || i > r) && (n - i + 1 < l || n - i + 1 > r) &&
        a[i] != a[n - i + 1])
      return 0;
  for (int i = l; i <= r; i++) sum[a[i]]++;
  for (int i = L; i <= n - L + 1; i++)
    if (i >= l && i <= r && (n - i + 1 < l || n - i + 1 > r))
      if ((--sum[a[n - i + 1]]) < 0) return 0;
  return 1;
}
inline int erfen(int l, int r) {
  int mid;
  while (l < r)
    if (CAN(L, mid = (l + r) >> 1))
      r = mid;
    else
      l = mid + 1;
  return l;
}
int main() {
  scanf("%d", &n);
  for (i = 1; i <= n; i++) scanf("%d", &a[i]);
  if (OK() || NOT_OK()) return 0;
  for (L = 1; a[L] == a[n - L + 1]; L++)
    ;
  k = erfen(L, n - L + 1);
  ans = L * 1ll * (n - k + 1);
  reverse(a + 1, a + n + 1);
  k = erfen(L, n - L + 1);
  k = n - k + 1;
  ans += L * 1ll * (k - L);
  printf("%I64d", ans);
}
