#include using namespace std; const int MAXN = 200, MAX_SUM = 20000; bool can[MAX_SUM], a[MAXN][MAX_SUM]; int m[MAXN]; int main() { freopen("product.in", "r", stdin); freopen("product.out", "w", stdout); int n, i, sum = 0, j, k, c1 = 0, c2 = 0, sum1 = 0, sum2 = 0; scanf("%d", &n); for(i = 0; i < n; i++) { scanf("%d", &m[i]); sum += m[i]; } can[0] = true; for(i = 0; i < n; i++) for(j = sum; j >= 0; j--) if(can[j]) { can[j + m[i]] = true; for(k = 0; k < n; k++) a[k][j + m[i]] = a[k][j]; a[i][j + m[i]] = true; } for(i = (sum >> 1); i > 1; i--) if(can[i]) { for(j = 0; j < n; j++) if(a[j][i]) { c1++; sum1 += m[j]; } else { c2++; sum2 += m[j]; } printf("%d %d %d\n", sum1 * sum2, c1, c2); for(j = 0; j < n; j++) if(a[j][i]) printf("%d ", m[j]); printf("\n"); for(j = 0; j < n; j++) if(!a[j][i]) printf("%d ", m[j]); printf("\n"); break; } return 0; }