Codeforces Round #846 (Div. 2)-2023/01/25

A. Hayato and School

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;
}

你可能感兴趣的:(算法,数据结构,c++)