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;
}
相关推荐
liuyao_xianhui21 分钟前
优选算法_最小基因变化_bfs_C++
java·开发语言·数据结构·c++·算法·哈希算法·宽度优先
jimy134 分钟前
C语言实现-----面向对象编程
c语言·数据结构
Kethy__38 分钟前
计算机中级-数据库系统工程师-数据结构-树与二叉树(2)
数据结构·数据库·软考··计算机中级
黎阳之光38 分钟前
数智技术如何赋能空天地一体化,领跑低空经济新赛道
大数据·人工智能·算法·安全·数字孪生
Dr.F.Arthur1 小时前
我的算法笔记——哈希表篇
数据结构·笔记·散列表
小肝一下1 小时前
每日两道力扣,day2
c++·算法·leetcode·职场和发展
漂流瓶jz1 小时前
UVA-11846 找座位 题解答案代码 算法竞赛入门经典第二版
数据结构·算法·排序算法·深度优先·aoapc·算法竞赛入门经典·uva
米粒12 小时前
力扣算法刷题 Day 31 (贪心总结)
算法·leetcode·职场和发展
少许极端2 小时前
算法奇妙屋(四十)-贪心算法学习之路7
java·学习·算法·贪心算法
AlenTech3 小时前
647. 回文子串 - 力扣(LeetCode)
算法·leetcode·职场和发展