for (auto i=0; i<(1<<n); ++i)
dyn[i] = xs[i];
for (auto i=0; i<n; ++i)
for (auto mask=0; mask<(1<<n); ++mask)
if (mask & (1 << i))
dyn[mask] += dyn[mask ^ (1 << i)];
for (auto i=0; i<(1<<n); ++i)
dyn[i] = xs[i];
for (auto i=0; i<n; ++i)
for (auto mask=0; mask<(1<<n); ++mask)
if (mask & (1 << i))
dyn[mask] += dyn[mask ^ (1 << i)];