#include <bits/stdc++.h>

using namespace std;

#define ii pair<int,int>
#define fi first
#define se second
#define ld long double
#define vi vector<int>
#define all(x) x.begin(),x.end()
#define sz(x) (int)x.size()
#define eb emplace_back

const int mxn = 1e5+5;

void multi(int64_t &a, int64_t b, const int64_t &MOD){
	a%=MOD; b%=MOD;
	a=((a*b)%MOD+MOD)%MOD;
}

void add(int64_t &a, int64_t b, const int64_t &MOD){
	a%=MOD; b%=MOD;
	a=((a+b)%MOD+MOD)%MOD;
}

int main(){
	ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
	const int64_t MOD = (int64_t)998244353;
	int n; cin>>n;
	vector<int64_t>a(n); for(auto &x:a)cin>>x;
	int64_t ans=0;
	map<pair<int,int>,int>cnt;
	sort(all(a));
	//naive
	if(0){
		for(int mask=1; mask<(1<<n); mask++){
			int64_t mn=MOD,mx=MOD;
			cerr<<mask<<": ";
			for(int i=0; i<n; i++){
				if((mask>>i)&1){
					cerr<<"1";
					if(mn==MOD){
						mn=a[i];
						mx=a[i];
					}else{
						mn=min(mn,a[i]);
						mx=max(mx,a[i]);
					}
				}else{
					cerr<<"0";
				}
			}
			cerr<<": ";
			if(mn==MOD)continue;
			cerr<<mn<<" "<<mx<<" ";
			cnt[{mn,mx}]++;
			multi(mn,mx,MOD);
			add(ans,mn,MOD);
			cerr<<mn<<" "<<ans<<"\n";
		}
	}
	
	int64_t prev = 0;
	for(int i=0; i<n; i++){
		add(prev,prev,MOD);
		if(i)add(prev,-a[i-1],MOD);
		add(prev,a[i],MOD);
		int64_t cur = prev;
		multi(cur,a[i],MOD);
		add(ans,cur,MOD);
	}
	
	cout<<ans<<"\n";
	return 0;
}

#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
#define all(a) a.begin(),a.end()
#define P pair<int,int>
#define Pll pair<long,long>
#define mp make_pair
#define INF 1000000001
#define INFl 1000000000000000001
#define ll long long
using namespace std;


struct edge{long to,cost,k;};


int main() {
    int N;cin>>N;
    vector<long> A(N);
    rep(i,N)cin>>A[i];
    sort(all(A));
    long c=0;
    long mod=998244353;
    long a=A[N-1];
    rep(i,N-1){
        int j=N-i-2;
        c+=A[j]*a;
        c%=mod;
        a*=2;
        a%=mod;
        a+=A[j];
        a%=mod;
    }
    rep(i,N){
        c+=A[i]*A[i];
        c%=mod;
    }
    cout<<c%mod<<endl;
}