#include <bits/stdc++.h>
using namespace std;
long long int d[400001], num[400001];
int decr[400001], inc[400001];
priority_queue<pair<long long int, int>, vector<pair<long long int, int> >,
               greater<pair<long long int, int> > >
    H1;
priority_queue<pair<long long int, int> > H2;
int main() {
  int i;
  int t, m;
  long long int n, k, p, o;
  scanf("%d", &t);
  while (t--) {
    scanf("%I64d %d %I64d", &n, &m, &k), o = 0;
    for (i = 0; i < m; i++) scanf("%I64d", &p), d[i] = p - o, o = p;
    d[m++] = n - o, k += m;
    long long int l = 1, r = n;
    while (l < r) {
      long long int mid = (l + r) / 2;
      long long int s = 0;
      for (i = 0; i < m; i++) s += (d[i] + mid - 1) / mid;
      if (s > k)
        l = mid + 1;
      else
        r = mid;
    }
    long long int s = 0;
    for (i = 0; i < m; i++) num[i] = (d[i] + r - 1) / r, s += num[i];
    for (i = 0; i < m; i++) {
      if ((s < k) && ((d[i] + num[i] - 1) / num[i] == r)) {
        long long int x = (d[i] - 1) / (r - 1) - num[i] + 1;
        x = min(x, k - s);
        num[i] += x, s += x;
      }
      l = min(l, d[i] / num[i]);
    }
    long long int ans = r - l;
    for (i = 0; i < m; i++)
      H1.push(make_pair(d[i] / num[i], i)),
          H2.push(make_pair(d[i] / (num[i] + 1), i));
    fill(decr, decr + m, 0), fill(inc, inc + m, 0);
    int tt = m;
    while (tt--) {
      while (d[H1.top().second] / num[H1.top().second] != H1.top().first)
        H1.pop();
      while (d[H2.top().second] / (num[H2.top().second] + 1) != H2.top().first)
        H2.pop();
      int u = H1.top().second, v = H2.top().second;
      H1.pop(), H2.pop();
      if (u == v) break;
      num[u]--, num[v]++;
      decr[u] = 1, inc[v] = 1;
      if (decr[u] && inc[u]) break;
      if (decr[v] && inc[v]) break;
      if (num[u] == 0) break;
      r = max(r, (d[u] + num[u] - 1) / num[u]);
      H1.push(make_pair(d[u] / num[u], u));
      if (d[u] / num[u] != d[u] / (num[u] + 1))
        H2.push(make_pair(d[u] / (num[u] + 1), u));
      if (d[v] / num[v] != d[v] / (num[v] - 1))
        H1.push(make_pair(d[v] / num[v], v));
      H2.push(make_pair(d[v] / (num[v] + 1), v));
      while (d[H1.top().second] / num[H1.top().second] != H1.top().first)
        H1.pop();
      ans = min(ans, r - H1.top().first);
    }
    printf("%I64d\n", ans);
    while (!H1.empty()) H1.pop();
    while (!H2.empty()) H2.pop();
  }
  return 0;
}
