import
java.io.*;
import
java.util.*;
class
GFG
{
public
static
void
findMinMaxPermutation(List<Integer> A)
{
int
n = A.size();
HashSet<Integer> s =
new
HashSet<Integer>();
List<Integer> mini =
new
ArrayList<Integer>();
List<Integer> maxi =
new
ArrayList<Integer>();
for
(
int
i =
1
; i < n +
1
; i++)
s.add(i);
int
curr_max =
0
;
for
(
int
i =
0
; i < n; i++) {
int
number = Integer.MAX_VALUE;
if
(curr_max < A.get(i)) {
number = A.get(i);
}
else
for
(
int
var : s) {
if
(var < number)
number = var;
}
s.remove(number);
mini.add(number);
curr_max = Math.max(curr_max,
mini.get(mini.size() -
1
));
}
curr_max =
0
;
for
(
int
i =
1
; i < n +
1
; i++)
s.add(i);
for
(
int
i =
0
; i < n; i++) {
int
number =
0
;
if
(curr_max < A.get(i))
number = A.get(i);
else
{
for
(
int
num : s) {
if
(num <= A.get(i))
number = Math.max(number, num);
}
}
s.remove(number);
maxi.add(number);
curr_max = Math.max(curr_max,
maxi.get(maxi.size() -
1
));
}
System.out.print(
"Lexicographically smallest permutation is : "
);
for
(
int
i : mini)
System.out.print(i +
" "
);
System.out.println(
""
);
System.out.print(
"Lexicographically largest permutation is : "
);
for
(
int
i : maxi)
System.out.print(i +
" "
);
System.out.println(
""
);
}
public
static
void
main(String[] args)
{
List<Integer> A =
new
ArrayList<Integer>(
Arrays.asList(
2
,
4
,
4
,
4
,
6
,
6
));
findMinMaxPermutation(A);
}
}