import
java.util.*;
public
class
GFG {
static
void
nextPermutation(
int
[] nums)
{
int
n = nums.length, k, l;
for
(k = n -
2
; k >=
0
; k--) {
if
(nums[k] < nums[k +
1
]) {
break
;
}
}
if
(k <
0
) {
reverse(nums,
0
, n -
1
);
}
else
{
for
(l = n -
1
; l > k; l--) {
if
(nums[l] > nums[k]) {
break
;
}
}
int
t = nums[k];
nums[k] = nums[l];
nums[l] = t;
reverse(nums, k +
1
, n -
1
);
}
}
static
void
reverse(
int
[] nums,
int
l,
int
r)
{
while
(l < r) {
int
t = nums[l];
nums[l] = nums[r];
nums[r] = t;
l++;
r--;
}
}
static
int
factorial(
int
n)
{
return
(n ==
1
|| n ==
0
) ?
1
: factorial(n -
1
) * n;
}
static
int
[][] permute(
int
[] nums)
{
int
n = nums.length;
int
factn = factorial(n);
int
[][] permuted =
new
int
[factn][n];
for
(
int
i =
0
; i < factn; i++) {
permuted[i] = nums.clone();
nextPermutation(nums);
}
return
permuted;
}
static
void
findPermutation(
int
n,
int
a,
int
b)
{
int
[] nums =
new
int
[n];
for
(
int
i =
0
; i < n; i++) {
nums[i] = i +
1
;
}
int
[][] allpermutations = permute(nums);
int
total = allpermutations.length;
int
ansindex = -
1
;
for
(
int
i =
0
; i < total; i++) {
int
leftmin = allpermutations[i][
0
];
int
rightmax = allpermutations[i][n -
1
];
for
(
int
j =
0
; j < n /
2
; j++) {
if
(allpermutations[i][j] < leftmin) {
leftmin = allpermutations[i][j];
}
}
for
(
int
j = n /
2
; j < n; j++) {
if
(allpermutations[i][j] > rightmax) {
rightmax = allpermutations[i][j];
}
}
if
(leftmin == a && rightmax == b) {
ansindex = i;
break
;
}
}
if
(ansindex == -
1
) {
System.out.print(-
1
);
}
else
{
for
(
int
i =
0
; i < n; i++) {
System.out.print(
allpermutations[ansindex][i] +
" "
);
}
}
}
public
static
void
main(String[] args)
{
int
N =
6
, A =
2
, B =
5
;
findPermutation(N, A, B);
}
}