#include <bits/stdc++.h>
using namespace std;
long long read() {
  long long x = 0;
  char ch = getchar();
  for (; !isdigit(ch); ch = getchar())
    ;
  for (; isdigit(ch); ch = getchar()) x = (x << 3) + (x << 1) + (ch ^ 48);
  return x;
}
const long long INF = 1e18;
long long n, K, w[400010];
int m;
pair<long long, long long> bin[400010];
int bintop;
bool check1(long long x) {
  long long res = 0;
  for (int i = 1; i <= m; i++) res += w[i] / x;
  return res >= K + m;
}
bool check2(long long x) {
  long long res = 0;
  for (int i = 1; i <= m; i++) res += (w[i] + x - 1) / x;
  return res <= K + m;
}
void init() {}
void solve() {
  n = read(), m = read(), K = read();
  w[0] = 0;
  for (int i = 1; i <= m; i++) w[i] = read();
  w[++m] = n;
  for (int i = m; i; i--) w[i] -= w[i - 1];
  long long L0, R0;
  long long l = 1, r = n, mid;
  while (l < r) {
    mid = l + r + 1 >> 1;
    if (check1(mid))
      l = mid;
    else
      r = mid - 1;
  }
  L0 = l;
  l = 1, r = n;
  while (l < r) {
    mid = l + r >> 1;
    if (check2(mid))
      r = mid;
    else
      l = mid + 1;
  }
  R0 = l;
  if (L0 >= R0) return puts("0"), void();
  bintop = 0;
  for (int i = 1; i <= m; i++) {
    long long a = (w[i] + R0 - 1) / R0, b = w[i] / L0;
    if (a <= b) continue;
    bin[++bintop] =
        (pair<long long, long long>){w[i] / a, b ? (w[i] + b - 1) / b : INF};
  }
  bin[++bintop] = (pair<long long, long long>){-INF, R0};
  bin[++bintop] = (pair<long long, long long>){L0, INF};
  sort(bin + 1, bin + bintop + 1);
  long long ans = INF;
  long long premax = -INF;
  for (int i = 1; i < bintop; i++) {
    premax = max(premax, bin[i].second);
    ans = min(ans, premax - bin[i + 1].first);
  }
  printf("%I64d\n", ans);
}
int main() {
  for (int T = read(); T--;) init(), solve();
  return 0;
}
