import
java.util.*;
public
class
Main {
public
static
List<List<Integer>> findOrder(List<List<Integer>> A, List<List<Integer>> x, List<List<Integer>> y, List<List<Integer>> z) {
int
flag =
1
;
for
(
int
i =
0
; i < x.size(); ++i) {
if
(x.get(i).get(
3
).equals(y.get(i).get(
3
)) && y.get(i).get(
3
).equals(z.get(i).get(
3
))) {
continue
;
}
else
{
flag =
0
;
break
;
}
}
List<List<Integer>> Order =
new
ArrayList<>();
if
(flag ==
1
) {
for
(
int
i =
0
; i < x.size(); ++i) {
Order.add(A.get(x.get(i).get(
3
)));
}
}
return
Order;
}
public
static
void
printOrder(List<List<Integer>> A) {
List<List<Integer>> x =
new
ArrayList<>();
List<List<Integer>> y =
new
ArrayList<>();
List<List<Integer>> z =
new
ArrayList<>();
for
(
int
i =
0
; i < A.size(); ++i) {
x.add(Arrays.asList(A.get(i).get(
0
), A.get(i).get(
1
), A.get(i).get(
2
), i));
y.add(Arrays.asList(A.get(i).get(
1
), A.get(i).get(
0
), A.get(i).get(
2
), i));
z.add(Arrays.asList(A.get(i).get(
2
), A.get(i).get(
0
), A.get(i).get(
1
), i));
}
Comparator<List<Integer>> comp =
new
Comparator<List<Integer>>() {
@Override
public
int
compare(List<Integer> a, List<Integer> b) {
return
b.get(
0
).compareTo(a.get(
0
));
}
};
Collections.sort(x, comp);
Collections.sort(y, comp);
Collections.sort(z, comp);
List<List<Integer>> order = findOrder(A, x, y, z);
if
(order.size() ==
0
) {
System.out.println(
"Impossible"
);
}
else
{
for
(List<Integer> v : order) {
for
(
int
i : v) {
System.out.print(i +
" "
);
}
System.out.println();
}
}
}
public
static
void
main(String[] args) {
List<List<Integer>> A =
new
ArrayList<>();
A.add(Arrays.asList(
4
,
1
,
1
));
A.add(Arrays.asList(
3
,
1
,
1
));
A.add(Arrays.asList(
2
,
1
,
1
));
printOrder(A);
}
}