#include <bits/stdc++.h>
using namespace std;
vector<long long> primes;
long long dx[] = {0, 0, 1, -1};
long long dy[] = {1, -1, 0, 0};
long long n;
bool isvalid(long long x, long long y) {
  return (x >= 0 and x < n and y >= 0 and y < n);
}
void Sieve(long long n) {
  bool prime[n + 1];
  for (long long i = 0; i < n + 1; ++i) prime[i] = true;
  for (long long p = 2; p * p <= n; ++p) {
    if (prime[p] == true) {
      for (long long i = 2 * p; i <= n; i += p) prime[i] = false;
    }
  }
  for (long long p = 2; p <= n; p++)
    if (prime[p]) primes.push_back(p);
}
const long long N = 5e5 + 5;
long long connected;
long long par[N], sz[N];
struct DSU {
  void init(long long n) {
    for (long long i = 1; i <= n; i++) {
      par[i] = i;
      sz[i] = 1;
    }
    connected = n;
  }
  long long getPar(long long k) {
    while (k != par[k]) {
      par[k] = par[par[k]];
      k = par[k];
    }
    return k;
  }
  long long getSize(long long k) { return sz[getPar(k)]; }
  void unite(long long u, long long v) {
    long long par1 = getPar(u), par2 = getPar(v);
    if (par1 == par2) return;
    connected--;
    if (sz[par1] > sz[par2]) swap(par1, par2);
    sz[par2] += sz[par1];
    sz[par1] = 0;
    par[par1] = par[par2];
  }
};
DSU dsu;
long long gcd(long long a, long long b) {
  if (a == 0) return b;
  return gcd(b % a, a);
}
long long powermod(long long x, long long y) {
  if (y == 0) return 1;
  if (y % 2 == 0)
    return (powermod(x, y / 2) * powermod(x, y / 2)) % 1000000007;
  else
    return (((powermod(x, y / 2) * powermod(x, y / 2)) % 1000000007) * x) %
           1000000007;
}
int32_t main() {
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  long long t;
  cin >> t;
  while (t--) {
    long long n;
    cin >> n;
    long long a[2 * n];
    for (long long &i : a) cin >> i;
    sort(a, a + 2 * n);
    cout << a[n] - a[n - 1] << endl;
  }
}
