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>).
'''input
7 4
4 7 7 4 7 4 7
'''
import sys
from math import *
from bisect import *
from collections import *
from itertools import *
from functools import *
from heapq import *
input = sys.stdin.readline
def getstr(): return input().rstrip('\r\n')
def getint(): return int(input().strip())
def getints(): return list(map(int, input().strip().split()))
def impossible(): print(-1),exit(0)

n,k = getints()
arr = getints()
if len(set(arr))<k: print("-1 -1"),exit(0)
first = arr[0]
a=b=0
seen = {}
for i in range(n):
	seen[arr[i]] = i
	if len(seen)==k: break

mini = 9999999999
maxi = -1
for k,v in seen.items():
	mini = min(mini, v)
	maxi = max(maxi, v)
print(mini+1, maxi+1)