go (i, A, S) { if (i == n) return; go (i + 1, A, S); go (i + 1, A | (1 << i), S + a[i]); }