#include using namespace std; using ll = long long; ll manacher(vector& a) { int n = a.size(); // 奇数長の回文の半径 vector d1(n); ll res = 0; { int l = 0, r = -1; for (int i = 0; i < n; i++) { int k = 1; if (i <= r) k = min(d1[l + r - i], r - i + 1); while (0 <= i - k && i + k < n && a[i - k] == a[i + k]) k++; d1[i] = k; res += d1[i]; if (i + k - 1 > r) { l = i - k + 1; r = i + k - 1; } } } // 偶数長の回文の半径 vector d2(n); { int l = 0, r = -1; for (int i = 0; i < n; i++) { int k = 0; if (i <= r) k = min(d2[l + r - i + 1], r - i + 1); while (0 <= i - k - 1 && i + k < n && a[i - k - 1] == a[i + k]) k++; d2[i] = k; res += d2[i]; if (i + k - 1 > r) { l = i - k; r = i + k - 1; } } } return res; } int main() { ios::sync_with_stdio(false); cin.tie(0); int n; cin >> n; if(n == 1){ cout << "1\n"; return 0; } vector a(n), b(n - 1); for(auto &&v : a) cin >> v; for(int i = 0; i + 1 < n; i++) b[i] = a[i + 1] - a[i]; ll ans = n; ans += manacher(b); cout << ans << "\n"; }