Given a set of distinct integers, return all possible subsets.

Note:

- Elements in each subset must be in non-descending order.
- The solution set must not contain duplicate subsets.

Example

For `set = [1, 2, 3]`

, subsets are:

```
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
```

Using bit manipulation.