#[allow(unused_imports)]
use std::io::{BufWriter, stdin, stdout, Write};
struct Scanner { buffer: Vec<String> }
impl Scanner {
fn next<T: std::str::FromStr>(&mut self) -> T {
loop {
if let Some(token) = self.buffer.pop() {
return token.parse().ok().expect("parse error");
}
let mut input = String::new();
stdin().read_line(&mut input).expect("read error");
self.buffer = input.split_whitespace().rev().map(String::from).collect();
}
}
}
macro_rules! io_init {
($scan:ident, $out:ident) => {
let mut $scan = Scanner { buffer: Vec::new() };
let $out = &mut BufWriter::new(stdout());
};
}
fn solve(scan: &mut Scanner, out: &mut BufWriter<std::io::Stdout>) {
let n = scan.next::<usize>();
let k = scan.next::<usize>();
let mut a = Vec::with_capacity(n);
for _ in 0..n {
a.push(scan.next::<i64>());
}
a.sort_unstable();
let mid1 = k + (n - k + 2) / 2 - 1;
let mid2 = (n - k + 1) / 2 - 1;
let res = a[mid1] - a[mid2] + 1;
writeln!(out, "{}", res).unwrap();
}
fn main() {
io_init!(scan, out);
let t = scan.next::<i32>();
for _ in 0..t {
solve(&mut scan, out);
}
}
I1thbGxvdyh1bnVzZWRfaW1wb3J0cyldCnVzZSBzdGQ6OmlvOjp7QnVmV3JpdGVyLCBzdGRpbiwgc3Rkb3V0LCBXcml0ZX07CgpzdHJ1Y3QgU2Nhbm5lciB7IGJ1ZmZlcjogVmVjPFN0cmluZz4gfQoKaW1wbCBTY2FubmVyIHsKICAgIGZuIG5leHQ8VDogc3RkOjpzdHI6OkZyb21TdHI+KCZtdXQgc2VsZikgLT4gVCB7CiAgICAgICAgbG9vcCB7CiAgICAgICAgICAgIGlmIGxldCBTb21lKHRva2VuKSA9IHNlbGYuYnVmZmVyLnBvcCgpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbi5wYXJzZSgpLm9rKCkuZXhwZWN0KCJwYXJzZSBlcnJvciIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGxldCBtdXQgaW5wdXQgPSBTdHJpbmc6Om5ldygpOwogICAgICAgICAgICBzdGRpbigpLnJlYWRfbGluZSgmbXV0IGlucHV0KS5leHBlY3QoInJlYWQgZXJyb3IiKTsKICAgICAgICAgICAgc2VsZi5idWZmZXIgPSBpbnB1dC5zcGxpdF93aGl0ZXNwYWNlKCkucmV2KCkubWFwKFN0cmluZzo6ZnJvbSkuY29sbGVjdCgpOwogICAgICAgIH0KICAgIH0KfQoKbWFjcm9fcnVsZXMhIGlvX2luaXQgewogICAgKCRzY2FuOmlkZW50LCAkb3V0OmlkZW50KSA9PiB7CiAgICAgICAgbGV0IG11dCAkc2NhbiA9IFNjYW5uZXIgeyBidWZmZXI6IFZlYzo6bmV3KCkgfTsKICAgICAgICBsZXQgJG91dCA9ICZtdXQgQnVmV3JpdGVyOjpuZXcoc3Rkb3V0KCkpOwogICAgfTsKfQoKZm4gc29sdmUoc2NhbjogJm11dCBTY2FubmVyLCBvdXQ6ICZtdXQgQnVmV3JpdGVyPHN0ZDo6aW86OlN0ZG91dD4pIHsKICAgIGxldCBuID0gc2Nhbi5uZXh0Ojo8dXNpemU+KCk7CiAgICBsZXQgayA9IHNjYW4ubmV4dDo6PHVzaXplPigpOwogICAgbGV0IG11dCBhID0gVmVjOjp3aXRoX2NhcGFjaXR5KG4pOwogICAgZm9yIF8gaW4gMC4ubiB7CiAgICAgICAgYS5wdXNoKHNjYW4ubmV4dDo6PGk2ND4oKSk7CiAgICB9CiAgICBhLnNvcnRfdW5zdGFibGUoKTsKICAgIGxldCBtaWQxID0gayArIChuIC0gayArIDIpIC8gMiAtIDE7CiAgICBsZXQgbWlkMiA9IChuIC0gayArIDEpIC8gMiAtIDE7CiAgICBsZXQgcmVzID0gYVttaWQxXSAtIGFbbWlkMl0gKyAxOwogICAgd3JpdGVsbiEob3V0LCAie30iLCByZXMpLnVud3JhcCgpOwp9CgpmbiBtYWluKCkgewogICAgaW9faW5pdCEoc2Nhbiwgb3V0KTsKICAgIGxldCB0ID0gc2Nhbi5uZXh0Ojo8aTMyPigpOwogICAgZm9yIF8gaW4gMC4udCB7CiAgICAgICAgc29sdmUoJm11dCBzY2FuLCBvdXQpOwogICAgfQp9Cg==