func_code_string: #include <bits/stdc++.h>   #pragma GCC optimize( Ofast )   #pragma GCC target( avx,avx2,fma )   #pragma GCC optimization( unroll-loops )   using namespace std;   const long long MOD = 998244353;   const long long INF = 0x7f7f7f7f7f7f7f7f;   const int INFi = 0x7f7f7f7f;   const long long N = 150001;   vector<long long> adj[N];   long long vis[N] = {};   int dx8[] = {0, 1, 1, 1, 0, -1, -1, -1}, dy8[] = {1, 1, 0, -1, -1, -1, 0, 1};   int dx4[] = {0, 1, 0, -1}, dy4[] = {1, 0, -1, 0};   int t = 1;   long long n, a[2 * N + 10], fact[2 * N + 10];   long long mult(long long a, long long b) { return (a % MOD * b % MOD) % MOD; }   long long add(long long a, long long b) { return (a % MOD + b % MOD) % MOD; }   long long subt(long long a, long long b) {     return (a % MOD - b % MOD + MOD) % MOD;   }   long long fastModInv(long long x) {     long long res = 1;     long long y = MOD - 2;     while (y) {       if (y & 1) res = mult(res, x);       y >>= 1;       x = mult(x, x);     }     return res;   }   void MAIN() {     cin >> n;     long long ans = 0;     for (long long i = 1; i <= 2 * n; i++) cin >> a[i], a[i] = 2 * a[i];     sort(a + 1, a + 1 + 2 * n);     long long val =         (fact[2 * n - 1] * fastModInv(fact[2 * n - 1 - n + 1]) % MOD) *         fastModInv(fact[n - 1]) % MOD;     for (long long i = 1; i <= n; i++) ans = subt(ans, val * a[i] % MOD);     for (long long i = n + 1; i <= 2 * n; i++) ans = add(ans, val * a[i] % MOD);     cout << ans <<   n ;   }   int main() {     ios::sync_with_stdio(0);     cin.tie(0);     cout.tie(0);     cout << fixed;     cout << setprecision(10);     ;     mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count());     ;     fact[0] = 1;     for (long long i = 1; i <= 2 * N; i++) fact[i] = fact[i - 1] * i % MOD;     while (t--) {       MAIN();     }   }   