from math import gcd class Rgcd(): def __init__(self, lis): #the number of nodes is 2n-1 size = len(lis) self.n = 1 while self.n < size: self.n *= 2 self.node = [0] * (2*self.n-1) for i, x in enumerate(lis): self.node[i+self.n-1] = x for i in range(self.n-2, -1, -1): self.node[i] = gcd(self.node[2*i+1], self.node[2*i+2]) def Access(self, x): return self.node[x+self.n-1] def Update(self, x, val): x += self.n-1 self.node[x] = val while x > 0: x = (x-1)//2 self.node[x] = gcd(self.node[2*x+1], self.node[2*x+2]) return #[l, r) def Get(self, l, r): L, R = l+self.n, r+self.n s = 0 while L>= 1 R >>= 1 return s n = int(input()) a = list(map(int, input().split())) seg = Rgcd(a) rm = 0 ans = 0 for i in range(n): rm = max(rm, i) while rm < n and seg.Get(i, rm+1) > 1: rm += 1 ans += n-rm print(ans)