import
java.util.ArrayList;
public
class
Main {
public
static
void
dfs(
int
curr,
int
prev_dist,
ArrayList<Integer> arrangement,
ArrayList<Integer> seats,
int
dist,
int
[] total_seatings)
{
if
(curr > seats.size()) {
return
;
}
if
(curr == seats.size()) {
total_seatings[
0
] +=
1
;
return
;
}
if
(prev_dist < dist) {
dfs(curr +
1
, prev_dist + seats.get(curr),
arrangement, seats, dist, total_seatings);
}
else
{
arrangement.add(curr);
dfs(curr +
1
, seats.get(curr), arrangement,
seats, dist, total_seatings);
arrangement.remove(arrangement.size() -
1
);
dfs(curr +
1
, prev_dist + seats.get(curr),
arrangement, seats, dist, total_seatings);
}
return
;
}
public
static
int
get_possible_seatings(ArrayList<Integer> seats)
{
seats.add(
0
);
ArrayList<Integer> arrangement
=
new
ArrayList<Integer>();
int
[] total_seatings = {
0
};
int
dist =
6
;
for
(
int
index =
0
; index < seats.size(); index++) {
arrangement.clear();
arrangement.add(index);
dfs(index +
1
, seats.get(index), arrangement,
seats, dist, total_seatings);
}
return
total_seatings[
0
] +
1
;
}
public
static
void
main(String[] args)
{
ArrayList<Integer> seats =
new
ArrayList<Integer>();
seats.add(
5
);
seats.add(
2
);
seats.add(
4
);
seats.add(
1
);
seats.add(
2
);
int
ans = get_possible_seatings(seats);
System.out.println(ans);
}
}