#include <bits/stdc++.h>
#pragma GCC optimize("Ofast", "inline", "-ffast-math")
#pragma GCC target("avx,sse2,sse3,sse4,mmx")
using namespace std;
const long long inf = 1e9;
const long long onf = 1e18;
const long long maxn = 4e5 + 10;
const long long mod = 998244353;
inline long long read() {
  long long x = 0, f = 1;
  char ch = getchar();
  while (!isdigit(ch)) {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (isdigit(ch)) {
    x = (x << 3) + (x << 1) + ch - 48;
    ch = getchar();
  }
  return x * f;
}
long long qpow(long long a, long long b) {
  long long res = 1;
  while (b > 0) {
    if (b & 1) res = (res * a) % mod;
    a = (a * a) % mod;
    b >>= 1;
  }
  return res;
}
long long comb(long long n, long long m) {
  long long tmp = 1, res = 1;
  for (long long i = 1; i <= n; i++) res = res * i % mod;
  for (long long i = 1; i <= m; i++) tmp = tmp * i % mod;
  for (long long i = 1; i <= n - m; i++) tmp = tmp * i % mod;
  return res * qpow(tmp, mod - 2) % mod;
}
long long a[maxn];
signed main() {
  long long n = read(), ans = comb(2 * n, n);
  for (long long i = 0; i < (long long)n * 2; i++) a[i] = read();
  sort(a, a + n * 2);
  long long res = 0;
  for (long long i = 0; i < (long long)n; i++) {
    res = (res + a[i + n] - a[i]) % mod;
  }
  cout << (ans * res) % mod << endl;
  return 0;
}
