#P10500. Rainbow 的信号

Rainbow 的信号

题目描述

Freda 发明了传呼机之后,Rainbow 进一步改进了传呼机发送信息所使用的信号。

由于现在是数字、信息时代,Rainbow 发明的信号用 NN 个自然数表示。

为了避免两个人的对话被大坏蛋 VariantF 偷听,Rainbow 把对话分成 ABCA、B、C 三部分,分别用 abca、b、c 三个密码加密。

现在 Freda 接到了 Rainbow 的信息,她的首要工作就是解密。

Freda 了解到,这三部分的密码计算方式如下:

1N1 \sim NNN 个数中,等概率地选取两个数 lrl、r,如果 l>rl>r,则交换 lrl、r

把信号中的第 ll 个数到第 rr 个数取出来,构成一个数列 PP

AA 部分对话的密码是数列 PPxor\operatorname{xor} 和的数学期望值,xor\operatorname{xor} 和就是数列 PP 中各个数异或之后得到的数; xor\operatorname{xor} 和的期望就是对于所有可能选取的 lrl、r,所得到的数列的 xor\operatorname{xor} 和的平均数。

BB 部分对话的密码是数列 PPand\operatorname{and} 和的期望,定义类似于 xor\operatorname{xor} 和。

CC 部分对话的密码是数列 PPor\operatorname{or} 和的期望,定义类似于 xor\operatorname{xor} 和。

请你帮忙计算这三个密码。

输入格式

第一行一个正整数 NN

第二行 NN 个自然数,表示 Freda 接到的信号。

输出格式

一行三个实数,分别表示 xor\operatorname{xor} 和、and\operatorname{and} 和、or\operatorname{or} 和的期望,四舍五入保留 33 位小数,相邻两个实数之间用一个空格隔开。

2
4 5
2.750 4.250 4.750

提示

样例解释

样例 1 共包含四种可能的 l,rl,r

l,rl, r xor\operatorname{xor} and\operatorname{and} or\operatorname{or}
1,11,1 44 44 44
1,21,2 11 55
2,12,1
2,22,2 55

以上每一对 l,rl,r 出现的概率均相同, 因此分别对 xor\operatorname{xor} 和、and\operatorname{and} 和、or\operatorname{or} 和取平均数就是数学期望值。

数据范围与约定

对于 20%20 \% 的数据, 1N1001 \le N \le 100
对于 40%40 \% 的数据, 1N10001 \le N \le 1000
对于另外 30%30 \% 的数据, NN 个数为 0011
对于 100%100 \% 的数据, 1N1000001 \le N \le 100000NN 个自然数均不超过 10910^9