Today Hayato came home from school with homework.
In the assignment, Hayato was given an array a of length n. The task was to find 3 numbers in this array whose sum is odd. At school, he claimed that there are such 3 numbers, but Hayato was not sure, so he asked you for help.
Answer if there are such three numbers, and if so, output indices i, j, and k such that ai+aj+ak is odd.
The odd numbers are integers that are not divisible by 2: 1, 3, 5, and so on.
Input
The first line contains a single integer t (1 ≤ t ≤ 10^4) — the number of test cases.
For each test case, the first line contains one integer n (3≤n≤300) — the length of a.
The second line contains n integers a1,a2,…,an (1≤ai≤10^5) — the array a.
It is guaranteed that the sum of n over all test cases does not exceed 2⋅10^5.
Output
For each test case, in the first line print one word "YES" (without quotes) if there are 3 numbers with an odd sum or "NO" (without quotes) if there are no such 3 numbers.
If the answer exists, then on the second line print 3 distinct integers i,j,k (1≤i,j,k≤n) — the indices of the numbers. If there are several answers, output any.
Example
input
6
3
1 1 1
4
1 1 2 2
3
1 2 3
5
1 4 5 1 2
4
2 6 2 4
5
5 6 3 2 1
output
YES 1 2 3 YES 3 4 1 NO YES 1 3 4 NO YES 1 3 5
Note
In the first test case, there is one way to choose 3 numbers, and since 1+1+1=3, this triple is fine for us.
In the second test case, you need to choose the numbers 1,2,2 since 1+2+2=5.
In the third test case, there is one way to choose three numbers, but 1+2+3=6 is an even number, so the required triple does not exist.
In the fifth test case, no matter what three numbers we choose, their sum is even.
思路:
用 vector 数组存储一下下标,然后分类讨论.
参考代码:
#include
using namespace std;
typedef long long ll;
inline int read()
{
int res = 0;bool sym = 0;char ch = getchar();
while (!isdigit(ch)) sym |= (ch == '-'), ch = getchar();
while (isdigit(ch)) res = (res << 3) + (res << 1) + (ch ^ 48), ch = getchar();
return sym ? -res : res;
}
void solve()
{
int n = read(), x;
vector v[2];
for (int i = 1; i <= n; i++)
x = read(), v[x & 1].push_back(i);
if (v[1].size() >= 3)
printf("YES\n%d %d %d\n", v[1][0], v[1][1], v[1][2]);
else if (v[0].size() >= 2 && v[1].size() >= 1)
printf("YES\n%d %d %d\n", v[0][0], v[0][1], v[1][0]);
else
printf("NO\n");
}
int main()
{
int t = read();
while (t--)
solve();
return 0;
}