#include <bits/stdc++.h>
using namespace std;

const int N = 1e6 + 10;
const int mod = 998244353;
const int inv = 499122177;

int p[N], ptot;
bool ptag[N];
int f[N];

void sieve (int n) {
	f[1] = 1;
	for (int i = 2; i <= n; i++) {
		if (!ptag[i]) {
			p[++ ptot] = i;
			f[i] = (i - 1ll * i * i % mod + mod) % mod;
		}
		for (int j = 1; j <= ptot && i * p[j] <= n; j++) {
			ptag[i * p[j]] = 1;
			if (i % p[j]) {
				f[i * p[j]] = 1ll * f[i] * f[p[j]] % mod;
			} else {
				f[i * p[j]] = 1ll * f[i] * p[j] % mod;
			}
		}
	}
}

int c[N], cc[N], sum;

int main (void) {
	sieve(1e6);

	int n, val;
	scanf("%d", &n);
	for (int i = 1; i <= n; i++) {
		scanf("%d", &val);
		c[val] ++;
		sum += val;
		if (sum >= mod) sum -= mod;
	}
	int m = 1e6;
	for (int i = 1; i <= m; i++) {
		for (int j = 1; i * j <= m; j++) {
			cc[i] += c[i * j] * j % mod;
			if (cc[i] >= mod) cc[i] -= mod;
		}
	}

	int ans = 0;
	for (int i = 1; i <= m; i++) {
		ans += 1ll * f[i] * cc[i] % mod * cc[i] % mod;
		if (ans >= mod) ans -= mod;
	}
	ans -= sum;
	if (ans >= mod) ans -= mod;
	ans = 1ll * ans * inv % mod;
	printf("%d\n", ans);
}