func_code_string: #include <bits/stdc++.h>   using namespace std;   const long long INF = (long long)1e18;   const long long MOD = (long long)1e9 + 7;   long long n, r[200000], a[200000], bad, brd, odd, ll, rr, cnt[200000],       cntl[200000], i, j, ans;   int main() {     scanf( %d , &n);     for (i = 0; i < n; ++i) scanf( %d , &r[i]), ++cnt[r[i]];     for (i = 0; i < 200000; ++i)       if (cnt[i] % 2LL) ++odd;     if (odd > 1) {       printf( %d n , 0);       return 0;     }     for (i = 0; i < 200000; ++i) cnt[i] = 0;     for (i = 0; i < n / 2LL && r[i] == r[n - i - 1]; ++i) ++brd;     for (i = brd; i < n - brd; ++i) a[i - brd] = r[i], ++cnt[r[i]];     if (n - 2LL * brd <= 1LL) {       printf( %lld n , (n * (n + 1LL)) / 2LL);       return 0;     }     n -= 2LL * brd;     if (n % 2LL) {       long long gmid = 0;       if (cnt[a[n / 2LL]] % 2LL) {         while (a[n / 2 - gmid] == a[n / 2 + gmid]) ++gmid;       }       for (i = n / 2 - gmid + 1; i <= n / 2 + gmid - 1; ++i) --cnt[a[i]];       long long minl, minr;       bad = 0;       for (i = 0; i < 200000; ++i)         if (cnt[i]) ++bad;       for (i = 0; i < 200000; ++i) cntl[i] = 0;       for (i = 0; i < n; ++i) {         ++cntl[a[i]];         if (i >= n / 2 - gmid + 1 && i <= n / 2 + gmid - 1) --cntl[a[i]];         if (cntl[a[i]] && cntl[a[i]] == (cnt[a[i]] + 1) / 2LL) --bad;         if (i == n / 2 + gmid - 1) {           for (j = n / 2 - gmid + 1; j <= n / 2 + gmid - 1; ++j) {             ++cntl[a[j]];             ++cnt[a[j]];           }           for (j = n / 2 - gmid + 1; j <= n / 2 + gmid - 1; ++j)             if (cntl[a[j]] == (cnt[a[j]] + 1) / 2LL) --bad;         }         if (!bad) {           minl = i;           break;         }       }       gmid = 0;       if (cnt[a[n / 2LL]] % 2LL) {         while (a[n / 2 - gmid] == a[n / 2 + gmid]) ++gmid;       }       for (i = n / 2 - gmid + 1; i <= n / 2 + gmid - 1; ++i) --cnt[a[i]];       bad = 0;       for (i = 0; i < 200000; ++i)         if (cnt[i]) ++bad;       for (i = 0; i < 200000; ++i) cntl[i] = 0;       for (i = n - 1; i >= 0; --i) {         ++cntl[a[i]];         if (i >= n / 2 - gmid + 1 && i <= n / 2 + gmid - 1) --cntl[a[i]];         if (cntl[a[i]] && cntl[a[i]] == (cnt[a[i]] + 1) / 2LL) --bad;         if (i == n / 2 - gmid + 1) {           for (j = n / 2 - gmid + 1; j <= n / 2 + gmid - 1; ++j) {             ++cntl[a[j]];             ++cnt[a[j]];           }           for (j = n / 2 - gmid + 1; j <= n / 2 + gmid - 1; ++j)             if (cntl[a[j]] == (cnt[a[j]] + 1) / 2LL) --bad;         }         if (!bad) {           minr = i;           break;         }       }       printf( %lld n , (brd + 1LL) * (brd + (n - minl)) +                            (brd + 1LL) * (brd + (minr + 1LL)) -                            (brd + 1LL) * (brd + 1LL));     } else {       long long gmid = 0;       while (a[n / 2 - gmid - 1] == a[n / 2 + gmid]) ++gmid;       for (i = n / 2 - gmid; i <= n / 2 + gmid - 1; ++i) --cnt[a[i]];       long long minl, minr;       bad = 0;       for (i = 0; i < 200000; ++i)         if (cnt[i]) ++bad;       for (i = 0; i < 200000; ++i) cntl[i] = 0;       for (i = 0; i < n; ++i) {         ++cntl[a[i]];         if (i >= n / 2 - gmid && i <= n / 2 + gmid - 1) --cntl[a[i]];         if (cntl[a[i]] == cnt[a[i]] / 2LL) --bad;         if (i == n / 2 + gmid - 1)           for (j = n / 2 - gmid; j <= n / 2 + gmid - 1; ++j) {             ++cntl[a[j]];             if (cntl[a[j]] == cnt[a[j]] / 2LL) --bad;           }         if (!bad) {           minl = i;           break;         }       }       bad = 0;       for (i = 0; i < 200000; ++i)         if (cnt[i]) ++bad;       for (i = 0; i < 200000; ++i) cntl[i] = 0;       for (i = n - 1; i >= 0; --i) {         ++cntl[a[i]];         if (i >= n / 2 - gmid && i <= n / 2 + gmid - 1) --cntl[a[i]];         if (cntl[a[i]] == cnt[a[i]] / 2LL) --bad;         if (i == n / 2 - gmid)           for (j = n / 2 - gmid; j <= n / 2 + gmid - 1; ++j) {             ++cntl[a[j]];             if (cntl[a[j]] == cnt[a[j]] / 2LL) --bad;           }         if (!bad) {           minr = i;           break;         }       }       printf( %lld n , (brd + 1LL) * (brd + (n - minl)) +                            (brd + 1LL) * (brd + (minr + 1LL)) -                            (brd + 1LL) * (brd + 1LL));     }   }   