import
java.io.*;
import
java.util.*;
class
GFG {
public
static
int
lowerBound(Map<Integer, List<Integer> > m,
int
pre_sum)
{
int
ans = -
1
;
for
(Integer key : m.keySet()) {
if
(key >= pre_sum) {
ans = key;
break
;
}
}
return
ans;
}
public
static
int
lowerBoundList(List<Integer> li,
int
target)
{
int
ans = -
1
;
for
(
int
i =
0
; i < li.size(); i++) {
if
(li.get(i) >= target) {
ans = i;
break
;
}
}
return
ans;
}
public
static
int
b_search(
int
pre_sum, Map<Integer, List<Integer> > m,
int
index)
{
int
it = lowerBound(m, pre_sum);
if
(it ==
0
)
return
-
1
;
it--;
List<Integer> map_list =
new
ArrayList<Integer>();
map_list = m.get(it);
int
it1 = lowerBoundList(map_list, index);
if
(map_list.get(it1) > index)
return
map_list.get(it1);
return
-
1
;
}
public
static
List<Integer> findSubarray(
int
[] arr,
int
n)
{
Map<Integer, List<Integer> > m
=
new
HashMap<Integer, List<Integer> >();
for
(
int
i =
0
; i < n; i++) {
List<Integer> a =
new
ArrayList<Integer>();
a.add(
0
);
m.put(i, a);
}
int
sum =
0
;
int
[] prefix_sum =
new
int
[n];
for
(
int
i =
0
; i < n; i++) {
sum += arr[i];
if
(sum <
0
) {
List<Integer> xyz
=
new
ArrayList<Integer>();
xyz.add(
0
);
xyz.add(i);
return
xyz;
}
List<Integer> xyz =
new
ArrayList<Integer>();
xyz.add(i);
prefix_sum[i] = sum;
m.put(sum, xyz);
}
for
(
int
i =
1
; i < n; i++)
{
if
(arr[i] <
0
)
{
List<Integer> ret
=
new
ArrayList<Integer>();
ret.add(i);
ret.add(i);
return
ret;
}
else
{
int
pre_sum = prefix_sum[i -
1
];
int
index = b_search(pre_sum, m, i);
if
(index != -
1
) {
List<Integer> ret
=
new
ArrayList<Integer>();
ret.add(i);
ret.add(index);
return
ret;
}
}
}
List<Integer> re =
new
ArrayList<Integer>();
re.add(-
1
);
return
re;
}
public
static
void
main(String[] args)
{
int
[] arr = {
1
,
2
, -
1
,
3
, -
4
,
3
, -
5
};
int
n = arr.length;
List<Integer> res =
new
ArrayList<Integer>();
res = findSubarray(arr, n);
if
(res.get(
0
) == -
1
)
System.out.println(
"-1"
);
else
{
System.out.print(res.get(
0
));
System.out.print(
" "
);
System.out.println(res.get(
1
));
}
}
}