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,131,7,11,2,13 to 1,77,2,131,77,2,13. Next, select the 11-st and the 22-nd integers, array changes from 1,77,2,131,77,2,13 to 77,2,1377,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;
}
相关推荐
通信小呆呆8 小时前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人
benben0448 小时前
强化学习之DQN算法族(基于gymnasium开发)
算法
小小工匠9 小时前
Redis - 事务机制:能实现 ACID 属性吗
数据结构·redis·性能优化·并发·持久化
玖玥拾9 小时前
C/C++ 数据结构(七)栈、容器适配器
c语言·数据结构·c++··容器适配器
何以解忧,唯有..10 小时前
Go语言循环语句详解:for、range与循环控制
开发语言·算法·golang
想吃火锅100510 小时前
【leetcode】88.合并两个有序数组js
算法
生成论实验室11 小时前
机器人:一个自主运动的系统
人工智能·算法·语言模型·机器人·自动驾驶·agi·安全架构
Qres82111 小时前
算法复键——树状数组
数据结构·算法
H1785350909611 小时前
SolidWorks第四部分_直接实体建模特征9_替换面原理
线性代数·算法·机器学习·3d建模·solidworks