#include <bits/stdc++.h>
using namespace std;
void itval(istream_iterator<string> it) {}
template <typename T, typename... Args>
void itval(istream_iterator<string> it, T a, Args... args) {
  cerr << *it << " = " << a << endl;
  itval(++it, args...);
}
template <typename T>
inline void print(T x) {
  cout << x << "\n";
}
template <typename T>
inline void printvec(T x) {
  for (auto a : x) cout << a << ' ';
  cout << '\n';
}
const long long int MOD = 1e12 + 7;
struct custom {
  bool operator()(const pair<int, int> &p1, const pair<int, int> &p2) const {
    return p1.first > p2.first;
  }
};
long long int get_pow(long long int x, long long int k) {
  if (k == 0) return 1ll;
  long long int y = get_pow(x, k / 2);
  y = (y * y) % MOD;
  if (k % 2) y = (y * x) % MOD;
  return y;
}
const int N = 3e5 + 50;
void solve() {
  long long int n, k;
  cin >> n >> k;
  vector<long long> a(n);
  for (int i = (int)0; i < int(n); i++) {
    cin >> a[i];
  }
  long long int dist = MOD, ans = a[0];
  for (int i = (int)0; i < int(n - k + 1); i++) {
    if (i + k >= n) break;
    if (dist > a[i + k] - a[i]) {
      dist = a[i + k] - a[i];
      ans = (a[i] + a[i + k]) / 2;
    }
  }
  print(ans);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  int test = 1;
  cin >> test;
  clock_t z = clock();
  for (int tes = (int)0; tes < int(test); tes++) {
    solve();
  }
  fprintf(stderr, "Total Time:%.4f\n", (double)(clock() - z) / CLOCKS_PER_SEC),
      fflush(stderr);
  return 0;
}

### Prompt

Develop a solution in cpp to the problem described below:

At first, there was a legend related to the name of the problem, but now it's just a formal statement.

You are given n points a_1, a_2, ..., a_n on the OX axis. Now you are asked to find such an integer point x on OX axis that f_k(x) is minimal possible.

The function f_k(x) can be described in the following way: 

  * form a list of distances d_1, d_2, ..., d_n where d_i = |a_i - x| (distance between a_i and x); 
  * sort list d in non-descending order; 
  * take d_{k + 1} as a result. 



If there are multiple optimal answers you can print any of them.

Input

The first line contains single integer T ( 1 ≤ T ≤ 2 ⋅ 10^5) — number of queries. Next 2 ⋅ T lines contain descriptions of queries. All queries are independent. 

The first line of each query contains two integers n, k (1 ≤ n ≤ 2 ⋅ 10^5, 0 ≤ k < n) — the number of points and constant k.

The second line contains n integers a_1, a_2, ..., a_n (1 ≤ a_1 < a_2 < ... < a_n ≤ 10^9) — points in ascending order.

It's guaranteed that ∑{n} doesn't exceed 2 ⋅ 10^5.

Output

Print T integers — corresponding points x which have minimal possible value of f_k(x). If there are multiple answers you can print any of them.

Example

Input


3
3 2
1 2 5
2 1
1 1000000000
1 0
4


Output


3
500000000
4

### Response

```cpp
#include <bits/stdc++.h>
using namespace std;
void itval(istream_iterator<string> it) {}
template <typename T, typename... Args>
void itval(istream_iterator<string> it, T a, Args... args) {
  cerr << *it << " = " << a << endl;
  itval(++it, args...);
}
template <typename T>
inline void print(T x) {
  cout << x << "\n";
}
template <typename T>
inline void printvec(T x) {
  for (auto a : x) cout << a << ' ';
  cout << '\n';
}
const long long int MOD = 1e12 + 7;
struct custom {
  bool operator()(const pair<int, int> &p1, const pair<int, int> &p2) const {
    return p1.first > p2.first;
  }
};
long long int get_pow(long long int x, long long int k) {
  if (k == 0) return 1ll;
  long long int y = get_pow(x, k / 2);
  y = (y * y) % MOD;
  if (k % 2) y = (y * x) % MOD;
  return y;
}
const int N = 3e5 + 50;
void solve() {
  long long int n, k;
  cin >> n >> k;
  vector<long long> a(n);
  for (int i = (int)0; i < int(n); i++) {
    cin >> a[i];
  }
  long long int dist = MOD, ans = a[0];
  for (int i = (int)0; i < int(n - k + 1); i++) {
    if (i + k >= n) break;
    if (dist > a[i + k] - a[i]) {
      dist = a[i + k] - a[i];
      ans = (a[i] + a[i + k]) / 2;
    }
  }
  print(ans);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  int test = 1;
  cin >> test;
  clock_t z = clock();
  for (int tes = (int)0; tes < int(test); tes++) {
    solve();
  }
  fprintf(stderr, "Total Time:%.4f\n", (double)(clock() - z) / CLOCKS_PER_SEC),
      fflush(stderr);
  return 0;
}

```