#include #include using namespace std; using namespace atcoder; using mint = modint998244353; const int MX = 1E6 + 5; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int n; cin >> n; vector pr(MX); vector pf(MX); vector> d(MX); for (int i = 2; i < MX; i++) { if (pr[i] == 0) { for (int j = i; j < MX; j += i) { pr[j] = i; } pf[i] = 1; } else { if ((i / pr[i]) % pr[i] != 0 && pf[i / pr[i]]) { pf[i] = -pf[i / pr[i]]; } else { pf[i] = 0; } } if (pf[i]) { for (int j = i; j < MX; j += i) { d[j].push_back(i); } } } vector cnt(MX), dp(n); for (int i = 0; i < n; i++) { int u; cin >> u; mint ans = 1; for (int x : d[u]) { ans += cnt[x] * pf[x]; } dp[i] = ans; for (int x : d[u]) { cnt[x] += ans; } } cout << accumulate(dp.begin(), dp.end(), mint(0)).val(); }