import sys MOD = 998244353 def main(): max_num = 10**6 spf = list(range(max_num + 1)) for i in range(2, int(max_num**0.5) + 1): if spf[i] == i: for j in range(i*i, max_num + 1, i): if spf[j] == j: spf[j] = i n = int(sys.stdin.readline()) a = list(map(int, sys.stdin.readline().split())) max_m = 10**6 sum_d = [0] * (max_m + 2) answer = 0 for num in a: if num == 1: dp_i = 1 divisors = [] else: factors = {} x = num while x > 1: p = spf[x] while x % p == 0: factors[p] = factors.get(p, 0) + 1 x //= p primes = list(factors.keys()) k = len(primes) sum_shared = 0 for mask in range(1, 1 << k): bits = bin(mask).count('1') m = 1 for i in range(k): if mask & (1 << i): m *= primes[i] sign = (-1) ** (bits + 1) term = sum_d[m] * sign sum_shared += term if sum_shared >= MOD or sum_shared <= -MOD: sum_shared %= MOD sum_shared %= MOD dp_i = (1 + sum_shared) % MOD divisors = [1] for p in factors: exponents = factors[p] temp = [] for d in divisors: current = d for _ in range(exponents): current *= p temp.append(current) divisors += temp divisors = list(set(divisors)) if 1 in divisors: divisors.remove(1) divisors = [d for d in divisors if d != 1] for d in divisors: if d <= max_m: sum_d[d] = (sum_d[d] + dp_i) % MOD answer = (answer + dp_i) % MOD print(answer % MOD) if __name__ == "__main__": main()