import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class AddToArrayFormOfInteger {
    public List<Integer> addToArrayForm(int[] num, int k) {
        List<Integer> result = new ArrayList<>();
        int sum;
        for (int i = num.length - 1, carry = 0 ; i >= 0 || carry > 0 || k > 0 ; i--, k /= 10) {
            sum = get(num, i) + carry + k % 10;
            result.add(sum % 10);
            carry = sum / 10;
        }
        Collections.reverse(result);
        return result;
    }

    private int get(int[] array, int index) {
        if (index < 0) return 0;
        return array[index];
    }
}