#include <bits/stdc++.h>
template <typename T>
inline void read(T &x) {
  x = 0;
  char c = getchar();
  bool flag = false;
  while (!isdigit(c)) {
    if (c == '-') flag = true;
    c = getchar();
  }
  while (isdigit(c)) {
    x = (x << 1) + (x << 3) + (c ^ 48);
    c = getchar();
  }
  if (flag) x = -x;
}
using namespace std;
const int P = 998244353;
inline long long quickpow(long long x, int k) {
  long long res = 1;
  while (k) {
    if (k & 1) res = res * x % P;
    x = x * x % P;
    k >>= 1;
  }
  return res;
}
int n;
int a[301000];
long long jie[301000], jieni[301000];
inline void init() {
  jie[0] = jieni[0] = 1;
  int up = n + n;
  for (int i = 1; i <= up; ++i) jie[i] = jie[i - 1] * i % P;
  jieni[up] = quickpow(jie[up], P - 2);
  for (int i = up - 1; i; --i) jieni[i] = jieni[i + 1] * (i + 1) % P;
}
inline long long get_c(int n, int m) {
  if (n < 0 || m < 0 || (n - m) < 0) return 0;
  return jie[n] * jieni[m] % P * jieni[n - m] % P;
}
int main() {
  read(n);
  for (int i = 1; i <= n + n; ++i) read(a[i]);
  sort(a + 1, a + 1 + n + n);
  init();
  long long ans = 0;
  for (int i = 1; i <= n; ++i) {
    ans -= 1ll * a[i] * get_c(n + n - 1, n - 1) % P;
  }
  for (int i = n + 1; i <= n + n; ++i) {
    ans += 1ll * a[i] * get_c(n + n - 1, n - 1) % P;
  }
  printf("%lld\n", (2ll * ans % P + P) % P);
  return 0;
}
