A. Everybody Likes Good Arrays!

time limit per test

1 second

memory limit per test

256 megabytes

An array aa is good if for all pairs of adjacent elements, aiai and ai+1ai+1 (1≤i<n1≤i<n) are of different parity. Note that an array of size 11 is trivially good.

You are given an array of size nn.

In one operation you can select any pair of adjacent elements in which both elements are of the same parity, delete them, and insert their product in the same position.

Find the minimum number of operations to form a good array.

Input

Each test contains multiple test cases. The first line contains the number of test cases tt (1≤t≤5001≤t≤500). The description of the test cases follows.

The first line of each test case contains an integer nn (1≤n≤1001≤n≤100).

The second line of each test case contains nn integers a1,a2,...,ana1,a2,...,an (1≤ai≤1091≤ai≤109).

Output

For each test case print an integer, the minimum number of operations required to form a good array.

Example

Input

Copy

复制代码

3

5

1 7 11 2 13

4

1 2 3 4

6

1 1 1 2 2 3

Output

Copy

复制代码
2
0
3

Note

Consider the first test case. Select the 22-nd and the 33-rd integers and apply the operation on them. The array changes from [1,7,11,2,13][1,7,11,2,13] to [1,77,2,13][1,77,2,13]. Next, select the 11-st and the 22-nd integers, array changes from [1,77,2,13][1,77,2,13] to [77,2,13][77,2,13]. Thus we require 22 operations. It can be proved that this is the minimum number of operations.

In the second test case, the given array is already good. So we require 00 operations.

解题说明:此题是一道数学题,需要保证连续两个元素奇偶性不同,直接遍历数列,找出存在相同奇偶性的二元组即可。

cpp 复制代码
#include<stdio.h>
int main()
{
	int t;
	scanf("%d", &t);
	while (t--)
	{
		int n, i;
		scanf("%d", &n);
		long long int a[101];
		int ans = 0;
		for (i = 0; i < n; i++)
		{
			scanf("%lld", &a[i]);
		}
		for (i = 0; i < n - 1; i++)
		{
			if ((a[i] % 2 == 1 && a[i + 1] % 2 == 1) || (a[i] % 2 == 0 && a[i + 1] % 2 == 0))
			{
				ans++;
			}
		}
		printf("%d\n", ans);
	}
	return 0;
}
相关推荐
I AM_SUN27 分钟前
98. 验证二叉搜索树
数据结构·c++·算法·leetcode
学习中的码虫1 小时前
数据结构基础排序算法
数据结构·算法·排序算法
_安晓1 小时前
数据结构 -- 顺序查找和折半查找
数据结构
yidaqiqi1 小时前
[目标检测] YOLO系列算法讲解
算法·yolo·目标检测
飞天狗1112 小时前
2024 山东省ccpc省赛
c++·算法
代码不停2 小时前
Java二叉树题目练习
java·开发语言·数据结构
卡尔曼的BD SLAMer2 小时前
计算机视觉与深度学习 | Python实现EMD-SSA-VMD-LSTM-Attention时间序列预测(完整源码和数据)
python·深度学习·算法·cnn·lstm
珊瑚里的鱼3 小时前
【滑动窗口】LeetCode 1658题解 | 将 x 减到 0 的最小操作数
开发语言·c++·笔记·算法·leetcode·stl
yuanManGan3 小时前
进阶数据结构: AVL树
数据结构
落樱弥城3 小时前
角点特征:从传统算法到深度学习算法演进
人工智能·深度学习·算法