#include <bits/stdc++.h>
using namespace std;
const long long int MOD = 1000000007;
const long long BIG = 1446803456761533460;
const int Big = 336860180;
stringstream sss;
const long long int maxn = 100010;
long long int n;
long long int ar[maxn];
long long int num[maxn];
long long int cnt[maxn];
bool vis[maxn];
long long int c1 = 0, c2 = 0, odd = 0, ans = 0;
inline long long int R(long long int i) { return n - 1 - i; }
void MAIN() {
  cin >> n;
  for (long long int i = (0); i < (n); ++i) cin >> ar[i];
  for (long long int i = (0); i < (n); ++i) ++num[ar[i]];
  for (long long int i = (0); i < (n); ++i) odd += num[i + 1] % 2;
  if (odd > 1) {
    cout << "0\n";
    return;
  }
  for (long long int i = (0); i < (n / 2); ++i) {
    c2 += ar[i] != ar[R(i)];
  }
  long long int j = 0;
  for (long long int i = (0); i < (n); ++i) {
    while (j == i || j < n && (c1 > 0 || c2 > 0)) {
      if (j == R(j)) {
        c1 -= (++cnt[ar[j]] == 0);
      } else if (vis[R(j)]) {
        c1 -= (++cnt[ar[j]] == 0);
        c1 -= (++cnt[ar[j]] == 0);
      } else {
        c2 -= ar[j] != ar[R(j)];
        c1 += (cnt[ar[R(j)]]-- == 0);
        c1 -= (++cnt[ar[j]] == 0);
      }
      vis[j++] = true;
    }
    ans += n - j + (c1 <= 0 && c2 <= 0);
    if (i == R(i)) {
      c1 += (cnt[ar[i]]-- == 0);
    } else if (vis[R(i)]) {
      c1 += (cnt[ar[i]]-- == 0);
      c1 += (cnt[ar[i]]-- == 0);
    } else {
      c2 += ar[i] != ar[R(i)];
      c1 -= (++cnt[ar[R(i)]] == 0);
      c1 += (cnt[ar[i]]-- == 0);
    }
    vis[i] = false;
  }
  cout << ans << '\n';
}
int main() {
  ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  cout << fixed << setprecision(10);
  sss << R"(
6
3 6 5 3 3 5
5
5 5 2 5 2
    )";
  MAIN();
  return 0;
}
