import
java.util.ArrayList;
import
java.util.Collections;
public
class
PolygonFormation {
public
static
boolean
solve(
int
i,
int
k,
ArrayList<Integer> subset,
ArrayList<Integer> s)
{
if
(i == s.size()) {
for
(
int
len : subset) {
if
(len !=
0
)
return
false
;
}
return
true
;
}
for
(
int
j =
0
; j < k; j++) {
if
(subset.get(j) < s.get(i))
continue
;
subset.set(j, subset.get(j) - s.get(i));
if
(solve(i +
1
, k, subset, s))
return
true
;
subset.set(j, subset.get(j) + s.get(i));
}
return
false
;
}
public
static
void
main(String[] args)
{
ArrayList<Integer> rods =
new
ArrayList<>();
Collections.addAll(rods,
1
,
1
,
2
,
2
,
2
);
int
k =
4
;
int
sum =
0
;
for
(
int
rod : rods) {
sum += rod;
}
if
(sum % k !=
0
) {
System.out.println(
"false"
);
return
;
}
int
requiredLen = sum / k;
Collections.sort(rods, Collections.reverseOrder());
ArrayList<Integer> subset =
new
ArrayList<>();
for
(
int
i =
0
; i < k; i++) {
subset.add(requiredLen);
}
if
(solve(
0
, k, subset, rods))
System.out.println(
"true"
);
else
System.out.println(
"false"
);
}
}