C. Dora and Search

time limit per test

1 second

memory limit per test

256 megabytes

As you know, the girl Dora is always looking for something. This time she was given a permutation, and she wants to find such a subsegment of it that none of the elements at its ends is either the minimum or the maximum of the entire subsegment. More formally, you are asked to find the numbers l and r (1≤l≤r≤n) such that al≠min(al,al+1,...,ar), al≠max(al,al+1,...,ar) and ar≠min(al,al+1,...,ar), ar≠max(al,al+1,...,ar).

A permutation of length n is an array consisting of n distinct integers from 1 to n in any order. For example, [2,3,1,5,4] is a permutation, but [1,2,2] is not a permutation (2 occurs twice in the array) and [1,3,4] is also not a permutation (n=3, but 4 is present in the array).

Help Dora find such a subsegment, or tell her that such a subsegment does not exist.

Input

Each test consists of multiple test cases. The first line contains a single integer t (1≤t≤104) --- the number of test cases. Description of the test cases follows.

For each test case, the first line contains one integer n (1≤n≤2⋅105) --- the length of permutation.

The second line contains n distinct integers a1,a2,...,an (1≤ai≤n) --- the elements of permutation.

It is guarented that the sum of n over all test cases doesn't exceed 2⋅105.

Output

For each test case, output −1 if the desired subsegment does not exist.

Otherwise, output two indexes l,r such that [al,al+1,...,ar] satisfies all conditions.

If there are several solutions, then output any of them.

Example

Input

Copy

复制代码

4

3

1 2 3

4

2 1 4 3

7

1 3 2 4 6 5 7

6

2 3 6 5 4 1

Output

Copy

复制代码
-1
1 4
2 6
-1

Note

In the first and fourth test cases, it can be shown that there are no desired subsegments.

In the second test case, the subsegment [1,4] satisfies all the conditions, because max(a1,a2,a3,a4)=4,min(a1,a2,a3,a4)=1, as we see, all the conditions are met.

In the third test case, the subsegment [2,6] also satisfies all the conditions described.

解题说明:此题是一道模拟题,找出一对下标,使得对应数字符合要求。可以采用遍历算法,先假设l和r分别为数列头和数列尾,然后逐一判断,确保a[l]和a[r]都不属于数列最大值和最小值。

cpp 复制代码
#include <stdio.h>

int a[200006];

int main(void) 
{
    int t;
    scanf("%d", &t);

    while (t--) 
    {
        int n;
        scanf("%d", &n);
  
        for (int i = 0; i < n; i++)
        {
            scanf("%d", &a[i]);
        }
        int l = 1, r = n;
        int smallest = 1;
        int largest = n;

        while (l < r) 
        {
            int flag = 1;

            if (a[l - 1] <= smallest)
            {
                l++;
                smallest++;
                flag = 0;
            }
            if (a[r - 1] <= smallest) 
            {
                r--;
                smallest++;
                flag = 0;
            }
            if (a[l - 1] >= largest)
            {
                l++;
                largest--;
                flag = 0;
            }
            if (a[r - 1] >= largest) 
            {
                r--;
                largest--;
                flag = 0;
            }
            if (flag)
            {
                break;
            }
        }

        if (r - l <= 1)
        {
            printf("-1\n");
        }
        else
        {
            printf("%d %d\n", l, r);
        }
    }

    return 0;
}
相关推荐
John Song3 小时前
Python创建虚拟环境的方式对比与区别?
开发语言·python
搞程序的心海3 小时前
Python面试题(一):5个最常见的Python基础问题
开发语言·python
炒鸡菜6669 小时前
程序人生-Hello’s P2P
c语言·程序人生·职场和发展
2401_884602279 小时前
程序人生-Hello’s P2P
c语言·c++
MediaTea10 小时前
Python:collections.Counter 常用函数及应用
开发语言·python
LawrenceLan10 小时前
37.Flutter 零基础入门(三十七):SnackBar 与提示信息 —— 页面反馈与用户交互必学
开发语言·前端·flutter·dart
李昊哲小课10 小时前
Python json模块完整教程
开发语言·python·json