#include #include using namespace std; class range {private: struct I{int x;int operator*(){return x;}bool operator!=(I& lhs){return x m, dp; int sum_of(int mask) { int res = 0; for(int i : range(n)) { if(mask>>i & 1) { res += m[i]; } } return res; } int rec(int mask) { int &res = dp[mask]; if(__builtin_popcount(mask) == n) { return res = 0; } if(res > 0) { return res; } for(int i : range(n)) { if(mask>>i & 1) { continue; } res = max(res, rec(mask|(1<