#include using namespace std; #define MAXN 100 #define MAXA (MAXN+1) struct Mast{ int n; int w; vector y; vector p; int &operator[](int i){ return y[i]; } int64_t area(){ return w*(int64_t)w; } void read(){ cin>>n>>w; y.resize(n); for (auto &i: y) cin>>i; sort(y.begin(),y.end()); p.resize(n+1); p[0]=-1; p[n]=n-1; for (int i=1; i a,pair b){ if (a.firstgap; } int64_t dp[MAXA][MAXA][MAXA]; int64_t dp1[MAXA][MAXA][MAXA]; int64_t dp2[MAXA][MAXA][MAXA]; int64_t dp3[MAXA][MAXA][MAXA]; void solve(int ai,int bi,int ci){ auto &best=dp[ai][bi][ci]; int level=INT32_MAX; if (ai=0) best=max(best,dp1[maj][bi][ci]+a.area()); if (mbj>=0) best=max(best,dp2[ai][mbj][ci]+b.area()); if (mcj>=0) best=max(best,dp3[ai][bi][mcj]+c.area()); dp1[ai][bi][ci]=max(ai? dp1[ai-1][bi][ci]: 0, best); dp2[ai][bi][ci]=max(bi? dp2[ai][bi-1][ci]: 0, best); dp3[ai][bi][ci]=max(ci? dp3[ai][bi][ci-1]: 0, best); } int main(){ cin>>gap; a.read(); b.read(); c.read(); for (int i=0; i<=a.n; i++){ for (int j=0; j<=b.n; j++){ for (int k=0; k<=c.n; k++){ solve(i,j,k); } } } cout<