class
GFG{
static
int
power(
int
x,
int
y,
int
p)
{
int
res =
1
;
x = x % p;
while
(y >
0
)
{
if
((y &
1
) ==
1
)
res = (res * x) % p;
y = y >>
1
;
x = (x * x) % p;
}
return
res;
}
static
int
modInverse(
int
n,
int
p)
{
return
power(n, p -
2
, p);
}
static
int
nCrModPFermat(
int
n,
int
r,
int
p)
{
if
(r ==
0
)
return
1
;
if
(n < r)
return
0
;
int
fac[] =
new
int
[n +
1
];
fac[
0
] =
1
;
for
(
int
i =
1
; i <= n; i++)
fac[i] = fac[i -
1
] * i % p;
return
(fac[n] * modInverse(fac[r], p) % p *
modInverse(fac[n - r], p) %
p) % p;
}
static
int
SumOfXor(
int
a[],
int
n)
{
int
mod =
10037
;
int
answer =
0
;
for
(
int
k =
0
; k <
32
; k++)
{
int
x =
0
, y =
0
;
for
(
int
i =
0
; i < n; i++)
{
if
((a[i] & (
1
<< k)) !=
0
)
x++;
else
y++;
}
answer += ((
1
<< k) % mod *
(nCrModPFermat(x,
3
, mod) + x *
nCrModPFermat(y,
2
, mod)) %
mod) % mod;
}
return
answer;
}
public
static
void
main(String[] args)
{
int
n =
5
;
int
A[] = {
3
,
5
,
2
,
18
,
7
};
System.out.println(SumOfXor(A, n));
}
}