You've got an array *a*, consisting of *n* integers: *a*<sub class="lower-index">1</sub>, *a*<sub class="lower-index">2</sub>, ..., *a*<sub class="lower-index">*n*</sub>. Your task is to find a minimal by inclusion segment [*l*, *r*] (1 ≤ *l* ≤ *r* ≤ *n*) such, that among numbers *a*<sub class="lower-index">*l*</sub>,  *a*<sub class="lower-index">*l* + 1</sub>,  ...,  *a*<sub class="lower-index">*r*</sub> there are exactly *k* distinct numbers.

Segment [*l*, *r*] (1 ≤ *l* ≤ *r* ≤ *n*; *l*, *r* are integers) of length *m* = *r* - *l* + 1, satisfying the given property, is called minimal by inclusion, if there is no segment [*x*, *y*] satisfying the property and less then *m* in length, such that 1 ≤ *l* ≤ *x* ≤ *y* ≤ *r* ≤ *n*. Note that the segment [*l*, *r*] doesn't have to be minimal in length among all segments, satisfying the given property.
The first line contains two space-separated integers: *n* and *k* (1 ≤ *n*, *k* ≤ 10<sup class="upper-index">5</sup>). The second line contains *n* space-separated integers *a*<sub class="lower-index">1</sub>, *a*<sub class="lower-index">2</sub>, ..., *a*<sub class="lower-index">*n*</sub> — elements of the array *a* (1 ≤ *a*<sub class="lower-index">*i*</sub> ≤ 10<sup class="upper-index">5</sup>).
from collections import defaultdict, deque
from functools import lru_cache
from heapq import heappush, heappop
from typing import Counter
from bisect import bisect_right, bisect_left
import math
hpop = heappop
hpush = heappush
"""
    num = int(input())
    arr = list(map(int, input().split()))
    a,b = map(int, input().split())
    graph = defaultdict(list)
    for i in range(#)
        graph[a].append(b)
        graph[b].append(a)
    MOD = 10**9 + 7
"""
def solution():
    n,k = map(int, input().split())
    arr = list(map(int, input().split()))
    if k == 1:
        print(0,0)
        return;

    x,y = float("-inf"), float("inf")
    uniq = 0
    win = defaultdict(int)
    left = 0
    for i in range(len(arr)):
        uniq += win[arr[i]] == 0
        win[arr[i]] += 1
        while uniq >= k:
            if((i-left + 1) < (y - x + 1)):
                x,y = left,i
            win[arr[left]] -= 1
            uniq -= win[arr[left]] == 0
            left += 1

    if [x,y] !=  [float("-inf"), float("inf")]:
        print(x+1,y+1) 
        return;
    print(-1,-1) 



def main():
    t = 1
    #t = int(input())
    for _ in range(t):
        solution()
    
import sys
import threading
sys.setrecursionlimit(1 << 30)
threading.stack_size(1 << 27)
thread = threading.Thread(target=main)
thread.start(); thread.join()
#main()
