import
java.io.*;
import
java.util.*;
class
GFG
{
static
int
count =
0
;
static
String reverse(String str)
{
char
[] chars = str.toCharArray();
for
(
int
i =
0
, j = str.length() -
1
; i < j;
i++, j--) {
char
c = chars[i];
chars[i] = chars[j];
chars[j] = c;
}
return
new
String(chars);
}
static
ArrayList convert(
int
[] arr,
int
n)
{
ArrayList<String> v =
new
ArrayList<String>();
int
i =
0
, x =
0
;
for
(i =
0
; i < n; i++) {
x = arr[i];
String s =
""
;
while
(x >
0
) {
int
r = x %
2
;
s += Integer.toString(r);
x /=
2
;
}
s = reverse(s);
v.add(s);
}
return
v;
}
static
boolean
palindrome(String a,
int
i,
int
j)
{
while
(i < j) {
if
(a.charAt(i) != a.charAt(j)) {
return
false
;
}
i++;
j--;
}
return
true
;
}
static
void
countSubsequences(ArrayList<String> arr,
int
i,
String s)
{
if
(i == arr.size()) {
int
l = s.length();
if
(l >
0
&& palindrome(s,
0
, l -
1
) ==
true
) {
count++;
}
}
else
{
countSubsequences(arr, i +
1
, s);
s += (arr.get(i));
countSubsequences(arr, i +
1
, s);
}
return
;
}
static
int
solve(
int
[] arr)
{
int
i =
0
;
ArrayList<String> v = convert(arr, arr.length);
countSubsequences(v, i,
""
);
return
count;
}
public
static
void
main(String args[])
{
int
[] arr = {
4
,
9
,
3
,
15
,
23
};
int
c = solve(arr);
System.out.print(c);
}
}