问题 O: 混合(mix.cpp)

问题 O: 混合(mix.cpp)

时间限制: 1 Sec  内存限制: 256 MB
提交: 5  解决: 3
[提交][状态][讨论版][命题人:]

题目描述

汪次郎正在上魔法药水课。老师在课上提到,可以通过混合多瓶魔法药水得到新的魔法药水。如果在混合前魔法药水的魔法值分别为a1,a2,...,ak,那么得到的新魔法药水的魔法值即为a1^a2^....^ak, 其中^为异或符号。

现在实验室里有着魔法值为从1到2^N-1的魔法药水,汪次郎想通过带走一些魔法药水来使得自己能够在家也混合出任意魔法值的药水。但显然能带走的魔法药水越少越好。带走魔法值为i的药水的代价为ci。现在汪次郎想知道最小的代价使得其能在家混合出任意魔法值的药水。

输入

第一行一个正整数N,含义如题面所示。

第二行2^N - 1个正整数,表示带走魔法值为i的药水需要的代价。

输出

输出一个正整数表示需要的最小代价。

样例输入

2
4 5 3

样例输出

7

提示


数据范围






  • 对于 20% 的数据,1<=n<=4





  • 对于另外 10% 的数据,ci=1





  • 对于另外 20% 的数据, ci=i





  • 对于 100% 的数据,1<=n<=16,1<=ci<=10^9




[提交][状态]