Intuitive Java Solution
Code

# Code
```java []
import static java.lang.System.in;
class Solution {
    public List<List<Integer>> reconstructMatrix(int upper, int lower, int[] colsum) {
        // early return
        int n = colsum.length;
        int totalSum = 0;
        for (int i = 0; i < n; i++) {
            totalSum += colsum[i];
        }
        if (totalSum != upper + lower) return new ArrayList<List<Integer>>();

        List<Integer> upperList = new ArrayList<>(n);
        List<Integer> lowerList = new ArrayList<>(n);
        for (int i = 0; i < n; i++) {
            if (lower < 0 || upper < 0) return new ArrayList<List<Integer>>();
            if (colsum[i] == 0) {
                upperList.add(0);
                lowerList.add(0);
            } else if (colsum[i] == 1) {
                if (lower > upper) {
                    upperList.add(0);
                    lowerList.add(1);
                    lower--;
                } else {
                    upperList.add(1);
                    lowerList.add(0);
                    upper--;
                }
            } else {
                upperList.add(1);
                lowerList.add(1);
                upper--;
                lower--;
            }
        }
        List<List<Integer>> res = new ArrayList<>(2);
        res.add(upperList);
        res.add(lowerList);
        return res;
    }
}
```
['Java']