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

int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);cout.tie(0);
	const int mod=998244353;
	auto add=[&](int a,int b){a+=b;while(a>=mod)a-=mod;while(a<0)a+=mod;return a;};
	auto sub=[&](int a,int b){a-=b;while(a>=mod)a-=mod;while(a<0)a+=mod;return a;};
	auto mul=[&](int a,int b){return 1LL*a*b%mod;};
	auto qpow=[&](ll t,ll p){
		ll ans=1;
		while(p){
			if(p&1)ans=ans*t%mod;
			t=t*t%mod;
			p>>=1;
		}
		return ans;
	};
	const int inv2=qpow(2,mod-2);
	
	int n;
	cin>>n;
	vector<int>a(n);
	for(int i=0;i<n;i++)cin>>a[i];
	int MAXN=*max_element(a.begin(),a.end());
	vector<int>num(MAXN+5,0);
	for(int i=0;i<n;i++)num[a[i]]++;
	vector<int>prime,mu(MAXN+5);
	vector<bool>vis(MAXN+5);
	mu[1]=1;
	for(int i=2;i<=MAXN;i++){
		if(!vis[i])prime.push_back(i),mu[i]=-1;
		for(int j=0;j<prime.size();j++){
			if(1LL*i*prime[j]>MAXN)break;
			vis[i*prime[j]]=true;
			if(i%prime[j]==0){
				mu[i*prime[j]]=0;
				break;
			}
			mu[i*prime[j]]=-mu[i];
		}
	}
	vector<int>F(MAXN+5);
	for(int i=1;i<=MAXN;i++){
		int sum=0;
		for(int j=i;j<=MAXN;j+=i){
			F[i]=add(F[i],mul(mul(mul(mul(num[j],sub(num[j],1)),inv2),j),j));
			F[i]=add(F[i],mul(sum,mul(num[j],j)));
			sum=add(sum,mul(j,num[j]));
		}
	}
	int ans=0;
	for(int i=1;i<=MAXN;i++){
		int f=0;
		for(int j=i;j<=MAXN;j+=i){
			f=add(f,mul(mu[j/i],F[j]));
		}
		ans=add(ans,mul(f,qpow(i,mod-2)));
	}
	cout<<ans<<endl;
	return 0;
}