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分别为数列头和数列尾,然后逐一判断,确保al和ar都不属于数列最大值和最小值。

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;
}
相关推荐
mct12311 分钟前
c++ iconv 字符utf-8转换gb2312失败
开发语言·c++
时间的拾荒人25 分钟前
MySQL C语言连接 - 从入门到实战
android·c语言·mysql
Marst Code2 小时前
Python 3.9 已停止维护!从 3.9 到 3.14 全版本深度对比,生产环境该选哪个?
开发语言·python
ZJH__GO2 小时前
网络编程v2--多客户端互通
java·运维·服务器·开发语言·计算机网络
万岳科技系统开发2 小时前
智慧医院小程序开发推动医疗服务流程全面线上化
大数据·开发语言·人工智能
一只小灿灿2 小时前
C++ 修饰符全面详解
开发语言·c++
马里马里奥-3 小时前
从零搭建AI Agent工具链的技术文章大纲
开发语言·qt
code_pgf3 小时前
C/C++ 中 `typedef` 关键字详解
c语言·c++
不做Java程序猿好多年3 小时前
Java中 String、StringBuffer、StringBuilder 的区别详解
开发语言·python
会周易的程序员4 小时前
js-shm: 高性能 Node.js 共享内存模块
开发语言·javascript·c++·node.js·共享内存·shm