配对
时间限制:C/C++/Rust/Pascal 5秒,其他语言10秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

一个大小为n的数组(数字可能重复),现在要求你选择出若干对数字满足条件:
1. 假设选出的数字是x,y,要求x+y为奇数。
2. 一个数字要么不选,要么只能出现在一个对中,不允许一个数字出现在多个对中。
3. 数字之间的不同指的是数字在原数组中的下标不同。
一对数字的价值为:x^y。^表示异或运算。

现在要求你在满足选择出最大对数的情况下,使得所有这些数字对的价值之和最大。

输入描述:

第一行输入数组大小n,保证n<=600。
第二行输入n个数字,表示输入的数组。保证输入的数字为正整数,且<=

输出描述:

在一行输出两个数字x,y表示最大对数,价值之和,数字之间用空格分隔。
示例1

输入

复制
4
1 2 3 4

输出

复制
2 10

说明

(1^2)+(3^4)=10