#include <bits/stdc++.h>
using namespace std;
const int MX = 2e6 + 10;
const int mod = 1e9 + 7;
const long long int inf = 1LL << 62;
int dx4[] = {0, 0, -1, 1};
int dy4[] = {1, -1, 0, 0};
int dx[] = {1, 1, 1, 0, 0, -1, -1, -1};
int dy[] = {1, 0, -1, 1, -1, 1, 0, -1};
map<long long int, vector<long long int> > mp;
queue<long long int> Q;
priority_queue<pair<long long int, long long int> > PQ;
vector<long long int> v, v1, v2, v3;
set<int> second;
int main() {
  long long int n, m, k, q, t, cnt = 0, sum = 0, ans = 0, mx = -inf, mn = inf,
                               a, b, c, d, e, f, g, h, i, j, x, y, z, temp,
                               temp1;
  string s, s1, s2, s3;
  cin >> q;
  while (q--) {
    scanf("%lld", &n);
    for (int i = 0; i < n; i++) {
      scanf("%lld", &a);
      v.push_back(a);
    }
    sort((v).begin(), (v).end());
    a = v[n - 2];
    cout << min(n - 2, a - 1) << endl;
    v.clear();
  }
  return 0;
}
