using
System;
using
System.Collections;
using
System.Collections.Generic;
class
GFG
{
static
void
MaxRange(List<
int
> A,
int
n)
{
int
[] left =
new
int
[n];
int
[] right =
new
int
[n];
Stack s =
new
Stack();
s.Push(
new
Tuple<
int
,
int
>(Int32.MaxValue, -1));
for
(
int
i = 0; i < n; i++)
{
while
(((Tuple<
int
,
int
>)s.Peek()).Item1 < A[i])
s.Pop();
left[i] = ((Tuple<
int
,
int
>)s.Peek()).Item2;
s.Push(
new
Tuple<
int
,
int
>(A[i], i));
}
while
(s.Count > 0)
s.Pop();
s.Push(
new
Tuple<
int
,
int
>(Int32.MaxValue, n));
for
(
int
i = n - 1; i >= 0; i--) {
while
(((Tuple<
int
,
int
>)s.Peek()).Item1 < A[i])
s.Pop();
right[i] = ((Tuple<
int
,
int
>)s.Peek()).Item2;
s.Push(
new
Tuple<
int
,
int
>(A[i], i));
}
for
(
int
i = 0; i < n; i++) {
Console.WriteLine((left[i] + 1) +
" "
+ (right[i] - 1));
}
}
static
void
Main ()
{
List<
int
> arr =
new
List<
int
>();
arr.Add(1);
arr.Add(3);
arr.Add(2);
int
n = arr.Count;
MaxRange(arr, n);
}
}