public class IncrementLargeNumber {
    public int[] plusOne(int[] digits) {
        int carry = 1;
        for (int i = digits.length - 1; i >= 0; i--) {
            int sum = digits[i] + carry;
            digits[i] = sum % 10;
            carry = sum / 10;
            if (carry == 0) {
                break;
            }
        }
        if (carry != 0) {
            int[] newDigits = new int[digits.length + 1];
            newDigits[0] = carry;
            System.arraycopy(digits, 0, newDigits, 1, digits.length);
            return newDigits;
        }
        return digits;
    }

    public static void main(String[] args) {
        IncrementLargeNumber solution = new IncrementLargeNumber();
        
        int[] digits1 = {1, 2, 3};
        int[] result1 = solution.plusOne(digits1);
        System.out.println("Example Output 1 --> " + java.util.Arrays.toString(result1)); 
        
        int[] digits2 = {4, 3, 2, 1};
        int[] result2 = solution.plusOne(digits2);
        System.out.println("Example Output 2 --> " + java.util.Arrays.toString(result2)); 
        
        int[] digits3 = {9};
        int[] result3 = solution.plusOne(digits3);
        System.out.println("Example Output 3 --> " + java.util.Arrays.toString(result3)); 
    }
}