A Array with nums

time limit per test

1 second

memory limit per test

256 megabytes

input

standard input

output

standard output

You are given an array aa consisting of nn integers.

In one move, you can choose two indices 1≤i,j≤n1≤i,j≤n such that i≠ji≠j and set ai:=ajai:=aj. You can perform such moves any number of times (possibly, zero). You can choose different indices in different operations. The operation := is the operation of assignment (i.e. you choose ii and jj and replace aiai with ajaj).

Your task is to say if it is possible to obtain an array with an odd (not divisible by 22) sum of elements.

You have to answer tt independent test cases.

Input

The first line of the input contains one integer tt (1≤t≤20001≤t≤2000) — the number of test cases.

The next 2t2t lines describe test cases. The first line of the test case contains one integer nn (1≤n≤20001≤n≤2000) — the number of elements in aa. The second line of the test case contains nn integers a1,a2,…,ana1,a2,…,an (1≤ai≤20001≤ai≤2000), where aiai is the ii-th element of aa.

It is guaranteed that the sum of nn over all test cases does not exceed 20002000 (∑n≤2000∑n≤2000).

Output

For each test case, print the answer on it — "YES" (without quotes) if it is possible to obtain the array with an odd sum of elements, and "NO" otherwise.

Example

input

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

output

YES
NO
YES
NO
NO

 

在看到这题目的时候有点儿懵逼,没看懂英文什么意思,仔细研究了以下发现题意大致如下:

假设有一个数组a,里面的数值可以被赋值,例如:a[i] = a[j];找出是否有可能使数组中的和为奇数,若可以则输出yes,否则输出no;

有这样一种方法:

假设数组包含n个元素,若n个元素中含有偶数个奇数,其余均为奇数,根据题意可知,偶数可以被替换为奇数(不一定被全部替换)

可以查找数组中目前有多少个奇数:(有以下两个极端情况)

若奇数的个数为n,则说明该数组中每个数字都是奇数。若n为偶数,则不可能。否则就有可能。

若奇数个数为0个,则一定不能使数组中的和为奇数。

代码如下:

import java.util.Scanner;
 
public class Arraywithodd {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		for(int i=1;i <= n;i++) {
			int t = sc.nextInt();
			int data[] = new int[t];
			int sum = 0;//记录是否是偶数个奇数
			for(int j = 0;j<t;j++) {
				data[j]=sc.nextInt();
				if(data[j] % 2 !=0)
				{
					sum++;
				}
			}
			if((t % 2 == 0 && sum == t) || sum == 0) {
				System.out.println("NO");
			}else {
				System.out.println("YES");
			}
		}
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值