from collections import deque N = int(input()) X = list(map(int, input().split())) limit = max(X) cnt = [0] * (limit + 1) for x in X: cnt[x] += 1 G = [list() for _ in range(limit + 1)] for i in range(1, (limit//2) + 1): for j in range(2, (limit//i) + 1): G[i].append(i*j) dist = [-1] * (limit + 1) for start in range(1, limit + 1): if cnt[start] == 0: continue que = deque() que.append(start) # 探索したほうが良いか判断 if dist[start] > cnt[start]: continue dist[start] = cnt[start] while que: pos = que.popleft() for nex in G[pos]: if cnt[nex] == 0: continue # 初訪問のときは cnt を含める if dist[nex] == -1: dist[nex] = dist[pos] + cnt[nex] que.append(nex) # 初訪問でない場合、ながくできるなら長くする elif dist[nex] - cnt[nex] <= dist[pos]: dist[nex] = dist[pos] + cnt[nex] que.append(nex) ans = max(dist) print(ans)