A. DIY Wooden Ladder

time limit per test

2 seconds

memory limit per test

256 megabytes

input

standard input

output

standard output

Let's denote a kk-step ladder as the following structure: exactly k+2k+2 wooden planks, of which

  • two planks of length at least k+1k+1 — the base of the ladder;
  • kk planks of length at least 11 — the steps of the ladder;

Note that neither the base planks, nor the steps planks are required to be equal.

For example, ladders 11 and 33 are correct 22-step ladders and ladder 22 is a correct 11-step ladder. On the first picture the lengths of planks are [3,3][3,3] for the base and [1][1] for the step. On the second picture lengths are [3,3][3,3] for the base and [2][2] for the step. On the third picture lengths are [3,4][3,4] for the base and [2,3][2,3] for the steps.

A. DIY Wooden Ladder_第1张图片

You have nn planks. The length of the ii-th planks is aiai. You don't have a saw, so you can't cut the planks you have. Though you have a hammer and nails, so you can assemble the improvised "ladder" from the planks.

The question is: what is the maximum number kk such that you can choose some subset of the given planks and assemble a kk-step ladder using them?

Input

The first line contains a single integer TT (1≤T≤1001≤T≤100) — the number of queries. The queries are independent.

Each query consists of two lines. The first line contains a single integer nn (2≤n≤1052≤n≤105) — the number of planks you have.

The second line contains nn integers a1,a2,…,ana1,a2,…,an (1≤ai≤1051≤ai≤105) — the lengths of the corresponding planks.

It's guaranteed that the total number of planks from all queries doesn't exceed 105105.

Output

Print TT integers — one per query. The ii-th integer is the maximum number kk, such that you can choose some subset of the planks given in the ii-th query and assemble a kk-step ladder using them.

Print 00 if you can't make even 11-step ladder from the given set of planks.

Example

input

Copy

4
4
1 3 1 3
3
3 3 2
5
2 3 3 4 2
3
1 1 2

output

Copy

2
1
2
0

Note

Examples for the queries 1−31−3 are shown at the image in the legend section.

The Russian meme to express the quality of the ladders:

A. DIY Wooden Ladder_第2张图片

解题说明:题意是给出测试样例的数目,每个测试样子包含一个n和n个数,从中选出能搭建楼梯的阶数,如果是k阶楼梯,那么楼梯的两边长度必须为k+1,问最多能搭建几个阶梯。做法是将数据排序,选择最大的两个数做楼梯的两边,剩下的做个判断即可



#include
#include
#include
#include

using namespace std;

int main()
{
	int t;
	scanf("%d", &t);
	while (t--) 
	{
		int n, i, max1, max2, a;
		scanf("%d", &n);
		max1 = max2 = 1;
		for (i = 0; i < n; i++)
		{
			scanf("%d", &a);
			if (max1 < a)
			{
				max2 = max1;
				max1 = a;
			}
			else if (max2 < a)
			{
				max2 = a;
			}
		}
		printf("%d\n", max2 - 1 < n - 2 ? max2 - 1 : n - 2);
	}
	return 0;
}

 

你可能感兴趣的:(AC路漫漫)