#include<bits/stdc++.h>
using namespace std;
const int MAXN = 100005;
int arr[MAXN];
bool AcCode(const unordered_map<int, int>& ans) {
for (auto f : ans) {
if (f.second % 2 != 0) {
return false;
}
}
return true;
}
unordered_map<int, int> ACCODE(int num) {
unordered_map<int, int> ans;
for (int i = 2; i * i <= num; ++i) {
while (num % i == 0) {
ans[i]++;
num /= i;
}
}
if (num > 1) ans[num]++;
return ans;
}
int main() {
int n;
cin >> n;
for (int i = 0; i < n; ++i) {
cin >> arr[i];
}
int c = 0;
for (int l = 0; l < n; ++l) {
unordered_map<int, int> ans;
for (int r = l; r < n; ++r) {
unordered_map<int, int> CF = ACCODE(arr[r]);
for (auto f : CF) {
ans[f.first] += f.second;
}
if (AcCode(ans)) {
c++;
}
}
}
cout << c << endl;
return 0;
}