private List<Integer> add(List<Integer> l1, List<Integer> l2, int offset) {
            List<Integer> result = new ArrayList<Integer>();
            int index = 0;
            while (index < offset) {
                if (index < l2.size()) {
                    result.add(l2.get(index));
                } else {
                    result.add(0);
                }
                index++;
            }
            int carry = 0;
            for (int i : l1) {
                int value = i + carry + (index < l2.size() ? l2.get(index) : 0);
                result.add(value % 10);
                carry = value / 10;
                index++;
            }
            if (carry != 0) {
                result.add(carry);
            }
            return result;
        }