#include <bits/stdc++.h>
using namespace std;
template <class T>
T fp(T x, long long e) {
  T ans(1);
  for (; e > 0; e /= 2) {
    if (e & 1) ans = ans * x;
    x = x * x;
  }
  return ans;
}
const long long mod = 998244353;
struct mb {
  mb(int v = 0) : val(v < 0 ? v + mod : v) {}
  mb(long long v) { val = (v % mod + mod) % mod; }
  int val;
  void operator+=(mb o) { *this = *this + o; }
  void operator-=(mb o) { *this = *this - o; }
  void operator*=(mb o) { *this = *this * o; }
  mb operator*(mb o) { return (int)((long long)val * o.val % mod); }
  mb operator/(mb o) { return *this * fp(o, mod - 2); }
  mb operator+(mb o) {
    return val + o.val >= mod ? val + o.val - mod : val + o.val;
  }
  mb operator-(mb o) {
    return val - o.val < 0 ? val - o.val + mod : val - o.val;
  }
};
const int N = 3e5 + 10;
mb fat[N], invfat[N];
mb nck(int n, int k) {
  assert(n >= k);
  return fat[n] * invfat[k] * invfat[n - k];
}
mb calc(vector<long long> a, vector<long long> b) {
  sort((a).begin(), (a).end());
  sort((b).begin(), (b).end());
  mb ans(0);
  for (int i = 0; i < (int)(a.size()); i++) ans += abs(a[i] - b[i]);
  return ans;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  fat[0] = invfat[0] = mb(1);
  for (int i = 1; i < N; i++) {
    fat[i] = mb(i) * fat[i - 1];
    invfat[i] = mb(1) / fat[i];
  }
  long long n;
  cin >> n;
  vector<long long> v(2 * n);
  for (int i = 0; i < 2 * n; i++) cin >> v[i];
  sort((v).begin(), (v).end());
  vector<long long> a, b;
  for (int i = 0; i < n; i++) {
    a.push_back(v[i]);
    b.push_back(v[i + n]);
  }
  cout << (nck(2 * n, n) * calc(a, b)).val << "\n";
}
