#include <bits/stdc++.h>
using namespace std;
vector<int> numeros;
bool es2(int izq, int der, int ini, int fin) {
  int m = fin - ini + 1;
  vector<int> dig(100002, 0);
  int mitad = m / 2;
  if (m % 2 != 0) mitad++;
  if (izq >= m / 2) {
    int pi = ini + (der - izq + 1);
    int pj = izq - 1;
    while (pi < pj) {
      if (numeros[pi] != numeros[pj]) return false;
      pi++;
      pj--;
    }
    pi = ini + (der - izq + 1) - 1;
    pj = izq;
    while (pi >= ini && pj <= der) {
      dig[numeros[pi]]--;
      dig[numeros[pj]]++;
      pi--;
      pj++;
    }
    int cnt = 0;
    for (int i = 0; i < dig.size(); i++) {
      if (dig[i] < 0) return false;
      if (dig[i] % 2 != 0) cnt++;
    }
    if (cnt > 1) return false;
    return true;
  } else {
    for (int i = izq; i < der + 1; i++) {
      dig[numeros[i]]++;
    }
    for (int i = ini; i < izq; i++) {
      dig[numeros[i]]--;
    }
    int cnt = 0;
    for (int i = 0; i < dig.size(); i++) {
      if (dig[i] < 0) return false;
      if (dig[i] % 2 != 0) cnt++;
    }
    if (cnt > 1) return false;
    return true;
  }
}
bool es(int izq, int der, int ini, int fin) {
  int m = fin - ini + 1;
  vector<int> dig(100002, 0);
  if (der < m / 2) {
    int pi = der + 1;
    int pj = fin - (der - izq + 1);
    while (pi < pj) {
      if (numeros[pi] != numeros[pj]) return false;
      pi++;
      pj--;
    }
    pi = der;
    pj = fin - (der - izq + 1) + 1;
    while (pi >= izq && pj <= fin) {
      dig[numeros[pi]]++;
      dig[numeros[pj]]--;
      pi--;
      pj++;
    }
    int cnt = 0;
    for (int i = 0; i < dig.size(); i++) {
      if (dig[i] < 0) return false;
      if (dig[i] % 2 != 0) cnt++;
    }
    if (cnt > 1) return false;
    return true;
  } else {
    for (int i = izq; i < der + 1; i++) {
      dig[numeros[i]]++;
    }
    for (int i = der + 1; i < fin + 1; i++) {
      dig[numeros[i]]--;
    }
    int cnt = 0;
    for (int i = 0; i < dig.size(); i++) {
      if (dig[i] < 0) return false;
      if (dig[i] % 2 != 0) cnt++;
    }
    if (cnt > 1) return false;
    return true;
  }
}
int main() {
  long long n;
  cin >> n;
  vector<int> lista;
  for (int i = 0; i < n; i++) {
    int a;
    scanf("%d", &a);
    lista.push_back(a);
  }
  int izq = 0;
  int der = lista.size() - 1;
  while (izq < der) {
    if (lista[izq] == lista[der]) {
      izq++;
      der--;
    } else {
      break;
    }
  }
  if (izq >= der) {
    long long res = n * (n - 1) / 2 + n;
    cout << res << endl;
  } else {
    for (int i = izq; i < der + 1; i++) numeros.push_back(lista[i]);
    long long m = numeros.size();
    int lo = 0;
    int hi = m - 1;
    long long fin1 = -1;
    while (lo <= hi) {
      int mid = lo + (hi - lo) / 2;
      if (es(0, mid, 0, m - 1)) {
        fin1 = mid;
        hi = mid - 1;
      } else {
        lo = mid + 1;
      }
    }
    lo = 0;
    hi = m - 1;
    long long fin2 = -1;
    while (lo <= hi) {
      int mid = lo + (hi - lo) / 2;
      if (es2(mid, m - 1, 0, m - 1)) {
        fin2 = mid;
        lo = mid + 1;
      } else {
        hi = mid - 1;
      }
    }
    if (fin1 == -1 || fin2 == -1) {
      cout << 0 << endl;
    } else {
      long long val1 = fin1 + 1;
      long long val2 = m - fin2;
      long long res =
          ((n - m) / 2 + 1) * (1 - val1 - val2 + (n - m) / 2 + 2 * m);
      cout << res << endl;
    }
    if (n == 10) {
    }
  }
  return 0;
}
