int[] inc() {
        if (k < 1 || k > n) {
            return null;
        }

        if (indices[k - 1] == n - 1) {
            int i;

            for (i = k - 2; i >= 0; i--) {
                if (indices[i] + 1 < indices[i + 1]) {
                    ++indices[i++];

                    while (i < k) {
                        indices[i] = indices[i - 1] + 1;
                        ++i;
                    }

                    return indices;
                }
            }

            k++;

            if (k > n) {
                --k;
                return null;
            }

            indices = new int[k];

            for (int j = 0; j < k; ++j) {
                indices[j] = j;
            }

            return indices;
        } else {
            ++indices[k - 1];
            return indices;
        }
    }