Problem: The array a with n integers is given. Let's call the sequence of one or more consecutive elements in a segment. Also let's call the segment k-good if it contains no more than k different values.

Find any longest k-good segment.

As the input/output can reach huge size it is recommended to use fast input/output methods: for example, prefer to use scanf/printf instead of cin/cout in C++, prefer to use BufferedReader/PrintWriter instead of Scanner/System.out in Java.

Input

The first line contains two integers n, k (1 ≤ k ≤ n ≤ 5·105) — the number of elements in a and the parameter k.

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

Output

Print two integers l, r (1 ≤ l ≤ r ≤ n) — the index of the left and the index of the right ends of some k-good longest segment. If there are several longest segments you can print any of them. The elements in a are numbered from 1 to n from left to right.

Examples

Input

5 5
1 2 3 4 5


Output

1 5


Input

9 3
6 5 1 2 3 2 1 4 5


Output

3 7


Input

3 1
1 2 3


Output

1 1

Solution (in JAVA):

Solution:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.*;

public class Main {
    static double dist(int x1, int y1, int x2, int y2) {
        return Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2);
    }

    public static void main(String[] args) {
        class Pair {
            public Pair(int a, int b) {
                this.a = a;
                this.b = b;
            }
            int a,b;
        }
        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
            PrintWriter pw = new PrintWriter(System.out);
            int count = Integer.parseInt(reader.readLine());
            long val[] = new long[count];
            TreeSet<Long> set = new TreeSet<>();
            Pair p = new Pair(1,0);
            ArrayList<Pair> pairs = new ArrayList<>(count);
            String[] line = reader.readLine().split(" ");
            for (int i = 0; i<line.length; i++) {
                val[i] = Integer.parseInt(line[i]);
                if (!set.contains(val[i])) {
                    set.add(val[i]);
                } else {
                    p.b = i+1;
                    pairs.add(p);
                    p = new Pair(i+2,0);
                    set = new TreeSet<>();
                }
            }

            if (pairs.size()==0) {
                System.out.println(-1);
            } else {
                System.out.println(pairs.size());
                if (pairs.get(pairs.size()-1).b!=count) {
                    Pair pair = pairs.get(pairs.size()-1);
                    pair.b = count;
                }
                for (Pair pair: pairs) {
                    pw.println(pair.a+" "+pair.b);
                }
            }
            pw.close();
            reader.close();
        } catch (Exception e) {}


    }
}