#include"bits/stdc++.h"
#include<valarray>

using namespace std;

int n;
vector<long long int> v;

#define MOD 998244353
#define MAX 200002
#define MAXX 1000001
long long int cn[MAXX];
long long int pw[MAXX];
long long int com[MAXX];

long long int ppow(long long int i,long long int j){
	long long int res=1;
	while(j){
		if(j&1LL){
			res*=i;
			if(res>=MOD)res%=MOD;
		}
		j>>=1LL;
		i*=i;
		i%=MOD;
	}
	return res;
}

int main(){
	cin>>n;
	for(int i=0;i<n;i++){
		int a;
		scanf("%d",&a);
		v.push_back(a);
	}
	for(int i=0;i<v.size();i++){
		cn[v[i]]+=v[i];
		pw[v[i]]+=v[i]*v[i];
		pw[v[i]]%=MOD;
		cn[v[i]]%=MOD;
	}
	for(int i=1;i<MAXX;i++){
		for(int j=i*2;j<MAXX;j+=i){
			cn[i]+=cn[j];
			pw[i]+=pw[j];
			cn[i]%=MOD;
			pw[i]%=MOD;
		}
	}
	long long int ans=0;
	for(int i=MAXX-1;i>=1;i--){
		com[i]=((cn[i]*cn[i])%MOD)-pw[i];
		com[i]+=MOD;
		com[i]%=MOD;
		for(int j=i*2;j<MAXX;j+=i){
			com[i]+=MOD-com[j];
			com[i]%=MOD;
		}
		com[i]%=MOD;
		com[i]+=MOD;
		com[i]%=MOD;
		ans+=com[i]*ppow(i,MOD-2);
		ans%=MOD;
	}
	ans*=ppow(2,MOD-2);
	ans%=MOD;
	printf("%lld\n",ans);
	return 0;
}
