import
java.io.*;
import
java.util.*;
import
java.util.stream.Collectors;
class
GFG {
static
int
LongestXorSubsequence(
int
[] arr,
int
n)
{
List<
int
[]> v =
new
ArrayList<>();
for
(
int
i =
0
; i < n; i++) {
for
(
int
j = i +
1
; j < n; j++) {
int
[] l1 = { arr[i] ^ arr[j], i, j };
v.add(l1);
}
}
Comparator<
int
[]> byFirstElement
= (
int
[] a,
int
[] b) -> a[
0
] - b[
0
];
List<
int
[]> v1 = v.stream()
.sorted(byFirstElement)
.collect(Collectors.toList());
int
[] dp =
new
int
[n];
for
(
int
i =
0
; i < n; i++) {
dp[i] =
1
;
}
Iterator<
int
[]> iter = v1.iterator();
while
(iter.hasNext()) {
int
[] list = iter.next();
dp[list[
2
]]
= Math.max(dp[list[
2
]],
1
+ dp[list[
1
]]);
}
int
ans =
1
;
for
(
int
i =
0
; i < n; i++)
ans = Math.max(ans, dp[i]);
return
ans;
}
public
static
void
main(String[] args)
{
int
[] arr = {
2
,
12
,
6
,
7
,
13
,
14
,
8
,
6
};
int
n = arr.length;
System.out.println(LongestXorSubsequence(arr, n));
}
}