1
3
5 3 4
 6
5
5 3 4 4 5
3
1 1 1
5
4 4 3 4 4
5
5 5 4 3 2
3
1 1 2
5
5 4 3 5 5
 1
3
10 1 5

1
 1
-1
2
2
3
1
 1

import java.io.*;
import java.math.BigInteger;
import java.util.*;

public class test2{

    public static void main(String[] args) throws IOException{
        Reader sc = new Reader();
		int t = sc.nextInt();
        while(t-- > 0){
            int n =sc.nextInt();
            int[] a=new int[n+1];
			
			boolean allSame=true;
			a[1]=sc.nextInt();
		    for(int i=2; i<=n; i++){
				a[i]=sc.nextInt();
				if(a[i]!=a[i-1])
					allSame=false;
			}
			int max=0;
			for(int i=1; i<=n; i++)
				max= Math.max(max, a[i]);
			int i=1;
			for(; i<=n; i++){
				if(a[i]==max)
					break;
			}
			while(i<=n-1 && a[i]==a[i+1])
				i++;
			if(allSame)
				i=-1;
			// int i=1;
			// for(; i<=n-1;){
			// 	if(a[i]!=max || a[i]==a[i+1])
			// 		i++;
			// 	else
			// 		break;
			// }
			
			// if(i == n && a[n]==max )
			// 	System.out.println(n);
			// else if(i== n)
			// 	System.out.println(-1);
			// else
			// 	System.out.println(i);
			System.out.println(i);
		}
    }

    static String printRev(StringBuilder sb){
        return sb.reverse().toString();
    }

    static class Reader {
	    final private int BUFFER_SIZE = 1 << 16;
	    private DataInputStream din;
	    private byte[] buffer;
	    private int bufferPointer, bytesRead;

	    public Reader() {
	      din = new DataInputStream(System.in);
	      buffer = new byte[BUFFER_SIZE];
	      bufferPointer = bytesRead = 0;
	    }

	    public Reader(String file_name) throws IOException {
	      din = new DataInputStream(new FileInputStream(file_name));
	      buffer = new byte[BUFFER_SIZE];
	      bufferPointer = bytesRead = 0;
	    }

	    public String readLine() throws IOException {
	      byte[] buf = new byte[64];
	      int cnt = 0, c;
	      while ((c = read()) != -1) {
	        if (c == '\n') break;
	        buf[cnt++] = (byte) c;
	      }
	      return new String(buf, 0, cnt);
	    }

	    public int nextInt() throws IOException {
	      int ret = 0;
	      byte c = read();
	      while (c <= ' ') c = read();
	      boolean neg = (c == '-');
	      if (neg) c = read();
	      do {
	        ret = ret * 10 + c - '0';
	      } while ((c = read()) >= '0' && c <= '9');
	      if (neg) return -ret;
	      return ret;
	    }

	    public long nextLong() throws IOException {
	      long ret = 0;
	      byte c = read();
	      while (c <= ' ') c = read();
	      boolean neg = (c == '-');
	      if (neg) c = read();
	      do {
	        ret = ret * 10 + c - '0';
	      } while ((c = read()) >= '0' && c <= '9');
	      if (neg) return -ret;
	      return ret;
	    }

	    public double nextDouble() throws IOException {
	      double ret = 0, div = 1;
	      byte c = read();
	      while (c <= ' ') c = read();
	      boolean neg = (c == '-');
	      if (neg) c = read();
	      do {
	        ret = ret * 10 + c - '0';
	      } while ((c = read()) >= '0' && c <= '9');
	      if (c == '.')
	        while ((c = read()) >= '0' && c <= '9') ret += (c - '0') / (div *= 10);
	      if (neg) return -ret;
	      return ret;
	    }

	    private void fillBuffer() throws IOException {
	      bytesRead = din.read(buffer, bufferPointer = 0, BUFFER_SIZE);
	      if (bytesRead == -1) buffer[0] = -1;
	    }

	    private byte read() throws IOException {
	      if (bufferPointer == bytesRead) fillBuffer();
	      return buffer[bufferPointer++];
	    }

	    public void close() throws IOException {
	      if (din == null) return;
	      din.close();
	    }
	  }
}
