Problem: You are given array a with n integers and m queries. The i-th query is given with three integers li, ri, xi.

For the i-th query find any position pi (li ≤ pi ≤ ri) so that api ≠ xi.

Input

The first line contains two integers n, m (1 ≤ n, m ≤ 2·105) — the number of elements in a and the number of queries.

The second line contains n integers ai (1 ≤ ai ≤ 106) — the elements of the array a.

Each of the next m lines contains three integers li, ri, xi (1 ≤ li ≤ ri ≤ n, 1 ≤ xi ≤ 106) — the parameters of the i-th query.

Output

Print m lines. On the i-th line print integer pi — the position of any number not equal to xi in segment [li, ri] or the value  - 1 if there is no such number.

Examples

Input

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


Output

2
6
-1
4

Solution (in JAVA):

Solution:
import java.io.*;
import java.lang.reflect.Array;
import java.math.BigInteger;
import java.util.*;


public class q5 {
	static ArrayList<Integer>[] gph;
	
	public static void main(String[] args) throws IOException {
		
		Reader.init(System.in);
		PrintWriter out=new PrintWriter(System.out);
		StringBuffer output=new StringBuffer(""),output2=new StringBuffer("");
		int n=Reader.nextInt();
		int m=Reader.nextInt();
		int[] arr=new int[n+1];
		int [] pre=new int[n+1];
		for(int i=1;i<=n;i++) {
			arr[i]=Reader.nextInt();
			if(arr[i]==arr[i-1]) {
				pre[i]=pre[i-1];
			}
			else pre[i]=i-1;
		}
		while(m>0) {
			m--;
			int a=Reader.nextInt();int b=Reader.nextInt();int c=Reader.nextInt();
			if(arr[b]!=c) {
				out.print(b);
			}
			else if(pre[b]>=a) out.print(pre[b]);
			else out.print(-1);
			out.println();
		}
		out.flush();
	}
}



class NoD{
	int a, b;
	NoD(int aa,int bb){
		a=Math.min(aa, bb);b=Math.max(aa, bb);
	}
}







class Reader {
    static BufferedReader reader;
    static StringTokenizer tokenizer;
    /** call this method to initialize reader for InputStream */
    static void init(InputStream input) {
        reader = new BufferedReader(
                     new InputStreamReader(input) );
        tokenizer = new StringTokenizer("");
    }
    /** get next word */
    static String nextLine() throws IOException{
    	return reader.readLine();
    }
    static String next() throws IOException {
        while ( ! tokenizer.hasMoreTokens() ) {
            //TODO add check for eof if necessary
            tokenizer = new StringTokenizer(
                   reader.readLine() );
        }
        return tokenizer.nextToken();
    }
    static int nextInt() throws IOException {
        return Integer.parseInt( next() );
    }
    static long nextLong() throws IOException {
        return Long.parseLong( next() );
    }
    static double nextDouble() throws IOException {
        return Double.parseDouble( next() );
    }
}