from math import isqrt def divsor(x): arr = [] for i in range(1,isqrt(x)+1): if x % i == 0: arr.append(i) if i*i != i: arr.append(x//i) return arr N = int(input()) A = list(map(int,input().split())) M = max(A) S = set() for a in A: for d in divsor(a): S.add(d) S_arr = list(S) S_arr.sort(reverse=True) #print(S) dp = {} for d in S_arr: cnt = 0 for a in A: if a % d == 0: cnt += 1 dp[d] = 2**cnt-1 #print(dp) for d in S_arr: if M/d < len(S): # O(M/d) for i in range(2*d,M+1,d): if i in S: dp[d] -= dp[i] else: # O(|S|) for i in S: if i > d and i % d == 0: dp[d] -= dp[i] #print(dp) print(dp[1])